From 3c07d8dcc46aeeb3f3ed362fdc346256a9bd878a Mon Sep 17 00:00:00 2001 From: Max Guglielmi Date: Sun, 25 Jun 2017 21:51:15 +1000 Subject: [PATCH] Started fixing col widths undex firefox --- dist/starter.html | 4 +- dist/tablefilter/style/colsVisibility.css | 4 +- dist/tablefilter/style/filtersVisibility.css | 4 +- dist/tablefilter/style/tablefilter.css | 6 +- .../style/themes/default/default.css | 4 +- .../style/themes/mytheme/mytheme.css | 4 +- .../style/themes/skyblue/skyblue.css | 4 +- .../style/themes/transparent/transparent.css | 4 +- dist/tablefilter/tablefilter.js | 22910 +++++++++++++++- dist/tablefilter/tablefilter.js.map | 2 +- dist/tablefilter/tf-0-d88702b82ce1d192a674.js | 8 - .../tf-0-d88702b82ce1d192a674.js.map | 1 - package.json | 2 +- .../colsVisibility/colsVisibility.js | 66 +- src/modules/gridLayout.js | 26 + static/style/grid-layout.styl | 3 +- static/templates/columns-visibility.html | 3 + 17 files changed, 22988 insertions(+), 67 deletions(-) delete mode 100644 dist/tablefilter/tf-0-d88702b82ce1d192a674.js delete mode 100644 dist/tablefilter/tf-0-d88702b82ce1d192a674.js.map diff --git a/dist/starter.html b/dist/starter.html index a7422a43..0e06ce31 100644 --- a/dist/starter.html +++ b/dist/starter.html @@ -1,10 +1,10 @@ - tablefilter v0.5.23 - Starter + tablefilter v0.5.24 - Starter -

tablefilter v0.5.23

+

tablefilter v0.5.24

diff --git a/dist/tablefilter/style/colsVisibility.css b/dist/tablefilter/style/colsVisibility.css index fd755c0e..5dec082e 100644 --- a/dist/tablefilter/style/colsVisibility.css +++ b/dist/tablefilter/style/colsVisibility.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ span.colVisSpan{text-align:left;}span.colVisSpan a.colVis{display:inline-block;padding:7px 5px 0;font-size:inherit;font-weight:inherit;vertical-align:top}div.colVisCont{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;position:absolute;display:none;border:1px solid #ccc;height:auto;width:250px;background-color:#fff;margin:35px 0 0 -100px;z-index:10000;padding:10px 10px 10px 10px;text-align:left;font-size:12px;}div.colVisCont:after,div.colVisCont:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.colVisCont:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.colVisCont:before{border-color:rgba(255,255,255,0);border-bottom-color:#ccc;border-width:12px;margin-left:-12px}div.colVisCont p{margin:6px auto 6px auto}div.colVisCont a.colVis{display:initial;font-weight:inherit}ul.cols_checklist{padding:0;margin:0;list-style:none;}ul.cols_checklist label{display:block}ul.cols_checklist input{vertical-align:middle;margin:2px 5px 2px 1px}li.cols_checklist_item{padding:4px;margin:0;}li.cols_checklist_item:hover{background-color:#335ea8;color:#fff}.cols_checklist_slc_item{background-color:#335ea8;color:#fff} \ No newline at end of file diff --git a/dist/tablefilter/style/filtersVisibility.css b/dist/tablefilter/style/filtersVisibility.css index 3b20b440..f57d2494 100644 --- a/dist/tablefilter/style/filtersVisibility.css +++ b/dist/tablefilter/style/filtersVisibility.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ span.expClpFlt a.btnExpClpFlt{width:35px;height:35px;display:inline-block;}span.expClpFlt a.btnExpClpFlt:hover{background-color:#f4f4f4}span.expClpFlt img{padding:8px 11px 11px 11px} \ No newline at end of file diff --git a/dist/tablefilter/style/tablefilter.css b/dist/tablefilter/style/tablefilter.css index 3ec739c8..465a8a9c 100644 --- a/dist/tablefilter/style/tablefilter.css +++ b/dist/tablefilter/style/tablefilter.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ .activeHeader{background-color:#66afe9 !important;color:#fff !important} @@ -9,7 +9,7 @@ .ezActiveRow{background-color:#2852a8 !important;color:#fff}.ezSelectedRow{background-color:#316ac5 !important;color:#fff}.ezActiveCell{background-color:#d9e8fb !important;color:#000 !important;font-weight:bold}.ezETSelectedCell{background-color:#ffdc61 !important;font-weight:bold;color:#000 !important}.ezUnselectable{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.ezInputEditor{width:95%;height:auto;font-size:inherit;border:1px solid #aaccf6}.ezTextareaEditor{width:95%;height:35px;font-size:inherit;border:1px solid #aaccf6}.ezSelectEditor{width:100%;font-size:inherit;border:1px solid #aaccf6}.ezModifiedCell{background:transparent url("themes/bg_mod_cell.png") 0 0 no-repeat}select[multiple="multiple"].ezSelectEditor{height:35px}.ezCommandEditor{margin:2px;}.ezCommandEditor button,.ezCommandEditor input[type="button"]{min-height:22px;margin:1px;padding:3px;border:1px solid #ccc;background:#fff;border-radius:4px 4px 4px 4px;-moz-border-radius:4px 4px 4px 4px;}.ezCommandEditor button:hover,.ezCommandEditor input[type="button"]:hover{border:1px solid #999}.ezCommandEditor img{border:0;vertical-align:middle;margin:2px}.ezOpacity{opacity:.6}.alignLeft{text-align:left}.alignCenter{text-align:center}.alignRight{text-align:right} .div_checklist{width:100%;height:90px;line-height:24px;border:1px solid #f4f4f4;overflow:auto;text-align:left;background-color:#fff;color:#444;}.div_checklist ul.flt_checklist{padding:0 !important;margin:0 !important;list-style:none !important}.div_checklist li.flt_checklist_item{padding:1px !important;margin:0 !important;font-size:10px !important;border-bottom:1px solid #f4f4f4 !important;}.div_checklist li.flt_checklist_item:hover{background-color:#335ea8 !important;color:#fff !important}.div_checklist label{display:block !important}.div_checklist input{vertical-align:middle !important;margin:2px 5px 2px 1px !important}.flt_checklist_item_disabled{background-color:#e5e5e5}.flt_checklist_slc_item{background-color:#335ea8 !important;color:#fff !important} .fltrow{height:1em;background-color:#eaeaea;}.fltrow td{border-bottom:1px solid #ccc !important;border-top:1px solid #f4f4f4;border-left:1px solid #ccc;border-right:1px solid #f4f4f4;padding:.2em !important;}.fltrow td:last-child{border-right:1px solid #ccc}.btnflt{height:35px;font-family:inherit;font-size:inherit;vertical-align:middle;margin:0 2px 0 2px;padding:0 1px 0 1px}.btnflt_icon{font-family:inherit;font-size:inherit;width:35px;height:35px;cursor:pointer !important;border:0 !important;vertical-align:middle;background:transparent url("themes/btn_filter.png") center center no-repeat !important}.flt,.flt_s,.single_flt{font-family:inherit;display:block;color:#444;background-color:#fff;border:1px inset #f4f4f4;margin:0;padding:0 0 0 .2em;width:100%;height:35px;vertical-align:middle;border-radius:2px;box-sizing:border-box;}.flt:focus,.flt_s:focus,.single_flt:focus{border-color:#66afe9;outline:0 none;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset,0 0 8px rgba(102,175,233,0.6);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset,0 0 8px rgba(102,175,233,0.6);box-shadow:0 1px 1px rgba(0,0,0,0.075) inset,0 0 8px rgba(102,175,233,0.6)}select.flt_multi{font-family:inherit;color:#444;background-color:#fff;border:1px solid #f4f4f4;margin:0;padding:.2em;width:100%;height:90px;vertical-align:middle;box-sizing:border-box;}select.flt_multi option{padding-top:5px;padding-bottom:5px}.flt_s{width:60%;box-sizing:initial;display:initial}.single_flt{width:70%;box-sizing:initial;display:initial}div.popUpFilter{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;margin:30px auto 0 0;position:absolute;display:none;width:100px;background-color:#eaeaea;border:1px solid #eaeaea;padding:0}div.popUpFilter:after,div.popUpFilter:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.popUpFilter:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.popUpFilter:before{border-color:rgba(255,255,255,0);border-bottom-color:#eaeaea;border-width:12px;margin-left:-12px}.popUpPlaceholder{position:relative} -div.grd_Cont{-webkit-box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);-moz-box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);width:800px;height:auto;overflow:hidden;padding:3px 3px 3px 3px;background-color:#c8e0fb;border:1px solid #99bbe8;}div.grd_Cont .fltrow{background-color:transparent}div.grd_Cont .flt{border:1px solid #99bbe8;width:100%;}div.grd_Cont .flt :focus{border:1px solid #558dd9}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#dfe8f6}div.grd_Cont .no-results{background-color:transparent}div.grd_Cont .sort-arrow{position:initial}div.grd_tblCont{height:400px;width:800px;background:#fff;overflow-x:auto;overflow-y:scroll}div.grd_headTblCont{display:block;margin-right:20px;height:auto;overflow:hidden;border-bottom:1px solid #99bbe8;background-color:#c8e0fb}div.grd_tblCont table,div.grd_headTblCont table{border-collapse:collapse;table-layout:fixed;box-sizing:initial}div.grd_tblCont table{border-right:1px solid #99bbe8;box-sizing:initial}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{height:35px;background-color:#c8e0fb;padding:.1em .5em;color:#333;border-right:1px solid #99bbe8 !important;overflow:hidden;text-overflow:ellipsis}div.grd_headTblCont table td{padding:.2em .2em}div.grd_tblCont table td{padding:.5em .7em;border-bottom:1px solid #99bbe8;overflow:hidden;text-overflow:ellipsis}.grd_inf{clear:both;width:auto;height:35px;background-color:#c8e0fb;margin:0;padding:1px 3px 1px 3px;border-top:1px solid #99bbe8;}.grd_inf a{color:#333;text-decoration:none;font-weight:bold;}.grd_inf a:hover{text-decoration:underline;background-color:transparent}.grd_inf input.reset:hover{background-color:transparent}.grd_inf .mdiv{width:40% !important}.grd_inf .ldiv div{border:0}.grd_inf .helpBtn{border:0 !important}.grd_inf div.status{position:absolute;float:none !important;height:auto !important;margin:19px 0 !important;font-size:12px;color:#333;border:0 !important}.grd_inf div.tot{border:0 !important} +div.grd_Cont{-webkit-box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);-moz-box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);box-shadow:4px 4px 10px 0 rgba(50,50,50,0.75);width:800px;height:auto;overflow:hidden;background-color:#c8e0fb;border:1px solid #99bbe8;}div.grd_Cont .fltrow{background-color:transparent}div.grd_Cont .flt{border:1px solid #99bbe8;width:100%;}div.grd_Cont .flt :focus{border:1px solid #558dd9}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#dfe8f6}div.grd_Cont .no-results{background-color:transparent}div.grd_Cont .sort-arrow{position:initial}div.grd_tblCont{height:400px;width:800px;background:#fff;overflow-x:auto;overflow-y:scroll}div.grd_headTblCont{display:block;margin-right:20px;height:auto;overflow:hidden;border-bottom:1px solid #99bbe8;background-color:#c8e0fb}div.grd_tblCont table,div.grd_headTblCont table{border-collapse:collapse;table-layout:fixed;box-sizing:initial}div.grd_tblCont table{box-sizing:initial}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{height:35px;background-color:#c8e0fb;padding:.1em .5em;color:#333;border-right:1px solid #99bbe8 !important;overflow:hidden;text-overflow:ellipsis}div.grd_headTblCont table td{padding:.2em .2em}div.grd_tblCont table td{padding:.5em .7em;border-bottom:1px solid #99bbe8;overflow:hidden;text-overflow:ellipsis}.grd_inf{clear:both;width:auto;height:35px;background-color:#c8e0fb;margin:0;padding:1px 3px 1px 3px;border-top:1px solid #99bbe8;}.grd_inf a{color:#333;text-decoration:none;font-weight:bold;}.grd_inf a:hover{text-decoration:underline;background-color:transparent}.grd_inf input.reset:hover{background-color:transparent}.grd_inf .mdiv{width:40% !important}.grd_inf .ldiv div{border:0}.grd_inf .helpBtn{border:0 !important}.grd_inf div.status{position:absolute;float:none !important;height:auto !important;margin:19px 0 !important;font-size:12px;color:#333;border:0 !important}.grd_inf div.tot{border:0 !important} .helpBtn{display:inline-block;height:27px;margin:0;padding:8px 15px 0 15px;vertical-align:top;}.helpBtn:hover{background-color:#f4f4f4}div.helpCont{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;position:absolute;display:none;width:300px;padding:10px;margin:45px 0 0 -150px;border:1px solid #ccc;line-height:20px;font-size:inherit;color:#333;background:#fff;text-align:left;}div.helpCont:after,div.helpCont:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.helpCont:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.helpCont:before{border-color:rgba(255,255,255,0);border-bottom-color:#ccc;border-width:12px;margin-left:-12px}div.helpCont a{color:#c00;text-decoration:underline;font-weight:normal}div.helpCont a.close{color:#333 !important;text-decoration:none !important;font-weight:bold;}div.helpCont a.close:hover{text-decoration:none}div.helpCont hr{border:1px solid #ccc}div.helpFooter{margin:10px 0 0 0;}div.helpFooter h4{margin:2px 2px 2px 2px;color:#333} span.keyword{font-weight:700;font-style:italic;border-bottom:1px dotted #ccc} .loader{position:absolute;padding:.5em .7em;margin:10em 0 0 3em;width:auto;z-index:1000;font-weight:600;background-color:#a7a7a8;vertical-align:middle;border-radius:10px;color:#fff;text-shadow:1px 1px #333} diff --git a/dist/tablefilter/style/themes/default/default.css b/dist/tablefilter/style/themes/default/default.css index 4573a630..48d6d8a9 100644 --- a/dist/tablefilter/style/themes/default/default.css +++ b/dist/tablefilter/style/themes/default/default.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ table.TF{border-left:1px solid #ccc;border-top:none;border-right:none;border-bottom:none;}table.TF th{background:#ebecee url("images/bg_th.jpg") left top repeat-x;border-bottom:1px solid #d0d0d0;border-right:1px solid #d0d0d0;border-left:1px solid #fff;border-top:1px solid #fff;color:#333}table.TF td{border-bottom:1px dotted #999;padding:5px}.fltrow{background-color:#ebecee !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #666 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #999 !important}input.flt{width:99% !important}.inf{height:$min-height;background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important}input.reset{background:transparent url("images/btn_eraser.gif") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;}.nextPage:hover{background:transparent url("images/btn_over_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important;}.previousPage:hover{background:transparent url("images/btn_over_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;}.firstPage:hover{background:transparent url("images/btn_over_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;}.lastPage:hover{background:transparent url("images/btn_over_last_page.gif") center center no-repeat !important}div.grd_Cont{background-color:#ebecee !important;border:1px solid #ccc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#d5d5d5}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important;}div.grd_headTblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#ebecee url("images/bg_th.jpg") left top repeat-x !important;border-bottom:1px solid #d0d0d0 !important;border-right:1px solid #d0d0d0 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #999 !important}.grd_inf{background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important;border-top:1px solid #d0d0d0 !important}.loader{border:1px solid #999}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#fff}.odd{background-color:#d5d5d5}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#999 !important} \ No newline at end of file diff --git a/dist/tablefilter/style/themes/mytheme/mytheme.css b/dist/tablefilter/style/themes/mytheme/mytheme.css index d146ebfe..d0fb6f6a 100644 --- a/dist/tablefilter/style/themes/mytheme/mytheme.css +++ b/dist/tablefilter/style/themes/mytheme/mytheme.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ table.TF{border-left:1px dotted #81963b;border-top:none;border-right:0;border-bottom:none;}table.TF th{background:#39424b url("images/bg_headers.jpg") left top repeat-x;border-bottom:0;border-right:1px dotted #d0d0d0;border-left:0;border-top:0;color:#fff}table.TF td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b;padding:5px}.fltrow{background-color:#81963b !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #687830 !important}input.flt{width:99% !important}.inf{background:#d8d8d8;height:$min-height}input.reset{width:53px;background:transparent url("images/btn_filter.png") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important}div.grd_Cont{background:#81963b url("images/bg_headers.jpg") left top repeat-x !important;border:1px solid #ccc !important;padding:0 1px 1px 1px !important;}div.grd_Cont .even{background-color:#bccd83}div.grd_Cont .odd{background-color:#fff}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important;}div.grd_tblCont table td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b}div.grd_tblCont table th,div.grd_headTblCont table th{background:transparent url("images/bg_headers.jpg") 0 0 repeat-x !important;border-bottom:0 !important;border-right:1px dotted #d0d0d0 !important;border-left:0 !important;border-top:0 !important;padding:0 4px 0 4px !important;color:#fff !important;height:35px !important}div.grd_headTblCont table td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;background-color:#81963b !important;padding:1px 3px 1px 3px !important}.grd_inf{background-color:#d8d8d8;border-top:1px solid #d0d0d0 !important}.loader{border:0 !important;background:#81963b !important}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#bccd83}.odd{background-color:#fff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#81963b !important} \ No newline at end of file diff --git a/dist/tablefilter/style/themes/skyblue/skyblue.css b/dist/tablefilter/style/themes/skyblue/skyblue.css index 9ebb38b0..122878e4 100644 --- a/dist/tablefilter/style/themes/skyblue/skyblue.css +++ b/dist/tablefilter/style/themes/skyblue/skyblue.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ table.TF{padding:0;color:#000;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;border-left:1px solid #a4bed4;border-bottom:0;}table.TF th{margin:0;color:inherit;background:#d1e5fe url("images/bg_skyblue.gif") 0 0 repeat-x;border-color:#fdfdfd #a4bed4 #a4bed4 #fdfdfd;border-width:1px;border-style:solid}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid #a4bed4;border-left:0;border-top:0;border-right:0}.fltrow{background-color:#d1e5fe !important;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4 !important}input.flt{width:99% !important}.inf{background-color:#e3efff !important;border:1px solid #a4bed4;height:$min-height;color:#004a6f}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#ffe4ab url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#ffe4ab url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#ffe4ab url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#ffe4ab url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.activeHeader{background:#ffe4ab !important;border:1px solid #ffb552 !important;color:inherit !important}div.grd_Cont{background-color:#d9eaed !important;border:1px solid #9cc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#e3efff}div.grd_headTblCont{background-color:#d9eaed !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#d9eaed url("images/bg_skyblue.gif") left top repeat-x;border-bottom:1px solid #a4bed4;border-right:1px solid #a4bed4 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #a4bed4 !important;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:#cce2fe;color:#004a6f;border-top:1px solid #9cc !important;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#2d8eef;border:1px solid #cce2fe;border-radius:5px}.even{background-color:#fff}.odd{background-color:#e3efff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ffdc61 !important;color:inherit}.ezSelectedRow{background-color:#ffe4ab !important;color:inherit}.ezActiveCell{background-color:#fff !important;color:#000 !important;font-weight:bold}.ezETSelectedCell{background-color:#fff !important;font-weight:bold;color:#000 !important} \ No newline at end of file diff --git a/dist/tablefilter/style/themes/transparent/transparent.css b/dist/tablefilter/style/themes/transparent/transparent.css index 3ec03117..527495f4 100644 --- a/dist/tablefilter/style/themes/transparent/transparent.css +++ b/dist/tablefilter/style/themes/transparent/transparent.css @@ -1,6 +1,6 @@ /** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.332Z + * tablefilter v0.5.24 by Max Guglielmi + * build date: 2017-06-25T08:08:56.461Z * MIT License */ table.TF{padding:0;color:inherit;border-right:1px solid transparent;border-top:1px solid transparent;border-left:1px solid transparent;border-bottom:0;}table.TF th{margin:0;color:inherit;background-color:transparent;border-color:transparent;border-width:1px;border-style:solid;}table.TF th:last-child{border-right:1px solid transparent}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid transparent;border-left:0;border-top:0;border-right:0}.fltrow{background-color:transparent;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px;border-bottom:1px solid transparent !important;}.fltrow th:last-child,.fltrow td:last-child{border-right:1px solid transparent}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4}input.flt{width:99% !important}.inf{background-color:transparent;border:1px solid transparent;height:$min-height;color:inherit}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#f7f7f7 url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#f7f7f7 url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#f7f7f7 url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#f7f7f7 url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.activeHeader{background:#f7f7f7 !important;border:1px solid transparent;color:inherit !important}div.grd_Cont{-webkit-box-shadow:0 0 0 0 rgba(50,50,50,0.75);-moz-box-shadow:0 0 0 0 rgba(50,50,50,0.75);box-shadow:0 0 0 0 rgba(50,50,50,0.75);background-color:transparent;border:1px solid transparent;padding:0 !important;}div.grd_Cont .even{background-color:transparent}div.grd_Cont .odd{background-color:#f7f7f7}div.grd_headTblCont{background-color:transparent;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:transparent;border-bottom:1px solid transparent;border-right:1px solid transparent !important;border-left:1px solid transparent;border-top:1px solid transparent}div.grd_tblCont table td{border-bottom:1px solid transparent;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:transparent;color:inherit;border-top:1px solid transparent;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;color:#000;text-shadow:none}.even{background-color:transparent}.odd{background-color:#f7f7f7}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ccc !important;color:inherit}.ezSelectedRow{background-color:#ccc !important;color:inherit}.ezActiveCell{background-color:transparent;color:inherit;font-weight:bold}.ezETSelectedCell{background-color:transparent;font-weight:bold;color:inherit} \ No newline at end of file diff --git a/dist/tablefilter/tablefilter.js b/dist/tablefilter/tablefilter.js index 94562e11..470f3ab7 100644 --- a/dist/tablefilter/tablefilter.js +++ b/dist/tablefilter/tablefilter.js @@ -1,8 +1,22906 @@ -/** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.184Z - * MIT License - */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // install a JSONP callback for chunk loading +/******/ var parentJsonpFunction = window["webpackJsonp"]; +/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = [], result; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ modules[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ +/******/ }; +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // objects to store loaded and loading chunks +/******/ var installedChunks = { +/******/ 1: 0 +/******/ }; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = function requireEnsure(chunkId) { +/******/ if(installedChunks[chunkId] === 0) { +/******/ return Promise.resolve(); +/******/ } +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunks[chunkId]) { +/******/ return installedChunks[chunkId][2]; +/******/ } +/******/ +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise(function(resolve, reject) { +/******/ installedChunks[chunkId] = [resolve, reject]; +/******/ }); +/******/ installedChunks[chunkId][2] = promise; +/******/ +/******/ // start chunk loading +/******/ var head = document.getElementsByTagName('head')[0]; +/******/ var script = document.createElement('script'); +/******/ script.type = 'text/javascript'; +/******/ script.charset = 'utf-8'; +/******/ script.async = true; +/******/ script.timeout = 120000; +/******/ +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.src = __webpack_require__.p + "tf-" + ({}[chunkId]||chunkId) + "-" + {"0":"0a3b38dd0c16526dcd8b"}[chunkId] + ".js"; +/******/ var timeout = setTimeout(onScriptComplete, 120000); +/******/ script.onerror = script.onload = onScriptComplete; +/******/ function onScriptComplete() { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var chunk = installedChunks[chunkId]; +/******/ if(chunk !== 0) { +/******/ if(chunk) { +/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); +/******/ } +/******/ installedChunks[chunkId] = undefined; +/******/ } +/******/ }; +/******/ head.appendChild(script); +/******/ +/******/ return promise; +/******/ }; +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // on error function for async loading +/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 126); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)("object"==typeof exports?exports:t)[n]=i[n]}}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var s=n[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,e),s.l=!0,s.exports}var i=window.webpackJsonp;window.webpackJsonp=function(e,n,r){for(var a,o,u=0,l=[];u1&&void 0!==arguments[1]&&arguments[1]?t:t.toLowerCase()},e.contains=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=void 0,u=s?"g":"gi";return a&&(t=(0,n.remove)(t),e=(0,n.remove)(e)),o=i?new RegExp("(^\\s*)"+r(t)+"(\\s*$)",u):new RegExp(r(t),u),o.test(e)}},function(t,e,i){"use strict";function n(t){return s(t,"Day")}var s=i(18);t.exports=n},function(t,e,i){"use strict";var n=i(147);t.exports=n("utc")},function(t,e,i){"use strict";var n=i(0);t.exports={sugarObject:n.Object,sugarArray:n.Array,sugarDate:n.Date,sugarString:n.String,sugarNumber:n.Number,sugarFunction:n.Function,sugarRegExp:n.RegExp}},function(t,e,i){"use strict";var n=i(7),s=n.ceil,r=n.floor,a=Math.trunc||function(t){return 0!==t&&isFinite(t)?t<0?s(t):r(t):t};t.exports=a},function(t,e,i){"use strict";function n(t,e,i){if(l(e)){var n=a(t);if(i){var o=i>0?1:-1,u=e%7-n;u&&u/c(u)!==o&&(e+=7*o)}return s(t,r(t)+e-n),t.getTime()}}var s=i(35),r=i(34),a=i(20),o=i(3),u=i(7),l=o.isNumber,c=u.abs;t.exports=n},function(t,e,i){"use strict";i(412)()},function(t,e,i){"use strict";function n(t,e){for(var i=0,n=t.length;ii}),t}var s=i(27),r=i(3),a=i(32),o=i(94),u=r.isFunction;t.exports=n},function(t,e,i){"use strict";function n(t){return void 0===t}t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){var r={};return r[e]=i,s(t,r,n,1)}var s=i(50);t.exports=n},function(t,e,i){"use strict";function n(t){return t===u?a:t===o?r:t-1}var s=i(5),r=s.HOURS_INDEX,a=s.DAY_INDEX,o=s.WEEK_INDEX,u=s.MONTH_INDEX;t.exports=n},function(t,e,i){"use strict";function n(){return s("newDateInternal")()}var s=i(64);t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){a(t,r(e,i),n)}var s=i(157),r=i(129),a=s.defineInstance;t.exports=n},function(t,e,i){"use strict";function n(t){return s({},t)}var s=i(56);t.exports=n},function(t,e,i){"use strict";function n(t){return t.split(" ")}t.exports=n},function(t,e,i){"use strict";t.exports={HALF_WIDTH_ZERO:48,FULL_WIDTH_ZERO:65296,HALF_WIDTH_PERIOD:".",FULL_WIDTH_PERIOD:".",HALF_WIDTH_COMMA:",",OPEN_BRACE:"{",CLOSE_BRACE:"}"}},function(t,e,i){"use strict";function n(t){return!isNaN(t.getTime())}t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){function s(i,n,s){var o=a(t,i);r(o)&&e(i,o,n,s)}o(function(t,e){var i=s(t.name,t,e);return!1!==i&&e===u&&(i=s("weekday",t,e)),i},i,n)}var s=i(5),r=i(27),a=i(212),o=i(61),u=s.DAY_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){return e===l&&o(t,c.get(i).getFirstDayOfWeek()),u(t,a(e))}var s=i(8),r=i(5),a=i(39),o=i(62),u=i(36),l=r.WEEK_INDEX,c=s.localeManager;t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){return e===l&&a(t,c.get(i).getFirstDayOfWeek()),u(t,o(e),n,!0)}var s=i(8),r=i(5),a=i(90),o=i(39),u=i(36),l=r.WEEK_INDEX,c=s.localeManager;t.exports=n},function(t,e,i){"use strict";function n(t){return t.getTimezoneOffset()}t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,r,h){function m(t,e){r&&!S&&(S="weekday"===t?w:v(e))}function T(t){t>e.specificity||(e.specificity=t)}function O(t,i,n){if(i){var r=s[g(i)],a=C(t.multiplier/r.multiplier*n);e[r.name]=a}}function N(t,e){return e<0&&(e=e%12+12),e%12!==l(t)}function F(e,i,r,l){var c,p,g=r.method;return m(e,l),T(l),p=i%1,p&&(O(r,l,p),i=a(i)),"weekday"===e?void(n||f(t,i,h)):(c=l===x&&u(t)>28,n&&!r.ambiguous?void t.setTime(t.getTime()+i*n*r.multiplier):(n&&(l===w&&(i*=7,g=s[_].method),i=i*n+d(t,g)),y(t,g,i,n),void(c&&N(t,i)&&o(t,0))))}var S;if(E(e)&&n)e={millisecond:e};else if(E(e))return t.setTime(e),t;return b(e,F),i&&e.specificity&&p(t,e.specificity),function(){if(S&&!(S>k))switch(r){case-1:return t>c();case 1:return t1&&void 0!==arguments[1]?arguments[1]:".";if((0,n.isNumber)(t))return t;var i=new RegExp("[^0-9-"+e+"]",["g"]),s=parseFloat((""+t).replace(/\((.*)\)/,"-$1").replace(i,"").replace(e,"."));return isNaN(s)?0:s}},function(t,e,i){"use strict";function n(t,e){return!!t&&"object"===(e||typeof t)}t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,s){var o=a(t).toString(n||10);return o=r(s||"0",e-o.replace(/\.\d+/,"").length)+o,(i||t<0)&&(o=(t<0?"-":"+")+o),o}var s=i(7),r=i(148),a=s.abs;t.exports=n},function(t,e,i){"use strict";function n(t){return t.charAt(0).toUpperCase()+t.slice(1)}t.exports=n},function(t,e,i){"use strict";function n(t,e){return r(e,function(e,i){t[i]=e}),t}var s=i(10),r=s.forEachProperty;t.exports=n},function(t,e,i){"use strict";function n(t){return r(a(s),t)}var s=i(292),r=i(56),a=i(42);t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){function a(t,e){var i=R(tt,"params")||{};return c(e.to,function(e,n){var s,a,o=t[n+1];o&&("yy"===e||"y"===e?(e="year",a=N(o,$,R(tt,"prefer"))):(s=R(r,e))?(e=s.param||e,a=E(s,o)):a=Q.getTokenValue(e,o),i[e]=a)}),i}function o(t,e){return u(t)&&!d(R(tt,"fromUTC"))&&(tt.fromUTC=!0),u(t)&&!d(R(tt,"setUTC"))&&(tt.setUTC=!0),e&&(t=new Date(t.getTime())),t}function y(t){et.push(t)}function C(){c(et,function(t){t.call()})}function z(t){1===t&&J.hour<12?J.hour+=12:0===t&&12===J.hour&&(J.hour=0)}function U(t,e,i){u($,!0);var n=(i||1)*(60*(t||0)+(e||0));n&&(J.minute=(J.minute||0)-n)}function W(){d(J.month)?J.unit=B:d(J.weekday)&&(J.unit=j)}function V(t){d(J.weekday)?q(t):d(J.month)&&(J.date=J.num)}function Y(t){J.hour=t%24,t>23&&y(function(){b($,"date",l(t/24))})}function K(){h($),v(J.unit)&&(J.unit=L,J.num=J.day,delete J.day)}function G(t){var e=d(J.num)?J.num:1;d(J.weekday)&&(t===H?(q(e),e=1):(p($,{weekday:J.weekday},!0),delete J.weekday)),J.half&&(e*=J.half),d(J.shift)?e*=J.shift:J.sign&&(e*=J.sign),d(J.day)&&(e+=J.day,delete J.day),Z(t),J[M.units[t]]=e,it=!0}function X(t,e){var i,n=e.unit;n||F(e,function(t,i,s,r){"weekday"===t&&d(e.month)||(n=r)}),n===H&&d(e.weekday)&&(i=e.weekday,delete e.weekday),y(function(){var e;t<0?T($,n,R(tt,"locale")):t>0&&(1===t&&(e=L,T($,L)),x($,n,R(tt,"locale"),e)),d(i)&&(m($,i,-t),h($))}),e.specificity=n===H?L:n-1}function q(t){J.weekday=7*(t-1)+J.weekday,J.date=1,nt=1}function Z(t){var e;O(J,function(i,n,s,r){if(r>=t)return $.setTime(NaN),!1;rt;if(u||(o=e,e=t,t=o),n=e-t,i.multiplier>1&&(n=s(n/i.multiplier)),i.ambiguous)for(t=r(t),n&&a(t,i.name,n);te));)n+=1;return u?-n:n}var s=i(23),r=i(33),a=i(38);t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){var s,m=0;for(u(i)&&(i=h),u(n)&&(n=d),s=l(o(t),i),f(s,i,n),e&&t=i&&!1!==t(s[n],n);n--);}var s=i(31),r=i(5),a=i(37),o=r.YEAR_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e){return s(t,7*o((r(t)-e)/7)+e),t}var s=i(24),r=i(20),a=i(7),o=a.floor;t.exports=n},function(t,e,i){"use strict";t.exports={ISO_FIRST_DAY_OF_WEEK:1,ISO_FIRST_DAY_OF_WEEK_YEAR:4}},function(t,e,i){"use strict";var n=i(291),s=i(22),r=i(133),a=s.sugarDate;t.exports=r(a,n)},function(t,e,i){"use strict";function n(t,e,i,n){var s,p,g,v,y=t.start,b=t.end,_=b0&&(e*=-1);_?w>=b:w<=b;)i||k.push(w),n&&n(w,x,t),w=s(),x++;return i?x-1:k}var s=i(3),r=i(51),a=i(105),o=i(417),u=i(418),l=i(414),c=i(103),f=s.isNumber,h=s.isString,d=s.isDate,m=s.isFunction;t.exports=n},function(t,e,i){"use strict";t.exports="year|month|week|day|hour|minute|second|millisecond"},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.has=void 0;var n=i(19);e.has=function(t,e,i){for(var s=Boolean(i),r=0,a=t.length;r1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf;if(i.isCustomOptions(t)||!i.sortSlc||(0,l.isArray)(i.sortSlc)&&-1===i.sortSlc.indexOf(t))return e;var n=i.caseSensitive,s=i.sortNumDesc,r=void 0;if(this.customSorter&&-1!==this.customSorter.col.indexOf(t)){var a=this.customSorter.col.indexOf(t);r=this.customSorter.comparer[a]}else if(i.hasType(t,[c.NUMBER,c.FORMATTED_NUMBER])){var o=i.getDecimal(t),f=u.numSortAsc;!0!==s&&-1===s.indexOf(t)||(f=u.numSortDesc),r=(0,u.sortNumberStr)(f,o)}else if(i.hasType(t,[c.DATE])){var h=i.feature("dateType").getLocale(t),d=u.dateSortAsc;r=(0,u.sortDateStr)(d,h)}else r=n?void 0:u.ignoreCase;return e.sort(r)}},{key:"refreshFilters",value:function(t){var e=this;t.forEach(function(t){var i=e.getValues(t);e.build(t,e.tf.linkedFilters),e.selectOptions(t,i)})}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1],i=this.tf;t=parseInt(t,10),this.emitter.emit("before-populating-filter",i,t),this.opts=[],this.optsTxt=[];var n=this.containers[t],s=(0,u.createElm)("ul",["id",i.fltIds[t]],["colIndex",t]);s.className=this.filterCssClass;var r=i.dom().rows,a=i.getRowsNb(!0),o=i.caseSensitive;if(this.isCustom=i.isCustomOptions(t),this.isCustom){var f=i.getCustomOptions(t);this.opts=f[0],this.optsTxt=f[1]}var h=void 0,d=i.getActiveFilterId();e&&d&&(h=i.getColumnIndexFromFilterId(d));var m=[];e&&i.disableExcludedOptions&&(this.excludedOpts=[]),n.innerHTML="";for(var p=i.refRow;p1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf,n=i.getFilterElement(t);if(i.getFilterType(t)===d.CHECKLIST&&n&&0!==e.length){var s=(0,u.tag)(n,"li").length;n.setAttribute("value",""),n.setAttribute("indexes","");for(var r=0;r1&&void 0!==arguments[1]&&arguments[1],i=this.tf;t=parseInt(t,10),this.emitter.emit("before-populating-filter",i,t),this.opts=[],this.optsTxt=[];var n=i.fltIds[t],s=(0,u.elm)(n),r=i.dom().rows,a=i.getRowsNb(!0);if(this.isCustom=i.isCustomOptions(t),this.isCustom){var o=i.getCustomOptions(t);this.opts=o[0],this.optsTxt=o[1]}var f=void 0,h=i.getActiveFilterId();e&&h&&(f=i.getColumnIndexFromFilterId(h));var d=null,m=null;e&&i.disableExcludedOptions&&(d=[],m=[]);for(var p=i.refRow;p1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf;if(0!==e.length){var n=i.getFilterElement(t);[].forEach.call(n.options,function(t){""!==e[0]&&""!==t.value||(t.selected=!1),""!==t.value&&(0,l.has)(e,t.value,!0)&&(t.selected=!0)})}}},{key:"getValues",value:function(t){var e=this.tf,i=e.getFilterElement(t),n=[];return i.selectedOptions?[].forEach.call(i.selectedOptions,function(t){return n.push(t.value)}):[].forEach.call(i.options,function(t){t.selected&&n.push(t.value)}),n}},{key:"destroy",value:function(){var t=this;this.emitter.off(["build-select-filter"],function(e,i,n){return t.build(e,i,n)}),this.emitter.off(["select-options"],function(e,i,n){return t.selectOptions(i,n)}),this.emitter.off(["rows-changed"],function(){return t.refreshAll()}),this.initialized=!1}}]),e}(o.BaseDropdown)},function(t,e,i){"use strict";function n(t,e,i){return i||(i=r(t)),i==="[object "+e+"]"}var s=i(10),r=s.classToString;t.exports=n},function(t,e,i){"use strict";function n(t,e){for(var i=[],n=0,s=t.length;n0&&(C=E=i,b=!0),!!h(x.date)&&(x.set&&x.set.specificity&&((c(x.set.edge)||c(x.set.shift))&&(y=!0,p(x.date,x.set.specificity,n)),w=y||x.set.specificity===g?d(l(x.date),x.set.specificity,n).getTime():function(){var t=r[x.set.specificity];return f(l(x.date),t.name,1).getTime()-1}(),!b&&c(x.set.sign)&&x.set.specificity&&(C=50,E=-50)),k=t.getTime(),_=x.date.getTime(),w=w||_,v=function(){return x.set&&x.set.specificity?0:(u(x.date)-u(t))*s}(),v&&(_-=v,w-=v),k>=_-C&&k<=w+E)}var s=i(98),r=i(31),a=i(5),o=i(21),u=i(49),l=i(33),c=i(27),f=i(38),h=i(45),d=i(48),m=i(58),p=i(47),g=a.MONTH_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){return s(t,e,i,n).date}var s=i(58);t.exports=n},function(t,e,i){"use strict";function n(t,e,i){return a(t),e=s[e]||e||"{long}",o(e,t,i)}var s=i(96),r=i(297),a=i(77),o=r.dateFormatMatcher;t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){var s,a,f,h,d;return o(t),l(i)?d=i:(h=i,d=n),s=u(t,e),d&&(a=d.apply(t,s.concat(c.get(h))))?r(t,a,h):(0===s[1]&&(s[1]=1,s[0]=1),f=e?"duration":s[2]>0?"future":"past",c.get(h).getRelativeFormat(s,f))}var s=i(8),r=i(81),a=i(3),o=i(77),u=i(209),l=a.isFunction,c=s.localeManager;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){var n;if(f(t)){if(m(e))switch(e=r(e).toLowerCase(),!0){case"future"===e:return t.getTime()>u().getTime();case"past"===e:return t.getTime()0&&c(t)<6;case"weekend"===e:return 0===c(t)||6===c(t);case o(n=p.weekdayMap[e]):return c(t)===n;case o(n=p.monthMap[e]):return a(t)===n}return d(t,e,i)}}var s=i(8),r=i(150),a=i(29),o=i(27),u=i(40),l=i(206),c=i(20),f=i(45),h=i(3),d=i(79),m=h.isString,p=s.English;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=0,n=0;return r(function(t,s){if((n=a(e(t)))>=1)return i=s,!1}),[n,i,t]}var s=i(7),r=i(61),a=s.abs;t.exports=n},function(t,e,i){"use strict";function n(t,e){return s(t,e)||s(t,e+"s")||"day"===e&&s(t,"date")}var s=i(138);t.exports=n},function(t,e,i){"use strict";function n(t){return 32-a(new Date(s(t),r(t),32),"Date")}var s=i(30),r=i(29),a=i(18);t.exports=n},function(t,e,i){"use strict";function n(t){return s(t,"Hours")}var s=i(18);t.exports=n},function(t,e,i){"use strict";function n(t,e){return t.length>1&&(t="(?:"+t+")"),e&&(t+="?"),t}t.exports=n},function(t,e,i){"use strict";function n(t,e){var i,n,u,c=s(t)?0:a(t);return u=!0===e?":":"",!c&&e?"Z":(i=o(r(-c/60),2,!0),n=o(l(c%60),2),i+u+n)}var s=i(21),r=i(23),a=i(49),o=i(54),u=i(7),l=u.abs;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=e-1;return s(t,7*o((r(t)-i)/7)+i),t}var s=i(24),r=i(20),a=i(7),o=a.ceil;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){a(t,u),r(t,i),o(t,e)}var s=i(5),r=i(35),a=i(36),o=i(62),u=s.MONTH_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t){return r(t,a)}var s=i(5),r=i(36),a=s.HOURS_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e){if(g(e)){var i=f(t),n=h(t);p(i,v,y),a(i,r(i)+7*(e-1)),o(t,u(i)),c(t,l(i)),a(t,r(i)),d(t,n||7)}return t.getTime()}var s=i(63),r=i(34),a=i(35),o=i(228),u=i(30),l=i(29),c=i(227),f=i(33),h=i(20),d=i(24),m=i(3),p=i(91),g=m.isNumber,v=s.ISO_FIRST_DAY_OF_WEEK,y=s.ISO_FIRST_DAY_OF_WEEK_YEAR;t.exports=n},function(t,e,i){"use strict";function n(t,e){for(;t>=0&&!1!==e(s[t],t);)t=r(t)}var s=i(31),r=i(39);t.exports=n},function(t,e,i){"use strict";var n=i(57),s=n({mdy:!0,firstDayOfWeek:0,firstDayOfWeekYear:1,short:"{MM}/{dd}/{yyyy}",medium:"{Month} {d}, {yyyy}",long:"{Month} {d}, {yyyy} {time}",full:"{Weekday}, {Month} {d}, {yyyy} {time}",stamp:"{Dow} {Mon} {d} {yyyy} {time}",time:"{h}:{mm} {TT}"});t.exports=s},function(t,e,i){"use strict";var n={ISO8601:"{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}",RFC1123:"{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}",RFC1036:"{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}"};t.exports=n},function(t,e,i){"use strict";var n={year:{base:"yyyy",requiresSuffix:!0},month:{base:"MM",requiresSuffix:!0},date:{base:"dd",requiresSuffix:!0},hour:{base:"hh",requiresSuffixOr:":"},minute:{base:"mm"},second:{base:"ss"},num:{src:"\\d+",requiresNumerals:!0}};t.exports=n},function(t,e,i){"use strict";t.exports=6e4},function(t,e,i){"use strict";var n={yyyy:{param:"year",src:"\\d{4}"},MM:{param:"month",src:"[01]?\\d"},dd:{param:"date",src:"[0123]?\\d"},hh:{param:"hour",src:"[0-2]?\\d"},mm:{param:"minute",src:"[0-5]\\d"},ss:{param:"second",src:"[0-5]\\d(?:[,.]\\d+)?"},yy:{param:"year",src:"\\d{2}"},y:{param:"year",src:"\\d"},yearSign:{src:"[+-]",sign:!0},tzHour:{src:"[0-1]\\d"},tzMinute:{src:"[0-5]\\d"},tzSign:{src:"[+−-]",sign:!0},ihh:{param:"hour",src:"[0-2]?\\d(?:[,.]\\d+)?"},imm:{param:"minute",src:"[0-5]\\d(?:[,.]\\d+)?"},GMT:{param:"utc",src:"GMT",val:1},Z:{param:"utc",src:"Z",val:1},timestamp:{src:"\\d+"}};t.exports=n},function(t,e,i){"use strict";i(199),i(411),t.exports=i(0)},function(t,e,i){"use strict";function n(t){return a(t)?new Date(t.getTime()):r(t)}var s=i(3),r=i(104),a=s.isDate;t.exports=n},function(t,e,i){"use strict";function n(t){return a(t)?t:null==t?new Date:o.create?o.create(t):new Date(t)}var s=i(3),r=i(22),a=s.isDate,o=r.sugarDate;t.exports=n},function(t,e,i){"use strict";function n(t){var e,i,n;return o(t)?[t,"Milliseconds"]:(e=t.match(s),i=+e[1]||1,n=a(e[2].toLowerCase()),n.match(/hour|minute|second/i)?n+="s":"Year"===n?n="FullYear":"Week"===n?(n="Date",i*=7):"Day"===n&&(n="Date"),[i,n])}var s=i(432),r=i(3),a=i(55),o=r.isNumber;t.exports=n},function(t,e,i){"use strict";function n(t){return null==t?t:r(t)?t.getTime():t.valueOf()}var s=i(3),r=s.isDate;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){var n,o=s[i];return o?n=new Date(t.getTime()+e*o):(n=new Date(t),r(n,i,a(t,i)+e)),n}var s=i(106),r=i(32),a=i(18);t.exports=n},function(t,e,i){"use strict";var n={Hours:36e5,Minutes:6e4,Seconds:1e3,Milliseconds:1};t.exports=n},function(t,e){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sortDateStr=e.sortNumberStr=e.dateSortDesc=e.dateSortAsc=e.numSortDesc=e.numSortAsc=e.ignoreCase=void 0;var n=i(52),s=i(100);e.ignoreCase=function(t,e){var i=t.toLowerCase(),n=e.toLowerCase();return in?1:0},e.numSortAsc=function(t,e){return t-e},e.numSortDesc=function(t,e){return e-t},e.dateSortAsc=function(t,e){return t.getTime()-e.getTime()},e.dateSortDesc=function(t,e){return e.getTime()-t.getTime()},e.sortNumberStr=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return function(i,s){var r=(0,n.parse)(i,e),a=(0,n.parse)(s,e);return t(r,a)}},e.sortDateStr=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-us";return function(i,n){var r=s.Date.create(i,e),a=s.Date.create(n,e);return t(r,a)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(15),s=n.root.document;e.default={write:function(t,e,i){var n="";i&&(n=new Date((new Date).getTime()+36e5*i),n="; expires="+n.toGMTString()),s.cookie=t+"="+escape(e)+n},read:function(t){var e="",i=t+"=";if(s.cookie.length>0){var n=s.cookie,r=n.indexOf(i);if(-1!==r){r+=i.length;var a=n.indexOf(";",r);-1===a&&(a=n.length),e=unescape(n.substring(r,a))}}return e},remove:function(t){this.write(t,"",-1)}}},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.AlternateRows=void 0;var a=function(){function t(t,e){for(var i=0;i':null),i}return r(e,t),a(e,[{key:"onClick",value:function(){this.isEnabled()&&this.tf.clearFilters()}},{key:"init",value:function(){var t=this,e=this.tf;if(!this.initialized){var i=(0,u.createElm)("span");this.targetId||e.setToolbar();if((this.targetId?(0,u.elm)(this.targetId):e.rDiv).appendChild(i),this.html){i.innerHTML=this.html;var n=i.firstChild;(0,l.addEvt)(n,"click",function(){return t.onClick()})}else{var s=(0,u.createElm)("a",["href","javascript:void(0);"]);s.className=this.cssClass,s.appendChild((0,u.createText)(this.text)),i.appendChild(s),(0,l.addEvt)(s,"click",function(){return t.onClick()})}this.element=i.firstChild,this.container=i,this.initialized=!0}}},{key:"destroy",value:function(){this.initialized&&((0,u.removeElm)(this.element),(0,u.removeElm)(this.container),this.element=null,this.container=null,this.initialized=!1)}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.DateType=void 0;var a=function(){function t(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[];e.forEach(function(i,n){var s=t.getOptions(n,e);if(s.type===c.DATE&&s.hasOwnProperty("format")){var r=t.datetime.getLocale(s.locale||t.locale),a=(0,l.isArray)(s.format)?s.format:[s.format];try{a.forEach(function(t){r.addFormat(t)})}catch(t){f.root.console.error(t)}}})}},{key:"destroy",value:function(){var t=this;this.initialized&&(this.emitter.off(["add-date-type-formats"],function(e,i){return t.addConfigFormats(i)}),this.initialized=!1)}}]),e}(u.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.GridLayout=void 0;var a=function(){function t(t,e){for(var i=0;i0,i.tblMainCont=null,i.tblCont=null,i.headTblCont=null,i.headTbl=null,t.fltGrid=i.filters,i}return r(e,t),a(e,[{key:"init",value:function(){var t=this,e=this.tf,i=e.dom();if(!this.initialized){this.setOverrides(),this.setDefaultColWidths();var n=this.initialTableWidth();this.tblMainCont=this.createContainer("div",this.mainContCssClass),this.width&&(this.tblMainCont.style.width=this.width),i.parentNode.insertBefore(this.tblMainCont,i),this.tblCont=this.createContainer("div",this.contCssClass),this.setConfigWidth(this.tblCont),this.height&&(this.tblCont.style.height=this.height),i.parentNode.insertBefore(this.tblCont,i);var s=(0,u.removeElm)(i);this.tblCont.appendChild(s),""===i.style.width&&(i.style.width=((0,c.contains)("%",n)?i.clientWidth:n)+"px");var r=(0,u.removeElm)(this.tblCont);this.tblMainCont.appendChild(r),this.headTblCont=this.createContainer("div",this.headContCssClass),this.headTbl=(0,u.createElm)("table");var a=(0,u.createElm)("tHead"),o=i.rows[this.headRowIndex],h=this.getSortTriggerIds(o),d=this.createFiltersRow();this.setHeadersRow(a),this.headTbl.appendChild(a),0===e.filtersRowIndex?a.insertBefore(d,o):a.appendChild(d),this.headTblCont.appendChild(this.headTbl),this.tblCont.parentNode.insertBefore(this.headTblCont,this.tblCont);var m=(0,u.tag)(i,"thead");m.length>0&&i.removeChild(m[0]),this.headTbl.style.tableLayout="fixed",i.style.tableLayout="fixed",this.headTbl.cellPadding=i.cellPadding,this.headTbl.cellSpacing=i.cellSpacing,e.setColWidths(this.headTbl),i.style.width="",this.headTbl.style.width=i.clientWidth+"px",(0,l.addEvt)(this.tblCont,"scroll",function(e){var i=(0,l.targetEvt)(e),n=i.scrollLeft;t.headTblCont.scrollLeft=n});var p=e.extension("sort");p&&(p.asyncSort=!0,p.triggerIds=h),this.setColumnElements(),e.popupFilters&&(d.style.display=f.NONE),i.clientWidth!==this.headTbl.clientWidth&&(i.style.width=this.headTbl.clientWidth+"px"),this.initialized=!0}}},{key:"setOverrides",value:function(){var t=this.tf;t.refRow=0,t.headersRow=0,t.filtersRowIndex=1,t.isExternalFlt=!0}},{key:"setDefaultColWidths",value:function(){var t=this.tf;if(!t.hasColWidths){for(var e=0,i=t.getCellsNb();e0;for(var i=t.nbCells-1;i>=0;i--){var n=void 0;this.tblHasColTag?n=e[i]:(n=(0,u.createElm)("col"),t.dom().insertBefore(n,t.dom().firstChild)),n.style.width=t.colWidths[i],this.colElms[i]=n}this.tblHasColTag=!0}},{key:"setHeadersRow",value:function(t){if(this.noHeaders)t.appendChild((0,u.createElm)("tr"));else for(var e=0;e7)};e.Hash=function(){function t(e){n(this,t),this.state=e,this.lastHash=null,this.emitter=e.emitter,this.boundSync=null}return s(t,[{key:"init",value:function(){var t=this;f()&&(this.lastHash=u.hash,this.boundSync=this.sync.bind(this),this.emitter.on(["state-changed"],function(e,i){return t.update(i)}),this.emitter.on(["initialized"],this.boundSync),(0,r.addEvt)(a.root,"hashchange",this.boundSync))}},{key:"update",value:function(t){var e="#"+c(o.stringify(t));this.lastHash!==e&&(u.hash=e,this.lastHash=e)}},{key:"parse",value:function(t){return-1===t.indexOf("#")?null:(t=t.substr(1),o.parse(l(t)))}},{key:"sync",value:function(){var t=this.parse(u.hash);t&&this.state.overrideAndSync(t)}},{key:"destroy",value:function(){var t=this;this.emitter.off(["state-changed"],function(e,i){return t.update(i)}),this.emitter.off(["initialized"],this.boundSync),(0,r.removeEvt)(a.root,"hashchange",this.boundSync),this.state=null,this.lastHash=null,this.emitter=null}}]),t}()},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.Help=void 0;var a=function(){function t(t,e){for(var i=0;i<, <=, >, >=, =, *, !, {, }, ||,&&, [empty], [nonempty], rgx:
Learn more
':r.text,i.instrHtml=r.html||null,i.btnText=r.btn_text||"?",i.btnHtml=r.btn_html||null,i.btnCssClass=r.btn_css_class||"helpBtn",i.contCssClass=r.container_css_class||"helpCont",i.btn=null,i.cont=null,i.boundMouseup=null,i.defaultHtml='

TableFilter v'+t.version+'

'+m+"
©2015-"+t.year+' Max Guglielmi
',i.emitter.on(["init-help"],function(){return i.init()}),i}return r(e,t),a(e,[{key:"onMouseup",value:function(t){for(var e=(0,l.targetEvt)(t);e&&e!==this.cont&&e!==this.btn;)e=e.parentNode;e!==this.cont&&e!==this.btn&&this.toggle()}},{key:"init",value:function(){var t=this;if(!this.initialized){var e=this.tf,i=(0,u.createElm)("span"),n=(0,u.createElm)("div");this.boundMouseup=this.onMouseup.bind(this),this.tgtId||e.setToolbar();(this.tgtId?(0,u.elm)(this.tgtId):e.rDiv).appendChild(i);var s=this.contTgtId?(0,u.elm)(this.contTgtId):i;if(this.btnHtml){i.innerHTML=this.btnHtml;var r=i.firstChild;(0,l.addEvt)(r,"click",function(){return t.toggle()}),s.appendChild(n)}else{s.appendChild(n);var a=(0,u.createElm)("a",["href","javascript:void(0);"]);a.className=this.btnCssClass,a.appendChild((0,u.createText)(this.btnText)),i.appendChild(a),(0,l.addEvt)(a,"click",function(){return t.toggle()})}this.instrHtml?(this.contTgtId&&s.appendChild(n),n.innerHTML=this.instrHtml,this.contTgtId||(n.className=this.contCssClass)):(n.innerHTML=this.instrText,n.className=this.contCssClass),n.innerHTML+=this.defaultHtml,(0,l.addEvt)(n,"click",function(){return t.toggle()}),this.cont=n,this.btn=i,this.initialized=!0}}},{key:"toggle",value:function(){if(this.isEnabled()){(0,l.removeEvt)(f.root,"mouseup",this.boundMouseup);var t=this.cont.style.display;""===t||t===c.NONE?(this.cont.style.display="inline",(0,l.addEvt)(f.root,"mouseup",this.boundMouseup)):this.cont.style.display=c.NONE}}},{key:"destroy",value:function(){this.initialized&&((0,u.removeElm)(this.btn),this.btn=null,(0,u.removeElm)(this.cont),this.cont=null,this.boundMouseup=null,this.initialized=!1)}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.HighlightKeyword=void 0;var s=function(){function t(t,e){for(var i=0;i0?this.hide():this.show()}},{key:"show",value:function(){this.initialized&&this.isEnabled()&&(this.onBeforeShow(this.tf,this),this.setWidth(),this.cont.style.display="block",this.onAfterShow(this.tf,this))}},{key:"hide",value:function(){this.initialized&&this.isEnabled()&&(this.onBeforeHide(this.tf,this),this.cont.style.display=c.NONE,this.onAfterHide(this.tf,this))}},{key:"setWidth",value:function(){if(this.initialized&&!this.isExternal&&this.isEnabled()){var t=this.tf;if(t.gridLayout){var e=t.feature("gridLayout");this.cont.style.width=e.tblCont.clientWidth+"px"}else this.cont.style.width=(t.dom().tHead?t.dom().tHead.clientWidth:t.dom().tBodies[0].clientWidth)+"px"}}},{key:"destroy",value:function(){var t=this;this.initialized&&((0,u.removeElm)(this.cont),this.cont=null,this.emitter.off(["after-filtering"],function(){return t.toggle()}),this.initialized=!1)}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.Paging=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var i=0;i",i.btnPrevPageText=r.btn_prev_page_text||"<",i.btnLastPageText=r.btn_last_page_text||">|",i.btnFirstPageText=r.btn_first_page_text||"|<",i.btnNextPageHtml=r.btn_next_page_html||(t.enableIcons?'':null),i.btnPrevPageHtml=r.btn_prev_page_html||(t.enableIcons?'':null),i.btnFirstPageHtml=r.btn_first_page_html||(t.enableIcons?'':null),i.btnLastPageHtml=r.btn_last_page_html||(t.enableIcons?'':null),i.pageText=r.page_text||" Page ",i.ofText=r.of_text||" of ",i.nbPgSpanCssClass=r.nb_pages_css_class||"nbpg",i.hasBtns=!1!==r.btns,i.pageSelectorType=r.page_selector_type||h.SELECT,i.onBeforeChangePage=(0,c.isFn)(r.on_before_change_page)?r.on_before_change_page:c.EMPTY_FN,i.onAfterChangePage=(0,c.isFn)(r.on_after_change_page)?r.on_after_change_page:c.EMPTY_FN,i.slcResultsTxt=null,i.btnNextCont=null,i.btnPrevCont=null,i.btnLastCont=null,i.btnFirstCont=null,i.pgCont=null,i.pgBefore=null,i.pgAfter=null;var a=t.refRow,o=t.getRowsNb(!0);i.nbPages=Math.ceil((o-a)/i.pageLength);var u=i;return i.evt={slcIndex:function(){return u.pageSelectorType===h.SELECT?u.pageSlc.options.selectedIndex:parseInt(u.pageSlc.value,10)-1},nbOpts:function(){return u.pageSelectorType===h.SELECT?parseInt(u.pageSlc.options.length,10)-1:u.nbPages-1},next:function(){var t=u.evt.slcIndex()0?u.evt.slcIndex()-1:u.evt.nbOpts();u.changePage(t)},last:function(){u.changePage(u.evt.nbOpts())},first:function(){u.changePage(0)},_detectKey:function(e){(0,f.keyCode)(e)===h.ENTER_KEY&&(t.sorted?(t.filter(),u.changePage(u.evt.slcIndex())):u.changePage(),this.blur())},slcPagesChange:null,nextEvt:null,prevEvt:null,lastEvt:null,firstEvt:null},i}return r(e,t),o(e,[{key:"init",value:function(){var t=this,e=void 0,i=this.tf,n=this.evt;if(!this.initialized){this.hasResultsPerPage&&(this.resultsPerPage.length<2?this.hasResultsPerPage=!1:(this.pageLength=this.resultsPerPage[1][0],this.setResultsPerPage())),n.slcPagesChange=function(e){var i=e.target;t.changePage(i.selectedIndex)},this.pageSelectorType===h.SELECT&&(e=(0,l.createElm)(h.SELECT),e.className=this.pgSlcCssClass,(0,f.addEvt)(e,"change",n.slcPagesChange)),this.pageSelectorType===h.INPUT&&(e=(0,l.createElm)(h.INPUT,["value",this.currentPageNb]),e.className=this.pgInpCssClass,(0,f.addEvt)(e,"keypress",n._detectKey));var s=(0,l.createElm)("span"),r=(0,l.createElm)("span"),a=(0,l.createElm)("span"),o=(0,l.createElm)("span");if(this.hasBtns){if(this.btnNextPageHtml)s.innerHTML=this.btnNextPageHtml,(0,f.addEvt)(s,"click",n.next);else{var u=(0,l.createElm)(h.INPUT,["type","button"],["value",this.btnNextPageText],["title","Next"]);u.className=this.btnCssClass,(0,f.addEvt)(u,"click",n.next),s.appendChild(u)}if(this.btnPrevPageHtml)r.innerHTML=this.btnPrevPageHtml,(0,f.addEvt)(r,"click",n.prev);else{var c=(0,l.createElm)(h.INPUT,["type","button"],["value",this.btnPrevPageText],["title","Previous"]);c.className=this.btnCssClass,(0,f.addEvt)(c,"click",n.prev),r.appendChild(c)}if(this.btnLastPageHtml)a.innerHTML=this.btnLastPageHtml,(0,f.addEvt)(a,"click",n.last);else{var d=(0,l.createElm)(h.INPUT,["type","button"],["value",this.btnLastPageText],["title","Last"]);d.className=this.btnCssClass,(0,f.addEvt)(d,"click",n.last),a.appendChild(d)}if(this.btnFirstPageHtml)o.innerHTML=this.btnFirstPageHtml,(0,f.addEvt)(o,"click",n.first);else{var m=(0,l.createElm)(h.INPUT,["type","button"],["value",this.btnFirstPageText],["title","First"]);m.className=this.btnCssClass,(0,f.addEvt)(m,"click",n.first),o.appendChild(m)}}this.tgtId||i.setToolbar();var p=this.tgtId?(0,l.elm)(this.tgtId):i.mDiv;p.appendChild(o),p.appendChild(r);var g=(0,l.createElm)("span");g.appendChild((0,l.createText)(this.pageText)),g.className=this.nbPgSpanCssClass,p.appendChild(g),p.appendChild(e);var v=(0,l.createElm)("span");v.appendChild((0,l.createText)(this.ofText)),v.className=this.nbPgSpanCssClass,p.appendChild(v);var y=(0,l.createElm)("span");y.className=this.nbPgSpanCssClass,y.appendChild((0,l.createText)(" "+this.nbPages+" ")),p.appendChild(y),p.appendChild(s),p.appendChild(a),this.btnNextCont=s,this.btnPrevCont=r,this.btnLastCont=a,this.btnFirstCont=o,this.pgCont=y,this.pgBefore=g,this.pgAfter=v,this.pageSlc=e,this.setPagingInfo(),i.fltGrid||(i.validateAllRows(),this.setPagingInfo(i.validRowsIndex)),this.emitter.on(["after-filtering"],function(){return t.resetPagingInfo()}),this.emitter.on(["change-page"],function(e,i){return t.setPage(i)}),this.emitter.on(["change-page-results"],function(e,i){return t.changeResultsPerPage(i)}),this.initialized=!0}}},{key:"reset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.enable(),this.init(),t&&this.tf.filter()}},{key:"resetPagingInfo",value:function(){this.startPagingRow=0,this.currentPageNb=1,this.setPagingInfo(this.tf.validRowsIndex)}},{key:"setPagingInfo",value:function(t){var e=this.tf,i=this.tgtId?(0,l.elm)(this.tgtId):e.mDiv;if(e.validRowsIndex=t||e.getValidRows(!0),this.nbPages=Math.ceil(e.validRowsIndex.length/this.pageLength),this.pgCont.innerHTML=this.nbPages,this.pageSelectorType===h.SELECT&&(this.pageSlc.innerHTML=""),this.nbPages>0)if(i.style.visibility="visible",this.pageSelectorType===h.SELECT)for(var n=0;n=n&&r=0&&t<=this.nbPages-1&&(this.onBeforeChangePage(this,t+1),this.currentPageNb=parseInt(t,10)+1,this.pageSelectorType===h.SELECT?this.pageSlc.options[t].selected=!0:this.pageSlc.value=this.currentPageNb,this.startPagingRow=this.pageSelectorType===h.SELECT?this.pageSlc.value:t*this.pageLength,this.groupByPage(),this.onAfterChangePage(this,t+1)),this.emitter.emit("after-page-change",e,t+1))}},{key:"changeResultsPerPage",value:function(t){this.isEnabled()&&!isNaN(t)&&(this.pageLengthSlc.value=t,this.onChangeResultsPerPage())}},{key:"onChangeResultsPerPage",value:function(){var t=this.tf;if(this.isEnabled()&&0!==t.getValidRowsNb()){var e=this.pageLengthSlc,i=this.pageSelectorType,n=this.pageSlc,s=this.emitter;s.emit("before-page-length-change",t);var r=e.selectedIndex,a=i===h.SELECT?n.selectedIndex:parseInt(n.value-1,10);if(this.pageLength=parseInt(e.options[r].value,10),this.startPagingRow=this.pageLength*a,!isNaN(this.pageLength)&&(this.startPagingRow>=t.nbFilterableRows&&(this.startPagingRow=t.nbFilterableRows-this.pageLength),this.setPagingInfo(),i===h.SELECT)){var o=n.options.length-1<=a?n.options.length-1:a;n.options[o].selected=!0}s.emit("after-page-length-change",t,this.pageLength)}}},{key:"resetPage",value:function(){var t=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page",t);var e=t.feature("store").getPageNb();""!==e&&this.changePage(e-1),this.emitter.emit("after-reset-page",t,e)}}},{key:"resetPageLength",value:function(){var t=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page-length",t);var e=t.feature("store").getPageLength();""!==e&&(this.pageLengthSlc.options[e].selected=!0,this.changeResultsPerPage()),this.emitter.emit("after-reset-page-length",t,e)}}},{key:"destroy",value:function(){var t=this;if(this.initialized){var e=this.evt;this.pageSlc&&(this.pageSelectorType===h.SELECT?(0,f.removeEvt)(this.pageSlc,"change",e.slcPagesChange):this.pageSelectorType===h.INPUT&&(0,f.removeEvt)(this.pageSlc,"keypress",e._detectKey),(0,l.removeElm)(this.pageSlc)),this.btnNextCont&&((0,f.removeEvt)(this.btnNextCont,"click",e.next),(0,l.removeElm)(this.btnNextCont),this.btnNextCont=null),this.btnPrevCont&&((0,f.removeEvt)(this.btnPrevCont,"click",e.prev),(0,l.removeElm)(this.btnPrevCont),this.btnPrevCont=null),this.btnLastCont&&((0,f.removeEvt)(this.btnLastCont,"click",e.last),(0,l.removeElm)(this.btnLastCont),this.btnLastCont=null),this.btnFirstCont&&((0,f.removeEvt)(this.btnFirstCont,"click",e.first),(0,l.removeElm)(this.btnFirstCont),this.btnFirstCont=null),this.pgBefore&&((0,l.removeElm)(this.pgBefore),this.pgBefore=null),this.pgAfter&&((0,l.removeElm)(this.pgAfter),this.pgAfter=null),this.pgCont&&((0,l.removeElm)(this.pgCont),this.pgCont=null),this.hasResultsPerPage&&this.removeResultsPerPage(),this.emitter.off(["after-filtering"],function(){return t.resetPagingInfo()}),this.emitter.off(["change-page"],function(e,i){return t.setPage(i)}),this.emitter.off(["change-page-results"],function(e,i){return t.changeResultsPerPage(i)}),this.pageSlc=null,this.nbPages=0,this.initialized=!1}}}]),e}(u.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.PopupFilter=void 0;var a=function(){function t(t,e){for(var i=0;i',i.placeholderCssClass=r.placeholder_css_class||"popUpPlaceholder",i.containerCssClass=r.div_css_class||"popUpFilter",i.adjustToContainer=!1!==r.adjust_to_container,i.onBeforeOpen=(0,u.isFn)(r.on_before_popup_filter_open)?r.on_before_popup_filter_open:u.EMPTY_FN,i.onAfterOpen=(0,u.isFn)(r.on_after_popup_filter_open)?r.on_after_popup_filter_open:u.EMPTY_FN,i.onBeforeClose=(0,u.isFn)(r.on_before_popup_filter_close)?r.on_before_popup_filter_close:u.EMPTY_FN,i.onAfterClose=(0,u.isFn)(r.on_after_popup_filter_close)?r.on_after_popup_filter_close:u.EMPTY_FN,i.fltSpans=[],i.fltIcons=[],i.filtersCache=null,i.fltElms=i.filtersCache||[],i.prfxDiv="popup_",i.activeFilterIdx=-1,i}return r(e,t),a(e,[{key:"onClick",value:function(t){var e=(0,c.targetEvt)(t).parentNode,i=parseInt(e.getAttribute("ci"),10);if(this.closeAll(i),this.toggle(i),this.adjustToContainer){var n=this.fltElms[i],s=this.tf.getHeaderElement(i),r=.95*s.clientWidth;n.style.width=parseInt(r,10)+"px"}(0,c.cancelEvt)(t),(0,c.stopEvt)(t)}},{key:"onMouseup",value:function(t){if(-1!==this.activeFilterIdx){var e=(0,c.targetEvt)(t),i=this.fltElms[this.activeFilterIdx];if(this.fltIcons[this.activeFilterIdx]!==e){for(;e&&e!==i;)e=e.parentNode;e!==i&&this.close(this.activeFilterIdx)}}}},{key:"init",value:function(){var t=this;if(!this.initialized){var e=this.tf;e.headersRow<=1&&isNaN(e.config().headers_row_index)&&(e.headersRow=0),e.gridLayout&&(e.headersRow--,this.buildIcons()),this.emitter.on(["before-filtering"],function(){return t.setIconsState()}),this.emitter.on(["after-filtering"],function(){return t.closeAll()}),this.emitter.on(["cell-processed"],function(e,i){return t.changeState(i,!0)}),this.emitter.on(["filters-row-inserted"],function(){return t.buildIcons()}),this.emitter.on(["before-filter-init"],function(e,i){return t.build(i)}),this.initialized=!0}}},{key:"reset",value:function(){this.enable(),this.init(),this.buildIcons(),this.buildAll()}},{key:"buildIcons",value:function(){var t=this,e=this.tf;e.headersRow++;for(var i=0;i0?1:0),a=r+n.pageLength-1<=s?r+n.pageLength-1:s;i=r+this.fromToTextSeparator+a+this.overText+s}}else i=t&&""!==t?t:e.getFilterableRowsNb()-e.nbHiddenRows;this.label.innerHTML=i,this.onAfterRefreshCounter(e,this.label,i)}}},{key:"destroy",value:function(){var t=this;this.initialized&&(!this.targetId&&this.container?(0,u.removeElm)(this.container):(0,u.elm)(this.targetId).innerHTML="",this.label=null,this.container=null,this.emitter.off(["after-filtering","grouped-by-page"],function(){return t.refresh(tf.getValidRowsNb())}),this.emitter.off(["rows-changed"],function(){return t.refresh()}),this.initialized=!1)}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.State=void 0;var a=function(){function t(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"";if(this.isEnabled()){this.onBeforeShowMsg(this.tf,e);var i=""===e?this.delay:1;u.root.setTimeout(function(){t.initialized&&(t.msgContainer.innerHTML=e,t.onAfterShowMsg(t.tf,e))},i)}}},{key:"destroy",value:function(){var t=this;if(this.initialized){var e=this.emitter;this.container.innerHTML="",this.targetId||(0,l.removeElm)(this.container),this.labelContainer=null,this.msgContainer=null,this.container=null,e.off(["before-filtering"],function(){return t.message(t.msgFilter)}),e.off(["before-populating-filter"],function(){return t.message(t.msgPopulate)}),e.off(["before-page-change"],function(){return t.message(t.msgChangePage)}),e.off(["before-clearing-filters"],function(){return t.message(t.msgClear)}),e.off(["before-page-length-change"],function(){return t.message(t.msgChangeResults)}),e.off(["before-reset-page"],function(){return t.message(t.msgResetPage)}),e.off(["before-reset-page-length"],function(){return t.message(t.msgResetPageLength)}),e.off(["before-loading-extensions"],function(){return t.message(t.msgLoadExtensions)}),e.off(["before-loading-themes"],function(){return t.message(t.msgLoadThemes)}),e.off(f,function(){return t.message("")}),this.initialized=!1}}}]),e}(o.Feature)},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.Storage=e.hasStorage=void 0;var s=function(){function t(t,e){for(var i=0;i",this.lwOperator=c.lower_operator||"<",this.leOperator=c.lower_equal_operator||"<=",this.geOperator=c.greater_equal_operator||">=",this.dfOperator=c.different_operator||"!",this.lkOperator=c.like_operator||"*",this.eqOperator=c.equal_operator||"=",this.stOperator=c.start_with_operator||"{",this.enOperator=c.end_with_operator||"}",this.separator=c.separator||",",this.rowsCounter=(0,l.isObj)(c.rows_counter)||Boolean(c.rows_counter),this.statusBar=(0,l.isObj)(c.status_bar)||Boolean(c.status_bar),this.loader=(0,l.isObj)(c.loader)||Boolean(c.loader),this.displayBtn=Boolean(c.btn),this.btnText=c.btn_text||(this.enableIcons?"":"Go"),this.btnCssClass=c.btn_css_class||(this.enableIcons?"btnflt_icon":"btnflt"),this.btnReset=Boolean(c.btn_reset),this.onBeforeReset=(0,l.isFn)(c.on_before_reset)?c.on_before_reset:l.EMPTY_FN,this.onAfterReset=(0,l.isFn)(c.on_after_reset)?c.on_after_reset:l.EMPTY_FN,this.paging=(0,l.isObj)(c.paging)||Boolean(c.paging),this.nbHiddenRows=0,this.autoFilter=Boolean(c.auto_filter),this.autoFilterDelay=isNaN(c.auto_filter_delay)?p.AUTO_FILTER_DELAY:c.auto_filter_delay,this.isUserTyping=null,this.autoFilterTimer=null,this.highlightKeywords=Boolean(c.highlight_keywords),this.noResults=(0,l.isObj)(c.no_results_message)||Boolean(c.no_results_message),this.state=(0,l.isObj)(c.state)||Boolean(c.state),this.dateType=!0,this.locale=c.locale||"en",this.thousandsSeparator=c.thousands_separator||",",this.decimalSeparator=c.decimal_separator||".",this.colTypes=(0,l.isArray)(c.col_types)?c.col_types:[],this.prfxTf="TF",this.prfxFlt="flt",this.prfxValButton="btn",this.prfxInfDiv="inf_",this.prfxLDiv="ldiv_",this.prfxRDiv="rdiv_",this.prfxMDiv="mdiv_",this.prfxResponsive="resp",this.extensions=c.extensions,this.hasExtensions=(0,l.isArray)(this.extensions),this.enableDefaultTheme=Boolean(c.enable_default_theme),this.hasThemes=this.enableDefaultTheme||(0,l.isArray)(c.themes),this.themes=c.themes||[],this.themesPath=c.themes_path||this.stylePath+"themes/",this.responsive=Boolean(c.responsive),this.Mod={},this.ExtRegistry={},this.instantiateFeatures(Object.keys(p.FEATURES).map(function(t){return p.FEATURES[t]})),this.import(this.stylesheetId,this.stylesheet,null,"link")}return r(t,[{key:"init",value:function(){var t=this;if(!this.initialized){this.nbCells=this.getCellsNb(this.refRow);var e=this.Mod,i=this.singleSearchFlt?1:this.nbCells,n=void 0;this.loadThemes();var s=p.FEATURES.dateType,r=p.FEATURES.help,a=p.FEATURES.state,u=p.FEATURES.markActiveColumns,l=p.FEATURES.gridLayout,c=p.FEATURES.loader,f=p.FEATURES.highlightKeyword,h=p.FEATURES.popupFilter,g=p.FEATURES.rowsCounter,v=p.FEATURES.statusBar,y=p.FEATURES.clearButton,b=p.FEATURES.alternateRows,_=p.FEATURES.noResults,w=p.FEATURES.paging;if(this.initFeatures([s,r,a,u,l,c,f,h]),this.fltGrid){var x=this._insertFiltersRow();this.nbFilterableRows=this.getRowsNb();for(var k=0;k0?e[0].insertRow(this.filtersRowIndex):this.dom().insertRow(this.filtersRowIndex),t.className=this.fltsRowCssClass,this.isExternalFlt&&(t.style.display=p.NONE),this.emitter.emit("filters-row-inserted",this,t),t}}},{key:"_initNoFilters",value:function(){this.fltGrid||(this.refRow=this.refRow>0?this.refRow-1:0,this.nbFilterableRows=this.getRowsNb())}},{key:"_buildInputFilter",value:function(t,e,i){var n=this,s=this.getFilterType(t),r=this.isExternalFlt?this.externalFltTgtIds[t]:null,u=s===p.INPUT?"text":"hidden",l=(0,o.createElm)(p.INPUT,["id",this.buildFilterId(t)],["type",u],["ct",t]);"hidden"!==u&&this.watermark&&l.setAttribute("placeholder",this.isWatermarkArray?this.watermark[t]||"":this.watermark),l.className=e||this.fltCssClass,(0,a.addEvt)(l,"focus",function(t){return n.onInpFocus(t)}),r?(0,o.elm)(r).appendChild(l):i.appendChild(l),this.fltIds.push(l.id),(0,a.addEvt)(l,"keypress",function(t){return n.detectKey(t)}),(0,a.addEvt)(l,"keydown",function(){return n.onKeyDown()}),(0,a.addEvt)(l,"keyup",function(t){return n.onKeyUp(t)}),(0,a.addEvt)(l,"blur",function(){return n.onInpBlur()})}},{key:"_buildSubmitButton",value:function(t,e){var i=this,n=this.isExternalFlt?this.externalFltTgtIds[t]:null,s=(0,o.createElm)(p.INPUT,["type","button"],["value",this.btnText]);s.className=this.btnCssClass,n?(0,o.elm)(n).appendChild(s):e.appendChild(s),(0,a.addEvt)(s,"click",function(){return i.filter()})}},{key:"instantiateFeatures",value:function(){var t=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){if(e.property=e.property||e.name,!0===t[e.property]||!0===e.enforce){var i=e.class,n=e.name;t.Mod[n]=t.Mod[n]||new i(t)}})}},{key:"initFeatures",value:function(){var t=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){var i=e.property,n=e.name;!0===t[i]&&t.Mod[n]&&t.Mod[n].init()})}},{key:"feature",value:function(t){return this.Mod[t]}},{key:"initExtensions",value:function(){if(this.hasExtensions){var t=this.extensions;i.p=this.basePath,this.emitter.emit("before-loading-extensions",this);for(var e=0,n=t.length;e0&&void 0!==arguments[0]?arguments[0]:"default";return(0,o.elm)(this.prfxTf+t)}},{key:"destroy",value:function(){var t=this;if(this.initialized){var e=this.emitter;this.isExternalFlt&&!this.popupFilters&&this.removeExternalFlts(),this.removeToolbar(),this.hasExtensions&&this.destroyExtensions(),this.validateAllRows(),e.emit("destroy",this),this.fltGrid&&!this.gridLayout&&this.dom().deleteRow(this.filtersRowIndex),this.hasVisibleRows&&e.off(["after-filtering"],function(){return t.enforceVisibility()}),this.linkedFilters&&e.off(["after-filtering"],function(){return t.linkFilters()}),this.emitter.off(["filter-focus"],function(e,i){return t.setActiveFilterId(i.id)}),(0,o.removeClass)(this.dom(),this.prfxTf),(0,o.removeClass)(this.dom(),this.prfxResponsive),this.nbHiddenRows=0,this.validRowsIndex=[],this.fltIds=[],this.initialized=!1}}},{key:"setToolbar",value:function(){if(!this.infDiv){var t=(0,o.createElm)("div");if(t.className=this.infDivCssClass,this.toolBarTgtId)(0,o.elm)(this.toolBarTgtId).appendChild(t);else if(this.gridLayout){var e=this.Mod.gridLayout;e.tblMainCont.appendChild(t),t.className=e.infDivCssClass}else{var i=(0,o.createElm)("caption");i.appendChild(t),this.dom().insertBefore(i,this.dom().firstChild)}this.infDiv=t;var n=(0,o.createElm)("div");n.className=this.lDivCssClass,t.appendChild(n),this.lDiv=n;var s=(0,o.createElm)("div");s.className=this.rDivCssClass,t.appendChild(s),this.rDiv=s;var r=(0,o.createElm)("div");r.className=this.mDivCssClass,t.appendChild(r),this.mDiv=r,(0,l.isUndef)(this.help)&&(this.Mod.help.enable(),this.emitter.emit("init-help",this))}}},{key:"removeToolbar",value:function(){if(this.infDiv){(0,o.removeElm)(this.infDiv),this.infDiv=null;var t=this.dom(),e=(0,o.tag)(t,"caption");[].forEach.call(e,function(t){return(0,o.removeElm)(t)})}}},{key:"removeExternalFlts",value:function(){if(this.isExternalFlt)for(var t=this.externalFltTgtIds,e=t.length,i=0;i1,v=d.toString().split(this.anOperator),y=v.length>1;if((0,l.isArray)(d)||g||y){var b=void 0,_=void 0,w=!1;_=(0,l.isArray)(d)?d:g?p:v;for(var x=0,k=_.length;x=R):z?(R=L(t.replace(l,""),j),_=D>R):W?(R=L(t.replace(f,""),j),_=D.toString()!==R.toString()):V?(R=L(t.replace(d,""),j),_=D.toString()===R.toString()):h.test(t)?_=(0,u.contains)(t.replace(h,""),e,!1,this.caseSensitive):A(t)?(R=L(t,j),_=D.toString()===R.toString()):_=S?(0,u.isEmpty)(e):P?!(0,u.isEmpty)(e):(0,u.contains)(t,e,this.isExactMatch(i),this.caseSensitive)}else if(n=Number(e)||(0,c.parse)(e,s),x)_=n<=(0,c.parse)(t.replace(r,""),s);else if(C)_=n>=(0,c.parse)(t.replace(a,""),s);else if(w)_=n<(0,c.parse)(t.replace(o,""),s);else if(k)_=n>(0,c.parse)(t.replace(l,""),s);else if(E)_=!(0,u.contains)(t.replace(f,""),e,!1,this.caseSensitive);else if(O)_=(0,u.contains)(t.replace(h,""),e,!1,this.caseSensitive);else if(T)_=(0,u.contains)(t.replace(d,""),e,!0,this.caseSensitive);else if(N)_=0===e.indexOf(t.replace(m,""));else if(F){var Y=t.replace(g,"");_=e.lastIndexOf(Y,e.length-1)===e.length-1-(Y.length-1)&&e.lastIndexOf(Y,e.length-1)>-1}else if(S)_=(0,u.isEmpty)(e);else if(P)_=!(0,u.isEmpty)(e);else if(I)try{var K=t.replace(b,""),G=new RegExp(K);_=G.test(e)}catch(t){_=!1}else n&&this.hasType(i,[p.NUMBER,p.FORMATTED_NUMBER])&&!this.singleSearchFlt?(t=(0,c.parse)(t,s)||t,_=n===t||(0,u.contains)(t.toString(),n.toString(),this.isExactMatch(i),this.caseSensitive)):_=(0,u.contains)(t,e,this.isExactMatch(i),this.caseSensitive,this.ignoresDiacritics(i));return _}},{key:"getColumnData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(t,e,!0,i)}},{key:"getColumnValues",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(t,e,!1,i)}},{key:"getColValues",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=this.dom().rows,r=this.getRowsNb(!0),a=[],o=i?this.getCellData.bind(this):this.getCellValue.bind(this);e&&a.push(this.getHeadersText()[t]);for(var u=this.refRow;u0&&(l=-1!==n.indexOf(u));var c=s[u].cells,f=c.length;if(f===this.nbCells&&!l)for(var h=0;h0&&void 0!==arguments[0]?arguments[0]:0,e=this.dom().rows[t>=0?t:0];return e?e.cells.length:0}},{key:"getRowsNb",value:function(t){var e=(0,l.isUndef)(this.refRow)?0:this.refRow,i=this.dom().rows.length;return t&&(e=0),parseInt(i-e,10)}},{key:"getCellValue",value:function(t){var e=t.cellIndex,i=this.cellParser;return-1!==i.cols.indexOf(e)?i.parse(this,t,e):(0,o.getText)(t)}},{key:"getCellData",value:function(t){var e=t.cellIndex,i=this.getCellValue(t);if(this.hasType(e,[p.FORMATTED_NUMBER]))return(0,c.parse)(i,this.getDecimal(e));if(this.hasType(e,[p.NUMBER]))return Number(i)||(0,c.parse)(i);if(this.hasType(e,[p.DATE])){var n=this.Mod.dateType;return n.parse(i,n.getLocale(e))}return i}},{key:"getData",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(t,e,!0)}},{key:"getValues",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(t,e,!1)}},{key:"getTableData",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.dom().rows,s=this.getRowsNb(!0),r=[],a=i?this.getCellData.bind(this):this.getCellValue.bind(this);if(t){var o=this.getHeadersText(e);r.push([this.getHeadersRowIndex(),o])}for(var u=this.refRow;u0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(t,e,!0)}},{key:"getFilteredValues",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(t,e,!1)}},{key:"filteredData",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(0===this.validRowsIndex.length)return[];var n=this.dom().rows,s=[],r=i?this.getCellData.bind(this):this.getCellValue.bind(this);if(t){var a=this.getHeadersText(e);s.push([this.getHeadersRowIndex(),a])}for(var o=this.getValidRows(!0),u=0;u1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!0,i,!1)}},{key:"getVisibleColumnData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!0,i,!0)}},{key:"getFilteredColumnValues",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!1,i,!1)}},{key:"getVisibleColumnValues",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!1,i,!0)}},{key:"getFilteredDataCol",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if((0,l.isUndef)(t))return[];var a=this.dom().rows,o=i?this.getCellData.bind(this):this.getCellValue.bind(this),u=this.getValidRows(!0).filter(function(t){return-1===s.indexOf(t)&&(!r||"none"!==n.getRowDisplay(a[t]))}),c=u.map(function(e){return o(a[e].cells[t])});return e&&c.unshift(this.getHeadersText()[t]),c}},{key:"getRowDisplay",value:function(t){return t.style.display}},{key:"validateRow",value:function(t,e){var i=this.dom().rows[t];if(i&&"boolean"==typeof e){this.hasVisibleRows&&-1!==this.visibleRows.indexOf(t)&&(e=!0);var n=e?"":p.NONE,s=e?"true":"false";i.style.display=n,this.paging&&i.setAttribute("validRow",s),e&&(-1===this.validRowsIndex.indexOf(t)&&this.validRowsIndex.push(t),this.onRowValidated(this,t),this.emitter.emit("row-validated",this,t))}}},{key:"validateAllRows",value:function(){if(this.initialized){this.validRowsIndex=[];for(var t=this.refRow;t1&&void 0!==arguments[1]?arguments[1]:"";if(this.fltGrid){var i=this.getFilterElement(t),n=this.getFilterType(t);if(n!==p.MULTIPLE&&n!==p.CHECKLIST)this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,t,this.linkedFilters,this.isExternalFlt),i.value=e;else if(n===p.MULTIPLE){var s=(0,l.isArray)(e)?e:e.split(" "+this.orOperator+" ");this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,t,this.linkedFilters,this.isExternalFlt),this.emitter.emit("select-options",this,t,s)}else if(n===p.CHECKLIST){var r=[];this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-checklist-filter",this,t,this.linkedFilters),(0,l.isArray)(e)?r=e:(e=(0,u.matchCase)(e,this.caseSensitive),r=e.split(" "+this.orOperator+" ")),this.emitter.emit("select-checklist-options",this,t,r)}}}},{key:"setColWidths",value:function(t){if(this.hasColWidths){t=t||this.dom();for(var e=this.nbCells,i=this.colWidths,n=(0,o.tag)(t,"col"),s=n.length>0,r=s?null:g.createDocumentFragment(),a=0;a0&&void 0!==arguments[0]?arguments[0]:"",e=t.split("_")[0];return e=e.split(this.prfxFlt)[1],parseInt(e,10)}},{key:"buildFilterId",value:function(t){return""+this.prfxFlt+t+"_"+this.id}},{key:"activateFilter",value:function(t){(0,l.isUndef)(t)||this.setActiveFilterId(this.getFilterId(t))}},{key:"linkFilters",value:function(){if(this.linkedFilters&&this.activeFilterId){var t=this.getFiltersByType(p.SELECT,!0),e=this.getFiltersByType(p.MULTIPLE,!0),i=this.getFiltersByType(p.CHECKLIST,!0),n=t.concat(e);n=n.concat(i);for(var s=this.getColumnIndexFromFilterId(this.activeFilterId),r=0,a=n.length;r1&&void 0!==arguments[1]?arguments[1]:"script",i=!1,n="script"===e?"src":"href",s=(0,o.tag)(g,e),r=0,a=s.length;r3&&void 0!==arguments[3]?arguments[3]:"script";if(!this.isImported(e,s)){var r=this,a=!1,u=void 0,l=(0,o.tag)(g,"head")[0];u="link"===s.toLowerCase()?(0,o.createElm)("link",["id",t],["type","text/css"],["rel","stylesheet"],["href",e]):(0,o.createElm)("script",["id",t],["type","text/javascript"],["src",e]),u.onload=u.onreadystatechange=function(){a||n.readyState&&"loaded"!==n.readyState&&"complete"!==n.readyState||(a=!0,"function"==typeof i&&i.call(null,r))},u.onerror=function(){throw new Error("TableFilter could not load: "+e)},l.appendChild(u)}}},{key:"isInitialized",value:function(){return this.initialized}},{key:"getFiltersId",value:function(){return this.fltIds||[]}},{key:"getValidRows",value:function(t){if(!t)return this.validRowsIndex;var e=this.getRowsNb(!0);this.validRowsIndex=[];for(var i=this.refRow;i1&&void 0!==arguments[1]?arguments[1]:[];if(0===this.colTypes.length)return!1;var i=this.colTypes[t];return(0,l.isObj)(i)&&(i=i.type),-1!==e.indexOf(i)}},{key:"getHeaderElement",value:function(t){var e=this.gridLayout?this.Mod.gridLayout.headTbl:this.dom(),i=(0,o.tag)(e,"thead"),n=this.getHeadersRowIndex(),s=void 0;return 0===i.length&&(s=e.rows[n].cells[t]),1===i.length&&(s=i[0].rows[n].cells[t]),s}},{key:"getHeadersText",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=[],i=0;i0&&void 0!==arguments[0]&&arguments[0];return this.getValidRows(t).length}},{key:"dom",value:function(){return this.tbl}},{key:"getDecimal",value:function(t){var e=this.decimalSeparator;if(this.hasType(t,[p.FORMATTED_NUMBER])){var i=this.colTypes[t];i.hasOwnProperty("decimal")&&(e=i.decimal)}return e}},{key:"config",value:function(){return this.cfg}}]),t}()},function(t,e){function i(t){return t.replace(/[^\u0000-\u007e]/g,function(t){return s[t]||t})}e.remove=i;for(var n=[{base:" ",chars:" "},{base:"0",chars:"߀"},{base:"A",chars:"ⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",chars:"Ꜳ"},{base:"AE",chars:"ÆǼǢ"},{base:"AO",chars:"Ꜵ"},{base:"AU",chars:"Ꜷ"},{base:"AV",chars:"ꜸꜺ"},{base:"AY",chars:"Ꜽ"},{base:"B",chars:"ⒷBḂḄḆɃƁ"},{base:"C",chars:"ⒸCꜾḈĆCĈĊČÇƇȻ"},{base:"D",chars:"ⒹDḊĎḌḐḒḎĐƊƉᴅꝹ"},{base:"Dh",chars:"Ð"},{base:"DZ",chars:"DZDŽ"},{base:"Dz",chars:"DzDž"},{base:"E",chars:"ɛⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎᴇ"},{base:"F",chars:"ꝼⒻFḞƑꝻ"},{base:"G",chars:"ⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾɢ"},{base:"H",chars:"ⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",chars:"ⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ"},{base:"J",chars:"ⒿJĴɈȷ"},{base:"K",chars:"ⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",chars:"ⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",chars:"LJ"},{base:"Lj",chars:"Lj"},{base:"M",chars:"ⓂMḾṀṂⱮƜϻ"},{base:"N",chars:"ꞤȠⓃNǸŃÑṄŇṆŅṊṈƝꞐᴎ"},{base:"NJ",chars:"NJ"},{base:"Nj",chars:"Nj"},{base:"O",chars:"ⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ"},{base:"OE",chars:"Œ"},{base:"OI",chars:"Ƣ"},{base:"OO",chars:"Ꝏ"},{base:"OU",chars:"Ȣ"},{base:"P",chars:"ⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",chars:"ⓆQꝖꝘɊ"},{base:"R",chars:"ⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",chars:"ⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",chars:"ⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"Th",chars:"Þ"},{base:"TZ",chars:"Ꜩ"},{base:"U",chars:"ⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",chars:"ⓋVṼṾƲꝞɅ"},{base:"VY",chars:"Ꝡ"},{base:"W",chars:"ⓌWẀẂŴẆẄẈⱲ"},{base:"X",chars:"ⓍXẊẌ"},{base:"Y",chars:"ⓎYỲÝŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",chars:"ⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",chars:"ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑ"},{base:"aa",chars:"ꜳ"},{base:"ae",chars:"æǽǣ"},{base:"ao",chars:"ꜵ"},{base:"au",chars:"ꜷ"},{base:"av",chars:"ꜹꜻ"},{base:"ay",chars:"ꜽ"},{base:"b",chars:"ⓑbḃḅḇƀƃɓƂ"},{base:"c",chars:"cⓒćĉċčçḉƈȼꜿↄ"},{base:"d",chars:"ⓓdḋďḍḑḓḏđƌɖɗƋᏧԁꞪ"},{base:"dh",chars:"ð"},{base:"dz",chars:"dzdž"},{base:"e",chars:"ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇǝ"},{base:"f",chars:"ⓕfḟƒ"},{base:"ff",chars:"ff"},{base:"fi",chars:"fi"},{base:"fl",chars:"fl"},{base:"ffi",chars:"ffi"},{base:"ffl",chars:"ffl"},{base:"g",chars:"ⓖgǵĝḡğġǧģǥɠꞡꝿᵹ"},{base:"h",chars:"ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",chars:"ƕ"},{base:"i",chars:"ⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı"},{base:"j",chars:"ⓙjĵǰɉ"},{base:"k",chars:"ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",chars:"ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇɭ"},{base:"lj",chars:"lj"},{base:"m",chars:"ⓜmḿṁṃɱɯ"},{base:"n",chars:"ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥлԉ"},{base:"nj",chars:"nj"},{base:"o",chars:"ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿꝋꝍɵɔᴑ"},{base:"oe",chars:"œ"},{base:"oi",chars:"ƣ"},{base:"oo",chars:"ꝏ"},{base:"ou",chars:"ȣ"},{base:"p",chars:"ⓟpṕṗƥᵽꝑꝓꝕρ"},{base:"q",chars:"ⓠqɋꝗꝙ"},{base:"r",chars:"ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",chars:"ⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛʂ"},{base:"ss",chars:"ß"},{base:"t",chars:"ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"th",chars:"þ"},{base:"tz",chars:"ꜩ"},{base:"u",chars:"ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",chars:"ⓥvṽṿʋꝟʌ"},{base:"vy",chars:"ꝡ"},{base:"w",chars:"ⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",chars:"ⓧxẋẍ"},{base:"y",chars:"ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ"},{base:"z",chars:"ⓩzźẑżžẓẕƶȥɀⱬꝣ"}],s={},r=0;ri){var s=e.slice(i,n);f(s,o),f(s,u),t.push(function(){return s})}}function l(t){return function(){return t}}function c(t,e,i){if(t&&!t(e,i))throw new TypeError("Invalid token "+(e||i)+" in format string")}function f(t,e){if(-1!==t.indexOf(e))throw new TypeError("Unmatched "+e+" in format string")}function h(t){var e,i=[],s=0;for(d.lastIndex=0;e=d.exec(t);)r(i,t,s,e.index),n(i,e),s=d.lastIndex;return r(i,t,s,t.length),i}var d=s,m=a(h);return function(t,e,i){for(var n=m(t),s="",r=0;r=11&&t<=13)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}t.exports=n},function(t,e,i){"use strict";function n(t,e){if(r(t,e))return e}var s=i(10),r=s.hasOwn;t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){var r,a=[];for(r in t)s(r)&&(i||(n?r<=e:r>=e))&&a.push(+r);return a.sort(function(t,i){var n=t>e;return n!==i>e?n?-1:1:t-i}),a}var s=i(142);t.exports=n},function(t,e,i){"use strict";function n(t){var e=Object.prototype;for(var i in t){var n=t[i];if(!r(t,i)&&n!==e[i])return!1}return!0}var s=i(10),r=s.hasOwn;t.exports=n},function(t,e,i){"use strict";function n(t){var e="toString"in t,i="constructor"in t;return!i&&!e||i&&!r(t,"constructor")&&r(t.constructor.prototype,"isPrototypeOf")}var s=i(10),r=s.hasOwn;t.exports=n},function(t,e,i){"use strict";function n(t){return t>>>0==t&&4294967295!=t}t.exports=n},function(t,e,i){"use strict";function n(t,e){return r(t)&&s(t,"Object",e)&&o(t)&&a(t)}var s=i(72),r=i(53),a=i(140),o=i(141);t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){for(var r,a=s(t,i,n),o=0,u=a.length;o1?(a(t,e,i),t):t[e]}}var s=i(154),r=i(10),a=r.setProperty;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i="";for(t=t.toString();e>0;)1&e&&(i+=t),(e>>=1)&&(t+=t);return i}t.exports=n},function(t,e,i){"use strict";function n(t,e){t.prototype.constructor=function(){return e.apply(this,arguments)}}t.exports=n},function(t,e,i){"use strict";function n(t){return t.trim()}t.exports=n},function(t,e,i){"use strict";function n(t){return function(e,i,n){e[t](i,n)}}t.exports=n},function(t,e,i){"use strict";t.exports=1e3},function(t,e,i){"use strict";t.exports="Boolean Number String Date RegExp Function Array Error Set Map"},function(t,e,i){"use strict";t.exports="_sugar_"},function(t,e,i){"use strict";t.exports=/([{}])\1|\{([^}]*)\}|(%)%|(%(\w*))/g},function(t,e,i){"use strict";var n,s,r,a=i(44),o=i(75),u=i(128),l=a.HALF_WIDTH_ZERO,c=a.FULL_WIDTH_ZERO,f=a.HALF_WIDTH_PERIOD,h=a.FULL_WIDTH_PERIOD,d=a.HALF_WIDTH_COMMA;!function(){var t=h,e=f,i=d,a="";s={};for(var m,p=0;p<=9;p++)m=o(p+c),a+=m,s[m]=o(p+l);s[i]="",s[t]=e,s[e]=e,n=u(a+t+i+e),r=a}(),t.exports={fullWidthNumberReg:n,fullWidthNumberMap:s,fullWidthNumbers:r}},function(t,e,i){"use strict";var n=i(151);t.exports={alias:n("alias"),defineStatic:n("defineStatic"),defineInstance:n("defineInstance"),defineStaticPolyfill:n("defineStaticPolyfill"),defineInstancePolyfill:n("defineInstancePolyfill"),defineInstanceAndStatic:n("defineInstanceAndStatic"),defineInstanceWithArguments:n("defineInstanceWithArguments")}},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addDays},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addHours},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addMilliseconds},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addMinutes},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addMonths},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addSeconds},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addWeeks},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.addYears},function(t,e,i){"use strict";var n=i(0),s=i(76);n.Date.defineInstanceWithArguments({advance:function(t,e){return s(t,e,1)}}),t.exports=n.Date.advance},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.beginningOfDay},function(t,e,i){"use strict";var n=i(0),s=i(92),r=i(20),a=i(24);n.Date.defineInstance({beginningOfISOWeek:function(t){var e=r(t);return 0===e?e=-6:1!==e&&(e=1),a(t,e),s(t)}}),t.exports=n.Date.beginningOfISOWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.beginningOfMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.beginningOfWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.beginningOfYear},function(t,e,i){"use strict";i(226)()},function(t,e,i){"use strict";var n=i(0),s=i(33);n.Date.defineInstance({clone:function(t){return s(t)}}),t.exports=n.Date.clone},function(t,e,i){"use strict";var n=i(0),s=i(28);i(172),n.Date.defineStatic({create:function(t,e){return s(t,e)}}),t.exports=n.Date.create},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.daysAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.daysFromNow},function(t,e,i){"use strict";var n=i(0),s=i(86);n.Date.defineInstance({daysInMonth:function(t){return s(t)}}),t.exports=n.Date.daysInMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.daysSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.daysUntil},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.endOfDay},function(t,e,i){"use strict";var n=i(0),s=i(5),r=i(20),a=i(24),o=i(48),u=s.DAY_INDEX;n.Date.defineInstance({endOfISOWeek:function(t){return 0!==r(t)&&a(t,7),o(t,u)}}),t.exports=n.Date.endOfISOWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.endOfMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.endOfWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.endOfYear},function(t,e,i){"use strict";var n=i(0),s=i(81);n.Date.defineInstance({format:function(t,e,i){return s(t,e,i)}}),t.exports=n.Date.format},function(t,e,i){"use strict";var n=i(0),s=i(80);n.Date.defineInstance({get:function(t,e,i){return s(t,e,i)}}),t.exports=n.Date.get},function(t,e,i){"use strict";var n=i(0),s=i(8),r=i(136),a=s.localeManager;n.Date.defineStatic({getAllLocaleCodes:function(){return r(a.getAll())}}),t.exports=n.Date.getAllLocaleCodes},function(t,e,i){"use strict";var n=i(0),s=i(8),r=s.localeManager;n.Date.defineStatic({getAllLocales:function(){return r.getAll()}}),t.exports=n.Date.getAllLocales},function(t,e,i){"use strict";var n=i(0),s=i(60);n.Date.defineInstance({getISOWeek:function(t){return s(t,!0)}}),t.exports=n.Date.getISOWeek},function(t,e,i){"use strict";var n=i(0),s=i(8),r=s.localeManager;n.Date.defineStatic({getLocale:function(t){return r.get(t,!t)}}),t.exports=n.Date.getLocale},function(t,e,i){"use strict";var n=i(0);i(64);t.exports=n.Date.getOption},function(t,e,i){"use strict";var n=i(0),s=i(89);n.Date.defineInstance({getUTCOffset:function(t,e){return s(t,e)}}),t.exports=n.Date.getUTCOffset},function(t,e,i){"use strict";var n=i(0);n.Date.defineInstance({getUTCWeekday:function(t){return t.getUTCDay()}}),t.exports=n.Date.getUTCWeekday},function(t,e,i){"use strict";var n=i(0),s=i(20);n.Date.defineInstance({getWeekday:function(t){return s(t)}}),t.exports=n.Date.getWeekday},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.hoursAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.hoursFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.hoursSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.hoursUntil},function(t,e,i){"use strict";i(4),i(174),i(187),i(188),i(190),i(275),i(284),i(324),i(325),i(326),i(327),i(328),i(329),i(330),i(331),i(332),i(333),i(334),i(335),i(336),i(337),i(338),i(339),i(340),i(341),i(342),i(343),i(344),i(345),i(346),i(347),i(348),i(349),i(350),i(351),i(352),i(353),i(354),i(355),i(356),i(357),i(358),i(359),i(360),i(361),i(362),i(363),i(364),i(365),i(366),i(367),i(368),i(369),i(370),i(371),i(372),i(373),i(374),i(375),i(376),i(377),i(378),i(379),i(380),i(381),i(382),i(383),i(384),i(385),i(386),i(387),i(388),i(389),i(390),i(391),i(392),i(393),i(394),i(395),i(396),i(397),i(398),i(399),i(400),i(401),i(402),i(403),i(404),i(158),i(159),i(160),i(161),i(162),i(163),i(164),i(165),i(166),i(167),i(168),i(169),i(170),i(171),i(173),i(175),i(176),i(177),i(178),i(179),i(180),i(181),i(182),i(183),i(184),i(185),i(186),i(189),i(192),i(193),i(194),i(195),i(196),i(197),i(198),i(229),i(230),i(231),i(232),i(233),i(234),i(235),i(236),i(237),i(238),i(239),i(240),i(241),i(242),i(243),i(244),i(245),i(246),i(247),i(248),i(249),i(250),i(251),i(252),i(253),i(254),i(255),i(256),i(257),i(258),i(259),i(260),i(261),i(262),i(263),i(264),i(265),i(266),i(267),i(268),i(269),i(270),i(271),i(273),i(274),i(276),i(277),i(278),i(279),i(280),i(281),i(282),i(283),i(286),i(287),i(298),i(299),i(300),i(301),i(302),i(303),i(304),i(305),i(191),i(285),t.exports=i(0)},function(t,e,i){"use strict";function n(t){var e=t.join("");return t&&t.length?e.length===t.length?"["+e+"]":s(t,r).join("|"):""}var s=i(73),r=i(134);t.exports=n},function(t,e,i){"use strict";function n(){h(g,s,function(t,e,i){var n=e.name,s=c(n);i>y&&a(["Last","This","Next"],function(e){t["is"+e+s]=function(t,i){return o(t,e+" "+n,0,i,{locale:"en"})}}),i>v&&(t["beginningOf"+s]=function(t,e){return d(t,i,e)},t["endOf"+s]=function(t,e){return l(t,i,e)}),t["add"+s+"s"]=function(t,e,i){return u(t,n,e,i)};var r=function(t,i,n){return p(t,m(t,i,n,!0),e)},f=function(t,i,n){return p(m(t,i,n,!0),t,e)};t[n+"sAgo"]=t[n+"sUntil"]=f,t[n+"sSince"]=t[n+"sFromNow"]=r})}var s=i(31),r=i(5),a=i(26),o=i(79),u=i(38),l=i(48),c=i(55),f=i(22),h=i(41),d=i(47),m=i(80),p=i(59),g=f.sugarDate,v=r.HOURS_INDEX,y=r.DAY_INDEX;t.exports=n},function(t,e,i){"use strict";function n(){l(c,s,function(t,e){var i,n,s,a=e.name;i=function(t){return f(t*e.multiplier)},n=function(t,e,i){return o(r(e,i,!0),a,t)},s=function(t,e,i){return o(r(e,i,!0),a,-t)},t[a]=i,t[a+"s"]=i,t[a+"Before"]=s,t[a+"sBefore"]=s,t[a+"Ago"]=s,t[a+"sAgo"]=s,t[a+"After"]=n,t[a+"sAfter"]=n,t[a+"FromNow"]=n,t[a+"sFromNow"]=n})}var s=i(31),r=i(28),a=i(7),o=i(38),u=i(22),l=i(41),c=u.sugarNumber,f=a.round;t.exports=n},function(t,e,i){"use strict";function n(){var t=r("Today Yesterday Tomorrow Weekday Weekend Future Past"),e=l.weekdays.slice(0,7),i=l.months.slice(0,12),n=t.concat(e).concat(i);u(c,n,function(t,e){t["is"+e]=function(t){return a(t,e)}})}var s=i(8),r=i(43),a=i(83),o=i(22),u=i(41),l=s.English,c=o.sugarDate;t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){"ISOWeek"===e?r(t,i):s(t,e,i,n)}var s=i(32),r=i(93);t.exports=n},function(t,e,i){"use strict";function n(t){var e={},i=0;return a(o,function(n){var s=t[i++];r(s)&&(e[n.name]=s)}),e}var s=i(5),r=i(27),a=i(94),o=s.YEAR_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=u();return e&&s(i,r(i)+e),a(t)===a(i)&&o(t)===o(i)&&r(t)===r(i)}var s=i(35),r=i(34),a=i(30),o=i(29),u=i(40);t.exports=n},function(t,e,i){"use strict";function n(){return new Date}t.exports=n},function(t,e,i){"use strict";function n(t,e){delete t[s(t,e)]}var s=i(85);t.exports=n},function(t,e,i){"use strict";function n(t,e){var i;return e||(e=s(),t>e&&(e=new Date(e.getTime()-10))),i=t-e,a(i,function(i){return u(o(t,e,i))})}var s=i(40),r=i(7),a=i(84),o=i(59),u=r.abs;t.exports=n},function(t,e,i){"use strict";function n(t){return a(t,function(e){return s(r(t/e.multiplier,1))})}var s=i(23),r=i(74),a=i(84);t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){var s;return i>1&&(s=t[e+(i-1)*n]),s||t[e]}t.exports=n},function(t,e,i){"use strict";function n(t,e){return a(t,s(t,e))}var s=i(85),r=i(10),a=r.getOwn;t.exports=n},function(t,e,i){"use strict";function n(t){var e,i,n={};return e=t.match(/^(-?\d*[\d.]\d*)?\s?(\w+?)s?$/i),e&&(s(i)&&(i=+e[1],isNaN(i)&&(i=1)),n[e[2].toLowerCase()]=i),n}var s=i(37);t.exports=n},function(t,e,i){"use strict";function n(t,e){return a(t,e,s[o])}var s=i(31),r=i(5),a=i(59),o=r.DAY_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t){return t===r?a:t+1}var s=i(5),r=s.DAY_INDEX,a=s.MONTH_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=a(t);return o.get(e).ampm[r(i/12)]||""}var s=i(8),r=i(23),a=i(87),o=s.localeManager;t.exports=n},function(t,e,i){"use strict";function n(t){function e(t){this.init(t)}return e.prototype={getMonthName:function(t,e){return this.monthSuffix?t+1+this.monthSuffix:w(this.months,t,e,12)},getWeekdayName:function(t,e){return w(this.weekdays,t,e,7)},getTokenValue:function(t,e){var i,n=this[t+"Map"];return n&&(i=n[e]),p(i)&&(i=this.getNumber(e),"month"===t&&(i-=1)),i},getNumber:function(t){var e=this.numeralMap[t];return h(e)?e:(e=+t.replace(/,/,"."),isNaN(e)?(e=this.getNumeralValue(t),isNaN(e)?e:(this.numeralMap[t]=e,e)):e)},getNumeralValue:function(t){var e,i,n,s,r,a=1,o=0;r=t.split("");for(var u=r.length-1;n=r[u];u--)s=O(this.numeralMap,n),p(s)&&(s=O(F,n)||0),i=s>0&&s%10==0,i?(e&&(o+=a),u?a=s:o+=s):(o+=s*a,a*=10),e=i;return o},getOrdinal:function(t){return this.ordinalSuffix||y(t)},getRelativeFormat:function(t,e){return this.convertAdjustedToFormat(t,e)},getDuration:function(t){return this.convertAdjustedToFormat(E(I(0,t)),"duration")},getFirstDayOfWeek:function(){var t=this.firstDayOfWeek;return h(t)?t:D},getFirstDayOfWeekYear:function(){return this.firstDayOfWeekYear||R},convertAdjustedToFormat:function(t,e){var i,n,s,r=t[0],a=t[1],o=t[2],u=this[e]||this.relative;return A(u)?u.call(this,r,a,o,e):(s=this.plural&&1!==r?1:0,n=this.units[8*s+a]||this.units[a],i=this[o>0?"fromNow":"ago"],u.replace(/\{(.*?)\}/g,function(t,e){switch(e){case"num":return r;case"unit":return n;case"sign":return i}}))},cacheFormat:function(t,e){this.compiledFormats.splice(e,1),this.compiledFormats.unshift(t)},addFormat:function(t,e){function i(t){var i,r,o,u=t.match(/\?$/),l=t.match(/^(\d+)\??$/),f=t.match(/(\d)(?:-(\d))?/),h=t.replace(/[^a-z]+$/i,"");return(o=O(s.parsingAliases,h))?(r=n(o),u&&(r=b(r,!0)),r):(l?r=s.tokens[l[1]]:(o=O(a,h))?r=o.src:(o=O(s.parsingTokens,h)||O(s,h),h=h.replace(/s$/,""),o||(o=O(s.parsingTokens,h)||O(s,h+"s")),M(o)?(r=o,i=s[h+"Suffix"]):(f&&(o=c(o,function(t,e){var i=e%(s.units?8:o.length);return i>=f[1]&&i<=(f[2]||f[1])})),r=k(o))),r?(l?r=b(r):(e.push(h),r="("+r+")"),i&&(r=T(h,r,i)),u&&(r+="?"),r):"")}function n(t){return t=t.replace(/ /g," ?"),t.replace(/\{([^,]+?)\}/g,function(t,e){var n=e.split("|");return n.length>1?b(l(n,i).join("|")):i(e)})}var s=this;e||(e=[],t=n(t)),s.addRawFormat(t,e)},addRawFormat:function(t,e){this.compiledFormats.unshift({reg:RegExp("^ *"+t+" *$","i"),to:e})},init:function(t){function e(t,e,n,s){var r,a=t,o=[];y[a]||(a+="s"),n||(n={},r=!0),i(a,function(t,i,r){var a,u=i*e+r;a=s?s(r):r,n[t]=a,n[t.toLowerCase()]=a,o[u]=t}),y[a]=o,r&&(y[t+"Map"]=n)}function i(t,e){f(y[t],function(t,i){n(t,function(t,n){e(t,n,i)})})}function n(t,e){var i=l(t.split("+"),function(t){return t.replace(/(.+):(.+)$/,function(t,e,i){return l(i.split("|"),function(t){return e+t}).join("|")})}).join("|");f(i.split("|"),e)}function r(){return y.ampmFront?"{ampm?} {hour} (?:{minute} (?::?{second})?)?":y.ampm.length?"{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})":"{hour}(?:[.:]{minute}(?:[.:]{second})?)"}function c(){var t,e="";return t=y.numerals.concat(y.placeholders).concat(y.articles),y.allowsFullWidth&&(t=t.concat(S.split(""))),t.length&&(e="|(?:"+k(t)+")+"),e}function h(t,e,i){f(y[t],function(t){e&&(t=m(t,i)),y.addFormat(t)})}function m(t,e){return e?p()+t:t+g()}function p(){return b("{time}[,\\s\\u3000]",!0)}function g(){var t,e=",?[\\s\\u3000]";return t=k(y.timeMarkers),t&&(e+="| (?:"+t+") "),e=b(e,y.timeMarkerOptional),b(e+"{time}",!0)}var y=this;!function(){y.compiledFormats=[],y.parsingAliases={},y.parsingTokens={}}(),function(){v(y,t)}(),function(){f(s,function(t){var e=y[t];M(e)?y[t]=d(e):e||(y[t]=[])})}(),e("month",12),e("weekday",7),e("unit",8),e("ampm",2),function(){var t={};e("numeral",10,t),e("article",1,t,function(){return 1}),e("placeholder",4,t,function(t){return P(10,t+1)}),y.numeralMap=t}(),function(){y.parsingAliases.time=r(),y.parsingAliases.tzOffset="(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\([\\w\\s]+\\))?)?)?)?"}(),function(){N(u,function(t,e){var i,n;i=t.base?a[t.base].src:t.src,(t.requiresNumerals||y.numeralUnits)&&(i+=c()),n=y[e+"s"],n&&n.length&&(i+="|"+k(n)),y.parsingTokens[e]=i})}(),function(){x(function(t,e){var i=y.timeSuffixes[e];i&&(y[(t.alias||t.name)+"Suffix"]=i)})}(),function(){f(y.modifiers,function(t){var e,i=t.name,s=i+"Map";e=y[s]||{},n(t.src,function(n,s){var r=O(y.parsingTokens,i),a=t.value;e[n]=a,y.parsingTokens[i]=r?r+"|"+n:n,"sign"===t.name&&0===s&&(y[1===a?"fromNow":"ago"]=n)}),y[s]=e})}(),function(){f(o,function(t){var e=t.src;t.mdy&&y.mdy&&(e=t.mdy),t.time?(y.addFormat(m(e,!0)),y.addFormat(m(e))):y.addFormat(e)}),y.addFormat("{time}")}(),function(){h("parse"),h("timeParse",!0),h("timeFrontParse",!0,!0)}()}},new e(t)}var s=i(294),r=i(63),a=i(99),o=i(290),u=i(97),l=i(73),c=i(135),f=i(26),h=i(27),d=i(130),m=i(3),p=i(37),g=i(7),v=i(56),y=i(137),b=i(88),_=i(10),w=i(211),x=i(61),k=i(200),C=i(156),E=i(210),T=i(219),O=_.getOwn,N=_.forEachProperty,F=C.fullWidthNumberMap,S=C.fullWidthNumbers,P=g.pow,I=g.max,D=r.ISO_FIRST_DAY_OF_WEEK,R=r.ISO_FIRST_DAY_OF_WEEK_YEAR,M=m.isString,A=m.isFunction;t.exports=n},function(t,e,i){"use strict";function n(t,e){var i;return i=t.val?t.val:t.sign?"+"===e?1:-1:t.bool?!!i:+e.replace(/,/,"."),"month"===t.param&&(i-=1),i}t.exports=n},function(t,e,i){"use strict";function n(t,e,i){var n=s[t];return n.requiresSuffix?e=r(e+r(i)):n.requiresSuffixOr?e+=r(n.requiresSuffixOr+"|"+i):e+=r(i,!0),e}var s=i(97),r=i(88);t.exports=n},function(t,e,i){"use strict";function n(t){var e,i={};return i[t]=1,s(i,function(t,i,n,s){return e=s,!1}),e}var s=i(46);t.exports=n},function(t,e,i){"use strict";function n(t,e,i){var n,s,l,c,f,h;return n=r(t),s=a(t),0!==s&&11!==s||(i||(h=u.get(e),l=h.getFirstDayOfWeek(e),c=h.getFirstDayOfWeekYear(e)),f=o(t,!1,l,c),0===s&&0===f?n-=1:11===s&&1===f&&(n+=1)),n}var s=i(8),r=i(30),a=i(29),o=i(60),u=s.localeManager;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){var n,r=+t;return r+=r<50?2e3:1900,i&&(n=r-s(e))/a(n)!==i&&(r+=100*i),r}var s=i(30),r=i(7),a=r.abs;t.exports=n},function(t,e,i){"use strict";function n(t){return!!s(t)||0===r(t)}var s=i(21),r=i(49);t.exports=n},function(t,e,i){"use strict";function n(t,e){r(t,e,o,a)}var s=i(5),r=i(46),a=s.DAY_INDEX,o=s.YEAR_INDEX;t.exports=n},function(t,e,i){"use strict";function n(t,e){return r(t,s(e))}var s=i(39),r=i(36);t.exports=n},function(t,e,i){"use strict";function n(){a(o,s)}var s=i(28),r=i(22),a=i(149),o=r.sugarDate;t.exports=n},function(t,e,i){"use strict";function n(t,e){s(t,"Month",e)}var s=i(32);t.exports=n},function(t,e,i){"use strict";function n(t,e){s(t,"FullYear",e)}var s=i(32);t.exports=n},function(t,e,i){"use strict";var n=i(0),s=i(83);n.Date.defineInstance({is:function(t,e,i){return s(t,e,i)}}),t.exports=n.Date.is},function(t,e,i){"use strict";var n=i(0),s=i(28);n.Date.defineInstance({isAfter:function(t,e,i){return t.getTime()>s(e).getTime()-(i||0)}}),t.exports=n.Date.isAfter},function(t,e,i){"use strict";var n=i(0),s=i(28);n.Date.defineInstance({isBefore:function(t,e,i){return t.getTime()=r}}),t.exports=n.Date.isBetween},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isFriday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isFuture},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isLastMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isLastWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isLastYear},function(t,e,i){"use strict";var n=i(0),s=i(30);n.Date.defineInstance({isLeapYear:function(t){var e=s(t);return e%4==0&&e%100!=0||e%400==0}}),t.exports=n.Date.isLeapYear},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isMonday},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isNextMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isNextWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isNextYear},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isPast},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isSaturday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isSunday},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isThisMonth},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isThisWeek},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.isThisYear},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isThursday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isToday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isTomorrow},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isTuesday},function(t,e,i){"use strict";var n=i(0),s=i(223);n.Date.defineInstance({isUTC:function(t){return s(t)}}),t.exports=n.Date.isUTC},function(t,e,i){"use strict";var n=i(0),s=i(45);n.Date.defineInstance({isValid:function(t){return s(t)}}),t.exports=n.Date.isValid},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isWednesday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isWeekday},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isWeekend},function(t,e,i){"use strict";var n=i(0);i(12),t.exports=n.Date.isYesterday},function(t,e,i){"use strict";var n=i(0);n.Date.defineInstance({iso:function(t){return t.toISOString()}}),t.exports=n.Date.iso},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.millisecondsAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.millisecondsFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.millisecondsSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.millisecondsUntil},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.minutesAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.minutesFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.minutesSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.minutesUntil},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.monthsAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.monthsFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.monthsSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.monthsUntil},function(t,e,i){"use strict";var n=i(0),s=i(433);n.Date.defineStatic({range:s}),t.exports=n.Date.range},function(t,e,i){"use strict";var n=i(0),s=i(82);n.Date.defineInstance({relative:function(t,e,i){return s(t,null,e,i)}}),t.exports=n.Date.relative},function(t,e,i){"use strict";var n=i(0),s=i(28),r=i(82);n.Date.defineInstance({relativeTo:function(t,e,i){return r(t,s(e),i)}}),t.exports=n.Date.relativeTo},function(t,e,i){"use strict";var n=i(0),s=i(8),r=s.localeManager;n.Date.defineStatic({removeLocale:function(t){return r.remove(t)}}),t.exports=n.Date.removeLocale},function(t,e,i){"use strict";var n=i(0),s=i(5),r=i(47),a=i(220),o=s.DAY_INDEX;n.Date.defineInstance({reset:function(t,e,i){var n=e?a(e):o;return r(t,n,i),t}}),t.exports=n.Date.reset},function(t,e,i){"use strict";var n=i(0),s=i(76);n.Date.defineInstanceWithArguments({rewind:function(t,e){return s(t,e,-1)}}),t.exports=n.Date.rewind},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.secondsAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.secondsFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.secondsSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.secondsUntil},function(t,e,i){"use strict";var n=i(0),s=i(50),r=i(78);n.Date.defineInstanceWithArguments({set:function(t,e){return e=r(e),s(t,e[0],e[1])}}),t.exports=n.Date.set},function(t,e,i){"use strict";var n=i(0),s=i(93);n.Date.defineInstance({setISOWeek:function(t,e){return s(t,e)}}),t.exports=n.Date.setISOWeek},function(t,e,i){"use strict";var n=i(0),s=i(8),r=s.localeManager;n.Date.defineStatic({setLocale:function(t){return r.set(t)}}),t.exports=n.Date.setLocale},function(t,e,i){"use strict";var n=i(0);i(64);t.exports=n.Date.setOption},function(t,e,i){"use strict";var n=i(0),s=i(21);n.Date.defineInstance({setUTC:function(t,e){return s(t,e)}}),t.exports=n.Date.setUTC},function(t,e,i){"use strict";var n=i(0),s=i(24);n.Date.defineInstance({setWeekday:function(t,e){return s(t,e)}}),t.exports=n.Date.setWeekday},function(t,e,i){"use strict";var n=i(57),s=n({short:"{dd}/{MM}/{yyyy}",medium:"{d} {Month} {yyyy}",long:"{d} {Month} {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});t.exports=s},function(t,e,i){"use strict";var n=i(57),s=n({short:"{yyyy}-{MM}-{dd}",medium:"{d} {Month}, {yyyy}",long:"{d} {Month}, {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});t.exports=s},function(t,e,i){"use strict";var n=[{src:"{MM}[-.\\/]{yyyy}"},{time:!0,src:"{dd}[-.\\/]{MM}(?:[-.\\/]{yyyy|yy|y})?",mdy:"{MM}[-.\\/]{dd}(?:[-.\\/]{yyyy|yy|y})?"},{time:!0,src:"{yyyy}[-.\\/]{MM}(?:[-.\\/]{dd})?"},{src:"\\\\/Date\\({timestamp}(?:[+-]\\d{4,4})?\\)\\\\/"},{src:"{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}"}];t.exports=n},function(t,e,i){"use strict";var n=i(207),s={newDateInternal:n};t.exports=s},function(t,e,i){"use strict";var n={code:"en",plural:!0,timeMarkers:"at",ampm:"AM|A.M.|a,PM|P.M.|p",units:"millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s",months:"Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|",weekdays:"Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend",numerals:"zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th",articles:"a,an,the",tokens:"the,st|nd|rd|th,of|in,a|an,on",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",modifiers:[{name:"half",src:"half",value:.5},{name:"midday",src:"noon",value:12},{name:"midday",src:"midnight",value:24},{name:"day",src:"yesterday",value:-1},{name:"day",src:"today|tonight",value:0},{name:"day",src:"tomorrow",value:1},{name:"sign",src:"ago|before",value:-1},{name:"sign",src:"from now|after|from|in|later",value:1},{name:"edge",src:"first day|first|beginning",value:-2},{name:"edge",src:"last day",value:1},{name:"edge",src:"end|last",value:2},{name:"shift",src:"last",value:-1},{name:"shift",src:"the|this",value:0},{name:"shift",src:"next",value:1}],parse:["(?:just)? now","{shift} {unit:5-7}","{months?} (?:{year}|'{yy})","{midday} {4?} {day|weekday}","{months},?(?:[-.\\/\\s]{year})?","{edge} of (?:day)? {day|weekday}","{0} {num}{1?} {weekday} {2} {months},? {year?}","{shift?} {day?} {weekday?} {timeMarker?} {midday}","{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}","{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{0?} {date}{1?} {2?} {months?}","{weekday} {2?} {shift} {unit:5}","{0?} {num} {2?} {months}\\.?,? {year?}","{num?} {unit:4-5} {sign} {day|weekday}","{year}[-.\\/\\s]{months}[-.\\/\\s]{date}","{0|months} {date?}{1?} of {shift} {unit:6-7}","{0?} {num}{1?} {weekday} of {shift} {unit:6}","{date}[-.\\/\\s]{months}[-.\\/\\s](?:{year}|'?{yy})","{weekday?}\\.?,? {months}\\.?,? {date}{1?},? (?:{year}|'{yy})?"],timeFrontParse:["{sign} {num} {unit}","{num} {unit} {sign}","{4?} {day|weekday}"]};t.exports=n},function(t,e,i){"use strict";var n=i(296),s=i(8),r=i(5),a=i(23),o=i(34),u=i(30),l=i(87),c=i(29),f=i(33),h=i(54),d=i(20),m=i(18),p=i(7),g=i(221),v=i(89),y=i(214),b=i(60),_=i(216),w=i(36),x=s.localeManager,k=r.MONTH_INDEX,C=p.ceil,E=[{ldml:"Dow",strf:"a",lowerToken:"dow",get:function(t,e){return x.get(e).getWeekdayName(d(t),2)}},{ldml:"Weekday",strf:"A",lowerToken:"weekday",allowAlternates:!0,get:function(t,e,i){return x.get(e).getWeekdayName(d(t),i)}},{ldml:"Mon",strf:"b h",lowerToken:"mon",get:function(t,e){return x.get(e).getMonthName(c(t),2)}},{ldml:"Month",strf:"B",lowerToken:"month",allowAlternates:!0,get:function(t,e,i){return x.get(e).getMonthName(c(t),i)}},{strf:"C",get:function(t){return u(t).toString().slice(0,2)}},{ldml:"d date day",strf:"d",strfPadding:2,ldmlPaddedToken:"dd",ordinalToken:"do",get:function(t){return o(t)}},{strf:"e",get:function(t){return h(o(t),2,!1,10," ")}},{ldml:"H 24hr",strf:"H",strfPadding:2,ldmlPaddedToken:"HH",get:function(t){return l(t)}},{ldml:"h hours 12hr",strf:"I",strfPadding:2,ldmlPaddedToken:"hh",get:function(t){return l(t)%12||12}},{ldml:"D",strf:"j",strfPadding:3,ldmlPaddedToken:"DDD",get:function(t){var e=w(f(t),k);return y(t,e)+1}},{ldml:"M",strf:"m",strfPadding:2,ordinalToken:"Mo",ldmlPaddedToken:"MM",get:function(t){return c(t)+1}},{ldml:"m minutes",strf:"M",strfPadding:2,ldmlPaddedToken:"mm",get:function(t){return m(t,"Minutes")}},{ldml:"Q",get:function(t){return C((c(t)+1)/3)}},{ldml:"TT",strf:"p",get:function(t,e){return _(t,e)}},{ldml:"tt",strf:"P",get:function(t,e){return _(t,e).toLowerCase()}},{ldml:"T",lowerToken:"t",get:function(t,e){return _(t,e).charAt(0)}},{ldml:"s seconds",strf:"S",strfPadding:2,ldmlPaddedToken:"ss",get:function(t){return m(t,"Seconds")}},{ldml:"S ms",strfPadding:3,ldmlPaddedToken:"SSS",get:function(t){return m(t,"Milliseconds")}},{ldml:"e",strf:"u",ordinalToken:"eo",get:function(t){return d(t)||7}},{strf:"U",strfPadding:2,get:function(t){return b(t,!1,0)}},{ldml:"W",strf:"V",strfPadding:2,ordinalToken:"Wo",ldmlPaddedToken:"WW",get:function(t){return b(t,!0)}},{strf:"w",get:function(t){return d(t)}},{ldml:"w",ordinalToken:"wo",ldmlPaddedToken:"ww",get:function(t,e){var i=x.get(e),n=i.getFirstDayOfWeek(e),s=i.getFirstDayOfWeekYear(e);return b(t,!0,n,s)}},{strf:"W",strfPadding:2,get:function(t){return b(t,!1)}},{ldmlPaddedToken:"gggg",ldmlTwoDigitToken:"gg",get:function(t,e){return g(t,e)}},{strf:"G",strfPadding:4,strfTwoDigitToken:"g",ldmlPaddedToken:"GGGG",ldmlTwoDigitToken:"GG",get:function(t,e){return g(t,e,!0)}},{ldml:"year",ldmlPaddedToken:"yyyy",ldmlTwoDigitToken:"yy",strf:"Y",strfPadding:4,strfTwoDigitToken:"y",get:function(t){return u(t)}},{ldml:"ZZ",strf:"z",get:function(t){return v(t)}},{ldml:"X",get:function(t){return a(t.getTime()/1e3)}},{ldml:"x",get:function(t){return t.getTime()}},{ldml:"Z",get:function(t){return v(t,!0)}},{ldml:"z",strf:"Z",get:function(t){var e=t.toString().match(n);return e?e[1]:""}},{strf:"D",alias:"%m/%d/%y"},{strf:"F",alias:"%Y-%m-%d"},{strf:"r",alias:"%I:%M:%S %p"},{strf:"R",alias:"%H:%M"},{strf:"T",alias:"%H:%M:%S"},{strf:"x",alias:"{short}"},{strf:"X",alias:"{time}"},{strf:"c",alias:"{stamp}"}];t.exports=E},function(t,e,i){"use strict";var n=["months","weekdays","units","numerals","placeholders","articles","tokens","timeMarkers","ampm","timeSuffixes","parse","timeParse","timeFrontParse","modifiers"];t.exports=n},function(t,e,i){"use strict";var n=i(288),s=i(95),r=i(289),a={"en-US":s,"en-GB":n,"en-AU":n,"en-CA":r};t.exports=a},function(t,e,i){"use strict";t.exports=/(\w{3})[()\s\d]*$/},function(t,e,i){"use strict";var n,s,r,a=i(8),o=i(293),u=i(96),l=i(26),c=i(54),f=i(43),h=i(22),d=i(10),m=i(131),p=i(41),g=a.localeManager,v=d.hasOwn,y=d.getOwn,b=d.forEachProperty,_=h.sugarDate;!function(){function t(t,e,i){e&&l(f(e),function(e){t[e]=i})}function e(t){return function(e,i){return t(e,i).toLowerCase()}}function i(t){return function(e,i){var n=t(e,i);return n+g.get(i).getOrdinal(n)}}function a(t,e){return function(i,n){return c(t(i,n),e)}}function h(t){return function(e,i){return t(e,i)%100}}function d(t){return function(e,i){return r(t,e,i)}}function m(t){for(var e=1;e<=5;e++)v(t,e)}function v(i,s){var r=function(t,e){return i.get(t,e,s)};t(n,i.ldml+s,r),i.lowerToken&&(n[i.lowerToken+s]=e(r))}function y(t){return function(e,i){var n=g.get(i);return r(n[t],e,i)}}n={},s={},l(o,function(r){var o,u=r.get;r.lowerToken&&(n[r.lowerToken]=e(u)),r.ordinalToken&&(n[r.ordinalToken]=i(u)),r.ldmlPaddedToken&&(n[r.ldmlPaddedToken]=a(u,r.ldmlPaddedToken.length)),r.ldmlTwoDigitToken&&(n[r.ldmlTwoDigitToken]=a(h(u),2)),r.strfTwoDigitToken&&(s[r.strfTwoDigitToken]=a(h(u),2)),r.strfPadding&&(o=a(u,r.strfPadding)),r.alias&&(u=d(r.alias)),r.allowAlternates&&m(r),t(n,r.ldml,u),t(s,r.strf,o||u)}),b(u,function(e,i){t(n,i,d(e))}),p(_,"short medium long full",function(e,i){var s=y(i);t(n,i,s),e[i]=s}),t(n,"time",y("time")),t(n,"stamp",y("stamp"))}(),function(){function t(t,e,i){return y(n,e)(t,i)}function e(t,e,i){return y(s,e)(t,i)}function i(t,e){return v(n,t)||v(s,e)}r=m(t,e,i)}(),t.exports={ldmlTokens:n,strfTokens:s,dateFormatMatcher:r}},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.weeksAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.weeksFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.weeksSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.weeksUntil},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.yearsAgo},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.yearsFromNow},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.yearsSince},function(t,e,i){"use strict";var n=i(0);i(2),t.exports=n.Date.yearsUntil},function(t,e,i){"use strict";i(4)("ca",{plural:!0,units:"milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s",months:"gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|",weekdays:"diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds",numerals:"zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"abans d'ahir",value:-2},{name:"day",src:"ahir",value:-1},{name:"day",src:"avui",value:0},{name:"day",src:"demà|dema",value:1},{name:"sign",src:"fa",value:-1},{name:"sign",src:"en",value:1},{name:"shift",src:"passat",value:-1},{name:"shift",src:"el proper|la propera",value:1}],parse:["{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift} {weekday}","{weekday} {shift}","{date?} {2?} {months}\\.? {2?} {year?}"]})},function(t,e,i){"use strict";i(4)("da",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|",numerals:"nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti",tokens:"den,for",articles:"den",short:"{dd}-{MM}-{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} {time}",full:"{weekday} d. {d}. {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i sidste|sidste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"næste|naeste",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{date} {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{0?} {weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("de",{plural:!0,units:"Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e",months:"Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|",weekdays:"So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|",numerals:"null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn",tokens:"der",short:"{dd}.{MM}.{yyyy}",medium:"{d}. {Month} {yyyy}",long:"{d}. {Month} {yyyy} {time}",full:"{Weekday}, {d}. {Month} {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"um",ampm:"am,pm",modifiers:[{name:"day",src:"vorgestern",value:-2},{name:"day",src:"gestern",value:-1},{name:"day",src:"heute",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"übermorgen|ubermorgen|uebermorgen",value:2},{name:"sign",src:"vor:|her",value:-1},{name:"sign",src:"in",value:1},{name:"shift",src:"letzte:|r|n|s",value:-1},{name:"shift",src:"nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("es",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos",months:"ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|",weekdays:"dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|",numerals:"cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{weekday}, {d} de {month} de {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"anteayer",value:-2},{name:"day",src:"ayer",value:-1},{name:"day",src:"hoy",value:0},{name:"day",src:"mañana|manana",value:1},{name:"sign",src:"hace",value:-1},{name:"sign",src:"dentro de",value:1},{name:"shift",src:"pasad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {2?} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"],timeFrontParse:["{shift?} {weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"]})},function(t,e,i){"use strict";i(4)("fi",{plural:!0,units:"millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna",months:"tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu",weekdays:"su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina",numerals:"nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s",short:"{d}.{M}.{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} klo {time}",full:"{weekday} {d}. {month} {yyyy} klo {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}.{mm}",timeMarkers:"klo,kello",ordinalSuffix:".",relative:function(t,e,i,n){function s(i){return t+" "+a[8*i+e]}function r(){return s(1===t?0:1)}var a=this.units;switch(n){case"duration":return r();case"past":return r()+" sitten";case"future":return s(2)+" kuluttua"}},modifiers:[{name:"day",src:"toissa päivänä",value:-2},{name:"day",src:"eilen|eilistä",value:-1},{name:"day",src:"tänään",value:0},{name:"day",src:"huomenna|huomista",value:1},{name:"day",src:"ylihuomenna|ylihuomista",value:2},{name:"sign",src:"sitten|aiemmin",value:-1},{name:"sign",src:"päästä|kuluttua|myöhemmin",value:1},{name:"edge",src:"lopussa",value:2},{name:"edge",src:"ensimmäinen|ensimmäisenä",value:-2},{name:"shift",src:"edel:linen|lisenä",value:-1},{name:"shift",src:"viime",value:-1},{name:"shift",src:"tä:llä|ssä|nä|mä",value:0},{name:"shift",src:"seuraava|seuraavana|tuleva|tulevana|ensi",value:1}],parse:["{months} {year?}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{num?} {unit} {sign}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("fr",{plural:!0,units:"milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee",months:"janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|",weekdays:"dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|",numerals:"zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix",tokens:"l'|la|le,er",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"à",ampm:"am,pm",modifiers:[{name:"day",src:"hier",value:-1},{name:"day",src:"aujourd'hui",value:0},{name:"day",src:"demain",value:1},{name:"sign",src:"il y a",value:-1},{name:"sign",src:"dans|d'ici",value:1},{name:"shift",src:"derni:èr|er|ère|ere",value:-1},{name:"shift",src:"prochain:|e",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}"],timeParse:["{day|weekday} {shift?}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"],timeFrontParse:["{0?} {weekday} {shift}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"]})},function(t,e,i){"use strict";i(306),i(307),i(308),i(309),i(310),i(311),i(313),i(314),i(315),i(316),i(317),i(318),i(319),i(320),i(321),i(322),i(323),t.exports=i(0)},function(t,e,i){"use strict";i(4)("it",{plural:!0,units:"millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i",months:"gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|",weekdays:"dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|",numerals:"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci",tokens:"l'|la|il",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"alle",ampm:"am,pm",modifiers:[{name:"day",src:"ieri",value:-1},{name:"day",src:"oggi",value:0},{name:"day",src:"domani",value:1},{name:"day",src:"dopodomani",value:2},{name:"sign",src:"fa",value:-1},{name:"sign",src:"da adesso",value:1},{name:"shift",src:"scors:o|a",value:-1},{name:"shift",src:"prossim:o|a",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("ja",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,firstDayOfWeek:0,firstDayOfWeekYear:1,units:"ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度",weekdays:"日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",timeSuffixes:",秒,分,時,日,,月,年度?",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{time} {weekday}",stamp:"{yyyy}年{M}月{d}日 {H}:{mm} {dow}",time:"{tt}{h}時{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",ampm:"午前,午後",modifiers:[{name:"day",src:"一昨々日|前々々日",value:-3},{name:"day",src:"一昨日|おととい|前々日",value:-2},{name:"day",src:"昨日|前日",value:-1},{name:"day",src:"今日|当日|本日",value:0},{name:"day",src:"明日|翌日|次日",value:1},{name:"day",src:"明後日|翌々日",value:2},{name:"day",src:"明々後日|翌々々日",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"edge",src:"始|初日|頭",value:-2},{name:"edge",src:"末|尻",value:2},{name:"edge",src:"末日",value:1},{name:"shift",src:"一昨々|前々々",value:-3},{name:"shift",src:"一昨|前々|先々",value:-2},{name:"shift",src:"先|昨|去|前",value:-1},{name:"shift",src:"今|本|当",value:0},{name:"shift",src:"来|明|翌|次",value:1},{name:"shift",src:"明後|翌々|次々|再来|さ来",value:2},{name:"shift",src:"明々後|翌々々",value:3}],parse:["{month}{edge}","{num}{unit}{sign}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{unit:5}{weekday?}","{shift}{unit:7}{month}{edge}","{shift}{unit:7}{month?}{date?}","{shift}{unit:6}{edge?}{date?}","{year?}{month?}{date}"]})},function(t,e,i){"use strict";i(4)("ko",{ampmFront:!0,numeralUnits:!0,units:"밀리초,초,분,시간,일,주,개월|달,년|해",weekdays:"일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|",numerals:"영|제로,일|한,이,삼,사,오,육,칠,팔,구,십",short:"{yyyy}.{MM}.{dd}",medium:"{yyyy}년 {M}월 {d}일",long:"{yyyy}년 {M}월 {d}일 {time}",full:"{yyyy}년 {M}월 {d}일 {weekday} {time}",stamp:"{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}",time:"{tt} {h}시 {mm}분",past:"{num}{unit} {sign}",future:"{num}{unit} {sign}",duration:"{num}{unit}",timeSuffixes:",초,분,시,일,,월,년",ampm:"오전,오후",modifiers:[{name:"day",src:"그저께",value:-2},{name:"day",src:"어제",value:-1},{name:"day",src:"오늘",value:0},{name:"day",src:"내일",value:1},{name:"day",src:"모레",value:2},{name:"sign",src:"전",value:-1},{name:"sign",src:"후",value:1},{name:"shift",src:"지난|작",value:-1},{name:"shift",src:"이번|올",value:0},{name:"shift",src:"다음|내",value:1}],parse:["{num}{unit} {sign}","{shift?} {unit:5-7}","{year?} {month}","{year}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{year?} {month?} {date} {weekday?}"]})},function(t,e,i){"use strict";i(4)("nl",{plural:!0,units:"milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar",months:"jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za",numerals:"nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien",short:"{dd}-{MM}-{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {Month} {yyyy} {time}",full:"{weekday} {d} {Month} {yyyy} {time}",stamp:"{dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"'s,om",modifiers:[{name:"day",src:"gisteren",value:-1},{name:"day",src:"vandaag",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"overmorgen",value:2},{name:"sign",src:"geleden",value:-1},{name:"sign",src:"vanaf nu",value:1},{name:"shift",src:"laatste|vorige|afgelopen",value:-1},{name:"shift",src:"volgend:|e",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("no",{plural:!0,units:"millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember",weekdays:"søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag",numerals:"en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti",tokens:"den,for",articles:"den",short:"d. {d}. {month} {yyyy}",long:"den {d}. {month} {yyyy} {H}:{mm}",full:"{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"overimorgen|overmorgen|over i morgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i siste|siste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"neste",value:1}],parse:["{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{date} {month}","{shift} {weekday}","{0?} {weekday?},? {date?} {month}\\.? {year}"]})},function(t,e,i){"use strict";i(4)("pl",{plural:!0,units:"milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat",months:"sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień",weekdays:"nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę",numerals:"zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć",tokens:"w|we,roku",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"o",ampm:"am,pm",modifiers:[{name:"day",src:"przedwczoraj",value:-2},{name:"day",src:"wczoraj",value:-1},{name:"day",src:"dzisiaj|dziś",value:0},{name:"day",src:"jutro",value:1},{name:"day",src:"pojutrze",value:2},{name:"sign",src:"temu|przed",value:-1},{name:"sign",src:"za",value:1},{name:"shift",src:"zeszły|zeszła|ostatni|ostatnia",value:-1},{name:"shift",src:"następny|następna|następnego|przyszły|przyszła|przyszłego",value:1}],relative:function(t,e,i,n){if(4===e){if(1===t&&"past"===n)return"wczoraj";if(1===t&&"future"===n)return"jutro";if(2===t&&"past"===n)return"przedwczoraj";if(2===t&&"future"===n)return"pojutrze"}var s,r=+t.toFixed(0).slice(-1),a=+t.toFixed(0).slice(-2);switch(!0){case 1===t:s=0;break;case a>=12&&a<=14:s=2;break;case r>=2&&r<=4:s=1;break;default:s=2}var o=this.units[8*s+e],u=t+" ";switch("past"!==n&&"future"!==n||1!==t||(o=o.replace(/a$/,"ę")),o=u+o,n){case"duration":return o;case"past":return o+" temu";case"future":return"za "+o}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{shift} {unit:5-7}","{0} {shift?} {weekday}"],timeFrontParse:["{day|weekday}","{date} {months} {year?} {1?}","{0?} {shift?} {weekday}"]})},function(t,e,i){"use strict";i(4)("pt",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s",months:"jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|",weekdays:"dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado",numerals:"zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez",tokens:"a,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{Weekday}, {d} de {Month} de {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"às",ampm:"am,pm",modifiers:[{name:"day",src:"anteontem",value:-2},{name:"day",src:"ontem",value:-1},{name:"day",src:"hoje",value:0},{name:"day",src:"amanh:ã|a",value:1},{name:"sign",src:"atrás|atras|há|ha",value:-1},{name:"sign",src:"daqui a",value:1},{name:"shift",src:"passad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {1?} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{0?} {shift} {weekday}","{date} {1?} {months?} {1?} {year?}"],timeFrontParse:["{shift?} {day|weekday}","{date} {1?} {months?} {1?} {year?}"]})},function(t,e,i){"use strict";i(4)("ru",{firstDayOfWeekYear:1,units:"миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году",months:"янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь",weekdays:"воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб",numerals:"ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять",tokens:"в|на,г\\.?(?:ода)?",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy} г.",long:"{d} {month} {yyyy} г., {time}",full:"{weekday}, {d} {month} {yyyy} г., {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"в",ampm:" утра, вечера",modifiers:[{name:"day",src:"позавчера",value:-2},{name:"day",src:"вчера",value:-1},{name:"day",src:"сегодня",value:0},{name:"day",src:"завтра",value:1},{name:"day",src:"послезавтра",value:2},{name:"sign",src:"назад",value:-1},{name:"sign",src:"через",value:1},{name:"shift",src:"прошл:ый|ой|ом",value:-1},{name:"shift",src:"следующ:ий|ей|ем",value:1}],relative:function(t,e,i,n){var s,r,a=t.toString().slice(-1);switch(!0){case t>=11&&t<=15:r=3;break;case 1==a:r=1;break;case a>=2&&a<=4:r=2;break;default:r=3}switch(s=t+" "+this.units[8*r+e],n){case"duration":return s;case"past":return s+" назад";case"future":return"через "+s}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{0?} {shift} {unit:5-7}"],timeParse:["{day|weekday}","{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"],timeFrontParse:["{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"]})},function(t,e,i){"use strict";i(4)("sv",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et",months:"jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag",numerals:"noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio",tokens:"den,för|for",articles:"den",short:"{yyyy}-{MM}-{dd}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar",value:-2},{name:"day",src:"går|i går|igår|gar|i gar|igar",value:-1},{name:"day",src:"dag|i dag|idag",value:0},{name:"day",src:"morgon|i morgon|imorgon",value:1},{name:"day",src:"över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon",value:2},{name:"sign",src:"sedan|sen",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i förra|förra|i forra|forra",value:-1},{name:"shift",src:"denna",value:0},{name:"shift",src:"nästa|nasta",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,i){"use strict";i(4)("zh-CN",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒钟,分钟,小时,天,个星期|周,个月,年",weekdays:"星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}-{MM}-{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}点{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分钟?,点|时,日|号,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"后天",value:2},{name:"day",src:"大后天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"后",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"这",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(t,e,i){"use strict";i(4)("zh-TW",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年",weekdays:"星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}點{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分鐘?,點|時,日|號,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"後天",value:2},{name:"day",src:"大後天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"這",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.day},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.dayAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.dayAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.dayBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.dayFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.days},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.daysAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.daysAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.daysBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.daysFromNow},function(t,e,i){"use strict";var n=i(0),s=i(8),r=s.localeManager;n.Number.defineInstance({duration:function(t,e){return r.get(e).getDuration(t)}}),t.exports=n.Number.duration},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hour},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hourAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hourAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hourBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hourFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hours},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hoursAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hoursAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hoursBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.hoursFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecond},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.milliseconds},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondsAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondsAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondsBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.millisecondsFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minute},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minuteAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minuteAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minuteBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minuteFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minutes},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minutesAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minutesAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minutesBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.minutesFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.month},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.months},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthsAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthsAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthsBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.monthsFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.second},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.seconds},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondsAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondsAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondsBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.secondsFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.week},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weekAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weekAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weekBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weekFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weeks},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weeksAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weeksAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weeksBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.weeksFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.year},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearFromNow},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.years},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearsAfter},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearsAgo},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearsBefore},function(t,e,i){"use strict";var n=i(0);i(1),t.exports=n.Number.yearsFromNow},function(t,e,i){"use strict";var n=i(13),s=i(420);i(16)(n,{clamp:function(t){return s(this,t)}})},function(t,e,i){"use strict";var n=i(13);i(16)(n,{clone:function(){return new n(this.start,this.end)}})},function(t,e,i){"use strict";var n=i(13);i(16)(n,{contains:function(t){return null!=t&&(t.start&&t.end?t.start>=this.start&&t.start<=this.end&&t.end>=this.start&&t.end<=this.end:t>=this.start&&t<=this.end)}})},function(t,e,i){"use strict";i(25)},function(t,e,i){"use strict";var n=i(13),s=i(65);i(16)(n,{every:function(t,e){return s(this,t,!1,e)}})},function(t,e,i){"use strict";i(25)},function(t,e,i){"use strict";i(272),i(405),i(406),i(407),i(408),i(409),i(410),i(422),i(423),i(424),i(425),i(426),i(427),i(428),i(429),i(430),i(431),i(436),i(437),t.exports=i(0)},function(t,e,i){"use strict";function n(){var t={};u(r.split("|"),function(e,i){var n,r,a=e+"s";i<4?r=function(){return l(this,e,!0)}:(n=s[c(a)],r=function(){return o((this.end-this.start)/n)}),t[a]=r}),f(a,t)}var s=i(106),r=i(66),a=i(13),o=i(23),u=i(26),l=i(65),c=i(55),f=i(16);t.exports=n},function(t,e,i){"use strict";function n(t){var e,i,n,r,u,m;return c.get&&(e=t.match(f))?(u=o(e[1].replace("from","at")),m=c.get(u,e[2]),new s(u,m)):((e=t.match(d))&&(n=e[1],i=e[2]),(e=t.match(h))&&(i=e[1],n=e[2]),i&&n?(u=o(i),r=l(n),m=a(u,r[0],r[1])):u=t,new s(o(u),o(m)))}var s=i(13),r=i(434),a=i(105),o=i(102),u=i(22),l=i(103),c=u.sugarDate,f=r.RANGE_REG_FROM_TO,h=r.RANGE_REG_REAR_DURATION,d=r.RANGE_REG_FRONT_DURATION;t.exports=n},function(t,e,i){"use strict";function n(t,e){return a(r(t),r(e))}var s=i(7),r=i(415),a=s.max;t.exports=n},function(t,e,i){"use strict";function n(t){var e=s(t.toString());return e[1]?e[1].length:0}var s=i(146);t.exports=n},function(t,e,i){"use strict";function n(t){return r(t)?t.charCodeAt(0):t}var s=i(3),r=s.isString;t.exports=n},function(t,e,i){"use strict";function n(t,e,i){return s(t+e,i)}var s=i(74);t.exports=n},function(t,e,i){"use strict";function n(t,e){return s(t.charCodeAt(0)+e)}var s=i(75);t.exports=n},function(t,e,i){"use strict";function n(t){var e=r(t);return(!!e||0===e)&&s(t)}var s=i(421),r=i(104);t.exports=n},function(t,e,i){"use strict";function n(t,e){var i,n=t.start,r=t.end,a=rr?n:r;return i=eo?o:e,s(i)}var s=i(101);t.exports=n},function(t,e,i){"use strict";function n(t){return t!==-1/0&&t!==1/0}t.exports=n},function(t,e,i){"use strict";var n=i(13);i(16)(n,{intersect:function(t){return t.start>this.end||t.endt.start?this.start:t.start,this.endt.end?this.end:t.end)}})},function(t,e,i){"use strict";var n=i(66);t.exports=RegExp("(\\d+)?\\s*("+n+")s?","i")},function(t,e,i){"use strict";var n=i(13),s=i(3),r=i(102),a=i(413),o=s.isString,u=function(t,e){return 1===arguments.length&&o(t)?a(t):new n(r(t),r(e))};t.exports=u},function(t,e,i){"use strict";var n=i(435);t.exports={RANGE_REG_FROM_TO:/(?:from)?\s*(.+)\s+(?:to|until)\s+(.+)$/i,RANGE_REG_REAR_DURATION:RegExp("(.+)\\s*for\\s*"+n,"i"),RANGE_REG_FRONT_DURATION:RegExp("(?:for)?\\s*"+n+"\\s*(?:starting)?\\s(?:at\\s)?(.+)","i")}},function(t,e,i){"use strict";var n=i(66);t.exports="((?:\\d+)?\\s*(?:"+n+"))s?"},function(t,e,i){"use strict";i(25)},function(t,e,i){"use strict";i(25)}])}); +/* WEBPACK VAR INJECTION */(function(global) {/* + * Sugar v2.0.4 + * + * Freely distributable and licensed under the MIT-style license. + * Copyright (c) Andrew Plummer + * https://sugarjs.com/ + * + * ---------------------------- */ +(function() { + 'use strict'; + + /*** + * @module Core + * @description Core functionality including the ability to define methods and + * extend onto natives. + * + ***/ + + // The global to export. + var Sugar; + + // The name of Sugar in the global namespace. + var SUGAR_GLOBAL = 'Sugar'; + + // Natives available on initialization. Letting Object go first to ensure its + // global is set by the time the rest are checking for chainable Object methods. + var NATIVE_NAMES = 'Object Number String Array Date RegExp Function'; + + // Static method flag + var STATIC = 0x1; + + // Instance method flag + var INSTANCE = 0x2; + + // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch. + var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties); + + // The global context. Rhino uses a different "global" keyword so + // do an extra check to be sure that it's actually the global context. + var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this; + + // Is the environment node? + var hasExports = typeof module !== 'undefined' && module.exports; + + // Whether object instance methods can be mapped to the prototype. + var allowObjectPrototype = false; + + // A map from Array to SugarArray. + var namespacesByName = {}; + + // A map from [object Object] to namespace. + var namespacesByClassString = {}; + + // Defining properties. + var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim; + + // A default chainable class for unknown types. + var DefaultChainable = getNewChainableClass('Chainable'); + + + // Global methods + + function setupGlobal() { + Sugar = globalContext[SUGAR_GLOBAL]; + if (Sugar) { + // Reuse already defined Sugar global object. + return; + } + Sugar = function(arg) { + forEachProperty(Sugar, function(sugarNamespace, name) { + // Although only the only enumerable properties on the global + // object are Sugar namespaces, environments that can't set + // non-enumerable properties will step through the utility methods + // as well here, so use this check to only allow true namespaces. + if (hasOwn(namespacesByName, name)) { + sugarNamespace.extend(arg); + } + }); + return Sugar; + }; + if (hasExports) { + module.exports = Sugar; + } else { + try { + globalContext[SUGAR_GLOBAL] = Sugar; + } catch (e) { + // Contexts such as QML have a read-only global context. + } + } + forEachProperty(NATIVE_NAMES.split(' '), function(name) { + createNamespace(name); + }); + setGlobalProperties(); + } + + /*** + * @method createNamespace(name) + * @returns SugarNamespace + * @namespace Sugar + * @short Creates a new Sugar namespace. + * @extra This method is for plugin developers who want to define methods to be + * used with natives that Sugar does not handle by default. The new + * namespace will appear on the `Sugar` global with all the methods of + * normal namespaces, including the ability to define new methods. When + * extended, any defined methods will be mapped to `name` in the global + * context. + * + * @example + * + * Sugar.createNamespace('Boolean'); + * + * @param {string} name - The namespace name. + * + ***/ + function createNamespace(name) { + + // Is the current namespace Object? + var isObject = name === 'Object'; + + // A Sugar namespace is also a chainable class: Sugar.Array, etc. + var sugarNamespace = getNewChainableClass(name, true); + + /*** + * @method extend([opts]) + * @returns Sugar + * @namespace Sugar + * @short Extends Sugar defined methods onto natives. + * @extra This method can be called on individual namespaces like + * `Sugar.Array` or on the `Sugar` global itself, in which case + * [opts] will be forwarded to each `extend` call. For more, + * see `extending`. + * + * @options + * + * methods An array of method names to explicitly extend. + * + * except An array of method names or global namespaces (`Array`, + * `String`) to explicitly exclude. Namespaces should be the + * actual global objects, not strings. + * + * namespaces An array of global namespaces (`Array`, `String`) to + * explicitly extend. Namespaces should be the actual + * global objects, not strings. + * + * enhance A shortcut to disallow all "enhance" flags at once + * (flags listed below). For more, see `enhanced methods`. + * Default is `true`. + * + * enhanceString A boolean allowing String enhancements. Default is `true`. + * + * enhanceArray A boolean allowing Array enhancements. Default is `true`. + * + * objectPrototype A boolean allowing Sugar to extend Object.prototype + * with instance methods. This option is off by default + * and should generally not be used except with caution. + * For more, see `object methods`. + * + * @example + * + * Sugar.Array.extend(); + * Sugar.extend(); + * + * @option {Array} [methods] + * @option {Array} [except] + * @option {Array} [namespaces] + * @option {boolean} [enhance] + * @option {boolean} [enhanceString] + * @option {boolean} [enhanceArray] + * @option {boolean} [objectPrototype] + * @param {ExtendOptions} [opts] + * + *** + * @method extend([opts]) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Extends Sugar defined methods for a specific namespace onto natives. + * @param {ExtendOptions} [opts] + * + ***/ + var extend = function (opts) { + + var nativeClass = globalContext[name], nativeProto = nativeClass.prototype; + var staticMethods = {}, instanceMethods = {}, methodsByName; + + function objectRestricted(name, target) { + return isObject && target === nativeProto && + (!allowObjectPrototype || name === 'get' || name === 'set'); + } + + function arrayOptionExists(field, val) { + var arr = opts[field]; + if (arr) { + for (var i = 0, el; el = arr[i]; i++) { + if (el === val) { + return true; + } + } + } + return false; + } + + function arrayOptionExcludes(field, val) { + return opts[field] && !arrayOptionExists(field, val); + } + + function disallowedByFlags(methodName, target, flags) { + // Disallowing methods by flag currently only applies if methods already + // exist to avoid enhancing native methods, as aliases should still be + // extended (i.e. Array#all should still be extended even if Array#every + // is being disallowed by a flag). + if (!target[methodName] || !flags) { + return false; + } + for (var i = 0; i < flags.length; i++) { + if (opts[flags[i]] === false) { + return true; + } + } + } + + function namespaceIsExcepted() { + return arrayOptionExists('except', nativeClass) || + arrayOptionExcludes('namespaces', nativeClass); + } + + function methodIsExcepted(methodName) { + return arrayOptionExists('except', methodName); + } + + function canExtend(methodName, method, target) { + return !objectRestricted(methodName, target) && + !disallowedByFlags(methodName, target, method.flags) && + !methodIsExcepted(methodName); + } + + opts = opts || {}; + methodsByName = opts.methods; + + if (namespaceIsExcepted()) { + return; + } else if (isObject && typeof opts.objectPrototype === 'boolean') { + // Store "objectPrototype" flag for future reference. + allowObjectPrototype = opts.objectPrototype; + } + + forEachProperty(methodsByName || sugarNamespace, function(method, methodName) { + if (methodsByName) { + // If we have method names passed in an array, + // then we need to flip the key and value here + // and find the method in the Sugar namespace. + methodName = method; + method = sugarNamespace[methodName]; + } + if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) { + instanceMethods[methodName] = method.instance; + } + if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) { + staticMethods[methodName] = method; + } + }); + + // Accessing the extend target each time instead of holding a reference as + // it may have been overwritten (for example Date by Sinon). Also need to + // access through the global to allow extension of user-defined namespaces. + extendNative(nativeClass, staticMethods); + extendNative(nativeProto, instanceMethods); + + if (!methodsByName) { + // If there are no method names passed, then + // all methods in the namespace will be extended + // to the native. This includes all future defined + // methods, so add a flag here to check later. + setProperty(sugarNamespace, 'active', true); + } + return sugarNamespace; + }; + + function defineWithOptionCollect(methodName, instance, args) { + setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) { + var opts = collectDefineOptions(arg1, arg2, arg3); + defineMethods(sugarNamespace, opts.methods, instance, args, opts.last); + return sugarNamespace; + }); + } + + /*** + * @method defineStatic(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines static methods on the namespace that can later be extended + * onto the native globals. + * @extra Accepts either a single object mapping names to functions, or name + * and function as two arguments. If `extend` was previously called + * with no arguments, the method will be immediately mapped to its + * native when defined. + * + * @example + * + * Sugar.Number.defineStatic({ + * isOdd: function (num) { + * return num % 2 === 1; + * } + * }); + * + * @signature defineStatic(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + defineWithOptionCollect('defineStatic', STATIC); + + /*** + * @method defineInstance(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines methods on the namespace that can later be extended as + * instance methods onto the native prototype. + * @extra Accepts either a single object mapping names to functions, or name + * and function as two arguments. All functions should accept the + * native for which they are mapped as their first argument, and should + * never refer to `this`. If `extend` was previously called with no + * arguments, the method will be immediately mapped to its native when + * defined. + * + * Methods cannot accept more than 4 arguments in addition to the + * native (5 arguments total). Any additional arguments will not be + * mapped. If the method needs to accept unlimited arguments, use + * `defineInstanceWithArguments`. Otherwise if more options are + * required, use an options object instead. + * + * @example + * + * Sugar.Number.defineInstance({ + * square: function (num) { + * return num * num; + * } + * }); + * + * @signature defineInstance(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + defineWithOptionCollect('defineInstance', INSTANCE); + + /*** + * @method defineInstanceAndStatic(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short A shortcut to define both static and instance methods on the namespace. + * @extra This method is intended for use with `Object` instance methods. Sugar + * will not map any methods to `Object.prototype` by default, so defining + * instance methods as static helps facilitate their proper use. + * + * @example + * + * Sugar.Object.defineInstanceAndStatic({ + * isAwesome: function (obj) { + * // check if obj is awesome! + * } + * }); + * + * @signature defineInstanceAndStatic(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC); + + + /*** + * @method defineStaticWithArguments(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines static methods that collect arguments. + * @extra This method is identical to `defineStatic`, except that when defined + * methods are called, they will collect any arguments past `n - 1`, + * where `n` is the number of arguments that the method accepts. + * Collected arguments will be passed to the method in an array + * as the last argument defined on the function. + * + * @example + * + * Sugar.Number.defineStaticWithArguments({ + * addAll: function (num, args) { + * for (var i = 0; i < args.length; i++) { + * num += args[i]; + * } + * return num; + * } + * }); + * + * @signature defineStaticWithArguments(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + defineWithOptionCollect('defineStaticWithArguments', STATIC, true); + + /*** + * @method defineInstanceWithArguments(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines instance methods that collect arguments. + * @extra This method is identical to `defineInstance`, except that when + * defined methods are called, they will collect any arguments past + * `n - 1`, where `n` is the number of arguments that the method + * accepts. Collected arguments will be passed to the method as the + * last argument defined on the function. + * + * @example + * + * Sugar.Number.defineInstanceWithArguments({ + * addAll: function (num, args) { + * for (var i = 0; i < args.length; i++) { + * num += args[i]; + * } + * return num; + * } + * }); + * + * @signature defineInstanceWithArguments(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true); + + /*** + * @method defineStaticPolyfill(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines static methods that are mapped onto the native if they do + * not already exist. + * @extra Intended only for use creating polyfills that follow the ECMAScript + * spec. Accepts either a single object mapping names to functions, or + * name and function as two arguments. + * + * @example + * + * Sugar.Object.defineStaticPolyfill({ + * keys: function (obj) { + * // get keys! + * } + * }); + * + * @signature defineStaticPolyfill(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) { + var opts = collectDefineOptions(arg1, arg2, arg3); + extendNative(globalContext[name], opts.methods, true, opts.last); + return sugarNamespace; + }); + + /*** + * @method defineInstancePolyfill(methods) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Defines instance methods that are mapped onto the native prototype + * if they do not already exist. + * @extra Intended only for use creating polyfills that follow the ECMAScript + * spec. Accepts either a single object mapping names to functions, or + * name and function as two arguments. This method differs from + * `defineInstance` as there is no static signature (as the method + * is mapped as-is to the native), so it should refer to its `this` + * object. + * + * @example + * + * Sugar.Array.defineInstancePolyfill({ + * indexOf: function (arr, el) { + * // index finding code here! + * } + * }); + * + * @signature defineInstancePolyfill(methodName, methodFn) + * @param {Object} methods - Methods to be defined. + * @param {string} methodName - Name of a single method to be defined. + * @param {Function} methodFn - Function body of a single method to be defined. + ***/ + setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) { + var opts = collectDefineOptions(arg1, arg2, arg3); + extendNative(globalContext[name].prototype, opts.methods, true, opts.last); + // Map instance polyfills to chainable as well. + forEachProperty(opts.methods, function(fn, methodName) { + defineChainableMethod(sugarNamespace, methodName, fn); + }); + return sugarNamespace; + }); + + /*** + * @method alias(toName, from) + * @returns SugarNamespace + * @namespace SugarNamespace + * @short Aliases one Sugar method to another. + * + * @example + * + * Sugar.Array.alias('all', 'every'); + * + * @signature alias(toName, fn) + * @param {string} toName - Name for new method. + * @param {string|Function} from - Method to alias, or string shortcut. + ***/ + setProperty(sugarNamespace, 'alias', function(name, source) { + var method = typeof source === 'string' ? sugarNamespace[source] : source; + setMethod(sugarNamespace, name, method); + return sugarNamespace; + }); + + // Each namespace can extend only itself through its .extend method. + setProperty(sugarNamespace, 'extend', extend); + + // Cache the class to namespace relationship for later use. + namespacesByName[name] = sugarNamespace; + namespacesByClassString['[object ' + name + ']'] = sugarNamespace; + + mapNativeToChainable(name); + mapObjectChainablesToNamespace(sugarNamespace); + + + // Export + return Sugar[name] = sugarNamespace; + } + + function setGlobalProperties() { + setProperty(Sugar, 'extend', Sugar); + setProperty(Sugar, 'toString', toString); + setProperty(Sugar, 'createNamespace', createNamespace); + + setProperty(Sugar, 'util', { + 'hasOwn': hasOwn, + 'getOwn': getOwn, + 'setProperty': setProperty, + 'classToString': classToString, + 'defineProperty': defineProperty, + 'forEachProperty': forEachProperty, + 'mapNativeToChainable': mapNativeToChainable + }); + } + + function toString() { + return SUGAR_GLOBAL; + } + + + // Defining Methods + + function defineMethods(sugarNamespace, methods, type, args, flags) { + forEachProperty(methods, function(method, methodName) { + var instanceMethod, staticMethod = method; + if (args) { + staticMethod = wrapMethodWithArguments(method); + } + if (flags) { + staticMethod.flags = flags; + } + + // A method may define its own custom implementation, so + // make sure that's not the case before creating one. + if (type & INSTANCE && !method.instance) { + instanceMethod = wrapInstanceMethod(method, args); + setProperty(staticMethod, 'instance', instanceMethod); + } + + if (type & STATIC) { + setProperty(staticMethod, 'static', true); + } + + setMethod(sugarNamespace, methodName, staticMethod); + + if (sugarNamespace.active) { + // If the namespace has been activated (.extend has been called), + // then map this method as well. + sugarNamespace.extend(methodName); + } + }); + } + + function collectDefineOptions(arg1, arg2, arg3) { + var methods, last; + if (typeof arg1 === 'string') { + methods = {}; + methods[arg1] = arg2; + last = arg3; + } else { + methods = arg1; + last = arg2; + } + return { + last: last, + methods: methods + }; + } + + function wrapInstanceMethod(fn, args) { + return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn); + } + + function wrapMethodWithArguments(fn, instance) { + // Functions accepting enumerated arguments will always have "args" as the + // last argument, so subtract one from the function length to get the point + // at which to start collecting arguments. If this is an instance method on + // a prototype, then "this" will be pushed into the arguments array so start + // collecting 1 argument earlier. + var startCollect = fn.length - 1 - (instance ? 1 : 0); + return function() { + var args = [], collectedArgs = [], len; + if (instance) { + args.push(this); + } + len = Math.max(arguments.length, startCollect); + // Optimized: no leaking arguments + for (var i = 0; i < len; i++) { + if (i < startCollect) { + args.push(arguments[i]); + } else { + collectedArgs.push(arguments[i]); + } + } + args.push(collectedArgs); + return fn.apply(this, args); + }; + } + + function wrapInstanceMethodFixed(fn) { + switch(fn.length) { + // Wrapped instance methods will always be passed the instance + // as the first argument, but requiring the argument to be defined + // may cause confusion here, so return the same wrapped function regardless. + case 0: + case 1: + return function() { + return fn(this); + }; + case 2: + return function(a) { + return fn(this, a); + }; + case 3: + return function(a, b) { + return fn(this, a, b); + }; + case 4: + return function(a, b, c) { + return fn(this, a, b, c); + }; + case 5: + return function(a, b, c, d) { + return fn(this, a, b, c, d); + }; + } + } + + // Method helpers + + function extendNative(target, source, polyfill, override) { + forEachProperty(source, function(method, name) { + if (polyfill && !override && target[name]) { + // Method exists, so bail. + return; + } + setProperty(target, name, method); + }); + } + + function setMethod(sugarNamespace, methodName, method) { + sugarNamespace[methodName] = method; + if (method.instance) { + defineChainableMethod(sugarNamespace, methodName, method.instance, true); + } + } + + + // Chainables + + function getNewChainableClass(name) { + var fn = function SugarChainable(obj, arg) { + if (!(this instanceof fn)) { + return new fn(obj, arg); + } + if (this.constructor !== fn) { + // Allow modules to define their own constructors. + obj = this.constructor.apply(obj, arguments); + } + this.raw = obj; + }; + setProperty(fn, 'toString', function() { + return SUGAR_GLOBAL + name; + }); + setProperty(fn.prototype, 'valueOf', function() { + return this.raw; + }); + return fn; + } + + function defineChainableMethod(sugarNamespace, methodName, fn) { + var wrapped = wrapWithChainableResult(fn), existing, collision, dcp; + dcp = DefaultChainable.prototype; + existing = dcp[methodName]; + + // If the method was previously defined on the default chainable, then a + // collision exists, so set the method to a disambiguation function that will + // lazily evaluate the object and find it's associated chainable. An extra + // check is required to avoid false positives from Object inherited methods. + collision = existing && existing !== Object.prototype[methodName]; + + // The disambiguation function is only required once. + if (!existing || !existing.disambiguate) { + dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped; + } + + // The target chainable always receives the wrapped method. Additionally, + // if the target chainable is Sugar.Object, then map the wrapped method + // to all other namespaces as well if they do not define their own method + // of the same name. This way, a Sugar.Number will have methods like + // isEqual that can be called on any object without having to traverse up + // the prototype chain and perform disambiguation, which costs cycles. + // Note that the "if" block below actually does nothing on init as Object + // goes first and no other namespaces exist yet. However it needs to be + // here as Object instance methods defined later also need to be mapped + // back onto existing namespaces. + sugarNamespace.prototype[methodName] = wrapped; + if (sugarNamespace === Sugar.Object) { + mapObjectChainableToAllNamespaces(methodName, wrapped); + } + } + + function mapObjectChainablesToNamespace(sugarNamespace) { + forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) { + if (typeof val === 'function') { + setObjectChainableOnNamespace(sugarNamespace, methodName, val); + } + }); + } + + function mapObjectChainableToAllNamespaces(methodName, fn) { + forEachProperty(namespacesByName, function(sugarNamespace) { + setObjectChainableOnNamespace(sugarNamespace, methodName, fn); + }); + } + + function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) { + var proto = sugarNamespace.prototype; + if (!hasOwn(proto, methodName)) { + proto[methodName] = fn; + } + } + + function wrapWithChainableResult(fn) { + return function() { + return new DefaultChainable(fn.apply(this.raw, arguments)); + }; + } + + function disambiguateMethod(methodName) { + var fn = function() { + var raw = this.raw, sugarNamespace, fn; + if (raw != null) { + // Find the Sugar namespace for this unknown. + sugarNamespace = namespacesByClassString[classToString(raw)]; + } + if (!sugarNamespace) { + // If no sugarNamespace can be resolved, then default + // back to Sugar.Object so that undefined and other + // non-supported types can still have basic object + // methods called on them, such as type checks. + sugarNamespace = Sugar.Object; + } + + fn = new sugarNamespace(raw)[methodName]; + + if (fn.disambiguate) { + // If the method about to be called on this chainable is + // itself a disambiguation method, then throw an error to + // prevent infinite recursion. + throw new TypeError('Cannot resolve namespace for ' + raw); + } + + return fn.apply(this, arguments); + }; + fn.disambiguate = true; + return fn; + } + + function mapNativeToChainable(name, methodNames) { + var sugarNamespace = namespacesByName[name], + nativeProto = globalContext[name].prototype; + + if (!methodNames && ownPropertyNames) { + methodNames = ownPropertyNames(nativeProto); + } + + forEachProperty(methodNames, function(methodName) { + if (nativeMethodProhibited(methodName)) { + // Sugar chainables have their own constructors as well as "valueOf" + // methods, so exclude them here. The __proto__ argument should be trapped + // by the function check below, however simply accessing this property on + // Object.prototype causes QML to segfault, so pre-emptively excluding it. + return; + } + try { + var fn = nativeProto[methodName]; + if (typeof fn !== 'function') { + // Bail on anything not a function. + return; + } + } catch (e) { + // Function.prototype has properties that + // will throw errors when accessed. + return; + } + defineChainableMethod(sugarNamespace, methodName, fn); + }); + } + + function nativeMethodProhibited(methodName) { + return methodName === 'constructor' || + methodName === 'valueOf' || + methodName === '__proto__'; + } + + + // Util + + // Internal references + var ownPropertyNames = Object.getOwnPropertyNames, + internalToString = Object.prototype.toString, + internalHasOwnProperty = Object.prototype.hasOwnProperty; + + // Defining this as a variable here as the ES5 module + // overwrites it to patch DONTENUM. + var forEachProperty = function (obj, fn) { + for(var key in obj) { + if (!hasOwn(obj, key)) continue; + if (fn.call(obj, obj[key], key, obj) === false) break; + } + }; + + function definePropertyShim(obj, prop, descriptor) { + obj[prop] = descriptor.value; + } + + function setProperty(target, name, value, enumerable) { + defineProperty(target, name, { + value: value, + enumerable: !!enumerable, + configurable: true, + writable: true + }); + } + + // PERF: Attempts to speed this method up get very Heisenbergy. Quickly + // returning based on typeof works for primitives, but slows down object + // types. Even === checks on null and undefined (no typeof) will end up + // basically breaking even. This seems to be as fast as it can go. + function classToString(obj) { + return internalToString.call(obj); + } + + function hasOwn(obj, prop) { + return !!obj && internalHasOwnProperty.call(obj, prop); + } + + function getOwn(obj, prop) { + if (hasOwn(obj, prop)) { + return obj[prop]; + } + } + + setupGlobal(); + +}).call(this); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(107))) + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var buildNumberUnitMethods = __webpack_require__(202); + +buildNumberUnitMethods(); + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var buildDateUnitMethods = __webpack_require__(201); + +buildDateUnitMethods(); + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var NATIVE_TYPES = __webpack_require__(153), + forEach = __webpack_require__(26), + isClass = __webpack_require__(72), + spaceSplit = __webpack_require__(43), + isPlainObject = __webpack_require__(143), + coreUtilityAliases = __webpack_require__(10); + +var classToString = coreUtilityAliases.classToString; + +var isSerializable, + isBoolean, isNumber, isString, + isDate, isRegExp, isFunction, + isArray, isSet, isMap, isError; + +function buildClassChecks() { + + var knownTypes = {}; + + function addCoreTypes() { + + var names = spaceSplit(NATIVE_TYPES); + + isBoolean = buildPrimitiveClassCheck(names[0]); + isNumber = buildPrimitiveClassCheck(names[1]); + isString = buildPrimitiveClassCheck(names[2]); + + isDate = buildClassCheck(names[3]); + isRegExp = buildClassCheck(names[4]); + + // Wanted to enhance performance here by using simply "typeof" + // but Firefox has two major issues that make this impossible, + // one fixed, the other not, so perform a full class check here. + // + // 1. Regexes can be typeof "function" in FF < 3 + // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed) + // + // 2. HTMLEmbedElement and HTMLObjectElement are be typeof "function" + // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix) + isFunction = buildClassCheck(names[5]); + + + isArray = Array.isArray || buildClassCheck(names[6]); + isError = buildClassCheck(names[7]); + + isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set); + isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map); + + // Add core types as known so that they can be checked by value below, + // notably excluding Functions and adding Arguments and Error. + addKnownType('Arguments'); + addKnownType(names[0]); + addKnownType(names[1]); + addKnownType(names[2]); + addKnownType(names[3]); + addKnownType(names[4]); + addKnownType(names[6]); + + } + + function addArrayTypes() { + var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64'; + forEach(spaceSplit(types), function(str) { + addKnownType(str + 'Array'); + }); + } + + function addKnownType(className) { + var str = '[object '+ className +']'; + knownTypes[str] = true; + } + + function isKnownType(className) { + return knownTypes[className]; + } + + function buildClassCheck(className, globalObject) { + if (globalObject && isClass(new globalObject, 'Object')) { + return getConstructorClassCheck(globalObject); + } else { + return getToStringClassCheck(className); + } + } + + function getConstructorClassCheck(obj) { + var ctorStr = String(obj); + return function(obj) { + return String(obj.constructor) === ctorStr; + }; + } + + function getToStringClassCheck(className) { + return function(obj, str) { + // perf: Returning up front on instanceof appears to be slower. + return isClass(obj, className, str); + }; + } + + function buildPrimitiveClassCheck(className) { + var type = className.toLowerCase(); + return function(obj) { + var t = typeof obj; + return t === type || t === 'object' && isClass(obj, className); + }; + } + + addCoreTypes(); + addArrayTypes(); + + isSerializable = function(obj, className) { + // Only known objects can be serialized. This notably excludes functions, + // host objects, Symbols (which are matched by reference), and instances + // of classes. The latter can arguably be matched by value, but + // distinguishing between these and host objects -- which should never be + // compared by value -- is very tricky so not dealing with it here. + className = className || classToString(obj); + return isKnownType(className) || isPlainObject(obj, className); + }; + +} + +buildClassChecks(); + +module.exports = { + isSerializable: isSerializable, + isBoolean: isBoolean, + isNumber: isNumber, + isString: isString, + isDate: isDate, + isRegExp: isRegExp, + isFunction: isFunction, + isArray: isArray, + isSet: isSet, + isMap: isMap, + isError: isError +}; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'addLocale': function(code, set) { + return localeManager.add(code, set); + } + +}); + +module.exports = Sugar.Date.addLocale; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + HOURS_INDEX: 3, + DAY_INDEX: 4, + WEEK_INDEX: 5, + MONTH_INDEX: 6, + YEAR_INDEX: 7 +}; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +/** + * Types utilities + */ + +var UNDEFINED = void 0; + +/** + * Return an empty function + * @return {Function} + */ +var EMPTY_FN = exports.EMPTY_FN = function EMPTY_FN() {}; + +/** + * Check passed argument is an object + * @param {Object} obj + * @return {Boolean} + */ +var isObj = exports.isObj = function isObj(obj) { + return Object.prototype.toString.call(obj) === '[object Object]'; +}; + +/** + * Check passed argument is a function + * @param {Function} obj + * @return {Boolean} + */ +var isFn = exports.isFn = function isFn(obj) { + return Object.prototype.toString.call(obj) === '[object Function]'; +}; + +/** + * Check passed argument is an array + * @param {Array} obj + * @return {Boolean} + */ +var isArray = exports.isArray = function isArray(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +/** + * Check passed argument is a string + * @param {String} obj objue + * @returns {Boolean} + */ +var isString = exports.isString = function isString(obj) { + return Object.prototype.toString.call(obj) === '[object String]'; +}; + +/** + * Check passed argument is a number + * @param {Number} obj + * @returns {Boolean} + */ +var isNumber = exports.isNumber = function isNumber(obj) { + return Object.prototype.toString.call(obj) === '[object Number]'; +}; + +/** + * Check passed argument is undefined + * @param {Any} obj + * @return {Boolean} + */ +var isUndef = exports.isUndef = function isUndef(obj) { + return obj === UNDEFINED; +}; + +/** + * Check passed argument is null + * @param {Any} obj + * @return {Boolean} + */ +var isNull = exports.isNull = function isNull(obj) { + return obj === null; +}; + +/** + * Check passed argument is empty (undefined, null or empty string) + * @param {Any} obj + * @return {Boolean} + */ +var isEmpty = exports.isEmpty = function isEmpty(obj) { + return isUndef(obj) || isNull(obj) || obj.length === 0; +}; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + abs: Math.abs, + pow: Math.pow, + min: Math.min, + max: Math.max, + ceil: Math.ceil, + floor: Math.floor, + round: Math.round +}; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LazyLoadedLocales = __webpack_require__(295), + AmericanEnglishDefinition = __webpack_require__(95), + getNewLocale = __webpack_require__(217); + +var English, localeManager; + +function buildLocales() { + + function LocaleManager(loc) { + this.locales = {}; + this.add(loc); + } + + LocaleManager.prototype = { + + get: function(code, fallback) { + var loc = this.locales[code]; + if (!loc && LazyLoadedLocales[code]) { + loc = this.add(code, LazyLoadedLocales[code]); + } else if (!loc && code) { + loc = this.locales[code.slice(0, 2)]; + } + return loc || fallback === false ? loc : this.current; + }, + + getAll: function() { + return this.locales; + }, + + set: function(code) { + var loc = this.get(code, false); + if (!loc) { + throw new TypeError('Invalid Locale: ' + code); + } + return this.current = loc; + }, + + add: function(code, def) { + if (!def) { + def = code; + code = def.code; + } else { + def.code = code; + } + var loc = def.compiledFormats ? def : getNewLocale(def); + this.locales[code] = loc; + if (!this.current) { + this.current = loc; + } + return loc; + }, + + remove: function(code) { + if (this.current.code === code) { + this.current = this.get('en'); + } + return delete this.locales[code]; + } + + }; + + // Sorry about this guys... + English = getNewLocale(AmericanEnglishDefinition); + localeManager = new LocaleManager(English); +} + +buildLocales(); + +module.exports = { + English: English, + localeManager: localeManager +}; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.tag = exports.elm = exports.createCheckItem = exports.createOpt = exports.removeClass = exports.addClass = exports.hasClass = exports.createText = exports.removeElm = exports.createElm = exports.getFirstTextNode = exports.getText = undefined; + +var _root = __webpack_require__(15); + +var _types = __webpack_require__(6); + +var _string = __webpack_require__(19); + +/** + * DOM utilities + */ + +var doc = _root.root.document; + +/** + * Returns text + text of children of given node + * @param {NodeElement} node + * @return {String} + */ +var getText = exports.getText = function getText(node) { + if ((0, _types.isUndef)(node.textContent)) { + return (0, _string.trim)(node.innerText); + } + return (0, _string.trim)(node.textContent); +}; + +/** + * Returns the first text node contained in the supplied node + * @param {NodeElement} node node + * @return {String} + */ +var getFirstTextNode = exports.getFirstTextNode = function getFirstTextNode(node) { + for (var i = 0; i < node.childNodes.length; i++) { + var n = node.childNodes[i]; + if (n.nodeType === 3) { + return n.data; + } + } +}; + +/** + * Creates an html element with given collection of attributes + * @param {String} tag a string of the html tag to create + * @param {Array} an undetermined number of arrays containing the with 2 + * items, the attribute name and its value ['id','myId'] + * @return {Object} created element + */ +var createElm = exports.createElm = function createElm() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var tag = args[0]; + if (!(0, _types.isString)(tag)) { + return null; + } + + var el = doc.createElement(tag); + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if ((0, _types.isArray)(arg) && arg.length === 2) { + el.setAttribute(arg[0], arg[1]); + } + } + return el; +}; + +/** + * Removes passed node from DOM + * @param {DOMElement} node + * @return {DOMElement} old node reference + */ +var removeElm = exports.removeElm = function removeElm(node) { + return node.parentNode.removeChild(node); +}; + +/** + * Returns a text node with given text + * @param {String} txt + * @return {Object} + */ +var createText = exports.createText = function createText(txt) { + return doc.createTextNode(txt); +}; + +/** + * Determine whether the passed elements is assigned the given class + * @param {DOMElement} ele DOM element + * @param {String} cls CSS class name + * @returns {Boolean} + */ +var hasClass = exports.hasClass = function hasClass(ele, cls) { + if ((0, _types.isUndef)(ele)) { + return false; + } + + if (supportsClassList()) { + return ele.classList.contains(cls); + } + return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); +}; + +/** + * Adds the specified class to the passed element + * @param {DOMElement} ele DOM element + * @param {String} cls CSS class name + */ +var addClass = exports.addClass = function addClass(ele, cls) { + if ((0, _types.isUndef)(ele)) { + return; + } + + if (supportsClassList()) { + ele.classList.add(cls); + return; + } + + if (ele.className === '') { + ele.className = cls; + } else if (!hasClass(ele, cls)) { + ele.className += ' ' + cls; + } +}; + +/** + * Removes the specified class to the passed element + * @param {DOMElement} ele DOM element + * @param {String} cls CSS class name + */ +var removeClass = exports.removeClass = function removeClass(ele, cls) { + if ((0, _types.isUndef)(ele)) { + return; + } + + if (supportsClassList()) { + ele.classList.remove(cls); + return; + } + var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)', 'g'); + ele.className = ele.className.replace(reg, ''); +}; + +/** + * Creates and returns an option element + * @param {String} text option text + * @param {String} value option value + * @param {Boolean} isSel whether option is selected + * @return {Object} option element + */ +var createOpt = exports.createOpt = function createOpt(text, value, isSel) { + var isSelected = isSel ? true : false; + var opt = isSelected ? createElm('option', ['value', value], ['selected', 'true']) : createElm('option', ['value', value]); + opt.appendChild(createText(text)); + return opt; +}; + +/** + * Creates and returns a checklist item + * @param {String} id index of check item + * @param {String} chkValue check item value + * @param {String} labelText check item label text + * @return {Object} li DOM element + */ +var createCheckItem = exports.createCheckItem = function createCheckItem(id, chkValue, labelText) { + var li = createElm('li'); + var label = createElm('label', ['for', id]); + var check = createElm('input', ['id', id], ['name', id], ['type', 'checkbox'], ['value', chkValue]); + label.appendChild(check); + label.appendChild(createText(labelText)); + li.appendChild(label); + li.label = label; + li.check = check; + return li; +}; + +/** + * Returns the element matching the supplied Id + * @param {String} id Element identifier + * @return {DOMElement} + */ +var elm = exports.elm = function elm(id) { + return doc.getElementById(id); +}; + +/** + * Returns list of element matching the supplied tag name + * @param {String} tagname Tag name + * @return {NodeList} + */ +var tag = exports.tag = function tag(o, tagname) { + return o.getElementsByTagName(tagname); +}; + +// HTML5 classList API +function supportsClassList() { + return doc.documentElement.classList; +} + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +module.exports = { + hasOwn: Sugar.util.hasOwn, + getOwn: Sugar.util.getOwn, + setProperty: Sugar.util.setProperty, + classToString: Sugar.util.classToString, + defineProperty: Sugar.util.defineProperty, + forEachProperty: Sugar.util.forEachProperty, + mapNativeToChainable: Sugar.util.mapNativeToChainable +}; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var NOTIMPLEMENTED = 'Not implemented.'; + +/** + * Base class defining the interface of a TableFilter feature + */ + +var Feature = exports.Feature = function () { + /** + * Creates an instance of Feature + * @param {Object} tf TableFilter instance + * @param {String} feature Feature name known by TableFilter + */ + function Feature(tf, feature) { + var _this = this; + + _classCallCheck(this, Feature); + + /** + * TableFilter instance + * @type {TableFilter} + */ + this.tf = tf; + + /** + * Feature name + * @type {String} + */ + this.feature = feature; + + /** + * TableFilter feature setting + * @type {Boolean} + */ + this.enabled = tf[feature]; + + /** + * TableFilter configuration + * @type {Object} + */ + this.config = tf.config(); + + /** + * TableFilter emitter instance + * @type {Emitter} + */ + this.emitter = tf.emitter; + + /** + * Field indicating whether Feature is initialized + * @type {Boolean} + */ + this.initialized = false; + + /** Subscribe to destroy event */ + this.emitter.on(['destroy'], function () { + return _this.destroy(); + }); + } + + /** + * Initialize the feature + */ + + + _createClass(Feature, [{ + key: 'init', + value: function init() { + throw new Error(NOTIMPLEMENTED); + } + + /** + * Reset the feature after being disabled + */ + + }, { + key: 'reset', + value: function reset() { + this.enable(); + this.init(); + } + + /** + * Destroy the feature + */ + + }, { + key: 'destroy', + value: function destroy() { + throw new Error(NOTIMPLEMENTED); + } + + /** + * Enable the feature + */ + + }, { + key: 'enable', + value: function enable() { + this.enabled = true; + } + + /** + * Disable the feature + */ + + }, { + key: 'disable', + value: function disable() { + this.enabled = false; + } + + /** + * Indicate whether the feature is enabled or not + * @returns {Boolean} + */ + + }, { + key: 'isEnabled', + value: function isEnabled() { + return this.enabled === true; + } + }]); + + return Feature; +}(); + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var buildRelativeAliases = __webpack_require__(203); + +buildRelativeAliases(); + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var cloneRangeMember = __webpack_require__(101); + +function Range(start, end) { + this.start = cloneRangeMember(start); + this.end = cloneRangeMember(end); +} + +module.exports = Range; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FEATURES = exports.AUTO_FILTER_DELAY = exports.IP_ADDRESS = exports.DATE = exports.FORMATTED_NUMBER = exports.NUMBER = exports.STRING = exports.CELL_TAG = exports.HEADER_TAG = exports.DOWN_ARROW_KEY = exports.UP_ARROW_KEY = exports.ESC_KEY = exports.TAB_KEY = exports.ENTER_KEY = exports.NONE = exports.CHECKLIST = exports.MULTIPLE = exports.SELECT = exports.INPUT = undefined; + +var _dateType = __webpack_require__(112); + +var _help = __webpack_require__(115); + +var _state = __webpack_require__(123); + +var _gridLayout = __webpack_require__(113); + +var _loader = __webpack_require__(117); + +var _highlightKeywords = __webpack_require__(116); + +var _popupFilter = __webpack_require__(121); + +var _markActiveColumns = __webpack_require__(118); + +var _rowsCounter = __webpack_require__(122); + +var _statusBar = __webpack_require__(124); + +var _clearButton = __webpack_require__(111); + +var _alternateRows = __webpack_require__(110); + +var _noResults = __webpack_require__(119); + +var _paging = __webpack_require__(120); + +/** + * Filter types + */ + +/** + * Input filter type + * @type {String} + */ +var INPUT = exports.INPUT = 'input'; +/** + * Select filter type + * @type {String} + */ +var SELECT = exports.SELECT = 'select'; +/** + * Multiple select filter type + * @type {String} + */ +var MULTIPLE = exports.MULTIPLE = 'multiple'; +/** + * Checklist filter type + * @type {String} + */ +var CHECKLIST = exports.CHECKLIST = 'checklist'; +/** + * None filter type + * @type {String} + */ +var NONE = exports.NONE = 'none'; + +/** + * Key codes + */ + +/** + * Enter key code + * @type {Number} + */ +var ENTER_KEY = exports.ENTER_KEY = 13; +/** + * Tab key code + * @type {Number} + */ +var TAB_KEY = exports.TAB_KEY = 9; +/** + * Escape key code + * @type {Number} + */ +var ESC_KEY = exports.ESC_KEY = 27; +/** + * Up arrow key code + * @type {Number} + */ +var UP_ARROW_KEY = exports.UP_ARROW_KEY = 38; +/** + * Down arrow key code + * @type {Number} + */ +var DOWN_ARROW_KEY = exports.DOWN_ARROW_KEY = 40; + +/** + * HTML tags + */ + +/** + * Header cell tag + * @type {String} + */ +var HEADER_TAG = exports.HEADER_TAG = 'TH'; +/** + * Cell tag + * @type {String} + */ +var CELL_TAG = exports.CELL_TAG = 'TD'; + +/** + * Data types + */ + +/** + * String + * @type {String} + */ +var STRING = exports.STRING = 'string'; + +/** + * Number + * @type {String} + */ +var NUMBER = exports.NUMBER = 'number'; + +/** + * Formatted number + * @type {String} + */ +var FORMATTED_NUMBER = exports.FORMATTED_NUMBER = 'formatted-number'; + +/** + * Date + * @type {String} + */ +var DATE = exports.DATE = 'date'; + +/** + * IP address + * @type {String} + */ +var IP_ADDRESS = exports.IP_ADDRESS = 'ipaddress'; + +/** + * Default values + */ + +/** + * Auto filter delay in milliseconds + * @type {Number} + */ +var AUTO_FILTER_DELAY = exports.AUTO_FILTER_DELAY = 750; + +/** + * TableFilter features definitions + * @type {Object} + */ +var FEATURES = exports.FEATURES = { + dateType: { + class: _dateType.DateType, + name: 'dateType' + }, + help: { + class: _help.Help, + name: 'help', + enforce: true + }, + state: { + class: _state.State, + name: 'state' + }, + markActiveColumns: { + class: _markActiveColumns.MarkActiveColumns, + name: 'markActiveColumns' + }, + gridLayout: { + class: _gridLayout.GridLayout, + name: 'gridLayout' + }, + loader: { + class: _loader.Loader, + name: 'loader' + }, + highlightKeyword: { + class: _highlightKeywords.HighlightKeyword, + name: 'highlightKeyword', + property: 'highlightKeywords' + }, + popupFilter: { + class: _popupFilter.PopupFilter, + name: 'popupFilter', + property: 'popupFilters' + }, + rowsCounter: { + class: _rowsCounter.RowsCounter, + name: 'rowsCounter' + }, + statusBar: { + class: _statusBar.StatusBar, + name: 'statusBar' + }, + clearButton: { + class: _clearButton.ClearButton, + name: 'clearButton', + property: 'btnReset' + }, + alternateRows: { + class: _alternateRows.AlternateRows, + name: 'alternateRows' + }, + noResults: { + class: _noResults.NoResults, + name: 'noResults' + }, + paging: { + class: _paging.Paging, + name: 'paging' + } +}; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/** + * Export window or global object depending on the environment + */ +var root = exports.root = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self.self === self && self || (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global.global === global && global || undefined; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(107))) + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var forEachProperty = coreUtilityAliases.forEachProperty; + +function defineOnPrototype(ctor, methods) { + var proto = ctor.prototype; + forEachProperty(methods, function(val, key) { + proto[key] = val; + }); +} + +module.exports = defineOnPrototype; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.keyCode = exports.targetEvt = exports.cancelEvt = exports.stopEvt = exports.removeEvt = exports.addEvt = undefined; + +var _root = __webpack_require__(15); + +/** + * DOM event utilities + */ + +/** + * Add event handler for specified event on passed element + * + * @param {DOMElement} obj Element + * @param {String} type Event type + * @param {Function} Handler + * @param {Boolean} capture Specifiy whether the event should be executed in + * the capturing or in the bubbling phase + */ +var addEvt = exports.addEvt = function addEvt(obj, type, func, capture) { + if (obj.addEventListener) { + obj.addEventListener(type, func, capture); + } else if (obj.attachEvent) { + obj.attachEvent('on' + type, func); + } else { + obj['on' + type] = func; + } +}; + +/** + * Remove event handler for specified event on passed element + * + * @param {DOMElement} obj Element + * @param {String} type Event type + * @param {Function} Handler + * @param {Boolean} capture Specifiy whether the event should be executed in + * the capturing or in the bubbling phase + */ +var removeEvt = exports.removeEvt = function removeEvt(obj, type, func, capture) { + if (obj.removeEventListener) { + obj.removeEventListener(type, func, capture); + } else if (obj.detachEvent) { + obj.detachEvent('on' + type, func); + } else { + obj['on' + type] = null; + } +}; + +/** + * Prevents further propagation of the current event in the bubbling phase + * + * @param {Event} evt Event on the DOM + */ +var stopEvt = exports.stopEvt = function stopEvt(evt) { + if (!evt) { + evt = _root.root.event; + } + if (evt.stopPropagation) { + evt.stopPropagation(); + } else { + evt.cancelBubble = true; + } +}; + +/** + * Cancels the event if it is cancelable, without stopping further + * propagation of the event. + * + * @param {Event} evt Event on the DOM + */ +var cancelEvt = exports.cancelEvt = function cancelEvt(evt) { + if (!evt) { + evt = _root.root.event; + } + if (evt.preventDefault) { + evt.preventDefault(); + } else { + evt.returnValue = false; + } +}; + +/** + * Reference to the object that dispatched the event + * + * @param {Event} evt Event on the DOM + * @returns {DOMElement} + */ +var targetEvt = exports.targetEvt = function targetEvt(evt) { + if (!evt) { + evt = _root.root.event; + } + return evt.target || evt.srcElement; +}; + +/** + * Returns the Unicode value of pressed key + * + * @param {Event} evt Event on the DOM + * @returns {Number} + */ +var keyCode = exports.keyCode = function keyCode(evt) { + return evt.charCode ? evt.charCode : evt.keyCode ? evt.keyCode : evt.which ? evt.which : 0; +}; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utc = __webpack_require__(21); + +function callDateGet(d, method) { + return d['get' + (_utc(d) ? 'UTC' : '') + method](); +} + +module.exports = callDateGet; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.contains = exports.matchCase = exports.rgxEsc = exports.isEmpty = exports.trim = undefined; + +var _diacritics = __webpack_require__(127); + +/** + * String utilities + */ + +/** + * Removes whitespace from both sides of passed string + * @param {String} text + * @return {String} + */ +var trim = exports.trim = function trim(text) { + if (text.trim) { + return text.trim(); + } + return text.replace(/^\s*|\s*$/g, ''); +}; + +/** + * Checks if passed string is empty + * @param {String} text + * @return {Boolean} + */ +var isEmpty = exports.isEmpty = function isEmpty(text) { + return trim(text) === ''; +}; + +/** + * Makes regex safe string by escaping special characters from passed string + * @param {String} text + * @return {String} escaped string + */ +var rgxEsc = exports.rgxEsc = function rgxEsc(text) { + var chars = /[-\/\\^$*+?.()|[\]{}]/g; + var escMatch = '\\$&'; + return String(text).replace(chars, escMatch); +}; + +/** + * Returns passed string as lowercase if caseSensitive flag set false. By + * default it returns the string with no casing changes. + * @param {String} text + * @return {String} string + */ +var matchCase = exports.matchCase = function matchCase(text) { + var caseSensitive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!caseSensitive) { + return text.toLowerCase(); + } + return text; +}; + +/** + * Checks if passed data contains the searched term + * @param {String} term Searched term + * @param {String} data Data string + * @param {Boolean} exactMatch Exact match + * @param {Boolean} caseSensitive Case sensitive + * @param {Boolean} ignoreDiacritics Ignore diacritics + * @return {Boolean} + */ +var contains = exports.contains = function contains(term, data) { + var exactMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var caseSensitive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var ignoreDiacritics = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + // Improved by Cedric Wartel (cwl) automatic exact match for selects and + // special characters are now filtered + var regexp = void 0; + var modifier = caseSensitive ? 'g' : 'gi'; + if (ignoreDiacritics) { + term = (0, _diacritics.remove)(term); + data = (0, _diacritics.remove)(data); + } + if (exactMatch) { + regexp = new RegExp('(^\\s*)' + rgxEsc(term) + '(\\s*$)', modifier); + } else { + regexp = new RegExp(rgxEsc(term), modifier); + } + return regexp.test(data); +}; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateGet = __webpack_require__(18); + +function getWeekday(d) { + return callDateGet(d, 'Day'); +} + +module.exports = getWeekday; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var privatePropertyAccessor = __webpack_require__(147); + +module.exports = privatePropertyAccessor('utc'); + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +module.exports = { + sugarObject: Sugar.Object, + sugarArray: Sugar.Array, + sugarDate: Sugar.Date, + sugarString: Sugar.String, + sugarNumber: Sugar.Number, + sugarFunction: Sugar.Function, + sugarRegExp: Sugar.RegExp +}; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var mathAliases = __webpack_require__(7); + +var ceil = mathAliases.ceil, + floor = mathAliases.floor; + +var trunc = Math.trunc || function(n) { + if (n === 0 || !isFinite(n)) return n; + return n < 0 ? ceil(n) : floor(n); +}; + +module.exports = trunc; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var setDate = __webpack_require__(35), + getDate = __webpack_require__(34), + getWeekday = __webpack_require__(20), + classChecks = __webpack_require__(3), + mathAliases = __webpack_require__(7); + +var isNumber = classChecks.isNumber, + abs = mathAliases.abs; + +function setWeekday(d, dow, dir) { + if (!isNumber(dow)) return; + var currentWeekday = getWeekday(d); + if (dir) { + // Allow a "direction" parameter to determine whether a weekday can + // be set beyond the current weekday in either direction. + var ndir = dir > 0 ? 1 : -1; + var offset = dow % 7 - currentWeekday; + if (offset && offset / abs(offset) !== ndir) { + dow += 7 * ndir; + } + } + setDate(d, getDate(d) + dow - currentWeekday); + return d.getTime(); +} + +module.exports = setWeekday; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var buildDateRangeUnits = __webpack_require__(412); + +buildDateRangeUnits(); + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var iterateOverSparseArray = __webpack_require__(144); + +function forEach(arr, fn) { + for (var i = 0, len = arr.length; i < len; i++) { + if (!(i in arr)) { + return iterateOverSparseArray(arr, fn, i); + } + fn(arr[i], i); + } +} + +module.exports = forEach; + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function isDefined(o) { + return o !== undefined; +} + +module.exports = isDefined; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getExtendedDate = __webpack_require__(58); + +function createDate(d, options, forceClone) { + return getExtendedDate(null, d, options, forceClone).date; +} + +module.exports = createDate; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateGet = __webpack_require__(18); + +function getMonth(d) { + return callDateGet(d, 'Month'); +} + +module.exports = getMonth; + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateGet = __webpack_require__(18); + +function getYear(d) { + return callDateGet(d, 'FullYear'); +} + +module.exports = getYear; + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getDaysInMonth = __webpack_require__(86); + +var DateUnits = [ + { + name: 'millisecond', + method: 'Milliseconds', + multiplier: 1, + start: 0, + end: 999 + }, + { + name: 'second', + method: 'Seconds', + multiplier: 1000, + start: 0, + end: 59 + }, + { + name: 'minute', + method: 'Minutes', + multiplier: 60 * 1000, + start: 0, + end: 59 + }, + { + name: 'hour', + method: 'Hours', + multiplier: 60 * 60 * 1000, + start: 0, + end: 23 + }, + { + name: 'day', + alias: 'date', + method: 'Date', + ambiguous: true, + multiplier: 24 * 60 * 60 * 1000, + start: 1, + end: function(d) { + return getDaysInMonth(d); + } + }, + { + name: 'week', + method: 'ISOWeek', + ambiguous: true, + multiplier: 7 * 24 * 60 * 60 * 1000 + }, + { + name: 'month', + method: 'Month', + ambiguous: true, + multiplier: 30.4375 * 24 * 60 * 60 * 1000, + start: 0, + end: 11 + }, + { + name: 'year', + method: 'FullYear', + ambiguous: true, + multiplier: 365.25 * 24 * 60 * 60 * 1000, + start: 0 + } +]; + +module.exports = DateUnits; + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utc = __webpack_require__(21), + callDateGet = __webpack_require__(18); + +function callDateSet(d, method, value, safe) { + // "Safe" denotes not setting the date if the value is the same as what is + // currently set. In theory this should be a noop, however it will cause + // timezone shifts when in the middle of a DST fallback. This is unavoidable + // as the notation itself is ambiguous (i.e. there are two "1:00ams" on + // November 1st, 2015 in northern hemisphere timezones that follow DST), + // however when advancing or rewinding dates this can throw off calculations + // so avoiding this unintentional shifting on an opt-in basis. + if (safe && value === callDateGet(d, method, value)) { + return; + } + d['set' + (_utc(d) ? 'UTC' : '') + method](value); +} + +module.exports = callDateSet; + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utc = __webpack_require__(21); + +function cloneDate(d) { + // Rhino environments have a bug where new Date(d) truncates + // milliseconds so need to call getTime() here. + var clone = new Date(d.getTime()); + _utc(clone, !!_utc(d)); + return clone; +} + +module.exports = cloneDate; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateGet = __webpack_require__(18); + +function getDate(d) { + return callDateGet(d, 'Date'); +} + +module.exports = getDate; + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateSet = __webpack_require__(32); + +function setDate(d, val) { + callDateSet(d, 'Date', val); +} + +module.exports = setDate; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isDefined = __webpack_require__(27), + classChecks = __webpack_require__(3), + callDateSet = __webpack_require__(32), + walkUnitDown = __webpack_require__(94); + +var isFunction = classChecks.isFunction; + +function setUnitAndLowerToEdge(d, startIndex, stopIndex, end) { + walkUnitDown(startIndex, function(unit, i) { + var val = end ? unit.end : unit.start; + if (isFunction(val)) { + val = val(d); + } + callDateSet(d, unit.method, val); + return !isDefined(stopIndex) || i > stopIndex; + }); + return d; +} + +module.exports = setUnitAndLowerToEdge; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function isUndefined(o) { + return o === undefined; +} + +module.exports = isUndefined; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var updateDate = __webpack_require__(50); + +function advanceDate(d, unit, num, reset) { + var set = {}; + set[unit] = num; + return updateDate(d, set, reset, 1); +} + +module.exports = advanceDate; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5); + +var HOURS_INDEX = DateUnitIndexes.HOURS_INDEX, + DAY_INDEX = DateUnitIndexes.DAY_INDEX, + WEEK_INDEX = DateUnitIndexes.WEEK_INDEX, + MONTH_INDEX = DateUnitIndexes.MONTH_INDEX; + +function getLowerUnitIndex(index) { + if (index === MONTH_INDEX) { + return DAY_INDEX; + } else if (index === WEEK_INDEX) { + return HOURS_INDEX; + } + return index - 1; +} + +module.exports = getLowerUnitIndex; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _dateOptions = __webpack_require__(64); + +function getNewDate() { + return _dateOptions('newDateInternal')(); +} + +module.exports = getNewDate; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var methodDefineAliases = __webpack_require__(157), + collectSimilarMethods = __webpack_require__(129); + +var defineInstance = methodDefineAliases.defineInstance; + +function defineInstanceSimilar(sugarNamespace, set, fn, flags) { + defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags); +} + +module.exports = defineInstanceSimilar; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var simpleMerge = __webpack_require__(56); + +function simpleClone(obj) { + return simpleMerge({}, obj); +} + +module.exports = simpleClone; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function spaceSplit(str) { + return str.split(' '); +} + +module.exports = spaceSplit; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + HALF_WIDTH_ZERO: 0x30, + FULL_WIDTH_ZERO: 0xff10, + HALF_WIDTH_PERIOD: '.', + FULL_WIDTH_PERIOD: '.', + HALF_WIDTH_COMMA: ',', + OPEN_BRACE: '{', + CLOSE_BRACE: '}' +}; + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function dateIsValid(d) { + return !isNaN(d.getTime()); +} + +module.exports = dateIsValid; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5), + isDefined = __webpack_require__(27), + getDateParam = __webpack_require__(212), + iterateOverDateUnits = __webpack_require__(61); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX; + +function iterateOverDateParams(params, fn, startIndex, endIndex) { + + function run(name, unit, i) { + var val = getDateParam(params, name); + if (isDefined(val)) { + fn(name, val, unit, i); + } + } + + iterateOverDateUnits(function (unit, i) { + var result = run(unit.name, unit, i); + if (result !== false && i === DAY_INDEX) { + // Check for "weekday", which has a distinct meaning + // in the context of setting a date, but has the same + // meaning as "day" as a unit of time. + result = run('weekday', unit, i); + } + return result; + }, startIndex, endIndex); + +} + +module.exports = iterateOverDateParams; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + DateUnitIndexes = __webpack_require__(5), + getLowerUnitIndex = __webpack_require__(39), + moveToBeginningOfWeek = __webpack_require__(62), + setUnitAndLowerToEdge = __webpack_require__(36); + +var WEEK_INDEX = DateUnitIndexes.WEEK_INDEX, + localeManager = LocaleHelpers.localeManager; + +function moveToBeginningOfUnit(d, unitIndex, localeCode) { + if (unitIndex === WEEK_INDEX) { + moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek()); + } + return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex)); +} + +module.exports = moveToBeginningOfUnit; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + DateUnitIndexes = __webpack_require__(5), + moveToEndOfWeek = __webpack_require__(90), + getLowerUnitIndex = __webpack_require__(39), + setUnitAndLowerToEdge = __webpack_require__(36); + +var WEEK_INDEX = DateUnitIndexes.WEEK_INDEX, + localeManager = LocaleHelpers.localeManager; + +function moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) { + if (unitIndex === WEEK_INDEX) { + moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek()); + } + return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true); +} + +module.exports = moveToEndOfUnit; + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function tzOffset(d) { + return d.getTimezoneOffset(); +} + +module.exports = tzOffset; + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + DateUnitIndexes = __webpack_require__(5), + trunc = __webpack_require__(23), + setDate = __webpack_require__(35), + getDate = __webpack_require__(34), + getMonth = __webpack_require__(29), + getNewDate = __webpack_require__(40), + setWeekday = __webpack_require__(24), + mathAliases = __webpack_require__(7), + callDateGet = __webpack_require__(18), + classChecks = __webpack_require__(3), + resetLowerUnits = __webpack_require__(225), + getLowerUnitIndex = __webpack_require__(39), + getHigherUnitIndex = __webpack_require__(215), + callDateSetWithWeek = __webpack_require__(204), + iterateOverDateParams = __webpack_require__(46); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX, + WEEK_INDEX = DateUnitIndexes.WEEK_INDEX, + MONTH_INDEX = DateUnitIndexes.MONTH_INDEX, + YEAR_INDEX = DateUnitIndexes.YEAR_INDEX, + round = mathAliases.round, + isNumber = classChecks.isNumber; + +function updateDate(d, params, reset, advance, prefer, weekdayDir) { + var upperUnitIndex; + + function setUpperUnit(unitName, unitIndex) { + if (prefer && !upperUnitIndex) { + if (unitName === 'weekday') { + upperUnitIndex = WEEK_INDEX; + } else { + upperUnitIndex = getHigherUnitIndex(unitIndex); + } + } + } + + function setSpecificity(unitIndex) { + // Other functions may preemptively set the specificity before arriving + // here so concede to them if they have already set more specific units. + if (unitIndex > params.specificity) { + return; + } + params.specificity = unitIndex; + } + + function canDisambiguate() { + if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) { + return; + } + switch(prefer) { + case -1: return d > getNewDate(); + case 1: return d < getNewDate(); + } + } + + function disambiguateHigherUnit() { + var unit = DateUnits[upperUnitIndex]; + advance = prefer; + setUnit(unit.name, 1, unit, upperUnitIndex); + } + + function handleFraction(unit, unitIndex, fraction) { + if (unitIndex) { + var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)]; + var val = round(unit.multiplier / lowerUnit.multiplier * fraction); + params[lowerUnit.name] = val; + } + } + + function monthHasShifted(d, targetMonth) { + if (targetMonth < 0) { + targetMonth = targetMonth % 12 + 12; + } + return targetMonth % 12 !== getMonth(d); + } + + function setUnit(unitName, value, unit, unitIndex) { + var method = unit.method, checkMonth, fraction; + + setUpperUnit(unitName, unitIndex); + setSpecificity(unitIndex); + + fraction = value % 1; + if (fraction) { + handleFraction(unit, unitIndex, fraction); + value = trunc(value); + } + + if (unitName === 'weekday') { + if (!advance) { + // Weekdays are always considered absolute units so simply set them + // here even if it is an "advance" operation. This is to help avoid + // ambiguous meanings in "advance" as well as to neatly allow formats + // like "Wednesday of next week" without more complex logic. + setWeekday(d, value, weekdayDir); + } + return; + } + checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28; + + // If we are advancing or rewinding, then we need we need to set the + // absolute time if the unit is "hours" or less. This is due to the fact + // that setting by method is ambiguous during DST shifts. For example, + // 1:00am on November 1st 2015 occurs twice in North American timezones + // with DST, the second time being after the clocks are rolled back at + // 2:00am. When springing forward this is automatically handled as there + // is no 2:00am so the date automatically jumps to 3:00am. However, when + // rolling back, setHours(2) will always choose the first "2am" even if + // the date is currently set to the second, causing unintended jumps. + // This ambiguity is unavoidable when setting dates as the notation is + // ambiguous. However when advancing, we clearly want the resulting date + // to be an acutal hour ahead, which can only be accomplished by setting + // the absolute time. Conversely, any unit higher than "hours" MUST use + // the internal set methods, as they are ambiguous as absolute units of + // time. Years may be 365 or 366 days depending on leap years, months are + // all over the place, and even days may be 23-25 hours depending on DST + // shifts. Finally, note that the kind of jumping described above will + // occur when calling ANY "set" method on the date and will occur even if + // the value being set is identical to the one currently set (i.e. + // setHours(2) on a date at 2am may not be a noop). This is precarious, + // so avoiding this situation in callDateSet by checking up front that + // the value is not the same before setting. + if (advance && !unit.ambiguous) { + d.setTime(d.getTime() + (value * advance * unit.multiplier)); + return; + } else if (advance) { + if (unitIndex === WEEK_INDEX) { + value *= 7; + method = DateUnits[DAY_INDEX].method; + } + value = (value * advance) + callDateGet(d, method); + } + callDateSetWithWeek(d, method, value, advance); + if (checkMonth && monthHasShifted(d, value)) { + // As we are setting the units in reverse order, there is a chance that + // our date may accidentally traverse into a new month, such as setting + // { month: 1, date 15 } on January 31st. Check for this here and reset + // the date to the last day of the previous month if this has happened. + setDate(d, 0); + } + } + + if (isNumber(params) && advance) { + // If param is a number and advancing, the number is in milliseconds. + params = { millisecond: params }; + } else if (isNumber(params)) { + // Otherwise just set the timestamp and return. + d.setTime(params); + return d; + } + + iterateOverDateParams(params, setUnit); + + if (reset && params.specificity) { + resetLowerUnits(d, params.specificity); + } + + // If past or future is preferred, then the process of "disambiguation" will + // ensure that an ambiguous time/date ("4pm", "thursday", "June", etc.) will + // be in the past or future. Weeks are only considered ambiguous if there is + // a weekday, i.e. "thursday" is an ambiguous week, but "the 4th" is an + // ambiguous month. + if (canDisambiguate()) { + disambiguateHigherUnit(); + } + return d; +} + +module.exports = updateDate; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isValidRangeMember = __webpack_require__(419); + +function rangeIsValid(range) { + return isValidRangeMember(range.start) && + isValidRangeMember(range.end) && + typeof range.start === typeof range.end; +} + +module.exports = rangeIsValid; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parse = undefined; + +var _types = __webpack_require__(6); + +/** + * Takes a string, removes all formatting/cruft and returns the raw float value + * @param {String} Formatted number + * @param {String} Decimal type '.' or ',' + * @return {Number} Unformatted number + * + * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js + */ +var parse = exports.parse = function parse(value) { + var decimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.'; + + // Return the value as-is if it's already a number + if ((0, _types.isNumber)(value)) { + return value; + } + + // Build regex to strip out everything except digits, decimal point and + // minus sign + var regex = new RegExp('[^0-9-' + decimal + ']', ['g']); + var unformatted = parseFloat(('' + value).replace(/\((.*)\)/, '-$1') // replace bracketed values with negatives + .replace(regex, '') // strip out any cruft + .replace(decimal, '.') // make sure decimal point is standard + ); + + // This will fail silently + return !isNaN(unformatted) ? unformatted : 0; +}; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function isObjectType(obj, type) { + return !!obj && (type || typeof obj) === 'object'; +} + +module.exports = isObjectType; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var mathAliases = __webpack_require__(7), + repeatString = __webpack_require__(148); + +var abs = mathAliases.abs; + +function padNumber(num, place, sign, base, replacement) { + var str = abs(num).toString(base || 10); + str = repeatString(replacement || '0', place - str.replace(/\.\d+/, '').length) + str; + if (sign || num < 0) { + str = (num < 0 ? '-' : '+') + str; + } + return str; +} + +module.exports = padNumber; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function simpleCapitalize(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} + +module.exports = simpleCapitalize; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var forEachProperty = coreUtilityAliases.forEachProperty; + +function simpleMerge(target, source) { + forEachProperty(source, function(val, key) { + target[key] = val; + }); + return target; +} + +module.exports = simpleMerge; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var EnglishLocaleBaseDefinition = __webpack_require__(292), + simpleMerge = __webpack_require__(56), + simpleClone = __webpack_require__(42); + +function getEnglishVariant(v) { + return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v); +} + +module.exports = getEnglishVariant; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var MINUTES = __webpack_require__(98), + ParsingTokens = __webpack_require__(99), + LocaleHelpers = __webpack_require__(8), + DateUnitIndexes = __webpack_require__(5), + _utc = __webpack_require__(21), + trunc = __webpack_require__(23), + forEach = __webpack_require__(26), + tzOffset = __webpack_require__(49), + resetTime = __webpack_require__(92), + isDefined = __webpack_require__(27), + setWeekday = __webpack_require__(24), + updateDate = __webpack_require__(50), + getNewDate = __webpack_require__(40), + isUndefined = __webpack_require__(37), + classChecks = __webpack_require__(3), + advanceDate = __webpack_require__(38), + simpleClone = __webpack_require__(42), + isObjectType = __webpack_require__(53), + moveToEndOfUnit = __webpack_require__(48), + deleteDateParam = __webpack_require__(208), + coreUtilityAliases = __webpack_require__(10), + getParsingTokenValue = __webpack_require__(218), + moveToBeginningOfUnit = __webpack_require__(47), + iterateOverDateParams = __webpack_require__(46), + getYearFromAbbreviation = __webpack_require__(222), + iterateOverHigherDateParams = __webpack_require__(224); + +var isNumber = classChecks.isNumber, + isString = classChecks.isString, + isDate = classChecks.isDate, + hasOwn = coreUtilityAliases.hasOwn, + getOwn = coreUtilityAliases.getOwn, + English = LocaleHelpers.English, + localeManager = LocaleHelpers.localeManager, + DAY_INDEX = DateUnitIndexes.DAY_INDEX, + WEEK_INDEX = DateUnitIndexes.WEEK_INDEX, + MONTH_INDEX = DateUnitIndexes.MONTH_INDEX, + YEAR_INDEX = DateUnitIndexes.YEAR_INDEX; + +function getExtendedDate(contextDate, d, opt, forceClone) { + + var date, set, loc, options, afterCallbacks, relative, weekdayDir; + + afterCallbacks = []; + options = getDateOptions(opt); + + function getDateOptions(opt) { + var options = isString(opt) ? { locale: opt } : opt || {}; + options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past'); + return options; + } + + function getFormatParams(match, dif) { + var set = getOwn(options, 'params') || {}; + forEach(dif.to, function(field, i) { + var str = match[i + 1], token, val; + if (!str) return; + if (field === 'yy' || field === 'y') { + field = 'year'; + val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer')); + } else if (token = getOwn(ParsingTokens, field)) { + field = token.param || field; + val = getParsingTokenValue(token, str); + } else { + val = loc.getTokenValue(field, str); + } + set[field] = val; + }); + return set; + } + + // Clone date will set the utc flag, but it will + // be overriden later, so set option flags instead. + function cloneDateByFlag(d, clone) { + if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) { + options.fromUTC = true; + } + if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) { + options.setUTC = true; + } + if (clone) { + d = new Date(d.getTime()); + } + return d; + } + + function afterDateSet(fn) { + afterCallbacks.push(fn); + } + + function fireCallbacks() { + forEach(afterCallbacks, function(fn) { + fn.call(); + }); + } + + function parseStringDate(str) { + + str = str.toLowerCase(); + + // The act of getting the locale will initialize + // if it is missing and add the required formats. + loc = localeManager.get(getOwn(options, 'locale')); + + for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) { + match = str.match(dif.reg); + if (match) { + + // Note that caching the format will modify the compiledFormats array + // which is not a good idea to do inside its for loop, however we + // know at this point that we have a matched format and that we will + // break out below, so simpler to do it here. + loc.cacheFormat(dif, i); + + set = getFormatParams(match, dif); + + if (isDefined(set.timestamp)) { + str = set.timestamp; + set = null; + break; + } + + if (isDefined(set.ampm)) { + handleAmpm(set.ampm); + } + + if (set.utc || isDefined(set.tzHour)) { + handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign); + } + + if (isDefined(set.shift) && isUndefined(set.unit)) { + // "next january", "next monday", etc + handleUnitlessShift(); + } + + if (isDefined(set.num) && isUndefined(set.unit)) { + // "the second of January", etc + handleUnitlessNum(set.num); + } + + if (set.midday) { + // "noon" and "midnight" + handleMidday(set.midday); + } + + if (isDefined(set.day)) { + // Relative day localizations such as "today" and "tomorrow". + handleRelativeDay(set.day); + } + + if (isDefined(set.unit)) { + // "3 days ago", etc + handleRelativeUnit(set.unit); + } + + if (set.edge) { + // "the end of January", etc + handleEdge(set.edge, set); + } + + if (set.yearSign) { + set.year *= set.yearSign; + } + + break; + } + } + + if (!set) { + // Fall back to native parsing + date = new Date(str); + if (getOwn(options, 'fromUTC')) { + // Falling back to system date here which cannot be parsed as UTC, + // so if we're forcing UTC then simply add the offset. + date.setTime(date.getTime() + (tzOffset(date) * MINUTES)); + } + } else if (relative) { + updateDate(date, set, false, 1); + } else { + if (_utc(date)) { + // UTC times can traverse into other days or even months, + // so preemtively reset the time here to prevent this. + resetTime(date); + } + updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir); + } + fireCallbacks(); + return date; + } + + function handleAmpm(ampm) { + if (ampm === 1 && set.hour < 12) { + // If the time is 1pm-11pm advance the time by 12 hours. + set.hour += 12; + } else if (ampm === 0 && set.hour === 12) { + // If it is 12:00am then set the hour to 0. + set.hour = 0; + } + } + + function handleTimezoneOffset(tzHour, tzMinute, tzSign) { + // Adjust for timezone offset + _utc(date, true); + var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0)); + if (offset) { + set.minute = (set.minute || 0) - offset; + } + } + + function handleUnitlessShift() { + if (isDefined(set.month)) { + // "next January" + set.unit = YEAR_INDEX; + } else if (isDefined(set.weekday)) { + // "next Monday" + set.unit = WEEK_INDEX; + } + } + + function handleUnitlessNum(num) { + if (isDefined(set.weekday)) { + // "The second Tuesday of March" + setOrdinalWeekday(num); + } else if (isDefined(set.month)) { + // "The second of March" + set.date = set.num; + } + } + + function handleMidday(hour) { + set.hour = hour % 24; + if (hour > 23) { + // If the date has hours past 24, we need to prevent it from traversing + // into a new day as that would make it being part of a new week in + // ambiguous dates such as "Monday". + afterDateSet(function() { + advanceDate(date, 'date', trunc(hour / 24)); + }); + } + } + + function handleRelativeDay() { + resetTime(date); + if (isUndefined(set.unit)) { + set.unit = DAY_INDEX; + set.num = set.day; + delete set.day; + } + } + + function handleRelativeUnit(unitIndex) { + var num = isDefined(set.num) ? set.num : 1; + + // If a weekday is defined, there are 3 possible formats being applied: + // + // 1. "the day after monday": unit is days + // 2. "next monday": short for "next week monday", unit is weeks + // 3. "the 2nd monday of next month": unit is months + // + // In the first case, we need to set the weekday up front, as the day is + // relative to it. The second case also needs to be handled up front for + // formats like "next monday at midnight" which will have its weekday reset + // if not set up front. The last case will set up the params necessary to + // shift the weekday and allow separateAbsoluteUnits below to handle setting + // it after the date has been shifted. + if(isDefined(set.weekday)) { + if(unitIndex === MONTH_INDEX) { + setOrdinalWeekday(num); + num = 1; + } else { + updateDate(date, { weekday: set.weekday }, true); + delete set.weekday; + } + } + + if (set.half) { + // Allow localized "half" as a standalone colloquialism. Purposely avoiding + // the locale number system to reduce complexity. The units "month" and + // "week" are purposely excluded in the English date formats below, as + // "half a week" and "half a month" are meaningless as exact dates. + num *= set.half; + } + + if (isDefined(set.shift)) { + // Shift and unit, ie "next month", "last week", etc. + num *= set.shift; + } else if (set.sign) { + // Unit and sign, ie "months ago", "weeks from now", etc. + num *= set.sign; + } + + if (isDefined(set.day)) { + // "the day after tomorrow" + num += set.day; + delete set.day; + } + + // Formats like "the 15th of last month" or "6:30pm of next week" + // contain absolute units in addition to relative ones, so separate + // them here, remove them from the params, and set up a callback to + // set them after the relative ones have been set. + separateAbsoluteUnits(unitIndex); + + // Finally shift the unit. + set[English.units[unitIndex]] = num; + relative = true; + } + + function handleEdge(edge, params) { + var edgeIndex = params.unit, weekdayOfMonth; + if (!edgeIndex) { + // If we have "the end of January", then we need to find the unit index. + iterateOverHigherDateParams(params, function(unitName, val, unit, i) { + if (unitName === 'weekday' && isDefined(params.month)) { + // If both a month and weekday exist, then we have a format like + // "the last tuesday in November, 2012", where the "last" is still + // relative to the end of the month, so prevent the unit "weekday" + // from taking over. + return; + } + edgeIndex = i; + }); + } + if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) { + // If a weekday in a month exists (as described above), + // then set it up to be set after the date has been shifted. + weekdayOfMonth = params.weekday; + delete params.weekday; + } + afterDateSet(function() { + var stopIndex; + // "edge" values that are at the very edge are "2" so the beginning of the + // year is -2 and the end of the year is 2. Conversely, the "last day" is + // actually 00:00am so it is 1. -1 is reserved but unused for now. + if (edge < 0) { + moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale')); + } else if (edge > 0) { + if (edge === 1) { + stopIndex = DAY_INDEX; + moveToBeginningOfUnit(date, DAY_INDEX); + } + moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex); + } + if (isDefined(weekdayOfMonth)) { + setWeekday(date, weekdayOfMonth, -edge); + resetTime(date); + } + }); + if (edgeIndex === MONTH_INDEX) { + params.specificity = DAY_INDEX; + } else { + params.specificity = edgeIndex - 1; + } + } + + function setOrdinalWeekday(num) { + // If we have "the 2nd Tuesday of June", then pass the "weekdayDir" + // flag along to updateDate so that the date does not accidentally traverse + // into the previous month. This needs to be independent of the "prefer" + // flag because we are only ensuring that the weekday is in the future, not + // the entire date. + set.weekday = 7 * (num - 1) + set.weekday; + set.date = 1; + weekdayDir = 1; + } + + function separateAbsoluteUnits(unitIndex) { + var params; + + iterateOverDateParams(set, function(name, val, unit, i) { + // If there is a time unit set that is more specific than + // the matched unit we have a string like "5:30am in 2 minutes", + // which is meaningless, so invalidate the date... + if (i >= unitIndex) { + date.setTime(NaN); + return false; + } else if (i < unitIndex) { + // ...otherwise set the params to set the absolute date + // as a callback after the relative date has been set. + params = params || {}; + params[name] = val; + deleteDateParam(set, name); + } + }); + if (params) { + afterDateSet(function() { + updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir); + }); + if (set.edge) { + // "the end of March of next year" + handleEdge(set.edge, params); + delete set.edge; + } + } + } + + if (contextDate && d) { + // If a context date is passed ("get" and "unitsFromNow"), + // then use it as the starting point. + date = cloneDateByFlag(contextDate, true); + } else { + date = getNewDate(); + } + + _utc(date, getOwn(options, 'fromUTC')); + + if (isString(d)) { + date = parseStringDate(d); + } else if (isDate(d)) { + date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone); + } else if (isObjectType(d)) { + set = simpleClone(d); + updateDate(date, set, true); + } else if (isNumber(d) || d === null) { + date.setTime(d); + } + // A date created by parsing a string presumes that the format *itself* is + // UTC, but not that the date, once created, should be manipulated as such. In + // other words, if you are creating a date object from a server time + // "2012-11-15T12:00:00Z", in the majority of cases you are using it to create + // a date that will, after creation, be manipulated as local, so reset the utc + // flag here unless "setUTC" is also set. + _utc(date, !!getOwn(options, 'setUTC')); + return { + set: set, + date: date + }; +} + +module.exports = getExtendedDate; + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var trunc = __webpack_require__(23), + cloneDate = __webpack_require__(33), + advanceDate = __webpack_require__(38); + +function getTimeDistanceForUnit(d1, d2, unit) { + var fwd = d2 > d1, num, tmp; + if (!fwd) { + tmp = d2; + d2 = d1; + d1 = tmp; + } + num = d2 - d1; + if (unit.multiplier > 1) { + num = trunc(num / unit.multiplier); + } + // For higher order with potential ambiguity, use the numeric calculation + // as a starting point, then iterate until we pass the target date. + if (unit.ambiguous) { + d1 = cloneDate(d1); + if (num) { + advanceDate(d1, unit.name, num); + } + while (d1 < d2) { + advanceDate(d1, unit.name, 1); + if (d1 > d2) { + break; + } + num += 1; + } + } + return fwd ? -num : num; +} + +module.exports = getTimeDistanceForUnit; + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ISODefaults = __webpack_require__(63), + setDate = __webpack_require__(35), + getDate = __webpack_require__(34), + cloneDate = __webpack_require__(33), + isUndefined = __webpack_require__(37), + moveToEndOfWeek = __webpack_require__(90), + moveToBeginningOfWeek = __webpack_require__(62), + moveToFirstDayOfWeekYear = __webpack_require__(91); + +var ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK, + ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR; + +function getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) { + var isoWeek, n = 0; + if (isUndefined(firstDayOfWeek)) { + firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK; + } + if (isUndefined(firstDayOfWeekYear)) { + firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR; + } + // Moving to the end of the week allows for forward year traversal, ie + // Dec 29 2014 is actually week 01 of 2015. + isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek); + moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear); + if (allowPrevious && d < isoWeek) { + // If the date is still before the start of the year, then it should be + // the last week of the previous year, ie Jan 1 2016 is actually week 53 + // of 2015, so move to the beginning of the week to traverse the year. + isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek); + moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear); + } + while (isoWeek <= d) { + // Doing a very simple walk to get the week number. + setDate(isoWeek, getDate(isoWeek) + 7); + n++; + } + return n; +} + +module.exports = getWeekNumber; + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + DateUnitIndexes = __webpack_require__(5), + isUndefined = __webpack_require__(37); + +var YEAR_INDEX = DateUnitIndexes.YEAR_INDEX; + +function iterateOverDateUnits(fn, startIndex, endIndex) { + endIndex = endIndex || 0; + if (isUndefined(startIndex)) { + startIndex = YEAR_INDEX; + } + for (var index = startIndex; index >= endIndex; index--) { + if (fn(DateUnits[index], index) === false) { + break; + } + } +} + +module.exports = iterateOverDateUnits; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var setWeekday = __webpack_require__(24), + getWeekday = __webpack_require__(20), + mathAliases = __webpack_require__(7); + +var floor = mathAliases.floor; + +function moveToBeginningOfWeek(d, firstDayOfWeek) { + setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek); + return d; +} + +module.exports = moveToBeginningOfWeek; + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + ISO_FIRST_DAY_OF_WEEK: 1, + ISO_FIRST_DAY_OF_WEEK_YEAR: 4 +}; + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DATE_OPTIONS = __webpack_require__(291), + namespaceAliases = __webpack_require__(22), + defineOptionsAccessor = __webpack_require__(133); + +var sugarDate = namespaceAliases.sugarDate; + +module.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS); + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3), + rangeIsValid = __webpack_require__(51), + incrementDate = __webpack_require__(105), + incrementNumber = __webpack_require__(417), + incrementString = __webpack_require__(418), + getGreaterPrecision = __webpack_require__(414), + getDateIncrementObject = __webpack_require__(103); + +var isNumber = classChecks.isNumber, + isString = classChecks.isString, + isDate = classChecks.isDate, + isFunction = classChecks.isFunction; + +function rangeEvery(range, step, countOnly, fn) { + var increment, + precision, + dio, + unit, + start = range.start, + end = range.end, + inverse = end < start, + current = start, + index = 0, + result = []; + + if (!rangeIsValid(range)) { + return countOnly ? NaN : []; + } + if (isFunction(step)) { + fn = step; + step = null; + } + step = step || 1; + if (isNumber(start)) { + precision = getGreaterPrecision(start, step); + increment = function() { + return incrementNumber(current, step, precision); + }; + } else if (isString(start)) { + increment = function() { + return incrementString(current, step); + }; + } else if (isDate(start)) { + dio = getDateIncrementObject(step); + step = dio[0]; + unit = dio[1]; + increment = function() { + return incrementDate(current, step, unit); + }; + } + // Avoiding infinite loops + if (inverse && step > 0) { + step *= -1; + } + while(inverse ? current >= end : current <= end) { + if (!countOnly) { + result.push(current); + } + if (fn) { + fn(current, index, range); + } + current = increment(); + index++; + } + return countOnly ? index - 1 : result; +} + +module.exports = rangeEvery; + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = 'year|month|week|day|hour|minute|second|millisecond'; + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.has = undefined; + +var _string = __webpack_require__(19); + +/** + * Checks if given item can be found in the passed collection + * @param {Array} arr collection + * @param {Any} val item to search + * @param {Boolean} caseSensitive respects case if true + * @return {Boolean} + */ +var has = exports.has = function has(arr, val, caseSensitive) { + var sCase = Boolean(caseSensitive); + for (var i = 0, l = arr.length; i < l; i++) { + if ((0, _string.matchCase)(arr[i].toString(), sCase) === val) { + return true; + } + } + return false; +}; /** + * Array utilities + */ + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BaseDropdown = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _sort = __webpack_require__(108); + +var _types = __webpack_require__(6); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Base class for Dropdown and CheckList UI components + * @export + * @class BaseDropdown + * @extends {Feature} + */ +var BaseDropdown = exports.BaseDropdown = function (_Feature) { + _inherits(BaseDropdown, _Feature); + + /** + * Creates an instance of BaseDropdown + * @param {TableFilter} tf + */ + function BaseDropdown(tf) { + _classCallCheck(this, BaseDropdown); + + var _this = _possibleConstructorReturn(this, (BaseDropdown.__proto__ || Object.getPrototypeOf(BaseDropdown)).call(this, tf, 'baseDropdown')); + + var f = _this.config; + + /** + * Filter options custom sorter on a column basis + * @type {Object} + */ + _this.customSorter = (0, _types.isObj)(f.filter_options_sorter) && (0, _types.isArray)(f.filter_options_sorter.col) && (0, _types.isArray)(f.filter_options_sorter.comparer) ? f.filter_options_sorter : null; + + // TODO: move here all properties shared by Dropdown CheckList + + /** + * Has custom options + * @type {Boolean} + * @private + */ + _this.isCustom = false; + + /** + * List of options values + * @type {Array} + * @private + */ + _this.opts = []; + + /** + * List of options texts for custom values + * @type {Array} + * @private + */ + _this.optsTxt = []; + + /** + * List of options to be excluded from the checklist filter + * @type {Array} + * @private + */ + _this.excludedOpts = []; + return _this; + } + + /** + * Sort passed options based on the type of the specified column + * @param {Number} colIndex Column index + * @param {Array} [options=[]] Collection of values + * @return {Array} Sorted values + * @private + */ + + + _createClass(BaseDropdown, [{ + key: 'sortOptions', + value: function sortOptions(colIndex) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var tf = this.tf; + + if (tf.isCustomOptions(colIndex) || !tf.sortSlc || (0, _types.isArray)(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1) { + return options; + } + + var caseSensitive = tf.caseSensitive, + sortNumDesc = tf.sortNumDesc; + + var compareFn = void 0; + + if (this.customSorter && this.customSorter.col.indexOf(colIndex) !== -1) { + var idx = this.customSorter.col.indexOf(colIndex); + compareFn = this.customSorter.comparer[idx]; + } else if (tf.hasType(colIndex, [_const.NUMBER, _const.FORMATTED_NUMBER])) { + var decimal = tf.getDecimal(colIndex); + var comparer = _sort.numSortAsc; + if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) { + comparer = _sort.numSortDesc; + } + compareFn = (0, _sort.sortNumberStr)(comparer, decimal); + } else if (tf.hasType(colIndex, [_const.DATE])) { + var locale = tf.feature('dateType').getLocale(colIndex); + var _comparer = _sort.dateSortAsc; + compareFn = (0, _sort.sortDateStr)(_comparer, locale); + } else { + // string + compareFn = caseSensitive ? undefined : _sort.ignoreCase; + } + + return options.sort(compareFn); + } + + /** + * Regenerate filters of specified columns and maintain selection if any + * @param {Array} colIndexes Collection of column indexes + * @private + */ + + }, { + key: 'refreshFilters', + value: function refreshFilters(colIndexes) { + var _this2 = this; + + colIndexes.forEach(function (colIdx) { + var values = _this2.getValues(colIdx); + _this2.build(colIdx, _this2.tf.linkedFilters); + _this2.selectOptions(colIdx, values); + }); + } + }]); + + return BaseDropdown; +}(_feature.Feature); + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Event emitter class + */ +var Emitter = exports.Emitter = function () { + /** + * Creates an instance of Emitter. + */ + function Emitter() { + _classCallCheck(this, Emitter); + + /** + * Events object + * @type {Object} + */ + this.events = {}; + } + + /** + * Subscribe to an event + * @param {Array} evts Collection of event names + * @param {Function} fn Function invoked when event is emitted + */ + + + _createClass(Emitter, [{ + key: "on", + value: function on(evts, fn) { + var _this = this; + + evts.forEach(function (evt) { + _this.events[evt] = _this.events[evt] || []; + _this.events[evt].push(fn); + }); + } + + /** + * Unsubscribe to an event + * @param {Array} evts Collection of event names + * @param {Function} fn Function invoked when event is emitted + */ + + }, { + key: "off", + value: function off(evts, fn) { + var _this2 = this; + + evts.forEach(function (evt) { + if (evt in _this2.events) { + _this2.events[evt].splice(_this2.events[evt].indexOf(fn), 1); + } + }); + } + + /** + * Emit an event + * @param {String} evt Event name followed by any other argument passed to + * the invoked function + */ + + }, { + key: "emit", + value: function emit(evt /*, args...*/) { + if (evt in this.events) { + for (var i = 0; i < this.events[evt].length; i++) { + this.events[evt][i].apply(this, [].slice.call(arguments, 1)); + } + } + } + }]); + + return Emitter; +}(); + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CheckList = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _baseDropdown = __webpack_require__(68); + +var _dom = __webpack_require__(9); + +var _array = __webpack_require__(67); + +var _string = __webpack_require__(19); + +var _event = __webpack_require__(17); + +var _types = __webpack_require__(6); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Checklist filter UI component + * @export + * @class CheckList + * @extends {BaseDropdown} + */ +var CheckList = exports.CheckList = function (_BaseDropdown) { + _inherits(CheckList, _BaseDropdown); + + /** + * Creates an instance of CheckList + * @param {TableFilter} tf TableFilter instance + */ + function CheckList(tf) { + _classCallCheck(this, CheckList); + + var _this = _possibleConstructorReturn(this, (CheckList.__proto__ || Object.getPrototypeOf(CheckList)).call(this, tf, 'checkList')); + + var f = _this.config; + + /** + * List of container DOM elements + * @type {Array} + */ + _this.containers = []; + + /** + * Css class for the container of the checklist filter (div) + * @type {String} + */ + _this.containerCssClass = f.div_checklist_css_class || 'div_checklist'; + + /** + * Css class for the checklist filter element (ul) + * @type {String} + */ + _this.filterCssClass = f.checklist_css_class || 'flt_checklist'; + + /** + * Css class for the item of a checklist (li) + * @type {String} + */ + _this.itemCssClass = f.checklist_item_css_class || 'flt_checklist_item'; + + /** + * Css class for a selected item of a checklist (li) + * @type {String} + */ + _this.selectedItemCssClass = f.checklist_selected_item_css_class || 'flt_checklist_slc_item'; + + /** + * Text placed in the filter's container when load filter on demand + * feature is enabled + * @type {String} + */ + _this.activateText = f.activate_checklist_text || 'Click to load filter data'; + + /** + * Css class for a disabled item of a checklist (li) + * @type {String} + */ + _this.disabledItemCssClass = f.checklist_item_disabled_css_class || 'flt_checklist_item_disabled'; + + /** + * Enable the reset filter option as first item + * @type {Boolean} + */ + _this.enableResetOption = f.enable_checklist_reset_filter === false ? false : true; + + /** + * Prefix for container element ID + * @type {String} + * @private + */ + _this.prfx = 'chkdiv_'; + return _this; + } + + /** + * Checklist option click event handler + * @param {Event} evt + * @private + */ + + + _createClass(CheckList, [{ + key: 'optionClick', + value: function optionClick(evt) { + var elm = (0, _event.targetEvt)(evt); + var tf = this.tf; + + this.emitter.emit('filter-focus', tf, elm); + this.setCheckListValues(elm); + tf.filter(); + } + + /** + * Checklist container click event handler for load-on-demand feature + * @param {Event} evt + * @private + */ + + }, { + key: 'onCheckListClick', + value: function onCheckListClick(evt) { + var _this2 = this; + + var elm = (0, _event.targetEvt)(evt); + if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') { + var ct = elm.getAttribute('ct'); + var div = this.containers[ct]; + this.build(ct); + (0, _event.removeEvt)(div, 'click', function (evt) { + return _this2.onCheckListClick(evt); + }); + } + } + + /** + * Refresh all checklist filters + */ + + }, { + key: 'refreshAll', + value: function refreshAll() { + var colIdxs = this.tf.getFiltersByType(_const.CHECKLIST, true); + this.refreshFilters(colIdxs); + } + + /** + * Initialize checklist filter + * @param {Number} colIndex Column index + * @param {Boolean} isExternal External filter flag + * @param {DOMElement} container Dom element containing the filter + */ + + }, { + key: 'init', + value: function init(colIndex, isExternal, container) { + var _this3 = this; + + var tf = this.tf; + var externalFltTgtId = isExternal ? tf.externalFltTgtIds[colIndex] : null; + + var divCont = (0, _dom.createElm)('div', ['id', '' + this.prfx + colIndex + '_' + tf.id], ['ct', colIndex], ['filled', '0']); + divCont.className = this.containerCssClass; + + //filter is appended in desired element + if (externalFltTgtId) { + (0, _dom.elm)(externalFltTgtId).appendChild(divCont); + } else { + container.appendChild(divCont); + } + + this.containers[colIndex] = divCont; + tf.fltIds.push(tf.buildFilterId(colIndex)); + + if (!tf.loadFltOnDemand) { + this.build(colIndex); + } else { + (0, _event.addEvt)(divCont, 'click', function (evt) { + return _this3.onCheckListClick(evt); + }); + divCont.appendChild((0, _dom.createText)(this.activateText)); + } + + this.emitter.on(['build-checklist-filter'], function (tf, colIndex, isLinked) { + return _this3.build(colIndex, isLinked); + }); + + this.emitter.on(['select-checklist-options'], function (tf, colIndex, values) { + return _this3.selectOptions(colIndex, values); + }); + + this.emitter.on(['rows-changed'], function () { + return _this3.refreshAll(); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Build checklist UI + * @param {Number} colIndex Column index + * @param {Boolean} isLinked Enable linked filters behaviour + */ + + }, { + key: 'build', + value: function build(colIndex) { + var isLinked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var tf = this.tf; + colIndex = parseInt(colIndex, 10); + + this.emitter.emit('before-populating-filter', tf, colIndex); + + /** @inherited */ + this.opts = []; + /** @inherited */ + this.optsTxt = []; + + var flt = this.containers[colIndex]; + var ul = (0, _dom.createElm)('ul', ['id', tf.fltIds[colIndex]], ['colIndex', colIndex]); + ul.className = this.filterCssClass; + + var rows = tf.dom().rows; + var nbRows = tf.getRowsNb(true); + var caseSensitive = tf.caseSensitive; + /** @inherited */ + this.isCustom = tf.isCustomOptions(colIndex); + + //Retrieves custom values + if (this.isCustom) { + var customValues = tf.getCustomOptions(colIndex); + this.opts = customValues[0]; + this.optsTxt = customValues[1]; + } + + var activeIdx = void 0; + var activeFilterId = tf.getActiveFilterId(); + if (isLinked && activeFilterId) { + activeIdx = tf.getColumnIndexFromFilterId(activeFilterId); + } + + var filteredDataCol = []; + if (isLinked && tf.disableExcludedOptions) { + /** @inherited */ + this.excludedOpts = []; + } + + flt.innerHTML = ''; + + for (var k = tf.refRow; k < nbRows; k++) { + // always visible rows don't need to appear on selects as always + // valid + if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) { + continue; + } + + var cells = rows[k].cells; + var ncells = cells.length; + + // checks if row has exact cell # + if (ncells !== tf.nbCells || this.isCustom) { + continue; + } + + // this loop retrieves cell data + for (var j = 0; j < ncells; j++) { + if (colIndex !== j) { + continue; + } + if (isLinked && !tf.disableExcludedOptions && !tf.paging && !tf.isRowDisplayed(k) || tf.paging && activeIdx && !tf.isRowValid(k)) { + continue; + } + + var cellValue = tf.getCellValue(cells[j]); + //Vary Peter's patch + var cellString = (0, _string.matchCase)(cellValue, caseSensitive); + // checks if celldata is already in array + if (!(0, _array.has)(this.opts, cellString, caseSensitive)) { + this.opts.push(cellValue); + } + var filteredCol = filteredDataCol[j]; + if (isLinked && tf.disableExcludedOptions) { + if (!filteredCol) { + filteredCol = tf.getVisibleColumnValues(j); + } + if (!(0, _array.has)(filteredCol, cellString, caseSensitive) && !(0, _array.has)(this.excludedOpts, cellString, caseSensitive)) { + this.excludedOpts.push(cellValue); + } + } + } + } + + //sort options + this.opts = this.sortOptions(colIndex, this.opts); + if (this.excludedOpts) { + this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts); + } + + this.addChecks(colIndex, ul); + + if (tf.loadFltOnDemand) { + flt.innerHTML = ''; + } + flt.appendChild(ul); + flt.setAttribute('filled', '1'); + + this.emitter.emit('after-populating-filter', tf, colIndex, flt); + } + + /** + * Add checklist options + * @param {Number} colIndex Column index + * @param {Object} ul Ul element + * @private + */ + + }, { + key: 'addChecks', + value: function addChecks(colIndex, ul) { + var _this4 = this; + + var tf = this.tf; + var chkCt = this.addTChecks(colIndex, ul); + + for (var y = 0; y < this.opts.length; y++) { + var val = this.opts[y]; //item value + var lbl = this.isCustom ? this.optsTxt[y] : val; //item text + var fltId = tf.fltIds[colIndex]; + var li = (0, _dom.createCheckItem)(fltId + '_' + (y + chkCt), val, lbl); + li.className = this.itemCssClass; + + if (tf.linkedFilters && tf.disableExcludedOptions && (0, _array.has)(this.excludedOpts, (0, _string.matchCase)(val, tf.caseSensitive), tf.caseSensitive)) { + (0, _dom.addClass)(li, this.disabledItemCssClass); + li.check.disabled = true; + li.disabled = true; + } else { + (0, _event.addEvt)(li.check, 'click', function (evt) { + return _this4.optionClick(evt); + }); + } + ul.appendChild(li); + + if (val === '') { + //item is hidden + li.style.display = _const.NONE; + } + } + } + + /** + * Add checklist header option + * @param {Number} colIndex Column index + * @param {Object} ul Ul element + * @private + */ + + }, { + key: 'addTChecks', + value: function addTChecks(colIndex, ul) { + var _this5 = this; + + var tf = this.tf; + var chkCt = 1; + var fltId = tf.fltIds[colIndex]; + var li0 = (0, _dom.createCheckItem)(fltId + '_0', '', tf.getClearFilterText(colIndex)); + li0.className = this.itemCssClass; + ul.appendChild(li0); + + (0, _event.addEvt)(li0.check, 'click', function (evt) { + return _this5.optionClick(evt); + }); + + if (!this.enableResetOption) { + li0.style.display = _const.NONE; + } + + if (tf.enableEmptyOption) { + var li1 = (0, _dom.createCheckItem)(fltId + '_1', tf.emOperator, tf.emptyText); + li1.className = this.itemCssClass; + ul.appendChild(li1); + (0, _event.addEvt)(li1.check, 'click', function (evt) { + return _this5.optionClick(evt); + }); + chkCt++; + } + + if (tf.enableNonEmptyOption) { + var li2 = (0, _dom.createCheckItem)(fltId + '_2', tf.nmOperator, tf.nonEmptyText); + li2.className = this.itemCssClass; + ul.appendChild(li2); + (0, _event.addEvt)(li2.check, 'click', function (evt) { + return _this5.optionClick(evt); + }); + chkCt++; + } + return chkCt; + } + + /** + * Store checked options in DOM element attribute + * @param {Object} o checklist option DOM element + * @private + */ + + }, { + key: 'setCheckListValues', + value: function setCheckListValues(o) { + if (!o) { + return; + } + + var tf = this.tf; + var chkValue = o.value; //checked item value + // TODO: provide helper to extract column index, ugly! + var chkIndex = parseInt(o.id.split('_')[2], 10); + var colIdx = tf.getColumnIndexFromFilterId(o.id); + var itemTag = 'LI'; + + var n = tf.getFilterElement(parseInt(colIdx, 10)); + var li = n.childNodes[chkIndex]; + var colIndex = n.getAttribute('colIndex'); + var fltValue = n.getAttribute('value'); //filter value (ul tag) + var fltIndexes = n.getAttribute('indexes'); //selected items (ul tag) + + if (o.checked) { + //show all item + if (chkValue === '') { + if (fltIndexes && fltIndexes !== '') { + //items indexes + var indSplit = fltIndexes.split(tf.separator); + //checked items loop + for (var u = 0; u < indSplit.length; u++) { + //checked item + var cChk = (0, _dom.elm)(tf.fltIds[colIndex] + '_' + indSplit[u]); + if (cChk) { + cChk.checked = false; + (0, _dom.removeClass)(n.childNodes[indSplit[u]], this.selectedItemCssClass); + } + } + } + n.setAttribute('value', ''); + n.setAttribute('indexes', ''); + } else { + fltValue = fltValue ? fltValue : ''; + chkValue = (0, _string.trim)(fltValue + ' ' + chkValue + ' ' + tf.orOperator); + chkIndex = fltIndexes + chkIndex + tf.separator; + n.setAttribute('value', chkValue); + n.setAttribute('indexes', chkIndex); + //1st option unchecked + if ((0, _dom.elm)(tf.fltIds[colIndex] + '_0')) { + (0, _dom.elm)(tf.fltIds[colIndex] + '_0').checked = false; + } + } + + if (li.nodeName === itemTag) { + (0, _dom.removeClass)(n.childNodes[0], this.selectedItemCssClass); + (0, _dom.addClass)(li, this.selectedItemCssClass); + } + } else { + //removes values and indexes + if (chkValue !== '') { + var replaceValue = new RegExp((0, _string.rgxEsc)(chkValue + ' ' + tf.orOperator)); + fltValue = fltValue.replace(replaceValue, ''); + n.setAttribute('value', (0, _string.trim)(fltValue)); + + var replaceIndex = new RegExp((0, _string.rgxEsc)(chkIndex + tf.separator)); + fltIndexes = fltIndexes.replace(replaceIndex, ''); + n.setAttribute('indexes', fltIndexes); + } + if (li.nodeName === itemTag) { + (0, _dom.removeClass)(li, this.selectedItemCssClass); + } + } + } + + /** + * Select filter options programmatically + * @param {Number} colIndex Column index + * @param {Array} values Array of option values to select + */ + + }, { + key: 'selectOptions', + value: function selectOptions(colIndex) { + var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var tf = this.tf; + var flt = tf.getFilterElement(colIndex); + if (tf.getFilterType(colIndex) !== _const.CHECKLIST || !flt || values.length === 0) { + return; + } + + var lisNb = (0, _dom.tag)(flt, 'li').length; + + flt.setAttribute('value', ''); + flt.setAttribute('indexes', ''); + + for (var k = 0; k < lisNb; k++) { + var li = (0, _dom.tag)(flt, 'li')[k]; + var lbl = (0, _dom.tag)(li, 'label')[0]; + var chk = (0, _dom.tag)(li, 'input')[0]; + var lblTxt = (0, _string.matchCase)((0, _dom.getText)(lbl), tf.caseSensitive); + + if (lblTxt !== '' && (0, _array.has)(values, lblTxt, tf.caseSensitive)) { + chk.checked = true; + } else { + // Check non-empty-text or empty-text option + if (values.indexOf(tf.nmOperator) !== -1 && lblTxt === (0, _string.matchCase)(tf.nonEmptyText, tf.caseSensitive)) { + chk.checked = true; + } else if (values.indexOf(tf.emOperator) !== -1 && lblTxt === (0, _string.matchCase)(tf.emptyText, tf.caseSensitive)) { + chk.checked = true; + } else { + chk.checked = false; + } + } + this.setCheckListValues(chk); + } + } + + /** + * Get filter values for a given column index + * @param {Number} colIndex Column index + * @returns {Array} values Collection of selected values + */ + + }, { + key: 'getValues', + value: function getValues(colIndex) { + var tf = this.tf; + var flt = tf.getFilterElement(colIndex); + var fltAttr = flt.getAttribute('value'); + var values = (0, _types.isEmpty)(fltAttr) ? '' : fltAttr; + //removes last operator || + values = values.substr(0, values.length - 3); + //turn || separated values into array + values = values.split(' ' + tf.orOperator + ' '); + + return values; + } + + /** + * Destroy CheckList instance + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this6 = this; + + this.emitter.off(['build-checklist-filter'], function (tf, colIndex, isLinked) { + return _this6.build(colIndex, isLinked); + }); + this.emitter.off(['select-checklist-options'], function (tf, colIndex, values) { + return _this6.selectOptions(colIndex, values); + }); + this.emitter.off(['rows-changed'], function () { + return _this6.refreshAll(); + }); + + this.initialized = false; + } + }]); + + return CheckList; +}(_baseDropdown.BaseDropdown); + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Dropdown = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _baseDropdown = __webpack_require__(68); + +var _dom = __webpack_require__(9); + +var _array = __webpack_require__(67); + +var _string = __webpack_require__(19); + +var _event = __webpack_require__(17); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Dropdown filter UI component + * @export + * @class Dropdown + * @extends {BaseDropdown} + */ +var Dropdown = exports.Dropdown = function (_BaseDropdown) { + _inherits(Dropdown, _BaseDropdown); + + /** + * Creates an instance of Dropdown + * @param {TableFilter} tf TableFilter instance + */ + function Dropdown(tf) { + _classCallCheck(this, Dropdown); + + // Configuration object + var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, tf, 'dropdown')); + + var f = _this.config; + + /** + * Enable the reset filter option as first item + * @type {Boolean} + */ + _this.enableSlcResetFilter = f.enable_slc_reset_filter === false ? false : true; + + /** + * Non empty option text + * @type {String} + */ + _this.nonEmptyText = f.non_empty_text || '(Non empty)'; + + /** + * Tooltip text appearing on multiple select + * @type {String} + */ + _this.multipleSlcTooltip = f.multiple_slc_tooltip || 'Use Ctrl/Cmd key for multiple selections'; + return _this; + } + + /** + * Drop-down filter focus event handler + * @param {Event} e DOM Event + * @private + */ + + + _createClass(Dropdown, [{ + key: 'onSlcFocus', + value: function onSlcFocus(e) { + var elm = (0, _event.targetEvt)(e); + var tf = this.tf; + // select is populated when element has focus + if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') { + var ct = elm.getAttribute('ct'); + this.build(ct); + } + this.emitter.emit('filter-focus', tf, elm); + } + + /** + * Drop-down filter change event handler + * @private + */ + + }, { + key: 'onSlcChange', + value: function onSlcChange() { + if (this.tf.onSlcChange) { + this.tf.filter(); + } + } + + /** + * Refresh all drop-down filters + */ + + }, { + key: 'refreshAll', + value: function refreshAll() { + var selectFlts = this.tf.getFiltersByType(_const.SELECT, true); + var multipleFlts = this.tf.getFiltersByType(_const.MULTIPLE, true); + var colIdxs = selectFlts.concat(multipleFlts); + this.refreshFilters(colIdxs); + } + + /** + * Initialize drop-down filter + * @param {Number} colIndex Column index + * @param {Boolean} isExternal External filter flag + * @param {DOMElement} container Dom element containing the filter + */ + + }, { + key: 'init', + value: function init(colIndex, isExternal, container) { + var _this2 = this; + + var tf = this.tf; + var col = tf.getFilterType(colIndex); + var externalFltTgtId = isExternal ? tf.externalFltTgtIds[colIndex] : null; + + var slc = (0, _dom.createElm)(_const.SELECT, ['id', tf.buildFilterId(colIndex)], ['ct', colIndex], ['filled', '0']); + + if (col === _const.MULTIPLE) { + slc.multiple = _const.MULTIPLE; + slc.title = this.multipleSlcTooltip; + } + slc.className = col.toLowerCase() === _const.SELECT ? tf.fltCssClass : tf.fltMultiCssClass; + + //filter is appended in container element + if (externalFltTgtId) { + (0, _dom.elm)(externalFltTgtId).appendChild(slc); + } else { + container.appendChild(slc); + } + + tf.fltIds.push(slc.id); + + if (!tf.loadFltOnDemand) { + this.build(colIndex); + } else { + //1st option is created here since build isn't invoked + var opt0 = (0, _dom.createOpt)(tf.getClearFilterText(colIndex), ''); + slc.appendChild(opt0); + } + + (0, _event.addEvt)(slc, 'change', function () { + return _this2.onSlcChange(); + }); + (0, _event.addEvt)(slc, 'focus', function (e) { + return _this2.onSlcFocus(e); + }); + + this.emitter.on(['build-select-filter'], function (tf, colIndex, isLinked, isExternal) { + return _this2.build(colIndex, isLinked, isExternal); + }); + this.emitter.on(['select-options'], function (tf, colIndex, values) { + return _this2.selectOptions(colIndex, values); + }); + this.emitter.on(['rows-changed'], function () { + return _this2.refreshAll(); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Build drop-down filter UI + * @param {Number} colIndex Column index + * @param {Boolean} isLinked Enable linked filters behaviour + */ + + }, { + key: 'build', + value: function build(colIndex) { + var isLinked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var tf = this.tf; + colIndex = parseInt(colIndex, 10); + + this.emitter.emit('before-populating-filter', tf, colIndex); + + /** @inherited */ + this.opts = []; + /** @inherited */ + this.optsTxt = []; + + var slcId = tf.fltIds[colIndex]; + var slc = (0, _dom.elm)(slcId); + var rows = tf.dom().rows; + var nbRows = tf.getRowsNb(true); + + //custom select test + /** @inherited */ + this.isCustom = tf.isCustomOptions(colIndex); + + //Retrieves custom values + if (this.isCustom) { + var customValues = tf.getCustomOptions(colIndex); + this.opts = customValues[0]; + this.optsTxt = customValues[1]; + } + + //custom selects text + var activeIdx = void 0; + var activeFilterId = tf.getActiveFilterId(); + if (isLinked && activeFilterId) { + activeIdx = tf.getColumnIndexFromFilterId(activeFilterId); + } + + var excludedOpts = null, + filteredDataCol = null; + if (isLinked && tf.disableExcludedOptions) { + excludedOpts = []; + filteredDataCol = []; + } + + for (var k = tf.refRow; k < nbRows; k++) { + // always visible rows don't need to appear on selects as always + // valid + if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) { + continue; + } + + var cell = rows[k].cells, + nchilds = cell.length; + + // checks if row has exact cell # + if (nchilds !== tf.nbCells || this.isCustom) { + continue; + } + + // this loop retrieves cell data + for (var j = 0; j < nchilds; j++) { + if (colIndex !== j) { + continue; + } + if (isLinked && !tf.disableExcludedOptions && !tf.paging && !tf.isRowDisplayed(k) || tf.paging && activeIdx && !tf.isRowValid(k)) { + continue; + } + + var cellValue = tf.getCellValue(cell[j]), + + //Vary Peter's patch + cellString = (0, _string.matchCase)(cellValue, tf.caseSensitive); + + // checks if celldata is already in array + if (!(0, _array.has)(this.opts, cellString, tf.caseSensitive)) { + this.opts.push(cellValue); + } + + if (isLinked && tf.disableExcludedOptions) { + var filteredCol = filteredDataCol[j]; + if (!filteredCol) { + filteredCol = tf.getVisibleColumnValues(j); + } + if (!(0, _array.has)(filteredCol, cellString, tf.caseSensitive) && !(0, _array.has)(excludedOpts, cellString, tf.caseSensitive)) { + excludedOpts.push(cellValue); + } + } + } //for j + } //for k + + //sort options + this.opts = this.sortOptions(colIndex, this.opts); + if (excludedOpts) { + excludedOpts = this.sortOptions(colIndex, excludedOpts); + } + + //populates drop-down + this.addOptions(colIndex, slc, isLinked, excludedOpts); + + this.emitter.emit('after-populating-filter', tf, colIndex, slc); + } + + /** + * Add drop-down options + * @param {Number} colIndex Column index + * @param {Object} slc Select Dom element + * @param {Boolean} isLinked Enable linked refresh behaviour + * @param {Array} excludedOpts Array of excluded options + */ + + }, { + key: 'addOptions', + value: function addOptions(colIndex, slc, isLinked, excludedOpts) { + var tf = this.tf, + slcValue = slc.value; + + slc.innerHTML = ''; + slc = this.addFirstOption(slc); + + for (var y = 0; y < this.opts.length; y++) { + if (this.opts[y] === '') { + continue; + } + var val = this.opts[y]; //option value + var lbl = this.isCustom ? this.optsTxt[y] : val; //option text + var isDisabled = false; + if (isLinked && tf.disableExcludedOptions && (0, _array.has)(excludedOpts, (0, _string.matchCase)(val, tf.caseSensitive), tf.caseSensitive)) { + isDisabled = true; + } + + var opt = void 0; + //fill select on demand + if (tf.loadFltOnDemand && slcValue === this.opts[y] && tf.getFilterType(colIndex) === _const.SELECT) { + opt = (0, _dom.createOpt)(lbl, val, true); + } else { + opt = (0, _dom.createOpt)(lbl, val, false); + } + if (isDisabled) { + opt.disabled = true; + } + slc.appendChild(opt); + } // for y + + slc.setAttribute('filled', '1'); + } + + /** + * Add drop-down header option + * @param {Object} slc Select DOM element + */ + + }, { + key: 'addFirstOption', + value: function addFirstOption(slc) { + var tf = this.tf; + var colIdx = tf.getColumnIndexFromFilterId(slc.id); + var opt0 = (0, _dom.createOpt)(!this.enableSlcResetFilter ? '' : tf.getClearFilterText(colIdx), ''); + if (!this.enableSlcResetFilter) { + opt0.style.display = _const.NONE; + } + slc.appendChild(opt0); + if (tf.enableEmptyOption) { + var opt1 = (0, _dom.createOpt)(tf.emptyText, tf.emOperator); + slc.appendChild(opt1); + } + if (tf.enableNonEmptyOption) { + var opt2 = (0, _dom.createOpt)(tf.nonEmptyText, tf.nmOperator); + slc.appendChild(opt2); + } + return slc; + } + + /** + * Select filter options programmatically + * @param {Number} colIndex Column index + * @param {Array} values Array of option values to select + */ + + }, { + key: 'selectOptions', + value: function selectOptions(colIndex) { + var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var tf = this.tf; + if (values.length === 0) { + return; + } + var slc = tf.getFilterElement(colIndex); + [].forEach.call(slc.options, function (option) { + // Empty value means clear all selections and first option is the + // clear all option + if (values[0] === '' || option.value === '') { + option.selected = false; + } + + if (option.value !== '' && (0, _array.has)(values, option.value, true)) { + option.selected = true; + } //if + }); + } + + /** + * Get filter values for a given column index + * @param {Number} colIndex Column index + * @returns {Array} values Array of selected values + */ + + }, { + key: 'getValues', + value: function getValues(colIndex) { + var tf = this.tf; + var slc = tf.getFilterElement(colIndex); + var values = []; + + // IE >= 9 does not support the selectedOptions property :( + if (slc.selectedOptions) { + [].forEach.call(slc.selectedOptions, function (option) { + return values.push(option.value); + }); + } else { + [].forEach.call(slc.options, function (option) { + if (option.selected) { + values.push(option.value); + } + }); + } + + return values; + } + + /** + * Destroy Dropdown instance + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + this.emitter.off(['build-select-filter'], function (colIndex, isLinked, isExternal) { + return _this3.build(colIndex, isLinked, isExternal); + }); + this.emitter.off(['select-options'], function (tf, colIndex, values) { + return _this3.selectOptions(colIndex, values); + }); + this.emitter.off(['rows-changed'], function () { + return _this3.refreshAll(); + }); + this.initialized = false; + } + }]); + + return Dropdown; +}(_baseDropdown.BaseDropdown); + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var classToString = coreUtilityAliases.classToString; + +function isClass(obj, className, str) { + if (!str) { + str = classToString(obj); + } + return str === '[object '+ className +']'; +} + +module.exports = isClass; + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function map(arr, fn) { + // perf: Not using fixed array len here as it may be sparse. + var result = []; + for (var i = 0, len = arr.length; i < len; i++) { + if (i in arr) { + result.push(fn(arr[i], i)); + } + } + return result; +} + +module.exports = map; + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var mathAliases = __webpack_require__(7); + +var abs = mathAliases.abs, + pow = mathAliases.pow, + round = mathAliases.round; + +function withPrecision(val, precision, fn) { + var multiplier = pow(10, abs(precision || 0)); + fn = fn || round; + if (precision < 0) multiplier = 1 / multiplier; + return fn(val * multiplier) / multiplier; +} + +module.exports = withPrecision; + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = String.fromCharCode; + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var updateDate = __webpack_require__(50), + collectDateArguments = __webpack_require__(78); + +function advanceDateWithArgs(d, args, dir) { + args = collectDateArguments(args, true); + return updateDate(d, args[0], args[1], dir); +} + +module.exports = advanceDateWithArgs; + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var dateIsValid = __webpack_require__(45); + +function assertDateIsValid(d) { + if (!dateIsValid(d)) { + throw new TypeError('Date is not valid'); + } +} + +module.exports = assertDateIsValid; + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3), + simpleClone = __webpack_require__(42), + isObjectType = __webpack_require__(53), + getDateParamsFromString = __webpack_require__(213), + collectDateParamsFromArguments = __webpack_require__(205); + +var isNumber = classChecks.isNumber, + isString = classChecks.isString; + +function collectDateArguments(args, allowDuration) { + var arg1 = args[0], arg2 = args[1]; + if (allowDuration && isString(arg1)) { + arg1 = getDateParamsFromString(arg1); + } else if (isNumber(arg1) && isNumber(arg2)) { + arg1 = collectDateParamsFromArguments(args); + arg2 = null; + } else { + if (isObjectType(arg1)) { + arg1 = simpleClone(arg1); + } + } + return [arg1, arg2]; +} + +module.exports = collectDateArguments; + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var MINUTES = __webpack_require__(98), + DateUnits = __webpack_require__(31), + DateUnitIndexes = __webpack_require__(5), + _utc = __webpack_require__(21), + tzOffset = __webpack_require__(49), + cloneDate = __webpack_require__(33), + isDefined = __webpack_require__(27), + advanceDate = __webpack_require__(38), + dateIsValid = __webpack_require__(45), + moveToEndOfUnit = __webpack_require__(48), + getExtendedDate = __webpack_require__(58), + moveToBeginningOfUnit = __webpack_require__(47); + +var MONTH_INDEX = DateUnitIndexes.MONTH_INDEX; + +function compareDate(date, d, margin, localeCode, options) { + var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t; + + function getTimezoneShift() { + // If there is any specificity in the date then we're implicitly not + // checking absolute time, so ignore timezone shifts. + if (p.set && p.set.specificity) { + return 0; + } + return (tzOffset(p.date) - tzOffset(date)) * MINUTES; + } + + function addSpecificUnit() { + var unit = DateUnits[p.set.specificity]; + return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1; + } + + if (_utc(date)) { + options = options || {}; + options.fromUTC = true; + options.setUTC = true; + } + + p = getExtendedDate(null, d, options, true); + + if (margin > 0) { + loMargin = hiMargin = margin; + override = true; + } + if (!dateIsValid(p.date)) return false; + if (p.set && p.set.specificity) { + if (isDefined(p.set.edge) || isDefined(p.set.shift)) { + compareEdges = true; + moveToBeginningOfUnit(p.date, p.set.specificity, localeCode); + } + if (compareEdges || p.set.specificity === MONTH_INDEX) { + max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime(); + } else { + max = addSpecificUnit(); + } + if (!override && isDefined(p.set.sign) && p.set.specificity) { + // If the time is relative, there can occasionally be an disparity between + // the relative date and "now", which it is being compared to, so set an + // extra margin to account for this. + loMargin = 50; + hiMargin = -50; + } + } + t = date.getTime(); + min = p.date.getTime(); + max = max || min; + timezoneShift = getTimezoneShift(); + if (timezoneShift) { + min -= timezoneShift; + max -= timezoneShift; + } + return t >= (min - loMargin) && t <= (max + hiMargin); +} + +module.exports = compareDate; + +/***/ }), +/* 80 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getExtendedDate = __webpack_require__(58); + +function createDateWithContext(contextDate, d, options, forceClone) { + return getExtendedDate(contextDate, d, options, forceClone).date; +} + +module.exports = createDateWithContext; + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CoreOutputFormats = __webpack_require__(96), + formattingTokens = __webpack_require__(297), + assertDateIsValid = __webpack_require__(77); + +var dateFormatMatcher = formattingTokens.dateFormatMatcher; + +function dateFormat(d, format, localeCode) { + assertDateIsValid(d); + format = CoreOutputFormats[format] || format || '{long}'; + return dateFormatMatcher(format, d, localeCode); +} + +module.exports = dateFormat; + +/***/ }), +/* 82 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + dateFormat = __webpack_require__(81), + classChecks = __webpack_require__(3), + assertDateIsValid = __webpack_require__(77), + getAdjustedUnitForDate = __webpack_require__(209); + +var isFunction = classChecks.isFunction, + localeManager = LocaleHelpers.localeManager; + +function dateRelative(d, dRelative, arg1, arg2) { + var adu, format, type, localeCode, fn; + assertDateIsValid(d); + if (isFunction(arg1)) { + fn = arg1; + } else { + localeCode = arg1; + fn = arg2; + } + adu = getAdjustedUnitForDate(d, dRelative); + if (fn) { + format = fn.apply(d, adu.concat(localeManager.get(localeCode))); + if (format) { + return dateFormat(d, format, localeCode); + } + } + // Adjust up if time is in ms, as this doesn't + // look very good for a standard relative date. + if (adu[1] === 0) { + adu[1] = 1; + adu[0] = 1; + } + if (dRelative) { + type = 'duration'; + } else if (adu[2] > 0) { + type = 'future'; + } else { + type = 'past'; + } + return localeManager.get(localeCode).getRelativeFormat(adu, type); +} + +module.exports = dateRelative; + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + trim = __webpack_require__(150), + getMonth = __webpack_require__(29), + isDefined = __webpack_require__(27), + getNewDate = __webpack_require__(40), + compareDay = __webpack_require__(206), + getWeekday = __webpack_require__(20), + dateIsValid = __webpack_require__(45), + classChecks = __webpack_require__(3), + compareDate = __webpack_require__(79); + +var isString = classChecks.isString, + English = LocaleHelpers.English; + +function fullCompareDate(date, d, margin) { + var tmp; + if (!dateIsValid(date)) return; + if (isString(d)) { + d = trim(d).toLowerCase(); + switch(true) { + case d === 'future': return date.getTime() > getNewDate().getTime(); + case d === 'past': return date.getTime() < getNewDate().getTime(); + case d === 'today': return compareDay(date); + case d === 'tomorrow': return compareDay(date, 1); + case d === 'yesterday': return compareDay(date, -1); + case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6; + case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6; + + case (isDefined(tmp = English.weekdayMap[d])): + return getWeekday(date) === tmp; + case (isDefined(tmp = English.monthMap[d])): + return getMonth(date) === tmp; + } + } + return compareDate(date, d, margin); +} + +module.exports = fullCompareDate; + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var mathAliases = __webpack_require__(7), + iterateOverDateUnits = __webpack_require__(61); + +var abs = mathAliases.abs; + +function getAdjustedUnit(ms, fn) { + var unitIndex = 0, value = 0; + iterateOverDateUnits(function(unit, i) { + value = abs(fn(unit)); + if (value >= 1) { + unitIndex = i; + return false; + } + }); + return [value, unitIndex, ms]; +} + +module.exports = getAdjustedUnit; + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getOwnKey = __webpack_require__(138); + +function getDateParamKey(params, key) { + return getOwnKey(params, key) || + getOwnKey(params, key + 's') || + (key === 'day' && getOwnKey(params, 'date')); +} + +module.exports = getDateParamKey; + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getYear = __webpack_require__(30), + getMonth = __webpack_require__(29), + callDateGet = __webpack_require__(18); + +function getDaysInMonth(d) { + return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date'); +} + +module.exports = getDaysInMonth; + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateGet = __webpack_require__(18); + +function getHours(d) { + return callDateGet(d, 'Hours'); +} + +module.exports = getHours; + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function getRegNonCapturing(src, opt) { + if (src.length > 1) { + src = '(?:' + src + ')'; + } + if (opt) { + src += '?'; + } + return src; +} + +module.exports = getRegNonCapturing; + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utc = __webpack_require__(21), + trunc = __webpack_require__(23), + tzOffset = __webpack_require__(49), + padNumber = __webpack_require__(54), + mathAliases = __webpack_require__(7); + +var abs = mathAliases.abs; + +function getUTCOffset(d, iso) { + var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon; + colon = iso === true ? ':' : ''; + if (!offset && iso) return 'Z'; + hours = padNumber(trunc(-offset / 60), 2, true); + mins = padNumber(abs(offset % 60), 2); + return hours + colon + mins; +} + +module.exports = getUTCOffset; + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var setWeekday = __webpack_require__(24), + getWeekday = __webpack_require__(20), + mathAliases = __webpack_require__(7); + +var ceil = mathAliases.ceil; + +function moveToEndOfWeek(d, firstDayOfWeek) { + var target = firstDayOfWeek - 1; + setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target); + return d; +} + +module.exports = moveToEndOfWeek; + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5), + setDate = __webpack_require__(35), + setUnitAndLowerToEdge = __webpack_require__(36), + moveToBeginningOfWeek = __webpack_require__(62); + +var MONTH_INDEX = DateUnitIndexes.MONTH_INDEX; + +function moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) { + setUnitAndLowerToEdge(d, MONTH_INDEX); + setDate(d, firstDayOfWeekYear); + moveToBeginningOfWeek(d, firstDayOfWeek); +} + +module.exports = moveToFirstDayOfWeekYear; + +/***/ }), +/* 92 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5), + setUnitAndLowerToEdge = __webpack_require__(36); + +var HOURS_INDEX = DateUnitIndexes.HOURS_INDEX; + +function resetTime(d) { + return setUnitAndLowerToEdge(d, HOURS_INDEX); +} + +module.exports = resetTime; + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ISODefaults = __webpack_require__(63), + getDate = __webpack_require__(34), + setDate = __webpack_require__(35), + setYear = __webpack_require__(228), + getYear = __webpack_require__(30), + getMonth = __webpack_require__(29), + setMonth = __webpack_require__(227), + cloneDate = __webpack_require__(33), + getWeekday = __webpack_require__(20), + setWeekday = __webpack_require__(24), + classChecks = __webpack_require__(3), + moveToFirstDayOfWeekYear = __webpack_require__(91); + +var isNumber = classChecks.isNumber, + ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK, + ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR; + +function setISOWeekNumber(d, num) { + if (isNumber(num)) { + // Intentionally avoiding updateDate here to prevent circular dependencies. + var isoWeek = cloneDate(d), dow = getWeekday(d); + moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR); + setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1)); + setYear(d, getYear(isoWeek)); + setMonth(d, getMonth(isoWeek)); + setDate(d, getDate(isoWeek)); + setWeekday(d, dow || 7); + } + return d.getTime(); +} + +module.exports = setISOWeekNumber; + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + getLowerUnitIndex = __webpack_require__(39); + +function walkUnitDown(unitIndex, fn) { + while (unitIndex >= 0) { + if (fn(DateUnits[unitIndex], unitIndex) === false) { + break; + } + unitIndex = getLowerUnitIndex(unitIndex); + } +} + +module.exports = walkUnitDown; + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getEnglishVariant = __webpack_require__(57); + +var AmericanEnglishDefinition = getEnglishVariant({ + 'mdy': true, + 'firstDayOfWeek': 0, + 'firstDayOfWeekYear': 1, + 'short': '{MM}/{dd}/{yyyy}', + 'medium': '{Month} {d}, {yyyy}', + 'long': '{Month} {d}, {yyyy} {time}', + 'full': '{Weekday}, {Month} {d}, {yyyy} {time}', + 'stamp': '{Dow} {Mon} {d} {yyyy} {time}', + 'time': '{h}:{mm} {TT}' +}); + +module.exports = AmericanEnglishDefinition; + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CoreOutputFormats = { + 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}', + 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}', + 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}' +}; + +module.exports = CoreOutputFormats; + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocalizedParsingTokens = { + 'year': { + base: 'yyyy', + requiresSuffix: true + }, + 'month': { + base: 'MM', + requiresSuffix: true + }, + 'date': { + base: 'dd', + requiresSuffix: true + }, + 'hour': { + base: 'hh', + requiresSuffixOr: ':' + }, + 'minute': { + base: 'mm' + }, + 'second': { + base: 'ss' + }, + 'num': { + src: '\\d+', + requiresNumerals: true + } +}; + +module.exports = LocalizedParsingTokens; + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = 60 * 1000; + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ParsingTokens = { + 'yyyy': { + param: 'year', + src: '\\d{4}' + }, + 'MM': { + param: 'month', + src: '[01]?\\d' + }, + 'dd': { + param: 'date', + src: '[0123]?\\d' + }, + 'hh': { + param: 'hour', + src: '[0-2]?\\d' + }, + 'mm': { + param: 'minute', + src: '[0-5]\\d' + }, + 'ss': { + param: 'second', + src: '[0-5]\\d(?:[,.]\\d+)?' + }, + 'yy': { + param: 'year', + src: '\\d{2}' + }, + 'y': { + param: 'year', + src: '\\d' + }, + 'yearSign': { + src: '[+-]', + sign: true + }, + 'tzHour': { + src: '[0-1]\\d' + }, + 'tzMinute': { + src: '[0-5]\\d' + }, + 'tzSign': { + src: '[+−-]', + sign: true + }, + 'ihh': { + param: 'hour', + src: '[0-2]?\\d(?:[,.]\\d+)?' + }, + 'imm': { + param: 'minute', + src: '[0-5]\\d(?:[,.]\\d+)?' + }, + 'GMT': { + param: 'utc', + src: 'GMT', + val: 1 + }, + 'Z': { + param: 'utc', + src: 'Z', + val: 1 + }, + 'timestamp': { + src: '\\d+' + } +}; + +module.exports = ParsingTokens; + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(199); +__webpack_require__(411); + +module.exports = __webpack_require__(0); + +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3), + getRangeMemberPrimitiveValue = __webpack_require__(104); + +var isDate = classChecks.isDate; + +function cloneRangeMember(m) { + if (isDate(m)) { + return new Date(m.getTime()); + } else { + return getRangeMemberPrimitiveValue(m); + } +} + +module.exports = cloneRangeMember; + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3), + namespaceAliases = __webpack_require__(22); + +var isDate = classChecks.isDate, + sugarDate = namespaceAliases.sugarDate; + +function getDateForRange(d) { + if (isDate(d)) { + return d; + } else if (d == null) { + return new Date(); + } else if (sugarDate.create) { + return sugarDate.create(d); + } + return new Date(d); +} + +module.exports = getDateForRange; + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DURATION_REG = __webpack_require__(432), + classChecks = __webpack_require__(3), + simpleCapitalize = __webpack_require__(55); + +var isNumber = classChecks.isNumber; + +function getDateIncrementObject(amt) { + var match, val, unit; + if (isNumber(amt)) { + return [amt, 'Milliseconds']; + } + match = amt.match(DURATION_REG); + val = +match[1] || 1; + unit = simpleCapitalize(match[2].toLowerCase()); + if (unit.match(/hour|minute|second/i)) { + unit += 's'; + } else if (unit === 'Year') { + unit = 'FullYear'; + } else if (unit === 'Week') { + unit = 'Date'; + val *= 7; + } else if (unit === 'Day') { + unit = 'Date'; + } + return [val, unit]; +} + +module.exports = getDateIncrementObject; + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3); + +var isDate = classChecks.isDate; + +function getRangeMemberPrimitiveValue(m) { + if (m == null) return m; + return isDate(m) ? m.getTime() : m.valueOf(); +} + +module.exports = getRangeMemberPrimitiveValue; + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var MULTIPLIERS = __webpack_require__(106), + callDateSet = __webpack_require__(32), + callDateGet = __webpack_require__(18); + +function incrementDate(src, amount, unit) { + var mult = MULTIPLIERS[unit], d; + if (mult) { + d = new Date(src.getTime() + (amount * mult)); + } else { + d = new Date(src); + callDateSet(d, unit, callDateGet(src, unit) + amount); + } + return d; +} + +module.exports = incrementDate; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var MULTIPLIERS = { + 'Hours': 60 * 60 * 1000, + 'Minutes': 60 * 1000, + 'Seconds': 1000, + 'Milliseconds': 1 +}; + +module.exports = MULTIPLIERS; + +/***/ }), +/* 107 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sortDateStr = exports.sortNumberStr = exports.dateSortDesc = exports.dateSortAsc = exports.numSortDesc = exports.numSortAsc = exports.ignoreCase = undefined; + +var _number = __webpack_require__(52); + +var _sugarDate = __webpack_require__(100); + +/** Sorting utilities */ + +/** + * Case insensitive compare function for passed strings + * @param {String} First string + * @param {String} Second string + * @return {Number} -1 if first string lower than second one + * 0 if first string same order as second one + * 1 if first string greater than second one + */ +var ignoreCase = exports.ignoreCase = function ignoreCase(a, b) { + var x = a.toLowerCase(); + var y = b.toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; +}; + +/** + * Compare function for sorting passed numbers in ascending manner + * @param {Number} First number + * @param {Number} Second number + * @return {Number} Negative, zero or positive number + */ +var numSortAsc = exports.numSortAsc = function numSortAsc(a, b) { + return a - b; +}; + +/** + * Compare function for sorting passed numbers in descending manner + * @param {Number} First number + * @param {Number} Second number + * @return {Number} Negative, zero or positive number + */ +var numSortDesc = exports.numSortDesc = function numSortDesc(a, b) { + return b - a; +}; + +/** + * Compare function for sorting passed dates in ascending manner according to + * the corresponding UTC numeric value (returned by getTime) + * @param {Date} First date object + * @param {Date} Second date object + * @return {Number} Negative, zero or positive number + */ +var dateSortAsc = exports.dateSortAsc = function dateSortAsc(date1, date2) { + return date1.getTime() - date2.getTime(); +}; + +/** + * Compare function for sorting passed dates in descending manner according to + * the corresponding UTC numeric value (returned by getTime) + * @param {Date} First date object + * @param {Date} Second date object + * @return {Number} Negative, zero or positive number + */ +var dateSortDesc = exports.dateSortDesc = function dateSortDesc(date1, date2) { + return date2.getTime() - date1.getTime(); +}; + +/** + * Curried compare function for sorting passed formatted numbers in desired + * fashion according to supplied compare function and decimal separator + * @param {Function} Compare function + * @param {String} [decimal=','] Decimal separator + * @return {Function} Compare function receiving parsed numeric arguments + */ +var sortNumberStr = exports.sortNumberStr = function sortNumberStr(compareFn) { + var decimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ','; + + return function (numStr1, numStr2) { + var num1 = (0, _number.parse)(numStr1, decimal); + var num2 = (0, _number.parse)(numStr2, decimal); + return compareFn(num1, num2); + }; +}; + +/** + * Curried compare function for sorting passed formatted dates in desired + * fashion according to supplied compare function and locale + * @param {Function} Compare function + * @param {String} [locale='en-us'] Locale code + * @return {Function} Compare function receiving parsed date arguments + */ +var sortDateStr = exports.sortDateStr = function sortDateStr(compareFn) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-us'; + + return function (dateStr1, dateStr2) { + var date1 = _sugarDate.Date.create(dateStr1, locale); + var date2 = _sugarDate.Date.create(dateStr2, locale); + return compareFn(date1, date2); + }; +}; + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _root = __webpack_require__(15); + +/** + * Cookie utilities + */ + +var doc = _root.root.document; + +exports.default = { + + /** + * Write a cookie + * @param {String} name Name of the cookie + * @param {String} value Value of the cookie + * @param {Number} hours Cookie duration in hours + */ + write: function write(name, value, hours) { + var expire = ''; + if (hours) { + expire = new Date(new Date().getTime() + hours * 3600000); + expire = '; expires=' + expire.toGMTString(); + } + doc.cookie = name + '=' + escape(value) + expire; + }, + + + /** + * Read a cookie + * @param {String} name Name of the cookie + * @returns {String} Value of the cookie + */ + read: function read(name) { + var cookieValue = '', + search = name + '='; + if (doc.cookie.length > 0) { + var cookie = doc.cookie, + offset = cookie.indexOf(search); + if (offset !== -1) { + offset += search.length; + var end = cookie.indexOf(';', offset); + if (end === -1) { + end = cookie.length; + } + cookieValue = unescape(cookie.substring(offset, end)); + } + } + return cookieValue; + }, + + + /** + * Remove a cookie + * @param {String} name Name of the cookie + */ + remove: function remove(name) { + this.write(name, '', -1); + } +}; + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlternateRows = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Rows with alternating background color for improved readability + */ +var AlternateRows = exports.AlternateRows = function (_Feature) { + _inherits(AlternateRows, _Feature); + + /** + * Creates an instance of AlternateRows. + * + * @param {Object} tf TableFilter instance + */ + function AlternateRows(tf) { + _classCallCheck(this, AlternateRows); + + var _this = _possibleConstructorReturn(this, (AlternateRows.__proto__ || Object.getPrototypeOf(AlternateRows)).call(this, tf, 'alternateRows')); + + var config = _this.config; + /** + * Css class for even rows (default: 'even') + * @type {String} + */ + _this.evenCss = config.even_row_css_class || 'even'; + + /** + * Css class for odd rows (default: 'odd') + * @type {String} + */ + _this.oddCss = config.odd_row_css_class || 'odd'; + return _this; + } + + /** + * Sets alternating rows color + */ + + + _createClass(AlternateRows, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + this.processAll(); + + // Subscribe to events + this.emitter.on(['row-processed', 'row-paged'], function (tf, rowIndex, arrIndex, isValid) { + return _this2.processRow(rowIndex, arrIndex, isValid); + }); + this.emitter.on(['column-sorted'], function () { + return _this2.processAll(); + }); + this.emitter.on(['rows-changed'], function () { + return _this2.processAll(); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Apply background to all valid rows + */ + + }, { + key: 'processAll', + value: function processAll() { + if (!this.isEnabled()) { + return; + } + var tf = this.tf; + var validRowsIndex = tf.getValidRows(true); + var indexLen = validRowsIndex.length; + var idx = 0; + + //alternates bg color + for (var j = 0; j < indexLen; j++) { + var rowIdx = validRowsIndex[j]; + this.setRowBg(rowIdx, idx); + idx++; + } + } + + /** + * Set/remove row background based on row validation + * @param {Number} rowIdx Row index + * @param {Number} arrIdx Array index + * @param {Boolean} isValid Valid row flag + */ + + }, { + key: 'processRow', + value: function processRow(rowIdx, arrIdx, isValid) { + if (isValid) { + this.setRowBg(rowIdx, arrIdx); + } else { + this.removeRowBg(rowIdx); + } + } + + /** + * Sets row background color + * @param {Number} rowIdx Row index + * @param {Number} idx Valid rows collection index needed to calculate bg + * color + * @private + */ + + }, { + key: 'setRowBg', + value: function setRowBg(rowIdx, idx) { + if (!this.isEnabled() || isNaN(rowIdx)) { + return; + } + var rows = this.tf.dom().rows; + var i = isNaN(idx) ? rowIdx : idx; + this.removeRowBg(rowIdx); + + (0, _dom.addClass)(rows[rowIdx], i % 2 ? this.evenCss : this.oddCss); + } + + /** + * Removes row background color + * @param {Number} idx Row index + * @private + */ + + }, { + key: 'removeRowBg', + value: function removeRowBg(idx) { + if (isNaN(idx)) { + return; + } + var rows = this.tf.dom().rows; + (0, _dom.removeClass)(rows[idx], this.oddCss); + (0, _dom.removeClass)(rows[idx], this.evenCss); + } + + /** + * Removes all alternating backgrounds + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + if (!this.initialized) { + return; + } + var nbRows = this.tf.getRowsNb(true); + for (var i = 0; i < nbRows; i++) { + this.removeRowBg(i); + } + + // Unsubscribe to events + this.emitter.off(['row-processed', 'row-paged'], function (tf, rowIndex, arrIndex, isValid) { + return _this3.processRow(rowIndex, arrIndex, isValid); + }); + this.emitter.off(['column-sorted'], function () { + return _this3.processAll(); + }); + this.emitter.off(['rows-changed'], function () { + return _this3.processAll(); + }); + + this.initialized = false; + } + }]); + + return AlternateRows; +}(_feature.Feature); + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ClearButton = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _event = __webpack_require__(17); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Clear button UI component + */ +var ClearButton = exports.ClearButton = function (_Feature) { + _inherits(ClearButton, _Feature); + + /** + * Creates an instance of ClearButton + * @param {TableFilter} tf TableFilter instance + */ + function ClearButton(tf) { + _classCallCheck(this, ClearButton); + + var _this = _possibleConstructorReturn(this, (ClearButton.__proto__ || Object.getPrototypeOf(ClearButton)).call(this, tf, 'btnReset')); + + var f = _this.config; + + /** + * Container element ID + * @type {String} + */ + _this.targetId = f.btn_reset_target_id || null; + + /** + * Clear button container element + * @type {DOMElement} + * @private + */ + _this.container = null; + + /** + * Clear button element + * @type {DOMElement} + * @private + */ + _this.element = null; + + /** + * Text for the clear button + * @type {String} + */ + _this.text = f.btn_reset_text || 'Reset'; + + /** + * Css class for reset button + * @type {String} + */ + _this.cssClass = f.btn_reset_css_class || 'reset'; + + /** + * Tooltip text for the clear button + * @type {String} + */ + _this.tooltip = f.btn_reset_tooltip || 'Clear filters'; + + /** + * Custom Html string for the clear button + * @type {String} + */ + _this.html = f.btn_reset_html || (!tf.enableIcons ? null : ''); + return _this; + } + + /** + * Click event handler for clear button + * @private + */ + + + _createClass(ClearButton, [{ + key: 'onClick', + value: function onClick() { + if (!this.isEnabled()) { + return; + } + this.tf.clearFilters(); + } + + /** + * Initialize clear button component + */ + + }, { + key: 'init', + value: function init() { + var _this2 = this; + + var tf = this.tf; + + if (this.initialized) { + return; + } + + var cont = (0, _dom.createElm)('span'); + + // reset button is added to defined element + if (!this.targetId) { + tf.setToolbar(); + } + var targetEl = !this.targetId ? tf.rDiv : (0, _dom.elm)(this.targetId); + targetEl.appendChild(cont); + + if (!this.html) { + var fltReset = (0, _dom.createElm)('a', ['href', 'javascript:void(0);']); + fltReset.className = this.cssClass; + fltReset.appendChild((0, _dom.createText)(this.text)); + cont.appendChild(fltReset); + (0, _event.addEvt)(fltReset, 'click', function () { + return _this2.onClick(); + }); + } else { + cont.innerHTML = this.html; + var resetEl = cont.firstChild; + (0, _event.addEvt)(resetEl, 'click', function () { + return _this2.onClick(); + }); + } + this.element = cont.firstChild; + this.container = cont; + + /** @inherited */ + this.initialized = true; + } + + /** + * Destroy ClearButton instance + */ + + }, { + key: 'destroy', + value: function destroy() { + if (!this.initialized) { + return; + } + (0, _dom.removeElm)(this.element); + (0, _dom.removeElm)(this.container); + this.element = null; + this.container = null; + this.initialized = false; + } + }]); + + return ClearButton; +}(_feature.Feature); + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DateType = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _sugarDate = __webpack_require__(100); + +__webpack_require__(312); + +var _feature = __webpack_require__(11); + +var _types = __webpack_require__(6); + +var _const = __webpack_require__(14); + +var _root = __webpack_require__(15); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Wrapper for Sugar Date module providing datetime helpers and locales + * @export + * @class DateType + */ +var DateType = exports.DateType = function (_Feature) { + _inherits(DateType, _Feature); + + /** + * Creates an instance of DateType + * @param {TableFilter} tf TableFilter instance + */ + function DateType(tf) { + _classCallCheck(this, DateType); + + /** + * Global locale + * @type {String} + */ + var _this = _possibleConstructorReturn(this, (DateType.__proto__ || Object.getPrototypeOf(DateType)).call(this, tf, 'dateType')); + + _this.locale = tf.locale; + + /** + * Sugar Date instance + * @type {Object} + */ + _this.datetime = _sugarDate.Date; + + _this.enable(); + return _this; + } + + /** + * Initialize DateType instance + */ + + + _createClass(DateType, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + // Set global locale + this.datetime.setLocale(this.locale); + + // Add formats from column types configuration if any + this.addConfigFormats(this.tf.colTypes); + + this.emitter.on(['add-date-type-formats'], function (tf, types) { + return _this2.addConfigFormats(types); + }); + + // Broadcast date-type initialization + this.emitter.emit('date-type-initialized', this.tf, this); + + /** @inherited */ + this.initialized = true; + } + + /** + * Parse a string representation of a date for a specified locale and return + * a date object + * @param {String} dateStr String representation of a date + * @param {String} localeCode Locale code (ie 'en-us') + * @returns {Date} + */ + + }, { + key: 'parse', + value: function parse(dateStr, localeCode) { + return this.datetime.create(dateStr, localeCode); + } + + /** + * Check string representation of a date for a specified locale is valid + * @param {any} dateStr String representation of a date + * @param {any} localeCode Locale code (ie 'en-us') + * @returns {Boolean} + */ + + }, { + key: 'isValid', + value: function isValid(dateStr, localeCode) { + return this.datetime.isValid(this.parse(dateStr, localeCode)); + } + + /** + * Return the type object of a specified column as per configuration or + * passed collection + * @param {Number} colIndex Column index + * @param {Array} types Collection of column types, optional + * @returns {Object} + */ + + }, { + key: 'getOptions', + value: function getOptions(colIndex, types) { + types = types || this.tf.colTypes; + var colType = types[colIndex]; + return (0, _types.isObj)(colType) ? colType : {}; + } + + /** + * Return the locale code for supplied column index as per configuration + * or global setting + * @param {Number} colIndex Column index + * @returns {String} Locale code (ie: 'en-us') + */ + + }, { + key: 'getLocale', + value: function getLocale(colIndex) { + return this.getOptions(colIndex).locale || this.locale; + } + + /** + * Add date time format(s) to a locale as specified by the passed + * collection of column types, ie: + * [ + * 'string', + * 'number', + * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']} + * ] + * + * @param {Array} [types=[]] Collection of column types + */ + + }, { + key: 'addConfigFormats', + value: function addConfigFormats() { + var _this3 = this; + + var types = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + types.forEach(function (type, idx) { + var options = _this3.getOptions(idx, types); + if (options.type === _const.DATE && options.hasOwnProperty('format')) { + var locale = _this3.datetime.getLocale(options.locale || _this3.locale); + var formats = (0, _types.isArray)(options.format) ? options.format : [options.format]; + + // Sugar date module throws exceptions with locale.addFormat + try { + formats.forEach(function (format) { + locale.addFormat(format); + }); + } catch (ex) { + _root.root.console.error(ex); + } + } + }); + } + + /** + * Remove DateType instance + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this4 = this; + + if (!this.initialized) { + return; + } + + // TODO: remove added formats + + this.emitter.off(['add-date-type-formats'], function (tf, types) { + return _this4.addConfigFormats(types); + }); + + this.initialized = false; + } + }]); + + return DateType; +}(_feature.Feature); + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GridLayout = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _event = __webpack_require__(17); + +var _string = __webpack_require__(19); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Grid layout, table with fixed headers + */ +var GridLayout = exports.GridLayout = function (_Feature) { + _inherits(GridLayout, _Feature); + + /** + * Creates an instance of GridLayout + * @param {TableFilter} tf TableFilter instance + */ + function GridLayout(tf) { + _classCallCheck(this, GridLayout); + + var _this = _possibleConstructorReturn(this, (GridLayout.__proto__ || Object.getPrototypeOf(GridLayout)).call(this, tf, 'gridLayout')); + + var f = _this.config.grid_layout || {}; + + /** + * Grid-layout container width as CSS string + * @type {String} + */ + _this.width = f.width || null; + + /** + * Grid-layout container height as CSS string + * @type {String} + */ + _this.height = f.height || null; + + /** + * Css class for main container element + * @type {String} + */ + _this.mainContCssClass = f.cont_css_class || 'grd_Cont'; + + /** + * Css class for body table container element + * @type {String} + */ + _this.contCssClass = f.tbl_cont_css_class || 'grd_tblCont'; + + /** + * Css class for headers table container element + * @type {String} + */ + _this.headContCssClass = f.tbl_head_css_class || 'grd_headTblCont'; + + /** + * Css class for toolbar container element (rows counter, paging etc.) + * @type {String} + */ + _this.infDivCssClass = f.inf_grid_css_class || 'grd_inf'; + + /** + * Index of the headers row, default: 0 + * @type {Number} + */ + _this.headRowIndex = f.headers_row_index || 0; + + /** + * Collection of the header row indexes to be moved into headers table + * @type {Array} + */ + _this.headRows = f.headers_rows || [0]; + + /** + * Enable or disable column filters generation, default: true + * @type {Boolean} + */ + _this.filters = f.filters === false ? false : true; + + /** + * Enable or disable column headers, default: false + * @type {Boolean} + */ + _this.noHeaders = Boolean(f.no_headers); + + /** + * Grid-layout default column widht as CSS string + * @type {String} + */ + _this.defaultColWidth = f.default_col_width || '100px'; + + /** + * List of column elements + * @type {Array} + * @private + */ + _this.colElms = []; + + /** + * Prefix for grid-layout filter's cell ID + * @type {String} + * @private + */ + _this.prfxGridFltTd = '_td_'; + + /** + * Prefix for grid-layout header's cell ID + * @type {String} + * @private + */ + _this.prfxGridTh = 'tblHeadTh_'; + + /** + * Mark-up of original HTML table + * @type {String} + * @private + */ + _this.sourceTblHtml = tf.dom().outerHTML; + + /** + * Indicates if working table has column elements + * @type {Boolean} + * @private + */ + _this.tblHasColTag = (0, _dom.tag)(tf.dom(), 'col').length > 0 ? true : false; + + /** + * Main container element + * @private + */ + _this.tblMainCont = null; + + /** + * Table container element + * @private + */ + _this.tblCont = null; + + /** + * Headers' table container element + * @private + */ + _this.headTblCont = null; + + /** + * Headers' table element + * @private + */ + _this.headTbl = null; + + // filters flag at TF level + tf.fltGrid = _this.filters; + return _this; + } + + /** + * Generates a grid with fixed headers + * TODO: reduce size of init by extracting single purposed methods + */ + + + _createClass(GridLayout, [{ + key: 'init', + value: function init() { + var _this2 = this; + + var tf = this.tf; + var tbl = tf.dom(); + + if (this.initialized) { + return; + } + + // Override relevant TableFilter properties + this.setOverrides(); + + // Assign default column widths + this.setDefaultColWidths(); + + // Initial table width + var tblW = this.initialTableWidth(); + + //Main container: it will contain all the elements + this.tblMainCont = this.createContainer('div', this.mainContCssClass); + if (this.width) { + this.tblMainCont.style.width = this.width; + } + tbl.parentNode.insertBefore(this.tblMainCont, tbl); + + //Table container: div wrapping content table + this.tblCont = this.createContainer('div', this.contCssClass); + this.setConfigWidth(this.tblCont); + if (this.height) { + this.tblCont.style.height = this.height; + } + tbl.parentNode.insertBefore(this.tblCont, tbl); + var t = (0, _dom.removeElm)(tbl); + this.tblCont.appendChild(t); + + //In case table width is expressed in % + if (tbl.style.width === '') { + tbl.style.width = ((0, _string.contains)('%', tblW) ? tbl.clientWidth : tblW) + 'px'; + } + + var d = (0, _dom.removeElm)(this.tblCont); + this.tblMainCont.appendChild(d); + + //Headers table container: div wrapping headers table + this.headTblCont = this.createContainer('div', this.headContCssClass); + + //Headers table + this.headTbl = (0, _dom.createElm)('table'); + var tH = (0, _dom.createElm)('tHead'); + + //1st row should be headers row, ids are added if not set + //Those ids are used by the sort feature + var hRow = tbl.rows[this.headRowIndex]; + var sortTriggers = this.getSortTriggerIds(hRow); + + //Filters row is created + var filtersRow = this.createFiltersRow(); + + //Headers row are moved from content table to headers table + this.setHeadersRow(tH); + + this.headTbl.appendChild(tH); + if (tf.filtersRowIndex === 0) { + tH.insertBefore(filtersRow, hRow); + } else { + tH.appendChild(filtersRow); + } + + this.headTblCont.appendChild(this.headTbl); + this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont); + + //THead needs to be removed in content table for sort feature + var thead = (0, _dom.tag)(tbl, 'thead'); + if (thead.length > 0) { + tbl.removeChild(thead[0]); + } + + //Headers table style + this.headTbl.style.tableLayout = 'fixed'; + tbl.style.tableLayout = 'fixed'; + this.headTbl.cellPadding = tbl.cellPadding; + this.headTbl.cellSpacing = tbl.cellSpacing; + + //content table without headers needs col widths to be reset + tf.setColWidths(this.headTbl); + + //Headers container width + // this.headTblCont.style.width = this.tblCont.clientWidth+'px'; + + tbl.style.width = ''; + // + this.headTbl.style.width = tbl.clientWidth + 'px'; + // + + //scroll synchronisation + (0, _event.addEvt)(this.tblCont, 'scroll', function (evt) { + var elm = (0, _event.targetEvt)(evt); + var scrollLeft = elm.scrollLeft; + _this2.headTblCont.scrollLeft = scrollLeft; + //New pointerX calc taking into account scrollLeft + // if(!o.isPointerXOverwritten){ + // try{ + // o.Evt.pointerX = function(evt){ + // let e = evt || global.event; + // let bdScrollLeft = tf_StandardBody().scrollLeft + + // scrollLeft; + // return (e.pageX + scrollLeft) || + // (e.clientX + bdScrollLeft); + // }; + // o.isPointerXOverwritten = true; + // } catch(err) { + // o.isPointerXOverwritten = false; + // } + // } + }); + + // TODO: Trigger a custom event handled by sort extension + var sort = tf.extension('sort'); + if (sort) { + sort.asyncSort = true; + sort.triggerIds = sortTriggers; + } + + //Col elements are enough to keep column widths after sorting and + //filtering + this.setColumnElements(); + + if (tf.popupFilters) { + filtersRow.style.display = _const.NONE; + } + + if (tbl.clientWidth !== this.headTbl.clientWidth) { + tbl.style.width = this.headTbl.clientWidth + 'px'; + } + + this.emitter.on(['column-hidden'], function (tf, extension, colIndex /*, hiddenCols*/) { + // let hiddenWidth = parseInt( + // this.colElms[colIndex].style.width, 10); + // let headCols = tag(this.headTbl, 'col'); + // headCols[colIndex].style.width = '0'; + // this.colElms[colIndex].style.width = '0'; + var headTblW = parseInt(_this2.headTbl.style.width, 10); + var hiddenWidth = parseInt(_this2.colElms[colIndex].style.width, 10); + _this2.headTbl.style.width = headTblW - hiddenWidth + 'px'; + tbl.style.width = _this2.headTbl.style.width; + }); + + this.emitter.on(['column-shown'], function (tf, extension, colIndex /*, hiddenCols*/) { + var width = parseInt(_this2.colElms[colIndex].style.width, 10); + // let headCols = tag(this.headTbl, 'col'); + // headCols[colIndex].style.width = tf.colWidths[colIndex]; + // this.colElms[colIndex].style.width = tf.colWidths[colIndex]; + var headTblW = parseInt(_this2.headTbl.style.width, 10); + // console.log('show',headTblW); + _this2.headTbl.style.width = headTblW + width + 'px'; + tbl.style.width = _this2.headTbl.style.width; + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Overrides TableFilter instance properties to adjust to grid layout mode + * @private + */ + + }, { + key: 'setOverrides', + value: function setOverrides() { + var tf = this.tf; + tf.refRow = 0; + tf.headersRow = 0; + tf.filtersRowIndex = 1; + tf.isExternalFlt = true; + } + + /** + * Set grid-layout default column widths if column widths are not defined + * @private + */ + + }, { + key: 'setDefaultColWidths', + value: function setDefaultColWidths() { + var tf = this.tf; + if (tf.hasColWidths) { + return; + } + for (var k = 0, len = tf.getCellsNb(); k < len; k++) { + var colW = void 0; + var cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k]; + if (cell.width !== '') { + colW = cell.width; + } else if (cell.style.width !== '') { + colW = parseInt(cell.style.width, 10); + } else { + colW = this.defaultColWidth; + } + tf.colWidths[k] = colW; + } + tf.hasColWidths = true; + tf.setColWidths(); + } + + /** + * Initial table width + * @returns {Number} + * @private + */ + + }, { + key: 'initialTableWidth', + value: function initialTableWidth() { + var tbl = this.tf.dom(); + var width = void 0; //initial table width + + if (tbl.width !== '') { + width = tbl.width; + } else if (tbl.style.width !== '') { + width = tbl.style.width; + } else { + width = tbl.clientWidth; + } + return parseInt(width, 10); + } + + /** + * Creates container element + * @param {String} tag Tag name + * @param {String} className Css class to assign to element + * @returns {DOMElement} + * @private + */ + + }, { + key: 'createContainer', + value: function createContainer(tag, className) { + var element = (0, _dom.createElm)(tag); + element.className = className; + return element; + } + + /** + * Creates filters row with cells + * @returns {HTMLTableRowElement} + * @private + */ + + }, { + key: 'createFiltersRow', + value: function createFiltersRow() { + var tf = this.tf; + var filtersRow = (0, _dom.createElm)('tr'); + if (this.filters && tf.fltGrid) { + tf.externalFltTgtIds = []; + for (var j = 0; j < tf.getCellsNb(); j++) { + var fltTdId = '' + (tf.prfxFlt + j + this.prfxGridFltTd + tf.id); + var cl = (0, _dom.createElm)(tf.fltCellTag, ['id', fltTdId]); + filtersRow.appendChild(cl); + tf.externalFltTgtIds[j] = fltTdId; + } + } + return filtersRow; + } + + /** + * Generates column elements if necessary and assigns their widths + * @private + */ + + }, { + key: 'setColumnElements', + value: function setColumnElements() { + var tf = this.tf; + var cols = (0, _dom.tag)(tf.dom(), 'col'); + this.tblHasColTag = cols.length > 0; + + for (var k = tf.nbCells - 1; k >= 0; k--) { + var col = void 0; + + if (!this.tblHasColTag) { + col = (0, _dom.createElm)('col'); + tf.dom().insertBefore(col, tf.dom().firstChild); + } else { + col = cols[k]; + } + col.style.width = tf.colWidths[k]; + this.colElms[k] = col; + } + this.tblHasColTag = true; + } + + /** + * Sets headers row in headers table + * @param {HTMLHeadElement} tableHead Table head element + * @private + */ + + }, { + key: 'setHeadersRow', + value: function setHeadersRow(tableHead) { + if (this.noHeaders) { + // Handle table with no headers, assuming here headers do not + // exist + tableHead.appendChild((0, _dom.createElm)('tr')); + } else { + // Headers row are moved from content table to headers table + for (var i = 0; i < this.headRows.length; i++) { + var row = this.tf.dom().rows[this.headRows[i]]; + tableHead.appendChild(row); + } + } + } + + /** + * Sets width defined in configuration to passed element + * @param {DOMElement} element DOM element + * @private + */ + + }, { + key: 'setConfigWidth', + value: function setConfigWidth(element) { + if (!this.width) { + return; + } + if (this.width.indexOf('%') !== -1) { + element.style.width = '100%'; + } else { + element.style.width = this.width; + } + } + + /** + * Returns a list of header IDs used for specifing external sort triggers + * @param {HTMLTableRowElement} row DOM row element + * @returns {Array} List of IDs + * @private + */ + + }, { + key: 'getSortTriggerIds', + value: function getSortTriggerIds(row) { + var tf = this.tf; + var sortTriggers = []; + for (var n = 0; n < tf.getCellsNb(); n++) { + var c = row.cells[n]; + var thId = c.getAttribute('id'); + if (!thId || thId === '') { + thId = this.prfxGridTh + n + '_' + tf.id; + c.setAttribute('id', thId); + } + sortTriggers.push(thId); + } + return sortTriggers; + } + + /** + * Removes the grid layout + */ + + }, { + key: 'destroy', + value: function destroy() { + var tf = this.tf; + var tbl = tf.dom(); + + if (!this.initialized) { + return; + } + var t = (0, _dom.removeElm)(tbl); + this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont); + (0, _dom.removeElm)(this.tblMainCont); + + this.tblMainCont = null; + this.headTblCont = null; + this.headTbl = null; + this.tblCont = null; + + tbl.outerHTML = this.sourceTblHtml; + //needed to keep reference of table element for future usage + this.tf.tbl = (0, _dom.elm)(tf.id); + + this.initialized = false; + } + }]); + + return GridLayout; +}(_feature.Feature); + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Hash = exports.hasHashChange = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _event = __webpack_require__(17); + +var _root = __webpack_require__(15); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var JSON = _root.root.JSON; +var location = _root.root.location; +var decodeURIComponent = _root.root.decodeURIComponent; +var encodeURIComponent = _root.root.encodeURIComponent; + +/** + * Checks if browser has onhashchange event + */ +var hasHashChange = exports.hasHashChange = function hasHashChange() { + var docMode = _root.root.documentMode; + return 'onhashchange' in _root.root && (docMode === undefined || docMode > 7); +}; + +/** + * Manages state via URL hash changes + * + * @export + * @class Hash + */ + +var Hash = exports.Hash = function () { + + /** + * Creates an instance of Hash + * + * @param {State} state Instance of State + */ + function Hash(state) { + _classCallCheck(this, Hash); + + /** + * State object + * @type {State} + */ + this.state = state; + + /** + * Cached URL hash + * @type {String} Hash string + * @private + */ + this.lastHash = null; + + /** + * Application event emitter instance + * @type {Emitter} + */ + this.emitter = state.emitter; + + /** + * Bound sync wrapper for future use + * @private + */ + this.boundSync = null; + } + + /** + * Initializes the Hash object + */ + + + _createClass(Hash, [{ + key: 'init', + value: function init() { + var _this = this; + + if (!hasHashChange()) { + return; + } + + this.lastHash = location.hash; + //Store a bound sync wrapper + this.boundSync = this.sync.bind(this); + this.emitter.on(['state-changed'], function (tf, state) { + return _this.update(state); + }); + this.emitter.on(['initialized'], this.boundSync); + (0, _event.addEvt)(_root.root, 'hashchange', this.boundSync); + } + + /** + * Updates the URL hash based on a state change + * + * @param {State} state Instance of State + */ + + }, { + key: 'update', + value: function update(state) { + var hash = '#' + encodeURIComponent(JSON.stringify(state)); + if (this.lastHash === hash) { + return; + } + + location.hash = hash; + this.lastHash = hash; + } + + /** + * Converts a URL hash into a state JSON object + * + * @param {String} hash URL hash fragment + * @returns {Object} JSON object + */ + + }, { + key: 'parse', + value: function parse(hash) { + if (hash.indexOf('#') === -1) { + return null; + } + hash = hash.substr(1); + return JSON.parse(decodeURIComponent(hash)); + } + + /** + * Applies current hash state to features + */ + + }, { + key: 'sync', + value: function sync() { + var state = this.parse(location.hash); + if (!state) { + return; + } + // override current state with persisted one and sync features + this.state.overrideAndSync(state); + } + + /** + * Release Hash event subscriptions and clear fields + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this2 = this; + + this.emitter.off(['state-changed'], function (tf, state) { + return _this2.update(state); + }); + this.emitter.off(['initialized'], this.boundSync); + (0, _event.removeEvt)(_root.root, 'hashchange', this.boundSync); + + this.state = null; + this.lastHash = null; + this.emitter = null; + } + }]); + + return Hash; +}(); + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Help = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _event = __webpack_require__(17); + +var _const = __webpack_require__(14); + +var _root = __webpack_require__(15); + +var _types = __webpack_require__(6); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' + '4.-Filter-operators'; +var WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/'; + +/** + * Help UI component + */ + +var Help = exports.Help = function (_Feature) { + _inherits(Help, _Feature); + + /** + * Creates an instance of Help + * @param {TableFilter} tf TableFilter instance + */ + function Help(tf) { + _classCallCheck(this, Help); + + var _this = _possibleConstructorReturn(this, (Help.__proto__ || Object.getPrototypeOf(Help)).call(this, tf, 'help')); + + var f = _this.config.help_instructions || {}; + + /** + * ID of main custom container element + * @type {String} + */ + _this.tgtId = f.target_id || null; + + /** + * ID of custom container element for instructions + * @type {String} + */ + _this.contTgtId = f.container_target_id || null; + + /** + * Instructions text (accepts HTML) + * @type {String} + */ + _this.instrText = !(0, _types.isEmpty)(f.text) ? f.text : 'Use the filters above each column to filter and limit table ' + 'data. Advanced searches can be performed by using the following ' + 'operators:
<, <=, >, ' + '>=, =, *, !, {, }, ' + '||,&&, [empty], [nonempty], ' + 'rgx:
' + 'Learn more
'; + + /** + * Instructions HTML + * @type {String} + */ + _this.instrHtml = f.html || null; + + /** + * Help button text ('?') + * @type {String} + */ + _this.btnText = f.btn_text || '?'; + + /** + * Custom help button HTML + * @type {String} + */ + _this.btnHtml = f.btn_html || null; + + /** + * Css class for help button + * @type {String} + */ + _this.btnCssClass = f.btn_css_class || 'helpBtn'; + + /** + * Css class for help container element + * @type {String} + */ + _this.contCssClass = f.container_css_class || 'helpCont'; + + /** + * Button DOM element + * @type {DOMElement} + */ + _this.btn = null; + + /** + * Help container DOM element + * @type {DOMElement} + */ + _this.cont = null; + + /** + * Bound mouseup wrapper + * @private + */ + _this.boundMouseup = null; + + /** + * Default HTML appended to instructions text + * @type {String} + */ + _this.defaultHtml = '

TableFilter ' + 'v' + tf.version + '

' + '' + WEBSITE_URL + '' + '
©2015-' + tf.year + ' Max Guglielmi' + '
' + 'Close
'; + + _this.emitter.on(['init-help'], function () { + return _this.init(); + }); + return _this; + } + + /** + * Mouse-up event handler handling popup auto-close behaviour + * @private + */ + + + _createClass(Help, [{ + key: 'onMouseup', + value: function onMouseup(evt) { + var targetElm = (0, _event.targetEvt)(evt); + + while (targetElm && targetElm !== this.cont && targetElm !== this.btn) { + targetElm = targetElm.parentNode; + } + + if (targetElm !== this.cont && targetElm !== this.btn) { + this.toggle(); + } + + return; + } + + /** + * Initialise Help instance + */ + + }, { + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + var tf = this.tf; + + var btn = (0, _dom.createElm)('span'); + var cont = (0, _dom.createElm)('div'); + + this.boundMouseup = this.onMouseup.bind(this); + + //help button is added to defined element + if (!this.tgtId) { + tf.setToolbar(); + } + var targetEl = !this.tgtId ? tf.rDiv : (0, _dom.elm)(this.tgtId); + targetEl.appendChild(btn); + + var divContainer = !this.contTgtId ? btn : (0, _dom.elm)(this.contTgtId); + + if (!this.btnHtml) { + divContainer.appendChild(cont); + var helplink = (0, _dom.createElm)('a', ['href', 'javascript:void(0);']); + helplink.className = this.btnCssClass; + helplink.appendChild((0, _dom.createText)(this.btnText)); + btn.appendChild(helplink); + (0, _event.addEvt)(helplink, 'click', function () { + return _this2.toggle(); + }); + } else { + btn.innerHTML = this.btnHtml; + var helpEl = btn.firstChild; + (0, _event.addEvt)(helpEl, 'click', function () { + return _this2.toggle(); + }); + divContainer.appendChild(cont); + } + + if (!this.instrHtml) { + cont.innerHTML = this.instrText; + cont.className = this.contCssClass; + } else { + if (this.contTgtId) { + divContainer.appendChild(cont); + } + cont.innerHTML = this.instrHtml; + if (!this.contTgtId) { + cont.className = this.contCssClass; + } + } + cont.innerHTML += this.defaultHtml; + (0, _event.addEvt)(cont, 'click', function () { + return _this2.toggle(); + }); + + this.cont = cont; + this.btn = btn; + /** @inherited */ + this.initialized = true; + } + + /** + * Toggle help pop-up + */ + + }, { + key: 'toggle', + value: function toggle() { + // check only if explicitily disabled as in this case undefined + // signifies the help feature is enabled by default + if (!this.isEnabled()) { + return; + } + + // ensure mouseup event handler is removed + (0, _event.removeEvt)(_root.root, 'mouseup', this.boundMouseup); + + var divDisplay = this.cont.style.display; + if (divDisplay === '' || divDisplay === _const.NONE) { + this.cont.style.display = 'inline'; + (0, _event.addEvt)(_root.root, 'mouseup', this.boundMouseup); + } else { + this.cont.style.display = _const.NONE; + } + } + + /** + * Remove help UI + */ + + }, { + key: 'destroy', + value: function destroy() { + if (!this.initialized) { + return; + } + (0, _dom.removeElm)(this.btn); + this.btn = null; + + (0, _dom.removeElm)(this.cont); + this.cont = null; + + this.boundMouseup = null; + this.initialized = false; + } + }]); + + return Help; +}(_feature.Feature); + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HighlightKeyword = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +var _string = __webpack_require__(19); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Highlight matched keywords upon filtering + * + * @export + * @class HighlightKeyword + */ +var HighlightKeyword = exports.HighlightKeyword = function () { + + /** + * Creates an instance of HighlightKeyword + * @param {TableFilter} tf TableFilter instance + */ + function HighlightKeyword(tf) { + _classCallCheck(this, HighlightKeyword); + + var f = tf.config(); + + /** + * Css class for highlighted term + * @type {String} + */ + this.highlightCssClass = f.highlight_css_class || 'keyword'; + + /** + * TableFilter instance + * @type {TableFilter} + */ + this.tf = tf; + + /** + * TableFilter's emitter instance + * @type {Emitter} + */ + this.emitter = tf.emitter; + } + + /** + * Initializes HighlightKeyword instance + */ + + + _createClass(HighlightKeyword, [{ + key: 'init', + value: function init() { + var _this = this; + + this.emitter.on(['before-filtering', 'destroy'], function () { + return _this.unhighlightAll(); + }); + this.emitter.on(['highlight-keyword'], function (tf, cell, term) { + return _this._processTerm(cell, term); + }); + } + + /** + * Highlight occurences of searched term in passed node + * @param {Node} node + * @param {String} term Searched term + * @param {String} cssClass Css class name + * + * TODO: refactor this method + */ + + }, { + key: 'highlight', + value: function highlight(node, term, cssClass) { + // Iterate into this nodes childNodes + if (node.hasChildNodes) { + var children = node.childNodes; + for (var i = 0; i < children.length; i++) { + this.highlight(children[i], term, cssClass); + } + } + + if (node.nodeType === 3) { + var nodeVal = node.nodeValue.toLowerCase(); + var termIdx = nodeVal.indexOf(term.toLowerCase()); + + if (termIdx !== -1) { + var pn = node.parentNode; + if (pn && pn.className !== cssClass) { + // term not highlighted yet + var nv = node.nodeValue, + + // Create a load of replacement nodes + before = (0, _dom.createText)(nv.substr(0, termIdx)), + value = nv.substr(termIdx, term.length), + after = (0, _dom.createText)(nv.substr(termIdx + term.length)), + text = (0, _dom.createText)(value), + container = (0, _dom.createElm)('span'); + container.className = cssClass; + container.appendChild(text); + pn.insertBefore(before, node); + pn.insertBefore(container, node); + pn.insertBefore(after, node); + pn.removeChild(node); + } + } + } + } + + /** + * Removes highlight to nodes matching passed string + * @param {String} term + * @param {String} cssClass Css class to remove + */ + + }, { + key: 'unhighlight', + value: function unhighlight(term, cssClass) { + var highlightedNodes = this.tf.dom().querySelectorAll('.' + cssClass); + for (var i = 0; i < highlightedNodes.length; i++) { + var n = highlightedNodes[i]; + var nodeVal = (0, _dom.getText)(n); + + if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) { + var parentNode = n.parentNode; + parentNode.replaceChild((0, _dom.createText)(nodeVal), n); + parentNode.normalize(); + } + } + } + + /** + * Clear all occurrences of highlighted nodes + */ + + }, { + key: 'unhighlightAll', + value: function unhighlightAll() { + var _this2 = this; + + if (!this.tf.highlightKeywords) { + return; + } + // iterate filters values to unhighlight all values + this.tf.getFiltersValue().forEach(function (val) { + if ((0, _types.isArray)(val)) { + val.forEach(function (item) { + return _this2.unhighlight(item, _this2.highlightCssClass); + }); + } else { + _this2.unhighlight(val, _this2.highlightCssClass); + } + }); + } + + /** Remove feature */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + this.emitter.off(['before-filtering', 'destroy'], function () { + return _this3.unhighlightAll(); + }); + this.emitter.off(['highlight-keyword'], function (tf, cell, term) { + return _this3._processTerm(cell, term); + }); + } + + /** + * Ensure filtering operators are handled before highlighting any match + * @param {any} Table cell to look searched term into + * @param {any} Searched termIdx + */ + + }, { + key: '_processTerm', + value: function _processTerm(cell, term) { + var tf = this.tf; + var reLk = new RegExp((0, _string.rgxEsc)(tf.lkOperator)); + var reEq = new RegExp(tf.eqOperator); + var reSt = new RegExp(tf.stOperator); + var reEn = new RegExp(tf.enOperator); + var reLe = new RegExp(tf.leOperator); + var reGe = new RegExp(tf.geOperator); + var reL = new RegExp(tf.lwOperator); + var reG = new RegExp(tf.grOperator); + var reD = new RegExp(tf.dfOperator); + + term = term.replace(reLk, '').replace(reEq, '').replace(reSt, '').replace(reEn, ''); + + if (reLe.test(term) || reGe.test(term) || reL.test(term) || reG.test(term) || reD.test(term)) { + term = (0, _dom.getText)(cell); + } + + if (term === '') { + return; + } + + this.highlight(cell, term, this.highlightCssClass); + } + }]); + + return HighlightKeyword; +}(); + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Loader = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +var _root = __webpack_require__(15); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var EVENTS = ['before-filtering', 'before-populating-filter', 'before-page-change', 'before-clearing-filters', 'before-page-length-change', 'before-reset-page', 'before-reset-page-length', 'before-loading-extensions', 'before-loading-themes']; + +/** + * Activity indicator + * + * @export + * @class Loader + * @extends {Feature} + */ + +var Loader = exports.Loader = function (_Feature) { + _inherits(Loader, _Feature); + + /** + * Creates an instance of Loader. + * + * @param {TableFilter} tf TableFilter instance + */ + function Loader(tf) { + _classCallCheck(this, Loader); + + var _this = _possibleConstructorReturn(this, (Loader.__proto__ || Object.getPrototypeOf(Loader)).call(this, tf, 'loader')); + + var f = _this.config.loader || {}; + + /** + * ID of custom container element + * @type {String} + */ + _this.targetId = f.target_id || null; + + /** + * Loader container DOM element + * @type {DOMElement} + */ + _this.cont = null; + + /** + * Text displayed when indicator is visible + * @type {String} + */ + _this.text = f.text || 'Loading...'; + + /** + * Custom HTML injected in Loader's container element + * @type {String} + */ + _this.html = f.html || null; + + /** + * Css class for Loader's container element + * @type {String} + */ + _this.cssClass = f.css_class || 'loader'; + + /** + * Close delay in milliseconds + * @type {Number} + */ + _this.closeDelay = 250; + + /** + * Callback fired when loader is displayed + * @type {Function} + */ + _this.onShow = (0, _types.isFn)(f.on_show_loader) ? f.on_show_loader : _types.EMPTY_FN; + + /** + * Callback fired when loader is closed + * @type {Function} + */ + _this.onHide = (0, _types.isFn)(f.on_hide_loader) ? f.on_hide_loader : _types.EMPTY_FN; + return _this; + } + + /** + * Initializes Loader instance + */ + + + _createClass(Loader, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + var tf = this.tf; + var emitter = this.emitter; + + var containerDiv = (0, _dom.createElm)('div'); + containerDiv.className = this.cssClass; + + var targetEl = !this.targetId ? tf.dom().parentNode : (0, _dom.elm)(this.targetId); + if (!this.targetId) { + targetEl.insertBefore(containerDiv, tf.dom()); + } else { + targetEl.appendChild(containerDiv); + } + this.cont = containerDiv; + if (!this.html) { + this.cont.appendChild((0, _dom.createText)(this.text)); + } else { + this.cont.innerHTML = this.html; + } + + this.show(_const.NONE); + + // Subscribe to events + emitter.on(EVENTS, function () { + return _this2.show(''); + }); + emitter.on(EVENTS, function () { + return _this2.show(_const.NONE); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Shows or hides activity indicator + * @param {String} Two possible values: '' or 'none' + */ + + }, { + key: 'show', + value: function show(p) { + var _this3 = this; + + if (!this.isEnabled()) { + return; + } + + var displayLoader = function displayLoader() { + if (!_this3.cont) { + return; + } + if (p !== _const.NONE) { + _this3.onShow(_this3); + } + _this3.cont.style.display = p; + if (p === _const.NONE) { + _this3.onHide(_this3); + } + }; + + var t = p === _const.NONE ? this.closeDelay : 1; + _root.root.setTimeout(displayLoader, t); + } + + /** + * Removes feature + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this4 = this; + + if (!this.initialized) { + return; + } + + var emitter = this.emitter; + + (0, _dom.removeElm)(this.cont); + this.cont = null; + + // Unsubscribe to events + emitter.off(EVENTS, function () { + return _this4.show(''); + }); + emitter.off(EVENTS, function () { + return _this4.show(_const.NONE); + }); + + this.initialized = false; + } + }]); + + return Loader; +}(_feature.Feature); + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MarkActiveColumns = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Visual indicator for filtered columns + * @export + * @class MarkActiveColumns + * @extends {Feature} + */ +var MarkActiveColumns = exports.MarkActiveColumns = function (_Feature) { + _inherits(MarkActiveColumns, _Feature); + + /** + * Create an instance of MarkActiveColumns + * @param {TableFilter} tf TableFilter instance + */ + function MarkActiveColumns(tf) { + _classCallCheck(this, MarkActiveColumns); + + var _this = _possibleConstructorReturn(this, (MarkActiveColumns.__proto__ || Object.getPrototypeOf(MarkActiveColumns)).call(this, tf, 'markActiveColumns')); + + var config = _this.config.mark_active_columns || {}; + + /** + * Css class for filtered (active) columns + * @type {String} + */ + _this.headerCssClass = config.header_css_class || 'activeHeader'; + + /** + * Callback fired before a column is marked as filtered + * @type {Function} + */ + _this.onBeforeActiveColumn = (0, _types.isFn)(config.on_before_active_column) ? config.on_before_active_column : _types.EMPTY_FN; + + /** + * Callback fired after a column is marked as filtered + * @type {Function} + */ + _this.onAfterActiveColumn = (0, _types.isFn)(config.on_after_active_column) ? config.on_after_active_column : _types.EMPTY_FN; + return _this; + } + + /** + * Initialise MarkActiveColumns instance + */ + + + _createClass(MarkActiveColumns, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + this.emitter.on(['before-filtering'], function () { + return _this2.clearActiveColumns(); + }); + this.emitter.on(['cell-processed'], function (tf, colIndex) { + return _this2.markActiveColumn(colIndex); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Clear filtered columns visual indicator (background color) + */ + + }, { + key: 'clearActiveColumns', + value: function clearActiveColumns() { + var tf = this.tf; + var len = tf.getCellsNb(); + for (var i = 0; i < len; i++) { + (0, _dom.removeClass)(tf.getHeaderElement(i), this.headerCssClass); + } + } + + /** + * Mark currently filtered column + * @param {Number} colIndex Column index + */ + + }, { + key: 'markActiveColumn', + value: function markActiveColumn(colIndex) { + var header = this.tf.getHeaderElement(colIndex); + if ((0, _dom.hasClass)(header, this.headerCssClass)) { + return; + } + this.onBeforeActiveColumn(this, colIndex); + + (0, _dom.addClass)(header, this.headerCssClass); + + this.onAfterActiveColumn(this, colIndex); + } + + /** + * Remove feature + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + if (!this.initialized) { + return; + } + + this.clearActiveColumns(); + this.emitter.off(['before-filtering'], function () { + return _this3.clearActiveColumns(); + }); + this.emitter.off(['cell-processed'], function (tf, colIndex) { + return _this3.markActiveColumn(colIndex); + }); + + /** @inherited */ + this.initialized = false; + } + }]); + + return MarkActiveColumns; +}(_feature.Feature); + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NoResults = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * UI when filtering yields no matches + * @export + * @class NoResults + * @extends {Feature} + */ +var NoResults = exports.NoResults = function (_Feature) { + _inherits(NoResults, _Feature); + + /** + * Creates an instance of NoResults + * @param {TableFilter} tf TableFilter instance + */ + function NoResults(tf) { + _classCallCheck(this, NoResults); + + //configuration object + var _this = _possibleConstructorReturn(this, (NoResults.__proto__ || Object.getPrototypeOf(NoResults)).call(this, tf, 'noResults')); + + var f = _this.config.no_results_message || {}; + + /** + * Text (accepts HTML) + * @type {String} + */ + _this.content = f.content || 'No results'; + + /** + * Custom container DOM element + * @type {DOMElement} + */ + _this.customContainer = f.custom_container || null; + + /** + * ID of custom container element + * @type {String} + */ + _this.customContainerId = f.custom_container_id || null; + + /** + * Indicates if UI is contained in a external element + * @type {Boolean} + * @private + */ + _this.isExternal = !(0, _types.isEmpty)(_this.customContainer) || !(0, _types.isEmpty)(_this.customContainerId); + + /** + * Css class assigned to container element + * @type {String} + */ + _this.cssClass = f.css_class || 'no-results'; + + /** + * Stores container DOM element + * @type {DOMElement} + */ + _this.cont = null; + + /** + * Callback fired before the message is displayed + * @type {Function} + */ + _this.onBeforeShow = (0, _types.isFn)(f.on_before_show_msg) ? f.on_before_show_msg : _types.EMPTY_FN; + + /** + * Callback fired after the message is displayed + * @type {Function} + */ + _this.onAfterShow = (0, _types.isFn)(f.on_after_show_msg) ? f.on_after_show_msg : _types.EMPTY_FN; + + /** + * Callback fired before the message is hidden + * @type {Function} + */ + _this.onBeforeHide = (0, _types.isFn)(f.on_before_hide_msg) ? f.on_before_hide_msg : _types.EMPTY_FN; + + /** + * Callback fired after the message is hidden + * @type {Function} + */ + _this.onAfterHide = (0, _types.isFn)(f.on_after_hide_msg) ? f.on_after_hide_msg : _types.EMPTY_FN; + return _this; + } + + /** + * Initializes NoResults instance + */ + + + _createClass(NoResults, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + var tf = this.tf; + var target = this.customContainer || (0, _dom.elm)(this.customContainerId) || tf.dom(); + + //container + var cont = (0, _dom.createElm)('div'); + cont.className = this.cssClass; + cont.innerHTML = this.content; + + if (this.isExternal) { + target.appendChild(cont); + } else { + target.parentNode.insertBefore(cont, target.nextSibling); + } + + this.cont = cont; + + // subscribe to after-filtering event + this.emitter.on(['after-filtering'], function () { + return _this2.toggle(); + }); + + /** @inherited */ + this.initialized = true; + + this.hide(); + } + + /** + * Toggle no results message + */ + + }, { + key: 'toggle', + value: function toggle() { + if (this.tf.getValidRowsNb() > 0) { + this.hide(); + } else { + this.show(); + } + } + + /** + * Show no results message + */ + + }, { + key: 'show', + value: function show() { + if (!this.initialized || !this.isEnabled()) { + return; + } + this.onBeforeShow(this.tf, this); + + this.setWidth(); + this.cont.style.display = 'block'; + + this.onAfterShow(this.tf, this); + } + + /** + * Hide no results message + */ + + }, { + key: 'hide', + value: function hide() { + if (!this.initialized || !this.isEnabled()) { + return; + } + this.onBeforeHide(this.tf, this); + + this.cont.style.display = _const.NONE; + + this.onAfterHide(this.tf, this); + } + + /** + * Sets no results container width + * @private + */ + + }, { + key: 'setWidth', + value: function setWidth() { + if (!this.initialized || this.isExternal || !this.isEnabled()) { + return; + } + var tf = this.tf; + if (tf.gridLayout) { + var gridLayout = tf.feature('gridLayout'); + this.cont.style.width = gridLayout.tblCont.clientWidth + 'px'; + } else { + this.cont.style.width = (tf.dom().tHead ? tf.dom().tHead.clientWidth : tf.dom().tBodies[0].clientWidth) + 'px'; + } + } + + /** + * Remove feature + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + if (!this.initialized) { + return; + } + (0, _dom.removeElm)(this.cont); + this.cont = null; + // unsubscribe to after-filtering event + this.emitter.off(['after-filtering'], function () { + return _this3.toggle(); + }); + + this.initialized = false; + } + }]); + + return NoResults; +}(_feature.Feature); + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Paging = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +var _event = __webpack_require__(17); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Paging UI component + * @export + * @class Paging + * @extends {Feature} + */ +var Paging = exports.Paging = function (_Feature) { + _inherits(Paging, _Feature); + + /** + * Creates an instance of Paging + * @param {TableFilter} tf TableFilter instance + */ + function Paging(tf) { + _classCallCheck(this, Paging); + + // Configuration object + var _this = _possibleConstructorReturn(this, (Paging.__proto__ || Object.getPrototypeOf(Paging)).call(this, tf, 'paging')); + + var f = _this.config.paging || {}; + + /** + * Css class for the paging buttons (previous, next, etc.) + * @type {String} + */ + _this.btnCssClass = f.btn_css_class || 'pgInp'; + + /** + * Main select DOM element + * @type {DOMElement} + */ + _this.pageSlc = null; + + /** + * Results per page select DOM element + * @type {DOMElement} + */ + _this.pageLengthSlc = null; + + /** + * ID of custom container element + * @type {String} + */ + _this.tgtId = f.target_id || null; + + /** + * Number of rows contained in a page + * @type {Number} + */ + _this.pageLength = !isNaN(f.length) ? f.length : 10; + + /** + * ID of custom container element for the results per page selector + * @type {String} + */ + _this.pageLengthTgtId = f.results_per_page_target_id || null; + + /** + * Css class for the paging select element + * @type {String} + */ + _this.pgSlcCssClass = f.slc_css_class || 'pgSlc'; + + /** + * Css class for the paging input element + * @type {String} + */ + _this.pgInpCssClass = f.inp_css_class || 'pgNbInp'; + + /** + * Label and values for the results per page select, example of usage: + * ['Records: ', [10,25,50,100]] + * @type {Array} + */ + _this.resultsPerPage = f.results_per_page || null; + + /** + * Determines if results per page is configured + * @type {Boolean} + */ + _this.hasResultsPerPage = (0, _types.isArray)(_this.resultsPerPage); + + /** + * Css class for the results per page select + * @type {String} + */ + _this.resultsSlcCssClass = f.results_slc_css_class || 'rspg'; + + /** + * Css class for the label preceding results per page select + * @type {String} + */ + _this.resultsSpanCssClass = f.results_span_css_class || 'rspgSpan'; + + /** + * Index of the first row of current page + * @type {Number} + * @private + */ + _this.startPagingRow = 0; + + /** + * Total number of pages + * @type {Number} + * @private + */ + _this.nbPages = 0; + + /** + * Current page number + * @type {Number} + * @private + */ + _this.currentPageNb = 1; + + /** + * Next page button text + * @type {String} + */ + _this.btnNextPageText = f.btn_next_page_text || '>'; + + /** + * Previous page button text + * @type {String} + */ + _this.btnPrevPageText = f.btn_prev_page_text || '<'; + + /** + * Last page button text + * @type {String} + */ + _this.btnLastPageText = f.btn_last_page_text || '>|'; + + /** + * First page button text + * @type {String} + */ + _this.btnFirstPageText = f.btn_first_page_text || '|<'; + + /** + * Next page button HTML + * @type {String} + */ + _this.btnNextPageHtml = f.btn_next_page_html || (!tf.enableIcons ? null : ''); + + /** + * Previous page button HTML + * @type {String} + */ + _this.btnPrevPageHtml = f.btn_prev_page_html || (!tf.enableIcons ? null : ''); + + /** + * First page button HTML + * @type {String} + */ + _this.btnFirstPageHtml = f.btn_first_page_html || (!tf.enableIcons ? null : ''); + + /** + * Last page button HTML + * @type {String} + */ + _this.btnLastPageHtml = f.btn_last_page_html || (!tf.enableIcons ? null : ''); + + /** + * Text preceeding page selector drop-down + * @type {String} + */ + _this.pageText = f.page_text || ' Page '; + + /** + * Text after page selector drop-down + * @type {String} + */ + _this.ofText = f.of_text || ' of '; + + /** + * Css class for the span containing total number of pages + * @type {String} + */ + _this.nbPgSpanCssClass = f.nb_pages_css_class || 'nbpg'; + + /** + * Determines if paging buttons are enabled (default: true) + * @type {Boolean} + */ + _this.hasBtns = f.btns === false ? false : true; + + /** + * Defines page selector type, two possible values: 'select', 'input' + * @type {String} + */ + _this.pageSelectorType = f.page_selector_type || _const.SELECT; + + /** + * Callback fired before the page is changed + * @type {Function} + */ + _this.onBeforeChangePage = (0, _types.isFn)(f.on_before_change_page) ? f.on_before_change_page : _types.EMPTY_FN; + + /** + * Callback fired after the page is changed + * @type {Function} + */ + _this.onAfterChangePage = (0, _types.isFn)(f.on_after_change_page) ? f.on_after_change_page : _types.EMPTY_FN; + + /** + * Label preciding results per page select + * @type {DOMElement} + * @private + */ + _this.slcResultsTxt = null; + /** + * Span containing next page button + * @type {DOMElement} + * @private + */ + _this.btnNextCont = null; + /** + * Span containing previous page button + * @type {DOMElement} + * @private + */ + _this.btnPrevCont = null; + /** + * Span containing last page button + * @type {DOMElement} + * @private + */ + _this.btnLastCont = null; + /** + * Span containing first page button + * @type {DOMElement} + * @private + */ + _this.btnFirstCont = null; + /** + * Span for tot nb pages + * @type {DOMElement} + * @private + */ + _this.pgCont = null; + /** + * Span preceding pages select (contains 'Page') + * @type {DOMElement} + * @private + */ + _this.pgBefore = null; + /** + * Span following pages select (contains ' of ') + * @type {DOMElement} + * @private + */ + _this.pgAfter = null; + + var startRow = tf.refRow; + var nrows = tf.getRowsNb(true); + //calculates page nb + _this.nbPages = Math.ceil((nrows - startRow) / _this.pageLength); + + var o = _this; + /** + * Paging DOM events handlers + * @type {String} + * @private + */ + _this.evt = { + slcIndex: function slcIndex() { + return o.pageSelectorType === _const.SELECT ? o.pageSlc.options.selectedIndex : parseInt(o.pageSlc.value, 10) - 1; + }, + nbOpts: function nbOpts() { + return o.pageSelectorType === _const.SELECT ? parseInt(o.pageSlc.options.length, 10) - 1 : o.nbPages - 1; + }, + next: function next() { + var nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ? o.evt.slcIndex() + 1 : 0; + o.changePage(nextIndex); + }, + prev: function prev() { + var prevIndex = o.evt.slcIndex() > 0 ? o.evt.slcIndex() - 1 : o.evt.nbOpts(); + o.changePage(prevIndex); + }, + last: function last() { + o.changePage(o.evt.nbOpts()); + }, + first: function first() { + o.changePage(0); + }, + _detectKey: function _detectKey(e) { + var key = (0, _event.keyCode)(e); + if (key === _const.ENTER_KEY) { + if (tf.sorted) { + tf.filter(); + o.changePage(o.evt.slcIndex()); + } else { + o.changePage(); + } + this.blur(); + } + }, + + slcPagesChange: null, + nextEvt: null, + prevEvt: null, + lastEvt: null, + firstEvt: null + }; + return _this; + } + + /** + * Initialize DOM elements + */ + + + _createClass(Paging, [{ + key: 'init', + value: function init() { + var _this2 = this; + + var slcPages = void 0; + var tf = this.tf; + var evt = this.evt; + + if (this.initialized) { + return; + } + + // Check resultsPerPage is in expected format and initialise the + // results per page component + if (this.hasResultsPerPage) { + if (this.resultsPerPage.length < 2) { + this.hasResultsPerPage = false; + } else { + this.pageLength = this.resultsPerPage[1][0]; + this.setResultsPerPage(); + } + } + + evt.slcPagesChange = function (event) { + var slc = event.target; + _this2.changePage(slc.selectedIndex); + }; + + // Paging drop-down list selector + if (this.pageSelectorType === _const.SELECT) { + slcPages = (0, _dom.createElm)(_const.SELECT); + slcPages.className = this.pgSlcCssClass; + (0, _event.addEvt)(slcPages, 'change', evt.slcPagesChange); + } + + // Paging input selector + if (this.pageSelectorType === _const.INPUT) { + slcPages = (0, _dom.createElm)(_const.INPUT, ['value', this.currentPageNb]); + slcPages.className = this.pgInpCssClass; + (0, _event.addEvt)(slcPages, 'keypress', evt._detectKey); + } + + // btns containers + var btnNextSpan = (0, _dom.createElm)('span'); + var btnPrevSpan = (0, _dom.createElm)('span'); + var btnLastSpan = (0, _dom.createElm)('span'); + var btnFirstSpan = (0, _dom.createElm)('span'); + + if (this.hasBtns) { + // Next button + if (!this.btnNextPageHtml) { + var btnNext = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnNextPageText], ['title', 'Next']); + btnNext.className = this.btnCssClass; + (0, _event.addEvt)(btnNext, 'click', evt.next); + btnNextSpan.appendChild(btnNext); + } else { + btnNextSpan.innerHTML = this.btnNextPageHtml; + (0, _event.addEvt)(btnNextSpan, 'click', evt.next); + } + // Previous button + if (!this.btnPrevPageHtml) { + var btnPrev = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnPrevPageText], ['title', 'Previous']); + btnPrev.className = this.btnCssClass; + (0, _event.addEvt)(btnPrev, 'click', evt.prev); + btnPrevSpan.appendChild(btnPrev); + } else { + btnPrevSpan.innerHTML = this.btnPrevPageHtml; + (0, _event.addEvt)(btnPrevSpan, 'click', evt.prev); + } + // Last button + if (!this.btnLastPageHtml) { + var btnLast = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnLastPageText], ['title', 'Last']); + btnLast.className = this.btnCssClass; + (0, _event.addEvt)(btnLast, 'click', evt.last); + btnLastSpan.appendChild(btnLast); + } else { + btnLastSpan.innerHTML = this.btnLastPageHtml; + (0, _event.addEvt)(btnLastSpan, 'click', evt.last); + } + // First button + if (!this.btnFirstPageHtml) { + var btnFirst = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnFirstPageText], ['title', 'First']); + btnFirst.className = this.btnCssClass; + (0, _event.addEvt)(btnFirst, 'click', evt.first); + btnFirstSpan.appendChild(btnFirst); + } else { + btnFirstSpan.innerHTML = this.btnFirstPageHtml; + (0, _event.addEvt)(btnFirstSpan, 'click', evt.first); + } + } + + // paging elements (buttons+drop-down list) are added to defined element + if (!this.tgtId) { + tf.setToolbar(); + } + var targetEl = !this.tgtId ? tf.mDiv : (0, _dom.elm)(this.tgtId); + targetEl.appendChild(btnFirstSpan); + targetEl.appendChild(btnPrevSpan); + + var pgBeforeSpan = (0, _dom.createElm)('span'); + pgBeforeSpan.appendChild((0, _dom.createText)(this.pageText)); + pgBeforeSpan.className = this.nbPgSpanCssClass; + targetEl.appendChild(pgBeforeSpan); + targetEl.appendChild(slcPages); + var pgAfterSpan = (0, _dom.createElm)('span'); + pgAfterSpan.appendChild((0, _dom.createText)(this.ofText)); + pgAfterSpan.className = this.nbPgSpanCssClass; + targetEl.appendChild(pgAfterSpan); + var pgSpan = (0, _dom.createElm)('span'); + pgSpan.className = this.nbPgSpanCssClass; + pgSpan.appendChild((0, _dom.createText)(' ' + this.nbPages + ' ')); + targetEl.appendChild(pgSpan); + targetEl.appendChild(btnNextSpan); + targetEl.appendChild(btnLastSpan); + + this.btnNextCont = btnNextSpan; + this.btnPrevCont = btnPrevSpan; + this.btnLastCont = btnLastSpan; + this.btnFirstCont = btnFirstSpan; + this.pgCont = pgSpan; + this.pgBefore = pgBeforeSpan; + this.pgAfter = pgAfterSpan; + this.pageSlc = slcPages; + + this.setPagingInfo(); + + if (!tf.fltGrid) { + tf.validateAllRows(); + this.setPagingInfo(tf.validRowsIndex); + } + + this.emitter.on(['after-filtering'], function () { + return _this2.resetPagingInfo(); + }); + this.emitter.on(['change-page'], function (tf, pageNumber) { + return _this2.setPage(pageNumber); + }); + this.emitter.on(['change-page-results'], function (tf, pageLength) { + return _this2.changeResultsPerPage(pageLength); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Reset paging when filters are already instantiated + * @param {Boolean} filterTable Execute filtering once paging instanciated + */ + + }, { + key: 'reset', + value: function reset() { + var filterTable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + this.enable(); + this.init(); + + if (filterTable) { + this.tf.filter(); + } + } + + /** + * Reset paging info from scratch after a filtering process + */ + + }, { + key: 'resetPagingInfo', + value: function resetPagingInfo() { + this.startPagingRow = 0; + this.currentPageNb = 1; + this.setPagingInfo(this.tf.validRowsIndex); + } + + /** + * Calculate number of pages based on valid rows + * Refresh paging select according to number of pages + * @param {Array} validRows Collection of valid rows + */ + + }, { + key: 'setPagingInfo', + value: function setPagingInfo(validRows) { + var tf = this.tf; + var mdiv = !this.tgtId ? tf.mDiv : (0, _dom.elm)(this.tgtId); + + //store valid rows indexes + tf.validRowsIndex = validRows || tf.getValidRows(true); + + //calculate nb of pages + this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength); + //refresh page nb span + this.pgCont.innerHTML = this.nbPages; + //select clearing shortcut + if (this.pageSelectorType === _const.SELECT) { + this.pageSlc.innerHTML = ''; + } + + if (this.nbPages > 0) { + mdiv.style.visibility = 'visible'; + if (this.pageSelectorType === _const.SELECT) { + for (var z = 0; z < this.nbPages; z++) { + var opt = (0, _dom.createOpt)(z + 1, z * this.pageLength, false); + this.pageSlc.options[z] = opt; + } + } else { + //input type + this.pageSlc.value = this.currentPageNb; + } + } else { + /*** if no results paging select and buttons are hidden ***/ + mdiv.style.visibility = 'hidden'; + } + this.groupByPage(tf.validRowsIndex); + } + + /** + * Group table rows by page and display valid rows + * @param {Array} validRows Collection of valid rows + */ + + }, { + key: 'groupByPage', + value: function groupByPage(validRows) { + var tf = this.tf; + var rows = tf.dom().rows; + var startPagingRow = parseInt(this.startPagingRow, 10); + var endPagingRow = startPagingRow + parseInt(this.pageLength, 10); + + //store valid rows indexes + if (validRows) { + tf.validRowsIndex = validRows; + } + + //this loop shows valid rows of current page + for (var h = 0, len = tf.getValidRowsNb(true); h < len; h++) { + var validRowIdx = tf.validRowsIndex[h]; + var r = rows[validRowIdx]; + var isRowValid = r.getAttribute('validRow'); + var rowDisplayed = false; + + if (h >= startPagingRow && h < endPagingRow) { + if ((0, _types.isNull)(isRowValid) || Boolean(isRowValid === 'true')) { + r.style.display = ''; + rowDisplayed = true; + } + } else { + r.style.display = _const.NONE; + } + this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed); + } + + // broadcast grouping by page + this.emitter.emit('grouped-by-page', tf, this); + } + + /** + * Return the current page number + * @return {Number} Page number + */ + + }, { + key: 'getPage', + value: function getPage() { + return this.currentPageNb; + } + + /** + * Show page defined by passed argument (string or number): + * @param {String}/{Number} cmd possible string values: 'next', + * 'previous', 'last', 'first' or page number as per param + */ + + }, { + key: 'setPage', + value: function setPage(cmd) { + var tf = this.tf; + if (!tf.isInitialized() || !this.isEnabled()) { + return; + } + var btnEvt = this.evt, + cmdtype = typeof cmd === 'undefined' ? 'undefined' : _typeof(cmd); + if (cmdtype === 'string') { + switch (cmd.toLowerCase()) { + case 'next': + btnEvt.next(); + break; + case 'previous': + btnEvt.prev(); + break; + case 'last': + btnEvt.last(); + break; + case 'first': + btnEvt.first(); + break; + default: + btnEvt.next(); + break; + } + } else if (cmdtype === 'number') { + this.changePage(cmd - 1); + } + } + + /** + * Generates UI elements for the number of results per page drop-down + */ + + }, { + key: 'setResultsPerPage', + value: function setResultsPerPage() { + var _this3 = this; + + var tf = this.tf; + var evt = this.evt; + + if (this.pageLengthSlc || !this.resultsPerPage) { + return; + } + + evt.slcResultsChange = function (ev) { + _this3.onChangeResultsPerPage(); + ev.target.blur(); + }; + + var slcR = (0, _dom.createElm)(_const.SELECT); + slcR.className = this.resultsSlcCssClass; + var slcRText = this.resultsPerPage[0], + slcROpts = this.resultsPerPage[1]; + var slcRSpan = (0, _dom.createElm)('span'); + slcRSpan.className = this.resultsSpanCssClass; + + // results per page select is added to external element + if (!this.pageLengthTgtId) { + tf.setToolbar(); + } + var targetEl = !this.pageLengthTgtId ? tf.rDiv : (0, _dom.elm)(this.pageLengthTgtId); + slcRSpan.appendChild((0, _dom.createText)(slcRText)); + + var help = tf.feature('help'); + if (help && help.btn) { + help.btn.parentNode.insertBefore(slcRSpan, help.btn); + help.btn.parentNode.insertBefore(slcR, help.btn); + } else { + targetEl.appendChild(slcRSpan); + targetEl.appendChild(slcR); + } + + for (var r = 0; r < slcROpts.length; r++) { + var currOpt = new Option(slcROpts[r], slcROpts[r], false, false); + slcR.options[r] = currOpt; + } + (0, _event.addEvt)(slcR, 'change', evt.slcResultsChange); + this.slcResultsTxt = slcRSpan; + this.pageLengthSlc = slcR; + } + + /** + * Remove number of results per page UI elements + */ + + }, { + key: 'removeResultsPerPage', + value: function removeResultsPerPage() { + var tf = this.tf; + if (!tf.isInitialized() || !this.pageLengthSlc || !this.resultsPerPage) { + return; + } + if (this.pageLengthSlc) { + (0, _dom.removeElm)(this.pageLengthSlc); + } + if (this.slcResultsTxt) { + (0, _dom.removeElm)(this.slcResultsTxt); + } + this.pageLengthSlc = null; + this.slcResultsTxt = null; + } + + /** + * Change the page based on passed index + * @param {Number} index Index of the page (0-n) + */ + + }, { + key: 'changePage', + value: function changePage(index) { + var tf = this.tf; + + if (!this.isEnabled()) { + return; + } + + this.emitter.emit('before-page-change', tf, index + 1); + + if (index === null) { + index = this.pageSelectorType === _const.SELECT ? this.pageSlc.options.selectedIndex : this.pageSlc.value - 1; + } + if (index >= 0 && index <= this.nbPages - 1) { + this.onBeforeChangePage(this, index + 1); + + this.currentPageNb = parseInt(index, 10) + 1; + if (this.pageSelectorType === _const.SELECT) { + this.pageSlc.options[index].selected = true; + } else { + this.pageSlc.value = this.currentPageNb; + } + + this.startPagingRow = this.pageSelectorType === _const.SELECT ? this.pageSlc.value : index * this.pageLength; + + this.groupByPage(); + + this.onAfterChangePage(this, index + 1); + } + + this.emitter.emit('after-page-change', tf, index + 1); + } + + /** + * Change the number of results per page based on passed value + * @param {String} val The number of results per page + */ + + }, { + key: 'changeResultsPerPage', + value: function changeResultsPerPage(val) { + if (!this.isEnabled() || isNaN(val)) { + return; + } + + this.pageLengthSlc.value = val; + this.onChangeResultsPerPage(); + } + + /** + * Change rows according to page results drop-down + */ + + }, { + key: 'onChangeResultsPerPage', + value: function onChangeResultsPerPage() { + var tf = this.tf; + + if (!this.isEnabled() || tf.getValidRowsNb() === 0) { + return; + } + + var slcR = this.pageLengthSlc, + pageSelectorType = this.pageSelectorType, + pageSlc = this.pageSlc, + emitter = this.emitter; + + + emitter.emit('before-page-length-change', tf); + + var slcIndex = slcR.selectedIndex; + var slcPagesSelIndex = pageSelectorType === _const.SELECT ? pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10); + this.pageLength = parseInt(slcR.options[slcIndex].value, 10); + this.startPagingRow = this.pageLength * slcPagesSelIndex; + + if (!isNaN(this.pageLength)) { + if (this.startPagingRow >= tf.nbFilterableRows) { + this.startPagingRow = tf.nbFilterableRows - this.pageLength; + } + this.setPagingInfo(); + + if (pageSelectorType === _const.SELECT) { + var slcIdx = pageSlc.options.length - 1 <= slcPagesSelIndex ? pageSlc.options.length - 1 : slcPagesSelIndex; + pageSlc.options[slcIdx].selected = true; + } + } + + emitter.emit('after-page-length-change', tf, this.pageLength); + } + + /** + * Re-set page nb at page re-load + */ + + }, { + key: 'resetPage', + value: function resetPage() { + var tf = this.tf; + if (!this.isEnabled()) { + return; + } + this.emitter.emit('before-reset-page', tf); + var pgNb = tf.feature('store').getPageNb(); + if (pgNb !== '') { + this.changePage(pgNb - 1); + } + this.emitter.emit('after-reset-page', tf, pgNb); + } + + /** + * Re-set page length value at page re-load + */ + + }, { + key: 'resetPageLength', + value: function resetPageLength() { + var tf = this.tf; + if (!this.isEnabled()) { + return; + } + this.emitter.emit('before-reset-page-length', tf); + var pglenIndex = tf.feature('store').getPageLength(); + + if (pglenIndex !== '') { + this.pageLengthSlc.options[pglenIndex].selected = true; + this.changeResultsPerPage(); + } + this.emitter.emit('after-reset-page-length', tf, pglenIndex); + } + + /** + * Remove paging feature + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this4 = this; + + if (!this.initialized) { + return; + } + + var evt = this.evt; + + if (this.pageSlc) { + if (this.pageSelectorType === _const.SELECT) { + (0, _event.removeEvt)(this.pageSlc, 'change', evt.slcPagesChange); + } else if (this.pageSelectorType === _const.INPUT) { + (0, _event.removeEvt)(this.pageSlc, 'keypress', evt._detectKey); + } + (0, _dom.removeElm)(this.pageSlc); + } + + if (this.btnNextCont) { + (0, _event.removeEvt)(this.btnNextCont, 'click', evt.next); + (0, _dom.removeElm)(this.btnNextCont); + this.btnNextCont = null; + } + + if (this.btnPrevCont) { + (0, _event.removeEvt)(this.btnPrevCont, 'click', evt.prev); + (0, _dom.removeElm)(this.btnPrevCont); + this.btnPrevCont = null; + } + + if (this.btnLastCont) { + (0, _event.removeEvt)(this.btnLastCont, 'click', evt.last); + (0, _dom.removeElm)(this.btnLastCont); + this.btnLastCont = null; + } + + if (this.btnFirstCont) { + (0, _event.removeEvt)(this.btnFirstCont, 'click', evt.first); + (0, _dom.removeElm)(this.btnFirstCont); + this.btnFirstCont = null; + } + + if (this.pgBefore) { + (0, _dom.removeElm)(this.pgBefore); + this.pgBefore = null; + } + + if (this.pgAfter) { + (0, _dom.removeElm)(this.pgAfter); + this.pgAfter = null; + } + + if (this.pgCont) { + (0, _dom.removeElm)(this.pgCont); + this.pgCont = null; + } + + if (this.hasResultsPerPage) { + this.removeResultsPerPage(); + } + + this.emitter.off(['after-filtering'], function () { + return _this4.resetPagingInfo(); + }); + this.emitter.off(['change-page'], function (tf, pageNumber) { + return _this4.setPage(pageNumber); + }); + this.emitter.off(['change-page-results'], function (tf, pageLength) { + return _this4.changeResultsPerPage(pageLength); + }); + + this.pageSlc = null; + this.nbPages = 0; + + this.initialized = false; + } + }]); + + return Paging; +}(_feature.Feature); + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PopupFilter = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _types = __webpack_require__(6); + +var _dom = __webpack_require__(9); + +var _event = __webpack_require__(17); + +var _const = __webpack_require__(14); + +var _root = __webpack_require__(15); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Pop-up filter component + * @export + * @class PopupFilter + * @extends {Feature} + */ +var PopupFilter = exports.PopupFilter = function (_Feature) { + _inherits(PopupFilter, _Feature); + + /** + * Creates an instance of PopupFilter + * @param {TableFilter} tf TableFilter instance + */ + function PopupFilter(tf) { + _classCallCheck(this, PopupFilter); + + // Configuration object + var _this = _possibleConstructorReturn(this, (PopupFilter.__proto__ || Object.getPrototypeOf(PopupFilter)).call(this, tf, 'popupFilters')); + + var f = _this.config.popup_filters || {}; + + // Enable external filters + tf.isExternalFlt = true; + tf.externalFltTgtIds = []; + + /** + * Close active popup filter upon filtering, enabled by default + * @type {Boolean} + */ + _this.closeOnFiltering = f.close_on_filtering === false ? false : true; + + /** + * Filter icon path + * @type {String} + */ + _this.iconPath = f.image || tf.themesPath + 'icn_filter.gif'; + + /** + * Active filter icon path + * @type {string} + */ + _this.activeIconPath = f.image_active || tf.themesPath + 'icn_filterActive.gif'; + + /** + * HTML for the filter icon + * @type {string} + */ + _this.iconHtml = f.image_html || 'Column filter'; + + /** + * Css class assigned to the popup container element + * @type {String} + */ + _this.placeholderCssClass = f.placeholder_css_class || 'popUpPlaceholder'; + + /** + * Css class assigned to filter container element + * @type {String} + */ + _this.containerCssClass = f.div_css_class || 'popUpFilter'; + + /** + * Ensure filter's container element width matches column width, enabled + * by default + * @type {Boolean} + */ + _this.adjustToContainer = f.adjust_to_container === false ? false : true; + + /** + * Callback fired before a popup filter is opened + * @type {Function} + */ + _this.onBeforeOpen = (0, _types.isFn)(f.on_before_popup_filter_open) ? f.on_before_popup_filter_open : _types.EMPTY_FN; + + /** + * Callback fired after a popup filter is opened + * @type {Function} + */ + _this.onAfterOpen = (0, _types.isFn)(f.on_after_popup_filter_open) ? f.on_after_popup_filter_open : _types.EMPTY_FN; + + /** + * Callback fired before a popup filter is closed + * @type {Function} + */ + _this.onBeforeClose = (0, _types.isFn)(f.on_before_popup_filter_close) ? f.on_before_popup_filter_close : _types.EMPTY_FN; + + /** + * Callback fired after a popup filter is closed + * @type {Function} + */ + _this.onAfterClose = (0, _types.isFn)(f.on_after_popup_filter_close) ? f.on_after_popup_filter_close : _types.EMPTY_FN; + + /** + * Collection of filters spans + * @type {Array} + * @private + */ + _this.fltSpans = []; + + /** + * Collection of filters icons + * @type {Array} + * @private + */ + _this.fltIcons = []; + + /** + * Collection of filters icons cached after pop-up filters are removed + * @type {Array} + * @private + */ + _this.filtersCache = null; + + /** + * Collection of filters containers + * @type {Array} + * @private + */ + _this.fltElms = _this.filtersCache || []; + + /** + * Prefix for pop-up filter container ID + * @type {String} + * @private + */ + _this.prfxDiv = 'popup_'; + + /** + * Column index of popup filter currently active + * @type {Number} + * @private + */ + _this.activeFilterIdx = -1; + return _this; + } + + /** + * Click event handler for pop-up filter icon + * @private + */ + + + _createClass(PopupFilter, [{ + key: 'onClick', + value: function onClick(evt) { + var elm = (0, _event.targetEvt)(evt).parentNode; + var colIndex = parseInt(elm.getAttribute('ci'), 10); + + this.closeAll(colIndex); + this.toggle(colIndex); + + if (this.adjustToContainer) { + var cont = this.fltElms[colIndex], + header = this.tf.getHeaderElement(colIndex), + headerWidth = header.clientWidth * 0.95; + cont.style.width = parseInt(headerWidth, 10) + 'px'; + } + (0, _event.cancelEvt)(evt); + (0, _event.stopEvt)(evt); + } + + /** + * Mouse-up event handler handling popup filter auto-close behaviour + * @private + */ + + }, { + key: 'onMouseup', + value: function onMouseup(evt) { + if (this.activeFilterIdx === -1) { + return; + } + var targetElm = (0, _event.targetEvt)(evt); + var activeFlt = this.fltElms[this.activeFilterIdx]; + var icon = this.fltIcons[this.activeFilterIdx]; + + if (icon === targetElm) { + return; + } + + while (targetElm && targetElm !== activeFlt) { + targetElm = targetElm.parentNode; + } + + if (targetElm !== activeFlt) { + this.close(this.activeFilterIdx); + } + + return; + } + + /** + * Initialize DOM elements + */ + + }, { + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + var tf = this.tf; + + // Override headers row index if no grouped headers + // TODO: Because of the filters row generation, headers row index needs + // adjusting: prevent useless row generation + if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) { + tf.headersRow = 0; + } + + // Adjust headers row index for grid-layout mode + // TODO: Because of the filters row generation, headers row index needs + // adjusting: prevent useless row generation + if (tf.gridLayout) { + tf.headersRow--; + this.buildIcons(); + } + + // subscribe to events + this.emitter.on(['before-filtering'], function () { + return _this2.setIconsState(); + }); + this.emitter.on(['after-filtering'], function () { + return _this2.closeAll(); + }); + this.emitter.on(['cell-processed'], function (tf, cellIndex) { + return _this2.changeState(cellIndex, true); + }); + this.emitter.on(['filters-row-inserted'], function () { + return _this2.buildIcons(); + }); + this.emitter.on(['before-filter-init'], function (tf, colIndex) { + return _this2.build(colIndex); + }); + + /** @inherited */ + this.initialized = true; + } + + /** + * Reset previously destroyed feature + */ + + }, { + key: 'reset', + value: function reset() { + this.enable(); + this.init(); + this.buildIcons(); + this.buildAll(); + } + + /** + * Build all filters icons + */ + + }, { + key: 'buildIcons', + value: function buildIcons() { + var _this3 = this; + + var tf = this.tf; + + // TODO: Because of the filters row generation, headers row index needs + // adjusting: prevent useless row generation + tf.headersRow++; + + for (var i = 0; i < tf.nbCells; i++) { + if (tf.getFilterType(i) === _const.NONE) { + continue; + } + var icon = (0, _dom.createElm)('span', ['ci', i]); + icon.innerHTML = this.iconHtml; + var header = tf.getHeaderElement(i); + header.appendChild(icon); + (0, _event.addEvt)(icon, 'click', function (evt) { + return _this3.onClick(evt); + }); + this.fltSpans[i] = icon; + this.fltIcons[i] = icon.firstChild; + } + } + + /** + * Build all pop-up filters elements + */ + + }, { + key: 'buildAll', + value: function buildAll() { + for (var i = 0; i < this.filtersCache.length; i++) { + this.build(i, this.filtersCache[i]); + } + } + + /** + * Build a specified pop-up filter elements + * @param {Number} colIndex Column index + * @param {Object} div Optional container DOM element + */ + + }, { + key: 'build', + value: function build(colIndex, div) { + var tf = this.tf; + var contId = '' + this.prfxDiv + tf.id + '_' + colIndex; + var placeholder = (0, _dom.createElm)('div', ['class', this.placeholderCssClass]); + var cont = div || (0, _dom.createElm)('div', ['id', contId], ['class', this.containerCssClass]); + tf.externalFltTgtIds.push(cont.id); + placeholder.appendChild(cont); + + var header = tf.getHeaderElement(colIndex); + header.insertBefore(placeholder, header.firstChild); + (0, _event.addEvt)(cont, 'click', function (evt) { + return (0, _event.stopEvt)(evt); + }); + this.fltElms[colIndex] = cont; + } + + /** + * Toggle visibility of specified filter + * @param {Number} colIndex Column index + */ + + }, { + key: 'toggle', + value: function toggle(colIndex) { + if (!this.isOpen(colIndex)) { + this.open(colIndex); + } else { + this.close(colIndex); + } + } + + /** + * Open popup filter of specified column + * @param {Number} colIndex Column index + */ + + }, { + key: 'open', + value: function open(colIndex) { + var _this4 = this; + + var tf = this.tf, + container = this.fltElms[colIndex]; + + this.onBeforeOpen(this, container, colIndex); + + container.style.display = 'block'; + this.activeFilterIdx = colIndex; + (0, _event.addEvt)(_root.root, 'mouseup', function (evt) { + return _this4.onMouseup(evt); + }); + + if (tf.getFilterType(colIndex) === _const.INPUT) { + var flt = tf.getFilterElement(colIndex); + if (flt) { + flt.focus(); + } + } + + this.onAfterOpen(this, container, colIndex); + } + + /** + * Close popup filter of specified column + * @param {Number} colIndex Column index + */ + + }, { + key: 'close', + value: function close(colIndex) { + var _this5 = this; + + var container = this.fltElms[colIndex]; + + this.onBeforeClose(this, container, colIndex); + + container.style.display = _const.NONE; + if (this.activeFilterIdx === colIndex) { + this.activeFilterIdx = -1; + } + (0, _event.removeEvt)(_root.root, 'mouseup', function (evt) { + return _this5.onMouseup(evt); + }); + + this.onAfterClose(this, container, colIndex); + } + + /** + * Check if popup filter for specified column is open + * @param {Number} colIndex Column index + * @returns {Boolean} + */ + + }, { + key: 'isOpen', + value: function isOpen(colIndex) { + return this.fltElms[colIndex].style.display === 'block'; + } + + /** + * Close all filters excepted for the specified one if any + * @param {Number} exceptIdx Column index of the filter to not close + */ + + }, { + key: 'closeAll', + value: function closeAll(exceptIdx) { + // Do not close filters only if argument is undefined and close on + // filtering option is disabled + if ((0, _types.isUndef)(exceptIdx) && !this.closeOnFiltering) { + return; + } + for (var i = 0; i < this.fltElms.length; i++) { + if (i === exceptIdx) { + continue; + } + var fltType = this.tf.getFilterType(i); + var isMultipleFilter = fltType === _const.CHECKLIST || fltType === _const.MULTIPLE; + + // Always hide all single selection filter types but hide multiple + // selection filter types only if index set + if (!isMultipleFilter || !(0, _types.isUndef)(exceptIdx)) { + this.close(i); + } + } + } + + /** + * Build all the icons representing the pop-up filters + */ + + }, { + key: 'setIconsState', + value: function setIconsState() { + for (var i = 0; i < this.fltIcons.length; i++) { + this.changeState(i, false); + } + } + + /** + * Apply specified icon state + * @param {Number} colIndex Column index + * @param {Boolean} active Apply active state + */ + + }, { + key: 'changeState', + value: function changeState(colIndex, active) { + var icon = this.fltIcons[colIndex]; + if (icon) { + icon.src = active ? this.activeIconPath : this.iconPath; + } + } + + /** + * Remove pop-up filters + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this6 = this; + + if (!this.initialized) { + return; + } + + this.filtersCache = []; + for (var i = 0; i < this.fltElms.length; i++) { + var container = this.fltElms[i], + placeholder = container.parentNode, + icon = this.fltSpans[i], + iconImg = this.fltIcons[i]; + if (container) { + (0, _dom.removeElm)(container); + this.filtersCache[i] = container; + } + container = null; + if (placeholder) { + (0, _dom.removeElm)(placeholder); + } + placeholder = null; + if (icon) { + (0, _dom.removeElm)(icon); + } + icon = null; + if (iconImg) { + (0, _dom.removeElm)(iconImg); + } + iconImg = null; + } + this.fltElms = []; + this.fltSpans = []; + this.fltIcons = []; + + // TODO: expose an API to handle external filter IDs + this.tf.externalFltTgtIds = []; + + // unsubscribe to events + this.emitter.off(['before-filtering'], function () { + return _this6.setIconsState(); + }); + this.emitter.off(['after-filtering'], function () { + return _this6.closeAll(); + }); + this.emitter.off(['cell-processed'], function (tf, cellIndex) { + return _this6.changeState(cellIndex, true); + }); + this.emitter.off(['filters-row-inserted'], function () { + return _this6.buildIcons(); + }); + this.emitter.off(['before-filter-init'], function (tf, colIndex) { + return _this6.build(colIndex); + }); + + this.initialized = false; + } + }]); + + return PopupFilter; +}(_feature.Feature); + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RowsCounter = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Rows counter UI component + * @export + * @class RowsCounter + * @extends {Feature} + */ +var RowsCounter = exports.RowsCounter = function (_Feature) { + _inherits(RowsCounter, _Feature); + + /** + * Creates an instance of RowsCounter + * @param {TableFilter} tf TableFilter instance + */ + function RowsCounter(tf) { + _classCallCheck(this, RowsCounter); + + // TableFilter configuration + var _this = _possibleConstructorReturn(this, (RowsCounter.__proto__ || Object.getPrototypeOf(RowsCounter)).call(this, tf, 'rowsCounter')); + + var f = _this.config.rows_counter || {}; + + /** + * ID of custom container element + * @type {String} + */ + _this.targetId = f.target_id || null; + + /** + * Container DOM element + * @type {DOMElement} + * @private + */ + _this.container = null; + + /** + * Container DOM element for label displaying the total number of rows + * @type {DOMElement} + * @private + */ + _this.label = null; + + /** + * Text preceding the total number of rows + * @type {String} + */ + _this.text = f.text || 'Rows: '; + + /** + * Separator symbol appearing between the first and last visible rows of + * current page when paging is enabled. ie: Rows: 31-40 / 70 + * @type {String} + */ + _this.fromToTextSeparator = f.separator || '-'; + + /** + * Separator symbol appearing between the first and last visible rows of + * current page and the total number of filterable rows when paging is + * enabled. ie: Rows: 31-40 / 70 + * @type {String} + */ + _this.overText = f.over_text || ' / '; + + /** + * Css class for container element + * @type {String} + */ + _this.cssClass = f.css_class || 'tot'; + + /** + * Callback fired before the counter is refreshed + * @type {Function} + */ + _this.onBeforeRefreshCounter = (0, _types.isFn)(f.on_before_refresh_counter) ? f.on_before_refresh_counter : _types.EMPTY_FN; + + /** + * Callback fired after the counter is refreshed + * @type {Function} + */ + _this.onAfterRefreshCounter = (0, _types.isFn)(f.on_after_refresh_counter) ? f.on_after_refresh_counter : _types.EMPTY_FN; + return _this; + } + + /** + * Initializes RowsCounter instance + */ + + + _createClass(RowsCounter, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + var tf = this.tf; + + //rows counter container + var countDiv = (0, _dom.createElm)('div'); + countDiv.className = this.cssClass; + //rows counter label + var countSpan = (0, _dom.createElm)('span'); + var countText = (0, _dom.createElm)('span'); + countText.appendChild((0, _dom.createText)(this.text)); + + // counter is added to defined element + if (!this.targetId) { + tf.setToolbar(); + } + var targetEl = !this.targetId ? tf.lDiv : (0, _dom.elm)(this.targetId); + + //default container: 'lDiv' + if (!this.targetId) { + countDiv.appendChild(countText); + countDiv.appendChild(countSpan); + targetEl.appendChild(countDiv); + } else { + //custom container, no need to append statusDiv + targetEl.appendChild(countText); + targetEl.appendChild(countSpan); + } + this.container = countDiv; + this.label = countSpan; + + // subscribe to events + this.emitter.on(['after-filtering', 'grouped-by-page'], function () { + return _this2.refresh(tf.getValidRowsNb()); + }); + this.emitter.on(['rows-changed'], function () { + return _this2.refresh(); + }); + + /** @inherited */ + this.initialized = true; + this.refresh(); + } + + /** + * Refreshes the rows counter + * @param {Number} p Optional parameter the total number of rows to display + */ + + }, { + key: 'refresh', + value: function refresh(p) { + if (!this.initialized || !this.isEnabled()) { + return; + } + + var tf = this.tf; + + this.onBeforeRefreshCounter(tf, this.label); + + var totTxt = void 0; + if (!tf.paging) { + if (p && p !== '') { + totTxt = p; + } else { + totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows; + } + } else { + var paging = tf.feature('paging'); + if (paging) { + var nbValidRows = tf.getValidRowsNb(); + //paging start row + var pagingStartRow = parseInt(paging.startPagingRow, 10) + (nbValidRows > 0 ? 1 : 0); + var pagingEndRow = pagingStartRow + paging.pageLength - 1 <= nbValidRows ? pagingStartRow + paging.pageLength - 1 : nbValidRows; + totTxt = pagingStartRow + this.fromToTextSeparator + pagingEndRow + this.overText + nbValidRows; + } + } + + this.label.innerHTML = totTxt; + this.onAfterRefreshCounter(tf, this.label, totTxt); + } + + /** + * Remove feature + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + if (!this.initialized) { + return; + } + + if (!this.targetId && this.container) { + (0, _dom.removeElm)(this.container); + } else { + (0, _dom.elm)(this.targetId).innerHTML = ''; + } + this.label = null; + this.container = null; + + // unsubscribe to events + this.emitter.off(['after-filtering', 'grouped-by-page'], function () { + return _this3.refresh(tf.getValidRowsNb()); + }); + this.emitter.off(['rows-changed'], function () { + return _this3.refresh(); + }); + + this.initialized = false; + } + }]); + + return RowsCounter; +}(_feature.Feature); + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.State = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _hash = __webpack_require__(114); + +var _storage = __webpack_require__(125); + +var _string = __webpack_require__(19); + +var _types = __webpack_require__(6); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Features state object persistable with localStorage, cookie or URL hash + * + * @export + * @class State + * @extends {Feature} + */ +var State = exports.State = function (_Feature) { + _inherits(State, _Feature); + + /** + * Creates an instance of State + * @param {TableFilter} tf TableFilter instance + */ + function State(tf) { + _classCallCheck(this, State); + + var _this = _possibleConstructorReturn(this, (State.__proto__ || Object.getPrototypeOf(State)).call(this, tf, 'state')); + + var cfg = _this.config.state; + + /** + * Determines whether state is persisted with URL hash + * @type {Boolean} + */ + _this.enableHash = cfg === true || (0, _types.isArray)(cfg.types) && cfg.types.indexOf('hash') !== -1; + + /** + * Determines whether state is persisted with localStorage + * @type {Boolean} + */ + _this.enableLocalStorage = (0, _types.isArray)(cfg.types) && cfg.types.indexOf('local_storage') !== -1; + + /** + * Determines whether state is persisted with localStorage + * @type {Boolean} + */ + _this.enableCookie = (0, _types.isArray)(cfg.types) && cfg.types.indexOf('cookie') !== -1; + + /** + * Persist filters values, enabled by default + * @type {Boolean} + */ + _this.persistFilters = cfg.filters === false ? false : true; + + /** + * Persist current page number when paging is enabled + * @type {Boolean} + */ + _this.persistPageNumber = Boolean(cfg.page_number); + + /** + * Persist page length when paging is enabled + * @type {Boolean} + */ + _this.persistPageLength = Boolean(cfg.page_length); + + /** + * Persist column sorting + * @type {Boolean} + */ + _this.persistSort = Boolean(cfg.sort); + + /** + * Persist columns visibility + * @type {Boolean} + */ + _this.persistColsVisibility = Boolean(cfg.columns_visibility); + + /** + * Persist filters row visibility + * @type {Boolean} + */ + _this.persistFiltersVisibility = Boolean(cfg.filters_visibility); + + /** + * Cookie duration in hours + * @type {Boolean} + */ + _this.cookieDuration = !isNaN(cfg.cookie_duration) ? parseInt(cfg.cookie_duration, 10) : 87600; + + /** + * Enable Storage if localStorage or cookie is required + * @type {Boolean} + * @private + */ + _this.enableStorage = _this.enableLocalStorage || _this.enableCookie; + + /** + * Storage instance if storage is required + * @type {Storage} + * @private + */ + _this.storage = null; + + /** + * Hash instance if URL hash is required + * @type {Boolean} + * @private + */ + _this.hash = null; + + /** + * Current page number + * @type {Number} + * @private + */ + _this.pageNb = null; + + /** + * Current page length + * @type {Number} + * @private + */ + _this.pageLength = null; + + /** + * Current column sorting + * @type {Object} + * @private + */ + _this.sort = null; + + /** + * Current hidden columns + * @type {Object} + * @private + */ + _this.hiddenCols = null; + + /** + * Filters row visibility + * @type {Boolean} + * @private + */ + _this.filtersVisibility = null; + + /** + * State object + * @type {Object} + * @private + */ + _this.state = {}; + + /** + * Prefix for column ID + * @type {String} + * @private + */ + _this.prfxCol = 'col_'; + + /** + * Prefix for page number ID + * @type {String} + * @private + */ + _this.pageNbKey = 'page'; + + /** + * Prefix for page length ID + * @type {String} + * @private + */ + _this.pageLengthKey = 'page_length'; + + /** + * Prefix for filters visibility ID + * @type {String} + * @private + */ + _this.filtersVisKey = 'filters_visibility'; + return _this; + } + + /** + * Initializes State instance + */ + + + _createClass(State, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + this.emitter.on(['after-filtering'], function () { + return _this2.update(); + }); + this.emitter.on(['after-page-change', 'after-clearing-filters'], function (tf, pageNb) { + return _this2.updatePage(pageNb); + }); + this.emitter.on(['after-page-length-change'], function (tf, pageLength) { + return _this2.updatePageLength(pageLength); + }); + this.emitter.on(['column-sorted'], function (tf, index, descending) { + return _this2.updateSort(index, descending); + }); + this.emitter.on(['sort-initialized'], function () { + return _this2._syncSort(); + }); + this.emitter.on(['columns-visibility-initialized'], function () { + return _this2._syncColsVisibility(); + }); + this.emitter.on(['column-shown', 'column-hidden'], function (tf, feature, colIndex, hiddenCols) { + return _this2.updateColsVisibility(hiddenCols); + }); + this.emitter.on(['filters-visibility-initialized'], function () { + return _this2._syncFiltersVisibility(); + }); + this.emitter.on(['filters-toggled'], function (tf, extension, visible) { + return _this2.updateFiltersVisibility(visible); + }); + + if (this.enableHash) { + this.hash = new _hash.Hash(this); + this.hash.init(); + } + if (this.enableStorage) { + this.storage = new _storage.Storage(this); + this.storage.init(); + } + + /** + * @inherited + */ + this.initialized = true; + } + + /** + * Update state object based on current features state + */ + + }, { + key: 'update', + value: function update() { + var _this3 = this; + + if (!this.isEnabled()) { + return; + } + var state = this.state; + var tf = this.tf; + + if (this.persistFilters) { + var filterValues = tf.getFiltersValue(); + + filterValues.forEach(function (val, idx) { + var key = '' + _this3.prfxCol + idx; + + if ((0, _types.isString)(val) && (0, _string.isEmpty)(val)) { + if (state.hasOwnProperty(key)) { + state[key].flt = undefined; + } + } else { + state[key] = state[key] || {}; + state[key].flt = val; + } + }); + } + + if (this.persistPageNumber) { + if ((0, _types.isNull)(this.pageNb)) { + state[this.pageNbKey] = undefined; + } else { + state[this.pageNbKey] = this.pageNb; + } + } + + if (this.persistPageLength) { + if ((0, _types.isNull)(this.pageLength)) { + state[this.pageLengthKey] = undefined; + } else { + state[this.pageLengthKey] = this.pageLength; + } + } + + if (this.persistSort) { + if (!(0, _types.isNull)(this.sort)) { + // Remove previuosly sorted column + Object.keys(state).forEach(function (key) { + if (key.indexOf(_this3.prfxCol) !== -1 && state[key]) { + state[key].sort = undefined; + } + }); + + var key = '' + this.prfxCol + this.sort.column; + state[key] = state[key] || {}; + state[key].sort = { descending: this.sort.descending }; + } + } + + if (this.persistColsVisibility) { + if (!(0, _types.isNull)(this.hiddenCols)) { + // Clear previuosly hidden columns + Object.keys(state).forEach(function (key) { + if (key.indexOf(_this3.prfxCol) !== -1 && state[key]) { + state[key].hidden = undefined; + } + }); + + this.hiddenCols.forEach(function (colIdx) { + var key = '' + _this3.prfxCol + colIdx; + state[key] = state[key] || {}; + state[key].hidden = true; + }); + } + } + + if (this.persistFiltersVisibility) { + if ((0, _types.isNull)(this.filtersVisibility)) { + state[this.filtersVisKey] = undefined; + } else { + state[this.filtersVisKey] = this.filtersVisibility; + } + } + + this.emitter.emit('state-changed', tf, state); + } + + /** + * Refresh page number field on page number changes + * + * @param {Number} pageNb Current page number + */ + + }, { + key: 'updatePage', + value: function updatePage(pageNb) { + this.pageNb = pageNb; + this.update(); + } + + /** + * Refresh page length field on page length changes + * + * @param {Number} pageLength Current page length value + */ + + }, { + key: 'updatePageLength', + value: function updatePageLength(pageLength) { + this.pageLength = pageLength; + this.update(); + } + + /** + * Refresh column sorting information on sort changes + * + * @param index {Number} Column index + * @param {Boolean} descending Descending manner + */ + + }, { + key: 'updateSort', + value: function updateSort(index, descending) { + this.sort = { + column: index, + descending: descending + }; + this.update(); + } + + /** + * Refresh hidden columns information on columns visibility changes + * + * @param {Array} hiddenCols Columns indexes + */ + + }, { + key: 'updateColsVisibility', + value: function updateColsVisibility(hiddenCols) { + this.hiddenCols = hiddenCols; + this.update(); + } + + /** + * Refresh filters visibility on filters visibility change + * + * @param {Boolean} visible Visibility flad + */ + + }, { + key: 'updateFiltersVisibility', + value: function updateFiltersVisibility(visible) { + this.filtersVisibility = visible; + this.update(); + } + + /** + * Override state field + * + * @param state State object + */ + + }, { + key: 'override', + value: function override(state) { + this.state = state; + } + + /** + * Sync stored features state + */ + + }, { + key: 'sync', + value: function sync() { + var state = this.state; + var tf = this.tf; + + this._syncFilters(); + + if (this.persistPageNumber) { + var pageNumber = state[this.pageNbKey]; + this.emitter.emit('change-page', tf, pageNumber); + } + + if (this.persistPageLength) { + var pageLength = state[this.pageLengthKey]; + this.emitter.emit('change-page-results', tf, pageLength); + } + + this._syncSort(); + this._syncColsVisibility(); + this._syncFiltersVisibility(); + } + + /** + * Override current state with passed one and sync features + * + * @param {Object} state State object + */ + + }, { + key: 'overrideAndSync', + value: function overrideAndSync(state) { + // To prevent state to react to features changes, state is temporarily + // disabled + this.disable(); + // State is overriden with passed state object + this.override(state); + // New hash state is applied to features + this.sync(); + // State is re-enabled + this.enable(); + } + + /** + * Sync filters with stored values and filter table + * + * @private + */ + + }, { + key: '_syncFilters', + value: function _syncFilters() { + var _this4 = this; + + if (!this.persistFilters) { + return; + } + var state = this.state; + var tf = this.tf; + + Object.keys(state).forEach(function (key) { + if (key.indexOf(_this4.prfxCol) !== -1) { + var colIdx = parseInt(key.replace(_this4.prfxCol, ''), 10); + var val = state[key].flt; + tf.setFilterValue(colIdx, val); + } + }); + + tf.filter(); + } + + /** + * Sync sorted column with stored sorting information and sort table + * + * @private + */ + + }, { + key: '_syncSort', + value: function _syncSort() { + var _this5 = this; + + if (!this.persistSort) { + return; + } + var state = this.state; + var tf = this.tf; + + Object.keys(state).forEach(function (key) { + if (key.indexOf(_this5.prfxCol) !== -1) { + var colIdx = parseInt(key.replace(_this5.prfxCol, ''), 10); + if (!(0, _types.isUndef)(state[key].sort)) { + var sort = state[key].sort; + _this5.emitter.emit('sort', tf, colIdx, sort.descending); + } + } + }); + } + + /** + * Sync hidden columns with stored information + * + * @private + */ + + }, { + key: '_syncColsVisibility', + value: function _syncColsVisibility() { + var _this6 = this; + + if (!this.persistColsVisibility) { + return; + } + var state = this.state; + var tf = this.tf; + var hiddenCols = []; + + Object.keys(state).forEach(function (key) { + if (key.indexOf(_this6.prfxCol) !== -1) { + var colIdx = parseInt(key.replace(_this6.prfxCol, ''), 10); + if (!(0, _types.isUndef)(state[key].hidden)) { + hiddenCols.push(colIdx); + } + } + }); + + hiddenCols.forEach(function (colIdx) { + _this6.emitter.emit('hide-column', tf, colIdx); + }); + } + + /** + * Sync filters visibility with stored information + * + * @private + */ + + }, { + key: '_syncFiltersVisibility', + value: function _syncFiltersVisibility() { + if (!this.persistFiltersVisibility) { + return; + } + var state = this.state; + var tf = this.tf; + var filtersVisibility = state[this.filtersVisKey]; + + this.filtersVisibility = filtersVisibility; + this.emitter.emit('show-filters', tf, filtersVisibility); + } + + /** + * Destroy State instance + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this7 = this; + + if (!this.initialized) { + return; + } + + this.state = {}; + + this.emitter.off(['after-filtering'], function () { + return _this7.update(); + }); + this.emitter.off(['after-page-change', 'after-clearing-filters'], function (tf, pageNb) { + return _this7.updatePage(pageNb); + }); + this.emitter.off(['after-page-length-change'], function (tf, index) { + return _this7.updatePageLength(index); + }); + this.emitter.off(['column-sorted'], function (tf, index, descending) { + return _this7.updateSort(index, descending); + }); + this.emitter.off(['sort-initialized'], function () { + return _this7._syncSort(); + }); + this.emitter.off(['columns-visibility-initialized'], function () { + return _this7._syncColsVisibility(); + }); + this.emitter.off(['column-shown', 'column-hidden'], function (tf, feature, colIndex, hiddenCols) { + return _this7.updateColsVisibility(hiddenCols); + }); + this.emitter.off(['filters-visibility-initialized'], function () { + return _this7._syncFiltersVisibility(); + }); + this.emitter.off(['filters-toggled'], function (tf, extension, visible) { + return _this7.updateFiltersVisibility(visible); + }); + + if (this.enableHash) { + this.hash.destroy(); + this.hash = null; + } + + if (this.enableStorage) { + this.storage.destroy(); + this.storage = null; + } + + this.initialized = false; + } + }]); + + return State; +}(_feature.Feature); + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.StatusBar = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _feature = __webpack_require__(11); + +var _root = __webpack_require__(15); + +var _dom = __webpack_require__(9); + +var _types = __webpack_require__(6); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var EVENTS = ['after-filtering', 'after-populating-filter', 'after-page-change', 'after-clearing-filters', 'after-page-length-change', 'after-reset-page', 'after-reset-page-length', 'after-loading-extensions', 'after-loading-themes']; + +/** + * Status bar UI component + * @export + * @class StatusBar + * @extends {Feature} + */ + +var StatusBar = exports.StatusBar = function (_Feature) { + _inherits(StatusBar, _Feature); + + /** + * Creates an instance of StatusBar + * @param {TableFilter} tf TableFilter instance + */ + function StatusBar(tf) { + _classCallCheck(this, StatusBar); + + // Configuration object + var _this = _possibleConstructorReturn(this, (StatusBar.__proto__ || Object.getPrototypeOf(StatusBar)).call(this, tf, 'statusBar')); + + var f = _this.config.status_bar || {}; + + /** + * ID of custom container element + * @type {String} + */ + _this.targetId = f.target_id || null; + + /** + * Container DOM element + * @type {DOMElement} + * @private + */ + _this.container = null; + + /** + * Message container DOM element + * @type {DOMElement} + * @private + */ + _this.msgContainer = null; + + /** + * Label container DOM element + * @type {DOMElement} + * @private + */ + _this.labelContainer = null; + + /** + * Text preceding status message + * @type {String} + */ + _this.text = f.text || ''; + + /** + * Css class for container element + * @type {String} + */ + _this.cssClass = f.css_class || 'status'; + + /** + * Message visibility duration in milliseconds + * @type {Number} + * @private + */ + _this.delay = 250; + + /** + * Callback fired before the message is displayed + * @type {Function} + */ + _this.onBeforeShowMsg = (0, _types.isFn)(f.on_before_show_msg) ? f.on_before_show_msg : _types.EMPTY_FN; + + /** + * Callback fired after the message is displayed + * @type {Function} + */ + _this.onAfterShowMsg = (0, _types.isFn)(f.on_after_show_msg) ? f.on_after_show_msg : _types.EMPTY_FN; + + /** + * Message appearing upon filtering + * @type {String} + */ + _this.msgFilter = f.msg_filter || 'Filtering data...'; + + /** + * Message appearing when a drop-down filter is populated + * @type {String} + */ + _this.msgPopulate = f.msg_populate || 'Populating filter...'; + + /** + * Message appearing when a checklist filter is populated + * @type {String} + */ + _this.msgPopulateCheckList = f.msg_populate_checklist || 'Populating list...'; + + /** + * Message appearing when a pagination page is changed + * @type {String} + */ + _this.msgChangePage = f.msg_change_page || 'Collecting paging data...'; + + /** + * Message appearing when filters are cleared + * @type {String} + */ + _this.msgClear = f.msg_clear || 'Clearing filters...'; + + /** + * Message appearing when the page length is changed + * @type {String} + */ + _this.msgChangeResults = f.msg_change_results || 'Changing results per page...'; + + /** + * Message appearing when the page is re-set + * @type {String} + */ + _this.msgResetPage = f.msg_reset_page || 'Re-setting page...'; + + /** + * Message appearing when the page length is re-set + * @type {String} + */ + _this.msgResetPageLength = f.msg_reset_page_length || 'Re-setting page length...'; + + /** + * Message appearing upon column sorting + * @type {String} + */ + _this.msgSort = f.msg_sort || 'Sorting data...'; + + /** + * Message appearing when extensions are loading + * @type {String} + */ + _this.msgLoadExtensions = f.msg_load_extensions || 'Loading extensions...'; + + /** + * Message appearing when themes are loading + * @type {String} + */ + _this.msgLoadThemes = f.msg_load_themes || 'Loading theme(s)...'; + return _this; + } + + /** + * Initializes StatusBar instance + */ + + + _createClass(StatusBar, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + var tf = this.tf; + var emitter = this.emitter; + + //status bar container + var statusDiv = (0, _dom.createElm)('div'); + statusDiv.className = this.cssClass; + + //status bar label + var statusSpan = (0, _dom.createElm)('span'); + //preceding text + var statusSpanText = (0, _dom.createElm)('span'); + statusSpanText.appendChild((0, _dom.createText)(this.text)); + + // target element container + if (!this.targetId) { + tf.setToolbar(); + } + var targetEl = !this.targetId ? tf.lDiv : (0, _dom.elm)(this.targetId); + + //default container: 'lDiv' + if (!this.targetId) { + statusDiv.appendChild(statusSpanText); + statusDiv.appendChild(statusSpan); + targetEl.appendChild(statusDiv); + } else { + // custom container, no need to append statusDiv + targetEl.appendChild(statusSpanText); + targetEl.appendChild(statusSpan); + } + + this.container = statusDiv; + this.msgContainer = statusSpan; + this.labelContainer = statusSpanText; + + // Subscribe to events + emitter.on(['before-filtering'], function () { + return _this2.message(_this2.msgFilter); + }); + emitter.on(['before-populating-filter'], function () { + return _this2.message(_this2.msgPopulate); + }); + emitter.on(['before-page-change'], function () { + return _this2.message(_this2.msgChangePage); + }); + emitter.on(['before-clearing-filters'], function () { + return _this2.message(_this2.msgClear); + }); + emitter.on(['before-page-length-change'], function () { + return _this2.message(_this2.msgChangeResults); + }); + emitter.on(['before-reset-page'], function () { + return _this2.message(_this2.msgResetPage); + }); + emitter.on(['before-reset-page-length'], function () { + return _this2.message(_this2.msgResetPageLength); + }); + emitter.on(['before-loading-extensions'], function () { + return _this2.message(_this2.msgLoadExtensions); + }); + emitter.on(['before-loading-themes'], function () { + return _this2.message(_this2.msgLoadThemes); + }); + + emitter.on(EVENTS, function () { + return _this2.message(''); + }); + + /** + * @inherited + */ + this.initialized = true; + } + + /** + * Display status message + * @param {String} [t=''] Message to be displayed + */ + + }, { + key: 'message', + value: function message() { + var _this3 = this; + + var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + + if (!this.isEnabled()) { + return; + } + + this.onBeforeShowMsg(this.tf, t); + + var d = t === '' ? this.delay : 1; + _root.root.setTimeout(function () { + if (!_this3.initialized) { + return; + } + _this3.msgContainer.innerHTML = t; + + _this3.onAfterShowMsg(_this3.tf, t); + }, d); + } + + /** + * Destroy StatusBar instance + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this4 = this; + + if (!this.initialized) { + return; + } + + var emitter = this.emitter; + + this.container.innerHTML = ''; + if (!this.targetId) { + (0, _dom.removeElm)(this.container); + } + this.labelContainer = null; + this.msgContainer = null; + this.container = null; + + // Unsubscribe to events + emitter.off(['before-filtering'], function () { + return _this4.message(_this4.msgFilter); + }); + emitter.off(['before-populating-filter'], function () { + return _this4.message(_this4.msgPopulate); + }); + emitter.off(['before-page-change'], function () { + return _this4.message(_this4.msgChangePage); + }); + emitter.off(['before-clearing-filters'], function () { + return _this4.message(_this4.msgClear); + }); + emitter.off(['before-page-length-change'], function () { + return _this4.message(_this4.msgChangeResults); + }); + emitter.off(['before-reset-page'], function () { + return _this4.message(_this4.msgResetPage); + }); + emitter.off(['before-reset-page-length'], function () { + return _this4.message(_this4.msgResetPageLength); + }); + emitter.off(['before-loading-extensions'], function () { + return _this4.message(_this4.msgLoadExtensions); + }); + emitter.off(['before-loading-themes'], function () { + return _this4.message(_this4.msgLoadThemes); + }); + + emitter.off(EVENTS, function () { + return _this4.message(''); + }); + + this.initialized = false; + } + }]); + + return StatusBar; +}(_feature.Feature); + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Storage = exports.hasStorage = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _cookie = __webpack_require__(109); + +var _cookie2 = _interopRequireDefault(_cookie); + +var _root = __webpack_require__(15); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var JSON = _root.root.JSON; +var localStorage = _root.root.localStorage; +var location = _root.root.location; + +/** + * Checks if browser has Storage feature + */ +var hasStorage = exports.hasStorage = function hasStorage() { + return 'Storage' in _root.root; +}; + +/** + * Stores the features state in browser's local storage or cookie + * + * @export + * @class Storage + */ + +var Storage = exports.Storage = function () { + + /** + * Creates an instance of Storage + * + * @param {State} state Instance of State + */ + function Storage(state) { + _classCallCheck(this, Storage); + + /** + * State object + * @type {State} + * @private + */ + this.state = state; + + /** + * TableFilter object + * @type {TableFilter} + * @private + */ + this.tf = state.tf; + + /** + * Persist with local storage + * @type {Boolean} + * @private + */ + this.enableLocalStorage = state.enableLocalStorage && hasStorage(); + + /** + * Persist with cookie + * @type {Boolean} + * @private + */ + this.enableCookie = state.enableCookie && !this.enableLocalStorage; + + /** + * Emitter object + * @type {Emitter} + * @private + */ + this.emitter = state.emitter; + + /** + * Cookie duration in hours from state object + * @type {Number} + * @private + */ + this.duration = state.cookieDuration; + } + + /** + * Initializes the Storage object + */ + + + _createClass(Storage, [{ + key: 'init', + value: function init() { + var _this = this; + + this.emitter.on(['state-changed'], function (tf, state) { + return _this.save(state); + }); + this.emitter.on(['initialized'], function () { + return _this.sync(); + }); + } + + /** + * Persists the features state on state changes + * + * @param {State} state Instance of State + */ + + }, { + key: 'save', + value: function save(state) { + if (this.enableLocalStorage) { + localStorage[this.getKey()] = JSON.stringify(state); + } else { + _cookie2.default.write(this.getKey(), JSON.stringify(state), this.duration); + } + } + + /** + * Turns stored string into a State JSON object + * + * @returns {Object} JSON object + */ + + }, { + key: 'retrieve', + value: function retrieve() { + var state = null; + if (this.enableLocalStorage) { + state = localStorage[this.getKey()]; + } else { + state = _cookie2.default.read(this.getKey()); + } + + if (!state) { + return null; + } + return JSON.parse(state); + } + + /** + * Removes persisted state from storage + */ + + }, { + key: 'remove', + value: function remove() { + if (this.enableLocalStorage) { + localStorage.removeItem(this.getKey()); + } else { + _cookie2.default.remove(this.getKey()); + } + } + + /** + * Applies persisted state to features + */ + + }, { + key: 'sync', + value: function sync() { + var state = this.retrieve(); + if (!state) { + return; + } + // override current state with persisted one and sync features + this.state.overrideAndSync(state); + } + + /** + * Returns the storage key + * + * @returns {String} Key + */ + + }, { + key: 'getKey', + value: function getKey() { + return JSON.stringify({ + key: this.tf.prfxTf + '_' + this.tf.id, + path: location.pathname + }); + } + + /** + * Release Storage event subscriptions and clear fields + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this2 = this; + + this.emitter.off(['state-changed'], function (tf, state) { + return _this2.save(state); + }); + this.emitter.off(['initialized'], function () { + return _this2.sync(); + }); + + this.remove(); + + this.state = null; + this.emitter = null; + } + }]); + + return Storage; +}(); + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TableFilter = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _event = __webpack_require__(17); + +var _dom = __webpack_require__(9); + +var _string = __webpack_require__(19); + +var _types = __webpack_require__(6); + +var _number = __webpack_require__(52); + +var _root = __webpack_require__(15); + +var _emitter = __webpack_require__(69); + +var _dropdown = __webpack_require__(71); + +var _checkList = __webpack_require__(70); + +var _const = __webpack_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var doc = _root.root.document; + +/** + * Makes HTML tables filterable and a bit more :) + * + * @export + * @class TableFilter + */ + +var TableFilter = exports.TableFilter = function () { + + /** + * Creates an instance of TableFilter + * requires `table` or `id` arguments, `row` and `configuration` optional + * @param {HTMLTableElement} table Table DOM element + * @param {String} id Table id + * @param {Number} row index indicating the 1st row + * @param {Object} configuration object + */ + function TableFilter() { + var _this = this; + + _classCallCheck(this, TableFilter); + + /** + * ID of current instance + * @type {String} + * @private + */ + this.id = null; + + /** + * Current version + * @type {String} + */ + this.version = '0.5.24'; + + /** + * Current year + * @type {Number} + * @private + */ + this.year = new Date().getFullYear(); + + /** + * HTML Table DOM element + * @type {DOMElement} + * @private + */ + this.tbl = null; + + /** + * Calculated row's index from which starts filtering once filters + * are generated + * @type {Number} + */ + this.refRow = null; + + /** + * Index of the headers row + * @type {Number} + * @private + */ + this.headersRow = null; + + /** + * Configuration object + * @type {Object} + * @private + */ + this.cfg = {}; + + /** + * Number of rows that can be filtered + * @type {Number} + * @private + */ + this.nbFilterableRows = 0; + + /** + * Number of cells in the reference row + * @type {Number} + * @private + */ + this.nbCells = null; + + /** @private */ + this.initialized = false; + + var startRow = void 0; + + // TODO: use for-of + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + args.forEach(function (arg) { + if ((typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) === 'object' && arg.nodeName === 'TABLE') { + _this.tbl = arg; + _this.id = arg.id || 'tf_' + new Date().getTime() + '_'; + } else if ((0, _types.isString)(arg)) { + _this.id = arg; + _this.tbl = (0, _dom.elm)(arg); + } else if ((0, _types.isNumber)(arg)) { + startRow = arg; + } else if ((0, _types.isObj)(arg)) { + _this.cfg = arg; + } + }); + + if (!this.tbl || this.tbl.nodeName !== 'TABLE') { + throw new Error('Could not instantiate TableFilter: HTML table\n DOM element not found.'); + } + + if (this.getRowsNb() === 0) { + throw new Error('Could not instantiate TableFilter: HTML table\n requires at least 1 row.'); + } + + // configuration object + var f = this.cfg; + + /** + * Event emitter instance + * @type {Emitter} + */ + this.emitter = new _emitter.Emitter(); + + //Start row et cols nb + this.refRow = (0, _types.isUndef)(startRow) ? 2 : startRow + 1; + + /** + * Base path for static assets + * @type {String} + */ + this.basePath = f.base_path || 'tablefilter/'; + + /*** filters' grid properties ***/ + + /** + * Enable/disable filters + * @type {Boolean} + */ + this.fltGrid = f.grid === false ? false : true; + + /** + * Enable/disable grid layout (fixed headers) + * @type {Object|Boolean} + */ + this.gridLayout = (0, _types.isObj)(f.grid_layout) || Boolean(f.grid_layout); + + /** + * Filters row index + * @type {Number} + */ + this.filtersRowIndex = isNaN(f.filters_row_index) ? 0 : f.filters_row_index; + + /** + * Headers row index + * @type {Number} + */ + this.headersRow = isNaN(f.headers_row_index) ? this.filtersRowIndex === 0 ? 1 : 0 : f.headers_row_index; + + /** + * Define the type of cell containing a filter (td/th) + * @type {String} + */ + this.fltCellTag = (0, _types.isString)(f.filters_cell_tag) ? f.filters_cell_tag : _const.CELL_TAG; + + /** + * List of filters IDs + * @type {Array} + * @private + */ + this.fltIds = []; + + /** + * List of valid rows indexes (rows visible upon filtering) + * @type {Array} + * @private + */ + this.validRowsIndex = []; + + /** + * Toolbar's container DOM element + * @type {DOMElement} + * @private + */ + this.infDiv = null; + + /** + * Left-side inner container DOM element (rows counter in toolbar) + * @type {DOMElement} + * @private + */ + this.lDiv = null; + + /** + * Right-side inner container DOM element (reset button, + * page length selector in toolbar) + * @type {DOMElement} + * @private + */ + this.rDiv = null; + + /** + * Middle inner container DOM element (paging elements in toolbar) + * @type {DOMElement} + * @private + */ + this.mDiv = null; + + /** + * Css class for toolbar's container DOM element + * @type {String} + */ + this.infDivCssClass = f.inf_div_css_class || 'inf'; + + /** + * Css class for left-side inner container DOM element + * @type {String} + */ + this.lDivCssClass = f.left_div_css_class || 'ldiv'; + + /** + * Css class for right-side inner container DOM element + * @type {String} + */ + this.rDivCssClass = f.right_div_css_class || 'rdiv'; + + /** + * Css class for middle inner container DOM element + * @type {String} + */ + this.mDivCssClass = f.middle_div_css_class || 'mdiv'; + + /*** filters' grid appearance ***/ + /** + * Path for stylesheets + * @type {String} + */ + this.stylePath = f.style_path || this.basePath + 'style/'; + + /** + * Main stylesheet path + * @type {String} + */ + this.stylesheet = f.stylesheet || this.stylePath + 'tablefilter.css'; + + /** + * Main stylesheet ID + * @type {String} + * @private + */ + this.stylesheetId = this.id + '_style'; + + /** + * Css class for the filters row + * @type {String} + */ + this.fltsRowCssClass = f.flts_row_css_class || 'fltrow'; + + /** + * Enable/disable icons (paging, reset button) + * @type {Boolean} + */ + this.enableIcons = f.enable_icons === false ? false : true; + + /** + * Enable/disable alternating rows + * @type {Boolean} + */ + this.alternateRows = Boolean(f.alternate_rows); + + /** + * Indicate whether columns widths are set + * @type {Boolean} + * @private + */ + this.hasColWidths = (0, _types.isArray)(f.col_widths); + + /** + * Columns widths array + * @type {Array} + */ + this.colWidths = this.hasColWidths ? f.col_widths : []; + + /** + * Css class for a filter element + * @type {String} + */ + this.fltCssClass = f.flt_css_class || 'flt'; + + /** + * Css class for multiple select filters + * @type {String} + */ + this.fltMultiCssClass = f.flt_multi_css_class || 'flt_multi'; + + /** + * Css class for small filter (when submit button is active) + * @type {String} + */ + this.fltSmallCssClass = f.flt_small_css_class || 'flt_s'; + + /** + * Css class for single filter type + * @type {String} + */ + this.singleFltCssClass = f.single_flt_css_class || 'single_flt'; + + /*** filters' grid behaviours ***/ + + /** + * Enable/disable enter key for input type filters + * @type {Boolean} + */ + this.enterKey = f.enter_key === false ? false : true; + + /** + * Callback fired before filtering process starts + * @type {Function} + */ + this.onBeforeFilter = (0, _types.isFn)(f.on_before_filter) ? f.on_before_filter : _types.EMPTY_FN; + + /** + * Callback fired after filtering process is completed + * @type {Function} + */ + this.onAfterFilter = (0, _types.isFn)(f.on_after_filter) ? f.on_after_filter : _types.EMPTY_FN; + + /** + * Enable/disable case sensitivity filtering + * @type {Boolean} + */ + this.caseSensitive = Boolean(f.case_sensitive); + + /** + * Indicate whether exact match filtering is enabled on a per column + * basis + * @type {Boolean} + * @private + */ + this.hasExactMatchByCol = (0, _types.isArray)(f.columns_exact_match); + + /** + * Exact match filtering per column array + * @type {Array} + */ + this.exactMatchByCol = this.hasExactMatchByCol ? f.columns_exact_match : []; + + /** + * Globally enable/disable exact match filtering + * @type {Boolean} + */ + this.exactMatch = Boolean(f.exact_match); + + /** + * Ignore diacritics globally or on a column basis + * @type {Boolean|Array} + */ + this.ignoreDiacritics = f.ignore_diacritics; + + /** + * Enable/disable linked filters filtering mode + * @type {Boolean} + */ + this.linkedFilters = Boolean(f.linked_filters); + + /** + * Enable/disable readonly state for excluded options when + * linked filters filtering mode is on + * @type {Boolean} + */ + this.disableExcludedOptions = Boolean(f.disable_excluded_options); + + /** + * Active filter ID + * @type {String} + * @private + */ + this.activeFilterId = null; + + /** + * Enable/disable always visible rows, excluded from filtering + * @type {Boolean} + */ + this.hasVisibleRows = Boolean(f.rows_always_visible); + + /** + * List of row indexes to be excluded from filtering + * @type {Array} + */ + this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : []; + + /** + * Enable/disable external filters generation + * @type {Boolean} + */ + this.isExternalFlt = Boolean(f.external_flt_grid); + + /** + * List of containers IDs where external filters will be generated + * @type {Array} + */ + this.externalFltTgtIds = f.external_flt_grid_ids || []; + + /** + * Callback fired after filters are generated + * @type {Function} + */ + this.onFiltersLoaded = (0, _types.isFn)(f.on_filters_loaded) ? f.on_filters_loaded : _types.EMPTY_FN; + + /** + * Enable/disable single filter filtering all columns + * @type {Boolean} + */ + this.singleSearchFlt = Boolean(f.single_filter); + + /** + * Callback fired after a row is validated during filtering + * @type {Function} + */ + this.onRowValidated = (0, _types.isFn)(f.on_row_validated) ? f.on_row_validated : _types.EMPTY_FN; + + /** + * Specify which column implements a custom cell parser to retrieve the + * cell value: + * cell_parser: { + * cols: [0, 2], + * parse: function(tf, cell, colIndex) { + * // custom cell parser logic here + * return cellValue; + * } + * } + * @type {Object} + */ + this.cellParser = (0, _types.isObj)(f.cell_parser) && (0, _types.isFn)(f.cell_parser.parse) && (0, _types.isArray)(f.cell_parser.cols) ? f.cell_parser : { cols: [], parse: _types.EMPTY_FN }; + + /** + * Global watermark text for input filter type or watermark for each + * filter if an array is supplied + * @type {String|Array} + */ + this.watermark = f.watermark || ''; + + /** + * Indicate whether watermark is on a per column basis + * @type {Boolean} + * @private + */ + this.isWatermarkArray = (0, _types.isArray)(this.watermark); + + /** + * Toolbar's custom container ID + * @type {String} + */ + this.toolBarTgtId = f.toolbar_target_id || null; + + /** + * Indicate whether help UI component is disabled + * @type {Boolean} + */ + this.help = (0, _types.isUndef)(f.help_instructions) ? undefined : (0, _types.isObj)(f.help_instructions) || Boolean(f.help_instructions); + + /** + * Indicate whether pop-up filters UI is enabled + * @type {Boolean} + */ + this.popupFilters = (0, _types.isObj)(f.popup_filters) || Boolean(f.popup_filters); + + /** + * Indicate whether filtered (active) columns indicator is enabled + * @type {Boolean} + */ + this.markActiveColumns = (0, _types.isObj)(f.mark_active_columns) || Boolean(f.mark_active_columns); + + /*** select filter's customisation and behaviours ***/ + /** + * Text for clear option in drop-down filter types (1st option) + * @type {String|Array} + */ + this.clearFilterText = f.clear_filter_text || 'Clear'; + + /** + * Indicate whether empty option is enabled in drop-down filter types + * @type {Boolean} + */ + this.enableEmptyOption = Boolean(f.enable_empty_option); + + /** + * Text for empty option in drop-down filter types + * @type {String} + */ + this.emptyText = f.empty_text || '(Empty)'; + + /** + * Indicate whether non-empty option is enabled in drop-down filter + * types + * @type {Boolean} + */ + this.enableNonEmptyOption = Boolean(f.enable_non_empty_option); + + /** + * Text for non-empty option in drop-down filter types + * @type {String} + */ + this.nonEmptyText = f.non_empty_text || '(Non empty)'; + + /** + * Indicate whether drop-down filter types filter the table by default + * on change event + * @type {Boolean} + */ + this.onSlcChange = f.on_change === false ? false : true; + + /** + * Make drop-down filter types options sorted in alpha-numeric manner + * by default globally or on a column basis + * @type {Boolean|Array} + */ + this.sortSlc = (0, _types.isUndef)(f.sort_select) ? true : (0, _types.isArray)(f.sort_select) ? f.sort_select : Boolean(f.sort_select); + + /** + * Indicate whether options in drop-down filter types are sorted in a + * ascending numeric manner + * @type {Boolean} + * @private + */ + this.isSortNumAsc = Boolean(f.sort_num_asc); + + /** + * List of columns implementing options sorting in a ascending numeric + * manner + * @type {Array} + */ + this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : []; + + /** + * Indicate whether options in drop-down filter types are sorted in a + * descending numeric manner + * @type {Boolean} + * @private + */ + this.isSortNumDesc = Boolean(f.sort_num_desc); + + /** + * List of columns implementing options sorting in a descending numeric + * manner + * @type {Array} + */ + this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : []; + + /** + * Indicate whether drop-down filter types are populated on demand at + * first usage + * @type {Boolean} + */ + this.loadFltOnDemand = Boolean(f.load_filters_on_demand); + + /** + * Indicate whether custom drop-down filter options are implemented + * @type {Boolean} + */ + this.hasCustomOptions = (0, _types.isObj)(f.custom_options); + + /** + * Custom options definition of a per column basis, ie: + * custom_options: { + * cols:[0, 1], + * texts: [ + * ['a0', 'b0', 'c0'], + * ['a1', 'b1', 'c1'] + * ], + * values: [ + * ['a0', 'b0', 'c0'], + * ['a1', 'b1', 'c1'] + * ], + * sorts: [false, true] + * } + * + * @type {Object} + */ + this.customOptions = f.custom_options; + + /*** Filter operators ***/ + /** + * Regular expression operator for input filter. Defaults to 'rgx:' + * @type {String} + */ + this.rgxOperator = f.regexp_operator || 'rgx:'; + + /** + * Empty cells operator for input filter. Defaults to '[empty]' + * @type {String} + */ + this.emOperator = f.empty_operator || '[empty]'; + + /** + * Non-empty cells operator for input filter. Defaults to '[nonempty]' + * @type {String} + */ + this.nmOperator = f.nonempty_operator || '[nonempty]'; + + /** + * Logical OR operator for input filter. Defaults to '||' + * @type {String} + */ + this.orOperator = f.or_operator || '||'; + + /** + * Logical AND operator for input filter. Defaults to '&&' + * @type {String} + */ + this.anOperator = f.and_operator || '&&'; + + /** + * Greater than operator for input filter. Defaults to '>' + * @type {String} + */ + this.grOperator = f.greater_operator || '>'; + + /** + * Lower than operator for input filter. Defaults to '<' + * @type {String} + */ + this.lwOperator = f.lower_operator || '<'; + + /** + * Lower than or equal operator for input filter. Defaults to '<=' + * @type {String} + */ + this.leOperator = f.lower_equal_operator || '<='; + + /** + * Greater than or equal operator for input filter. Defaults to '>=' + * @type {String} + */ + this.geOperator = f.greater_equal_operator || '>='; + + /** + * Inequality operator for input filter. Defaults to '!' + * @type {String} + */ + this.dfOperator = f.different_operator || '!'; + + /** + * Like operator for input filter. Defaults to '!' + * @type {String} + */ + this.lkOperator = f.like_operator || '*'; + + /** + * Strict equality operator for input filter. Defaults to '=' + * @type {String} + */ + this.eqOperator = f.equal_operator || '='; + + /** + * Starts with operator for input filter. Defaults to '=' + * @type {String} + */ + this.stOperator = f.start_with_operator || '{'; + + /** + * Ends with operator for input filter. Defaults to '=' + * @type {String} + */ + this.enOperator = f.end_with_operator || '}'; + + // this.curExp = f.cur_exp || '^[¥£€$]'; + + /** + * Stored values separator + * @type {String} + */ + this.separator = f.separator || ','; + + /** + * Enable rows counter UI component + * @type {Boolean|Object} + */ + this.rowsCounter = (0, _types.isObj)(f.rows_counter) || Boolean(f.rows_counter); + + /** + * Enable status bar UI component + * @type {Boolean|Object} + */ + this.statusBar = (0, _types.isObj)(f.status_bar) || Boolean(f.status_bar); + + /** + * Enable activity/spinner indicator UI component + * @type {Boolean|Object} + */ + this.loader = (0, _types.isObj)(f.loader) || Boolean(f.loader); + + /*** validation - reset buttons/links ***/ + /** + * Enable filters submission button + * @type {Boolean} + */ + this.displayBtn = Boolean(f.btn); + + /** + * Define filters submission button text + * @type {String} + */ + this.btnText = f.btn_text || (!this.enableIcons ? 'Go' : ''); + + /** + * Css class for filters submission button + * @type {String} + */ + this.btnCssClass = f.btn_css_class || (!this.enableIcons ? 'btnflt' : 'btnflt_icon'); + + /** + * Enable clear button + * @type {Boolean} + */ + this.btnReset = Boolean(f.btn_reset); + + /** + * Callback fired before filters are cleared + * @type {Function} + */ + this.onBeforeReset = (0, _types.isFn)(f.on_before_reset) ? f.on_before_reset : _types.EMPTY_FN; + + /** + * Callback fired after filters are cleared + * @type {Function} + */ + this.onAfterReset = (0, _types.isFn)(f.on_after_reset) ? f.on_after_reset : _types.EMPTY_FN; + + /** + * Enable paging component + * @type {Object|Boolean} + */ + this.paging = (0, _types.isObj)(f.paging) || Boolean(f.paging); + + /** + * Number of hidden rows + * @type {Number} + * @private + */ + this.nbHiddenRows = 0; + + /** + * Enable auto-filter behaviour, table is filtered when a user + * stops typing + * @type {Boolean} + */ + this.autoFilter = Boolean(f.auto_filter); + + /** + * Auto-filter delay in msecs + * @type {Number} + */ + this.autoFilterDelay = !isNaN(f.auto_filter_delay) ? f.auto_filter_delay : _const.AUTO_FILTER_DELAY; + + /** + * Indicate whether user is typing + * @type {Boolean} + * @private + */ + this.isUserTyping = null; + + /** + * Auto-filter interval ID + * @type {String} + * @private + */ + this.autoFilterTimer = null; + + /** + * Enable keyword highlighting behaviour + * @type {Boolean} + */ + this.highlightKeywords = Boolean(f.highlight_keywords); + + /** + * Enable no results message UI component + * @type {Object|Boolean} + */ + this.noResults = (0, _types.isObj)(f.no_results_message) || Boolean(f.no_results_message); + + /** + * Enable state persistence + * @type {Object|Boolean} + */ + this.state = (0, _types.isObj)(f.state) || Boolean(f.state); + + /*** data types ***/ + + /** + * Enable date type module + * @type {Boolean} + * @private + */ + this.dateType = true; + + /** + * Define default locale, default to 'en' as per Sugar Date module: + * https://sugarjs.com/docs/#/DateLocales + * @type {String} + */ + this.locale = f.locale || 'en'; + + /** + * Define thousands separator ',' or '.', defaults to ',' + * @type {String} + */ + this.thousandsSeparator = f.thousands_separator || ','; + + /** + * Define decimal separator ',' or '.', defaults to '.' + * @type {String} + */ + this.decimalSeparator = f.decimal_separator || '.'; + + /** + * Define data types on a column basis, possible values 'string', + * 'number', 'formatted-number', 'date', 'ipaddress' ie: + * col_types : [ + * 'string', 'date', 'number', + * { type: 'formatted-number', decimal: ',', thousands: '.' }, + * { type: 'date', locale: 'en-gb' }, + * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] } + * ] + * + * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive + * information on date parsing formats supported by Sugar Date + * @type {Array} + */ + this.colTypes = (0, _types.isArray)(f.col_types) ? f.col_types : []; + + /*** ids prefixes ***/ + /** + * Main prefix + * @private + */ + this.prfxTf = 'TF'; + + /** + * Filter's ID prefix (inputs - selects) + * @private + */ + this.prfxFlt = 'flt'; + + /** + * Button's ID prefix + * @private + */ + this.prfxValButton = 'btn'; + + /** + * Toolbar container ID prefix + * @private + */ + this.prfxInfDiv = 'inf_'; + + /** + * Toolbar left element ID prefix + * @private + */ + this.prfxLDiv = 'ldiv_'; + + /** + * Toolbar right element ID prefix + * @private + */ + this.prfxRDiv = 'rdiv_'; + + /** + * Toolbar middle element ID prefix + * @private + */ + this.prfxMDiv = 'mdiv_'; + + /** + * Responsive Css class + * @private + */ + this.prfxResponsive = 'resp'; + + /*** extensions ***/ + /** + * List of loaded extensions + * @type {Array} + * @private + */ + this.extensions = f.extensions; + + /** + * Determine whether extensions are loaded + * @type {Boolean} + * @private + */ + this.hasExtensions = (0, _types.isArray)(this.extensions); + + /*** themes ***/ + /** + * Enable default theme + * @type {Boolean} + */ + this.enableDefaultTheme = Boolean(f.enable_default_theme); + + /** + * Determine whether themes are enables + * @type {Boolean} + * @private + */ + this.hasThemes = this.enableDefaultTheme || (0, _types.isArray)(f.themes); + + /** + * List of themes, ie: + * themes: [{ name: 'skyblue' }] + * @type {Array} + */ + this.themes = f.themes || []; + + /** + * Define path to themes assets, defaults to + * 'tablefilter/style/themes/'. Usage: + * themes: [{ name: 'skyblue' }] + * @type {Array} + */ + this.themesPath = f.themes_path || this.stylePath + 'themes/'; + + /** + * Enable responsive layout + * @type {Boolean} + */ + this.responsive = Boolean(f.responsive); + + /** + * Features registry + * @private + */ + this.Mod = {}; + + /** + * Extensions registry + * @private + */ + this.ExtRegistry = {}; + + //conditionally instantiate required features + this.instantiateFeatures(Object.keys(_const.FEATURES).map(function (item) { + return _const.FEATURES[item]; + })); + + //load styles if necessary + this.import(this.stylesheetId, this.stylesheet, null, 'link'); + } + + /** + * Initialise features and layout + */ + + + _createClass(TableFilter, [{ + key: 'init', + value: function init() { + var _this2 = this; + + if (this.initialized) { + return; + } + + this.nbCells = this.getCellsNb(this.refRow); + var Mod = this.Mod; + var n = this.singleSearchFlt ? 1 : this.nbCells; + var inpclass = void 0; + + //loads theme + this.loadThemes(); + + var dateType = _const.FEATURES.dateType, + help = _const.FEATURES.help, + state = _const.FEATURES.state, + markActiveColumns = _const.FEATURES.markActiveColumns, + gridLayout = _const.FEATURES.gridLayout, + loader = _const.FEATURES.loader, + highlightKeyword = _const.FEATURES.highlightKeyword, + popupFilter = _const.FEATURES.popupFilter, + rowsCounter = _const.FEATURES.rowsCounter, + statusBar = _const.FEATURES.statusBar, + clearButton = _const.FEATURES.clearButton, + alternateRows = _const.FEATURES.alternateRows, + noResults = _const.FEATURES.noResults, + paging = _const.FEATURES.paging; + + //explicitly initialise features in given order + + this.initFeatures([dateType, help, state, markActiveColumns, gridLayout, loader, highlightKeyword, popupFilter]); + + //filters grid is not generated + if (!this.fltGrid) { + this._initNoFilters(); + } else { + var fltrow = this._insertFiltersRow(); + + this.nbFilterableRows = this.getRowsNb(); + + // Generate filters + for (var i = 0; i < n; i++) { + this.emitter.emit('before-filter-init', this, i); + + var fltcell = (0, _dom.createElm)(this.fltCellTag), + col = this.getFilterType(i); + + if (this.singleSearchFlt) { + fltcell.colSpan = this.nbCells; + } + if (!this.gridLayout) { + fltrow.appendChild(fltcell); + } + inpclass = i === n - 1 && this.displayBtn ? this.fltSmallCssClass : this.fltCssClass; + + //only 1 input for single search + if (this.singleSearchFlt) { + col = _const.INPUT; + inpclass = this.singleFltCssClass; + } + + //drop-down filters + if (col === _const.SELECT || col === _const.MULTIPLE) { + Mod.dropdown = Mod.dropdown || new _dropdown.Dropdown(this); + Mod.dropdown.init(i, this.isExternalFlt, fltcell); + } + // checklist + else if (col === _const.CHECKLIST) { + Mod.checkList = Mod.checkList || new _checkList.CheckList(this); + Mod.checkList.init(i, this.isExternalFlt, fltcell); + } else { + this._buildInputFilter(i, inpclass, fltcell); + } + + // this adds submit button + if (i === n - 1 && this.displayBtn) { + this._buildSubmitButton(i, fltcell); + } + + this.emitter.emit('after-filter-init', this, i); + } + + this.emitter.on(['filter-focus'], function (tf, filter) { + return _this2.setActiveFilterId(filter.id); + }); + } //if this.fltGrid + + /* Features */ + if (this.hasVisibleRows) { + this.emitter.on(['after-filtering'], function () { + return _this2.enforceVisibility(); + }); + this.enforceVisibility(); + } + + this.initFeatures([rowsCounter, statusBar, clearButton, alternateRows, noResults, paging]); + + if (this.hasColWidths && !this.gridLayout) { + this.setColWidths(); + } + + //TF css class is added to table + if (!this.gridLayout) { + (0, _dom.addClass)(this.dom(), this.prfxTf); + if (this.responsive) { + (0, _dom.addClass)(this.dom(), this.prfxResponsive); + } + } + + /* Load extensions */ + this.initExtensions(); + + // Subscribe to events + if (this.linkedFilters) { + this.emitter.on(['after-filtering'], function () { + return _this2.linkFilters(); + }); + } + + this.initialized = true; + + this.onFiltersLoaded(this); + + this.emitter.emit('initialized', this); + } + + /** + * Detect key + * @param {Event} evt + */ + + }, { + key: 'detectKey', + value: function detectKey(evt) { + if (!this.enterKey) { + return; + } + if (evt) { + var key = (0, _event.keyCode)(evt); + if (key === _const.ENTER_KEY) { + this.filter(); + (0, _event.cancelEvt)(evt); + (0, _event.stopEvt)(evt); + } else { + this.isUserTyping = true; + _root.root.clearInterval(this.autoFilterTimer); + this.autoFilterTimer = null; + } + } + } + + /** + * Filter's keyup event: if auto-filter on, detect user is typing and filter + * columns + * @param {Event} evt + */ + + }, { + key: 'onKeyUp', + value: function onKeyUp(evt) { + if (!this.autoFilter) { + return; + } + var key = (0, _event.keyCode)(evt); + this.isUserTyping = false; + + function filter() { + _root.root.clearInterval(this.autoFilterTimer); + this.autoFilterTimer = null; + if (!this.isUserTyping) { + this.filter(); + this.isUserTyping = null; + } + } + + if (key !== _const.ENTER_KEY && key !== _const.TAB_KEY && key !== _const.ESC_KEY && key !== _const.UP_ARROW_KEY && key !== _const.DOWN_ARROW_KEY) { + if (this.autoFilterTimer === null) { + this.autoFilterTimer = _root.root.setInterval(filter.bind(this), this.autoFilterDelay); + } + } else { + _root.root.clearInterval(this.autoFilterTimer); + this.autoFilterTimer = null; + } + } + + /** + * Filter's keydown event: if auto-filter on, detect user is typing + */ + + }, { + key: 'onKeyDown', + value: function onKeyDown() { + if (this.autoFilter) { + this.isUserTyping = true; + } + } + + /** + * Filter's focus event + * @param {Event} evt + */ + + }, { + key: 'onInpFocus', + value: function onInpFocus(evt) { + var elm = (0, _event.targetEvt)(evt); + this.emitter.emit('filter-focus', this, elm); + } + + /** + * Filter's blur event: if auto-filter on, clear interval on filter blur + */ + + }, { + key: 'onInpBlur', + value: function onInpBlur() { + if (this.autoFilter) { + this.isUserTyping = false; + _root.root.clearInterval(this.autoFilterTimer); + } + this.emitter.emit('filter-blur', this); + } + + /** + * Insert filters row at initialization + */ + + }, { + key: '_insertFiltersRow', + value: function _insertFiltersRow() { + // TODO: prevent filters row generation for popup filters too, + // to reduce and simplify headers row index adjusting across lib modules + // (GridLayout, PopupFilter etc) + if (this.gridLayout) { + return; + } + var fltrow = void 0; + + var thead = (0, _dom.tag)(this.dom(), 'thead'); + if (thead.length > 0) { + fltrow = thead[0].insertRow(this.filtersRowIndex); + } else { + fltrow = this.dom().insertRow(this.filtersRowIndex); + } + + fltrow.className = this.fltsRowCssClass; + + if (this.isExternalFlt) { + fltrow.style.display = _const.NONE; + } + + this.emitter.emit('filters-row-inserted', this, fltrow); + return fltrow; + } + + /** + * Initialize filtersless table + */ + + }, { + key: '_initNoFilters', + value: function _initNoFilters() { + if (this.fltGrid) { + return; + } + this.refRow = this.refRow > 0 ? this.refRow - 1 : 0; + this.nbFilterableRows = this.getRowsNb(); + } + + /** + * Build input filter type + * @param {Number} colIndex Column index + * @param {String} cssClass Css class applied to filter + * @param {DOMElement} container Container DOM element + */ + + }, { + key: '_buildInputFilter', + value: function _buildInputFilter(colIndex, cssClass, container) { + var _this3 = this; + + var col = this.getFilterType(colIndex); + var externalFltTgtId = this.isExternalFlt ? this.externalFltTgtIds[colIndex] : null; + var inpType = col === _const.INPUT ? 'text' : 'hidden'; + var inp = (0, _dom.createElm)(_const.INPUT, ['id', this.buildFilterId(colIndex)], ['type', inpType], ['ct', colIndex]); + + if (inpType !== 'hidden' && this.watermark) { + inp.setAttribute('placeholder', this.isWatermarkArray ? this.watermark[colIndex] || '' : this.watermark); + } + inp.className = cssClass || this.fltCssClass; + (0, _event.addEvt)(inp, 'focus', function (evt) { + return _this3.onInpFocus(evt); + }); + + //filter is appended in custom element + if (externalFltTgtId) { + (0, _dom.elm)(externalFltTgtId).appendChild(inp); + } else { + container.appendChild(inp); + } + + this.fltIds.push(inp.id); + + (0, _event.addEvt)(inp, 'keypress', function (evt) { + return _this3.detectKey(evt); + }); + (0, _event.addEvt)(inp, 'keydown', function () { + return _this3.onKeyDown(); + }); + (0, _event.addEvt)(inp, 'keyup', function (evt) { + return _this3.onKeyUp(evt); + }); + (0, _event.addEvt)(inp, 'blur', function () { + return _this3.onInpBlur(); + }); + } + + /** + * Build submit button + * @param {Number} colIndex Column index + * @param {DOMElement} container Container DOM element + */ + + }, { + key: '_buildSubmitButton', + value: function _buildSubmitButton(colIndex, container) { + var _this4 = this; + + var externalFltTgtId = this.isExternalFlt ? this.externalFltTgtIds[colIndex] : null; + var btn = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnText]); + btn.className = this.btnCssClass; + + //filter is appended in custom element + if (externalFltTgtId) { + (0, _dom.elm)(externalFltTgtId).appendChild(btn); + } else { + container.appendChild(btn); + } + + (0, _event.addEvt)(btn, 'click', function () { + return _this4.filter(); + }); + } + + /** + * Istantiate the collection of features required by the + * configuration and add them to the features registry. A feature is + * described by a `class` and `name` fields and and optional `property` + * field: + * { + * class: AClass, + * name: 'aClass' + * } + * @param {Array} [features=[]] + * @private + */ + + }, { + key: 'instantiateFeatures', + value: function instantiateFeatures() { + var _this5 = this; + + var features = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + features.forEach(function (feature) { + // TODO: remove the property field. + // Due to naming convention inconsistencies, a `property` + // field is added to allow a conditional instanciation based + // on that property on TableFilter, if supplied. + feature.property = feature.property || feature.name; + if (_this5[feature.property] === true || feature.enforce === true) { + var Cls = feature.class, + name = feature.name; + + + _this5.Mod[name] = _this5.Mod[name] || new Cls(_this5); + } + }); + } + + /** + * Initialise the passed features collection. A feature is described by a + * `class` and `name` fields and and optional `property` field: + * { + * class: AClass, + * name: 'aClass' + * } + * @param {Array} [features=[]] + * @private + */ + + }, { + key: 'initFeatures', + value: function initFeatures() { + var _this6 = this; + + var features = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + features.forEach(function (feature) { + var property = feature.property, + name = feature.name; + + if (_this6[property] === true && _this6.Mod[name]) { + _this6.Mod[name].init(); + } + }); + } + + /** + * Return a feature instance for a given name + * @param {String} name Name of the feature + * @return {Object} + */ + + }, { + key: 'feature', + value: function feature(name) { + return this.Mod[name]; + } + + /** + * Initialise all the extensions defined in the configuration object + */ + + }, { + key: 'initExtensions', + value: function initExtensions() { + if (!this.hasExtensions) { + return; + } + + var exts = this.extensions; + // Set config's publicPath dynamically for Webpack... + __webpack_require__.p = this.basePath; + + this.emitter.emit('before-loading-extensions', this); + for (var i = 0, len = exts.length; i < len; i++) { + var ext = exts[i]; + this.loadExtension(ext); + } + this.emitter.emit('after-loading-extensions', this); + } + + /** + * Load an extension module + * @param {Object} ext Extension config object + */ + + }, { + key: 'loadExtension', + value: function loadExtension(ext) { + var _this7 = this; + + if (!ext || !ext.name || this.hasExtension(ext.name)) { + return; + } + + var name = ext.name; + var path = ext.path; + var modulePath = void 0; + + if (name && path) { + modulePath = ext.path + name; + } else { + name = name.replace('.js', ''); + modulePath = 'extensions/{}/{}'.replace(/{}/g, name); + } + + // Require pattern for Webpack + __webpack_require__.e/* require */(0).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(438)("./" + modulePath)]; (function (mod) { + /* eslint-disable */ + var inst = new mod.default(_this7, ext); + /* eslint-enable */ + inst.init(); + _this7.ExtRegistry[name] = inst; + }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe); + } + + /** + * Get an extension instance + * @param {String} name Name of the extension + * @return {Object} Extension instance + */ + + }, { + key: 'extension', + value: function extension(name) { + return this.ExtRegistry[name]; + } + + /** + * Check passed extension name exists + * @param {String} name Name of the extension + * @return {Boolean} + */ + + }, { + key: 'hasExtension', + value: function hasExtension(name) { + return !(0, _types.isEmpty)(this.ExtRegistry[name]); + } + + /** + * Register the passed extension instance with associated name + * @param {Object} inst Extension instance + * @param {String} name Name of the extension + */ + + }, { + key: 'registerExtension', + value: function registerExtension(inst, name) { + this.ExtRegistry[name] = inst; + } + + /** + * Destroy all the extensions store in extensions registry + */ + + }, { + key: 'destroyExtensions', + value: function destroyExtensions() { + var reg = this.ExtRegistry; + + Object.keys(reg).forEach(function (key) { + reg[key].destroy(); + reg[key] = undefined; + }); + } + + /** + * Load themes defined in the configuration object + */ + + }, { + key: 'loadThemes', + value: function loadThemes() { + if (!this.hasThemes) { + return; + } + + var themes = this.themes; + this.emitter.emit('before-loading-themes', this); + + //Default theme config + if (this.enableDefaultTheme) { + var defaultTheme = { name: 'default' }; + this.themes.push(defaultTheme); + } + if ((0, _types.isArray)(themes)) { + for (var i = 0, len = themes.length; i < len; i++) { + var theme = themes[i]; + var name = theme.name; + var path = theme.path; + var styleId = this.prfxTf + name; + if (name && !path) { + path = this.themesPath + name + '/' + name + '.css'; + } else if (!name && theme.path) { + name = 'theme{0}'.replace('{0}', i); + } + + if (!this.isImported(path, 'link')) { + this.import(styleId, path, null, 'link'); + } + } + } + + // Enable loader indicator + this.loader = true; + + this.emitter.emit('after-loading-themes', this); + } + + /** + * Return stylesheet DOM element for a given theme name + * @return {DOMElement} stylesheet element + */ + + }, { + key: 'getStylesheet', + value: function getStylesheet() { + var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default'; + + return (0, _dom.elm)(this.prfxTf + name); + } + + /** + * Destroy filter grid + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this8 = this; + + if (!this.initialized) { + return; + } + + var emitter = this.emitter; + + if (this.isExternalFlt && !this.popupFilters) { + this.removeExternalFlts(); + } + + this.removeToolbar(); + + if (this.hasExtensions) { + this.destroyExtensions(); + } + + this.validateAllRows(); + + // broadcast destroy event modules and extensions are subscribed to + emitter.emit('destroy', this); + + if (this.fltGrid && !this.gridLayout) { + this.dom().deleteRow(this.filtersRowIndex); + } + + // unsubscribe to events + if (this.hasVisibleRows) { + emitter.off(['after-filtering'], function () { + return _this8.enforceVisibility(); + }); + } + if (this.linkedFilters) { + emitter.off(['after-filtering'], function () { + return _this8.linkFilters(); + }); + } + this.emitter.off(['filter-focus'], function (tf, filter) { + return _this8.setActiveFilterId(filter.id); + }); + + (0, _dom.removeClass)(this.dom(), this.prfxTf); + (0, _dom.removeClass)(this.dom(), this.prfxResponsive); + + this.nbHiddenRows = 0; + this.validRowsIndex = []; + this.fltIds = []; + this.initialized = false; + } + + /** + * Generate container element for paging, reset button, rows counter etc. + */ + + }, { + key: 'setToolbar', + value: function setToolbar() { + if (this.infDiv) { + return; + } + + /*** container div ***/ + var infDiv = (0, _dom.createElm)('div'); + infDiv.className = this.infDivCssClass; + + //custom container + if (this.toolBarTgtId) { + (0, _dom.elm)(this.toolBarTgtId).appendChild(infDiv); + } + //grid-layout + else if (this.gridLayout) { + var gridLayout = this.Mod.gridLayout; + gridLayout.tblMainCont.appendChild(infDiv); + infDiv.className = gridLayout.infDivCssClass; + } + //default location: just above the table + else { + var cont = (0, _dom.createElm)('caption'); + cont.appendChild(infDiv); + this.dom().insertBefore(cont, this.dom().firstChild); + } + this.infDiv = infDiv; + + /*** left div containing rows # displayer ***/ + var lDiv = (0, _dom.createElm)('div'); + lDiv.className = this.lDivCssClass; + infDiv.appendChild(lDiv); + this.lDiv = lDiv; + + /*** right div containing reset button + + nb results per page select ***/ + var rDiv = (0, _dom.createElm)('div'); + rDiv.className = this.rDivCssClass; + infDiv.appendChild(rDiv); + this.rDiv = rDiv; + + /*** mid div containing paging elements ***/ + var mDiv = (0, _dom.createElm)('div'); + mDiv.className = this.mDivCssClass; + infDiv.appendChild(mDiv); + this.mDiv = mDiv; + + // emit help initialisation only if undefined + if ((0, _types.isUndef)(this.help)) { + // explicitily enable help to initialise feature by + // default, only if setting is undefined + this.Mod.help.enable(); + this.emitter.emit('init-help', this); + } + } + + /** + * Remove toolbar container element + */ + + }, { + key: 'removeToolbar', + value: function removeToolbar() { + if (!this.infDiv) { + return; + } + (0, _dom.removeElm)(this.infDiv); + this.infDiv = null; + + var tbl = this.dom(); + var captions = (0, _dom.tag)(tbl, 'caption'); + [].forEach.call(captions, function (elm) { + return (0, _dom.removeElm)(elm); + }); + } + + /** + * Remove all the external column filters + */ + + }, { + key: 'removeExternalFlts', + value: function removeExternalFlts() { + if (!this.isExternalFlt) { + return; + } + var ids = this.externalFltTgtIds, + len = ids.length; + for (var ct = 0; ct < len; ct++) { + var externalFltTgtId = ids[ct], + externalFlt = (0, _dom.elm)(externalFltTgtId); + if (externalFlt) { + externalFlt.innerHTML = ''; + } + } + } + + /** + * Check if given column implements a filter with custom options + * @param {Number} colIndex Column's index + * @return {Boolean} + */ + + }, { + key: 'isCustomOptions', + value: function isCustomOptions(colIndex) { + return this.hasCustomOptions && this.customOptions.cols.indexOf(colIndex) !== -1; + } + + /** + * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the + * custom options values and texts + * @param {Number} colIndex Column's index + * @return {Array} + */ + + }, { + key: 'getCustomOptions', + value: function getCustomOptions(colIndex) { + if ((0, _types.isEmpty)(colIndex) || !this.isCustomOptions(colIndex)) { + return; + } + + var customOptions = this.customOptions; + var cols = customOptions.cols; + var optTxt = [], + optArray = []; + var index = cols.indexOf(colIndex); + var slcValues = customOptions.values[index]; + var slcTexts = customOptions.texts[index]; + var slcSort = customOptions.sorts[index]; + + for (var r = 0, len = slcValues.length; r < len; r++) { + optArray.push(slcValues[r]); + if (slcTexts[r]) { + optTxt.push(slcTexts[r]); + } else { + optTxt.push(slcValues[r]); + } + } + if (slcSort) { + optArray.sort(); + optTxt.sort(); + } + return [optArray, optTxt]; + } + + /** + * Filter the table by retrieving the data from each cell in every single + * row and comparing it to the search term for current column. A row is + * hidden when all the search terms are not found in inspected row. + */ + + }, { + key: 'filter', + value: function filter() { + if (!this.fltGrid || !this.initialized) { + return; + } + //fire onbefore callback + this.onBeforeFilter(this); + this.emitter.emit('before-filtering', this); + + var row = this.dom().rows, + nbRows = this.getRowsNb(true), + hiddenRows = 0; + + this.validRowsIndex = []; + // search args re-init + var searchArgs = this.getFiltersValue(); + + for (var k = this.refRow; k < nbRows; k++) { + // already filtered rows display re-init + row[k].style.display = ''; + + var cells = row[k].cells; + var nchilds = cells.length; + + // checks if row has exact cell # + if (nchilds !== this.nbCells) { + continue; + } + + var occurence = [], + isRowValid = true, + + //only for single filter search + singleFltRowValid = false; + + // this loop retrieves cell data + for (var j = 0; j < nchilds; j++) { + //searched keyword + var sA = searchArgs[this.singleSearchFlt ? 0 : j]; + + if (sA === '') { + continue; + } + + var cellValue = (0, _string.matchCase)(this.getCellValue(cells[j]), this.caseSensitive); + + //multiple search parameter operator || + var sAOrSplit = sA.toString().split(this.orOperator), + + //multiple search || parameter boolean + hasMultiOrSA = sAOrSplit.length > 1, + + //multiple search parameter operator && + sAAndSplit = sA.toString().split(this.anOperator), + + //multiple search && parameter boolean + hasMultiAndSA = sAAndSplit.length > 1; + + //detect operators or array query + if ((0, _types.isArray)(sA) || hasMultiOrSA || hasMultiAndSA) { + var cS = void 0, + s = void 0, + occur = false; + if ((0, _types.isArray)(sA)) { + s = sA; + } else { + s = hasMultiOrSA ? sAOrSplit : sAAndSplit; + } + // isolate search term and check occurence in cell data + for (var w = 0, len = s.length; w < len; w++) { + cS = (0, _string.trim)(s[w]); + occur = this._testTerm(cS, cellValue, j); + + if (occur) { + this.emitter.emit('highlight-keyword', this, cells[j], cS); + } + if (hasMultiOrSA && occur || hasMultiAndSA && !occur) { + break; + } + if ((0, _types.isArray)(sA) && occur) { + break; + } + } + occurence[j] = occur; + } + //single search parameter + else { + occurence[j] = this._testTerm((0, _string.trim)(sA), cellValue, j); + if (occurence[j]) { + this.emitter.emit('highlight-keyword', this, cells[j], sA); + } + } //else single param + + if (!occurence[j]) { + isRowValid = false; + } + if (this.singleSearchFlt && occurence[j]) { + singleFltRowValid = true; + } + + this.emitter.emit('cell-processed', this, j, cells[j]); + } //for j + + if (this.singleSearchFlt && singleFltRowValid) { + isRowValid = true; + } + + this.validateRow(k, isRowValid); + if (!isRowValid) { + hiddenRows++; + } + + this.emitter.emit('row-processed', this, k, this.validRowsIndex.length, isRowValid); + } // for k + + this.nbHiddenRows = hiddenRows; + + //fire onafterfilter callback + this.onAfterFilter(this); + + this.emitter.emit('after-filtering', this, searchArgs); + } + + /** + * Test for a match of search term in cell data + * @param {String} term Search term + * @param {String} cellValue Cell data + * @param {Number} colIdx Column index + * @return {Boolean} + */ + + }, { + key: '_testTerm', + value: function _testTerm(term, cellValue, colIdx) { + var numData = void 0; + var decimal = this.getDecimal(colIdx); + var reLe = new RegExp(this.leOperator), + reGe = new RegExp(this.geOperator), + reL = new RegExp(this.lwOperator), + reG = new RegExp(this.grOperator), + reD = new RegExp(this.dfOperator), + reLk = new RegExp((0, _string.rgxEsc)(this.lkOperator)), + reEq = new RegExp(this.eqOperator), + reSt = new RegExp(this.stOperator), + reEn = new RegExp(this.enOperator), + + // re_an = new RegExp(this.anOperator), + // re_cr = new RegExp(this.curExp), + reEm = this.emOperator, + reNm = this.nmOperator, + reRe = new RegExp((0, _string.rgxEsc)(this.rgxOperator)); + + term = (0, _string.matchCase)(term, this.caseSensitive); + + var occurence = false; + + //Search arg operator tests + var hasLO = reL.test(term), + hasLE = reLe.test(term), + hasGR = reG.test(term), + hasGE = reGe.test(term), + hasDF = reD.test(term), + hasEQ = reEq.test(term), + hasLK = reLk.test(term), + + // hatermN = re_an.test(term), + hasST = reSt.test(term), + hasEN = reEn.test(term), + hasEM = reEm === term, + hasNM = reNm === term, + hasRE = reRe.test(term); + + // Check for dates or resolve date type + if (this.hasType(colIdx, [_const.DATE])) { + var dte1 = void 0, + dte2 = void 0; + + var dateType = this.Mod.dateType; + var isValidDate = dateType.isValid.bind(dateType); + var parseDate = dateType.parse.bind(dateType); + var locale = dateType.getLocale(colIdx); + + // Search arg dates tests + var isLDate = hasLO && isValidDate(term.replace(reL, ''), locale); + var isLEDate = hasLE && isValidDate(term.replace(reLe, ''), locale); + var isGDate = hasGR && isValidDate(term.replace(reG, ''), locale); + var isGEDate = hasGE && isValidDate(term.replace(reGe, ''), locale); + var isDFDate = hasDF && isValidDate(term.replace(reD, ''), locale); + var isEQDate = hasEQ && isValidDate(term.replace(reEq, ''), locale); + + dte1 = parseDate(cellValue, locale); + + // lower equal date + if (isLEDate) { + dte2 = parseDate(term.replace(reLe, ''), locale); + occurence = dte1 <= dte2; + } + // lower date + else if (isLDate) { + dte2 = parseDate(term.replace(reL, ''), locale); + occurence = dte1 < dte2; + } + // greater equal date + else if (isGEDate) { + dte2 = parseDate(term.replace(reGe, ''), locale); + occurence = dte1 >= dte2; + } + // greater date + else if (isGDate) { + dte2 = parseDate(term.replace(reG, ''), locale); + occurence = dte1 > dte2; + } + // different date + else if (isDFDate) { + dte2 = parseDate(term.replace(reD, ''), locale); + occurence = dte1.toString() !== dte2.toString(); + } + // equal date + else if (isEQDate) { + dte2 = parseDate(term.replace(reEq, ''), locale); + occurence = dte1.toString() === dte2.toString(); + } + // searched keyword with * operator doesn't have to be a date + else if (reLk.test(term)) { + // like date + occurence = (0, _string.contains)(term.replace(reLk, ''), cellValue, false, this.caseSensitive); + } else if (isValidDate(term)) { + dte2 = parseDate(term, locale); + occurence = dte1.toString() === dte2.toString(); + } + //empty + else if (hasEM) { + occurence = (0, _string.isEmpty)(cellValue); + } + //non-empty + else if (hasNM) { + occurence = !(0, _string.isEmpty)(cellValue); + } else { + occurence = (0, _string.contains)(term, cellValue, this.isExactMatch(colIdx), this.caseSensitive); + } + } else { + // Convert to number anyways to auto-resolve type in case not + // defined by configuration + numData = Number(cellValue) || (0, _number.parse)(cellValue, decimal); + + // first checks if there is any operator (<,>,<=,>=,!,*,=,{,}, + // rgx:) + // lower equal + if (hasLE) { + occurence = numData <= (0, _number.parse)(term.replace(reLe, ''), decimal); + } + //greater equal + else if (hasGE) { + occurence = numData >= (0, _number.parse)(term.replace(reGe, ''), decimal); + } + //lower + else if (hasLO) { + occurence = numData < (0, _number.parse)(term.replace(reL, ''), decimal); + } + //greater + else if (hasGR) { + occurence = numData > (0, _number.parse)(term.replace(reG, ''), decimal); + } + //different + else if (hasDF) { + occurence = (0, _string.contains)(term.replace(reD, ''), cellValue, false, this.caseSensitive) ? false : true; + } + //like + else if (hasLK) { + occurence = (0, _string.contains)(term.replace(reLk, ''), cellValue, false, this.caseSensitive); + } + //equal + else if (hasEQ) { + occurence = (0, _string.contains)(term.replace(reEq, ''), cellValue, true, this.caseSensitive); + } + //starts with + else if (hasST) { + occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ? true : false; + } + //ends with + else if (hasEN) { + var searchArg = term.replace(reEn, ''); + occurence = cellValue.lastIndexOf(searchArg, cellValue.length - 1) === cellValue.length - 1 - (searchArg.length - 1) && cellValue.lastIndexOf(searchArg, cellValue.length - 1) > -1 ? true : false; + } + //empty + else if (hasEM) { + occurence = (0, _string.isEmpty)(cellValue); + } + //non-empty + else if (hasNM) { + occurence = !(0, _string.isEmpty)(cellValue); + } + //regexp + else if (hasRE) { + //in case regexp throws + try { + //operator is removed + var srchArg = term.replace(reRe, ''); + var rgx = new RegExp(srchArg); + occurence = rgx.test(cellValue); + } catch (ex) { + occurence = false; + } + } else { + // If numeric type data, perform a strict equality test and + // fallback to unformatted number string comparison + if (numData && this.hasType(colIdx, [_const.NUMBER, _const.FORMATTED_NUMBER]) && !this.singleSearchFlt) { + // parseNb can return 0 for strings which are not + // formatted numbers, in that case return the original + // string. TODO: handle this in parseNb + term = (0, _number.parse)(term, decimal) || term; + occurence = numData === term || (0, _string.contains)(term.toString(), numData.toString(), this.isExactMatch(colIdx), this.caseSensitive); + } else { + // Finally test search term is contained in cell data + occurence = (0, _string.contains)(term, cellValue, this.isExactMatch(colIdx), this.caseSensitive, this.ignoresDiacritics(colIdx)); + } + } + } //else + + return occurence; + } + + /** + * Return the data of a specified column + * @param {Number} colIndex Column index + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Arrat} [exclude=[]] List of row indexes to be excluded + * @return Flat list of data for a column + */ + + }, { + key: 'getColumnData', + value: function getColumnData(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getColValues(colIndex, includeHeaders, true, exclude); + } + + /** + * Return the values of a specified column + * @param {Number} colIndex Column index + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Arrat} [exclude=[]] List of row indexes to be excluded + * @return Flat list of values for a column + */ + + }, { + key: 'getColumnValues', + value: function getColumnValues(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getColValues(colIndex, includeHeaders, false, exclude); + } + + /** + * Return the data of a specified column + * @param {Number} colIndex Column index + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [typed=false] Return a typed value + * @param {Array} [exclude=[]] List of row indexes to be excluded + * @return {Array} Flat list of data for a column + * @private + */ + + }, { + key: 'getColValues', + value: function getColValues(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var exclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; + + var row = this.dom().rows; + var nbRows = this.getRowsNb(true); + var colValues = []; + var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this); + + if (includeHeaders) { + colValues.push(this.getHeadersText()[colIndex]); + } + + for (var i = this.refRow; i < nbRows; i++) { + var isExludedRow = false; + // checks if current row index appears in exclude array + if (exclude.length > 0) { + isExludedRow = exclude.indexOf(i) !== -1; + } + var cell = row[i].cells, + nchilds = cell.length; + + // checks if row has exact cell # and is not excluded + if (nchilds === this.nbCells && !isExludedRow) { + // this loop retrieves cell data + for (var j = 0; j < nchilds; j++) { + if (j !== colIndex) { + continue; + } + var data = getContent(cell[j]); + colValues.push(data); + } + } + } + return colValues; + } + + /** + * Return the filter's value of a specified column + * @param {Number} index Column index + * @return {String} Filter value + */ + + }, { + key: 'getFilterValue', + value: function getFilterValue(index) { + if (!this.fltGrid) { + return; + } + var fltValue = ''; + var flt = this.getFilterElement(index); + if (!flt) { + return fltValue; + } + + var fltColType = this.getFilterType(index); + if (fltColType !== _const.MULTIPLE && fltColType !== _const.CHECKLIST) { + fltValue = flt.value; + } + //mutiple select + else if (fltColType === _const.MULTIPLE) { + fltValue = this.feature('dropdown').getValues(index); + } + //checklist + else if (fltColType === _const.CHECKLIST) { + fltValue = this.feature('checkList').getValues(index); + } + //return an empty string if collection is empty or contains a single + //empty string + if ((0, _types.isArray)(fltValue) && fltValue.length === 0 || fltValue.length === 1 && fltValue[0] === '') { + fltValue = ''; + } + + return fltValue; + } + + /** + * Return the filters' values + * @return {Array} List of filters' values + */ + + }, { + key: 'getFiltersValue', + value: function getFiltersValue() { + if (!this.fltGrid) { + return; + } + var searchArgs = []; + for (var i = 0, len = this.fltIds.length; i < len; i++) { + var fltValue = this.getFilterValue(i); + if ((0, _types.isArray)(fltValue)) { + searchArgs.push(fltValue); + } else { + searchArgs.push((0, _string.trim)(fltValue)); + } + } + return searchArgs; + } + + /** + * Return the ID of a specified column's filter + * @param {Number} index Column's index + * @return {String} ID of the filter element + */ + + }, { + key: 'getFilterId', + value: function getFilterId(index) { + if (!this.fltGrid) { + return; + } + return this.fltIds[index]; + } + + /** + * Return the list of ids of filters matching a specified type. + * Note: hidden filters are also returned + * + * @param {String} type Filter type string ('input', 'select', 'multiple', + * 'checklist') + * @param {Boolean} bool If true returns columns indexes instead of IDs + * @return {[type]} List of element IDs or column indexes + */ + + }, { + key: 'getFiltersByType', + value: function getFiltersByType(type, bool) { + if (!this.fltGrid) { + return; + } + var arr = []; + for (var i = 0, len = this.fltIds.length; i < len; i++) { + var fltType = this.getFilterType(i); + if (fltType === type.toLowerCase()) { + var a = bool ? i : this.fltIds[i]; + arr.push(a); + } + } + return arr; + } + + /** + * Return the filter's DOM element for a given column + * @param {Number} index Column's index + * @return {DOMElement} + */ + + }, { + key: 'getFilterElement', + value: function getFilterElement(index) { + var fltId = this.fltIds[index]; + return (0, _dom.elm)(fltId); + } + + /** + * Return the number of cells for a given row index + * @param {Number} rowIndex Index of the row + * @return {Number} Number of cells + */ + + }, { + key: 'getCellsNb', + value: function getCellsNb() { + var rowIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + + var tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0]; + return tr ? tr.cells.length : 0; + } + + /** + * Return the number of filterable rows starting from reference row if + * defined + * @param {Boolean} includeHeaders Include the headers row + * @return {Number} Number of filterable rows + */ + + }, { + key: 'getRowsNb', + value: function getRowsNb(includeHeaders) { + var s = (0, _types.isUndef)(this.refRow) ? 0 : this.refRow; + var ntrs = this.dom().rows.length; + if (includeHeaders) { + s = 0; + } + return parseInt(ntrs - s, 10); + } + + /** + * Return the text content of a given cell + * @param {DOMElement} Cell's DOM element + * @return {String} + */ + + }, { + key: 'getCellValue', + value: function getCellValue(cell) { + var idx = cell.cellIndex; + var cellParser = this.cellParser; + // Invoke cellParser for this column if any + if (cellParser.cols.indexOf(idx) !== -1) { + return cellParser.parse(this, cell, idx); + } else { + return (0, _dom.getText)(cell); + } + } + + /** + * Return the typed data of a given cell based on the column type definition + * @param {DOMElement} cell Cell's DOM element + * @return {String|Number|Date} + */ + + }, { + key: 'getCellData', + value: function getCellData(cell) { + var colIndex = cell.cellIndex; + var value = this.getCellValue(cell); + + if (this.hasType(colIndex, [_const.FORMATTED_NUMBER])) { + return (0, _number.parse)(value, this.getDecimal(colIndex)); + } else if (this.hasType(colIndex, [_const.NUMBER])) { + return Number(value) || (0, _number.parse)(value); + } else if (this.hasType(colIndex, [_const.DATE])) { + var dateType = this.Mod.dateType; + return dateType.parse(value, dateType.getLocale(colIndex)); + } + + return value; + } + + /** + * Return the table data based on its columns data type definitions + * with following structure: + * [ + * [rowIndex, [data0, data1...]], + * [rowIndex, [data0, data1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @return {Array} + */ + + }, { + key: 'getData', + value: function getData() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + return this.getTableData(includeHeaders, excludeHiddenCols, true); + } + + /** + * Return the table values with following structure: + * [ + * [rowIndex, [value0, value1...]], + * [rowIndex, [value0, value1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @return {Array} + */ + + }, { + key: 'getValues', + value: function getValues() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + return this.getTableData(includeHeaders, excludeHiddenCols, false); + } + + /** + * Return the table data with following structure: + * [ + * [rowIndex, [value0, value1...]], + * [rowIndex, [value0, value1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @param {Boolean} [typed=false] Return typed value + * @return {Array} + * @private + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getTableData', + value: function getTableData() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var rows = this.dom().rows; + var nbRows = this.getRowsNb(true); + var tblData = []; + var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this); + + if (includeHeaders) { + var headers = this.getHeadersText(excludeHiddenCols); + tblData.push([this.getHeadersRowIndex(), headers]); + } + for (var k = this.refRow; k < nbRows; k++) { + var rowData = [k, []]; + var cells = rows[k].cells; + for (var j = 0, len = cells.length; j < len; j++) { + if (excludeHiddenCols && this.hasExtension('colsVisibility')) { + if (this.extension('colsVisibility').isColHidden(j)) { + continue; + } + } + var cellValue = getContent(cells[j]); + rowData[1].push(cellValue); + } + tblData.push(rowData); + } + return tblData; + } + + /** + * Return the filtered table data based on its columns data type definitions + * with following structure: + * [ + * [rowIndex, [data0, data1...]], + * [rowIndex, [data0, data1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @return {Array} + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getFilteredData', + value: function getFilteredData() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + return this.filteredData(includeHeaders, excludeHiddenCols, true); + } + + /** + * Return the filtered table values with following structure: + * [ + * [rowIndex, [value0, value1...]], + * [rowIndex, [value0, value1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @return {Array} + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getFilteredValues', + value: function getFilteredValues() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + return this.filteredData(includeHeaders, excludeHiddenCols, false); + } + + /** + * Return the filtered data with following structure: + * [ + * [rowIndex, [value0, value1...]], + * [rowIndex, [value0, value1...]] + * ] + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns + * @param {Boolean} [typed=false] Return typed value + * @return {Array} + * @private + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'filteredData', + value: function filteredData() { + var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (this.validRowsIndex.length === 0) { + return []; + } + var rows = this.dom().rows, + filteredData = []; + var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this); + + if (includeHeaders) { + var headers = this.getHeadersText(excludeHiddenCols); + filteredData.push([this.getHeadersRowIndex(), headers]); + } + + var validRows = this.getValidRows(true); + for (var i = 0; i < validRows.length; i++) { + var rData = [this.validRowsIndex[i], []], + cells = rows[this.validRowsIndex[i]].cells; + for (var k = 0; k < cells.length; k++) { + if (excludeHiddenCols && this.hasExtension('colsVisibility')) { + if (this.extension('colsVisibility').isColHidden(k)) { + continue; + } + } + var cellValue = getContent(cells[k]); + rData[1].push(cellValue); + } + filteredData.push(rData); + } + return filteredData; + } + + /** + * Return the filtered data for a given column index + * @param {any} colIndex Colmun's index + * @param {boolean} [includeHeaders=false] Optional Include headers row + * @param {any} [exclude=[]] Optional List of row indexes to be excluded + * @return {Array} Flat list of typed values [data0, data1, data2...] + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getFilteredColumnData', + value: function getFilteredColumnData(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getFilteredDataCol(colIndex, includeHeaders, true, exclude, false); + } + + /** + * Return the filtered and visible data for a given column index + * @param {any} colIndex Colmun's index + * @param {boolean} [includeHeaders=false] Optional Include headers row + * @param {any} [exclude=[]] Optional List of row indexes to be excluded + * @return {Array} Flat list of typed values [data0, data1, data2...] + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getVisibleColumnData', + value: function getVisibleColumnData(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getFilteredDataCol(colIndex, includeHeaders, true, exclude, true); + } + + /** + * Return the filtered values for a given column index + * @param {any} colIndex Colmun's index + * @param {boolean} [includeHeaders=false] Optional Include headers row + * @param {any} [exclude=[]] Optional List of row indexes to be excluded + * @return {Array} Flat list of values ['value0', 'value1', 'value2'...] + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getFilteredColumnValues', + value: function getFilteredColumnValues(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getFilteredDataCol(colIndex, includeHeaders, false, exclude, false); + } + + /** + * Return the filtered and visible values for a given column index + * @param {any} colIndex Colmun's index + * @param {boolean} [includeHeaders=false] Optional Include headers row + * @param {any} [exclude=[]] Optional List of row indexes to be excluded + * @return {Array} Flat list of values ['value0', 'value1', 'value2'...] + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getVisibleColumnValues', + value: function getVisibleColumnValues(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + return this.getFilteredDataCol(colIndex, includeHeaders, false, exclude, true); + } + + /** + * Return the filtered data for a given column index + * @param {Number} colIndex Colmun's index + * @param {Boolean} [includeHeaders=false] Include headers row + * @param {Boolean} [typed=false] Return typed value + * @param {Array} [exclude=[]] List of row indexes to be excluded + * @param {Boolean} [visible=true] Return only filtered and visible data + * (relevant for paging) + * @return {Array} Flat list of values ['val0','val1','val2'...] + * @private + * + * TODO: provide an API returning data in JSON format + */ + + }, { + key: 'getFilteredDataCol', + value: function getFilteredDataCol(colIndex) { + var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var _this9 = this; + + var exclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; + var visible = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + + if ((0, _types.isUndef)(colIndex)) { + return []; + } + + var rows = this.dom().rows; + var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this); + + // ensure valid rows index do not contain excluded rows and row is + // displayed + var validRows = this.getValidRows(true).filter(function (rowIdx) { + return exclude.indexOf(rowIdx) === -1 && (visible ? _this9.getRowDisplay(rows[rowIdx]) !== 'none' : true); + }); + + // convert column value to expected type if necessary + var validColValues = validRows.map(function (rowIdx) { + return getContent(rows[rowIdx].cells[colIndex]); + }); + + if (includeHeaders) { + validColValues.unshift(this.getHeadersText()[colIndex]); + } + + return validColValues; + } + + /** + * Get the display value of a row + * @param {HTMLTableRowElement} row DOM element of the row + * @return {String} Usually 'none' or '' + */ + + }, { + key: 'getRowDisplay', + value: function getRowDisplay(row) { + return row.style.display; + } + + /** + * Validate/invalidate row by setting the 'validRow' attribute on the row + * @param {Number} rowIndex Index of the row + * @param {Boolean} isValid + */ + + }, { + key: 'validateRow', + value: function validateRow(rowIndex, isValid) { + var row = this.dom().rows[rowIndex]; + if (!row || typeof isValid !== 'boolean') { + return; + } + + // always visible rows are valid + if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) { + isValid = true; + } + + var displayFlag = isValid ? '' : _const.NONE, + validFlag = isValid ? 'true' : 'false'; + row.style.display = displayFlag; + + if (this.paging) { + row.setAttribute('validRow', validFlag); + } + + if (isValid) { + if (this.validRowsIndex.indexOf(rowIndex) === -1) { + this.validRowsIndex.push(rowIndex); + } + + this.onRowValidated(this, rowIndex); + + this.emitter.emit('row-validated', this, rowIndex); + } + } + + /** + * Validate all filterable rows + */ + + }, { + key: 'validateAllRows', + value: function validateAllRows() { + if (!this.initialized) { + return; + } + this.validRowsIndex = []; + for (var k = this.refRow; k < this.nbFilterableRows; k++) { + this.validateRow(k, true); + } + } + + /** + * Set search value to a given filter + * @param {Number} index Column's index + * @param {String or Array} query searcharg Search term + */ + + }, { + key: 'setFilterValue', + value: function setFilterValue(index) { + var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + + if (!this.fltGrid) { + return; + } + var slc = this.getFilterElement(index), + fltColType = this.getFilterType(index); + + if (fltColType !== _const.MULTIPLE && fltColType !== _const.CHECKLIST) { + if (this.loadFltOnDemand && !this.initialized) { + this.emitter.emit('build-select-filter', this, index, this.linkedFilters, this.isExternalFlt); + } + slc.value = query; + } + //multiple selects + else if (fltColType === _const.MULTIPLE) { + var values = (0, _types.isArray)(query) ? query : query.split(' ' + this.orOperator + ' '); + + if (this.loadFltOnDemand && !this.initialized) { + this.emitter.emit('build-select-filter', this, index, this.linkedFilters, this.isExternalFlt); + } + + this.emitter.emit('select-options', this, index, values); + } + //checklist + else if (fltColType === _const.CHECKLIST) { + var _values = []; + if (this.loadFltOnDemand && !this.initialized) { + this.emitter.emit('build-checklist-filter', this, index, this.linkedFilters); + } + if ((0, _types.isArray)(query)) { + _values = query; + } else { + query = (0, _string.matchCase)(query, this.caseSensitive); + _values = query.split(' ' + this.orOperator + ' '); + } + + this.emitter.emit('select-checklist-options', this, index, _values); + } + } + + /** + * Set them columns' widths as per configuration + * @param {Element} tbl DOM element + */ + + }, { + key: 'setColWidths', + value: function setColWidths(tbl) { + if (!this.hasColWidths) { + return; + } + tbl = tbl || this.dom(); + + var nbCols = this.nbCells; + var colWidths = this.colWidths; + var colTags = (0, _dom.tag)(tbl, 'col'); + var tblHasColTag = colTags.length > 0; + var frag = !tblHasColTag ? doc.createDocumentFragment() : null; + for (var k = 0; k < nbCols; k++) { + var col = void 0; + if (tblHasColTag) { + col = colTags[k]; + } else { + col = (0, _dom.createElm)('col'); + frag.appendChild(col); + } + col.style.width = colWidths[k]; + } + if (!tblHasColTag) { + tbl.insertBefore(frag, tbl.firstChild); + } + } + + /** + * Make defined rows always visible + */ + + }, { + key: 'enforceVisibility', + value: function enforceVisibility() { + if (!this.hasVisibleRows) { + return; + } + var nbRows = this.getRowsNb(true); + for (var i = 0, len = this.visibleRows.length; i < len; i++) { + var row = this.visibleRows[i]; + //row index cannot be > nrows + if (row <= nbRows) { + this.validateRow(row, true); + } + } + } + + /** + * Clear all the filters' values + */ + + }, { + key: 'clearFilters', + value: function clearFilters() { + if (!this.fltGrid) { + return; + } + + this.emitter.emit('before-clearing-filters', this); + this.onBeforeReset(this, this.getFiltersValue()); + + for (var i = 0, len = this.fltIds.length; i < len; i++) { + this.setFilterValue(i, ''); + } + + this.filter(); + + this.onAfterReset(this); + this.emitter.emit('after-clearing-filters', this); + } + + /** + * Return the ID of the current active filter + * @return {String} + */ + + }, { + key: 'getActiveFilterId', + value: function getActiveFilterId() { + return this.activeFilterId; + } + + /** + * Set the ID of the current active filter + * @param {String} filterId Element ID + */ + + }, { + key: 'setActiveFilterId', + value: function setActiveFilterId(filterId) { + this.activeFilterId = filterId; + } + + /** + * Return the column index for a given filter ID + * @param {string} [filterId=''] Filter ID + * @return {Number} Column index + */ + + }, { + key: 'getColumnIndexFromFilterId', + value: function getColumnIndexFromFilterId() { + var filterId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + + var idx = filterId.split('_')[0]; + idx = idx.split(this.prfxFlt)[1]; + return parseInt(idx, 10); + } + + /** + * Build filter element ID for a given column index + * @param {any} colIndex + * @return {String} Filter element ID string + * @private + */ + + }, { + key: 'buildFilterId', + value: function buildFilterId(colIndex) { + return '' + this.prfxFlt + colIndex + '_' + this.id; + } + + /** + * Make specified column's filter active + * @param colIndex Index of a column + */ + + }, { + key: 'activateFilter', + value: function activateFilter(colIndex) { + if ((0, _types.isUndef)(colIndex)) { + return; + } + this.setActiveFilterId(this.getFilterId(colIndex)); + } + + /** + * Refresh the filters subject to linking ('select', 'multiple', + * 'checklist' type) + */ + + }, { + key: 'linkFilters', + value: function linkFilters() { + if (!this.linkedFilters || !this.activeFilterId) { + return; + } + var slcA1 = this.getFiltersByType(_const.SELECT, true), + slcA2 = this.getFiltersByType(_const.MULTIPLE, true), + slcA3 = this.getFiltersByType(_const.CHECKLIST, true), + slcIndex = slcA1.concat(slcA2); + slcIndex = slcIndex.concat(slcA3); + + var activeIdx = this.getColumnIndexFromFilterId(this.activeFilterId); + + for (var i = 0, len = slcIndex.length; i < len; i++) { + var colIdx = slcIndex[i]; + var curSlc = (0, _dom.elm)(this.fltIds[colIdx]); + var slcSelectedValue = this.getFilterValue(colIdx); + + // Welcome to cyclomatic complexity hell :) + // TODO: simplify/refactor if statement + if (activeIdx !== colIdx || this.paging && slcA1.indexOf(colIdx) !== -1 && activeIdx === colIdx || !this.paging && (slcA3.indexOf(colIdx) !== -1 || slcA2.indexOf(colIdx) !== -1) || slcSelectedValue === this.getClearFilterText(colIdx)) { + + //1st option needs to be inserted + if (this.loadFltOnDemand) { + var opt0 = (0, _dom.createOpt)(this.getClearFilterText(colIdx), ''); + curSlc.innerHTML = ''; + curSlc.appendChild(opt0); + } + + if (slcA3.indexOf(colIdx) !== -1) { + this.emitter.emit('build-checklist-filter', this, colIdx, true); + } else { + this.emitter.emit('build-select-filter', this, colIdx, true); + } + + this.setFilterValue(colIdx, slcSelectedValue); + } + } + } + + /** + * Determine if passed filter column implements exact query match + * @param {Number} colIndex Column index + * @return {Boolean} + */ + + }, { + key: 'isExactMatch', + value: function isExactMatch(colIndex) { + var fltType = this.getFilterType(colIndex); + return this.exactMatchByCol[colIndex] || this.exactMatch || fltType !== _const.INPUT; + } + + /** + * Check if passed row is valid + * @param {Number} rowIndex Row index + * @return {Boolean} + */ + + }, { + key: 'isRowValid', + value: function isRowValid(rowIndex) { + return this.getValidRows().indexOf(rowIndex) !== -1; + } + + /** + * Check if passed row is visible + * @param {Number} rowIndex Row index + * @return {Boolean} + */ + + }, { + key: 'isRowDisplayed', + value: function isRowDisplayed(rowIndex) { + var row = this.dom().rows[rowIndex]; + return this.getRowDisplay(row) === ''; + } + + /** + * Check if specified column filter ignores diacritics. + * Note this is only applicable to input filter types. + * @param {Number} colIndex Column index + * @return {Boolean} + */ + + }, { + key: 'ignoresDiacritics', + value: function ignoresDiacritics(colIndex) { + var ignoreDiac = this.ignoreDiacritics; + if ((0, _types.isArray)(ignoreDiac)) { + return ignoreDiac[colIndex]; + } + return Boolean(ignoreDiac); + } + + /** + * Return clear all text for specified filter column + * @param {Number} colIndex Column index + * @return {String} + */ + + }, { + key: 'getClearFilterText', + value: function getClearFilterText(colIndex) { + var clearText = this.clearFilterText; + if ((0, _types.isArray)(clearText)) { + return clearText[colIndex]; + } + return clearText; + } + + /** + * Check if passed script or stylesheet is already imported + * @param {String} filePath Ressource path + * @param {String} type Possible values: 'script' or 'link' + * @return {Boolean} + */ + + }, { + key: 'isImported', + value: function isImported(filePath) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'script'; + + var imported = false, + attr = type === 'script' ? 'src' : 'href', + files = (0, _dom.tag)(doc, type); + for (var i = 0, len = files.length; i < len; i++) { + if ((0, _types.isUndef)(files[i][attr])) { + continue; + } + if (files[i][attr].match(filePath)) { + imported = true; + break; + } + } + return imported; + } + + /** + * Import script or stylesheet + * @param {String} fileId Ressource ID + * @param {String} filePath Ressource path + * @param {Function} callback Callback + * @param {String} type Possible values: 'script' or 'link' + */ + + }, { + key: 'import', + value: function _import(fileId, filePath, callback) { + var _this10 = this; + + var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'script'; + + if (this.isImported(filePath, type)) { + return; + } + var o = this, + isLoaded = false, + file = void 0, + head = (0, _dom.tag)(doc, 'head')[0]; + + if (type.toLowerCase() === 'link') { + file = (0, _dom.createElm)('link', ['id', fileId], ['type', 'text/css'], ['rel', 'stylesheet'], ['href', filePath]); + } else { + file = (0, _dom.createElm)('script', ['id', fileId], ['type', 'text/javascript'], ['src', filePath]); + } + + //Browser <> IE onload event works only for scripts, not for stylesheets + file.onload = file.onreadystatechange = function () { + if (!isLoaded && (!_this10.readyState || _this10.readyState === 'loaded' || _this10.readyState === 'complete')) { + isLoaded = true; + if (typeof callback === 'function') { + callback.call(null, o); + } + } + }; + file.onerror = function () { + throw new Error('TableFilter could not load: ' + filePath); + }; + head.appendChild(file); + } + + /** + * Check if table has filters grid + * @return {Boolean} + */ + + }, { + key: 'isInitialized', + value: function isInitialized() { + return this.initialized; + } + + /** + * Get list of filter IDs + * @return {Array} List of filters ids + */ + + }, { + key: 'getFiltersId', + value: function getFiltersId() { + return this.fltIds || []; + } + + /** + * Get filtered (valid) rows indexes + * @param {Boolean} reCalc Force calculation of filtered rows list + * @return {Array} List of row indexes + */ + + }, { + key: 'getValidRows', + value: function getValidRows(reCalc) { + if (!reCalc) { + return this.validRowsIndex; + } + + var nbRows = this.getRowsNb(true); + this.validRowsIndex = []; + for (var k = this.refRow; k < nbRows; k++) { + var r = this.dom().rows[k]; + if (!this.paging) { + if (this.getRowDisplay(r) !== _const.NONE) { + this.validRowsIndex.push(r.rowIndex); + } + } else { + if (r.getAttribute('validRow') === 'true' || r.getAttribute('validRow') === null) { + this.validRowsIndex.push(r.rowIndex); + } + } + } + return this.validRowsIndex; + } + + /** + * Get the index of the row containing the filters + * @return {Number} + */ + + }, { + key: 'getFiltersRowIndex', + value: function getFiltersRowIndex() { + return this.filtersRowIndex; + } + + /** + * Get the index of the headers row + * @return {Number} + */ + + }, { + key: 'getHeadersRowIndex', + value: function getHeadersRowIndex() { + return this.headersRow; + } + + /** + * Get the row index from where the filtering process start (1st filterable + * row) + * @return {Number} + */ + + }, { + key: 'getStartRowIndex', + value: function getStartRowIndex() { + return this.refRow; + } + + /** + * Get the index of the last row + * @return {Number} + */ + + }, { + key: 'getLastRowIndex', + value: function getLastRowIndex() { + var nbRows = this.getRowsNb(true); + return nbRows - 1; + } + + /** + * Determine whether the specified column has one of the passed types + * @param {Number} colIndex Column index + * @param {Array} [types=[]] List of column types + * @return {Boolean} + */ + + }, { + key: 'hasType', + value: function hasType(colIndex) { + var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + if (this.colTypes.length === 0) { + return false; + } + var colType = this.colTypes[colIndex]; + if ((0, _types.isObj)(colType)) { + colType = colType.type; + } + return types.indexOf(colType) !== -1; + } + + /** + * Get the header DOM element for a given column index + * @param {Number} colIndex Column index + * @return {Element} + */ + + }, { + key: 'getHeaderElement', + value: function getHeaderElement(colIndex) { + var table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom(); + var tHead = (0, _dom.tag)(table, 'thead'); + var rowIdx = this.getHeadersRowIndex(); + var header = void 0; + if (tHead.length === 0) { + header = table.rows[rowIdx].cells[colIndex]; + } + if (tHead.length === 1) { + header = tHead[0].rows[rowIdx].cells[colIndex]; + } + return header; + } + + /** + * Return the list of headers' text + * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns + * @return {Array} list of headers' text + */ + + }, { + key: 'getHeadersText', + value: function getHeadersText() { + var excludeHiddenCols = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + var headers = []; + for (var j = 0; j < this.nbCells; j++) { + if (excludeHiddenCols && this.hasExtension('colsVisibility')) { + if (this.extension('colsVisibility').isColHidden(j)) { + continue; + } + } + var header = this.getHeaderElement(j); + var headerText = (0, _dom.getFirstTextNode)(header); + headers.push(headerText); + } + return headers; + } + + /** + * Return the filter type for a specified column + * @param {Number} colIndex Column's index + * @return {String} + */ + + }, { + key: 'getFilterType', + value: function getFilterType(colIndex) { + var colType = this.cfg['col_' + colIndex]; + return !colType ? _const.INPUT : colType.toLowerCase(); + } + + /** + * Get the total number of filterable rows + * @return {Number} + */ + + }, { + key: 'getFilterableRowsNb', + value: function getFilterableRowsNb() { + return this.getRowsNb(false); + } + + /** + * Return the total number of valid rows + * @param {Boolean} [reCalc=false] Forces calculation of filtered rows + * @return {Number} + */ + + }, { + key: 'getValidRowsNb', + value: function getValidRowsNb() { + var reCalc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + return this.getValidRows(reCalc).length; + } + + /** + * Return the working DOM element + * @return {HTMLTableElement} + */ + + }, { + key: 'dom', + value: function dom() { + return this.tbl; + } + + /** + * Return the decimal separator for supplied column as per column type + * configuration or global setting + * @param {Number} colIndex Column index + * @returns {String} '.' or ',' + */ + + }, { + key: 'getDecimal', + value: function getDecimal(colIndex) { + var decimal = this.decimalSeparator; + if (this.hasType(colIndex, [_const.FORMATTED_NUMBER])) { + var colType = this.colTypes[colIndex]; + if (colType.hasOwnProperty('decimal')) { + decimal = colType.decimal; + } + } + return decimal; + } + + /** + * Get the configuration object (literal object) + * @return {Object} + */ + + }, { + key: 'config', + value: function config() { + return this.cfg; + } + }]); + + return TableFilter; +}(); + +/***/ }), +/* 127 */ +/***/ (function(module, exports) { + +exports.remove = removeDiacritics; + +var replacementList = [ + { + base: ' ', + chars: "\u00A0", + }, { + base: '0', + chars: "\u07C0", + }, { + base: 'A', + chars: "\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F", + }, { + base: 'AA', + chars: "\uA732", + }, { + base: 'AE', + chars: "\u00C6\u01FC\u01E2", + }, { + base: 'AO', + chars: "\uA734", + }, { + base: 'AU', + chars: "\uA736", + }, { + base: 'AV', + chars: "\uA738\uA73A", + }, { + base: 'AY', + chars: "\uA73C", + }, { + base: 'B', + chars: "\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181", + }, { + base: 'C', + chars: "\u24b8\uff23\uA73E\u1E08\u0106\u0043\u0108\u010A\u010C\u00C7\u0187\u023B", + }, { + base: 'D', + chars: "\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779", + }, { + base: 'Dh', + chars: "\u00D0", + }, { + base: 'DZ', + chars: "\u01F1\u01C4", + }, { + base: 'Dz', + chars: "\u01F2\u01C5", + }, { + base: 'E', + chars: "\u025B\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07", + }, { + base: 'F', + chars: "\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B", + }, { + base: 'G', + chars: "\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262", + }, { + base: 'H', + chars: "\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D", + }, { + base: 'I', + chars: "\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197", + }, { + base: 'J', + chars: "\u24BF\uFF2A\u0134\u0248\u0237", + }, { + base: 'K', + chars: "\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2", + }, { + base: 'L', + chars: "\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780", + }, { + base: 'LJ', + chars: "\u01C7", + }, { + base: 'Lj', + chars: "\u01C8", + }, { + base: 'M', + chars: "\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB", + }, { + base: 'N', + chars: "\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E", + }, { + base: 'NJ', + chars: "\u01CA", + }, { + base: 'Nj', + chars: "\u01CB", + }, { + base: 'O', + chars: "\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C", + }, { + base: 'OE', + chars: "\u0152", + }, { + base: 'OI', + chars: "\u01A2", + }, { + base: 'OO', + chars: "\uA74E", + }, { + base: 'OU', + chars: "\u0222", + }, { + base: 'P', + chars: "\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754", + }, { + base: 'Q', + chars: "\u24C6\uFF31\uA756\uA758\u024A", + }, { + base: 'R', + chars: "\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782", + }, { + base: 'S', + chars: "\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784", + }, { + base: 'T', + chars: "\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786", + }, { + base: 'Th', + chars: "\u00DE", + }, { + base: 'TZ', + chars: "\uA728", + }, { + base: 'U', + chars: "\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244", + }, { + base: 'V', + chars: "\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245", + }, { + base: 'VY', + chars: "\uA760", + }, { + base: 'W', + chars: "\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72", + }, { + base: 'X', + chars: "\u24CD\uFF38\u1E8A\u1E8C", + }, { + base: 'Y', + chars: "\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE", + }, { + base: 'Z', + chars: "\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762", + }, { + base: 'a', + chars: "\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251", + }, { + base: 'aa', + chars: "\uA733", + }, { + base: 'ae', + chars: "\u00E6\u01FD\u01E3", + }, { + base: 'ao', + chars: "\uA735", + }, { + base: 'au', + chars: "\uA737", + }, { + base: 'av', + chars: "\uA739\uA73B", + }, { + base: 'ay', + chars: "\uA73D", + }, { + base: 'b', + chars: "\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182", + }, { + base: 'c', + chars: "\uFF43\u24D2\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184", + }, { + base: 'd', + chars: "\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA", + }, { + base: 'dh', + chars: "\u00F0", + }, { + base: 'dz', + chars: "\u01F3\u01C6", + }, { + base: 'e', + chars: "\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD", + }, { + base: 'f', + chars: "\u24D5\uFF46\u1E1F\u0192", + }, { + base: 'ff', + chars: "\uFB00", + }, { + base: 'fi', + chars: "\uFB01", + }, { + base: 'fl', + chars: "\uFB02", + }, { + base: 'ffi', + chars: "\uFB03", + }, { + base: 'ffl', + chars: "\uFB04", + }, { + base: 'g', + chars: "\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79", + }, { + base: 'h', + chars: "\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265", + }, { + base: 'hv', + chars: "\u0195", + }, { + base: 'i', + chars: "\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131", + }, { + base: 'j', + chars: "\u24D9\uFF4A\u0135\u01F0\u0249", + }, { + base: 'k', + chars: "\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3", + }, { + base: 'l', + chars: "\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D", + }, { + base: 'lj', + chars: "\u01C9", + }, { + base: 'm', + chars: "\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F", + }, { + base: 'n', + chars: "\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509", + }, { + base: 'nj', + chars: "\u01CC", + }, { + base: 'o', + chars: "\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\uA74B\uA74D\u0275\u0254\u1D11", + }, { + base: 'oe', + chars: "\u0153", + }, { + base: 'oi', + chars: "\u01A3", + }, { + base: 'oo', + chars: "\uA74F", + }, { + base: 'ou', + chars: "\u0223", + }, { + base: 'p', + chars: "\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1", + }, { + base: 'q', + chars: "\u24E0\uFF51\u024B\uA757\uA759", + }, { + base: 'r', + chars: "\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783", + }, { + base: 's', + chars: "\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282", + }, { + base: 'ss', + chars: "\xDF", + }, { + base: 't', + chars: "\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787", + }, { + base: 'th', + chars: "\u00FE", + }, { + base: 'tz', + chars: "\uA729", + }, { + base: 'u', + chars: "\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289", + }, { + base: 'v', + chars: "\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C", + }, { + base: 'vy', + chars: "\uA761", + }, { + base: 'w', + chars: "\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73", + }, { + base: 'x', + chars: "\u24E7\uFF58\u1E8B\u1E8D", + }, { + base: 'y', + chars: "\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF", + }, { + base: 'z', + chars: "\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763", + } +]; + +var diacriticsMap = {}; +for (var i = 0; i < replacementList.length; i += 1) { + var chars = replacementList[i].chars; + for (var j = 0; j < chars.length; j += 1) { + diacriticsMap[chars[j]] = replacementList[i].base; + } +} + +function removeDiacritics(str) { + return str.replace(/[^\u0000-\u007e]/g, function(c) { + return diacriticsMap[c] || c; + }); +} + +exports.replacementList = replacementList; +exports.diacriticsMap = diacriticsMap; + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function allCharsReg(src) { + return RegExp('[' + src + ']', 'g'); +} + +module.exports = allCharsReg; + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var forEach = __webpack_require__(26), + spaceSplit = __webpack_require__(43), + classChecks = __webpack_require__(3); + +var isString = classChecks.isString; + +function collectSimilarMethods(set, fn) { + var methods = {}; + if (isString(set)) { + set = spaceSplit(set); + } + forEach(set, function(el, i) { + fn(methods, el, i); + }); + return methods; +} + +module.exports = collectSimilarMethods; + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CommonChars = __webpack_require__(44); + +var HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA; + +function commaSplit(str) { + return str.split(HALF_WIDTH_COMMA); +} + +module.exports = commaSplit; + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var STRING_FORMAT_REG = __webpack_require__(155), + CommonChars = __webpack_require__(44), + memoizeFunction = __webpack_require__(145); + +var OPEN_BRACE = CommonChars.OPEN_BRACE, + CLOSE_BRACE = CommonChars.CLOSE_BRACE; + +function createFormatMatcher(bracketMatcher, percentMatcher, precheck) { + + var reg = STRING_FORMAT_REG; + var compileMemoized = memoizeFunction(compile); + + function getToken(format, match) { + var get, token, literal, fn; + var bKey = match[2]; + var pLit = match[3]; + var pKey = match[5]; + if (match[4] && percentMatcher) { + token = pKey; + get = percentMatcher; + } else if (bKey) { + token = bKey; + get = bracketMatcher; + } else if (pLit && percentMatcher) { + literal = pLit; + } else { + literal = match[1] || match[0]; + } + if (get) { + assertPassesPrecheck(precheck, bKey, pKey); + fn = function(obj, opt) { + return get(obj, token, opt); + }; + } + format.push(fn || getLiteral(literal)); + } + + function getSubstring(format, str, start, end) { + if (end > start) { + var sub = str.slice(start, end); + assertNoUnmatched(sub, OPEN_BRACE); + assertNoUnmatched(sub, CLOSE_BRACE); + format.push(function() { + return sub; + }); + } + } + + function getLiteral(str) { + return function() { + return str; + }; + } + + function assertPassesPrecheck(precheck, bt, pt) { + if (precheck && !precheck(bt, pt)) { + throw new TypeError('Invalid token '+ (bt || pt) +' in format string'); + } + } + + function assertNoUnmatched(str, chr) { + if (str.indexOf(chr) !== -1) { + throw new TypeError('Unmatched '+ chr +' in format string'); + } + } + + function compile(str) { + var format = [], lastIndex = 0, match; + reg.lastIndex = 0; + while(match = reg.exec(str)) { + getSubstring(format, str, lastIndex, match.index); + getToken(format, match); + lastIndex = reg.lastIndex; + } + getSubstring(format, str, lastIndex, str.length); + return format; + } + + return function(str, obj, opt) { + var format = compileMemoized(str), result = ''; + for (var i = 0; i < format.length; i++) { + result += format[i](obj, opt); + } + return result; + }; +} + +module.exports = createFormatMatcher; + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var setProperty = coreUtilityAliases.setProperty; + +function defineAccessor(namespace, name, fn) { + setProperty(namespace, name, fn); +} + +module.exports = defineAccessor; + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var simpleClone = __webpack_require__(42), + defineAccessor = __webpack_require__(132), + coreUtilityAliases = __webpack_require__(10); + +var forEachProperty = coreUtilityAliases.forEachProperty; + +function defineOptionsAccessor(namespace, defaults) { + var obj = simpleClone(defaults); + + function getOption(name) { + return obj[name]; + } + + function setOption(arg1, arg2) { + var options; + if (arguments.length === 1) { + options = arg1; + } else { + options = {}; + options[arg1] = arg2; + } + forEachProperty(options, function(val, name) { + if (val === null) { + val = defaults[name]; + } + obj[name] = val; + }); + } + + defineAccessor(namespace, 'getOption', getOption); + defineAccessor(namespace, 'setOption', setOption); + return getOption; +} + +module.exports = defineOptionsAccessor; + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3); + +var isString = classChecks.isString; + +function escapeRegExp(str) { + if (!isString(str)) str = String(str); + return str.replace(/([\\\/\'*+?|()\[\]{}.^$-])/g,'\\$1'); +} + +module.exports = escapeRegExp; + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function filter(arr, fn) { + var result = []; + for (var i = 0, len = arr.length; i < len; i++) { + var el = arr[i]; + if (i in arr && fn(el, i)) { + result.push(el); + } + } + return result; +} + +module.exports = filter; + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function getKeys(obj) { + return Object.keys(obj); +} + +module.exports = getKeys; + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function getOrdinalSuffix(num) { + if (num >= 11 && num <= 13) { + return 'th'; + } else { + switch(num % 10) { + case 1: return 'st'; + case 2: return 'nd'; + case 3: return 'rd'; + default: return 'th'; + } + } +} + +module.exports = getOrdinalSuffix; + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var hasOwn = coreUtilityAliases.hasOwn; + +function getOwnKey(obj, key) { + if (hasOwn(obj, key)) { + return key; + } +} + +module.exports = getOwnKey; + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isArrayIndex = __webpack_require__(142); + +function getSparseArrayIndexes(arr, fromIndex, loop, fromRight) { + var indexes = [], i; + for (i in arr) { + if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) { + indexes.push(+i); + } + } + indexes.sort(function(a, b) { + var aLoop = a > fromIndex; + var bLoop = b > fromIndex; + if (aLoop !== bLoop) { + return aLoop ? -1 : 1; + } + return a - b; + }); + return indexes; +} + +module.exports = getSparseArrayIndexes; + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var hasOwn = coreUtilityAliases.hasOwn; + +function hasOwnEnumeratedProperties(obj) { + // Plain objects are generally defined as having enumerated properties + // all their own, however in early IE environments without defineProperty, + // there may also be enumerated methods in the prototype chain, so check + // for both of these cases. + var objectProto = Object.prototype; + for (var key in obj) { + var val = obj[key]; + if (!hasOwn(obj, key) && val !== objectProto[key]) { + return false; + } + } + return true; +} + +module.exports = hasOwnEnumeratedProperties; + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var coreUtilityAliases = __webpack_require__(10); + +var hasOwn = coreUtilityAliases.hasOwn; + +function hasValidPlainObjectPrototype(obj) { + var hasToString = 'toString' in obj; + var hasConstructor = 'constructor' in obj; + // An object created with Object.create(null) has no methods in the + // prototype chain, so check if any are missing. The additional hasToString + // check is for false positives on some host objects in old IE which have + // toString but no constructor. If the object has an inherited constructor, + // then check if it is Object (the "isPrototypeOf" tapdance here is a more + // robust way of ensuring this if the global has been hijacked). Note that + // accessing the constructor directly (without "in" or "hasOwnProperty") + // will throw a permissions error in IE8 on cross-domain windows. + return (!hasConstructor && !hasToString) || + (hasConstructor && !hasOwn(obj, 'constructor') && + hasOwn(obj.constructor.prototype, 'isPrototypeOf')); +} + +module.exports = hasValidPlainObjectPrototype; + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function isArrayIndex(n) { + return n >>> 0 == n && n != 0xFFFFFFFF; +} + +module.exports = isArrayIndex; + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isClass = __webpack_require__(72), + isObjectType = __webpack_require__(53), + hasOwnEnumeratedProperties = __webpack_require__(140), + hasValidPlainObjectPrototype = __webpack_require__(141); + +function isPlainObject(obj, className) { + return isObjectType(obj) && + isClass(obj, 'Object', className) && + hasValidPlainObjectPrototype(obj) && + hasOwnEnumeratedProperties(obj); +} + +module.exports = isPlainObject; + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getSparseArrayIndexes = __webpack_require__(139); + +function iterateOverSparseArray(arr, fn, fromIndex, loop) { + var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index; + for (var i = 0, len = indexes.length; i < len; i++) { + index = indexes[i]; + fn.call(arr, arr[index], index, arr); + } + return arr; +} + +module.exports = iterateOverSparseArray; + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var INTERNAL_MEMOIZE_LIMIT = __webpack_require__(152), + coreUtilityAliases = __webpack_require__(10); + +var hasOwn = coreUtilityAliases.hasOwn; + +function memoizeFunction(fn) { + var memo = {}, counter = 0; + + return function(key) { + if (hasOwn(memo, key)) { + return memo[key]; + } + if (counter === INTERNAL_MEMOIZE_LIMIT) { + memo = {}; + counter = 0; + } + counter++; + return memo[key] = fn(key); + }; +} + +module.exports = memoizeFunction; + +/***/ }), +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CommonChars = __webpack_require__(44); + +var HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD; + +function periodSplit(str) { + return str.split(HALF_WIDTH_PERIOD); +} + +module.exports = periodSplit; + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var PRIVATE_PROP_PREFIX = __webpack_require__(154), + coreUtilityAliases = __webpack_require__(10); + +var setProperty = coreUtilityAliases.setProperty; + +function privatePropertyAccessor(key) { + var privateKey = PRIVATE_PROP_PREFIX + key; + return function(obj, val) { + if (arguments.length > 1) { + setProperty(obj, privateKey, val); + return obj; + } + return obj[privateKey]; + }; +} + +module.exports = privatePropertyAccessor; + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function repeatString(str, num) { + var result = ''; + str = str.toString(); + while (num > 0) { + if (num & 1) { + result += str; + } + if (num >>= 1) { + str += str; + } + } + return result; +} + +module.exports = repeatString; + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function setChainableConstructor(sugarNamespace, createFn) { + sugarNamespace.prototype.constructor = function() { + return createFn.apply(this, arguments); + }; +} + +module.exports = setChainableConstructor; + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function trim(str) { + return str.trim(); +} + +module.exports = trim; + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function wrapNamespace(method) { + return function(sugarNamespace, arg1, arg2) { + sugarNamespace[method](arg1, arg2); + }; +} + +module.exports = wrapNamespace; + +/***/ }), +/* 152 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = 1000; + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = 'Boolean Number String Date RegExp Function Array Error Set Map'; + +/***/ }), +/* 154 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = '_sugar_'; + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = /([{}])\1|\{([^}]*)\}|(%)%|(%(\w*))/g; + +/***/ }), +/* 156 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CommonChars = __webpack_require__(44), + chr = __webpack_require__(75), + allCharsReg = __webpack_require__(128); + +var HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO, + FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO, + HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD, + FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD, + HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA; + +var fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers; + +function buildFullWidthNumber() { + var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = ''; + fullWidthNumberMap = {}; + for (var i = 0, digit; i <= 9; i++) { + digit = chr(i + FULL_WIDTH_ZERO); + fwn += digit; + fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO); + } + fullWidthNumberMap[hwc] = ''; + fullWidthNumberMap[fwp] = hwp; + // Mapping this to itself to capture it easily + // in stringToNumber to detect decimals later. + fullWidthNumberMap[hwp] = hwp; + fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp); + fullWidthNumbers = fwn; +} + +buildFullWidthNumber(); + +module.exports = { + fullWidthNumberReg: fullWidthNumberReg, + fullWidthNumberMap: fullWidthNumberMap, + fullWidthNumbers: fullWidthNumbers +}; + +/***/ }), +/* 157 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var wrapNamespace = __webpack_require__(151); + +module.exports = { + alias: wrapNamespace('alias'), + defineStatic: wrapNamespace('defineStatic'), + defineInstance: wrapNamespace('defineInstance'), + defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'), + defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'), + defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'), + defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments') +}; + +/***/ }), +/* 158 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addDays; + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addHours; + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addMilliseconds; + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addMinutes; + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addMonths; + +/***/ }), +/* 163 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addSeconds; + +/***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addWeeks; + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.addYears; + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + advanceDateWithArgs = __webpack_require__(76); + +Sugar.Date.defineInstanceWithArguments({ + + 'advance': function(d, args) { + return advanceDateWithArgs(d, args, 1); + } + +}); + +module.exports = Sugar.Date.advance; + +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.beginningOfDay; + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + resetTime = __webpack_require__(92), + getWeekday = __webpack_require__(20), + setWeekday = __webpack_require__(24); + +Sugar.Date.defineInstance({ + + 'beginningOfISOWeek': function(date) { + var day = getWeekday(date); + if (day === 0) { + day = -6; + } else if (day !== 1) { + day = 1; + } + setWeekday(date, day); + return resetTime(date); + } + +}); + +module.exports = Sugar.Date.beginningOfISOWeek; + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.beginningOfMonth; + +/***/ }), +/* 170 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.beginningOfWeek; + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.beginningOfYear; + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var setDateChainableConstructor = __webpack_require__(226); + +setDateChainableConstructor(); + +/***/ }), +/* 173 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + cloneDate = __webpack_require__(33); + +Sugar.Date.defineInstance({ + + 'clone': function(date) { + return cloneDate(date); + } + +}); + +module.exports = Sugar.Date.clone; + +/***/ }), +/* 174 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDate = __webpack_require__(28); + +__webpack_require__(172); + +Sugar.Date.defineStatic({ + + 'create': function(d, options) { + return createDate(d, options); + } + +}); + +module.exports = Sugar.Date.create; + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.daysAgo; + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.daysFromNow; + +/***/ }), +/* 177 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + getDaysInMonth = __webpack_require__(86); + +Sugar.Date.defineInstance({ + + 'daysInMonth': function(date) { + return getDaysInMonth(date); + } + +}); + +module.exports = Sugar.Date.daysInMonth; + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.daysSince; + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.daysUntil; + +/***/ }), +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.endOfDay; + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + DateUnitIndexes = __webpack_require__(5), + getWeekday = __webpack_require__(20), + setWeekday = __webpack_require__(24), + moveToEndOfUnit = __webpack_require__(48); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX; + +Sugar.Date.defineInstance({ + + 'endOfISOWeek': function(date) { + if (getWeekday(date) !== 0) { + setWeekday(date, 7); + } + return moveToEndOfUnit(date, DAY_INDEX); + } + +}); + +module.exports = Sugar.Date.endOfISOWeek; + +/***/ }), +/* 182 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.endOfMonth; + +/***/ }), +/* 183 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.endOfWeek; + +/***/ }), +/* 184 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.endOfYear; + +/***/ }), +/* 185 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + dateFormat = __webpack_require__(81); + +Sugar.Date.defineInstance({ + + 'format': function(date, f, localeCode) { + return dateFormat(date, f, localeCode); + } + +}); + +module.exports = Sugar.Date.format; + +/***/ }), +/* 186 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDateWithContext = __webpack_require__(80); + +Sugar.Date.defineInstance({ + + 'get': function(date, d, options) { + return createDateWithContext(date, d, options); + } + +}); + +module.exports = Sugar.Date.get; + +/***/ }), +/* 187 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8), + getKeys = __webpack_require__(136); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'getAllLocaleCodes': function() { + return getKeys(localeManager.getAll()); + } + +}); + +module.exports = Sugar.Date.getAllLocaleCodes; + +/***/ }), +/* 188 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'getAllLocales': function() { + return localeManager.getAll(); + } + +}); + +module.exports = Sugar.Date.getAllLocales; + +/***/ }), +/* 189 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + getWeekNumber = __webpack_require__(60); + +Sugar.Date.defineInstance({ + + 'getISOWeek': function(date) { + return getWeekNumber(date, true); + } + +}); + +module.exports = Sugar.Date.getISOWeek; + +/***/ }), +/* 190 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'getLocale': function(code) { + return localeManager.get(code, !code); + } + +}); + +module.exports = Sugar.Date.getLocale; + +/***/ }), +/* 191 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + _dateOptions = __webpack_require__(64); + +module.exports = Sugar.Date.getOption; + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + getUTCOffset = __webpack_require__(89); + +Sugar.Date.defineInstance({ + + 'getUTCOffset': function(date, iso) { + return getUTCOffset(date, iso); + } + +}); + +module.exports = Sugar.Date.getUTCOffset; + +/***/ }), +/* 193 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +Sugar.Date.defineInstance({ + + 'getUTCWeekday': function(date) { + return date.getUTCDay(); + } + +}); + +module.exports = Sugar.Date.getUTCWeekday; + +/***/ }), +/* 194 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + getWeekday = __webpack_require__(20); + +Sugar.Date.defineInstance({ + + 'getWeekday': function(date) { + return getWeekday(date); + } + +}); + +module.exports = Sugar.Date.getWeekday; + +/***/ }), +/* 195 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.hoursAgo; + +/***/ }), +/* 196 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.hoursFromNow; + +/***/ }), +/* 197 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.hoursSince; + +/***/ }), +/* 198 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.hoursUntil; + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// Static Methods +__webpack_require__(4); +__webpack_require__(174); +__webpack_require__(187); +__webpack_require__(188); +__webpack_require__(190); +__webpack_require__(275); +__webpack_require__(284); + +// Instance Methods +__webpack_require__(324); +__webpack_require__(325); +__webpack_require__(326); +__webpack_require__(327); +__webpack_require__(328); +__webpack_require__(329); +__webpack_require__(330); +__webpack_require__(331); +__webpack_require__(332); +__webpack_require__(333); +__webpack_require__(334); +__webpack_require__(335); +__webpack_require__(336); +__webpack_require__(337); +__webpack_require__(338); +__webpack_require__(339); +__webpack_require__(340); +__webpack_require__(341); +__webpack_require__(342); +__webpack_require__(343); +__webpack_require__(344); +__webpack_require__(345); +__webpack_require__(346); +__webpack_require__(347); +__webpack_require__(348); +__webpack_require__(349); +__webpack_require__(350); +__webpack_require__(351); +__webpack_require__(352); +__webpack_require__(353); +__webpack_require__(354); +__webpack_require__(355); +__webpack_require__(356); +__webpack_require__(357); +__webpack_require__(358); +__webpack_require__(359); +__webpack_require__(360); +__webpack_require__(361); +__webpack_require__(362); +__webpack_require__(363); +__webpack_require__(364); +__webpack_require__(365); +__webpack_require__(366); +__webpack_require__(367); +__webpack_require__(368); +__webpack_require__(369); +__webpack_require__(370); +__webpack_require__(371); +__webpack_require__(372); +__webpack_require__(373); +__webpack_require__(374); +__webpack_require__(375); +__webpack_require__(376); +__webpack_require__(377); +__webpack_require__(378); +__webpack_require__(379); +__webpack_require__(380); +__webpack_require__(381); +__webpack_require__(382); +__webpack_require__(383); +__webpack_require__(384); +__webpack_require__(385); +__webpack_require__(386); +__webpack_require__(387); +__webpack_require__(388); +__webpack_require__(389); +__webpack_require__(390); +__webpack_require__(391); +__webpack_require__(392); +__webpack_require__(393); +__webpack_require__(394); +__webpack_require__(395); +__webpack_require__(396); +__webpack_require__(397); +__webpack_require__(398); +__webpack_require__(399); +__webpack_require__(400); +__webpack_require__(401); +__webpack_require__(402); +__webpack_require__(403); +__webpack_require__(404); +__webpack_require__(158); +__webpack_require__(159); +__webpack_require__(160); +__webpack_require__(161); +__webpack_require__(162); +__webpack_require__(163); +__webpack_require__(164); +__webpack_require__(165); +__webpack_require__(166); +__webpack_require__(167); +__webpack_require__(168); +__webpack_require__(169); +__webpack_require__(170); +__webpack_require__(171); +__webpack_require__(173); +__webpack_require__(175); +__webpack_require__(176); +__webpack_require__(177); +__webpack_require__(178); +__webpack_require__(179); +__webpack_require__(180); +__webpack_require__(181); +__webpack_require__(182); +__webpack_require__(183); +__webpack_require__(184); +__webpack_require__(185); +__webpack_require__(186); +__webpack_require__(189); +__webpack_require__(192); +__webpack_require__(193); +__webpack_require__(194); +__webpack_require__(195); +__webpack_require__(196); +__webpack_require__(197); +__webpack_require__(198); +__webpack_require__(229); +__webpack_require__(230); +__webpack_require__(231); +__webpack_require__(232); +__webpack_require__(233); +__webpack_require__(234); +__webpack_require__(235); +__webpack_require__(236); +__webpack_require__(237); +__webpack_require__(238); +__webpack_require__(239); +__webpack_require__(240); +__webpack_require__(241); +__webpack_require__(242); +__webpack_require__(243); +__webpack_require__(244); +__webpack_require__(245); +__webpack_require__(246); +__webpack_require__(247); +__webpack_require__(248); +__webpack_require__(249); +__webpack_require__(250); +__webpack_require__(251); +__webpack_require__(252); +__webpack_require__(253); +__webpack_require__(254); +__webpack_require__(255); +__webpack_require__(256); +__webpack_require__(257); +__webpack_require__(258); +__webpack_require__(259); +__webpack_require__(260); +__webpack_require__(261); +__webpack_require__(262); +__webpack_require__(263); +__webpack_require__(264); +__webpack_require__(265); +__webpack_require__(266); +__webpack_require__(267); +__webpack_require__(268); +__webpack_require__(269); +__webpack_require__(270); +__webpack_require__(271); +__webpack_require__(273); +__webpack_require__(274); +__webpack_require__(276); +__webpack_require__(277); +__webpack_require__(278); +__webpack_require__(279); +__webpack_require__(280); +__webpack_require__(281); +__webpack_require__(282); +__webpack_require__(283); +__webpack_require__(286); +__webpack_require__(287); +__webpack_require__(298); +__webpack_require__(299); +__webpack_require__(300); +__webpack_require__(301); +__webpack_require__(302); +__webpack_require__(303); +__webpack_require__(304); +__webpack_require__(305); + +// Accessors +__webpack_require__(191); +__webpack_require__(285); + +module.exports = __webpack_require__(0); + +/***/ }), +/* 200 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var map = __webpack_require__(73), + escapeRegExp = __webpack_require__(134); + +function arrayToRegAlternates(arr) { + var joined = arr.join(''); + if (!arr || !arr.length) { + return ''; + } + if (joined.length === arr.length) { + return '[' + joined + ']'; + } + // map handles sparse arrays so no need to compact the array here. + return map(arr, escapeRegExp).join('|'); +} + +module.exports = arrayToRegAlternates; + +/***/ }), +/* 201 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + DateUnitIndexes = __webpack_require__(5), + forEach = __webpack_require__(26), + compareDate = __webpack_require__(79), + advanceDate = __webpack_require__(38), + moveToEndOfUnit = __webpack_require__(48), + simpleCapitalize = __webpack_require__(55), + namespaceAliases = __webpack_require__(22), + defineInstanceSimilar = __webpack_require__(41), + moveToBeginningOfUnit = __webpack_require__(47), + createDateWithContext = __webpack_require__(80), + getTimeDistanceForUnit = __webpack_require__(59); + +var sugarDate = namespaceAliases.sugarDate, + HOURS_INDEX = DateUnitIndexes.HOURS_INDEX, + DAY_INDEX = DateUnitIndexes.DAY_INDEX; + +function buildDateUnitMethods() { + + defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) { + var name = unit.name, caps = simpleCapitalize(name); + + if (index > DAY_INDEX) { + forEach(['Last','This','Next'], function(shift) { + methods['is' + shift + caps] = function(d, localeCode) { + return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' }); + }; + }); + } + if (index > HOURS_INDEX) { + methods['beginningOf' + caps] = function(d, localeCode) { + return moveToBeginningOfUnit(d, index, localeCode); + }; + methods['endOf' + caps] = function(d, localeCode) { + return moveToEndOfUnit(d, index, localeCode); + }; + } + + methods['add' + caps + 's'] = function(d, num, reset) { + return advanceDate(d, name, num, reset); + }; + + var since = function(date, d, options) { + return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit); + }; + var until = function(date, d, options) { + return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit); + }; + + methods[name + 'sAgo'] = methods[name + 'sUntil'] = until; + methods[name + 'sSince'] = methods[name + 'sFromNow'] = since; + + }); + +} + +module.exports = buildDateUnitMethods; + +/***/ }), +/* 202 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + createDate = __webpack_require__(28), + mathAliases = __webpack_require__(7), + advanceDate = __webpack_require__(38), + namespaceAliases = __webpack_require__(22), + defineInstanceSimilar = __webpack_require__(41); + +var sugarNumber = namespaceAliases.sugarNumber, + round = mathAliases.round; + +function buildNumberUnitMethods() { + defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) { + var name = unit.name, base, after, before; + base = function(n) { + return round(n * unit.multiplier); + }; + after = function(n, d, options) { + return advanceDate(createDate(d, options, true), name, n); + }; + before = function(n, d, options) { + return advanceDate(createDate(d, options, true), name, -n); + }; + methods[name] = base; + methods[name + 's'] = base; + methods[name + 'Before'] = before; + methods[name + 'sBefore'] = before; + methods[name + 'Ago'] = before; + methods[name + 'sAgo'] = before; + methods[name + 'After'] = after; + methods[name + 'sAfter'] = after; + methods[name + 'FromNow'] = after; + methods[name + 'sFromNow'] = after; + }); +} + +module.exports = buildNumberUnitMethods; + +/***/ }), +/* 203 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + spaceSplit = __webpack_require__(43), + fullCompareDate = __webpack_require__(83), + namespaceAliases = __webpack_require__(22), + defineInstanceSimilar = __webpack_require__(41); + +var English = LocaleHelpers.English, + sugarDate = namespaceAliases.sugarDate; + +function buildRelativeAliases() { + var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past'); + var weekdays = English.weekdays.slice(0, 7); + var months = English.months.slice(0, 12); + var together = special.concat(weekdays).concat(months); + defineInstanceSimilar(sugarDate, together, function(methods, name) { + methods['is'+ name] = function(d) { + return fullCompareDate(d, name); + }; + }); +} + +module.exports = buildRelativeAliases; + +/***/ }), +/* 204 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateSet = __webpack_require__(32), + setISOWeekNumber = __webpack_require__(93); + +function callDateSetWithWeek(d, method, value, safe) { + if (method === 'ISOWeek') { + setISOWeekNumber(d, value); + } else { + callDateSet(d, method, value, safe); + } +} + +module.exports = callDateSetWithWeek; + +/***/ }), +/* 205 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5), + isDefined = __webpack_require__(27), + walkUnitDown = __webpack_require__(94); + +var YEAR_INDEX = DateUnitIndexes.YEAR_INDEX; + +function collectDateParamsFromArguments(args) { + var params = {}, index = 0; + walkUnitDown(YEAR_INDEX, function(unit) { + var arg = args[index++]; + if (isDefined(arg)) { + params[unit.name] = arg; + } + }); + return params; +} + +module.exports = collectDateParamsFromArguments; + +/***/ }), +/* 206 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var setDate = __webpack_require__(35), + getDate = __webpack_require__(34), + getYear = __webpack_require__(30), + getMonth = __webpack_require__(29), + getNewDate = __webpack_require__(40); + +function compareDay(d, shift) { + var comp = getNewDate(); + if (shift) { + setDate(comp, getDate(comp) + shift); + } + return getYear(d) === getYear(comp) && + getMonth(d) === getMonth(comp) && + getDate(d) === getDate(comp); +} + +module.exports = compareDay; + +/***/ }), +/* 207 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function defaultNewDate() { + return new Date; +} + +module.exports = defaultNewDate; + +/***/ }), +/* 208 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getDateParamKey = __webpack_require__(85); + +function deleteDateParam(params, key) { + delete params[getDateParamKey(params, key)]; +} + +module.exports = deleteDateParam; + +/***/ }), +/* 209 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getNewDate = __webpack_require__(40), + mathAliases = __webpack_require__(7), + getAdjustedUnit = __webpack_require__(84), + getTimeDistanceForUnit = __webpack_require__(59); + +var abs = mathAliases.abs; + +function getAdjustedUnitForDate(d, dRelative) { + var ms; + if (!dRelative) { + dRelative = getNewDate(); + if (d > dRelative) { + // If our date is greater than the one that we got from getNewDate, it + // means that we are finding the unit for a date that is in the future + // relative to now. However, often the incoming date was created in + // the same cycle as our comparison, but our "now" date will have been + // created an instant after it, creating situations where "5 minutes from + // now" becomes "4 minutes from now" in the same tick. To prevent this, + // subtract a buffer of 10ms to compensate. + dRelative = new Date(dRelative.getTime() - 10); + } + } + ms = d - dRelative; + return getAdjustedUnit(ms, function(u) { + return abs(getTimeDistanceForUnit(d, dRelative, u)); + }); +} + +module.exports = getAdjustedUnitForDate; + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var trunc = __webpack_require__(23), + withPrecision = __webpack_require__(74), + getAdjustedUnit = __webpack_require__(84); + +function getAdjustedUnitForNumber(ms) { + return getAdjustedUnit(ms, function(unit) { + return trunc(withPrecision(ms / unit.multiplier, 1)); + }); +} + +module.exports = getAdjustedUnitForNumber; + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function getArrayWithOffset(arr, n, alternate, offset) { + var val; + if (alternate > 1) { + val = arr[n + (alternate - 1) * offset]; + } + return val || arr[n]; +} + +module.exports = getArrayWithOffset; + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getDateParamKey = __webpack_require__(85), + coreUtilityAliases = __webpack_require__(10); + +var getOwn = coreUtilityAliases.getOwn; + +function getDateParam(params, key) { + return getOwn(params, getDateParamKey(params, key)); +} + +module.exports = getDateParam; + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isUndefined = __webpack_require__(37); + +function getDateParamsFromString(str) { + var match, num, params = {}; + match = str.match(/^(-?\d*[\d.]\d*)?\s?(\w+?)s?$/i); + if (match) { + if (isUndefined(num)) { + num = +match[1]; + if (isNaN(num)) { + num = 1; + } + } + params[match[2].toLowerCase()] = num; + } + return params; +} + +module.exports = getDateParamsFromString; + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnits = __webpack_require__(31), + DateUnitIndexes = __webpack_require__(5), + getTimeDistanceForUnit = __webpack_require__(59); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX; + +function getDaysSince(d1, d2) { + return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]); +} + +module.exports = getDaysSince; + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX, + MONTH_INDEX = DateUnitIndexes.MONTH_INDEX; + +function getHigherUnitIndex(index) { + return index === DAY_INDEX ? MONTH_INDEX : index + 1; +} + +module.exports = getHigherUnitIndex; + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + trunc = __webpack_require__(23), + getHours = __webpack_require__(87); + +var localeManager = LocaleHelpers.localeManager; + +function getMeridiemToken(d, localeCode) { + var hours = getHours(d); + return localeManager.get(localeCode).ampm[trunc(hours / 12)] || ''; +} + +module.exports = getMeridiemToken; + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LOCALE_ARRAY_FIELDS = __webpack_require__(294), + ISODefaults = __webpack_require__(63), + ParsingTokens = __webpack_require__(99), + CoreParsingFormats = __webpack_require__(290), + LocalizedParsingTokens = __webpack_require__(97), + map = __webpack_require__(73), + filter = __webpack_require__(135), + forEach = __webpack_require__(26), + isDefined = __webpack_require__(27), + commaSplit = __webpack_require__(130), + classChecks = __webpack_require__(3), + isUndefined = __webpack_require__(37), + mathAliases = __webpack_require__(7), + simpleMerge = __webpack_require__(56), + getOrdinalSuffix = __webpack_require__(137), + getRegNonCapturing = __webpack_require__(88), + coreUtilityAliases = __webpack_require__(10), + getArrayWithOffset = __webpack_require__(211), + iterateOverDateUnits = __webpack_require__(61), + arrayToRegAlternates = __webpack_require__(200), + fullwidthNumberHelpers = __webpack_require__(156), + getAdjustedUnitForNumber = __webpack_require__(210), + getParsingTokenWithSuffix = __webpack_require__(219); + +var getOwn = coreUtilityAliases.getOwn, + forEachProperty = coreUtilityAliases.forEachProperty, + fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap, + fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers, + pow = mathAliases.pow, + max = mathAliases.max, + ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK, + ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR, + isString = classChecks.isString, + isFunction = classChecks.isFunction; + +function getNewLocale(def) { + + function Locale(def) { + this.init(def); + } + + Locale.prototype = { + + getMonthName: function(n, alternate) { + if (this.monthSuffix) { + return (n + 1) + this.monthSuffix; + } + return getArrayWithOffset(this.months, n, alternate, 12); + }, + + getWeekdayName: function(n, alternate) { + return getArrayWithOffset(this.weekdays, n, alternate, 7); + }, + + getTokenValue: function(field, str) { + var map = this[field + 'Map'], val; + if (map) { + val = map[str]; + } + if (isUndefined(val)) { + val = this.getNumber(str); + if (field === 'month') { + // Months are the only numeric date field + // whose value is not the same as its number. + val -= 1; + } + } + return val; + }, + + getNumber: function(str) { + var num = this.numeralMap[str]; + if (isDefined(num)) { + return num; + } + // The unary plus operator here show better performance and handles + // every format that parseFloat does with the exception of trailing + // characters, which are guaranteed not to be in our string at this point. + num = +str.replace(/,/, '.'); + if (!isNaN(num)) { + return num; + } + num = this.getNumeralValue(str); + if (!isNaN(num)) { + this.numeralMap[str] = num; + return num; + } + return num; + }, + + getNumeralValue: function(str) { + var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr; + // Note that "numerals" that need to be converted through this method are + // all considered to be single characters in order to handle CJK. This + // method is by no means unique to CJK, but the complexity of handling + // inflections in non-CJK languages adds too much overhead for not enough + // value, so avoiding for now. + arr = str.split(''); + for (var i = arr.length - 1; numeral = arr[i]; i--) { + digit = getOwn(this.numeralMap, numeral); + if (isUndefined(digit)) { + digit = getOwn(fullWidthNumberMap, numeral) || 0; + } + isPlace = digit > 0 && digit % 10 === 0; + if (isPlace) { + if (lastWasPlace) { + num += place; + } + if (i) { + place = digit; + } else { + num += digit; + } + } else { + num += digit * place; + place *= 10; + } + lastWasPlace = isPlace; + } + return num; + }, + + getOrdinal: function(n) { + var suffix = this.ordinalSuffix; + return suffix || getOrdinalSuffix(n); + }, + + getRelativeFormat: function(adu, type) { + return this.convertAdjustedToFormat(adu, type); + }, + + getDuration: function(ms) { + return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration'); + }, + + getFirstDayOfWeek: function() { + var val = this.firstDayOfWeek; + return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK; + }, + + getFirstDayOfWeekYear: function() { + return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR; + }, + + convertAdjustedToFormat: function(adu, type) { + var sign, unit, mult, + num = adu[0], + u = adu[1], + ms = adu[2], + format = this[type] || this.relative; + if (isFunction(format)) { + return format.call(this, num, u, ms, type); + } + mult = !this.plural || num === 1 ? 0 : 1; + unit = this.units[mult * 8 + u] || this.units[u]; + sign = this[ms > 0 ? 'fromNow' : 'ago']; + return format.replace(/\{(.*?)\}/g, function(full, match) { + switch(match) { + case 'num': return num; + case 'unit': return unit; + case 'sign': return sign; + } + }); + }, + + cacheFormat: function(dif, i) { + this.compiledFormats.splice(i, 1); + this.compiledFormats.unshift(dif); + }, + + addFormat: function(src, to) { + var loc = this; + + function getTokenSrc(str) { + var suffix, src, val, + opt = str.match(/\?$/), + nc = str.match(/^(\d+)\??$/), + slice = str.match(/(\d)(?:-(\d))?/), + key = str.replace(/[^a-z]+$/i, ''); + + // Allowing alias tokens such as {time} + if (val = getOwn(loc.parsingAliases, key)) { + src = replaceParsingTokens(val); + if (opt) { + src = getRegNonCapturing(src, true); + } + return src; + } + + if (nc) { + src = loc.tokens[nc[1]]; + } else if (val = getOwn(ParsingTokens, key)) { + src = val.src; + } else { + val = getOwn(loc.parsingTokens, key) || getOwn(loc, key); + + // Both the "months" array and the "month" parsing token can be accessed + // by either {month} or {months}, falling back as necessary, however + // regardless of whether or not a fallback occurs, the final field to + // be passed to addRawFormat must be normalized as singular. + key = key.replace(/s$/, ''); + + if (!val) { + val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's'); + } + + if (isString(val)) { + src = val; + suffix = loc[key + 'Suffix']; + } else { + if (slice) { + val = filter(val, function(m, i) { + var mod = i % (loc.units ? 8 : val.length); + return mod >= slice[1] && mod <= (slice[2] || slice[1]); + }); + } + src = arrayToRegAlternates(val); + } + } + if (!src) { + return ''; + } + if (nc) { + // Non-capturing tokens like {0} + src = getRegNonCapturing(src); + } else { + // Capturing group and add to parsed tokens + to.push(key); + src = '(' + src + ')'; + } + if (suffix) { + // Date/time suffixes such as those in CJK + src = getParsingTokenWithSuffix(key, src, suffix); + } + if (opt) { + src += '?'; + } + return src; + } + + function replaceParsingTokens(str) { + + // Make spaces optional + str = str.replace(/ /g, ' ?'); + + return str.replace(/\{([^,]+?)\}/g, function(match, token) { + var tokens = token.split('|'), src; + if (tokens.length > 1) { + src = getRegNonCapturing(map(tokens, getTokenSrc).join('|')); + } else { + src = getTokenSrc(token); + } + return src; + }); + } + + if (!to) { + to = []; + src = replaceParsingTokens(src); + } + + loc.addRawFormat(src, to); + }, + + addRawFormat: function(format, to) { + this.compiledFormats.unshift({ + reg: RegExp('^ *' + format + ' *$', 'i'), + to: to + }); + }, + + init: function(def) { + var loc = this; + + // -- Initialization helpers + + function initFormats() { + loc.compiledFormats = []; + loc.parsingAliases = {}; + loc.parsingTokens = {}; + } + + function initDefinition() { + simpleMerge(loc, def); + } + + function initArrayFields() { + forEach(LOCALE_ARRAY_FIELDS, function(name) { + var val = loc[name]; + if (isString(val)) { + loc[name] = commaSplit(val); + } else if (!val) { + loc[name] = []; + } + }); + } + + // -- Value array build helpers + + function buildValueArray(name, mod, map, fn) { + var field = name, all = [], setMap; + if (!loc[field]) { + field += 's'; + } + if (!map) { + map = {}; + setMap = true; + } + forAllAlternates(field, function(alt, j, i) { + var idx = j * mod + i, val; + val = fn ? fn(i) : i; + map[alt] = val; + map[alt.toLowerCase()] = val; + all[idx] = alt; + }); + loc[field] = all; + if (setMap) { + loc[name + 'Map'] = map; + } + } + + function forAllAlternates(field, fn) { + forEach(loc[field], function(str, i) { + forEachAlternate(str, function(alt, j) { + fn(alt, j, i); + }); + }); + } + + function forEachAlternate(str, fn) { + var arr = map(str.split('+'), function(split) { + return split.replace(/(.+):(.+)$/, function(full, base, suffixes) { + return map(suffixes.split('|'), function(suffix) { + return base + suffix; + }).join('|'); + }); + }).join('|'); + forEach(arr.split('|'), fn); + } + + function buildNumerals() { + var map = {}; + buildValueArray('numeral', 10, map); + buildValueArray('article', 1, map, function() { + return 1; + }); + buildValueArray('placeholder', 4, map, function(n) { + return pow(10, n + 1); + }); + loc.numeralMap = map; + } + + function buildTimeFormats() { + loc.parsingAliases['time'] = getTimeFormat(); + loc.parsingAliases['tzOffset'] = getTZOffsetFormat(); + } + + function getTimeFormat() { + var src; + if (loc.ampmFront) { + // "ampmFront" exists mostly for CJK locales, which also presume that + // time suffixes exist, allowing this to be a simpler regex. + src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?'; + } else if(loc.ampm.length) { + src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})'; + } else { + src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)'; + } + return src; + } + + function getTZOffsetFormat() { + return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\([\\w\\s]+\\))?)?)?)?'; + } + + function buildParsingTokens() { + forEachProperty(LocalizedParsingTokens, function(token, name) { + var src, arr; + src = token.base ? ParsingTokens[token.base].src : token.src; + if (token.requiresNumerals || loc.numeralUnits) { + src += getNumeralSrc(); + } + arr = loc[name + 's']; + if (arr && arr.length) { + src += '|' + arrayToRegAlternates(arr); + } + loc.parsingTokens[name] = src; + }); + } + + function getNumeralSrc() { + var all, src = ''; + all = loc.numerals.concat(loc.placeholders).concat(loc.articles); + if (loc.allowsFullWidth) { + all = all.concat(fullWidthNumbers.split('')); + } + if (all.length) { + src = '|(?:' + arrayToRegAlternates(all) + ')+'; + } + return src; + } + + function buildTimeSuffixes() { + iterateOverDateUnits(function(unit, i) { + var token = loc.timeSuffixes[i]; + if (token) { + loc[(unit.alias || unit.name) + 'Suffix'] = token; + } + }); + } + + function buildModifiers() { + forEach(loc.modifiers, function(modifier) { + var name = modifier.name, mapKey = name + 'Map', map; + map = loc[mapKey] || {}; + forEachAlternate(modifier.src, function(alt, j) { + var token = getOwn(loc.parsingTokens, name), val = modifier.value; + map[alt] = val; + loc.parsingTokens[name] = token ? token + '|' + alt : alt; + if (modifier.name === 'sign' && j === 0) { + // Hooking in here to set the first "fromNow" or "ago" modifier + // directly on the locale, so that it can be reused in the + // relative format. + loc[val === 1 ? 'fromNow' : 'ago'] = alt; + } + }); + loc[mapKey] = map; + }); + } + + // -- Format adding helpers + + function addCoreFormats() { + forEach(CoreParsingFormats, function(df) { + var src = df.src; + if (df.mdy && loc.mdy) { + // Use the mm/dd/yyyy variant if it + // exists and the locale requires it + src = df.mdy; + } + if (df.time) { + // Core formats that allow time require the time + // reg on both sides, so add both versions here. + loc.addFormat(getFormatWithTime(src, true)); + loc.addFormat(getFormatWithTime(src)); + } else { + loc.addFormat(src); + } + }); + loc.addFormat('{time}'); + } + + function addLocaleFormats() { + addFormatSet('parse'); + addFormatSet('timeParse', true); + addFormatSet('timeFrontParse', true, true); + } + + function addFormatSet(field, allowTime, timeFront) { + forEach(loc[field], function(format) { + if (allowTime) { + format = getFormatWithTime(format, timeFront); + } + loc.addFormat(format); + }); + } + + function getFormatWithTime(baseFormat, timeBefore) { + if (timeBefore) { + return getTimeBefore() + baseFormat; + } + return baseFormat + getTimeAfter(); + } + + function getTimeBefore() { + return getRegNonCapturing('{time}[,\\s\\u3000]', true); + } + + function getTimeAfter() { + var markers = ',?[\\s\\u3000]', localized; + localized = arrayToRegAlternates(loc.timeMarkers); + if (localized) { + markers += '| (?:' + localized + ') '; + } + markers = getRegNonCapturing(markers, loc.timeMarkerOptional); + return getRegNonCapturing(markers + '{time}', true); + } + + initFormats(); + initDefinition(); + initArrayFields(); + + buildValueArray('month', 12); + buildValueArray('weekday', 7); + buildValueArray('unit', 8); + buildValueArray('ampm', 2); + + buildNumerals(); + buildTimeFormats(); + buildParsingTokens(); + buildTimeSuffixes(); + buildModifiers(); + + // The order of these formats is important. Order is reversed so formats + // that are initialized later will take precedence. Generally, this means + // that more specific formats should come later. + addCoreFormats(); + addLocaleFormats(); + + } + + }; + + return new Locale(def); +} + +module.exports = getNewLocale; + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function getParsingTokenValue(token, str) { + var val; + if (token.val) { + val = token.val; + } else if (token.sign) { + val = str === '+' ? 1 : -1; + } else if (token.bool) { + val = !!val; + } else { + val = +str.replace(/,/, '.'); + } + if (token.param === 'month') { + val -= 1; + } + return val; +} + +module.exports = getParsingTokenValue; + +/***/ }), +/* 219 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocalizedParsingTokens = __webpack_require__(97), + getRegNonCapturing = __webpack_require__(88); + +function getParsingTokenWithSuffix(field, src, suffix) { + var token = LocalizedParsingTokens[field]; + if (token.requiresSuffix) { + src = getRegNonCapturing(src + getRegNonCapturing(suffix)); + } else if (token.requiresSuffixOr) { + src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix); + } else { + src += getRegNonCapturing(suffix, true); + } + return src; +} + +module.exports = getParsingTokenWithSuffix; + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var iterateOverDateParams = __webpack_require__(46); + +function getUnitIndexForParamName(name) { + var params = {}, unitIndex; + params[name] = 1; + iterateOverDateParams(params, function(name, val, unit, i) { + unitIndex = i; + return false; + }); + return unitIndex; +} + +module.exports = getUnitIndexForParamName; + +/***/ }), +/* 221 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + getYear = __webpack_require__(30), + getMonth = __webpack_require__(29), + getWeekNumber = __webpack_require__(60); + +var localeManager = LocaleHelpers.localeManager; + +function getWeekYear(d, localeCode, iso) { + var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc; + year = getYear(d); + month = getMonth(d); + if (month === 0 || month === 11) { + if (!iso) { + loc = localeManager.get(localeCode); + firstDayOfWeek = loc.getFirstDayOfWeek(localeCode); + firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode); + } + week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear); + if (month === 0 && week === 0) { + year -= 1; + } else if (month === 11 && week === 1) { + year += 1; + } + } + return year; +} + +module.exports = getWeekYear; + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getYear = __webpack_require__(30), + mathAliases = __webpack_require__(7); + +var abs = mathAliases.abs; + +function getYearFromAbbreviation(str, d, prefer) { + // Following IETF here, adding 1900 or 2000 depending on the last two digits. + // Note that this makes no accordance for what should happen after 2050, but + // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt + var val = +str, delta; + val += val < 50 ? 2000 : 1900; + if (prefer) { + delta = val - getYear(d); + if (delta / abs(delta) !== prefer) { + val += prefer * 100; + } + } + return val; +} + +module.exports = getYearFromAbbreviation; + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _utc = __webpack_require__(21), + tzOffset = __webpack_require__(49); + +function isUTC(d) { + return !!_utc(d) || tzOffset(d) === 0; +} + +module.exports = isUTC; + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DateUnitIndexes = __webpack_require__(5), + iterateOverDateParams = __webpack_require__(46); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX, + YEAR_INDEX = DateUnitIndexes.YEAR_INDEX; + +function iterateOverHigherDateParams(params, fn) { + iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX); +} + +module.exports = iterateOverHigherDateParams; + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getLowerUnitIndex = __webpack_require__(39), + setUnitAndLowerToEdge = __webpack_require__(36); + +function resetLowerUnits(d, unitIndex) { + return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex)); +} + +module.exports = resetLowerUnits; + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createDate = __webpack_require__(28), + namespaceAliases = __webpack_require__(22), + setChainableConstructor = __webpack_require__(149); + +var sugarDate = namespaceAliases.sugarDate; + +function setDateChainableConstructor() { + setChainableConstructor(sugarDate, createDate); +} + +module.exports = setDateChainableConstructor; + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateSet = __webpack_require__(32); + +function setMonth(d, val) { + callDateSet(d, 'Month', val); +} + +module.exports = setMonth; + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callDateSet = __webpack_require__(32); + +function setYear(d, val) { + callDateSet(d, 'FullYear', val); +} + +module.exports = setYear; + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + fullCompareDate = __webpack_require__(83); + +Sugar.Date.defineInstance({ + + 'is': function(date, d, margin) { + return fullCompareDate(date, d, margin); + } + +}); + +module.exports = Sugar.Date.is; + +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDate = __webpack_require__(28); + +Sugar.Date.defineInstance({ + + 'isAfter': function(date, d, margin) { + return date.getTime() > createDate(d).getTime() - (margin || 0); + } + +}); + +module.exports = Sugar.Date.isAfter; + +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDate = __webpack_require__(28); + +Sugar.Date.defineInstance({ + + 'isBefore': function(date, d, margin) { + return date.getTime() < createDate(d).getTime() + (margin || 0); + } + +}); + +module.exports = Sugar.Date.isBefore; + +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDate = __webpack_require__(28), + mathAliases = __webpack_require__(7); + +var min = mathAliases.min, + max = mathAliases.max; + +Sugar.Date.defineInstance({ + + 'isBetween': function(date, d1, d2, margin) { + var t = date.getTime(); + var t1 = createDate(d1).getTime(); + var t2 = createDate(d2).getTime(); + var lo = min(t1, t2); + var hi = max(t1, t2); + margin = margin || 0; + return (lo - margin <= t) && (hi + margin >= t); + } + +}); + +module.exports = Sugar.Date.isBetween; + +/***/ }), +/* 233 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isFriday; + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isFuture; + +/***/ }), +/* 235 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isLastMonth; + +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isLastWeek; + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isLastYear; + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + getYear = __webpack_require__(30); + +Sugar.Date.defineInstance({ + + 'isLeapYear': function(date) { + var year = getYear(date); + return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0); + } + +}); + +module.exports = Sugar.Date.isLeapYear; + +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isMonday; + +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isNextMonth; + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isNextWeek; + +/***/ }), +/* 242 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isNextYear; + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isPast; + +/***/ }), +/* 244 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isSaturday; + +/***/ }), +/* 245 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isSunday; + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isThisMonth; + +/***/ }), +/* 247 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isThisWeek; + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.isThisYear; + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isThursday; + +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isToday; + +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isTomorrow; + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isTuesday; + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + isUTC = __webpack_require__(223); + +Sugar.Date.defineInstance({ + + 'isUTC': function(date) { + return isUTC(date); + } + +}); + +module.exports = Sugar.Date.isUTC; + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + dateIsValid = __webpack_require__(45); + +Sugar.Date.defineInstance({ + + 'isValid': function(date) { + return dateIsValid(date); + } + +}); + +module.exports = Sugar.Date.isValid; + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isWednesday; + +/***/ }), +/* 256 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isWeekday; + +/***/ }), +/* 257 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isWeekend; + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(12); + +module.exports = Sugar.Date.isYesterday; + +/***/ }), +/* 259 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +Sugar.Date.defineInstance({ + + 'iso': function(date) { + return date.toISOString(); + } + +}); + +module.exports = Sugar.Date.iso; + +/***/ }), +/* 260 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.millisecondsAgo; + +/***/ }), +/* 261 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.millisecondsFromNow; + +/***/ }), +/* 262 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.millisecondsSince; + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.millisecondsUntil; + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.minutesAgo; + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.minutesFromNow; + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.minutesSince; + +/***/ }), +/* 267 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.minutesUntil; + +/***/ }), +/* 268 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.monthsAgo; + +/***/ }), +/* 269 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.monthsFromNow; + +/***/ }), +/* 270 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.monthsSince; + +/***/ }), +/* 271 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.monthsUntil; + +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + DateRangeConstructor = __webpack_require__(433); + +Sugar.Date.defineStatic({ + + 'range': DateRangeConstructor + +}); + +module.exports = Sugar.Date.range; + +/***/ }), +/* 273 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + dateRelative = __webpack_require__(82); + +Sugar.Date.defineInstance({ + + 'relative': function(date, localeCode, fn) { + return dateRelative(date, null, localeCode, fn); + } + +}); + +module.exports = Sugar.Date.relative; + +/***/ }), +/* 274 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + createDate = __webpack_require__(28), + dateRelative = __webpack_require__(82); + +Sugar.Date.defineInstance({ + + 'relativeTo': function(date, d, localeCode) { + return dateRelative(date, createDate(d), localeCode); + } + +}); + +module.exports = Sugar.Date.relativeTo; + +/***/ }), +/* 275 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'removeLocale': function(code) { + return localeManager.remove(code); + } + +}); + +module.exports = Sugar.Date.removeLocale; + +/***/ }), +/* 276 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + DateUnitIndexes = __webpack_require__(5), + moveToBeginningOfUnit = __webpack_require__(47), + getUnitIndexForParamName = __webpack_require__(220); + +var DAY_INDEX = DateUnitIndexes.DAY_INDEX; + +Sugar.Date.defineInstance({ + + 'reset': function(date, unit, localeCode) { + var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX; + moveToBeginningOfUnit(date, unitIndex, localeCode); + return date; + } + +}); + +module.exports = Sugar.Date.reset; + +/***/ }), +/* 277 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + advanceDateWithArgs = __webpack_require__(76); + +Sugar.Date.defineInstanceWithArguments({ + + 'rewind': function(d, args) { + return advanceDateWithArgs(d, args, -1); + } + +}); + +module.exports = Sugar.Date.rewind; + +/***/ }), +/* 278 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.secondsAgo; + +/***/ }), +/* 279 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.secondsFromNow; + +/***/ }), +/* 280 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.secondsSince; + +/***/ }), +/* 281 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.secondsUntil; + +/***/ }), +/* 282 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + updateDate = __webpack_require__(50), + collectDateArguments = __webpack_require__(78); + +Sugar.Date.defineInstanceWithArguments({ + + 'set': function(d, args) { + args = collectDateArguments(args); + return updateDate(d, args[0], args[1]); + } + +}); + +module.exports = Sugar.Date.set; + +/***/ }), +/* 283 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + setISOWeekNumber = __webpack_require__(93); + +Sugar.Date.defineInstance({ + + 'setISOWeek': function(date, num) { + return setISOWeekNumber(date, num); + } + +}); + +module.exports = Sugar.Date.setISOWeek; + +/***/ }), +/* 284 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Date.defineStatic({ + + 'setLocale': function(code) { + return localeManager.set(code); + } + +}); + +module.exports = Sugar.Date.setLocale; + +/***/ }), +/* 285 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + _dateOptions = __webpack_require__(64); + +module.exports = Sugar.Date.setOption; + +/***/ }), +/* 286 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + _utc = __webpack_require__(21); + +Sugar.Date.defineInstance({ + + 'setUTC': function(date, on) { + return _utc(date, on); + } + +}); + +module.exports = Sugar.Date.setUTC; + +/***/ }), +/* 287 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + setWeekday = __webpack_require__(24); + +Sugar.Date.defineInstance({ + + 'setWeekday': function(date, dow) { + return setWeekday(date, dow); + } + +}); + +module.exports = Sugar.Date.setWeekday; + +/***/ }), +/* 288 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getEnglishVariant = __webpack_require__(57); + +var BritishEnglishDefinition = getEnglishVariant({ + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} {Month} {yyyy}', + 'long': '{d} {Month} {yyyy} {H}:{mm}', + 'full': '{Weekday}, {d} {Month}, {yyyy} {time}', + 'stamp': '{Dow} {d} {Mon} {yyyy} {time}' +}); + +module.exports = BritishEnglishDefinition; + +/***/ }), +/* 289 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getEnglishVariant = __webpack_require__(57); + +var CanadianEnglishDefinition = getEnglishVariant({ + 'short': '{yyyy}-{MM}-{dd}', + 'medium': '{d} {Month}, {yyyy}', + 'long': '{d} {Month}, {yyyy} {H}:{mm}', + 'full': '{Weekday}, {d} {Month}, {yyyy} {time}', + 'stamp': '{Dow} {d} {Mon} {yyyy} {time}' +}); + +module.exports = CanadianEnglishDefinition; + +/***/ }), +/* 290 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var CoreParsingFormats = [ + { + // 12-1978 + // 08-1978 (MDY) + src: '{MM}[-.\\/]{yyyy}' + }, + { + // 12/08/1978 + // 08/12/1978 (MDY) + time: true, + src: '{dd}[-.\\/]{MM}(?:[-.\\/]{yyyy|yy|y})?', + mdy: '{MM}[-.\\/]{dd}(?:[-.\\/]{yyyy|yy|y})?' + }, + { + // 1975-08-25 + time: true, + src: '{yyyy}[-.\\/]{MM}(?:[-.\\/]{dd})?' + }, + { + // .NET JSON + src: '\\\\/Date\\({timestamp}(?:[+-]\\d{4,4})?\\)\\\\/' + }, + { + // ISO-8601 + src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}' + } +]; + +module.exports = CoreParsingFormats; + +/***/ }), +/* 291 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var defaultNewDate = __webpack_require__(207); + +var DATE_OPTIONS = { + 'newDateInternal': defaultNewDate +}; + +module.exports = DATE_OPTIONS; + +/***/ }), +/* 292 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var EnglishLocaleBaseDefinition = { + 'code': 'en', + 'plural': true, + 'timeMarkers': 'at', + 'ampm': 'AM|A.M.|a,PM|P.M.|p', + 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s', + 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|', + 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend', + 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th', + 'articles': 'a,an,the', + 'tokens': 'the,st|nd|rd|th,of|in,a|an,on', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{num} {unit} {sign}', + 'duration': '{num} {unit}', + 'modifiers': [ + { 'name': 'half', 'src': 'half', 'value': .5 }, + { 'name': 'midday', 'src': 'noon', 'value': 12 }, + { 'name': 'midday', 'src': 'midnight', 'value': 24 }, + { 'name': 'day', 'src': 'yesterday', 'value': -1 }, + { 'name': 'day', 'src': 'today|tonight', 'value': 0 }, + { 'name': 'day', 'src': 'tomorrow', 'value': 1 }, + { 'name': 'sign', 'src': 'ago|before', 'value': -1 }, + { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 }, + { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 }, + { 'name': 'edge', 'src': 'last day', 'value': 1 }, + { 'name': 'edge', 'src': 'end|last', 'value': 2 }, + { 'name': 'shift', 'src': 'last', 'value': -1 }, + { 'name': 'shift', 'src': 'the|this', 'value': 0 }, + { 'name': 'shift', 'src': 'next', 'value': 1 } + ], + 'parse': [ + '(?:just)? now', + '{shift} {unit:5-7}', + "{months?} (?:{year}|'{yy})", + '{midday} {4?} {day|weekday}', + '{months},?(?:[-.\\/\\s]{year})?', + '{edge} of (?:day)? {day|weekday}', + '{0} {num}{1?} {weekday} {2} {months},? {year?}', + '{shift?} {day?} {weekday?} {timeMarker?} {midday}', + '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}', + '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift} {unit:5?} {weekday}', + '{0?} {date}{1?} {2?} {months?}', + '{weekday} {2?} {shift} {unit:5}', + '{0?} {num} {2?} {months}\\.?,? {year?}', + '{num?} {unit:4-5} {sign} {day|weekday}', + '{year}[-.\\/\\s]{months}[-.\\/\\s]{date}', + '{0|months} {date?}{1?} of {shift} {unit:6-7}', + '{0?} {num}{1?} {weekday} of {shift} {unit:6}', + "{date}[-.\\/\\s]{months}[-.\\/\\s](?:{year}|'?{yy})", + "{weekday?}\\.?,? {months}\\.?,? {date}{1?},? (?:{year}|'{yy})?" + ], + 'timeFrontParse': [ + '{sign} {num} {unit}', + '{num} {unit} {sign}', + '{4?} {day|weekday}' + ] +}; + +module.exports = EnglishLocaleBaseDefinition; + +/***/ }), +/* 293 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var TIMEZONE_ABBREVIATION_REG = __webpack_require__(296), + LocaleHelpers = __webpack_require__(8), + DateUnitIndexes = __webpack_require__(5), + trunc = __webpack_require__(23), + getDate = __webpack_require__(34), + getYear = __webpack_require__(30), + getHours = __webpack_require__(87), + getMonth = __webpack_require__(29), + cloneDate = __webpack_require__(33), + padNumber = __webpack_require__(54), + getWeekday = __webpack_require__(20), + callDateGet = __webpack_require__(18), + mathAliases = __webpack_require__(7), + getWeekYear = __webpack_require__(221), + getUTCOffset = __webpack_require__(89), + getDaysSince = __webpack_require__(214), + getWeekNumber = __webpack_require__(60), + getMeridiemToken = __webpack_require__(216), + setUnitAndLowerToEdge = __webpack_require__(36); + +var localeManager = LocaleHelpers.localeManager, + MONTH_INDEX = DateUnitIndexes.MONTH_INDEX, + ceil = mathAliases.ceil; + +var FormatTokensBase = [ + { + ldml: 'Dow', + strf: 'a', + lowerToken: 'dow', + get: function(d, localeCode) { + return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2); + } + }, + { + ldml: 'Weekday', + strf: 'A', + lowerToken: 'weekday', + allowAlternates: true, + get: function(d, localeCode, alternate) { + return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate); + } + }, + { + ldml: 'Mon', + strf: 'b h', + lowerToken: 'mon', + get: function(d, localeCode) { + return localeManager.get(localeCode).getMonthName(getMonth(d), 2); + } + }, + { + ldml: 'Month', + strf: 'B', + lowerToken: 'month', + allowAlternates: true, + get: function(d, localeCode, alternate) { + return localeManager.get(localeCode).getMonthName(getMonth(d), alternate); + } + }, + { + strf: 'C', + get: function(d) { + return getYear(d).toString().slice(0, 2); + } + }, + { + ldml: 'd date day', + strf: 'd', + strfPadding: 2, + ldmlPaddedToken: 'dd', + ordinalToken: 'do', + get: function(d) { + return getDate(d); + } + }, + { + strf: 'e', + get: function(d) { + return padNumber(getDate(d), 2, false, 10, ' '); + } + }, + { + ldml: 'H 24hr', + strf: 'H', + strfPadding: 2, + ldmlPaddedToken: 'HH', + get: function(d) { + return getHours(d); + } + }, + { + ldml: 'h hours 12hr', + strf: 'I', + strfPadding: 2, + ldmlPaddedToken: 'hh', + get: function(d) { + return getHours(d) % 12 || 12; + } + }, + { + ldml: 'D', + strf: 'j', + strfPadding: 3, + ldmlPaddedToken: 'DDD', + get: function(d) { + var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX); + return getDaysSince(d, s) + 1; + } + }, + { + ldml: 'M', + strf: 'm', + strfPadding: 2, + ordinalToken: 'Mo', + ldmlPaddedToken: 'MM', + get: function(d) { + return getMonth(d) + 1; + } + }, + { + ldml: 'm minutes', + strf: 'M', + strfPadding: 2, + ldmlPaddedToken: 'mm', + get: function(d) { + return callDateGet(d, 'Minutes'); + } + }, + { + ldml: 'Q', + get: function(d) { + return ceil((getMonth(d) + 1) / 3); + } + }, + { + ldml: 'TT', + strf: 'p', + get: function(d, localeCode) { + return getMeridiemToken(d, localeCode); + } + }, + { + ldml: 'tt', + strf: 'P', + get: function(d, localeCode) { + return getMeridiemToken(d, localeCode).toLowerCase(); + } + }, + { + ldml: 'T', + lowerToken: 't', + get: function(d, localeCode) { + return getMeridiemToken(d, localeCode).charAt(0); + } + }, + { + ldml: 's seconds', + strf: 'S', + strfPadding: 2, + ldmlPaddedToken: 'ss', + get: function(d) { + return callDateGet(d, 'Seconds'); + } + }, + { + ldml: 'S ms', + strfPadding: 3, + ldmlPaddedToken: 'SSS', + get: function(d) { + return callDateGet(d, 'Milliseconds'); + } + }, + { + ldml: 'e', + strf: 'u', + ordinalToken: 'eo', + get: function(d) { + return getWeekday(d) || 7; + } + }, + { + strf: 'U', + strfPadding: 2, + get: function(d) { + // Sunday first, 0-53 + return getWeekNumber(d, false, 0); + } + }, + { + ldml: 'W', + strf: 'V', + strfPadding: 2, + ordinalToken: 'Wo', + ldmlPaddedToken: 'WW', + get: function(d) { + // Monday first, 1-53 (ISO8601) + return getWeekNumber(d, true); + } + }, + { + strf: 'w', + get: function(d) { + return getWeekday(d); + } + }, + { + ldml: 'w', + ordinalToken: 'wo', + ldmlPaddedToken: 'ww', + get: function(d, localeCode) { + // Locale dependent, 1-53 + var loc = localeManager.get(localeCode), + dow = loc.getFirstDayOfWeek(localeCode), + doy = loc.getFirstDayOfWeekYear(localeCode); + return getWeekNumber(d, true, dow, doy); + } + }, + { + strf: 'W', + strfPadding: 2, + get: function(d) { + // Monday first, 0-53 + return getWeekNumber(d, false); + } + }, + { + ldmlPaddedToken: 'gggg', + ldmlTwoDigitToken: 'gg', + get: function(d, localeCode) { + return getWeekYear(d, localeCode); + } + }, + { + strf: 'G', + strfPadding: 4, + strfTwoDigitToken: 'g', + ldmlPaddedToken: 'GGGG', + ldmlTwoDigitToken: 'GG', + get: function(d, localeCode) { + return getWeekYear(d, localeCode, true); + } + }, + { + ldml: 'year', + ldmlPaddedToken: 'yyyy', + ldmlTwoDigitToken: 'yy', + strf: 'Y', + strfPadding: 4, + strfTwoDigitToken: 'y', + get: function(d) { + return getYear(d); + } + }, + { + ldml: 'ZZ', + strf: 'z', + get: function(d) { + return getUTCOffset(d); + } + }, + { + ldml: 'X', + get: function(d) { + return trunc(d.getTime() / 1000); + } + }, + { + ldml: 'x', + get: function(d) { + return d.getTime(); + } + }, + { + ldml: 'Z', + get: function(d) { + return getUTCOffset(d, true); + } + }, + { + ldml: 'z', + strf: 'Z', + get: function(d) { + // Note that this is not accurate in all browsing environments! + // https://github.com/moment/moment/issues/162 + // It will continue to be supported for Node and usage with the + // understanding that it may be blank. + var match = d.toString().match(TIMEZONE_ABBREVIATION_REG); + return match ? match[1]: ''; + } + }, + { + strf: 'D', + alias: '%m/%d/%y' + }, + { + strf: 'F', + alias: '%Y-%m-%d' + }, + { + strf: 'r', + alias: '%I:%M:%S %p' + }, + { + strf: 'R', + alias: '%H:%M' + }, + { + strf: 'T', + alias: '%H:%M:%S' + }, + { + strf: 'x', + alias: '{short}' + }, + { + strf: 'X', + alias: '{time}' + }, + { + strf: 'c', + alias: '{stamp}' + } +]; + +module.exports = FormatTokensBase; + +/***/ }), +/* 294 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LOCALE_ARRAY_FIELDS = [ + 'months', 'weekdays', 'units', 'numerals', 'placeholders', + 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes', + 'parse', 'timeParse', 'timeFrontParse', 'modifiers' +]; + +module.exports = LOCALE_ARRAY_FIELDS; + +/***/ }), +/* 295 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BritishEnglishDefinition = __webpack_require__(288), + AmericanEnglishDefinition = __webpack_require__(95), + CanadianEnglishDefinition = __webpack_require__(289); + +var LazyLoadedLocales = { + 'en-US': AmericanEnglishDefinition, + 'en-GB': BritishEnglishDefinition, + 'en-AU': BritishEnglishDefinition, + 'en-CA': CanadianEnglishDefinition +}; + +module.exports = LazyLoadedLocales; + +/***/ }), +/* 296 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = /(\w{3})[()\s\d]*$/; + +/***/ }), +/* 297 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LocaleHelpers = __webpack_require__(8), + FormatTokensBase = __webpack_require__(293), + CoreOutputFormats = __webpack_require__(96), + forEach = __webpack_require__(26), + padNumber = __webpack_require__(54), + spaceSplit = __webpack_require__(43), + namespaceAliases = __webpack_require__(22), + coreUtilityAliases = __webpack_require__(10), + createFormatMatcher = __webpack_require__(131), + defineInstanceSimilar = __webpack_require__(41); + +var localeManager = LocaleHelpers.localeManager, + hasOwn = coreUtilityAliases.hasOwn, + getOwn = coreUtilityAliases.getOwn, + forEachProperty = coreUtilityAliases.forEachProperty, + sugarDate = namespaceAliases.sugarDate; + +var ldmlTokens, strfTokens; + +function buildDateFormatTokens() { + + function addFormats(target, tokens, fn) { + if (tokens) { + forEach(spaceSplit(tokens), function(token) { + target[token] = fn; + }); + } + } + + function buildLowercase(get) { + return function(d, localeCode) { + return get(d, localeCode).toLowerCase(); + }; + } + + function buildOrdinal(get) { + return function(d, localeCode) { + var n = get(d, localeCode); + return n + localeManager.get(localeCode).getOrdinal(n); + }; + } + + function buildPadded(get, padding) { + return function(d, localeCode) { + return padNumber(get(d, localeCode), padding); + }; + } + + function buildTwoDigits(get) { + return function(d, localeCode) { + return get(d, localeCode) % 100; + }; + } + + function buildAlias(alias) { + return function(d, localeCode) { + return dateFormatMatcher(alias, d, localeCode); + }; + } + + function buildAlternates(f) { + for (var n = 1; n <= 5; n++) { + buildAlternate(f, n); + } + } + + function buildAlternate(f, n) { + var alternate = function(d, localeCode) { + return f.get(d, localeCode, n); + }; + addFormats(ldmlTokens, f.ldml + n, alternate); + if (f.lowerToken) { + ldmlTokens[f.lowerToken + n] = buildLowercase(alternate); + } + } + + function getIdentityFormat(name) { + return function(d, localeCode) { + var loc = localeManager.get(localeCode); + return dateFormatMatcher(loc[name], d, localeCode); + }; + } + + ldmlTokens = {}; + strfTokens = {}; + + forEach(FormatTokensBase, function(f) { + var get = f.get, getPadded; + if (f.lowerToken) { + ldmlTokens[f.lowerToken] = buildLowercase(get); + } + if (f.ordinalToken) { + ldmlTokens[f.ordinalToken] = buildOrdinal(get, f); + } + if (f.ldmlPaddedToken) { + ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length); + } + if (f.ldmlTwoDigitToken) { + ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2); + } + if (f.strfTwoDigitToken) { + strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2); + } + if (f.strfPadding) { + getPadded = buildPadded(get, f.strfPadding); + } + if (f.alias) { + get = buildAlias(f.alias); + } + if (f.allowAlternates) { + buildAlternates(f); + } + addFormats(ldmlTokens, f.ldml, get); + addFormats(strfTokens, f.strf, getPadded || get); + }); + + forEachProperty(CoreOutputFormats, function(src, name) { + addFormats(ldmlTokens, name, buildAlias(src)); + }); + + defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) { + var fn = getIdentityFormat(name); + addFormats(ldmlTokens, name, fn); + methods[name] = fn; + }); + + addFormats(ldmlTokens, 'time', getIdentityFormat('time')); + addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp')); +} + +var dateFormatMatcher; + +function buildDateFormatMatcher() { + + function getLdml(d, token, localeCode) { + return getOwn(ldmlTokens, token)(d, localeCode); + } + + function getStrf(d, token, localeCode) { + return getOwn(strfTokens, token)(d, localeCode); + } + + function checkDateToken(ldml, strf) { + return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf); + } + + // Format matcher for LDML or STRF tokens. + dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken); +} + +buildDateFormatTokens(); + +buildDateFormatMatcher(); + +module.exports = { + ldmlTokens: ldmlTokens, + strfTokens: strfTokens, + dateFormatMatcher: dateFormatMatcher +}; + +/***/ }), +/* 298 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.weeksAgo; + +/***/ }), +/* 299 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.weeksFromNow; + +/***/ }), +/* 300 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.weeksSince; + +/***/ }), +/* 301 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.weeksUntil; + +/***/ }), +/* 302 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.yearsAgo; + +/***/ }), +/* 303 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.yearsFromNow; + +/***/ }), +/* 304 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.yearsSince; + +/***/ }), +/* 305 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(2); + +module.exports = Sugar.Date.yearsUntil; + +/***/ }), +/* 306 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Catalan locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('ca') + * + */ +addLocale('ca', { + 'plural': true, + 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s', + 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|', + 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds', + 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu', + 'tokens': 'el,la,de', + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {month} {yyyy} {time}', + 'full': '{weekday} {d} {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{sign} {num} {unit}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'timeMarkers': 'a las', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': "abans d'ahir", 'value': -2 }, + { 'name': 'day', 'src': 'ahir', 'value': -1 }, + { 'name': 'day', 'src': 'avui', 'value': 0 }, + { 'name': 'day', 'src': 'demà|dema', 'value': 1 }, + { 'name': 'sign', 'src': 'fa', 'value': -1 }, + { 'name': 'sign', 'src': 'en', 'value': 1 }, + { 'name': 'shift', 'src': 'passat', 'value': -1 }, + { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 } + ], + 'parse': [ + '{sign} {num} {unit}', + '{num} {unit} {sign}', + '{0?}{1?} {unit:5-7} {shift}', + '{0?}{1?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift} {weekday}', + '{weekday} {shift}', + '{date?} {2?} {months}\\.? {2?} {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "ca" locale. + +/***/ }), +/* 307 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Danish locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('da') + * + */ +addLocale('da', { + 'plural': true, + 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et', + 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|', + 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|', + 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti', + 'tokens': 'den,for', + 'articles': 'den', + 'short': '{dd}-{MM}-{yyyy}', + 'medium': '{d}. {month} {yyyy}', + 'long': '{d}. {month} {yyyy} {time}', + 'full': '{weekday} d. {d}. {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 }, + { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 }, + { 'name': 'day', 'src': 'i dag|idag', 'value': 0 }, + { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 }, + { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 }, + { 'name': 'sign', 'src': 'siden', 'value': -1 }, + { 'name': 'sign', 'src': 'om', 'value': 1 }, + { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 }, + { 'name': 'shift', 'src': 'denne', 'value': 0 }, + { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{1?} {num} {unit} {sign}', + '{shift} {unit:5-7}' + ], + 'timeParse': [ + '{day|weekday}', + '{date} {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{shift} {weekday}', + '{0?} {weekday?},? {date}\\.? {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "da" locale. + +/***/ }), +/* 308 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * German locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('de') + * + */ +addLocale('de', { + 'plural': true, + 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e', + 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|', + 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|', + 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn', + 'tokens': 'der', + 'short': '{dd}.{MM}.{yyyy}', + 'medium': '{d}. {Month} {yyyy}', + 'long': '{d}. {Month} {yyyy} {time}', + 'full': '{Weekday}, {d}. {Month} {yyyy} {time}', + 'stamp': '{Dow} {d} {Mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{sign} {num} {unit}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'timeMarkers': 'um', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'vorgestern', 'value': -2 }, + { 'name': 'day', 'src': 'gestern', 'value': -1 }, + { 'name': 'day', 'src': 'heute', 'value': 0 }, + { 'name': 'day', 'src': 'morgen', 'value': 1 }, + { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 }, + { 'name': 'sign', 'src': 'vor:|her', 'value': -1 }, + { 'name': 'sign', 'src': 'in', 'value': 1 }, + { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 }, + { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{sign} {num} {unit}', + '{num} {unit} {sign}', + '{shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date}\\.? {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{shift} {weekday}', + '{weekday?},? {date}\\.? {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "de" locale. + +/***/ }), +/* 309 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Spanish locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('es') + * + */ +addLocale('es', { + 'plural': true, + 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos', + 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|', + 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|', + 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez', + 'tokens': 'el,la,de', + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} de {Month} de {yyyy}', + 'long': '{d} de {Month} de {yyyy} {time}', + 'full': '{weekday}, {d} de {month} de {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{sign} {num} {unit}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'timeMarkers': 'a las', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'anteayer', 'value': -2 }, + { 'name': 'day', 'src': 'ayer', 'value': -1 }, + { 'name': 'day', 'src': 'hoy', 'value': 0 }, + { 'name': 'day', 'src': 'mañana|manana', 'value': 1 }, + { 'name': 'sign', 'src': 'hace', 'value': -1 }, + { 'name': 'sign', 'src': 'dentro de', 'value': 1 }, + { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 }, + { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 } + ], + 'parse': [ + '{months} {2?} {year?}', + '{sign} {num} {unit}', + '{num} {unit} {sign}', + '{0?}{1?} {unit:5-7} {shift}', + '{0?}{1?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday} {shift?}', + '{date} {2?} {months?}\\.? {2?} {year?}' + ], + 'timeFrontParse': [ + '{shift?} {weekday} {shift?}', + '{date} {2?} {months?}\\.? {2?} {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "es" locale. + +/***/ }), +/* 310 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Finnish locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('fi') + * + */ +addLocale('fi', { + 'plural': true, + 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna', + 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu', + 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina', + 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s', + 'short': '{d}.{M}.{yyyy}', + 'medium': '{d}. {month} {yyyy}', + 'long': '{d}. {month} {yyyy} klo {time}', + 'full': '{weekday} {d}. {month} {yyyy} klo {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}.{mm}', + 'timeMarkers': 'klo,kello', + 'ordinalSuffix': '.', + 'relative': function(num, unit, ms, format) { + var units = this['units']; + function numberWithUnit(mult) { + return num + ' ' + units[(8 * mult) + unit]; + } + function baseUnit() { + return numberWithUnit(num === 1 ? 0 : 1); + } + switch(format) { + case 'duration': return baseUnit(); + case 'past': return baseUnit() + ' sitten'; + case 'future': return numberWithUnit(2) + ' kuluttua'; + } + }, + 'modifiers': [ + { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 }, + { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 }, + { 'name': 'day', 'src': 'tänään', 'value': 0 }, + { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 }, + { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 }, + { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 }, + { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 }, + { 'name': 'edge', 'src': 'lopussa', 'value': 2 }, + { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 }, + { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 }, + { 'name': 'shift', 'src': 'viime', 'value': -1 }, + { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 }, + { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date}\\.? {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{shift?} {day|weekday}', + '{num?} {unit} {sign}', + '{weekday?},? {date}\\.? {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "fi" locale. + +/***/ }), +/* 311 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * French locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('fr') + * + */ +addLocale('fr', { + 'plural': true, + 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee', + 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|', + 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|', + 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix', + 'tokens': "l'|la|le,er", + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {month} {yyyy} {time}', + 'full': '{weekday} {d} {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{sign} {num} {unit}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'timeMarkers': 'à', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'hier', 'value': -1 }, + { 'name': 'day', 'src': "aujourd'hui", 'value': 0 }, + { 'name': 'day', 'src': 'demain', 'value': 1 }, + { 'name': 'sign', 'src': 'il y a', 'value': -1 }, + { 'name': 'sign', 'src': "dans|d'ici", 'value': 1 }, + { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 }, + { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{sign} {num} {unit}', + '{0?} {unit:5-7} {shift}' + ], + 'timeParse': [ + '{day|weekday} {shift?}', + '{weekday?},? {0?} {date}{1?} {months}\\.? {year?}' + ], + 'timeFrontParse': [ + '{0?} {weekday} {shift}', + '{weekday?},? {0?} {date}{1?} {months}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "fr" locale. + +/***/ }), +/* 312 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(306); +__webpack_require__(307); +__webpack_require__(308); +__webpack_require__(309); +__webpack_require__(310); +__webpack_require__(311); +__webpack_require__(313); +__webpack_require__(314); +__webpack_require__(315); +__webpack_require__(316); +__webpack_require__(317); +__webpack_require__(318); +__webpack_require__(319); +__webpack_require__(320); +__webpack_require__(321); +__webpack_require__(322); +__webpack_require__(323); + +module.exports = __webpack_require__(0); + +/***/ }), +/* 313 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Italian locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('it') + * + */ +addLocale('it', { + 'plural': true, + 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i', + 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|', + 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|', + 'numerals': "zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci", + 'tokens': "l'|la|il", + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {month} {yyyy} {time}', + 'full': '{weekday}, {d} {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{num} {unit} {sign}', + 'duration': '{num} {unit}', + 'timeMarkers': 'alle', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'ieri', 'value': -1 }, + { 'name': 'day', 'src': 'oggi', 'value': 0 }, + { 'name': 'day', 'src': 'domani', 'value': 1 }, + { 'name': 'day', 'src': 'dopodomani', 'value': 2 }, + { 'name': 'sign', 'src': 'fa', 'value': -1 }, + { 'name': 'sign', 'src': 'da adesso', 'value': 1 }, + { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 }, + { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{num} {unit} {sign}', + '{0?} {unit:5-7} {shift}', + '{0?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date} {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date} {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "it" locale. + +/***/ }), +/* 314 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Japanese locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('ja') + * + */ +addLocale('ja', { + 'ampmFront': true, + 'numeralUnits': true, + 'allowsFullWidth': true, + 'timeMarkerOptional': true, + 'firstDayOfWeek': 0, + 'firstDayOfWeekYear': 1, + 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度', + 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜', + 'numerals': '〇,一,二,三,四,五,六,七,八,九', + 'placeholders': '十,百,千,万', + 'timeSuffixes': ',秒,分,時,日,,月,年度?', + 'short': '{yyyy}/{MM}/{dd}', + 'medium': '{yyyy}年{M}月{d}日', + 'long': '{yyyy}年{M}月{d}日{time}', + 'full': '{yyyy}年{M}月{d}日{time} {weekday}', + 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}', + 'time': '{tt}{h}時{mm}分', + 'past': '{num}{unit}{sign}', + 'future': '{num}{unit}{sign}', + 'duration': '{num}{unit}', + 'ampm': '午前,午後', + 'modifiers': [ + { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 }, + { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 }, + { 'name': 'day', 'src': '昨日|前日', 'value': -1 }, + { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 }, + { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 }, + { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 }, + { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 }, + { 'name': 'sign', 'src': '前', 'value': -1 }, + { 'name': 'sign', 'src': '後', 'value': 1 }, + { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 }, + { 'name': 'edge', 'src': '末|尻', 'value': 2 }, + { 'name': 'edge', 'src': '末日', 'value': 1 }, + { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 }, + { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 }, + { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 }, + { 'name': 'shift', 'src': '今|本|当', 'value': 0 }, + { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 }, + { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 }, + { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 } + ], + 'parse': [ + '{month}{edge}', + '{num}{unit}{sign}', + '{year?}{month}', + '{year}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift}{unit:5}{weekday?}', + '{shift}{unit:7}{month}{edge}', + '{shift}{unit:7}{month?}{date?}', + '{shift}{unit:6}{edge?}{date?}', + '{year?}{month?}{date}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "ja" locale. + +/***/ }), +/* 315 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Korean locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('ko') + * + */ +addLocale('ko', { + 'ampmFront': true, + 'numeralUnits': true, + 'units': '밀리초,초,분,시간,일,주,개월|달,년|해', + 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|', + 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십', + 'short': '{yyyy}.{MM}.{dd}', + 'medium': '{yyyy}년 {M}월 {d}일', + 'long': '{yyyy}년 {M}월 {d}일 {time}', + 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}', + 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}', + 'time': '{tt} {h}시 {mm}분', + 'past': '{num}{unit} {sign}', + 'future': '{num}{unit} {sign}', + 'duration': '{num}{unit}', + 'timeSuffixes': ',초,분,시,일,,월,년', + 'ampm': '오전,오후', + 'modifiers': [ + { 'name': 'day', 'src': '그저께', 'value': -2 }, + { 'name': 'day', 'src': '어제', 'value': -1 }, + { 'name': 'day', 'src': '오늘', 'value': 0 }, + { 'name': 'day', 'src': '내일', 'value': 1 }, + { 'name': 'day', 'src': '모레', 'value': 2 }, + { 'name': 'sign', 'src': '전', 'value': -1 }, + { 'name': 'sign', 'src': '후', 'value': 1 }, + { 'name': 'shift', 'src': '지난|작', 'value': -1 }, + { 'name': 'shift', 'src': '이번|올', 'value': 0 }, + { 'name': 'shift', 'src': '다음|내', 'value': 1 } + ], + 'parse': [ + '{num}{unit} {sign}', + '{shift?} {unit:5-7}', + '{year?} {month}', + '{year}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift} {unit:5?} {weekday}', + '{year?} {month?} {date} {weekday?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "ko" locale. + +/***/ }), +/* 316 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Dutch locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('nl') + * + */ +addLocale('nl', { + 'plural': true, + 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar', + 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|', + 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za', + 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien', + 'short': '{dd}-{MM}-{yyyy}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {Month} {yyyy} {time}', + 'full': '{weekday} {d} {Month} {yyyy} {time}', + 'stamp': '{dow} {d} {Mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{num} {unit} {sign}', + 'duration': '{num} {unit}', + 'timeMarkers': "'s,om", + 'modifiers': [ + { 'name': 'day', 'src': 'gisteren', 'value': -1 }, + { 'name': 'day', 'src': 'vandaag', 'value': 0 }, + { 'name': 'day', 'src': 'morgen', 'value': 1 }, + { 'name': 'day', 'src': 'overmorgen', 'value': 2 }, + { 'name': 'sign', 'src': 'geleden', 'value': -1 }, + { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 }, + { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 }, + { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{num} {unit} {sign}', + '{0?} {unit:5-7} {shift}', + '{0?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date} {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{shift?} {day|weekday}', + '{weekday?},? {date} {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "nl" locale. + +/***/ }), +/* 317 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Norwegian locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('no') + * + */ +addLocale('no', { + 'plural': true, + 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et', + 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember', + 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag', + 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti', + 'tokens': 'den,for', + 'articles': 'den', + 'short':'d. {d}. {month} {yyyy}', + 'long': 'den {d}. {month} {yyyy} {H}:{mm}', + 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}', + 'past': '{num} {unit} {sign}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 }, + { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 }, + { 'name': 'day', 'src': 'i dag|idag', 'value': 0 }, + { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 }, + { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 }, + { 'name': 'sign', 'src': 'siden', 'value': -1 }, + { 'name': 'sign', 'src': 'om', 'value': 1 }, + { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 }, + { 'name': 'shift', 'src': 'denne', 'value': 0 }, + { 'name': 'shift', 'src': 'neste', 'value': 1 } + ], + 'parse': [ + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{1?} {num} {unit} {sign}', + '{shift} {unit:5-7}' + ], + 'timeParse': [ + '{date} {month}', + '{shift} {weekday}', + '{0?} {weekday?},? {date?} {month}\\.? {year}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "no" locale. + +/***/ }), +/* 318 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Polish locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('pl') + * + */ +addLocale('pl', { + 'plural': true, + 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat', + 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień', + 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę', + 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć', + 'tokens': 'w|we,roku', + 'short': '{dd}.{MM}.{yyyy}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {month} {yyyy} {time}', + 'full' : '{weekday}, {d} {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'timeMarkers': 'o', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 }, + { 'name': 'day', 'src': 'wczoraj', 'value': -1 }, + { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 }, + { 'name': 'day', 'src': 'jutro', 'value': 1 }, + { 'name': 'day', 'src': 'pojutrze', 'value': 2 }, + { 'name': 'sign', 'src': 'temu|przed', 'value': -1 }, + { 'name': 'sign', 'src': 'za', 'value': 1 }, + { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 }, + { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 } + ], + 'relative': function (num, unit, ms, format) { + // special cases for relative days + var DAY = 4; + if (unit === DAY) { + if (num === 1 && format === 'past') return 'wczoraj'; + if (num === 1 && format === 'future') return 'jutro'; + if (num === 2 && format === 'past') return 'przedwczoraj'; + if (num === 2 && format === 'future') return 'pojutrze'; + } + + var mult; + var last = +num.toFixed(0).slice(-1); + var last2 = +num.toFixed(0).slice(-2); + switch (true) { + case num === 1: mult = 0; break; + case last2 >= 12 && last2 <= 14: mult = 2; break; + case last >= 2 && last <= 4: mult = 1; break; + default: mult = 2; + } + var text = this['units'][(mult * 8) + unit]; + var prefix = num + ' '; + + // changing to accusative case for 'past' and 'future' formats + // (only singular feminine unit words are different in accusative, each of which ends with 'a') + if ((format === 'past' || format === 'future') && num === 1) { + text = text.replace(/a$/, 'ę'); + } + + text = prefix + text; + switch (format) { + case 'duration': return text; + case 'past': return text + ' temu'; + case 'future': return 'za ' + text; + } + }, + 'parse': [ + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{months} {year?}', + '{shift} {unit:5-7}', + '{0} {shift?} {weekday}' + ], + 'timeFrontParse': [ + '{day|weekday}', + '{date} {months} {year?} {1?}', + '{0?} {shift?} {weekday}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "pl" locale. + +/***/ }), +/* 319 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Portuguese locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('pt') + * + */ +addLocale('pt', { + 'plural': true, + 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s', + 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|', + 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado', + 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez', + 'tokens': 'a,de', + 'short': '{dd}/{MM}/{yyyy}', + 'medium': '{d} de {Month} de {yyyy}', + 'long': '{d} de {Month} de {yyyy} {time}', + 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}', + 'stamp': '{Dow} {d} {Mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'timeMarkers': 'às', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'anteontem', 'value': -2 }, + { 'name': 'day', 'src': 'ontem', 'value': -1 }, + { 'name': 'day', 'src': 'hoje', 'value': 0 }, + { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 }, + { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 }, + { 'name': 'sign', 'src': 'daqui a', 'value': 1 }, + { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 }, + { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 } + ], + 'parse': [ + '{months} {1?} {year?}', + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{0?} {unit:5-7} {shift}', + '{0?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{shift?} {day|weekday}', + '{0?} {shift} {weekday}', + '{date} {1?} {months?} {1?} {year?}' + ], + 'timeFrontParse': [ + '{shift?} {day|weekday}', + '{date} {1?} {months?} {1?} {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "pt" locale. + +/***/ }), +/* 320 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Russian locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('ru') + * + */ +addLocale('ru', { + 'firstDayOfWeekYear': 1, + 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году', + 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь', + 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб', + 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять', + 'tokens': 'в|на,г\\.?(?:ода)?', + 'short': '{dd}.{MM}.{yyyy}', + 'medium': '{d} {month} {yyyy} г.', + 'long': '{d} {month} {yyyy} г., {time}', + 'full': '{weekday}, {d} {month} {yyyy} г., {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'timeMarkers': 'в', + 'ampm': ' утра, вечера', + 'modifiers': [ + { 'name': 'day', 'src': 'позавчера', 'value': -2 }, + { 'name': 'day', 'src': 'вчера', 'value': -1 }, + { 'name': 'day', 'src': 'сегодня', 'value': 0 }, + { 'name': 'day', 'src': 'завтра', 'value': 1 }, + { 'name': 'day', 'src': 'послезавтра', 'value': 2 }, + { 'name': 'sign', 'src': 'назад', 'value': -1 }, + { 'name': 'sign', 'src': 'через', 'value': 1 }, + { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 }, + { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 } + ], + 'relative': function(num, unit, ms, format) { + var numberWithUnit, last = num.toString().slice(-1), mult; + switch(true) { + case num >= 11 && num <= 15: mult = 3; break; + case last == 1: mult = 1; break; + case last >= 2 && last <= 4: mult = 2; break; + default: mult = 3; + } + numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit]; + switch(format) { + case 'duration': return numberWithUnit; + case 'past': return numberWithUnit + ' назад'; + case 'future': return 'через ' + numberWithUnit; + } + }, + 'parse': [ + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{months} {year?}', + '{0?} {shift} {unit:5-7}' + ], + 'timeParse': [ + '{day|weekday}', + '{0?} {shift} {weekday}', + '{date} {months?} {year?} {1?}' + ], + 'timeFrontParse': [ + '{0?} {shift} {weekday}', + '{date} {months?} {year?} {1?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "ru" locale. + +/***/ }), +/* 321 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Swedish locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('sv') + * + */ +addLocale('sv', { + 'plural': true, + 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et', + 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|', + 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag', + 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio', + 'tokens': 'den,för|for', + 'articles': 'den', + 'short': '{yyyy}-{MM}-{dd}', + 'medium': '{d} {month} {yyyy}', + 'long': '{d} {month} {yyyy} {time}', + 'full': '{weekday} {d} {month} {yyyy} {time}', + 'stamp': '{dow} {d} {mon} {yyyy} {time}', + 'time': '{H}:{mm}', + 'past': '{num} {unit} {sign}', + 'future': '{sign} {num} {unit}', + 'duration': '{num} {unit}', + 'ampm': 'am,pm', + 'modifiers': [ + { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 }, + { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 }, + { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 }, + { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 }, + { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 }, + { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 }, + { 'name': 'sign', 'src': 'om', 'value': 1 }, + { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 }, + { 'name': 'shift', 'src': 'denna', 'value': 0 }, + { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 } + ], + 'parse': [ + '{months} {year?}', + '{num} {unit} {sign}', + '{sign} {num} {unit}', + '{1?} {num} {unit} {sign}', + '{shift} {unit:5-7}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift} {weekday}', + '{0?} {weekday?},? {date} {months?}\\.? {year?}' + ], + 'timeFrontParse': [ + '{day|weekday}', + '{shift} {weekday}', + '{0?} {weekday?},? {date} {months?}\\.? {year?}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "sv" locale. + +/***/ }), +/* 322 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Simplified Chinese locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('zh-CN') + * + */ +addLocale('zh-CN', { + 'ampmFront': true, + 'numeralUnits': true, + 'allowsFullWidth': true, + 'timeMarkerOptional': true, + 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年', + 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六', + 'numerals': '〇,一,二,三,四,五,六,七,八,九', + 'placeholders': '十,百,千,万', + 'short': '{yyyy}-{MM}-{dd}', + 'medium': '{yyyy}年{M}月{d}日', + 'long': '{yyyy}年{M}月{d}日{time}', + 'full': '{yyyy}年{M}月{d}日{weekday}{time}', + 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}', + 'time': '{tt}{h}点{mm}分', + 'past': '{num}{unit}{sign}', + 'future': '{num}{unit}{sign}', + 'duration': '{num}{unit}', + 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年', + 'ampm': '上午,下午', + 'modifiers': [ + { 'name': 'day', 'src': '大前天', 'value': -3 }, + { 'name': 'day', 'src': '前天', 'value': -2 }, + { 'name': 'day', 'src': '昨天', 'value': -1 }, + { 'name': 'day', 'src': '今天', 'value': 0 }, + { 'name': 'day', 'src': '明天', 'value': 1 }, + { 'name': 'day', 'src': '后天', 'value': 2 }, + { 'name': 'day', 'src': '大后天', 'value': 3 }, + { 'name': 'sign', 'src': '前', 'value': -1 }, + { 'name': 'sign', 'src': '后', 'value': 1 }, + { 'name': 'shift', 'src': '上|去', 'value': -1 }, + { 'name': 'shift', 'src': '这', 'value': 0 }, + { 'name': 'shift', 'src': '下|明', 'value': 1 } + ], + 'parse': [ + '{num}{unit}{sign}', + '{shift}{unit:5-7}', + '{year?}{month}', + '{year}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift}{weekday}', + '{year?}{month?}{date}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "zh-CN" locale. + +/***/ }), +/* 323 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var addLocale = __webpack_require__(4); + +/* + * Traditional Chinese locale definition. + * See the readme for customization and more information. + * To set this locale globally: + * + * Sugar.Date.setLocale('zh-TW') + * + */ +addLocale('zh-TW', { + 'ampmFront': true, + 'numeralUnits': true, + 'allowsFullWidth': true, + 'timeMarkerOptional': true, + 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年', + 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六', + 'numerals': '〇,一,二,三,四,五,六,七,八,九', + 'placeholders': '十,百,千,万', + 'short': '{yyyy}/{MM}/{dd}', + 'medium': '{yyyy}年{M}月{d}日', + 'long': '{yyyy}年{M}月{d}日{time}', + 'full': '{yyyy}年{M}月{d}日{weekday}{time}', + 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}', + 'time': '{tt}{h}點{mm}分', + 'past': '{num}{unit}{sign}', + 'future': '{num}{unit}{sign}', + 'duration': '{num}{unit}', + 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年', + 'ampm': '上午,下午', + 'modifiers': [ + { 'name': 'day', 'src': '大前天', 'value': -3 }, + { 'name': 'day', 'src': '前天', 'value': -2 }, + { 'name': 'day', 'src': '昨天', 'value': -1 }, + { 'name': 'day', 'src': '今天', 'value': 0 }, + { 'name': 'day', 'src': '明天', 'value': 1 }, + { 'name': 'day', 'src': '後天', 'value': 2 }, + { 'name': 'day', 'src': '大後天', 'value': 3 }, + { 'name': 'sign', 'src': '前', 'value': -1 }, + { 'name': 'sign', 'src': '後', 'value': 1 }, + { 'name': 'shift', 'src': '上|去', 'value': -1 }, + { 'name': 'shift', 'src': '這', 'value': 0 }, + { 'name': 'shift', 'src': '下|明', 'value': 1 } + ], + 'parse': [ + '{num}{unit}{sign}', + '{shift}{unit:5-7}', + '{year?}{month}', + '{year}' + ], + 'timeParse': [ + '{day|weekday}', + '{shift}{weekday}', + '{year?}{month?}{date}' + ] +}); + + +// This package does not export anything as it is +// simply registering the "zh-TW" locale. + +/***/ }), +/* 324 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.day; + +/***/ }), +/* 325 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.dayAfter; + +/***/ }), +/* 326 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.dayAgo; + +/***/ }), +/* 327 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.dayBefore; + +/***/ }), +/* 328 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.dayFromNow; + +/***/ }), +/* 329 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.days; + +/***/ }), +/* 330 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.daysAfter; + +/***/ }), +/* 331 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.daysAgo; + +/***/ }), +/* 332 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.daysBefore; + +/***/ }), +/* 333 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.daysFromNow; + +/***/ }), +/* 334 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0), + LocaleHelpers = __webpack_require__(8); + +var localeManager = LocaleHelpers.localeManager; + +Sugar.Number.defineInstance({ + + 'duration': function(n, localeCode) { + return localeManager.get(localeCode).getDuration(n); + } + +}); + +module.exports = Sugar.Number.duration; + +/***/ }), +/* 335 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hour; + +/***/ }), +/* 336 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hourAfter; + +/***/ }), +/* 337 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hourAgo; + +/***/ }), +/* 338 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hourBefore; + +/***/ }), +/* 339 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hourFromNow; + +/***/ }), +/* 340 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hours; + +/***/ }), +/* 341 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hoursAfter; + +/***/ }), +/* 342 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hoursAgo; + +/***/ }), +/* 343 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hoursBefore; + +/***/ }), +/* 344 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.hoursFromNow; + +/***/ }), +/* 345 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecond; + +/***/ }), +/* 346 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondAfter; + +/***/ }), +/* 347 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondAgo; + +/***/ }), +/* 348 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondBefore; + +/***/ }), +/* 349 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondFromNow; + +/***/ }), +/* 350 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.milliseconds; + +/***/ }), +/* 351 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondsAfter; + +/***/ }), +/* 352 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondsAgo; + +/***/ }), +/* 353 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondsBefore; + +/***/ }), +/* 354 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.millisecondsFromNow; + +/***/ }), +/* 355 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minute; + +/***/ }), +/* 356 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minuteAfter; + +/***/ }), +/* 357 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minuteAgo; + +/***/ }), +/* 358 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minuteBefore; + +/***/ }), +/* 359 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minuteFromNow; + +/***/ }), +/* 360 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minutes; + +/***/ }), +/* 361 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minutesAfter; + +/***/ }), +/* 362 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minutesAgo; + +/***/ }), +/* 363 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minutesBefore; + +/***/ }), +/* 364 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.minutesFromNow; + +/***/ }), +/* 365 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.month; + +/***/ }), +/* 366 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthAfter; + +/***/ }), +/* 367 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthAgo; + +/***/ }), +/* 368 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthBefore; + +/***/ }), +/* 369 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthFromNow; + +/***/ }), +/* 370 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.months; + +/***/ }), +/* 371 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthsAfter; + +/***/ }), +/* 372 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthsAgo; + +/***/ }), +/* 373 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthsBefore; + +/***/ }), +/* 374 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.monthsFromNow; + +/***/ }), +/* 375 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.second; + +/***/ }), +/* 376 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondAfter; + +/***/ }), +/* 377 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondAgo; + +/***/ }), +/* 378 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondBefore; + +/***/ }), +/* 379 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondFromNow; + +/***/ }), +/* 380 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.seconds; + +/***/ }), +/* 381 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondsAfter; + +/***/ }), +/* 382 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondsAgo; + +/***/ }), +/* 383 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondsBefore; + +/***/ }), +/* 384 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.secondsFromNow; + +/***/ }), +/* 385 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.week; + +/***/ }), +/* 386 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weekAfter; + +/***/ }), +/* 387 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weekAgo; + +/***/ }), +/* 388 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weekBefore; + +/***/ }), +/* 389 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weekFromNow; + +/***/ }), +/* 390 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weeks; + +/***/ }), +/* 391 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weeksAfter; + +/***/ }), +/* 392 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weeksAgo; + +/***/ }), +/* 393 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weeksBefore; + +/***/ }), +/* 394 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.weeksFromNow; + +/***/ }), +/* 395 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.year; + +/***/ }), +/* 396 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearAfter; + +/***/ }), +/* 397 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearAgo; + +/***/ }), +/* 398 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearBefore; + +/***/ }), +/* 399 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearFromNow; + +/***/ }), +/* 400 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.years; + +/***/ }), +/* 401 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearsAfter; + +/***/ }), +/* 402 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearsAgo; + +/***/ }), +/* 403 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearsBefore; + +/***/ }), +/* 404 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Sugar = __webpack_require__(0); + +__webpack_require__(1); + +module.exports = Sugar.Number.yearsFromNow; + +/***/ }), +/* 405 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + rangeClamp = __webpack_require__(420), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'clamp': function(el) { + return rangeClamp(this, el); + } + +}); + +// This package does not export anything as it is +// simply defining "clamp" on Range.prototype. + +/***/ }), +/* 406 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'clone': function() { + return new Range(this.start, this.end); + } + +}); + +// This package does not export anything as it is +// simply defining "clone" on Range.prototype. + +/***/ }), +/* 407 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'contains': function(el) { + if (el == null) return false; + if (el.start && el.end) { + return el.start >= this.start && el.start <= this.end && + el.end >= this.start && el.end <= this.end; + } else { + return el >= this.start && el <= this.end; + } + } + +}); + +// This package does not export anything as it is +// simply defining "contains" on Range.prototype. + +/***/ }), +/* 408 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "days" on Range.prototype. + +/***/ }), +/* 409 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + rangeEvery = __webpack_require__(65), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'every': function(amount, fn) { + return rangeEvery(this, amount, false, fn); + } + +}); + +// This package does not export anything as it is +// simply defining "every" on Range.prototype. + +/***/ }), +/* 410 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "hours" on Range.prototype. + +/***/ }), +/* 411 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// Static Methods +__webpack_require__(272); + +// Prototype Methods +__webpack_require__(405); +__webpack_require__(406); +__webpack_require__(407); +__webpack_require__(408); +__webpack_require__(409); +__webpack_require__(410); +__webpack_require__(422); +__webpack_require__(423); +__webpack_require__(424); +__webpack_require__(425); +__webpack_require__(426); +__webpack_require__(427); +__webpack_require__(428); +__webpack_require__(429); +__webpack_require__(430); +__webpack_require__(431); +__webpack_require__(436); +__webpack_require__(437); + +module.exports = __webpack_require__(0); + +/***/ }), +/* 412 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var MULTIPLIERS = __webpack_require__(106), + DURATION_UNITS = __webpack_require__(66), + Range = __webpack_require__(13), + trunc = __webpack_require__(23), + forEach = __webpack_require__(26), + rangeEvery = __webpack_require__(65), + simpleCapitalize = __webpack_require__(55), + defineOnPrototype = __webpack_require__(16); + +function buildDateRangeUnits() { + var methods = {}; + forEach(DURATION_UNITS.split('|'), function(unit, i) { + var name = unit + 's', mult, fn; + if (i < 4) { + fn = function() { + return rangeEvery(this, unit, true); + }; + } else { + mult = MULTIPLIERS[simpleCapitalize(name)]; + fn = function() { + return trunc((this.end - this.start) / mult); + }; + } + methods[name] = fn; + }); + defineOnPrototype(Range, methods); +} + +module.exports = buildDateRangeUnits; + +/***/ }), +/* 413 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + DurationTextFormats = __webpack_require__(434), + incrementDate = __webpack_require__(105), + getDateForRange = __webpack_require__(102), + namespaceAliases = __webpack_require__(22), + getDateIncrementObject = __webpack_require__(103); + +var sugarDate = namespaceAliases.sugarDate, + RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO, + RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION, + RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION; + +function createDateRangeFromString(str) { + var match, datetime, duration, dio, start, end; + if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) { + start = getDateForRange(match[1].replace('from', 'at')); + end = sugarDate.get(start, match[2]); + return new Range(start, end); + } + if (match = str.match(RANGE_REG_FRONT_DURATION)) { + duration = match[1]; + datetime = match[2]; + } + if (match = str.match(RANGE_REG_REAR_DURATION)) { + datetime = match[1]; + duration = match[2]; + } + if (datetime && duration) { + start = getDateForRange(datetime); + dio = getDateIncrementObject(duration); + end = incrementDate(start, dio[0], dio[1]); + } else { + start = str; + } + return new Range(getDateForRange(start), getDateForRange(end)); +} + +module.exports = createDateRangeFromString; + +/***/ }), +/* 414 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var mathAliases = __webpack_require__(7), + getPrecision = __webpack_require__(415); + +var max = mathAliases.max; + +function getGreaterPrecision(n1, n2) { + return max(getPrecision(n1), getPrecision(n2)); +} + +module.exports = getGreaterPrecision; + +/***/ }), +/* 415 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var periodSplit = __webpack_require__(146); + +function getPrecision(n) { + var split = periodSplit(n.toString()); + return split[1] ? split[1].length : 0; +} + +module.exports = getPrecision; + +/***/ }), +/* 416 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var classChecks = __webpack_require__(3); + +var isString = classChecks.isString; + +function getRangeMemberNumericValue(m) { + return isString(m) ? m.charCodeAt(0) : m; +} + +module.exports = getRangeMemberNumericValue; + +/***/ }), +/* 417 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var withPrecision = __webpack_require__(74); + +function incrementNumber(current, amount, precision) { + return withPrecision(current + amount, precision); +} + +module.exports = incrementNumber; + +/***/ }), +/* 418 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var chr = __webpack_require__(75); + +function incrementString(current, amount) { + return chr(current.charCodeAt(0) + amount); +} + +module.exports = incrementString; + +/***/ }), +/* 419 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var valueIsNotInfinite = __webpack_require__(421), + getRangeMemberPrimitiveValue = __webpack_require__(104); + +function isValidRangeMember(m) { + var val = getRangeMemberPrimitiveValue(m); + return (!!val || val === 0) && valueIsNotInfinite(m); +} + +module.exports = isValidRangeMember; + +/***/ }), +/* 420 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var cloneRangeMember = __webpack_require__(101); + +function rangeClamp(range, obj) { + var clamped, + start = range.start, + end = range.end, + min = end < start ? end : start, + max = start > end ? start : end; + if (obj < min) { + clamped = min; + } else if (obj > max) { + clamped = max; + } else { + clamped = obj; + } + return cloneRangeMember(clamped); +} + +module.exports = rangeClamp; + +/***/ }), +/* 421 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function valueIsNotInfinite(m) { + return m !== -Infinity && m !== Infinity; +} + +module.exports = valueIsNotInfinite; + +/***/ }), +/* 422 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'intersect': function(range) { + if (range.start > this.end || range.end < this.start) { + return new Range(NaN, NaN); + } + return new Range( + this.start > range.start ? this.start : range.start, + this.end < range.end ? this.end : range.end + ); + } + +}); + +// This package does not export anything as it is +// simply defining "intersect" on Range.prototype. + +/***/ }), +/* 423 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + rangeIsValid = __webpack_require__(51), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'isValid': function() { + return rangeIsValid(this); + } + +}); + +// This package does not export anything as it is +// simply defining "isValid" on Range.prototype. + +/***/ }), +/* 424 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "milliseconds" on Range.prototype. + +/***/ }), +/* 425 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "minutes" on Range.prototype. + +/***/ }), +/* 426 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "months" on Range.prototype. + +/***/ }), +/* 427 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "seconds" on Range.prototype. + +/***/ }), +/* 428 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + mathAliases = __webpack_require__(7), + rangeIsValid = __webpack_require__(51), + defineOnPrototype = __webpack_require__(16), + getRangeMemberNumericValue = __webpack_require__(416); + +var abs = mathAliases.abs; + +defineOnPrototype(Range, { + + 'span': function() { + var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start); + return rangeIsValid(this) ? abs(n) + 1 : NaN; + } + +}); + +// This package does not export anything as it is +// simply defining "span" on Range.prototype. + +/***/ }), +/* 429 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + rangeEvery = __webpack_require__(65), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'toArray': function() { + return rangeEvery(this); + } + +}); + +// This package does not export anything as it is +// simply defining "toArray" on Range.prototype. + +/***/ }), +/* 430 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + rangeIsValid = __webpack_require__(51), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'toString': function() { + return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range'; + } + +}); + +// This package does not export anything as it is +// simply defining "toString" on Range.prototype. + +/***/ }), +/* 431 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + defineOnPrototype = __webpack_require__(16); + +defineOnPrototype(Range, { + + 'union': function(range) { + return new Range( + this.start < range.start ? this.start : range.start, + this.end > range.end ? this.end : range.end + ); + } + +}); + +// This package does not export anything as it is +// simply defining "union" on Range.prototype. + +/***/ }), +/* 432 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DURATION_UNITS = __webpack_require__(66); + +module.exports = RegExp('(\\d+)?\\s*('+ DURATION_UNITS +')s?', 'i'); + +/***/ }), +/* 433 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Range = __webpack_require__(13), + classChecks = __webpack_require__(3), + getDateForRange = __webpack_require__(102), + createDateRangeFromString = __webpack_require__(413); + +var isString = classChecks.isString; + +var DateRangeConstructor = function(start, end) { + if (arguments.length === 1 && isString(start)) { + return createDateRangeFromString(start); + } + return new Range(getDateForRange(start), getDateForRange(end)); +}; + +module.exports = DateRangeConstructor; + +/***/ }), +/* 434 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var FULL_CAPTURED_DURATION = __webpack_require__(435); + +module.exports = { + RANGE_REG_FROM_TO: /(?:from)?\s*(.+)\s+(?:to|until)\s+(.+)$/i, + RANGE_REG_REAR_DURATION: RegExp('(.+)\\s*for\\s*' + FULL_CAPTURED_DURATION, 'i'), + RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\s*'+ FULL_CAPTURED_DURATION +'\\s*(?:starting)?\\s(?:at\\s)?(.+)', 'i') +}; + +/***/ }), +/* 435 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DURATION_UNITS = __webpack_require__(66); + +module.exports = '((?:\\d+)?\\s*(?:' + DURATION_UNITS + '))s?'; + +/***/ }), +/* 436 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "weeks" on Range.prototype. + +/***/ }), +/* 437 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(25); + +// This package does not export anything as it is +// simply defining "years" on Range.prototype. + +/***/ }) +/******/ ]); +}); //# sourceMappingURL=tablefilter.js.map \ No newline at end of file diff --git a/dist/tablefilter/tablefilter.js.map b/dist/tablefilter/tablefilter.js.map index 6fa0765b..aa070729 100644 --- a/dist/tablefilter/tablefilter.js.map +++ b/dist/tablefilter/tablefilter.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///tablefilter.js","webpack:///webpack/bootstrap de20f8ff394dde594434","webpack:///./~/sugar-core/sugar-core.js","webpack:///./~/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./~/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./~/sugar-date/common/var/classChecks.js","webpack:///./~/sugar-date/date/addLocale.js","webpack:///./~/sugar-date/date/var/DateUnitIndexes.js","webpack:///./src/types.js","webpack:///./~/sugar-date/common/var/mathAliases.js","webpack:///./~/sugar-date/date/var/LocaleHelpers.js","webpack:///./src/dom.js","webpack:///./~/sugar-date/common/var/coreUtilityAliases.js","webpack:///./src/feature.js","webpack:///./~/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./~/sugar-date/range/internal/Range.js","webpack:///./src/const.js","webpack:///./src/root.js","webpack:///./~/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/event.js","webpack:///./~/sugar-date/common/internal/callDateGet.js","webpack:///./src/string.js","webpack:///./~/sugar-date/date/internal/getWeekday.js","webpack:///./~/sugar-date/common/var/_utc.js","webpack:///./~/sugar-date/common/var/namespaceAliases.js","webpack:///./~/sugar-date/common/var/trunc.js","webpack:///./~/sugar-date/date/internal/setWeekday.js","webpack:///./~/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./~/sugar-date/common/internal/forEach.js","webpack:///./~/sugar-date/common/internal/isDefined.js","webpack:///./~/sugar-date/date/internal/createDate.js","webpack:///./~/sugar-date/date/internal/getMonth.js","webpack:///./~/sugar-date/date/internal/getYear.js","webpack:///./~/sugar-date/date/var/DateUnits.js","webpack:///./~/sugar-date/common/internal/callDateSet.js","webpack:///./~/sugar-date/date/internal/cloneDate.js","webpack:///./~/sugar-date/date/internal/getDate.js","webpack:///./~/sugar-date/date/internal/setDate.js","webpack:///./~/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./~/sugar-date/common/internal/isUndefined.js","webpack:///./~/sugar-date/date/internal/advanceDate.js","webpack:///./~/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./~/sugar-date/date/internal/getNewDate.js","webpack:///./~/sugar-date/common/internal/defineInstanceSimilar.js","webpack:///./~/sugar-date/common/internal/simpleClone.js","webpack:///./~/sugar-date/common/internal/spaceSplit.js","webpack:///./~/sugar-date/common/var/CommonChars.js","webpack:///./~/sugar-date/date/internal/dateIsValid.js","webpack:///./~/sugar-date/date/internal/iterateOverDateParams.js","webpack:///./~/sugar-date/date/internal/moveToBeginningOfUnit.js","webpack:///./~/sugar-date/date/internal/moveToEndOfUnit.js","webpack:///./~/sugar-date/date/internal/tzOffset.js","webpack:///./~/sugar-date/date/internal/updateDate.js","webpack:///./~/sugar-date/range/internal/rangeIsValid.js","webpack:///./src/number.js","webpack:///./~/sugar-date/common/internal/isObjectType.js","webpack:///./~/sugar-date/common/internal/padNumber.js","webpack:///./~/sugar-date/common/internal/simpleCapitalize.js","webpack:///./~/sugar-date/common/internal/simpleMerge.js","webpack:///./~/sugar-date/date/internal/getEnglishVariant.js","webpack:///./~/sugar-date/date/internal/getExtendedDate.js","webpack:///./~/sugar-date/date/internal/getTimeDistanceForUnit.js","webpack:///./~/sugar-date/date/internal/getWeekNumber.js","webpack:///./~/sugar-date/date/internal/iterateOverDateUnits.js","webpack:///./~/sugar-date/date/internal/moveToBeginningOfWeek.js","webpack:///./~/sugar-date/date/var/ISODefaults.js","webpack:///./~/sugar-date/date/var/_dateOptions.js","webpack:///./~/sugar-date/range/internal/rangeEvery.js","webpack:///./~/sugar-date/range/var/DURATION_UNITS.js","webpack:///./src/array.js","webpack:///./src/modules/baseDropdown.js","webpack:///./src/emitter.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/dropdown.js","webpack:///./~/sugar-date/common/internal/isClass.js","webpack:///./~/sugar-date/common/internal/map.js","webpack:///./~/sugar-date/common/internal/withPrecision.js","webpack:///./~/sugar-date/common/var/chr.js","webpack:///./~/sugar-date/date/internal/advanceDateWithArgs.js","webpack:///./~/sugar-date/date/internal/assertDateIsValid.js","webpack:///./~/sugar-date/date/internal/collectDateArguments.js","webpack:///./~/sugar-date/date/internal/compareDate.js","webpack:///./~/sugar-date/date/internal/createDateWithContext.js","webpack:///./~/sugar-date/date/internal/dateFormat.js","webpack:///./~/sugar-date/date/internal/dateRelative.js","webpack:///./~/sugar-date/date/internal/fullCompareDate.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnit.js","webpack:///./~/sugar-date/date/internal/getDateParamKey.js","webpack:///./~/sugar-date/date/internal/getDaysInMonth.js","webpack:///./~/sugar-date/date/internal/getHours.js","webpack:///./~/sugar-date/date/internal/getRegNonCapturing.js","webpack:///./~/sugar-date/date/internal/getUTCOffset.js","webpack:///./~/sugar-date/date/internal/moveToEndOfWeek.js","webpack:///./~/sugar-date/date/internal/moveToFirstDayOfWeekYear.js","webpack:///./~/sugar-date/date/internal/resetTime.js","webpack:///./~/sugar-date/date/internal/setISOWeekNumber.js","webpack:///./~/sugar-date/date/internal/walkUnitDown.js","webpack:///./~/sugar-date/date/var/AmericanEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CoreOutputFormats.js","webpack:///./~/sugar-date/date/var/LocalizedParsingTokens.js","webpack:///./~/sugar-date/date/var/MINUTES.js","webpack:///./~/sugar-date/date/var/ParsingTokens.js","webpack:///./~/sugar-date/index.js","webpack:///./~/sugar-date/range/internal/cloneRangeMember.js","webpack:///./~/sugar-date/range/internal/getDateForRange.js","webpack:///./~/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./~/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./~/sugar-date/range/internal/incrementDate.js","webpack:///./~/sugar-date/range/var/MULTIPLIERS.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/sort.js","webpack:///./src/cookie.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/dateType.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/help.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/state.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/storage.js","webpack:///./src/tablefilter.js","webpack:///./~/diacritics/index.js","webpack:///./~/sugar-date/common/internal/allCharsReg.js","webpack:///./~/sugar-date/common/internal/collectSimilarMethods.js","webpack:///./~/sugar-date/common/internal/commaSplit.js","webpack:///./~/sugar-date/common/internal/createFormatMatcher.js","webpack:///./~/sugar-date/common/internal/defineAccessor.js","webpack:///./~/sugar-date/common/internal/defineOptionsAccessor.js","webpack:///./~/sugar-date/common/internal/escapeRegExp.js","webpack:///./~/sugar-date/common/internal/filter.js","webpack:///./~/sugar-date/common/internal/getKeys.js","webpack:///./~/sugar-date/common/internal/getOrdinalSuffix.js","webpack:///./~/sugar-date/common/internal/getOwnKey.js","webpack:///./~/sugar-date/common/internal/getSparseArrayIndexes.js","webpack:///./~/sugar-date/common/internal/hasOwnEnumeratedProperties.js","webpack:///./~/sugar-date/common/internal/hasValidPlainObjectPrototype.js","webpack:///./~/sugar-date/common/internal/isArrayIndex.js","webpack:///./~/sugar-date/common/internal/isPlainObject.js","webpack:///./~/sugar-date/common/internal/iterateOverSparseArray.js","webpack:///./~/sugar-date/common/internal/memoizeFunction.js","webpack:///./~/sugar-date/common/internal/periodSplit.js","webpack:///./~/sugar-date/common/internal/privatePropertyAccessor.js","webpack:///./~/sugar-date/common/internal/repeatString.js","webpack:///./~/sugar-date/common/internal/setChainableConstructor.js","webpack:///./~/sugar-date/common/internal/trim.js","webpack:///./~/sugar-date/common/internal/wrapNamespace.js","webpack:///./~/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js","webpack:///./~/sugar-date/common/var/NATIVE_TYPES.js","webpack:///./~/sugar-date/common/var/PRIVATE_PROP_PREFIX.js","webpack:///./~/sugar-date/common/var/STRING_FORMAT_REG.js","webpack:///./~/sugar-date/common/var/fullwidthNumberHelpers.js","webpack:///./~/sugar-date/common/var/methodDefineAliases.js","webpack:///./~/sugar-date/date/addDays.js","webpack:///./~/sugar-date/date/addHours.js","webpack:///./~/sugar-date/date/addMilliseconds.js","webpack:///./~/sugar-date/date/addMinutes.js","webpack:///./~/sugar-date/date/addMonths.js","webpack:///./~/sugar-date/date/addSeconds.js","webpack:///./~/sugar-date/date/addWeeks.js","webpack:///./~/sugar-date/date/addYears.js","webpack:///./~/sugar-date/date/advance.js","webpack:///./~/sugar-date/date/beginningOfDay.js","webpack:///./~/sugar-date/date/beginningOfISOWeek.js","webpack:///./~/sugar-date/date/beginningOfMonth.js","webpack:///./~/sugar-date/date/beginningOfWeek.js","webpack:///./~/sugar-date/date/beginningOfYear.js","webpack:///./~/sugar-date/date/build/setDateChainableConstructorCall.js","webpack:///./~/sugar-date/date/clone.js","webpack:///./~/sugar-date/date/create.js","webpack:///./~/sugar-date/date/daysAgo.js","webpack:///./~/sugar-date/date/daysFromNow.js","webpack:///./~/sugar-date/date/daysInMonth.js","webpack:///./~/sugar-date/date/daysSince.js","webpack:///./~/sugar-date/date/daysUntil.js","webpack:///./~/sugar-date/date/endOfDay.js","webpack:///./~/sugar-date/date/endOfISOWeek.js","webpack:///./~/sugar-date/date/endOfMonth.js","webpack:///./~/sugar-date/date/endOfWeek.js","webpack:///./~/sugar-date/date/endOfYear.js","webpack:///./~/sugar-date/date/format.js","webpack:///./~/sugar-date/date/get.js","webpack:///./~/sugar-date/date/getAllLocaleCodes.js","webpack:///./~/sugar-date/date/getAllLocales.js","webpack:///./~/sugar-date/date/getISOWeek.js","webpack:///./~/sugar-date/date/getLocale.js","webpack:///./~/sugar-date/date/getOption.js","webpack:///./~/sugar-date/date/getUTCOffset.js","webpack:///./~/sugar-date/date/getUTCWeekday.js","webpack:///./~/sugar-date/date/getWeekday.js","webpack:///./~/sugar-date/date/hoursAgo.js","webpack:///./~/sugar-date/date/hoursFromNow.js","webpack:///./~/sugar-date/date/hoursSince.js","webpack:///./~/sugar-date/date/hoursUntil.js","webpack:///./~/sugar-date/date/index.js","webpack:///./~/sugar-date/date/internal/arrayToRegAlternates.js","webpack:///./~/sugar-date/date/internal/buildDateUnitMethods.js","webpack:///./~/sugar-date/date/internal/buildNumberUnitMethods.js","webpack:///./~/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./~/sugar-date/date/internal/callDateSetWithWeek.js","webpack:///./~/sugar-date/date/internal/collectDateParamsFromArguments.js","webpack:///./~/sugar-date/date/internal/compareDay.js","webpack:///./~/sugar-date/date/internal/defaultNewDate.js","webpack:///./~/sugar-date/date/internal/deleteDateParam.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnitForNumber.js","webpack:///./~/sugar-date/date/internal/getArrayWithOffset.js","webpack:///./~/sugar-date/date/internal/getDateParam.js","webpack:///./~/sugar-date/date/internal/getDateParamsFromString.js","webpack:///./~/sugar-date/date/internal/getDaysSince.js","webpack:///./~/sugar-date/date/internal/getHigherUnitIndex.js","webpack:///./~/sugar-date/date/internal/getMeridiemToken.js","webpack:///./~/sugar-date/date/internal/getNewLocale.js","webpack:///./~/sugar-date/date/internal/getParsingTokenValue.js","webpack:///./~/sugar-date/date/internal/getParsingTokenWithSuffix.js","webpack:///./~/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./~/sugar-date/date/internal/getWeekYear.js","webpack:///./~/sugar-date/date/internal/getYearFromAbbreviation.js","webpack:///./~/sugar-date/date/internal/isUTC.js","webpack:///./~/sugar-date/date/internal/iterateOverHigherDateParams.js","webpack:///./~/sugar-date/date/internal/resetLowerUnits.js","webpack:///./~/sugar-date/date/internal/setDateChainableConstructor.js","webpack:///./~/sugar-date/date/internal/setMonth.js","webpack:///./~/sugar-date/date/internal/setYear.js","webpack:///./~/sugar-date/date/is.js","webpack:///./~/sugar-date/date/isAfter.js","webpack:///./~/sugar-date/date/isBefore.js","webpack:///./~/sugar-date/date/isBetween.js","webpack:///./~/sugar-date/date/isFriday.js","webpack:///./~/sugar-date/date/isFuture.js","webpack:///./~/sugar-date/date/isLastMonth.js","webpack:///./~/sugar-date/date/isLastWeek.js","webpack:///./~/sugar-date/date/isLastYear.js","webpack:///./~/sugar-date/date/isLeapYear.js","webpack:///./~/sugar-date/date/isMonday.js","webpack:///./~/sugar-date/date/isNextMonth.js","webpack:///./~/sugar-date/date/isNextWeek.js","webpack:///./~/sugar-date/date/isNextYear.js","webpack:///./~/sugar-date/date/isPast.js","webpack:///./~/sugar-date/date/isSaturday.js","webpack:///./~/sugar-date/date/isSunday.js","webpack:///./~/sugar-date/date/isThisMonth.js","webpack:///./~/sugar-date/date/isThisWeek.js","webpack:///./~/sugar-date/date/isThisYear.js","webpack:///./~/sugar-date/date/isThursday.js","webpack:///./~/sugar-date/date/isToday.js","webpack:///./~/sugar-date/date/isTomorrow.js","webpack:///./~/sugar-date/date/isTuesday.js","webpack:///./~/sugar-date/date/isUTC.js","webpack:///./~/sugar-date/date/isValid.js","webpack:///./~/sugar-date/date/isWednesday.js","webpack:///./~/sugar-date/date/isWeekday.js","webpack:///./~/sugar-date/date/isWeekend.js","webpack:///./~/sugar-date/date/isYesterday.js","webpack:///./~/sugar-date/date/iso.js","webpack:///./~/sugar-date/date/millisecondsAgo.js","webpack:///./~/sugar-date/date/millisecondsFromNow.js","webpack:///./~/sugar-date/date/millisecondsSince.js","webpack:///./~/sugar-date/date/millisecondsUntil.js","webpack:///./~/sugar-date/date/minutesAgo.js","webpack:///./~/sugar-date/date/minutesFromNow.js","webpack:///./~/sugar-date/date/minutesSince.js","webpack:///./~/sugar-date/date/minutesUntil.js","webpack:///./~/sugar-date/date/monthsAgo.js","webpack:///./~/sugar-date/date/monthsFromNow.js","webpack:///./~/sugar-date/date/monthsSince.js","webpack:///./~/sugar-date/date/monthsUntil.js","webpack:///./~/sugar-date/date/range.js","webpack:///./~/sugar-date/date/relative.js","webpack:///./~/sugar-date/date/relativeTo.js","webpack:///./~/sugar-date/date/removeLocale.js","webpack:///./~/sugar-date/date/reset.js","webpack:///./~/sugar-date/date/rewind.js","webpack:///./~/sugar-date/date/secondsAgo.js","webpack:///./~/sugar-date/date/secondsFromNow.js","webpack:///./~/sugar-date/date/secondsSince.js","webpack:///./~/sugar-date/date/secondsUntil.js","webpack:///./~/sugar-date/date/set.js","webpack:///./~/sugar-date/date/setISOWeek.js","webpack:///./~/sugar-date/date/setLocale.js","webpack:///./~/sugar-date/date/setOption.js","webpack:///./~/sugar-date/date/setUTC.js","webpack:///./~/sugar-date/date/setWeekday.js","webpack:///./~/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CoreParsingFormats.js","webpack:///./~/sugar-date/date/var/DATE_OPTIONS.js","webpack:///./~/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./~/sugar-date/date/var/FormatTokensBase.js","webpack:///./~/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./~/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./~/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js","webpack:///./~/sugar-date/date/var/formattingTokens.js","webpack:///./~/sugar-date/date/weeksAgo.js","webpack:///./~/sugar-date/date/weeksFromNow.js","webpack:///./~/sugar-date/date/weeksSince.js","webpack:///./~/sugar-date/date/weeksUntil.js","webpack:///./~/sugar-date/date/yearsAgo.js","webpack:///./~/sugar-date/date/yearsFromNow.js","webpack:///./~/sugar-date/date/yearsSince.js","webpack:///./~/sugar-date/date/yearsUntil.js","webpack:///./~/sugar-date/locales/ca.js","webpack:///./~/sugar-date/locales/da.js","webpack:///./~/sugar-date/locales/de.js","webpack:///./~/sugar-date/locales/es.js","webpack:///./~/sugar-date/locales/fi.js","webpack:///./~/sugar-date/locales/fr.js","webpack:///./~/sugar-date/locales/index.js","webpack:///./~/sugar-date/locales/it.js","webpack:///./~/sugar-date/locales/ja.js","webpack:///./~/sugar-date/locales/ko.js","webpack:///./~/sugar-date/locales/nl.js","webpack:///./~/sugar-date/locales/no.js","webpack:///./~/sugar-date/locales/pl.js","webpack:///./~/sugar-date/locales/pt.js","webpack:///./~/sugar-date/locales/ru.js","webpack:///./~/sugar-date/locales/sv.js","webpack:///./~/sugar-date/locales/zh-CN.js","webpack:///./~/sugar-date/locales/zh-TW.js","webpack:///./~/sugar-date/number/day.js","webpack:///./~/sugar-date/number/dayAfter.js","webpack:///./~/sugar-date/number/dayAgo.js","webpack:///./~/sugar-date/number/dayBefore.js","webpack:///./~/sugar-date/number/dayFromNow.js","webpack:///./~/sugar-date/number/days.js","webpack:///./~/sugar-date/number/daysAfter.js","webpack:///./~/sugar-date/number/daysAgo.js","webpack:///./~/sugar-date/number/daysBefore.js","webpack:///./~/sugar-date/number/daysFromNow.js","webpack:///./~/sugar-date/number/duration.js","webpack:///./~/sugar-date/number/hour.js","webpack:///./~/sugar-date/number/hourAfter.js","webpack:///./~/sugar-date/number/hourAgo.js","webpack:///./~/sugar-date/number/hourBefore.js","webpack:///./~/sugar-date/number/hourFromNow.js","webpack:///./~/sugar-date/number/hours.js","webpack:///./~/sugar-date/number/hoursAfter.js","webpack:///./~/sugar-date/number/hoursAgo.js","webpack:///./~/sugar-date/number/hoursBefore.js","webpack:///./~/sugar-date/number/hoursFromNow.js","webpack:///./~/sugar-date/number/millisecond.js","webpack:///./~/sugar-date/number/millisecondAfter.js","webpack:///./~/sugar-date/number/millisecondAgo.js","webpack:///./~/sugar-date/number/millisecondBefore.js","webpack:///./~/sugar-date/number/millisecondFromNow.js","webpack:///./~/sugar-date/number/milliseconds.js","webpack:///./~/sugar-date/number/millisecondsAfter.js","webpack:///./~/sugar-date/number/millisecondsAgo.js","webpack:///./~/sugar-date/number/millisecondsBefore.js","webpack:///./~/sugar-date/number/millisecondsFromNow.js","webpack:///./~/sugar-date/number/minute.js","webpack:///./~/sugar-date/number/minuteAfter.js","webpack:///./~/sugar-date/number/minuteAgo.js","webpack:///./~/sugar-date/number/minuteBefore.js","webpack:///./~/sugar-date/number/minuteFromNow.js","webpack:///./~/sugar-date/number/minutes.js","webpack:///./~/sugar-date/number/minutesAfter.js","webpack:///./~/sugar-date/number/minutesAgo.js","webpack:///./~/sugar-date/number/minutesBefore.js","webpack:///./~/sugar-date/number/minutesFromNow.js","webpack:///./~/sugar-date/number/month.js","webpack:///./~/sugar-date/number/monthAfter.js","webpack:///./~/sugar-date/number/monthAgo.js","webpack:///./~/sugar-date/number/monthBefore.js","webpack:///./~/sugar-date/number/monthFromNow.js","webpack:///./~/sugar-date/number/months.js","webpack:///./~/sugar-date/number/monthsAfter.js","webpack:///./~/sugar-date/number/monthsAgo.js","webpack:///./~/sugar-date/number/monthsBefore.js","webpack:///./~/sugar-date/number/monthsFromNow.js","webpack:///./~/sugar-date/number/second.js","webpack:///./~/sugar-date/number/secondAfter.js","webpack:///./~/sugar-date/number/secondAgo.js","webpack:///./~/sugar-date/number/secondBefore.js","webpack:///./~/sugar-date/number/secondFromNow.js","webpack:///./~/sugar-date/number/seconds.js","webpack:///./~/sugar-date/number/secondsAfter.js","webpack:///./~/sugar-date/number/secondsAgo.js","webpack:///./~/sugar-date/number/secondsBefore.js","webpack:///./~/sugar-date/number/secondsFromNow.js","webpack:///./~/sugar-date/number/week.js","webpack:///./~/sugar-date/number/weekAfter.js","webpack:///./~/sugar-date/number/weekAgo.js","webpack:///./~/sugar-date/number/weekBefore.js","webpack:///./~/sugar-date/number/weekFromNow.js","webpack:///./~/sugar-date/number/weeks.js","webpack:///./~/sugar-date/number/weeksAfter.js","webpack:///./~/sugar-date/number/weeksAgo.js","webpack:///./~/sugar-date/number/weeksBefore.js","webpack:///./~/sugar-date/number/weeksFromNow.js","webpack:///./~/sugar-date/number/year.js","webpack:///./~/sugar-date/number/yearAfter.js","webpack:///./~/sugar-date/number/yearAgo.js","webpack:///./~/sugar-date/number/yearBefore.js","webpack:///./~/sugar-date/number/yearFromNow.js","webpack:///./~/sugar-date/number/years.js","webpack:///./~/sugar-date/number/yearsAfter.js","webpack:///./~/sugar-date/number/yearsAgo.js","webpack:///./~/sugar-date/number/yearsBefore.js","webpack:///./~/sugar-date/number/yearsFromNow.js","webpack:///./~/sugar-date/range/clamp.js","webpack:///./~/sugar-date/range/clone.js","webpack:///./~/sugar-date/range/contains.js","webpack:///./~/sugar-date/range/days.js","webpack:///./~/sugar-date/range/every.js","webpack:///./~/sugar-date/range/hours.js","webpack:///./~/sugar-date/range/index.js","webpack:///./~/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./~/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./~/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./~/sugar-date/range/internal/getPrecision.js","webpack:///./~/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./~/sugar-date/range/internal/incrementNumber.js","webpack:///./~/sugar-date/range/internal/incrementString.js","webpack:///./~/sugar-date/range/internal/isValidRangeMember.js","webpack:///./~/sugar-date/range/internal/rangeClamp.js","webpack:///./~/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./~/sugar-date/range/intersect.js","webpack:///./~/sugar-date/range/isValid.js","webpack:///./~/sugar-date/range/milliseconds.js","webpack:///./~/sugar-date/range/minutes.js","webpack:///./~/sugar-date/range/months.js","webpack:///./~/sugar-date/range/seconds.js","webpack:///./~/sugar-date/range/span.js","webpack:///./~/sugar-date/range/toArray.js","webpack:///./~/sugar-date/range/toString.js","webpack:///./~/sugar-date/range/union.js","webpack:///./~/sugar-date/range/var/DURATION_REG.js","webpack:///./~/sugar-date/range/var/DateRangeConstructor.js","webpack:///./~/sugar-date/range/var/DurationTextFormats.js","webpack:///./~/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./~/sugar-date/range/weeks.js","webpack:///./~/sugar-date/range/years.js"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","1","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","s","global","createNamespace","defineWithOptionCollect","methodName","instance","args","setProperty","sugarNamespace","arg1","arg2","arg3","opts","collectDefineOptions","defineMethods","methods","last","isObject","getNewChainableClass","extend","objectRestricted","target","nativeProto","allowObjectPrototype","arrayOptionExists","field","val","arr","el","arrayOptionExcludes","disallowedByFlags","flags","methodIsExcepted","canExtend","method","methodsByName","nativeClass","globalContext","staticMethods","instanceMethods","objectPrototype","forEachProperty","hasOwn","extendNative","STATIC","INSTANCE","fn","defineChainableMethod","source","setMethod","namespacesByName","namespacesByClassString","mapNativeToChainable","mapObjectChainablesToNamespace","Sugar","setGlobalProperties","toString","getOwn","classToString","SUGAR_GLOBAL","instanceMethod","staticMethod","wrapMethodWithArguments","wrapInstanceMethod","active","wrapInstanceMethodFixed","startCollect","len","collectedArgs","Math","max","arguments","apply","b","polyfill","override","obj","arg","constructor","raw","existing","collision","dcp","wrapped","wrapWithChainableResult","DefaultChainable","disambiguate","disambiguateMethod","mapObjectChainableToAllNamespaces","setObjectChainableOnNamespace","proto","TypeError","methodNames","ownPropertyNames","nativeMethodProhibited","definePropertyShim","prop","descriptor","writable","internalToString","internalHasOwnProperty","NATIVE_NAMES","PROPERTY_DESCRIPTOR_SUPPORT","defineProperties","hasExports","getOwnPropertyNames","key","split","isSerializable","isBoolean","isNumber","isString","isDate","isRegExp","isFunction","isArray","isSet","isMap","isError","NATIVE_TYPES","forEach","isClass","spaceSplit","isPlainObject","coreUtilityAliases","addKnownType","className","knownTypes","isKnownType","buildClassCheck","globalObject","getConstructorClassCheck","getToStringClassCheck","ctorStr","String","str","buildPrimitiveClassCheck","toLowerCase","t","names","Array","Set","Map","LocaleHelpers","localeManager","Date","defineStatic","addLocale","code","set","add","HOURS_INDEX","DAY_INDEX","WEEK_INDEX","MONTH_INDEX","YEAR_INDEX","isUndef","EMPTY_FN","isObj","isFn","isNull","isEmpty","abs","pow","min","ceil","floor","round","English","LazyLoadedLocales","AmericanEnglishDefinition","getNewLocale","LocaleManager","loc","locales","fallback","slice","current","getAll","def","compiledFormats","remove","supportsClassList","doc","documentElement","classList","tag","elm","createCheckItem","createOpt","removeClass","addClass","hasClass","createText","removeElm","createElm","getFirstTextNode","getText","_root","_types","_string","node","textContent","trim","innerText","childNodes","nodeType","data","_len","_key","parentNode","removeChild","txt","createTextNode","ele","cls","contains","match","RegExp","reg","replace","text","isSel","isSelected","opt","id","chkValue","labelText","li","label","check","getElementById","tagname","util","_classCallCheck","Constructor","_createClass","props","protoProps","staticProps","Feature","tf","feature","_this","enabled","config","emitter","initialized","on","destroy","enable","init","Range","start","end","cloneRangeMember","FEATURES","AUTO_FILTER_DELAY","IP_ADDRESS","DATE","FORMATTED_NUMBER","NUMBER","STRING","CELL_TAG","HEADER_TAG","DOWN_ARROW_KEY","UP_ARROW_KEY","ESC_KEY","TAB_KEY","ENTER_KEY","NONE","CHECKLIST","MULTIPLE","SELECT","INPUT","_dateType","_help","_state","_gridLayout","_loader","_highlightKeywords","_popupFilter","_markActiveColumns","_rowsCounter","_statusBar","_clearButton","_alternateRows","_noResults","_paging","dateType","class","help","enforce","state","markActiveColumns","gridLayout","loader","highlightKeyword","popupFilter","rowsCounter","statusBar","clearButton","alternateRows","noResults","paging","_typeof","Symbol","iterator","self","defineOnPrototype","ctor","keyCode","targetEvt","cancelEvt","stopEvt","removeEvt","addEvt","func","capture","addEventListener","attachEvent","removeEventListener","detachEvent","evt","event","stopPropagation","cancelBubble","preventDefault","returnValue","srcElement","charCode","which","callDateGet","_utc","matchCase","rgxEsc","_diacritics","term","exactMatch","caseSensitive","ignoreDiacritics","regexp","modifier","test","getWeekday","privatePropertyAccessor","sugarObject","sugarArray","sugarDate","sugarString","sugarNumber","Number","sugarFunction","Function","sugarRegExp","mathAliases","trunc","isFinite","setWeekday","dow","dir","currentWeekday","ndir","offset","setDate","getDate","getTime","classChecks","iterateOverSparseArray","isDefined","createDate","options","forceClone","getExtendedDate","date","getMonth","getYear","getDaysInMonth","DateUnits","multiplier","alias","ambiguous","callDateSet","safe","cloneDate","clone","setUnitAndLowerToEdge","startIndex","stopIndex","walkUnitDown","unit","isUndefined","advanceDate","num","reset","updateDate","getLowerUnitIndex","index","DateUnitIndexes","getNewDate","_dateOptions","defineInstanceSimilar","defineInstance","collectSimilarMethods","methodDefineAliases","simpleClone","simpleMerge","HALF_WIDTH_ZERO","FULL_WIDTH_ZERO","HALF_WIDTH_PERIOD","FULL_WIDTH_PERIOD","HALF_WIDTH_COMMA","OPEN_BRACE","CLOSE_BRACE","dateIsValid","isNaN","iterateOverDateParams","params","endIndex","run","getDateParam","iterateOverDateUnits","result","moveToBeginningOfUnit","unitIndex","localeCode","moveToBeginningOfWeek","getFirstDayOfWeek","moveToEndOfUnit","moveToEndOfWeek","tzOffset","getTimezoneOffset","advance","prefer","weekdayDir","setUpperUnit","unitName","upperUnitIndex","getHigherUnitIndex","setSpecificity","specificity","handleFraction","fraction","lowerUnit","monthHasShifted","targetMonth","setUnit","checkMonth","setTime","callDateSetWithWeek","millisecond","resetLowerUnits","rangeIsValid","range","isValidRangeMember","parse","decimal","regex","unformatted","parseFloat","isObjectType","padNumber","place","sign","base","replacement","repeatString","simpleCapitalize","charAt","toUpperCase","getEnglishVariant","v","EnglishLocaleBaseDefinition","contextDate","getFormatParams","dif","to","token","getYearFromAbbreviation","ParsingTokens","param","getParsingTokenValue","getTokenValue","cloneDateByFlag","fromUTC","setUTC","afterDateSet","afterCallbacks","fireCallbacks","handleAmpm","ampm","hour","handleTimezoneOffset","tzHour","tzMinute","tzSign","minute","handleUnitlessShift","month","weekday","handleUnitlessNum","setOrdinalWeekday","handleMidday","handleRelativeDay","resetTime","day","handleRelativeUnit","half","separateAbsoluteUnits","units","relative","handleEdge","edge","weekdayOfMonth","edgeIndex","iterateOverHigherDateParams","NaN","deleteDateParam","locale","cacheFormat","timestamp","utc","midday","yearSign","year","MINUTES","getTimeDistanceForUnit","d1","d2","tmp","fwd","getWeekNumber","allowPrevious","firstDayOfWeek","firstDayOfWeekYear","isoWeek","ISO_FIRST_DAY_OF_WEEK","ISO_FIRST_DAY_OF_WEEK_YEAR","moveToFirstDayOfWeekYear","ISODefaults","DATE_OPTIONS","namespaceAliases","defineOptionsAccessor","rangeEvery","step","countOnly","increment","precision","dio","inverse","getGreaterPrecision","incrementNumber","incrementString","getDateIncrementObject","incrementDate","has","sCase","Boolean","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","BaseDropdown","_feature","_sort","_const","_Feature","getPrototypeOf","f","customSorter","filter_options_sorter","col","comparer","isCustom","optsTxt","excludedOpts","colIndex","isCustomOptions","sortSlc","indexOf","sortNumDesc","compareFn","idx","hasType","getDecimal","sortNumberStr","getLocale","sortDateStr","ignoreCase","sort","colIndexes","_this2","colIdx","values","getValues","build","linkedFilters","selectOptions","Emitter","events","evts","splice","CheckList","_baseDropdown","_dom","_array","_event","_BaseDropdown","containers","containerCssClass","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","emit","setCheckListValues","filter","loadFltOnDemand","getAttribute","ct","div","onCheckListClick","colIdxs","getFiltersByType","refreshFilters","isExternal","container","_this3","externalFltTgtId","externalFltTgtIds","divCont","fltIds","buildFilterId","isLinked","refreshAll","parseInt","flt","ul","rows","dom","nbRows","getRowsNb","customValues","getCustomOptions","activeIdx","activeFilterId","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","disableExcludedOptions","innerHTML","k","refRow","hasVisibleRows","visibleRows","cells","ncells","nbCells","j","isRowDisplayed","isRowValid","cellValue","getCellValue","cellString","filteredCol","getVisibleColumnValues","sortOptions","addChecks","_this4","chkCt","addTChecks","y","lbl","fltId","disabled","optionClick","style","display","_this5","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","chkIndex","getFilterElement","fltValue","fltIndexes","checked","indSplit","separator","u","cChk","orOperator","nodeName","replaceValue","replaceIndex","getFilterType","lisNb","chk","lblTxt","fltAttr","substr","_this6","off","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","onSlcChange","selectFlts","multipleFlts","concat","slc","multiple","title","fltCssClass","fltMultiCssClass","opt0","onSlcFocus","slcId","cell","nchilds","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selected","selectedOptions","map","withPrecision","fromCharCode","advanceDateWithArgs","collectDateArguments","assertDateIsValid","allowDuration","getDateParamsFromString","collectDateParamsFromArguments","compareDate","margin","timezoneShift","compareEdges","loMargin","hiMargin","createDateWithContext","dateFormat","format","CoreOutputFormats","dateFormatMatcher","formattingTokens","dateRelative","dRelative","adu","getAdjustedUnitForDate","getRelativeFormat","fullCompareDate","compareDay","weekdayMap","monthMap","getAdjustedUnit","ms","getDateParamKey","getOwnKey","getHours","getRegNonCapturing","getUTCOffset","iso","hours","mins","colon","setISOWeekNumber","setYear","setMonth","mdy","short","medium","long","full","stamp","time","ISO8601","RFC1123","RFC1036","LocalizedParsingTokens","requiresSuffix","requiresSuffixOr","second","requiresNumerals","yyyy","MM","dd","hh","mm","ss","yy","ihh","imm","GMT","Z","getRangeMemberPrimitiveValue","getDateForRange","amt","DURATION_REG","valueOf","amount","mult","MULTIPLIERS","Hours","Minutes","Seconds","Milliseconds","g","eval","dateSortDesc","dateSortAsc","numSortDesc","numSortAsc","_number","_sugarDate","x","date1","date2","numStr1","numStr2","num1","num2","dateStr1","dateStr2","default","write","expire","toGMTString","cookie","escape","read","cookieValue","search","unescape","substring","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","rowIndex","arrIndex","isValid","processRow","isEnabled","validRowsIndex","getValidRows","indexLen","rowIdx","setRowBg","arrIdx","removeRowBg","ClearButton","targetId","btn_reset_target_id","element","btn_reset_text","cssClass","btn_reset_css_class","tooltip","btn_reset_tooltip","html","btn_reset_html","enableIcons","clearFilters","cont","setToolbar","rDiv","resetEl","firstChild","onClick","fltReset","DateType","datetime","setLocale","addConfigFormats","colTypes","types","dateStr","colType","getOptions","formats","addFormat","ex","GridLayout","grid_layout","width","height","mainContCssClass","cont_css_class","contCssClass","tbl_cont_css_class","headContCssClass","tbl_head_css_class","infDivCssClass","inf_grid_css_class","headRowIndex","headers_row_index","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblMainCont","tblCont","headTblCont","headTbl","fltGrid","tbl","setOverrides","setDefaultColWidths","tblW","initialTableWidth","createContainer","insertBefore","setConfigWidth","clientWidth","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","filtersRowIndex","thead","tableLayout","cellPadding","cellSpacing","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","headersRow","isExternalFlt","hasColWidths","getCellsNb","colW","getHeadersRowIndex","colWidths","fltTdId","prfxFlt","cl","fltCellTag","cols","tableHead","row","thId","Hash","hasHashChange","JSON","location","decodeURIComponent","encodeURIComponent","docMode","documentMode","lastHash","boundSync","hash","sync","bind","update","stringify","overrideAndSync","Help","WIKI_URL","WEBSITE_URL","help_instructions","tgtId","target_id","contTgtId","container_target_id","instrText","instrHtml","btnText","btn_text","btnHtml","btn_html","btnCssClass","btn_css_class","container_css_class","btn","boundMouseup","defaultHtml","version","targetElm","toggle","onMouseup","divContainer","helpEl","helplink","divDisplay","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","hasChildNodes","children","highlight","nodeVal","nodeValue","termIdx","pn","nv","before","after","highlightedNodes","querySelectorAll","replaceChild","normalize","highlightKeywords","getFiltersValue","item","unhighlight","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","Loader","EVENTS","css_class","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","targetEl","show","displayLoader","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","getHeaderElement","header","NoResults","no_results_message","content","customContainer","custom_container","customContainerId","custom_container_id","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","hide","getValidRowsNb","setWidth","tHead","tBodies","Paging","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","nrows","slcIndex","selectedIndex","nbOpts","next","nextIndex","changePage","prev","prevIndex","first","_detectKey","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","btnNext","btnPrev","btnLast","btnFirst","mDiv","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","validateAllRows","resetPagingInfo","pageNumber","setPage","changeResultsPerPage","filterTable","validRows","mdiv","visibility","z","groupByPage","endPagingRow","h","validRowIdx","r","rowDisplayed","cmd","isInitialized","btnEvt","cmdtype","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","currOpt","Option","slcPagesSelIndex","nbFilterableRows","slcIdx","pgNb","getPageNb","pglenIndex","getPageLength","removeResultsPerPage","PopupFilter","popup_filters","closeOnFiltering","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","activeFilterIdx","closeAll","headerWidth","activeFlt","close","buildIcons","setIconsState","cellIndex","changeState","buildAll","icon","contId","placeholder","isOpen","open","focus","exceptIdx","fltType","isMultipleFilter","iconImg","RowsCounter","rows_counter","fromToTextSeparator","overText","over_text","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","lDiv","refresh","totTxt","nbValidRows","pagingStartRow","pagingEndRow","getFilterableRowsNb","nbHiddenRows","State","_hash","_storage","cfg","enableHash","enableLocalStorage","enableCookie","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookieDuration","cookie_duration","enableStorage","storage","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","Storage","keys","column","hidden","_syncFilters","disable","setFilterValue","_this7","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","statusSpan","statusSpanText","message","hasStorage","_cookie","_cookie2","localStorage","duration","save","getKey","removeItem","retrieve","prfxTf","path","pathname","TableFilter","_emitter","_dropdown","_checkList","getFullYear","basePath","base_path","grid","filters_row_index","filters_cell_tag","infDiv","inf_div_css_class","lDivCssClass","left_div_css_class","rDivCssClass","right_div_css_class","mDivCssClass","middle_div_css_class","stylePath","style_path","stylesheet","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternate_rows","col_widths","flt_css_class","flt_multi_css_class","fltSmallCssClass","flt_small_css_class","singleFltCssClass","single_flt_css_class","enterKey","enter_key","onBeforeFilter","on_before_filter","onAfterFilter","on_after_filter","case_sensitive","hasExactMatchByCol","columns_exact_match","exactMatchByCol","exact_match","ignore_diacritics","linked_filters","disable_excluded_options","rows_always_visible","external_flt_grid","external_flt_grid_ids","onFiltersLoaded","on_filters_loaded","singleSearchFlt","single_filter","onRowValidated","on_row_validated","cellParser","cell_parser","watermark","isWatermarkArray","toolBarTgtId","toolbar_target_id","clearFilterText","clear_filter_text","enable_empty_option","empty_text","enable_non_empty_option","on_change","sort_select","isSortNumAsc","sort_num_asc","sortNumAsc","isSortNumDesc","sort_num_desc","load_filters_on_demand","hasCustomOptions","custom_options","customOptions","rgxOperator","regexp_operator","empty_operator","nonempty_operator","or_operator","anOperator","and_operator","greater_operator","lower_operator","lower_equal_operator","greater_equal_operator","different_operator","like_operator","equal_operator","start_with_operator","end_with_operator","displayBtn","btnReset","btn_reset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","auto_filter_delay","isUserTyping","autoFilterTimer","highlight_keywords","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxInfDiv","prfxLDiv","prfxRDiv","prfxMDiv","prfxResponsive","extensions","hasExtensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","themes_path","responsive","Mod","ExtRegistry","instantiateFeatures","import","inpclass","loadThemes","initFeatures","fltrow","_insertFiltersRow","fltcell","colSpan","dropdown","checkList","_buildInputFilter","_buildSubmitButton","setActiveFilterId","_initNoFilters","enforceVisibility","initExtensions","linkFilters","clearInterval","setInterval","insertRow","inpType","inp","onInpFocus","detectKey","onKeyDown","onKeyUp","onInpBlur","Cls","exts","ext","loadExtension","hasExtension","modulePath","then","__WEBPACK_AMD_REQUIRE_ARRAY__","mod","inst","catch","defaultTheme","theme","styleId","isImported","_this8","removeExternalFlts","removeToolbar","destroyExtensions","deleteRow","captions","ids","externalFlt","optTxt","optArray","slcValues","slcTexts","texts","slcSort","sorts","hiddenRows","searchArgs","occurence","singleFltRowValid","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","occur","w","_testTerm","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","searchArg","lastIndexOf","srchArg","rgx","ignoresDiacritics","includeHeaders","exclude","getColValues","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","fltColType","getFilterValue","bool","tr","ntrs","excludeHiddenCols","getTableData","tblData","headers","rowData","isColHidden","filteredData","rData","getFilteredDataCol","_this9","getRowDisplay","validColValues","unshift","displayFlag","validFlag","query","nbCols","colTags","frag","createDocumentFragment","filterId","getFilterId","slcA1","slcA2","slcA3","curSlc","slcSelectedValue","ignoreDiac","clearText","filePath","imported","attr","files","fileId","callback","_this10","isLoaded","file","onreadystatechange","readyState","reCalc","table","headerText","removeDiacritics","diacriticsMap","replacementList","chars","allCharsReg","commaSplit","CommonChars","createFormatMatcher","bracketMatcher","percentMatcher","precheck","getToken","literal","bKey","pLit","pKey","assertPassesPrecheck","getLiteral","getSubstring","sub","assertNoUnmatched","bt","pt","chr","compile","lastIndex","exec","STRING_FORMAT_REG","compileMemoized","memoizeFunction","defineAccessor","namespace","defaults","getOption","setOption","escapeRegExp","getKeys","getOrdinalSuffix","getSparseArrayIndexes","fromIndex","loop","fromRight","indexes","isArrayIndex","aLoop","hasOwnEnumeratedProperties","objectProto","hasValidPlainObjectPrototype","hasToString","hasConstructor","memo","counter","INTERNAL_MEMOIZE_LIMIT","periodSplit","privateKey","PRIVATE_PROP_PREFIX","setChainableConstructor","createFn","wrapNamespace","fullWidthNumberReg","fullWidthNumberMap","fullWidthNumbers","fwp","hwp","hwc","fwn","digit","defineStaticPolyfill","defineInstancePolyfill","defineInstanceAndStatic","defineInstanceWithArguments","addDays","addHours","addMilliseconds","addMinutes","addMonths","addSeconds","addWeeks","addYears","beginningOfDay","beginningOfISOWeek","beginningOfMonth","beginningOfWeek","beginningOfYear","daysAgo","daysFromNow","daysInMonth","daysSince","daysUntil","endOfDay","endOfISOWeek","endOfMonth","endOfWeek","endOfYear","getAllLocaleCodes","getAllLocales","getISOWeek","getUTCWeekday","getUTCDay","hoursAgo","hoursFromNow","hoursSince","hoursUntil","arrayToRegAlternates","joined","join","buildDateUnitMethods","caps","since","until","buildNumberUnitMethods","buildRelativeAliases","special","weekdays","months","together","comp","defaultNewDate","getAdjustedUnitForNumber","getArrayWithOffset","alternate","getDaysSince","getMeridiemToken","Locale","getMonthName","monthSuffix","getWeekdayName","getNumber","numeralMap","getNumeralValue","lastWasPlace","isPlace","numeral","getOrdinal","ordinalSuffix","convertAdjustedToFormat","getDuration","getFirstDayOfWeekYear","plural","getTokenSrc","suffix","parsingAliases","replaceParsingTokens","tokens","parsingTokens","getParsingTokenWithSuffix","addRawFormat","buildValueArray","setMap","all","forAllAlternates","alt","forEachAlternate","suffixes","getTimeFormat","ampmFront","getNumeralSrc","numerals","placeholders","articles","allowsFullWidth","addFormatSet","allowTime","timeFront","getFormatWithTime","baseFormat","timeBefore","getTimeBefore","getTimeAfter","localized","markers","timeMarkers","timeMarkerOptional","LOCALE_ARRAY_FIELDS","numeralUnits","timeSuffixes","modifiers","mapKey","CoreParsingFormats","df","fullwidthNumberHelpers","getUnitIndexForParamName","getWeekYear","week","delta","isUTC","setDateChainableConstructor","is","isAfter","isBefore","isBetween","t1","t2","lo","hi","isFriday","isFuture","isLastMonth","isLastWeek","isLastYear","isLeapYear","isMonday","isNextMonth","isNextWeek","isNextYear","isPast","isSaturday","isSunday","isThisMonth","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isWeekday","isWeekend","isYesterday","toISOString","millisecondsAgo","millisecondsFromNow","millisecondsSince","millisecondsUntil","minutesAgo","minutesFromNow","minutesSince","minutesUntil","monthsAgo","monthsFromNow","monthsSince","monthsUntil","DateRangeConstructor","relativeTo","removeLocale","rewind","secondsAgo","secondsFromNow","secondsSince","secondsUntil","setISOWeek","BritishEnglishDefinition","CanadianEnglishDefinition","newDateInternal","past","future","timeParse","timeFrontParse","TIMEZONE_ABBREVIATION_REG","FormatTokensBase","ldml","strf","lowerToken","allowAlternates","strfPadding","ldmlPaddedToken","ordinalToken","doy","ldmlTwoDigitToken","strfTwoDigitToken","en-US","en-GB","en-AU","en-CA","ldmlTokens","strfTokens","addFormats","buildLowercase","buildOrdinal","buildPadded","padding","buildTwoDigits","buildAlias","buildAlternates","buildAlternate","getIdentityFormat","getPadded","getLdml","getStrf","checkDateToken","weeksAgo","weeksFromNow","weeksSince","weeksUntil","yearsAgo","yearsFromNow","yearsSince","yearsUntil","numberWithUnit","baseUnit","toFixed","last2","prefix","dayAfter","dayAgo","dayBefore","dayFromNow","days","daysAfter","daysBefore","hourAfter","hourAgo","hourBefore","hourFromNow","hoursAfter","hoursBefore","millisecondAfter","millisecondAgo","millisecondBefore","millisecondFromNow","milliseconds","millisecondsAfter","millisecondsBefore","minuteAfter","minuteAgo","minuteBefore","minuteFromNow","minutes","minutesAfter","minutesBefore","monthAfter","monthAgo","monthBefore","monthFromNow","monthsAfter","monthsBefore","secondAfter","secondAgo","secondBefore","secondFromNow","seconds","secondsAfter","secondsBefore","weekAfter","weekAgo","weekBefore","weekFromNow","weeks","weeksAfter","weeksBefore","yearAfter","yearAgo","yearBefore","yearFromNow","years","yearsAfter","yearsBefore","rangeClamp","clamp","every","buildDateRangeUnits","DURATION_UNITS","createDateRangeFromString","RANGE_REG_FROM_TO","RANGE_REG_FRONT_DURATION","RANGE_REG_REAR_DURATION","DurationTextFormats","n1","n2","getPrecision","getRangeMemberNumericValue","charCodeAt","valueIsNotInfinite","clamped","Infinity","intersect","span","toArray","union","FULL_CAPTURED_DURATION"],"mappings":"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tC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,QAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,OAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,YAEAptC,KAAA,IACAotC,MAAA,iBAEAptC,KAAA,IACAotC,MAAA,kBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,OAEAptC,KAAA,KACAotC,MAAA,OAEAptC,KAAA,IACAotC,MAAA,oCAEAptC,KAAA,IACAotC,MAAA,WAEAptC,KAAA,IACAotC,MAAA,oBAEAptC,KAAA,IACAotC,MAAA,kBAEAptC,KAAA,IACAotC,MAAA,wBAEAptC,KAAA,IACAotC,MAAA,UAEAptC,KAAA,IACAotC,MAAA,kBAEAptC,KAAA,IACAotC,MAAA,sBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,aAEAptC,KAAA,IACAotC,MAAA,qBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,+CAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,cAEAptC,KAAA,IACAotC,MAAA,UAEAptC,KAAA,IACAotC,MAAA,qBAEAptC,KAAA,IACAotC,MAAA,qBAEAptC,KAAA,IACAotC,MAAA,mBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,sCAEAptC,KAAA,IACAotC,MAAA,YAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,cAEAptC,KAAA,IACAotC,MAAA,SAEAptC,KAAA,IACAotC,MAAA,mBAEAptC,KAAA,IACAotC,MAAA,kBAEAptC,KAAA,IACAotC,MAAA,wCAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,QAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,OAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,cAEAptC,KAAA,IACAotC,MAAA,iBAEAptC,KAAA,IACAotC,MAAA,qBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,OAEAptC,KAAA,IACAotC,MAAA,kCAEAptC,KAAA,IACAotC,MAAA,SAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,MACAotC,MAAA,MAEAptC,KAAA,MACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,mBAEAptC,KAAA,IACAotC,MAAA,mBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,wBAEAptC,KAAA,IACAotC,MAAA,UAEAptC,KAAA,IACAotC,MAAA,kBAEAptC,KAAA,IACAotC,MAAA,wBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,YAEAptC,KAAA,IACAotC,MAAA,uBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,gDAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,eAEAptC,KAAA,IACAotC,MAAA,UAEAptC,KAAA,IACAotC,MAAA,qBAEAptC,KAAA,IACAotC,MAAA,sBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,oBAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,MAAA,sCAEAptC,KAAA,IACAotC,MAAA,YAEAptC,KAAA,KACAotC,MAAA,MAEAptC,KAAA,IACAotC,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CAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KAGAA,EAAA,KACAA,EAAA,KAEAP,EAAAD,QAAAQ,EAAA,IzMw8gBM,SAAUP,EAAQD,EAA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","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t1: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tif(installedChunks[chunkId] === 0) {\n/******/ \t\t\treturn Promise.resolve();\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId]) {\n/******/ \t\t\treturn installedChunks[chunkId][2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunks[chunkId][2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"d88702b82ce1d192a674\"}[chunkId] + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 126);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/*\n * Sugar v2.0.4\n *\n * Freely distributable and licensed under the MIT-style license.\n * Copyright (c) Andrew Plummer\n * https://sugarjs.com/\n *\n * ---------------------------- */\n(function() {\n 'use strict';\n\n /***\n * @module Core\n * @description Core functionality including the ability to define methods and\n * extend onto natives.\n *\n ***/\n\n // The global to export.\n var Sugar;\n\n // The name of Sugar in the global namespace.\n var SUGAR_GLOBAL = 'Sugar';\n\n // Natives available on initialization. Letting Object go first to ensure its\n // global is set by the time the rest are checking for chainable Object methods.\n var NATIVE_NAMES = 'Object Number String Array Date RegExp Function';\n\n // Static method flag\n var STATIC = 0x1;\n\n // Instance method flag\n var INSTANCE = 0x2;\n\n // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch.\n var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties);\n\n // The global context. Rhino uses a different \"global\" keyword so\n // do an extra check to be sure that it's actually the global context.\n var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this;\n\n // Is the environment node?\n var hasExports = typeof module !== 'undefined' && module.exports;\n\n // Whether object instance methods can be mapped to the prototype.\n var allowObjectPrototype = false;\n\n // A map from Array to SugarArray.\n var namespacesByName = {};\n\n // A map from [object Object] to namespace.\n var namespacesByClassString = {};\n\n // Defining properties.\n var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim;\n\n // A default chainable class for unknown types.\n var DefaultChainable = getNewChainableClass('Chainable');\n\n\n // Global methods\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n if (Sugar) {\n // Reuse already defined Sugar global object.\n return;\n }\n Sugar = function(arg) {\n forEachProperty(Sugar, function(sugarNamespace, name) {\n // Although only the only enumerable properties on the global\n // object are Sugar namespaces, environments that can't set\n // non-enumerable properties will step through the utility methods\n // as well here, so use this check to only allow true namespaces.\n if (hasOwn(namespacesByName, name)) {\n sugarNamespace.extend(arg);\n }\n });\n return Sugar;\n };\n if (hasExports) {\n module.exports = Sugar;\n } else {\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments.\n *\n * @example\n *\n * Sugar.Object.defineStaticPolyfill({\n * keys: function (obj) {\n * // get keys!\n * }\n * });\n *\n * @signature defineStaticPolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name], opts.methods, true, opts.last);\n return sugarNamespace;\n });\n\n /***\n * @method defineInstancePolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that are mapped onto the native prototype\n * if they do not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. This method differs from\n * `defineInstance` as there is no static signature (as the method\n * is mapped as-is to the native), so it should refer to its `this`\n * object.\n *\n * @example\n *\n * Sugar.Array.defineInstancePolyfill({\n * indexOf: function (arr, el) {\n * // index finding code here!\n * }\n * });\n *\n * @signature defineInstancePolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name].prototype, opts.methods, true, opts.last);\n // Map instance polyfills to chainable as well.\n forEachProperty(opts.methods, function(fn, methodName) {\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n return sugarNamespace;\n });\n\n /***\n * @method alias(toName, from)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Aliases one Sugar method to another.\n *\n * @example\n *\n * Sugar.Array.alias('all', 'every');\n *\n * @signature alias(toName, fn)\n * @param {string} toName - Name for new method.\n * @param {string|Function} from - Method to alias, or string shortcut.\n ***/\n setProperty(sugarNamespace, 'alias', function(name, source) {\n var method = typeof source === 'string' ? sugarNamespace[source] : source;\n setMethod(sugarNamespace, name, method);\n return sugarNamespace;\n });\n\n // Each namespace can extend only itself through its .extend method.\n setProperty(sugarNamespace, 'extend', extend);\n\n // Cache the class to namespace relationship for later use.\n namespacesByName[name] = sugarNamespace;\n namespacesByClassString['[object ' + name + ']'] = sugarNamespace;\n\n mapNativeToChainable(name);\n mapObjectChainablesToNamespace(sugarNamespace);\n\n\n // Export\n return Sugar[name] = sugarNamespace;\n }\n\n function setGlobalProperties() {\n setProperty(Sugar, 'extend', Sugar);\n setProperty(Sugar, 'toString', toString);\n setProperty(Sugar, 'createNamespace', createNamespace);\n\n setProperty(Sugar, 'util', {\n 'hasOwn': hasOwn,\n 'getOwn': getOwn,\n 'setProperty': setProperty,\n 'classToString': classToString,\n 'defineProperty': defineProperty,\n 'forEachProperty': forEachProperty,\n 'mapNativeToChainable': mapNativeToChainable\n });\n }\n\n function toString() {\n return SUGAR_GLOBAL;\n }\n\n\n // Defining Methods\n\n function defineMethods(sugarNamespace, methods, type, args, flags) {\n forEachProperty(methods, function(method, methodName) {\n var instanceMethod, staticMethod = method;\n if (args) {\n staticMethod = wrapMethodWithArguments(method);\n }\n if (flags) {\n staticMethod.flags = flags;\n }\n\n // A method may define its own custom implementation, so\n // make sure that's not the case before creating one.\n if (type & INSTANCE && !method.instance) {\n instanceMethod = wrapInstanceMethod(method, args);\n setProperty(staticMethod, 'instance', instanceMethod);\n }\n\n if (type & STATIC) {\n setProperty(staticMethod, 'static', true);\n }\n\n setMethod(sugarNamespace, methodName, staticMethod);\n\n if (sugarNamespace.active) {\n // If the namespace has been activated (.extend has been called),\n // then map this method as well.\n sugarNamespace.extend(methodName);\n }\n });\n }\n\n function collectDefineOptions(arg1, arg2, arg3) {\n var methods, last;\n if (typeof arg1 === 'string') {\n methods = {};\n methods[arg1] = arg2;\n last = arg3;\n } else {\n methods = arg1;\n last = arg2;\n }\n return {\n last: last,\n methods: methods\n };\n }\n\n function wrapInstanceMethod(fn, args) {\n return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn);\n }\n\n function wrapMethodWithArguments(fn, instance) {\n // Functions accepting enumerated arguments will always have \"args\" as the\n // last argument, so subtract one from the function length to get the point\n // at which to start collecting arguments. If this is an instance method on\n // a prototype, then \"this\" will be pushed into the arguments array so start\n // collecting 1 argument earlier.\n var startCollect = fn.length - 1 - (instance ? 1 : 0);\n return function() {\n var args = [], collectedArgs = [], len;\n if (instance) {\n args.push(this);\n }\n len = Math.max(arguments.length, startCollect);\n // Optimized: no leaking arguments\n for (var i = 0; i < len; i++) {\n if (i < startCollect) {\n args.push(arguments[i]);\n } else {\n collectedArgs.push(arguments[i]);\n }\n }\n args.push(collectedArgs);\n return fn.apply(this, args);\n };\n }\n\n function wrapInstanceMethodFixed(fn) {\n switch(fn.length) {\n // Wrapped instance methods will always be passed the instance\n // as the first argument, but requiring the argument to be defined\n // may cause confusion here, so return the same wrapped function regardless.\n case 0:\n case 1:\n return function() {\n return fn(this);\n };\n case 2:\n return function(a) {\n return fn(this, a);\n };\n case 3:\n return function(a, b) {\n return fn(this, a, b);\n };\n case 4:\n return function(a, b, c) {\n return fn(this, a, b, c);\n };\n case 5:\n return function(a, b, c, d) {\n return fn(this, a, b, c, d);\n };\n }\n }\n\n // Method helpers\n\n function extendNative(target, source, polyfill, override) {\n forEachProperty(source, function(method, name) {\n if (polyfill && !override && target[name]) {\n // Method exists, so bail.\n return;\n }\n setProperty(target, name, method);\n });\n }\n\n function setMethod(sugarNamespace, methodName, method) {\n sugarNamespace[methodName] = method;\n if (method.instance) {\n defineChainableMethod(sugarNamespace, methodName, method.instance, true);\n }\n }\n\n\n // Chainables\n\n function getNewChainableClass(name) {\n var fn = function SugarChainable(obj, arg) {\n if (!(this instanceof fn)) {\n return new fn(obj, arg);\n }\n if (this.constructor !== fn) {\n // Allow modules to define their own constructors.\n obj = this.constructor.apply(obj, arguments);\n }\n this.raw = obj;\n };\n setProperty(fn, 'toString', function() {\n return SUGAR_GLOBAL + name;\n });\n setProperty(fn.prototype, 'valueOf', function() {\n return this.raw;\n });\n return fn;\n }\n\n function defineChainableMethod(sugarNamespace, methodName, fn) {\n var wrapped = wrapWithChainableResult(fn), existing, collision, dcp;\n dcp = DefaultChainable.prototype;\n existing = dcp[methodName];\n\n // If the method was previously defined on the default chainable, then a\n // collision exists, so set the method to a disambiguation function that will\n // lazily evaluate the object and find it's associated chainable. An extra\n // check is required to avoid false positives from Object inherited methods.\n collision = existing && existing !== Object.prototype[methodName];\n\n // The disambiguation function is only required once.\n if (!existing || !existing.disambiguate) {\n dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped;\n }\n\n // The target chainable always receives the wrapped method. Additionally,\n // if the target chainable is Sugar.Object, then map the wrapped method\n // to all other namespaces as well if they do not define their own method\n // of the same name. This way, a Sugar.Number will have methods like\n // isEqual that can be called on any object without having to traverse up\n // the prototype chain and perform disambiguation, which costs cycles.\n // Note that the \"if\" block below actually does nothing on init as Object\n // goes first and no other namespaces exist yet. However it needs to be\n // here as Object instance methods defined later also need to be mapped\n // back onto existing namespaces.\n sugarNamespace.prototype[methodName] = wrapped;\n if (sugarNamespace === Sugar.Object) {\n mapObjectChainableToAllNamespaces(methodName, wrapped);\n }\n }\n\n function mapObjectChainablesToNamespace(sugarNamespace) {\n forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) {\n if (typeof val === 'function') {\n setObjectChainableOnNamespace(sugarNamespace, methodName, val);\n }\n });\n }\n\n function mapObjectChainableToAllNamespaces(methodName, fn) {\n forEachProperty(namespacesByName, function(sugarNamespace) {\n setObjectChainableOnNamespace(sugarNamespace, methodName, fn);\n });\n }\n\n function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) {\n var proto = sugarNamespace.prototype;\n if (!hasOwn(proto, methodName)) {\n proto[methodName] = fn;\n }\n }\n\n function wrapWithChainableResult(fn) {\n return function() {\n return new DefaultChainable(fn.apply(this.raw, arguments));\n };\n }\n\n function disambiguateMethod(methodName) {\n var fn = function() {\n var raw = this.raw, sugarNamespace, fn;\n if (raw != null) {\n // Find the Sugar namespace for this unknown.\n sugarNamespace = namespacesByClassString[classToString(raw)];\n }\n if (!sugarNamespace) {\n // If no sugarNamespace can be resolved, then default\n // back to Sugar.Object so that undefined and other\n // non-supported types can still have basic object\n // methods called on them, such as type checks.\n sugarNamespace = Sugar.Object;\n }\n\n fn = new sugarNamespace(raw)[methodName];\n\n if (fn.disambiguate) {\n // If the method about to be called on this chainable is\n // itself a disambiguation method, then throw an error to\n // prevent infinite recursion.\n throw new TypeError('Cannot resolve namespace for ' + raw);\n }\n\n return fn.apply(this, arguments);\n };\n fn.disambiguate = true;\n return fn;\n }\n\n function mapNativeToChainable(name, methodNames) {\n var sugarNamespace = namespacesByName[name],\n nativeProto = globalContext[name].prototype;\n\n if (!methodNames && ownPropertyNames) {\n methodNames = ownPropertyNames(nativeProto);\n }\n\n forEachProperty(methodNames, function(methodName) {\n if (nativeMethodProhibited(methodName)) {\n // Sugar chainables have their own constructors as well as \"valueOf\"\n // methods, so exclude them here. The __proto__ argument should be trapped\n // by the function check below, however simply accessing this property on\n // Object.prototype causes QML to segfault, so pre-emptively excluding it.\n return;\n }\n try {\n var fn = nativeProto[methodName];\n if (typeof fn !== 'function') {\n // Bail on anything not a function.\n return;\n }\n } catch (e) {\n // Function.prototype has properties that\n // will throw errors when accessed.\n return;\n }\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n }\n\n function nativeMethodProhibited(methodName) {\n return methodName === 'constructor' ||\n methodName === 'valueOf' ||\n methodName === '__proto__';\n }\n\n\n // Util\n\n // Internal references\n var ownPropertyNames = Object.getOwnPropertyNames,\n internalToString = Object.prototype.toString,\n internalHasOwnProperty = Object.prototype.hasOwnProperty;\n\n // Defining this as a variable here as the ES5 module\n // overwrites it to patch DONTENUM.\n var forEachProperty = function (obj, fn) {\n for(var key in obj) {\n if (!hasOwn(obj, key)) continue;\n if (fn.call(obj, obj[key], key, obj) === false) break;\n }\n };\n\n function definePropertyShim(obj, prop, descriptor) {\n obj[prop] = descriptor.value;\n }\n\n function setProperty(target, name, value, enumerable) {\n defineProperty(target, name, {\n value: value,\n enumerable: !!enumerable,\n configurable: true,\n writable: true\n });\n }\n\n // PERF: Attempts to speed this method up get very Heisenbergy. Quickly\n // returning based on typeof works for primitives, but slows down object\n // types. Even === checks on null and undefined (no typeof) will end up\n // basically breaking even. This seems to be as fast as it can go.\n function classToString(obj) {\n return internalToString.call(obj);\n }\n\n function hasOwn(obj, prop) {\n return !!obj && internalHasOwnProperty.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n if (hasOwn(obj, prop)) {\n return obj[prop];\n }\n }\n\n setupGlobal();\n\n}).call(this);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(107)))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildNumberUnitMethods = __webpack_require__(202);\n\nbuildNumberUnitMethods();\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildDateUnitMethods = __webpack_require__(201);\n\nbuildDateUnitMethods();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar NATIVE_TYPES = __webpack_require__(153),\n forEach = __webpack_require__(26),\n isClass = __webpack_require__(72),\n spaceSplit = __webpack_require__(43),\n isPlainObject = __webpack_require__(143),\n coreUtilityAliases = __webpack_require__(10);\n\nvar classToString = coreUtilityAliases.classToString;\n\nvar isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\nfunction buildClassChecks() {\n\n var knownTypes = {};\n\n function addCoreTypes() {\n\n var names = spaceSplit(NATIVE_TYPES);\n\n isBoolean = buildPrimitiveClassCheck(names[0]);\n isNumber = buildPrimitiveClassCheck(names[1]);\n isString = buildPrimitiveClassCheck(names[2]);\n\n isDate = buildClassCheck(names[3]);\n isRegExp = buildClassCheck(names[4]);\n\n // Wanted to enhance performance here by using simply \"typeof\"\n // but Firefox has two major issues that make this impossible,\n // one fixed, the other not, so perform a full class check here.\n //\n // 1. Regexes can be typeof \"function\" in FF < 3\n // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed)\n //\n // 2. HTMLEmbedElement and HTMLObjectElement are be typeof \"function\"\n // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix)\n isFunction = buildClassCheck(names[5]);\n\n\n isArray = Array.isArray || buildClassCheck(names[6]);\n isError = buildClassCheck(names[7]);\n\n isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set);\n isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map);\n\n // Add core types as known so that they can be checked by value below,\n // notably excluding Functions and adding Arguments and Error.\n addKnownType('Arguments');\n addKnownType(names[0]);\n addKnownType(names[1]);\n addKnownType(names[2]);\n addKnownType(names[3]);\n addKnownType(names[4]);\n addKnownType(names[6]);\n\n }\n\n function addArrayTypes() {\n var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64';\n forEach(spaceSplit(types), function(str) {\n addKnownType(str + 'Array');\n });\n }\n\n function addKnownType(className) {\n var str = '[object '+ className +']';\n knownTypes[str] = true;\n }\n\n function isKnownType(className) {\n return knownTypes[className];\n }\n\n function buildClassCheck(className, globalObject) {\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n function getConstructorClassCheck(obj) {\n var ctorStr = String(obj);\n return function(obj) {\n return String(obj.constructor) === ctorStr;\n };\n }\n\n function getToStringClassCheck(className) {\n return function(obj, str) {\n // perf: Returning up front on instanceof appears to be slower.\n return isClass(obj, className, str);\n };\n }\n\n function buildPrimitiveClassCheck(className) {\n var type = className.toLowerCase();\n return function(obj) {\n var t = typeof obj;\n return t === type || t === 'object' && isClass(obj, className);\n };\n }\n\n addCoreTypes();\n addArrayTypes();\n\n isSerializable = function(obj, className) {\n // Only known objects can be serialized. This notably excludes functions,\n // host objects, Symbols (which are matched by reference), and instances\n // of classes. The latter can arguably be matched by value, but\n // distinguishing between these and host objects -- which should never be\n // compared by value -- is very tricky so not dealing with it here.\n className = className || classToString(obj);\n return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\r\n * Types utilities\r\n */\n\nvar UNDEFINED = void 0;\n\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\nvar EMPTY_FN = exports.EMPTY_FN = function EMPTY_FN() {};\n\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\nvar isObj = exports.isObj = function isObj(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\nvar isFn = exports.isFn = function isFn(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n};\n\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\nvar isArray = exports.isArray = function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj objue\r\n * @returns {Boolean}\r\n */\nvar isString = exports.isString = function isString(obj) {\n return Object.prototype.toString.call(obj) === '[object String]';\n};\n\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\nvar isNumber = exports.isNumber = function isNumber(obj) {\n return Object.prototype.toString.call(obj) === '[object Number]';\n};\n\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\nvar isUndef = exports.isUndef = function isUndef(obj) {\n return obj === UNDEFINED;\n};\n\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\nvar isNull = exports.isNull = function isNull(obj) {\n return obj === null;\n};\n\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\nvar isEmpty = exports.isEmpty = function isEmpty(obj) {\n return isUndef(obj) || isNull(obj) || obj.length === 0;\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LazyLoadedLocales = __webpack_require__(295),\n AmericanEnglishDefinition = __webpack_require__(95),\n getNewLocale = __webpack_require__(217);\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tag = exports.elm = exports.createCheckItem = exports.createOpt = exports.removeClass = exports.addClass = exports.hasClass = exports.createText = exports.removeElm = exports.createElm = exports.getFirstTextNode = exports.getText = undefined;\n\nvar _root = __webpack_require__(15);\n\nvar _types = __webpack_require__(6);\n\nvar _string = __webpack_require__(19);\n\n/**\r\n * DOM utilities\r\n */\n\nvar doc = _root.root.document;\n\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\nvar getText = exports.getText = function getText(node) {\n if ((0, _types.isUndef)(node.textContent)) {\n return (0, _string.trim)(node.innerText);\n }\n return (0, _string.trim)(node.textContent);\n};\n\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\nvar getFirstTextNode = exports.getFirstTextNode = function getFirstTextNode(node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var n = node.childNodes[i];\n if (n.nodeType === 3) {\n return n.data;\n }\n }\n};\n\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\nvar createElm = exports.createElm = function createElm() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var tag = args[0];\n if (!(0, _types.isString)(tag)) {\n return null;\n }\n\n var el = doc.createElement(tag);\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n\n if ((0, _types.isArray)(arg) && arg.length === 2) {\n el.setAttribute(arg[0], arg[1]);\n }\n }\n return el;\n};\n\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\nvar removeElm = exports.removeElm = function removeElm(node) {\n return node.parentNode.removeChild(node);\n};\n\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\nvar createText = exports.createText = function createText(txt) {\n return doc.createTextNode(txt);\n};\n\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\nvar hasClass = exports.hasClass = function hasClass(ele, cls) {\n if ((0, _types.isUndef)(ele)) {\n return false;\n }\n\n if (supportsClassList()) {\n return ele.classList.contains(cls);\n }\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\n};\n\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\nvar addClass = exports.addClass = function addClass(ele, cls) {\n if ((0, _types.isUndef)(ele)) {\n return;\n }\n\n if (supportsClassList()) {\n ele.classList.add(cls);\n return;\n }\n\n if (ele.className === '') {\n ele.className = cls;\n } else if (!hasClass(ele, cls)) {\n ele.className += ' ' + cls;\n }\n};\n\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\nvar removeClass = exports.removeClass = function removeClass(ele, cls) {\n if ((0, _types.isUndef)(ele)) {\n return;\n }\n\n if (supportsClassList()) {\n ele.classList.remove(cls);\n return;\n }\n var reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\n ele.className = ele.className.replace(reg, '');\n};\n\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\nvar createOpt = exports.createOpt = function createOpt(text, value, isSel) {\n var isSelected = isSel ? true : false;\n var opt = isSelected ? createElm('option', ['value', value], ['selected', 'true']) : createElm('option', ['value', value]);\n opt.appendChild(createText(text));\n return opt;\n};\n\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @return {Object} li DOM element\r\n */\nvar createCheckItem = exports.createCheckItem = function createCheckItem(id, chkValue, labelText) {\n var li = createElm('li');\n var label = createElm('label', ['for', id]);\n var check = createElm('input', ['id', id], ['name', id], ['type', 'checkbox'], ['value', chkValue]);\n label.appendChild(check);\n label.appendChild(createText(labelText));\n li.appendChild(label);\n li.label = label;\n li.check = check;\n return li;\n};\n\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\nvar elm = exports.elm = function elm(id) {\n return doc.getElementById(id);\n};\n\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\nvar tag = exports.tag = function tag(o, tagname) {\n return o.getElementsByTagName(tagname);\n};\n\n// HTML5 classList API\nfunction supportsClassList() {\n return doc.documentElement.classList;\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\nmodule.exports = {\n hasOwn: Sugar.util.hasOwn,\n getOwn: Sugar.util.getOwn,\n setProperty: Sugar.util.setProperty,\n classToString: Sugar.util.classToString,\n defineProperty: Sugar.util.defineProperty,\n forEachProperty: Sugar.util.forEachProperty,\n mapNativeToChainable: Sugar.util.mapNativeToChainable\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar NOTIMPLEMENTED = 'Not implemented.';\n\n/**\r\n * Base class defining the interface of a TableFilter feature\r\n */\n\nvar Feature = exports.Feature = function () {\n /**\r\n * Creates an instance of Feature\r\n * @param {Object} tf TableFilter instance\r\n * @param {String} feature Feature name known by TableFilter\r\n */\n function Feature(tf, feature) {\n var _this = this;\n\n _classCallCheck(this, Feature);\n\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\n this.tf = tf;\n\n /**\r\n * Feature name\r\n * @type {String}\r\n */\n this.feature = feature;\n\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\n this.enabled = tf[feature];\n\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\n this.config = tf.config();\n\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\n this.emitter = tf.emitter;\n\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\n this.initialized = false;\n\n /** Subscribe to destroy event */\n this.emitter.on(['destroy'], function () {\n return _this.destroy();\n });\n }\n\n /**\r\n * Initialize the feature\r\n */\n\n\n _createClass(Feature, [{\n key: 'init',\n value: function init() {\n throw new Error(NOTIMPLEMENTED);\n }\n\n /**\r\n * Reset the feature after being disabled\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n this.enable();\n this.init();\n }\n\n /**\r\n * Destroy the feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n throw new Error(NOTIMPLEMENTED);\n }\n\n /**\r\n * Enable the feature\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.enabled = true;\n }\n\n /**\r\n * Disable the feature\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.enabled = false;\n }\n\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\n\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return this.enabled === true;\n }\n }]);\n\n return Feature;\n}();\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildRelativeAliases = __webpack_require__(203);\n\nbuildRelativeAliases();\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar cloneRangeMember = __webpack_require__(101);\n\nfunction Range(start, end) {\n this.start = cloneRangeMember(start);\n this.end = cloneRangeMember(end);\n}\n\nmodule.exports = Range;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FEATURES = exports.AUTO_FILTER_DELAY = exports.IP_ADDRESS = exports.DATE = exports.FORMATTED_NUMBER = exports.NUMBER = exports.STRING = exports.CELL_TAG = exports.HEADER_TAG = exports.DOWN_ARROW_KEY = exports.UP_ARROW_KEY = exports.ESC_KEY = exports.TAB_KEY = exports.ENTER_KEY = exports.NONE = exports.CHECKLIST = exports.MULTIPLE = exports.SELECT = exports.INPUT = undefined;\n\nvar _dateType = __webpack_require__(112);\n\nvar _help = __webpack_require__(115);\n\nvar _state = __webpack_require__(123);\n\nvar _gridLayout = __webpack_require__(113);\n\nvar _loader = __webpack_require__(117);\n\nvar _highlightKeywords = __webpack_require__(116);\n\nvar _popupFilter = __webpack_require__(121);\n\nvar _markActiveColumns = __webpack_require__(118);\n\nvar _rowsCounter = __webpack_require__(122);\n\nvar _statusBar = __webpack_require__(124);\n\nvar _clearButton = __webpack_require__(111);\n\nvar _alternateRows = __webpack_require__(110);\n\nvar _noResults = __webpack_require__(119);\n\nvar _paging = __webpack_require__(120);\n\n/**\r\n * Filter types\r\n */\n\n/**\r\n * Input filter type\r\n * @type {String}\r\n */\nvar INPUT = exports.INPUT = 'input';\n/**\r\n * Select filter type\r\n * @type {String}\r\n */\nvar SELECT = exports.SELECT = 'select';\n/**\r\n * Multiple select filter type\r\n * @type {String}\r\n */\nvar MULTIPLE = exports.MULTIPLE = 'multiple';\n/**\r\n * Checklist filter type\r\n * @type {String}\r\n */\nvar CHECKLIST = exports.CHECKLIST = 'checklist';\n/**\r\n * None filter type\r\n * @type {String}\r\n */\nvar NONE = exports.NONE = 'none';\n\n/**\r\n * Key codes\r\n */\n\n/**\r\n * Enter key code\r\n * @type {Number}\r\n */\nvar ENTER_KEY = exports.ENTER_KEY = 13;\n/**\r\n * Tab key code\r\n * @type {Number}\r\n */\nvar TAB_KEY = exports.TAB_KEY = 9;\n/**\r\n * Escape key code\r\n * @type {Number}\r\n */\nvar ESC_KEY = exports.ESC_KEY = 27;\n/**\r\n * Up arrow key code\r\n * @type {Number}\r\n */\nvar UP_ARROW_KEY = exports.UP_ARROW_KEY = 38;\n/**\r\n * Down arrow key code\r\n * @type {Number}\r\n */\nvar DOWN_ARROW_KEY = exports.DOWN_ARROW_KEY = 40;\n\n/**\r\n * HTML tags\r\n */\n\n/**\r\n * Header cell tag\r\n * @type {String}\r\n */\nvar HEADER_TAG = exports.HEADER_TAG = 'TH';\n/**\r\n * Cell tag\r\n * @type {String}\r\n */\nvar CELL_TAG = exports.CELL_TAG = 'TD';\n\n/**\r\n * Data types\r\n */\n\n/**\r\n * String\r\n * @type {String}\r\n */\nvar STRING = exports.STRING = 'string';\n\n/**\r\n * Number\r\n * @type {String}\r\n */\nvar NUMBER = exports.NUMBER = 'number';\n\n/**\r\n * Formatted number\r\n * @type {String}\r\n */\nvar FORMATTED_NUMBER = exports.FORMATTED_NUMBER = 'formatted-number';\n\n/**\r\n * Date\r\n * @type {String}\r\n */\nvar DATE = exports.DATE = 'date';\n\n/**\r\n * IP address\r\n * @type {String}\r\n */\nvar IP_ADDRESS = exports.IP_ADDRESS = 'ipaddress';\n\n/**\r\n * Default values\r\n */\n\n/**\r\n * Auto filter delay in milliseconds\r\n * @type {Number}\r\n */\nvar AUTO_FILTER_DELAY = exports.AUTO_FILTER_DELAY = 750;\n\n/**\r\n * TableFilter features definitions\r\n * @type {Object}\r\n */\nvar FEATURES = exports.FEATURES = {\n dateType: {\n class: _dateType.DateType,\n name: 'dateType'\n },\n help: {\n class: _help.Help,\n name: 'help',\n enforce: true\n },\n state: {\n class: _state.State,\n name: 'state'\n },\n markActiveColumns: {\n class: _markActiveColumns.MarkActiveColumns,\n name: 'markActiveColumns'\n },\n gridLayout: {\n class: _gridLayout.GridLayout,\n name: 'gridLayout'\n },\n loader: {\n class: _loader.Loader,\n name: 'loader'\n },\n highlightKeyword: {\n class: _highlightKeywords.HighlightKeyword,\n name: 'highlightKeyword',\n property: 'highlightKeywords'\n },\n popupFilter: {\n class: _popupFilter.PopupFilter,\n name: 'popupFilter',\n property: 'popupFilters'\n },\n rowsCounter: {\n class: _rowsCounter.RowsCounter,\n name: 'rowsCounter'\n },\n statusBar: {\n class: _statusBar.StatusBar,\n name: 'statusBar'\n },\n clearButton: {\n class: _clearButton.ClearButton,\n name: 'clearButton',\n property: 'btnReset'\n },\n alternateRows: {\n class: _alternateRows.AlternateRows,\n name: 'alternateRows'\n },\n noResults: {\n class: _noResults.NoResults,\n name: 'noResults'\n },\n paging: {\n class: _paging.Paging,\n name: 'paging'\n }\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\r\n * Export window or global object depending on the environment\r\n */\nvar root = exports.root = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self.self === self && self || (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global.global === global && global || undefined;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(107)))\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyCode = exports.targetEvt = exports.cancelEvt = exports.stopEvt = exports.removeEvt = exports.addEvt = undefined;\n\nvar _root = __webpack_require__(15);\n\n/**\r\n * DOM event utilities\r\n */\n\n/**\r\n * Add event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\nvar addEvt = exports.addEvt = function addEvt(obj, type, func, capture) {\n if (obj.addEventListener) {\n obj.addEventListener(type, func, capture);\n } else if (obj.attachEvent) {\n obj.attachEvent('on' + type, func);\n } else {\n obj['on' + type] = func;\n }\n};\n\n/**\r\n * Remove event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\nvar removeEvt = exports.removeEvt = function removeEvt(obj, type, func, capture) {\n if (obj.removeEventListener) {\n obj.removeEventListener(type, func, capture);\n } else if (obj.detachEvent) {\n obj.detachEvent('on' + type, func);\n } else {\n obj['on' + type] = null;\n }\n};\n\n/**\r\n * Prevents further propagation of the current event in the bubbling phase\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\nvar stopEvt = exports.stopEvt = function stopEvt(evt) {\n if (!evt) {\n evt = _root.root.event;\n }\n if (evt.stopPropagation) {\n evt.stopPropagation();\n } else {\n evt.cancelBubble = true;\n }\n};\n\n/**\r\n * Cancels the event if it is cancelable, without stopping further\r\n * propagation of the event.\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\nvar cancelEvt = exports.cancelEvt = function cancelEvt(evt) {\n if (!evt) {\n evt = _root.root.event;\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n } else {\n evt.returnValue = false;\n }\n};\n\n/**\r\n * Reference to the object that dispatched the event\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {DOMElement}\r\n */\nvar targetEvt = exports.targetEvt = function targetEvt(evt) {\n if (!evt) {\n evt = _root.root.event;\n }\n return evt.target || evt.srcElement;\n};\n\n/**\r\n * Returns the Unicode value of pressed key\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {Number}\r\n */\nvar keyCode = exports.keyCode = function keyCode(evt) {\n return evt.charCode ? evt.charCode : evt.keyCode ? evt.keyCode : evt.which ? evt.which : 0;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _utc = __webpack_require__(21);\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.contains = exports.matchCase = exports.rgxEsc = exports.isEmpty = exports.trim = undefined;\n\nvar _diacritics = __webpack_require__(127);\n\n/**\r\n * String utilities\r\n */\n\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\nvar trim = exports.trim = function trim(text) {\n if (text.trim) {\n return text.trim();\n }\n return text.replace(/^\\s*|\\s*$/g, '');\n};\n\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\nvar isEmpty = exports.isEmpty = function isEmpty(text) {\n return trim(text) === '';\n};\n\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\nvar rgxEsc = exports.rgxEsc = function rgxEsc(text) {\n var chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\n var escMatch = '\\\\$&';\n return String(text).replace(chars, escMatch);\n};\n\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\nvar matchCase = exports.matchCase = function matchCase(text) {\n var caseSensitive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!caseSensitive) {\n return text.toLowerCase();\n }\n return text;\n};\n\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\nvar contains = exports.contains = function contains(term, data) {\n var exactMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var caseSensitive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var ignoreDiacritics = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\n // special characters are now filtered\n var regexp = void 0;\n var modifier = caseSensitive ? 'g' : 'gi';\n if (ignoreDiacritics) {\n term = (0, _diacritics.remove)(term);\n data = (0, _diacritics.remove)(data);\n }\n if (exactMatch) {\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)', modifier);\n } else {\n regexp = new RegExp(rgxEsc(term), modifier);\n }\n return regexp.test(data);\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateGet = __webpack_require__(18);\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar privatePropertyAccessor = __webpack_require__(147);\n\nmodule.exports = privatePropertyAccessor('utc');\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\nmodule.exports = {\n sugarObject: Sugar.Object,\n sugarArray: Sugar.Array,\n sugarDate: Sugar.Date,\n sugarString: Sugar.String,\n sugarNumber: Sugar.Number,\n sugarFunction: Sugar.Function,\n sugarRegExp: Sugar.RegExp\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar mathAliases = __webpack_require__(7);\n\nvar ceil = mathAliases.ceil,\n floor = mathAliases.floor;\n\nvar trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n};\n\nmodule.exports = trunc;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setDate = __webpack_require__(35),\n getDate = __webpack_require__(34),\n getWeekday = __webpack_require__(20),\n classChecks = __webpack_require__(3),\n mathAliases = __webpack_require__(7);\n\nvar isNumber = classChecks.isNumber,\n abs = mathAliases.abs;\n\nfunction setWeekday(d, dow, dir) {\n if (!isNumber(dow)) return;\n var currentWeekday = getWeekday(d);\n if (dir) {\n // Allow a \"direction\" parameter to determine whether a weekday can\n // be set beyond the current weekday in either direction.\n var ndir = dir > 0 ? 1 : -1;\n var offset = dow % 7 - currentWeekday;\n if (offset && offset / abs(offset) !== ndir) {\n dow += 7 * ndir;\n }\n }\n setDate(d, getDate(d) + dow - currentWeekday);\n return d.getTime();\n}\n\nmodule.exports = setWeekday;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildDateRangeUnits = __webpack_require__(412);\n\nbuildDateRangeUnits();\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar iterateOverSparseArray = __webpack_require__(144);\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getExtendedDate = __webpack_require__(58);\n\nfunction createDate(d, options, forceClone) {\n return getExtendedDate(null, d, options, forceClone).date;\n}\n\nmodule.exports = createDate;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateGet = __webpack_require__(18);\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateGet = __webpack_require__(18);\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDaysInMonth = __webpack_require__(86);\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _utc = __webpack_require__(21),\n callDateGet = __webpack_require__(18);\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _utc = __webpack_require__(21);\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateGet = __webpack_require__(18);\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateSet = __webpack_require__(32);\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isDefined = __webpack_require__(27),\n classChecks = __webpack_require__(3),\n callDateSet = __webpack_require__(32),\n walkUnitDown = __webpack_require__(94);\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar updateDate = __webpack_require__(50);\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5);\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _dateOptions = __webpack_require__(64);\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar methodDefineAliases = __webpack_require__(157),\n collectSimilarMethods = __webpack_require__(129);\n\nvar defineInstance = methodDefineAliases.defineInstance;\n\nfunction defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n}\n\nmodule.exports = defineInstanceSimilar;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar simpleMerge = __webpack_require__(56);\n\nfunction simpleClone(obj) {\n return simpleMerge({}, obj);\n}\n\nmodule.exports = simpleClone;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction spaceSplit(str) {\n return str.split(' ');\n}\n\nmodule.exports = spaceSplit;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n HALF_WIDTH_ZERO: 0x30,\n FULL_WIDTH_ZERO: 0xff10,\n HALF_WIDTH_PERIOD: '.',\n FULL_WIDTH_PERIOD: '.',\n HALF_WIDTH_COMMA: ',',\n OPEN_BRACE: '{',\n CLOSE_BRACE: '}'\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5),\n isDefined = __webpack_require__(27),\n getDateParam = __webpack_require__(212),\n iterateOverDateUnits = __webpack_require__(61);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction iterateOverDateParams(params, fn, startIndex, endIndex) {\n\n function run(name, unit, i) {\n var val = getDateParam(params, name);\n if (isDefined(val)) {\n fn(name, val, unit, i);\n }\n }\n\n iterateOverDateUnits(function (unit, i) {\n var result = run(unit.name, unit, i);\n if (result !== false && i === DAY_INDEX) {\n // Check for \"weekday\", which has a distinct meaning\n // in the context of setting a date, but has the same\n // meaning as \"day\" as a unit of time.\n result = run('weekday', unit, i);\n }\n return result;\n }, startIndex, endIndex);\n\n}\n\nmodule.exports = iterateOverDateParams;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n DateUnitIndexes = __webpack_require__(5),\n getLowerUnitIndex = __webpack_require__(39),\n moveToBeginningOfWeek = __webpack_require__(62),\n setUnitAndLowerToEdge = __webpack_require__(36);\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToBeginningOfUnit(d, unitIndex, localeCode) {\n if (unitIndex === WEEK_INDEX) {\n moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = moveToBeginningOfUnit;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n DateUnitIndexes = __webpack_require__(5),\n moveToEndOfWeek = __webpack_require__(90),\n getLowerUnitIndex = __webpack_require__(39),\n setUnitAndLowerToEdge = __webpack_require__(36);\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) {\n if (unitIndex === WEEK_INDEX) {\n moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true);\n}\n\nmodule.exports = moveToEndOfUnit;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction tzOffset(d) {\n return d.getTimezoneOffset();\n}\n\nmodule.exports = tzOffset;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n DateUnitIndexes = __webpack_require__(5),\n trunc = __webpack_require__(23),\n setDate = __webpack_require__(35),\n getDate = __webpack_require__(34),\n getMonth = __webpack_require__(29),\n getNewDate = __webpack_require__(40),\n setWeekday = __webpack_require__(24),\n mathAliases = __webpack_require__(7),\n callDateGet = __webpack_require__(18),\n classChecks = __webpack_require__(3),\n resetLowerUnits = __webpack_require__(225),\n getLowerUnitIndex = __webpack_require__(39),\n getHigherUnitIndex = __webpack_require__(215),\n callDateSetWithWeek = __webpack_require__(204),\n iterateOverDateParams = __webpack_require__(46);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX,\n round = mathAliases.round,\n isNumber = classChecks.isNumber;\n\nfunction updateDate(d, params, reset, advance, prefer, weekdayDir) {\n var upperUnitIndex;\n\n function setUpperUnit(unitName, unitIndex) {\n if (prefer && !upperUnitIndex) {\n if (unitName === 'weekday') {\n upperUnitIndex = WEEK_INDEX;\n } else {\n upperUnitIndex = getHigherUnitIndex(unitIndex);\n }\n }\n }\n\n function setSpecificity(unitIndex) {\n // Other functions may preemptively set the specificity before arriving\n // here so concede to them if they have already set more specific units.\n if (unitIndex > params.specificity) {\n return;\n }\n params.specificity = unitIndex;\n }\n\n function canDisambiguate() {\n if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) {\n return;\n }\n switch(prefer) {\n case -1: return d > getNewDate();\n case 1: return d < getNewDate();\n }\n }\n\n function disambiguateHigherUnit() {\n var unit = DateUnits[upperUnitIndex];\n advance = prefer;\n setUnit(unit.name, 1, unit, upperUnitIndex);\n }\n\n function handleFraction(unit, unitIndex, fraction) {\n if (unitIndex) {\n var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)];\n var val = round(unit.multiplier / lowerUnit.multiplier * fraction);\n params[lowerUnit.name] = val;\n }\n }\n\n function monthHasShifted(d, targetMonth) {\n if (targetMonth < 0) {\n targetMonth = targetMonth % 12 + 12;\n }\n return targetMonth % 12 !== getMonth(d);\n }\n\n function setUnit(unitName, value, unit, unitIndex) {\n var method = unit.method, checkMonth, fraction;\n\n setUpperUnit(unitName, unitIndex);\n setSpecificity(unitIndex);\n\n fraction = value % 1;\n if (fraction) {\n handleFraction(unit, unitIndex, fraction);\n value = trunc(value);\n }\n\n if (unitName === 'weekday') {\n if (!advance) {\n // Weekdays are always considered absolute units so simply set them\n // here even if it is an \"advance\" operation. This is to help avoid\n // ambiguous meanings in \"advance\" as well as to neatly allow formats\n // like \"Wednesday of next week\" without more complex logic.\n setWeekday(d, value, weekdayDir);\n }\n return;\n }\n checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28;\n\n // If we are advancing or rewinding, then we need we need to set the\n // absolute time if the unit is \"hours\" or less. This is due to the fact\n // that setting by method is ambiguous during DST shifts. For example,\n // 1:00am on November 1st 2015 occurs twice in North American timezones\n // with DST, the second time being after the clocks are rolled back at\n // 2:00am. When springing forward this is automatically handled as there\n // is no 2:00am so the date automatically jumps to 3:00am. However, when\n // rolling back, setHours(2) will always choose the first \"2am\" even if\n // the date is currently set to the second, causing unintended jumps.\n // This ambiguity is unavoidable when setting dates as the notation is\n // ambiguous. However when advancing, we clearly want the resulting date\n // to be an acutal hour ahead, which can only be accomplished by setting\n // the absolute time. Conversely, any unit higher than \"hours\" MUST use\n // the internal set methods, as they are ambiguous as absolute units of\n // time. Years may be 365 or 366 days depending on leap years, months are\n // all over the place, and even days may be 23-25 hours depending on DST\n // shifts. Finally, note that the kind of jumping described above will\n // occur when calling ANY \"set\" method on the date and will occur even if\n // the value being set is identical to the one currently set (i.e.\n // setHours(2) on a date at 2am may not be a noop). This is precarious,\n // so avoiding this situation in callDateSet by checking up front that\n // the value is not the same before setting.\n if (advance && !unit.ambiguous) {\n d.setTime(d.getTime() + (value * advance * unit.multiplier));\n return;\n } else if (advance) {\n if (unitIndex === WEEK_INDEX) {\n value *= 7;\n method = DateUnits[DAY_INDEX].method;\n }\n value = (value * advance) + callDateGet(d, method);\n }\n callDateSetWithWeek(d, method, value, advance);\n if (checkMonth && monthHasShifted(d, value)) {\n // As we are setting the units in reverse order, there is a chance that\n // our date may accidentally traverse into a new month, such as setting\n // { month: 1, date 15 } on January 31st. Check for this here and reset\n // the date to the last day of the previous month if this has happened.\n setDate(d, 0);\n }\n }\n\n if (isNumber(params) && advance) {\n // If param is a number and advancing, the number is in milliseconds.\n params = { millisecond: params };\n } else if (isNumber(params)) {\n // Otherwise just set the timestamp and return.\n d.setTime(params);\n return d;\n }\n\n iterateOverDateParams(params, setUnit);\n\n if (reset && params.specificity) {\n resetLowerUnits(d, params.specificity);\n }\n\n // If past or future is preferred, then the process of \"disambiguation\" will\n // ensure that an ambiguous time/date (\"4pm\", \"thursday\", \"June\", etc.) will\n // be in the past or future. Weeks are only considered ambiguous if there is\n // a weekday, i.e. \"thursday\" is an ambiguous week, but \"the 4th\" is an\n // ambiguous month.\n if (canDisambiguate()) {\n disambiguateHigherUnit();\n }\n return d;\n}\n\nmodule.exports = updateDate;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValidRangeMember = __webpack_require__(419);\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parse = undefined;\n\nvar _types = __webpack_require__(6);\n\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\nvar parse = exports.parse = function parse(value) {\n var decimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n\n // Return the value as-is if it's already a number\n if ((0, _types.isNumber)(value)) {\n return value;\n }\n\n // Build regex to strip out everything except digits, decimal point and\n // minus sign\n var regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\n var unformatted = parseFloat(('' + value).replace(/\\((.*)\\)/, '-$1') // replace bracketed values with negatives\n .replace(regex, '') // strip out any cruft\n .replace(decimal, '.') // make sure decimal point is standard\n );\n\n // This will fail silently\n return !isNaN(unformatted) ? unformatted : 0;\n};\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n}\n\nmodule.exports = isObjectType;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar mathAliases = __webpack_require__(7),\n repeatString = __webpack_require__(148);\n\nvar abs = mathAliases.abs;\n\nfunction padNumber(num, place, sign, base, replacement) {\n var str = abs(num).toString(base || 10);\n str = repeatString(replacement || '0', place - str.replace(/\\.\\d+/, '').length) + str;\n if (sign || num < 0) {\n str = (num < 0 ? '-' : '+') + str;\n }\n return str;\n}\n\nmodule.exports = padNumber;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = simpleCapitalize;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n}\n\nmodule.exports = simpleMerge;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar EnglishLocaleBaseDefinition = __webpack_require__(292),\n simpleMerge = __webpack_require__(56),\n simpleClone = __webpack_require__(42);\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar MINUTES = __webpack_require__(98),\n ParsingTokens = __webpack_require__(99),\n LocaleHelpers = __webpack_require__(8),\n DateUnitIndexes = __webpack_require__(5),\n _utc = __webpack_require__(21),\n trunc = __webpack_require__(23),\n forEach = __webpack_require__(26),\n tzOffset = __webpack_require__(49),\n resetTime = __webpack_require__(92),\n isDefined = __webpack_require__(27),\n setWeekday = __webpack_require__(24),\n updateDate = __webpack_require__(50),\n getNewDate = __webpack_require__(40),\n isUndefined = __webpack_require__(37),\n classChecks = __webpack_require__(3),\n advanceDate = __webpack_require__(38),\n simpleClone = __webpack_require__(42),\n isObjectType = __webpack_require__(53),\n moveToEndOfUnit = __webpack_require__(48),\n deleteDateParam = __webpack_require__(208),\n coreUtilityAliases = __webpack_require__(10),\n getParsingTokenValue = __webpack_require__(218),\n moveToBeginningOfUnit = __webpack_require__(47),\n iterateOverDateParams = __webpack_require__(46),\n getYearFromAbbreviation = __webpack_require__(222),\n iterateOverHigherDateParams = __webpack_require__(224);\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n English = LocaleHelpers.English,\n localeManager = LocaleHelpers.localeManager,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction getExtendedDate(contextDate, d, opt, forceClone) {\n\n var date, set, loc, options, afterCallbacks, relative, weekdayDir;\n\n afterCallbacks = [];\n options = getDateOptions(opt);\n\n function getDateOptions(opt) {\n var options = isString(opt) ? { locale: opt } : opt || {};\n options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past');\n return options;\n }\n\n function getFormatParams(match, dif) {\n var set = getOwn(options, 'params') || {};\n forEach(dif.to, function(field, i) {\n var str = match[i + 1], token, val;\n if (!str) return;\n if (field === 'yy' || field === 'y') {\n field = 'year';\n val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer'));\n } else if (token = getOwn(ParsingTokens, field)) {\n field = token.param || field;\n val = getParsingTokenValue(token, str);\n } else {\n val = loc.getTokenValue(field, str);\n }\n set[field] = val;\n });\n return set;\n }\n\n // Clone date will set the utc flag, but it will\n // be overriden later, so set option flags instead.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) {\n options.fromUTC = true;\n }\n if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) {\n options.setUTC = true;\n }\n if (clone) {\n d = new Date(d.getTime());\n }\n return d;\n }\n\n function afterDateSet(fn) {\n afterCallbacks.push(fn);\n }\n\n function fireCallbacks() {\n forEach(afterCallbacks, function(fn) {\n fn.call();\n });\n }\n\n function parseStringDate(str) {\n\n str = str.toLowerCase();\n\n // The act of getting the locale will initialize\n // if it is missing and add the required formats.\n loc = localeManager.get(getOwn(options, 'locale'));\n\n for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) {\n match = str.match(dif.reg);\n if (match) {\n\n // Note that caching the format will modify the compiledFormats array\n // which is not a good idea to do inside its for loop, however we\n // know at this point that we have a matched format and that we will\n // break out below, so simpler to do it here.\n loc.cacheFormat(dif, i);\n\n set = getFormatParams(match, dif);\n\n if (isDefined(set.timestamp)) {\n str = set.timestamp;\n set = null;\n break;\n }\n\n if (isDefined(set.ampm)) {\n handleAmpm(set.ampm);\n }\n\n if (set.utc || isDefined(set.tzHour)) {\n handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign);\n }\n\n if (isDefined(set.shift) && isUndefined(set.unit)) {\n // \"next january\", \"next monday\", etc\n handleUnitlessShift();\n }\n\n if (isDefined(set.num) && isUndefined(set.unit)) {\n // \"the second of January\", etc\n handleUnitlessNum(set.num);\n }\n\n if (set.midday) {\n // \"noon\" and \"midnight\"\n handleMidday(set.midday);\n }\n\n if (isDefined(set.day)) {\n // Relative day localizations such as \"today\" and \"tomorrow\".\n handleRelativeDay(set.day);\n }\n\n if (isDefined(set.unit)) {\n // \"3 days ago\", etc\n handleRelativeUnit(set.unit);\n }\n\n if (set.edge) {\n // \"the end of January\", etc\n handleEdge(set.edge, set);\n }\n\n if (set.yearSign) {\n set.year *= set.yearSign;\n }\n\n break;\n }\n }\n\n if (!set) {\n // Fall back to native parsing\n date = new Date(str);\n if (getOwn(options, 'fromUTC')) {\n // Falling back to system date here which cannot be parsed as UTC,\n // so if we're forcing UTC then simply add the offset.\n date.setTime(date.getTime() + (tzOffset(date) * MINUTES));\n }\n } else if (relative) {\n updateDate(date, set, false, 1);\n } else {\n if (_utc(date)) {\n // UTC times can traverse into other days or even months,\n // so preemtively reset the time here to prevent this.\n resetTime(date);\n }\n updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir);\n }\n fireCallbacks();\n return date;\n }\n\n function handleAmpm(ampm) {\n if (ampm === 1 && set.hour < 12) {\n // If the time is 1pm-11pm advance the time by 12 hours.\n set.hour += 12;\n } else if (ampm === 0 && set.hour === 12) {\n // If it is 12:00am then set the hour to 0.\n set.hour = 0;\n }\n }\n\n function handleTimezoneOffset(tzHour, tzMinute, tzSign) {\n // Adjust for timezone offset\n _utc(date, true);\n var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0));\n if (offset) {\n set.minute = (set.minute || 0) - offset;\n }\n }\n\n function handleUnitlessShift() {\n if (isDefined(set.month)) {\n // \"next January\"\n set.unit = YEAR_INDEX;\n } else if (isDefined(set.weekday)) {\n // \"next Monday\"\n set.unit = WEEK_INDEX;\n }\n }\n\n function handleUnitlessNum(num) {\n if (isDefined(set.weekday)) {\n // \"The second Tuesday of March\"\n setOrdinalWeekday(num);\n } else if (isDefined(set.month)) {\n // \"The second of March\"\n set.date = set.num;\n }\n }\n\n function handleMidday(hour) {\n set.hour = hour % 24;\n if (hour > 23) {\n // If the date has hours past 24, we need to prevent it from traversing\n // into a new day as that would make it being part of a new week in\n // ambiguous dates such as \"Monday\".\n afterDateSet(function() {\n advanceDate(date, 'date', trunc(hour / 24));\n });\n }\n }\n\n function handleRelativeDay() {\n resetTime(date);\n if (isUndefined(set.unit)) {\n set.unit = DAY_INDEX;\n set.num = set.day;\n delete set.day;\n }\n }\n\n function handleRelativeUnit(unitIndex) {\n var num = isDefined(set.num) ? set.num : 1;\n\n // If a weekday is defined, there are 3 possible formats being applied:\n //\n // 1. \"the day after monday\": unit is days\n // 2. \"next monday\": short for \"next week monday\", unit is weeks\n // 3. \"the 2nd monday of next month\": unit is months\n //\n // In the first case, we need to set the weekday up front, as the day is\n // relative to it. The second case also needs to be handled up front for\n // formats like \"next monday at midnight\" which will have its weekday reset\n // if not set up front. The last case will set up the params necessary to\n // shift the weekday and allow separateAbsoluteUnits below to handle setting\n // it after the date has been shifted.\n if(isDefined(set.weekday)) {\n if(unitIndex === MONTH_INDEX) {\n setOrdinalWeekday(num);\n num = 1;\n } else {\n updateDate(date, { weekday: set.weekday }, true);\n delete set.weekday;\n }\n }\n\n if (set.half) {\n // Allow localized \"half\" as a standalone colloquialism. Purposely avoiding\n // the locale number system to reduce complexity. The units \"month\" and\n // \"week\" are purposely excluded in the English date formats below, as\n // \"half a week\" and \"half a month\" are meaningless as exact dates.\n num *= set.half;\n }\n\n if (isDefined(set.shift)) {\n // Shift and unit, ie \"next month\", \"last week\", etc.\n num *= set.shift;\n } else if (set.sign) {\n // Unit and sign, ie \"months ago\", \"weeks from now\", etc.\n num *= set.sign;\n }\n\n if (isDefined(set.day)) {\n // \"the day after tomorrow\"\n num += set.day;\n delete set.day;\n }\n\n // Formats like \"the 15th of last month\" or \"6:30pm of next week\"\n // contain absolute units in addition to relative ones, so separate\n // them here, remove them from the params, and set up a callback to\n // set them after the relative ones have been set.\n separateAbsoluteUnits(unitIndex);\n\n // Finally shift the unit.\n set[English.units[unitIndex]] = num;\n relative = true;\n }\n\n function handleEdge(edge, params) {\n var edgeIndex = params.unit, weekdayOfMonth;\n if (!edgeIndex) {\n // If we have \"the end of January\", then we need to find the unit index.\n iterateOverHigherDateParams(params, function(unitName, val, unit, i) {\n if (unitName === 'weekday' && isDefined(params.month)) {\n // If both a month and weekday exist, then we have a format like\n // \"the last tuesday in November, 2012\", where the \"last\" is still\n // relative to the end of the month, so prevent the unit \"weekday\"\n // from taking over.\n return;\n }\n edgeIndex = i;\n });\n }\n if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) {\n // If a weekday in a month exists (as described above),\n // then set it up to be set after the date has been shifted.\n weekdayOfMonth = params.weekday;\n delete params.weekday;\n }\n afterDateSet(function() {\n var stopIndex;\n // \"edge\" values that are at the very edge are \"2\" so the beginning of the\n // year is -2 and the end of the year is 2. Conversely, the \"last day\" is\n // actually 00:00am so it is 1. -1 is reserved but unused for now.\n if (edge < 0) {\n moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale'));\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex);\n }\n if (isDefined(weekdayOfMonth)) {\n setWeekday(date, weekdayOfMonth, -edge);\n resetTime(date);\n }\n });\n if (edgeIndex === MONTH_INDEX) {\n params.specificity = DAY_INDEX;\n } else {\n params.specificity = edgeIndex - 1;\n }\n }\n\n function setOrdinalWeekday(num) {\n // If we have \"the 2nd Tuesday of June\", then pass the \"weekdayDir\"\n // flag along to updateDate so that the date does not accidentally traverse\n // into the previous month. This needs to be independent of the \"prefer\"\n // flag because we are only ensuring that the weekday is in the future, not\n // the entire date.\n set.weekday = 7 * (num - 1) + set.weekday;\n set.date = 1;\n weekdayDir = 1;\n }\n\n function separateAbsoluteUnits(unitIndex) {\n var params;\n\n iterateOverDateParams(set, function(name, val, unit, i) {\n // If there is a time unit set that is more specific than\n // the matched unit we have a string like \"5:30am in 2 minutes\",\n // which is meaningless, so invalidate the date...\n if (i >= unitIndex) {\n date.setTime(NaN);\n return false;\n } else if (i < unitIndex) {\n // ...otherwise set the params to set the absolute date\n // as a callback after the relative date has been set.\n params = params || {};\n params[name] = val;\n deleteDateParam(set, name);\n }\n });\n if (params) {\n afterDateSet(function() {\n updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir);\n });\n if (set.edge) {\n // \"the end of March of next year\"\n handleEdge(set.edge, params);\n delete set.edge;\n }\n }\n }\n\n if (contextDate && d) {\n // If a context date is passed (\"get\" and \"unitsFromNow\"),\n // then use it as the starting point.\n date = cloneDateByFlag(contextDate, true);\n } else {\n date = getNewDate();\n }\n\n _utc(date, getOwn(options, 'fromUTC'));\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone);\n } else if (isObjectType(d)) {\n set = simpleClone(d);\n updateDate(date, set, true);\n } else if (isNumber(d) || d === null) {\n date.setTime(d);\n }\n // A date created by parsing a string presumes that the format *itself* is\n // UTC, but not that the date, once created, should be manipulated as such. In\n // other words, if you are creating a date object from a server time\n // \"2012-11-15T12:00:00Z\", in the majority of cases you are using it to create\n // a date that will, after creation, be manipulated as local, so reset the utc\n // flag here unless \"setUTC\" is also set.\n _utc(date, !!getOwn(options, 'setUTC'));\n return {\n set: set,\n date: date\n };\n}\n\nmodule.exports = getExtendedDate;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar trunc = __webpack_require__(23),\n cloneDate = __webpack_require__(33),\n advanceDate = __webpack_require__(38);\n\nfunction getTimeDistanceForUnit(d1, d2, unit) {\n var fwd = d2 > d1, num, tmp;\n if (!fwd) {\n tmp = d2;\n d2 = d1;\n d1 = tmp;\n }\n num = d2 - d1;\n if (unit.multiplier > 1) {\n num = trunc(num / unit.multiplier);\n }\n // For higher order with potential ambiguity, use the numeric calculation\n // as a starting point, then iterate until we pass the target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n advanceDate(d1, unit.name, num);\n }\n while (d1 < d2) {\n advanceDate(d1, unit.name, 1);\n if (d1 > d2) {\n break;\n }\n num += 1;\n }\n }\n return fwd ? -num : num;\n}\n\nmodule.exports = getTimeDistanceForUnit;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ISODefaults = __webpack_require__(63),\n setDate = __webpack_require__(35),\n getDate = __webpack_require__(34),\n cloneDate = __webpack_require__(33),\n isUndefined = __webpack_require__(37),\n moveToEndOfWeek = __webpack_require__(90),\n moveToBeginningOfWeek = __webpack_require__(62),\n moveToFirstDayOfWeekYear = __webpack_require__(91);\n\nvar ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) {\n var isoWeek, n = 0;\n if (isUndefined(firstDayOfWeek)) {\n firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK;\n }\n if (isUndefined(firstDayOfWeekYear)) {\n firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR;\n }\n // Moving to the end of the week allows for forward year traversal, ie\n // Dec 29 2014 is actually week 01 of 2015.\n isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n if (allowPrevious && d < isoWeek) {\n // If the date is still before the start of the year, then it should be\n // the last week of the previous year, ie Jan 1 2016 is actually week 53\n // of 2015, so move to the beginning of the week to traverse the year.\n isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n }\n while (isoWeek <= d) {\n // Doing a very simple walk to get the week number.\n setDate(isoWeek, getDate(isoWeek) + 7);\n n++;\n }\n return n;\n}\n\nmodule.exports = getWeekNumber;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n DateUnitIndexes = __webpack_require__(5),\n isUndefined = __webpack_require__(37);\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverDateUnits(fn, startIndex, endIndex) {\n endIndex = endIndex || 0;\n if (isUndefined(startIndex)) {\n startIndex = YEAR_INDEX;\n }\n for (var index = startIndex; index >= endIndex; index--) {\n if (fn(DateUnits[index], index) === false) {\n break;\n }\n }\n}\n\nmodule.exports = iterateOverDateUnits;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setWeekday = __webpack_require__(24),\n getWeekday = __webpack_require__(20),\n mathAliases = __webpack_require__(7);\n\nvar floor = mathAliases.floor;\n\nfunction moveToBeginningOfWeek(d, firstDayOfWeek) {\n setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek);\n return d;\n}\n\nmodule.exports = moveToBeginningOfWeek;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n ISO_FIRST_DAY_OF_WEEK: 1,\n ISO_FIRST_DAY_OF_WEEK_YEAR: 4\n};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DATE_OPTIONS = __webpack_require__(291),\n namespaceAliases = __webpack_require__(22),\n defineOptionsAccessor = __webpack_require__(133);\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nmodule.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS);\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3),\n rangeIsValid = __webpack_require__(51),\n incrementDate = __webpack_require__(105),\n incrementNumber = __webpack_require__(417),\n incrementString = __webpack_require__(418),\n getGreaterPrecision = __webpack_require__(414),\n getDateIncrementObject = __webpack_require__(103);\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n isFunction = classChecks.isFunction;\n\nfunction rangeEvery(range, step, countOnly, fn) {\n var increment,\n precision,\n dio,\n unit,\n start = range.start,\n end = range.end,\n inverse = end < start,\n current = start,\n index = 0,\n result = [];\n\n if (!rangeIsValid(range)) {\n return countOnly ? NaN : [];\n }\n if (isFunction(step)) {\n fn = step;\n step = null;\n }\n step = step || 1;\n if (isNumber(start)) {\n precision = getGreaterPrecision(start, step);\n increment = function() {\n return incrementNumber(current, step, precision);\n };\n } else if (isString(start)) {\n increment = function() {\n return incrementString(current, step);\n };\n } else if (isDate(start)) {\n dio = getDateIncrementObject(step);\n step = dio[0];\n unit = dio[1];\n increment = function() {\n return incrementDate(current, step, unit);\n };\n }\n // Avoiding infinite loops\n if (inverse && step > 0) {\n step *= -1;\n }\n while(inverse ? current >= end : current <= end) {\n if (!countOnly) {\n result.push(current);\n }\n if (fn) {\n fn(current, index, range);\n }\n current = increment();\n index++;\n }\n return countOnly ? index - 1 : result;\n}\n\nmodule.exports = rangeEvery;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 'year|month|week|day|hour|minute|second|millisecond';\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.has = undefined;\n\nvar _string = __webpack_require__(19);\n\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\nvar has = exports.has = function has(arr, val, caseSensitive) {\n var sCase = Boolean(caseSensitive);\n for (var i = 0, l = arr.length; i < l; i++) {\n if ((0, _string.matchCase)(arr[i].toString(), sCase) === val) {\n return true;\n }\n }\n return false;\n}; /**\r\n * Array utilities\r\n */\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BaseDropdown = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _sort = __webpack_require__(108);\n\nvar _types = __webpack_require__(6);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Base class for Dropdown and CheckList UI components\r\n * @export\r\n * @class BaseDropdown\r\n * @extends {Feature}\r\n */\nvar BaseDropdown = exports.BaseDropdown = function (_Feature) {\n _inherits(BaseDropdown, _Feature);\n\n /**\r\n * Creates an instance of BaseDropdown\r\n * @param {TableFilter} tf\r\n */\n function BaseDropdown(tf) {\n _classCallCheck(this, BaseDropdown);\n\n var _this = _possibleConstructorReturn(this, (BaseDropdown.__proto__ || Object.getPrototypeOf(BaseDropdown)).call(this, tf, 'baseDropdown'));\n\n var f = _this.config;\n\n /**\r\n * Filter options custom sorter on a column basis\r\n * @type {Object}\r\n */\n _this.customSorter = (0, _types.isObj)(f.filter_options_sorter) && (0, _types.isArray)(f.filter_options_sorter.col) && (0, _types.isArray)(f.filter_options_sorter.comparer) ? f.filter_options_sorter : null;\n\n // TODO: move here all properties shared by Dropdown CheckList\n\n /**\r\n * Has custom options\r\n * @type {Boolean}\r\n * @private\r\n */\n _this.isCustom = false;\n\n /**\r\n * List of options values\r\n * @type {Array}\r\n * @private\r\n */\n _this.opts = [];\n\n /**\r\n * List of options texts for custom values\r\n * @type {Array}\r\n * @private\r\n */\n _this.optsTxt = [];\n\n /**\r\n * List of options to be excluded from the checklist filter\r\n * @type {Array}\r\n * @private\r\n */\n _this.excludedOpts = [];\n return _this;\n }\n\n /**\r\n * Sort passed options based on the type of the specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [options=[]] Collection of values\r\n * @return {Array} Sorted values\r\n * @private\r\n */\n\n\n _createClass(BaseDropdown, [{\n key: 'sortOptions',\n value: function sortOptions(colIndex) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var tf = this.tf;\n\n if (tf.isCustomOptions(colIndex) || !tf.sortSlc || (0, _types.isArray)(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1) {\n return options;\n }\n\n var caseSensitive = tf.caseSensitive,\n sortNumDesc = tf.sortNumDesc;\n\n var compareFn = void 0;\n\n if (this.customSorter && this.customSorter.col.indexOf(colIndex) !== -1) {\n var idx = this.customSorter.col.indexOf(colIndex);\n compareFn = this.customSorter.comparer[idx];\n } else if (tf.hasType(colIndex, [_const.NUMBER, _const.FORMATTED_NUMBER])) {\n var decimal = tf.getDecimal(colIndex);\n var comparer = _sort.numSortAsc;\n if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {\n comparer = _sort.numSortDesc;\n }\n compareFn = (0, _sort.sortNumberStr)(comparer, decimal);\n } else if (tf.hasType(colIndex, [_const.DATE])) {\n var locale = tf.feature('dateType').getLocale(colIndex);\n var _comparer = _sort.dateSortAsc;\n compareFn = (0, _sort.sortDateStr)(_comparer, locale);\n } else {\n // string\n compareFn = caseSensitive ? undefined : _sort.ignoreCase;\n }\n\n return options.sort(compareFn);\n }\n\n /**\r\n * Regenerate filters of specified columns and maintain selection if any\r\n * @param {Array} colIndexes Collection of column indexes\r\n * @private\r\n */\n\n }, {\n key: 'refreshFilters',\n value: function refreshFilters(colIndexes) {\n var _this2 = this;\n\n colIndexes.forEach(function (colIdx) {\n var values = _this2.getValues(colIdx);\n _this2.build(colIdx, _this2.tf.linkedFilters);\n _this2.selectOptions(colIdx, values);\n });\n }\n }]);\n\n return BaseDropdown;\n}(_feature.Feature);\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\r\n * Event emitter class\r\n */\nvar Emitter = exports.Emitter = function () {\n /**\r\n * Creates an instance of Emitter.\r\n */\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n /**\r\n * Events object\r\n * @type {Object}\r\n */\n this.events = {};\n }\n\n /**\r\n * Subscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\n\n\n _createClass(Emitter, [{\n key: \"on\",\n value: function on(evts, fn) {\n var _this = this;\n\n evts.forEach(function (evt) {\n _this.events[evt] = _this.events[evt] || [];\n _this.events[evt].push(fn);\n });\n }\n\n /**\r\n * Unsubscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\n\n }, {\n key: \"off\",\n value: function off(evts, fn) {\n var _this2 = this;\n\n evts.forEach(function (evt) {\n if (evt in _this2.events) {\n _this2.events[evt].splice(_this2.events[evt].indexOf(fn), 1);\n }\n });\n }\n\n /**\r\n * Emit an event\r\n * @param {String} evt Event name followed by any other argument passed to\r\n * the invoked function\r\n */\n\n }, {\n key: \"emit\",\n value: function emit(evt /*, args...*/) {\n if (evt in this.events) {\n for (var i = 0; i < this.events[evt].length; i++) {\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\n }\n }\n }\n }]);\n\n return Emitter;\n}();\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CheckList = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseDropdown = __webpack_require__(68);\n\nvar _dom = __webpack_require__(9);\n\nvar _array = __webpack_require__(67);\n\nvar _string = __webpack_require__(19);\n\nvar _event = __webpack_require__(17);\n\nvar _types = __webpack_require__(6);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Checklist filter UI component\r\n * @export\r\n * @class CheckList\r\n * @extends {BaseDropdown}\r\n */\nvar CheckList = exports.CheckList = function (_BaseDropdown) {\n _inherits(CheckList, _BaseDropdown);\n\n /**\r\n * Creates an instance of CheckList\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function CheckList(tf) {\n _classCallCheck(this, CheckList);\n\n var _this = _possibleConstructorReturn(this, (CheckList.__proto__ || Object.getPrototypeOf(CheckList)).call(this, tf, 'checkList'));\n\n var f = _this.config;\n\n /**\r\n * List of container DOM elements\r\n * @type {Array}\r\n */\n _this.containers = [];\n\n /**\r\n * Css class for the container of the checklist filter (div)\r\n * @type {String}\r\n */\n _this.containerCssClass = f.div_checklist_css_class || 'div_checklist';\n\n /**\r\n * Css class for the checklist filter element (ul)\r\n * @type {String}\r\n */\n _this.filterCssClass = f.checklist_css_class || 'flt_checklist';\n\n /**\r\n * Css class for the item of a checklist (li)\r\n * @type {String}\r\n */\n _this.itemCssClass = f.checklist_item_css_class || 'flt_checklist_item';\n\n /**\r\n * Css class for a selected item of a checklist (li)\r\n * @type {String}\r\n */\n _this.selectedItemCssClass = f.checklist_selected_item_css_class || 'flt_checklist_slc_item';\n\n /**\r\n * Text placed in the filter's container when load filter on demand\r\n * feature is enabled\r\n * @type {String}\r\n */\n _this.activateText = f.activate_checklist_text || 'Click to load filter data';\n\n /**\r\n * Css class for a disabled item of a checklist (li)\r\n * @type {String}\r\n */\n _this.disabledItemCssClass = f.checklist_item_disabled_css_class || 'flt_checklist_item_disabled';\n\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\n _this.enableResetOption = f.enable_checklist_reset_filter === false ? false : true;\n\n /**\r\n * Prefix for container element ID\r\n * @type {String}\r\n * @private\r\n */\n _this.prfx = 'chkdiv_';\n return _this;\n }\n\n /**\r\n * Checklist option click event handler\r\n * @param {Event} evt\r\n * @private\r\n */\n\n\n _createClass(CheckList, [{\n key: 'optionClick',\n value: function optionClick(evt) {\n var elm = (0, _event.targetEvt)(evt);\n var tf = this.tf;\n\n this.emitter.emit('filter-focus', tf, elm);\n this.setCheckListValues(elm);\n tf.filter();\n }\n\n /**\r\n * Checklist container click event handler for load-on-demand feature\r\n * @param {Event} evt\r\n * @private\r\n */\n\n }, {\n key: 'onCheckListClick',\n value: function onCheckListClick(evt) {\n var _this2 = this;\n\n var elm = (0, _event.targetEvt)(evt);\n if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\n var ct = elm.getAttribute('ct');\n var div = this.containers[ct];\n this.build(ct);\n (0, _event.removeEvt)(div, 'click', function (evt) {\n return _this2.onCheckListClick(evt);\n });\n }\n }\n\n /**\r\n * Refresh all checklist filters\r\n */\n\n }, {\n key: 'refreshAll',\n value: function refreshAll() {\n var colIdxs = this.tf.getFiltersByType(_const.CHECKLIST, true);\n this.refreshFilters(colIdxs);\n }\n\n /**\r\n * Initialize checklist filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\n\n }, {\n key: 'init',\n value: function init(colIndex, isExternal, container) {\n var _this3 = this;\n\n var tf = this.tf;\n var externalFltTgtId = isExternal ? tf.externalFltTgtIds[colIndex] : null;\n\n var divCont = (0, _dom.createElm)('div', ['id', '' + this.prfx + colIndex + '_' + tf.id], ['ct', colIndex], ['filled', '0']);\n divCont.className = this.containerCssClass;\n\n //filter is appended in desired element\n if (externalFltTgtId) {\n (0, _dom.elm)(externalFltTgtId).appendChild(divCont);\n } else {\n container.appendChild(divCont);\n }\n\n this.containers[colIndex] = divCont;\n tf.fltIds.push(tf.buildFilterId(colIndex));\n\n if (!tf.loadFltOnDemand) {\n this.build(colIndex);\n } else {\n (0, _event.addEvt)(divCont, 'click', function (evt) {\n return _this3.onCheckListClick(evt);\n });\n divCont.appendChild((0, _dom.createText)(this.activateText));\n }\n\n this.emitter.on(['build-checklist-filter'], function (tf, colIndex, isLinked) {\n return _this3.build(colIndex, isLinked);\n });\n\n this.emitter.on(['select-checklist-options'], function (tf, colIndex, values) {\n return _this3.selectOptions(colIndex, values);\n });\n\n this.emitter.on(['rows-changed'], function () {\n return _this3.refreshAll();\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Build checklist UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\n\n }, {\n key: 'build',\n value: function build(colIndex) {\n var isLinked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var tf = this.tf;\n colIndex = parseInt(colIndex, 10);\n\n this.emitter.emit('before-populating-filter', tf, colIndex);\n\n /** @inherited */\n this.opts = [];\n /** @inherited */\n this.optsTxt = [];\n\n var flt = this.containers[colIndex];\n var ul = (0, _dom.createElm)('ul', ['id', tf.fltIds[colIndex]], ['colIndex', colIndex]);\n ul.className = this.filterCssClass;\n\n var rows = tf.dom().rows;\n var nbRows = tf.getRowsNb(true);\n var caseSensitive = tf.caseSensitive;\n /** @inherited */\n this.isCustom = tf.isCustomOptions(colIndex);\n\n //Retrieves custom values\n if (this.isCustom) {\n var customValues = tf.getCustomOptions(colIndex);\n this.opts = customValues[0];\n this.optsTxt = customValues[1];\n }\n\n var activeIdx = void 0;\n var activeFilterId = tf.getActiveFilterId();\n if (isLinked && activeFilterId) {\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\n }\n\n var filteredDataCol = [];\n if (isLinked && tf.disableExcludedOptions) {\n /** @inherited */\n this.excludedOpts = [];\n }\n\n flt.innerHTML = '';\n\n for (var k = tf.refRow; k < nbRows; k++) {\n // always visible rows don't need to appear on selects as always\n // valid\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\n continue;\n }\n\n var cells = rows[k].cells;\n var ncells = cells.length;\n\n // checks if row has exact cell #\n if (ncells !== tf.nbCells || this.isCustom) {\n continue;\n }\n\n // this loop retrieves cell data\n for (var j = 0; j < ncells; j++) {\n if (colIndex !== j) {\n continue;\n }\n if (isLinked && !tf.disableExcludedOptions && !tf.paging && !tf.isRowDisplayed(k) || tf.paging && activeIdx && !tf.isRowValid(k)) {\n continue;\n }\n\n var cellValue = tf.getCellValue(cells[j]);\n //Vary Peter's patch\n var cellString = (0, _string.matchCase)(cellValue, caseSensitive);\n // checks if celldata is already in array\n if (!(0, _array.has)(this.opts, cellString, caseSensitive)) {\n this.opts.push(cellValue);\n }\n var filteredCol = filteredDataCol[j];\n if (isLinked && tf.disableExcludedOptions) {\n if (!filteredCol) {\n filteredCol = tf.getVisibleColumnValues(j);\n }\n if (!(0, _array.has)(filteredCol, cellString, caseSensitive) && !(0, _array.has)(this.excludedOpts, cellString, caseSensitive)) {\n this.excludedOpts.push(cellValue);\n }\n }\n }\n }\n\n //sort options\n this.opts = this.sortOptions(colIndex, this.opts);\n if (this.excludedOpts) {\n this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);\n }\n\n this.addChecks(colIndex, ul);\n\n if (tf.loadFltOnDemand) {\n flt.innerHTML = '';\n }\n flt.appendChild(ul);\n flt.setAttribute('filled', '1');\n\n this.emitter.emit('after-populating-filter', tf, colIndex, flt);\n }\n\n /**\r\n * Add checklist options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\n\n }, {\n key: 'addChecks',\n value: function addChecks(colIndex, ul) {\n var _this4 = this;\n\n var tf = this.tf;\n var chkCt = this.addTChecks(colIndex, ul);\n\n for (var y = 0; y < this.opts.length; y++) {\n var val = this.opts[y]; //item value\n var lbl = this.isCustom ? this.optsTxt[y] : val; //item text\n var fltId = tf.fltIds[colIndex];\n var li = (0, _dom.createCheckItem)(fltId + '_' + (y + chkCt), val, lbl);\n li.className = this.itemCssClass;\n\n if (tf.linkedFilters && tf.disableExcludedOptions && (0, _array.has)(this.excludedOpts, (0, _string.matchCase)(val, tf.caseSensitive), tf.caseSensitive)) {\n (0, _dom.addClass)(li, this.disabledItemCssClass);\n li.check.disabled = true;\n li.disabled = true;\n } else {\n (0, _event.addEvt)(li.check, 'click', function (evt) {\n return _this4.optionClick(evt);\n });\n }\n ul.appendChild(li);\n\n if (val === '') {\n //item is hidden\n li.style.display = _const.NONE;\n }\n }\n }\n\n /**\r\n * Add checklist header option\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\n\n }, {\n key: 'addTChecks',\n value: function addTChecks(colIndex, ul) {\n var _this5 = this;\n\n var tf = this.tf;\n var chkCt = 1;\n var fltId = tf.fltIds[colIndex];\n var li0 = (0, _dom.createCheckItem)(fltId + '_0', '', tf.getClearFilterText(colIndex));\n li0.className = this.itemCssClass;\n ul.appendChild(li0);\n\n (0, _event.addEvt)(li0.check, 'click', function (evt) {\n return _this5.optionClick(evt);\n });\n\n if (!this.enableResetOption) {\n li0.style.display = _const.NONE;\n }\n\n if (tf.enableEmptyOption) {\n var li1 = (0, _dom.createCheckItem)(fltId + '_1', tf.emOperator, tf.emptyText);\n li1.className = this.itemCssClass;\n ul.appendChild(li1);\n (0, _event.addEvt)(li1.check, 'click', function (evt) {\n return _this5.optionClick(evt);\n });\n chkCt++;\n }\n\n if (tf.enableNonEmptyOption) {\n var li2 = (0, _dom.createCheckItem)(fltId + '_2', tf.nmOperator, tf.nonEmptyText);\n li2.className = this.itemCssClass;\n ul.appendChild(li2);\n (0, _event.addEvt)(li2.check, 'click', function (evt) {\n return _this5.optionClick(evt);\n });\n chkCt++;\n }\n return chkCt;\n }\n\n /**\r\n * Store checked options in DOM element attribute\r\n * @param {Object} o checklist option DOM element\r\n * @private\r\n */\n\n }, {\n key: 'setCheckListValues',\n value: function setCheckListValues(o) {\n if (!o) {\n return;\n }\n\n var tf = this.tf;\n var chkValue = o.value; //checked item value\n // TODO: provide helper to extract column index, ugly!\n var chkIndex = parseInt(o.id.split('_')[2], 10);\n var colIdx = tf.getColumnIndexFromFilterId(o.id);\n var itemTag = 'LI';\n\n var n = tf.getFilterElement(parseInt(colIdx, 10));\n var li = n.childNodes[chkIndex];\n var colIndex = n.getAttribute('colIndex');\n var fltValue = n.getAttribute('value'); //filter value (ul tag)\n var fltIndexes = n.getAttribute('indexes'); //selected items (ul tag)\n\n if (o.checked) {\n //show all item\n if (chkValue === '') {\n if (fltIndexes && fltIndexes !== '') {\n //items indexes\n var indSplit = fltIndexes.split(tf.separator);\n //checked items loop\n for (var u = 0; u < indSplit.length; u++) {\n //checked item\n var cChk = (0, _dom.elm)(tf.fltIds[colIndex] + '_' + indSplit[u]);\n if (cChk) {\n cChk.checked = false;\n (0, _dom.removeClass)(n.childNodes[indSplit[u]], this.selectedItemCssClass);\n }\n }\n }\n n.setAttribute('value', '');\n n.setAttribute('indexes', '');\n } else {\n fltValue = fltValue ? fltValue : '';\n chkValue = (0, _string.trim)(fltValue + ' ' + chkValue + ' ' + tf.orOperator);\n chkIndex = fltIndexes + chkIndex + tf.separator;\n n.setAttribute('value', chkValue);\n n.setAttribute('indexes', chkIndex);\n //1st option unchecked\n if ((0, _dom.elm)(tf.fltIds[colIndex] + '_0')) {\n (0, _dom.elm)(tf.fltIds[colIndex] + '_0').checked = false;\n }\n }\n\n if (li.nodeName === itemTag) {\n (0, _dom.removeClass)(n.childNodes[0], this.selectedItemCssClass);\n (0, _dom.addClass)(li, this.selectedItemCssClass);\n }\n } else {\n //removes values and indexes\n if (chkValue !== '') {\n var replaceValue = new RegExp((0, _string.rgxEsc)(chkValue + ' ' + tf.orOperator));\n fltValue = fltValue.replace(replaceValue, '');\n n.setAttribute('value', (0, _string.trim)(fltValue));\n\n var replaceIndex = new RegExp((0, _string.rgxEsc)(chkIndex + tf.separator));\n fltIndexes = fltIndexes.replace(replaceIndex, '');\n n.setAttribute('indexes', fltIndexes);\n }\n if (li.nodeName === itemTag) {\n (0, _dom.removeClass)(li, this.selectedItemCssClass);\n }\n }\n }\n\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\n\n }, {\n key: 'selectOptions',\n value: function selectOptions(colIndex) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var tf = this.tf;\n var flt = tf.getFilterElement(colIndex);\n if (tf.getFilterType(colIndex) !== _const.CHECKLIST || !flt || values.length === 0) {\n return;\n }\n\n var lisNb = (0, _dom.tag)(flt, 'li').length;\n\n flt.setAttribute('value', '');\n flt.setAttribute('indexes', '');\n\n for (var k = 0; k < lisNb; k++) {\n var li = (0, _dom.tag)(flt, 'li')[k];\n var lbl = (0, _dom.tag)(li, 'label')[0];\n var chk = (0, _dom.tag)(li, 'input')[0];\n var lblTxt = (0, _string.matchCase)((0, _dom.getText)(lbl), tf.caseSensitive);\n\n if (lblTxt !== '' && (0, _array.has)(values, lblTxt, tf.caseSensitive)) {\n chk.checked = true;\n } else {\n // Check non-empty-text or empty-text option\n if (values.indexOf(tf.nmOperator) !== -1 && lblTxt === (0, _string.matchCase)(tf.nonEmptyText, tf.caseSensitive)) {\n chk.checked = true;\n } else if (values.indexOf(tf.emOperator) !== -1 && lblTxt === (0, _string.matchCase)(tf.emptyText, tf.caseSensitive)) {\n chk.checked = true;\n } else {\n chk.checked = false;\n }\n }\n this.setCheckListValues(chk);\n }\n }\n\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Collection of selected values\r\n */\n\n }, {\n key: 'getValues',\n value: function getValues(colIndex) {\n var tf = this.tf;\n var flt = tf.getFilterElement(colIndex);\n var fltAttr = flt.getAttribute('value');\n var values = (0, _types.isEmpty)(fltAttr) ? '' : fltAttr;\n //removes last operator ||\n values = values.substr(0, values.length - 3);\n //turn || separated values into array\n values = values.split(' ' + tf.orOperator + ' ');\n\n return values;\n }\n\n /**\r\n * Destroy CheckList instance\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this6 = this;\n\n this.emitter.off(['build-checklist-filter'], function (tf, colIndex, isLinked) {\n return _this6.build(colIndex, isLinked);\n });\n this.emitter.off(['select-checklist-options'], function (tf, colIndex, values) {\n return _this6.selectOptions(colIndex, values);\n });\n this.emitter.off(['rows-changed'], function () {\n return _this6.refreshAll();\n });\n\n this.initialized = false;\n }\n }]);\n\n return CheckList;\n}(_baseDropdown.BaseDropdown);\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dropdown = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseDropdown = __webpack_require__(68);\n\nvar _dom = __webpack_require__(9);\n\nvar _array = __webpack_require__(67);\n\nvar _string = __webpack_require__(19);\n\nvar _event = __webpack_require__(17);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Dropdown filter UI component\r\n * @export\r\n * @class Dropdown\r\n * @extends {BaseDropdown}\r\n */\nvar Dropdown = exports.Dropdown = function (_BaseDropdown) {\n _inherits(Dropdown, _BaseDropdown);\n\n /**\r\n * Creates an instance of Dropdown\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function Dropdown(tf) {\n _classCallCheck(this, Dropdown);\n\n // Configuration object\n var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, tf, 'dropdown'));\n\n var f = _this.config;\n\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\n _this.enableSlcResetFilter = f.enable_slc_reset_filter === false ? false : true;\n\n /**\r\n * Non empty option text\r\n * @type {String}\r\n */\n _this.nonEmptyText = f.non_empty_text || '(Non empty)';\n\n /**\r\n * Tooltip text appearing on multiple select\r\n * @type {String}\r\n */\n _this.multipleSlcTooltip = f.multiple_slc_tooltip || 'Use Ctrl/Cmd key for multiple selections';\n return _this;\n }\n\n /**\r\n * Drop-down filter focus event handler\r\n * @param {Event} e DOM Event\r\n * @private\r\n */\n\n\n _createClass(Dropdown, [{\n key: 'onSlcFocus',\n value: function onSlcFocus(e) {\n var elm = (0, _event.targetEvt)(e);\n var tf = this.tf;\n // select is populated when element has focus\n if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\n var ct = elm.getAttribute('ct');\n this.build(ct);\n }\n this.emitter.emit('filter-focus', tf, elm);\n }\n\n /**\r\n * Drop-down filter change event handler\r\n * @private\r\n */\n\n }, {\n key: 'onSlcChange',\n value: function onSlcChange() {\n if (this.tf.onSlcChange) {\n this.tf.filter();\n }\n }\n\n /**\r\n * Refresh all drop-down filters\r\n */\n\n }, {\n key: 'refreshAll',\n value: function refreshAll() {\n var selectFlts = this.tf.getFiltersByType(_const.SELECT, true);\n var multipleFlts = this.tf.getFiltersByType(_const.MULTIPLE, true);\n var colIdxs = selectFlts.concat(multipleFlts);\n this.refreshFilters(colIdxs);\n }\n\n /**\r\n * Initialize drop-down filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\n\n }, {\n key: 'init',\n value: function init(colIndex, isExternal, container) {\n var _this2 = this;\n\n var tf = this.tf;\n var col = tf.getFilterType(colIndex);\n var externalFltTgtId = isExternal ? tf.externalFltTgtIds[colIndex] : null;\n\n var slc = (0, _dom.createElm)(_const.SELECT, ['id', tf.buildFilterId(colIndex)], ['ct', colIndex], ['filled', '0']);\n\n if (col === _const.MULTIPLE) {\n slc.multiple = _const.MULTIPLE;\n slc.title = this.multipleSlcTooltip;\n }\n slc.className = col.toLowerCase() === _const.SELECT ? tf.fltCssClass : tf.fltMultiCssClass;\n\n //filter is appended in container element\n if (externalFltTgtId) {\n (0, _dom.elm)(externalFltTgtId).appendChild(slc);\n } else {\n container.appendChild(slc);\n }\n\n tf.fltIds.push(slc.id);\n\n if (!tf.loadFltOnDemand) {\n this.build(colIndex);\n } else {\n //1st option is created here since build isn't invoked\n var opt0 = (0, _dom.createOpt)(tf.getClearFilterText(colIndex), '');\n slc.appendChild(opt0);\n }\n\n (0, _event.addEvt)(slc, 'change', function () {\n return _this2.onSlcChange();\n });\n (0, _event.addEvt)(slc, 'focus', function (e) {\n return _this2.onSlcFocus(e);\n });\n\n this.emitter.on(['build-select-filter'], function (tf, colIndex, isLinked, isExternal) {\n return _this2.build(colIndex, isLinked, isExternal);\n });\n this.emitter.on(['select-options'], function (tf, colIndex, values) {\n return _this2.selectOptions(colIndex, values);\n });\n this.emitter.on(['rows-changed'], function () {\n return _this2.refreshAll();\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Build drop-down filter UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\n\n }, {\n key: 'build',\n value: function build(colIndex) {\n var isLinked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var tf = this.tf;\n colIndex = parseInt(colIndex, 10);\n\n this.emitter.emit('before-populating-filter', tf, colIndex);\n\n /** @inherited */\n this.opts = [];\n /** @inherited */\n this.optsTxt = [];\n\n var slcId = tf.fltIds[colIndex];\n var slc = (0, _dom.elm)(slcId);\n var rows = tf.dom().rows;\n var nbRows = tf.getRowsNb(true);\n\n //custom select test\n /** @inherited */\n this.isCustom = tf.isCustomOptions(colIndex);\n\n //Retrieves custom values\n if (this.isCustom) {\n var customValues = tf.getCustomOptions(colIndex);\n this.opts = customValues[0];\n this.optsTxt = customValues[1];\n }\n\n //custom selects text\n var activeIdx = void 0;\n var activeFilterId = tf.getActiveFilterId();\n if (isLinked && activeFilterId) {\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\n }\n\n var excludedOpts = null,\n filteredDataCol = null;\n if (isLinked && tf.disableExcludedOptions) {\n excludedOpts = [];\n filteredDataCol = [];\n }\n\n for (var k = tf.refRow; k < nbRows; k++) {\n // always visible rows don't need to appear on selects as always\n // valid\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\n continue;\n }\n\n var cell = rows[k].cells,\n nchilds = cell.length;\n\n // checks if row has exact cell #\n if (nchilds !== tf.nbCells || this.isCustom) {\n continue;\n }\n\n // this loop retrieves cell data\n for (var j = 0; j < nchilds; j++) {\n if (colIndex !== j) {\n continue;\n }\n if (isLinked && !tf.disableExcludedOptions && !tf.paging && !tf.isRowDisplayed(k) || tf.paging && activeIdx && !tf.isRowValid(k)) {\n continue;\n }\n\n var cellValue = tf.getCellValue(cell[j]),\n\n //Vary Peter's patch\n cellString = (0, _string.matchCase)(cellValue, tf.caseSensitive);\n\n // checks if celldata is already in array\n if (!(0, _array.has)(this.opts, cellString, tf.caseSensitive)) {\n this.opts.push(cellValue);\n }\n\n if (isLinked && tf.disableExcludedOptions) {\n var filteredCol = filteredDataCol[j];\n if (!filteredCol) {\n filteredCol = tf.getVisibleColumnValues(j);\n }\n if (!(0, _array.has)(filteredCol, cellString, tf.caseSensitive) && !(0, _array.has)(excludedOpts, cellString, tf.caseSensitive)) {\n excludedOpts.push(cellValue);\n }\n }\n } //for j\n } //for k\n\n //sort options\n this.opts = this.sortOptions(colIndex, this.opts);\n if (excludedOpts) {\n excludedOpts = this.sortOptions(colIndex, excludedOpts);\n }\n\n //populates drop-down\n this.addOptions(colIndex, slc, isLinked, excludedOpts);\n\n this.emitter.emit('after-populating-filter', tf, colIndex, slc);\n }\n\n /**\r\n * Add drop-down options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} slc Select Dom element\r\n * @param {Boolean} isLinked Enable linked refresh behaviour\r\n * @param {Array} excludedOpts Array of excluded options\r\n */\n\n }, {\n key: 'addOptions',\n value: function addOptions(colIndex, slc, isLinked, excludedOpts) {\n var tf = this.tf,\n slcValue = slc.value;\n\n slc.innerHTML = '';\n slc = this.addFirstOption(slc);\n\n for (var y = 0; y < this.opts.length; y++) {\n if (this.opts[y] === '') {\n continue;\n }\n var val = this.opts[y]; //option value\n var lbl = this.isCustom ? this.optsTxt[y] : val; //option text\n var isDisabled = false;\n if (isLinked && tf.disableExcludedOptions && (0, _array.has)(excludedOpts, (0, _string.matchCase)(val, tf.caseSensitive), tf.caseSensitive)) {\n isDisabled = true;\n }\n\n var opt = void 0;\n //fill select on demand\n if (tf.loadFltOnDemand && slcValue === this.opts[y] && tf.getFilterType(colIndex) === _const.SELECT) {\n opt = (0, _dom.createOpt)(lbl, val, true);\n } else {\n opt = (0, _dom.createOpt)(lbl, val, false);\n }\n if (isDisabled) {\n opt.disabled = true;\n }\n slc.appendChild(opt);\n } // for y\n\n slc.setAttribute('filled', '1');\n }\n\n /**\r\n * Add drop-down header option\r\n * @param {Object} slc Select DOM element\r\n */\n\n }, {\n key: 'addFirstOption',\n value: function addFirstOption(slc) {\n var tf = this.tf;\n var colIdx = tf.getColumnIndexFromFilterId(slc.id);\n var opt0 = (0, _dom.createOpt)(!this.enableSlcResetFilter ? '' : tf.getClearFilterText(colIdx), '');\n if (!this.enableSlcResetFilter) {\n opt0.style.display = _const.NONE;\n }\n slc.appendChild(opt0);\n if (tf.enableEmptyOption) {\n var opt1 = (0, _dom.createOpt)(tf.emptyText, tf.emOperator);\n slc.appendChild(opt1);\n }\n if (tf.enableNonEmptyOption) {\n var opt2 = (0, _dom.createOpt)(tf.nonEmptyText, tf.nmOperator);\n slc.appendChild(opt2);\n }\n return slc;\n }\n\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\n\n }, {\n key: 'selectOptions',\n value: function selectOptions(colIndex) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var tf = this.tf;\n if (values.length === 0) {\n return;\n }\n var slc = tf.getFilterElement(colIndex);\n [].forEach.call(slc.options, function (option) {\n // Empty value means clear all selections and first option is the\n // clear all option\n if (values[0] === '' || option.value === '') {\n option.selected = false;\n }\n\n if (option.value !== '' && (0, _array.has)(values, option.value, true)) {\n option.selected = true;\n } //if\n });\n }\n\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Array of selected values\r\n */\n\n }, {\n key: 'getValues',\n value: function getValues(colIndex) {\n var tf = this.tf;\n var slc = tf.getFilterElement(colIndex);\n var values = [];\n\n // IE >= 9 does not support the selectedOptions property :(\n if (slc.selectedOptions) {\n [].forEach.call(slc.selectedOptions, function (option) {\n return values.push(option.value);\n });\n } else {\n [].forEach.call(slc.options, function (option) {\n if (option.selected) {\n values.push(option.value);\n }\n });\n }\n\n return values;\n }\n\n /**\r\n * Destroy Dropdown instance\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n this.emitter.off(['build-select-filter'], function (colIndex, isLinked, isExternal) {\n return _this3.build(colIndex, isLinked, isExternal);\n });\n this.emitter.off(['select-options'], function (tf, colIndex, values) {\n return _this3.selectOptions(colIndex, values);\n });\n this.emitter.off(['rows-changed'], function () {\n return _this3.refreshAll();\n });\n this.initialized = false;\n }\n }]);\n\n return Dropdown;\n}(_baseDropdown.BaseDropdown);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar classToString = coreUtilityAliases.classToString;\n\nfunction isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n}\n\nmodule.exports = isClass;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction map(arr, fn) {\n // perf: Not using fixed array len here as it may be sparse.\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr) {\n result.push(fn(arr[i], i));\n }\n }\n return result;\n}\n\nmodule.exports = map;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar mathAliases = __webpack_require__(7);\n\nvar abs = mathAliases.abs,\n pow = mathAliases.pow,\n round = mathAliases.round;\n\nfunction withPrecision(val, precision, fn) {\n var multiplier = pow(10, abs(precision || 0));\n fn = fn || round;\n if (precision < 0) multiplier = 1 / multiplier;\n return fn(val * multiplier) / multiplier;\n}\n\nmodule.exports = withPrecision;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = String.fromCharCode;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar updateDate = __webpack_require__(50),\n collectDateArguments = __webpack_require__(78);\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar dateIsValid = __webpack_require__(45);\n\nfunction assertDateIsValid(d) {\n if (!dateIsValid(d)) {\n throw new TypeError('Date is not valid');\n }\n}\n\nmodule.exports = assertDateIsValid;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3),\n simpleClone = __webpack_require__(42),\n isObjectType = __webpack_require__(53),\n getDateParamsFromString = __webpack_require__(213),\n collectDateParamsFromArguments = __webpack_require__(205);\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString;\n\nfunction collectDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1];\n if (allowDuration && isString(arg1)) {\n arg1 = getDateParamsFromString(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n arg1 = collectDateParamsFromArguments(args);\n arg2 = null;\n } else {\n if (isObjectType(arg1)) {\n arg1 = simpleClone(arg1);\n }\n }\n return [arg1, arg2];\n}\n\nmodule.exports = collectDateArguments;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar MINUTES = __webpack_require__(98),\n DateUnits = __webpack_require__(31),\n DateUnitIndexes = __webpack_require__(5),\n _utc = __webpack_require__(21),\n tzOffset = __webpack_require__(49),\n cloneDate = __webpack_require__(33),\n isDefined = __webpack_require__(27),\n advanceDate = __webpack_require__(38),\n dateIsValid = __webpack_require__(45),\n moveToEndOfUnit = __webpack_require__(48),\n getExtendedDate = __webpack_require__(58),\n moveToBeginningOfUnit = __webpack_require__(47);\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction compareDate(date, d, margin, localeCode, options) {\n var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t;\n\n function getTimezoneShift() {\n // If there is any specificity in the date then we're implicitly not\n // checking absolute time, so ignore timezone shifts.\n if (p.set && p.set.specificity) {\n return 0;\n }\n return (tzOffset(p.date) - tzOffset(date)) * MINUTES;\n }\n\n function addSpecificUnit() {\n var unit = DateUnits[p.set.specificity];\n return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1;\n }\n\n if (_utc(date)) {\n options = options || {};\n options.fromUTC = true;\n options.setUTC = true;\n }\n\n p = getExtendedDate(null, d, options, true);\n\n if (margin > 0) {\n loMargin = hiMargin = margin;\n override = true;\n }\n if (!dateIsValid(p.date)) return false;\n if (p.set && p.set.specificity) {\n if (isDefined(p.set.edge) || isDefined(p.set.shift)) {\n compareEdges = true;\n moveToBeginningOfUnit(p.date, p.set.specificity, localeCode);\n }\n if (compareEdges || p.set.specificity === MONTH_INDEX) {\n max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime();\n } else {\n max = addSpecificUnit();\n }\n if (!override && isDefined(p.set.sign) && p.set.specificity) {\n // If the time is relative, there can occasionally be an disparity between\n // the relative date and \"now\", which it is being compared to, so set an\n // extra margin to account for this.\n loMargin = 50;\n hiMargin = -50;\n }\n }\n t = date.getTime();\n min = p.date.getTime();\n max = max || min;\n timezoneShift = getTimezoneShift();\n if (timezoneShift) {\n min -= timezoneShift;\n max -= timezoneShift;\n }\n return t >= (min - loMargin) && t <= (max + hiMargin);\n}\n\nmodule.exports = compareDate;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getExtendedDate = __webpack_require__(58);\n\nfunction createDateWithContext(contextDate, d, options, forceClone) {\n return getExtendedDate(contextDate, d, options, forceClone).date;\n}\n\nmodule.exports = createDateWithContext;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CoreOutputFormats = __webpack_require__(96),\n formattingTokens = __webpack_require__(297),\n assertDateIsValid = __webpack_require__(77);\n\nvar dateFormatMatcher = formattingTokens.dateFormatMatcher;\n\nfunction dateFormat(d, format, localeCode) {\n assertDateIsValid(d);\n format = CoreOutputFormats[format] || format || '{long}';\n return dateFormatMatcher(format, d, localeCode);\n}\n\nmodule.exports = dateFormat;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n dateFormat = __webpack_require__(81),\n classChecks = __webpack_require__(3),\n assertDateIsValid = __webpack_require__(77),\n getAdjustedUnitForDate = __webpack_require__(209);\n\nvar isFunction = classChecks.isFunction,\n localeManager = LocaleHelpers.localeManager;\n\nfunction dateRelative(d, dRelative, arg1, arg2) {\n var adu, format, type, localeCode, fn;\n assertDateIsValid(d);\n if (isFunction(arg1)) {\n fn = arg1;\n } else {\n localeCode = arg1;\n fn = arg2;\n }\n adu = getAdjustedUnitForDate(d, dRelative);\n if (fn) {\n format = fn.apply(d, adu.concat(localeManager.get(localeCode)));\n if (format) {\n return dateFormat(d, format, localeCode);\n }\n }\n // Adjust up if time is in ms, as this doesn't\n // look very good for a standard relative date.\n if (adu[1] === 0) {\n adu[1] = 1;\n adu[0] = 1;\n }\n if (dRelative) {\n type = 'duration';\n } else if (adu[2] > 0) {\n type = 'future';\n } else {\n type = 'past';\n }\n return localeManager.get(localeCode).getRelativeFormat(adu, type);\n}\n\nmodule.exports = dateRelative;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n trim = __webpack_require__(150),\n getMonth = __webpack_require__(29),\n isDefined = __webpack_require__(27),\n getNewDate = __webpack_require__(40),\n compareDay = __webpack_require__(206),\n getWeekday = __webpack_require__(20),\n dateIsValid = __webpack_require__(45),\n classChecks = __webpack_require__(3),\n compareDate = __webpack_require__(79);\n\nvar isString = classChecks.isString,\n English = LocaleHelpers.English;\n\nfunction fullCompareDate(date, d, margin) {\n var tmp;\n if (!dateIsValid(date)) return;\n if (isString(d)) {\n d = trim(d).toLowerCase();\n switch(true) {\n case d === 'future': return date.getTime() > getNewDate().getTime();\n case d === 'past': return date.getTime() < getNewDate().getTime();\n case d === 'today': return compareDay(date);\n case d === 'tomorrow': return compareDay(date, 1);\n case d === 'yesterday': return compareDay(date, -1);\n case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;\n case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;\n\n case (isDefined(tmp = English.weekdayMap[d])):\n return getWeekday(date) === tmp;\n case (isDefined(tmp = English.monthMap[d])):\n return getMonth(date) === tmp;\n }\n }\n return compareDate(date, d, margin);\n}\n\nmodule.exports = fullCompareDate;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar mathAliases = __webpack_require__(7),\n iterateOverDateUnits = __webpack_require__(61);\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnit(ms, fn) {\n var unitIndex = 0, value = 0;\n iterateOverDateUnits(function(unit, i) {\n value = abs(fn(unit));\n if (value >= 1) {\n unitIndex = i;\n return false;\n }\n });\n return [value, unitIndex, ms];\n}\n\nmodule.exports = getAdjustedUnit;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getOwnKey = __webpack_require__(138);\n\nfunction getDateParamKey(params, key) {\n return getOwnKey(params, key) ||\n getOwnKey(params, key + 's') ||\n (key === 'day' && getOwnKey(params, 'date'));\n}\n\nmodule.exports = getDateParamKey;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getYear = __webpack_require__(30),\n getMonth = __webpack_require__(29),\n callDateGet = __webpack_require__(18);\n\nfunction getDaysInMonth(d) {\n return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date');\n}\n\nmodule.exports = getDaysInMonth;\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateGet = __webpack_require__(18);\n\nfunction getHours(d) {\n return callDateGet(d, 'Hours');\n}\n\nmodule.exports = getHours;\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction getRegNonCapturing(src, opt) {\n if (src.length > 1) {\n src = '(?:' + src + ')';\n }\n if (opt) {\n src += '?';\n }\n return src;\n}\n\nmodule.exports = getRegNonCapturing;\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _utc = __webpack_require__(21),\n trunc = __webpack_require__(23),\n tzOffset = __webpack_require__(49),\n padNumber = __webpack_require__(54),\n mathAliases = __webpack_require__(7);\n\nvar abs = mathAliases.abs;\n\nfunction getUTCOffset(d, iso) {\n var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon;\n colon = iso === true ? ':' : '';\n if (!offset && iso) return 'Z';\n hours = padNumber(trunc(-offset / 60), 2, true);\n mins = padNumber(abs(offset % 60), 2);\n return hours + colon + mins;\n}\n\nmodule.exports = getUTCOffset;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setWeekday = __webpack_require__(24),\n getWeekday = __webpack_require__(20),\n mathAliases = __webpack_require__(7);\n\nvar ceil = mathAliases.ceil;\n\nfunction moveToEndOfWeek(d, firstDayOfWeek) {\n var target = firstDayOfWeek - 1;\n setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target);\n return d;\n}\n\nmodule.exports = moveToEndOfWeek;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5),\n setDate = __webpack_require__(35),\n setUnitAndLowerToEdge = __webpack_require__(36),\n moveToBeginningOfWeek = __webpack_require__(62);\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) {\n setUnitAndLowerToEdge(d, MONTH_INDEX);\n setDate(d, firstDayOfWeekYear);\n moveToBeginningOfWeek(d, firstDayOfWeek);\n}\n\nmodule.exports = moveToFirstDayOfWeekYear;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5),\n setUnitAndLowerToEdge = __webpack_require__(36);\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX;\n\nfunction resetTime(d) {\n return setUnitAndLowerToEdge(d, HOURS_INDEX);\n}\n\nmodule.exports = resetTime;\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ISODefaults = __webpack_require__(63),\n getDate = __webpack_require__(34),\n setDate = __webpack_require__(35),\n setYear = __webpack_require__(228),\n getYear = __webpack_require__(30),\n getMonth = __webpack_require__(29),\n setMonth = __webpack_require__(227),\n cloneDate = __webpack_require__(33),\n getWeekday = __webpack_require__(20),\n setWeekday = __webpack_require__(24),\n classChecks = __webpack_require__(3),\n moveToFirstDayOfWeekYear = __webpack_require__(91);\n\nvar isNumber = classChecks.isNumber,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction setISOWeekNumber(d, num) {\n if (isNumber(num)) {\n // Intentionally avoiding updateDate here to prevent circular dependencies.\n var isoWeek = cloneDate(d), dow = getWeekday(d);\n moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR);\n setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1));\n setYear(d, getYear(isoWeek));\n setMonth(d, getMonth(isoWeek));\n setDate(d, getDate(isoWeek));\n setWeekday(d, dow || 7);\n }\n return d.getTime();\n}\n\nmodule.exports = setISOWeekNumber;\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n getLowerUnitIndex = __webpack_require__(39);\n\nfunction walkUnitDown(unitIndex, fn) {\n while (unitIndex >= 0) {\n if (fn(DateUnits[unitIndex], unitIndex) === false) {\n break;\n }\n unitIndex = getLowerUnitIndex(unitIndex);\n }\n}\n\nmodule.exports = walkUnitDown;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getEnglishVariant = __webpack_require__(57);\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CoreOutputFormats = {\n 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}',\n 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}',\n 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}'\n};\n\nmodule.exports = CoreOutputFormats;\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocalizedParsingTokens = {\n 'year': {\n base: 'yyyy',\n requiresSuffix: true\n },\n 'month': {\n base: 'MM',\n requiresSuffix: true\n },\n 'date': {\n base: 'dd',\n requiresSuffix: true\n },\n 'hour': {\n base: 'hh',\n requiresSuffixOr: ':'\n },\n 'minute': {\n base: 'mm'\n },\n 'second': {\n base: 'ss'\n },\n 'num': {\n src: '\\\\d+',\n requiresNumerals: true\n }\n};\n\nmodule.exports = LocalizedParsingTokens;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 60 * 1000;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '\\\\d{4}'\n },\n 'MM': {\n param: 'month',\n src: '[01]?\\\\d'\n },\n 'dd': {\n param: 'date',\n src: '[0123]?\\\\d'\n },\n 'hh': {\n param: 'hour',\n src: '[0-2]?\\\\d'\n },\n 'mm': {\n param: 'minute',\n src: '[0-5]\\\\d'\n },\n 'ss': {\n param: 'second',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'yearSign': {\n src: '[+-]',\n sign: true\n },\n 'tzHour': {\n src: '[0-1]\\\\d'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'tzSign': {\n src: '[+−-]',\n sign: true\n },\n 'ihh': {\n param: 'hour',\n src: '[0-2]?\\\\d(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT',\n val: 1\n },\n 'Z': {\n param: 'utc',\n src: 'Z',\n val: 1\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = ParsingTokens;\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(199);\n__webpack_require__(411);\n\nmodule.exports = __webpack_require__(0);\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3),\n getRangeMemberPrimitiveValue = __webpack_require__(104);\n\nvar isDate = classChecks.isDate;\n\nfunction cloneRangeMember(m) {\n if (isDate(m)) {\n return new Date(m.getTime());\n } else {\n return getRangeMemberPrimitiveValue(m);\n }\n}\n\nmodule.exports = cloneRangeMember;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3),\n namespaceAliases = __webpack_require__(22);\n\nvar isDate = classChecks.isDate,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction getDateForRange(d) {\n if (isDate(d)) {\n return d;\n } else if (d == null) {\n return new Date();\n } else if (sugarDate.create) {\n return sugarDate.create(d);\n }\n return new Date(d);\n}\n\nmodule.exports = getDateForRange;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DURATION_REG = __webpack_require__(432),\n classChecks = __webpack_require__(3),\n simpleCapitalize = __webpack_require__(55);\n\nvar isNumber = classChecks.isNumber;\n\nfunction getDateIncrementObject(amt) {\n var match, val, unit;\n if (isNumber(amt)) {\n return [amt, 'Milliseconds'];\n }\n match = amt.match(DURATION_REG);\n val = +match[1] || 1;\n unit = simpleCapitalize(match[2].toLowerCase());\n if (unit.match(/hour|minute|second/i)) {\n unit += 's';\n } else if (unit === 'Year') {\n unit = 'FullYear';\n } else if (unit === 'Week') {\n unit = 'Date';\n val *= 7;\n } else if (unit === 'Day') {\n unit = 'Date';\n }\n return [val, unit];\n}\n\nmodule.exports = getDateIncrementObject;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3);\n\nvar isDate = classChecks.isDate;\n\nfunction getRangeMemberPrimitiveValue(m) {\n if (m == null) return m;\n return isDate(m) ? m.getTime() : m.valueOf();\n}\n\nmodule.exports = getRangeMemberPrimitiveValue;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar MULTIPLIERS = __webpack_require__(106),\n callDateSet = __webpack_require__(32),\n callDateGet = __webpack_require__(18);\n\nfunction incrementDate(src, amount, unit) {\n var mult = MULTIPLIERS[unit], d;\n if (mult) {\n d = new Date(src.getTime() + (amount * mult));\n } else {\n d = new Date(src);\n callDateSet(d, unit, callDateGet(src, unit) + amount);\n }\n return d;\n}\n\nmodule.exports = incrementDate;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar MULTIPLIERS = {\n 'Hours': 60 * 60 * 1000,\n 'Minutes': 60 * 1000,\n 'Seconds': 1000,\n 'Milliseconds': 1\n};\n\nmodule.exports = MULTIPLIERS;\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sortDateStr = exports.sortNumberStr = exports.dateSortDesc = exports.dateSortAsc = exports.numSortDesc = exports.numSortAsc = exports.ignoreCase = undefined;\n\nvar _number = __webpack_require__(52);\n\nvar _sugarDate = __webpack_require__(100);\n\n/** Sorting utilities */\n\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\nvar ignoreCase = exports.ignoreCase = function ignoreCase(a, b) {\n var x = a.toLowerCase();\n var y = b.toLowerCase();\n return x < y ? -1 : x > y ? 1 : 0;\n};\n\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\nvar numSortAsc = exports.numSortAsc = function numSortAsc(a, b) {\n return a - b;\n};\n\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\nvar numSortDesc = exports.numSortDesc = function numSortDesc(a, b) {\n return b - a;\n};\n\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\nvar dateSortAsc = exports.dateSortAsc = function dateSortAsc(date1, date2) {\n return date1.getTime() - date2.getTime();\n};\n\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\nvar dateSortDesc = exports.dateSortDesc = function dateSortDesc(date1, date2) {\n return date2.getTime() - date1.getTime();\n};\n\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\nvar sortNumberStr = exports.sortNumberStr = function sortNumberStr(compareFn) {\n var decimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n\n return function (numStr1, numStr2) {\n var num1 = (0, _number.parse)(numStr1, decimal);\n var num2 = (0, _number.parse)(numStr2, decimal);\n return compareFn(num1, num2);\n };\n};\n\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\nvar sortDateStr = exports.sortDateStr = function sortDateStr(compareFn) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-us';\n\n return function (dateStr1, dateStr2) {\n var date1 = _sugarDate.Date.create(dateStr1, locale);\n var date2 = _sugarDate.Date.create(dateStr2, locale);\n return compareFn(date1, date2);\n };\n};\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _root = __webpack_require__(15);\n\n/**\r\n * Cookie utilities\r\n */\n\nvar doc = _root.root.document;\n\nexports.default = {\n\n /**\r\n * Write a cookie\r\n * @param {String} name Name of the cookie\r\n * @param {String} value Value of the cookie\r\n * @param {Number} hours Cookie duration in hours\r\n */\n write: function write(name, value, hours) {\n var expire = '';\n if (hours) {\n expire = new Date(new Date().getTime() + hours * 3600000);\n expire = '; expires=' + expire.toGMTString();\n }\n doc.cookie = name + '=' + escape(value) + expire;\n },\n\n\n /**\r\n * Read a cookie\r\n * @param {String} name Name of the cookie\r\n * @returns {String} Value of the cookie\r\n */\n read: function read(name) {\n var cookieValue = '',\n search = name + '=';\n if (doc.cookie.length > 0) {\n var cookie = doc.cookie,\n offset = cookie.indexOf(search);\n if (offset !== -1) {\n offset += search.length;\n var end = cookie.indexOf(';', offset);\n if (end === -1) {\n end = cookie.length;\n }\n cookieValue = unescape(cookie.substring(offset, end));\n }\n }\n return cookieValue;\n },\n\n\n /**\r\n * Remove a cookie\r\n * @param {String} name Name of the cookie\r\n */\n remove: function remove(name) {\n this.write(name, '', -1);\n }\n};\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlternateRows = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Rows with alternating background color for improved readability\r\n */\nvar AlternateRows = exports.AlternateRows = function (_Feature) {\n _inherits(AlternateRows, _Feature);\n\n /**\r\n * Creates an instance of AlternateRows.\r\n *\r\n * @param {Object} tf TableFilter instance\r\n */\n function AlternateRows(tf) {\n _classCallCheck(this, AlternateRows);\n\n var _this = _possibleConstructorReturn(this, (AlternateRows.__proto__ || Object.getPrototypeOf(AlternateRows)).call(this, tf, 'alternateRows'));\n\n var config = _this.config;\n /**\r\n * Css class for even rows (default: 'even')\r\n * @type {String}\r\n */\n _this.evenCss = config.even_row_css_class || 'even';\n\n /**\r\n * Css class for odd rows (default: 'odd')\r\n * @type {String}\r\n */\n _this.oddCss = config.odd_row_css_class || 'odd';\n return _this;\n }\n\n /**\r\n * Sets alternating rows color\r\n */\n\n\n _createClass(AlternateRows, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n this.processAll();\n\n // Subscribe to events\n this.emitter.on(['row-processed', 'row-paged'], function (tf, rowIndex, arrIndex, isValid) {\n return _this2.processRow(rowIndex, arrIndex, isValid);\n });\n this.emitter.on(['column-sorted'], function () {\n return _this2.processAll();\n });\n this.emitter.on(['rows-changed'], function () {\n return _this2.processAll();\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Apply background to all valid rows\r\n */\n\n }, {\n key: 'processAll',\n value: function processAll() {\n if (!this.isEnabled()) {\n return;\n }\n var tf = this.tf;\n var validRowsIndex = tf.getValidRows(true);\n var indexLen = validRowsIndex.length;\n var idx = 0;\n\n //alternates bg color\n for (var j = 0; j < indexLen; j++) {\n var rowIdx = validRowsIndex[j];\n this.setRowBg(rowIdx, idx);\n idx++;\n }\n }\n\n /**\r\n * Set/remove row background based on row validation\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} arrIdx Array index\r\n * @param {Boolean} isValid Valid row flag\r\n */\n\n }, {\n key: 'processRow',\n value: function processRow(rowIdx, arrIdx, isValid) {\n if (isValid) {\n this.setRowBg(rowIdx, arrIdx);\n } else {\n this.removeRowBg(rowIdx);\n }\n }\n\n /**\r\n * Sets row background color\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} idx Valid rows collection index needed to calculate bg\r\n * color\r\n * @private\r\n */\n\n }, {\n key: 'setRowBg',\n value: function setRowBg(rowIdx, idx) {\n if (!this.isEnabled() || isNaN(rowIdx)) {\n return;\n }\n var rows = this.tf.dom().rows;\n var i = isNaN(idx) ? rowIdx : idx;\n this.removeRowBg(rowIdx);\n\n (0, _dom.addClass)(rows[rowIdx], i % 2 ? this.evenCss : this.oddCss);\n }\n\n /**\r\n * Removes row background color\r\n * @param {Number} idx Row index\r\n * @private\r\n */\n\n }, {\n key: 'removeRowBg',\n value: function removeRowBg(idx) {\n if (isNaN(idx)) {\n return;\n }\n var rows = this.tf.dom().rows;\n (0, _dom.removeClass)(rows[idx], this.oddCss);\n (0, _dom.removeClass)(rows[idx], this.evenCss);\n }\n\n /**\r\n * Removes all alternating backgrounds\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n var nbRows = this.tf.getRowsNb(true);\n for (var i = 0; i < nbRows; i++) {\n this.removeRowBg(i);\n }\n\n // Unsubscribe to events\n this.emitter.off(['row-processed', 'row-paged'], function (tf, rowIndex, arrIndex, isValid) {\n return _this3.processRow(rowIndex, arrIndex, isValid);\n });\n this.emitter.off(['column-sorted'], function () {\n return _this3.processAll();\n });\n this.emitter.off(['rows-changed'], function () {\n return _this3.processAll();\n });\n\n this.initialized = false;\n }\n }]);\n\n return AlternateRows;\n}(_feature.Feature);\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ClearButton = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _event = __webpack_require__(17);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Clear button UI component\r\n */\nvar ClearButton = exports.ClearButton = function (_Feature) {\n _inherits(ClearButton, _Feature);\n\n /**\r\n * Creates an instance of ClearButton\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function ClearButton(tf) {\n _classCallCheck(this, ClearButton);\n\n var _this = _possibleConstructorReturn(this, (ClearButton.__proto__ || Object.getPrototypeOf(ClearButton)).call(this, tf, 'btnReset'));\n\n var f = _this.config;\n\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\n _this.targetId = f.btn_reset_target_id || null;\n\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.container = null;\n\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.element = null;\n\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\n _this.text = f.btn_reset_text || 'Reset';\n\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\n _this.cssClass = f.btn_reset_css_class || 'reset';\n\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\n _this.tooltip = f.btn_reset_tooltip || 'Clear filters';\n\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\n _this.html = f.btn_reset_html || (!tf.enableIcons ? null : '');\n return _this;\n }\n\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\n\n\n _createClass(ClearButton, [{\n key: 'onClick',\n value: function onClick() {\n if (!this.isEnabled()) {\n return;\n }\n this.tf.clearFilters();\n }\n\n /**\r\n * Initialize clear button component\r\n */\n\n }, {\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n var tf = this.tf;\n\n if (this.initialized) {\n return;\n }\n\n var cont = (0, _dom.createElm)('span');\n\n // reset button is added to defined element\n if (!this.targetId) {\n tf.setToolbar();\n }\n var targetEl = !this.targetId ? tf.rDiv : (0, _dom.elm)(this.targetId);\n targetEl.appendChild(cont);\n\n if (!this.html) {\n var fltReset = (0, _dom.createElm)('a', ['href', 'javascript:void(0);']);\n fltReset.className = this.cssClass;\n fltReset.appendChild((0, _dom.createText)(this.text));\n cont.appendChild(fltReset);\n (0, _event.addEvt)(fltReset, 'click', function () {\n return _this2.onClick();\n });\n } else {\n cont.innerHTML = this.html;\n var resetEl = cont.firstChild;\n (0, _event.addEvt)(resetEl, 'click', function () {\n return _this2.onClick();\n });\n }\n this.element = cont.firstChild;\n this.container = cont;\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Destroy ClearButton instance\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n if (!this.initialized) {\n return;\n }\n (0, _dom.removeElm)(this.element);\n (0, _dom.removeElm)(this.container);\n this.element = null;\n this.container = null;\n this.initialized = false;\n }\n }]);\n\n return ClearButton;\n}(_feature.Feature);\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DateType = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _sugarDate = __webpack_require__(100);\n\n__webpack_require__(312);\n\nvar _feature = __webpack_require__(11);\n\nvar _types = __webpack_require__(6);\n\nvar _const = __webpack_require__(14);\n\nvar _root = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Wrapper for Sugar Date module providing datetime helpers and locales\r\n * @export\r\n * @class DateType\r\n */\nvar DateType = exports.DateType = function (_Feature) {\n _inherits(DateType, _Feature);\n\n /**\r\n * Creates an instance of DateType\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function DateType(tf) {\n _classCallCheck(this, DateType);\n\n /**\r\n * Global locale\r\n * @type {String}\r\n */\n var _this = _possibleConstructorReturn(this, (DateType.__proto__ || Object.getPrototypeOf(DateType)).call(this, tf, 'dateType'));\n\n _this.locale = tf.locale;\n\n /**\r\n * Sugar Date instance\r\n * @type {Object}\r\n */\n _this.datetime = _sugarDate.Date;\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Initialize DateType instance\r\n */\n\n\n _createClass(DateType, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n // Set global locale\n this.datetime.setLocale(this.locale);\n\n // Add formats from column types configuration if any\n this.addConfigFormats(this.tf.colTypes);\n\n this.emitter.on(['add-date-type-formats'], function (tf, types) {\n return _this2.addConfigFormats(types);\n });\n\n // Broadcast date-type initialization\n this.emitter.emit('date-type-initialized', this.tf, this);\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Parse a string representation of a date for a specified locale and return\r\n * a date object\r\n * @param {String} dateStr String representation of a date\r\n * @param {String} localeCode Locale code (ie 'en-us')\r\n * @returns {Date}\r\n */\n\n }, {\n key: 'parse',\n value: function parse(dateStr, localeCode) {\n return this.datetime.create(dateStr, localeCode);\n }\n\n /**\r\n * Check string representation of a date for a specified locale is valid\r\n * @param {any} dateStr String representation of a date\r\n * @param {any} localeCode Locale code (ie 'en-us')\r\n * @returns {Boolean}\r\n */\n\n }, {\n key: 'isValid',\n value: function isValid(dateStr, localeCode) {\n return this.datetime.isValid(this.parse(dateStr, localeCode));\n }\n\n /**\r\n * Return the type object of a specified column as per configuration or\r\n * passed collection\r\n * @param {Number} colIndex Column index\r\n * @param {Array} types Collection of column types, optional\r\n * @returns {Object}\r\n */\n\n }, {\n key: 'getOptions',\n value: function getOptions(colIndex, types) {\n types = types || this.tf.colTypes;\n var colType = types[colIndex];\n return (0, _types.isObj)(colType) ? colType : {};\n }\n\n /**\r\n * Return the locale code for supplied column index as per configuration\r\n * or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} Locale code (ie: 'en-us')\r\n */\n\n }, {\n key: 'getLocale',\n value: function getLocale(colIndex) {\n return this.getOptions(colIndex).locale || this.locale;\n }\n\n /**\r\n * Add date time format(s) to a locale as specified by the passed\r\n * collection of column types, ie:\r\n * [\r\n * 'string',\r\n * 'number',\r\n * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']}\r\n * ]\r\n *\r\n * @param {Array} [types=[]] Collection of column types\r\n */\n\n }, {\n key: 'addConfigFormats',\n value: function addConfigFormats() {\n var _this3 = this;\n\n var types = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n types.forEach(function (type, idx) {\n var options = _this3.getOptions(idx, types);\n if (options.type === _const.DATE && options.hasOwnProperty('format')) {\n var locale = _this3.datetime.getLocale(options.locale || _this3.locale);\n var formats = (0, _types.isArray)(options.format) ? options.format : [options.format];\n\n // Sugar date module throws exceptions with locale.addFormat\n try {\n formats.forEach(function (format) {\n locale.addFormat(format);\n });\n } catch (ex) {\n _root.root.console.error(ex);\n }\n }\n });\n }\n\n /**\r\n * Remove DateType instance\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n\n // TODO: remove added formats\n\n this.emitter.off(['add-date-type-formats'], function (tf, types) {\n return _this4.addConfigFormats(types);\n });\n\n this.initialized = false;\n }\n }]);\n\n return DateType;\n}(_feature.Feature);\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GridLayout = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _event = __webpack_require__(17);\n\nvar _string = __webpack_require__(19);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Grid layout, table with fixed headers\n */\nvar GridLayout = exports.GridLayout = function (_Feature) {\n _inherits(GridLayout, _Feature);\n\n /**\n * Creates an instance of GridLayout\n * @param {TableFilter} tf TableFilter instance\n */\n function GridLayout(tf) {\n _classCallCheck(this, GridLayout);\n\n var _this = _possibleConstructorReturn(this, (GridLayout.__proto__ || Object.getPrototypeOf(GridLayout)).call(this, tf, 'gridLayout'));\n\n var f = _this.config.grid_layout || {};\n\n /**\n * Grid-layout container width as CSS string\n * @type {String}\n */\n _this.width = f.width || null;\n\n /**\n * Grid-layout container height as CSS string\n * @type {String}\n */\n _this.height = f.height || null;\n\n /**\n * Css class for main container element\n * @type {String}\n */\n _this.mainContCssClass = f.cont_css_class || 'grd_Cont';\n\n /**\n * Css class for body table container element\n * @type {String}\n */\n _this.contCssClass = f.tbl_cont_css_class || 'grd_tblCont';\n\n /**\n * Css class for headers table container element\n * @type {String}\n */\n _this.headContCssClass = f.tbl_head_css_class || 'grd_headTblCont';\n\n /**\n * Css class for toolbar container element (rows counter, paging etc.)\n * @type {String}\n */\n _this.infDivCssClass = f.inf_grid_css_class || 'grd_inf';\n\n /**\n * Index of the headers row, default: 0\n * @type {Number}\n */\n _this.headRowIndex = f.headers_row_index || 0;\n\n /**\n * Collection of the header row indexes to be moved into headers table\n * @type {Array}\n */\n _this.headRows = f.headers_rows || [0];\n\n /**\n * Enable or disable column filters generation, default: true\n * @type {Boolean}\n */\n _this.filters = f.filters === false ? false : true;\n\n /**\n * Enable or disable column headers, default: false\n * @type {Boolean}\n */\n _this.noHeaders = Boolean(f.no_headers);\n\n /**\n * Grid-layout default column widht as CSS string\n * @type {String}\n */\n _this.defaultColWidth = f.default_col_width || '100px';\n\n /**\n * List of column elements\n * @type {Array}\n * @private\n */\n _this.colElms = [];\n\n /**\n * Prefix for grid-layout filter's cell ID\n * @type {String}\n * @private\n */\n _this.prfxGridFltTd = '_td_';\n\n /**\n * Prefix for grid-layout header's cell ID\n * @type {String}\n * @private\n */\n _this.prfxGridTh = 'tblHeadTh_';\n\n /**\n * Mark-up of original HTML table\n * @type {String}\n * @private\n */\n _this.sourceTblHtml = tf.dom().outerHTML;\n\n /**\n * Indicates if working table has column elements\n * @type {Boolean}\n * @private\n */\n _this.tblHasColTag = (0, _dom.tag)(tf.dom(), 'col').length > 0 ? true : false;\n\n /**\n * Main container element\n * @private\n */\n _this.tblMainCont = null;\n\n /**\n * Table container element\n * @private\n */\n _this.tblCont = null;\n\n /**\n * Headers' table container element\n * @private\n */\n _this.headTblCont = null;\n\n /**\n * Headers' table element\n * @private\n */\n _this.headTbl = null;\n\n // filters flag at TF level\n tf.fltGrid = _this.filters;\n return _this;\n }\n\n /**\n * Generates a grid with fixed headers\n * TODO: reduce size of init by extracting single purposed methods\n */\n\n\n _createClass(GridLayout, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n var tf = this.tf;\n var tbl = tf.dom();\n\n if (this.initialized) {\n return;\n }\n\n // Override relevant TableFilter properties\n this.setOverrides();\n\n // Assign default column widths\n this.setDefaultColWidths();\n\n // Initial table width\n var tblW = this.initialTableWidth();\n\n //Main container: it will contain all the elements\n this.tblMainCont = this.createContainer('div', this.mainContCssClass);\n if (this.width) {\n this.tblMainCont.style.width = this.width;\n }\n tbl.parentNode.insertBefore(this.tblMainCont, tbl);\n\n //Table container: div wrapping content table\n this.tblCont = this.createContainer('div', this.contCssClass);\n this.setConfigWidth(this.tblCont);\n if (this.height) {\n this.tblCont.style.height = this.height;\n }\n tbl.parentNode.insertBefore(this.tblCont, tbl);\n var t = (0, _dom.removeElm)(tbl);\n this.tblCont.appendChild(t);\n\n //In case table width is expressed in %\n if (tbl.style.width === '') {\n tbl.style.width = ((0, _string.contains)('%', tblW) ? tbl.clientWidth : tblW) + 'px';\n }\n\n var d = (0, _dom.removeElm)(this.tblCont);\n this.tblMainCont.appendChild(d);\n\n //Headers table container: div wrapping headers table\n this.headTblCont = this.createContainer('div', this.headContCssClass);\n\n //Headers table\n this.headTbl = (0, _dom.createElm)('table');\n var tH = (0, _dom.createElm)('tHead');\n\n //1st row should be headers row, ids are added if not set\n //Those ids are used by the sort feature\n var hRow = tbl.rows[this.headRowIndex];\n var sortTriggers = this.getSortTriggerIds(hRow);\n\n //Filters row is created\n var filtersRow = this.createFiltersRow();\n\n //Headers row are moved from content table to headers table\n this.setHeadersRow(tH);\n\n this.headTbl.appendChild(tH);\n if (tf.filtersRowIndex === 0) {\n tH.insertBefore(filtersRow, hRow);\n } else {\n tH.appendChild(filtersRow);\n }\n\n this.headTblCont.appendChild(this.headTbl);\n this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont);\n\n //THead needs to be removed in content table for sort feature\n var thead = (0, _dom.tag)(tbl, 'thead');\n if (thead.length > 0) {\n tbl.removeChild(thead[0]);\n }\n\n //Headers table style\n this.headTbl.style.tableLayout = 'fixed';\n tbl.style.tableLayout = 'fixed';\n this.headTbl.cellPadding = tbl.cellPadding;\n this.headTbl.cellSpacing = tbl.cellSpacing;\n\n //content table without headers needs col widths to be reset\n tf.setColWidths(this.headTbl);\n\n //Headers container width\n // this.headTblCont.style.width = this.tblCont.clientWidth+'px';\n\n tbl.style.width = '';\n //\n this.headTbl.style.width = tbl.clientWidth + 'px';\n //\n\n //scroll synchronisation\n (0, _event.addEvt)(this.tblCont, 'scroll', function (evt) {\n var elm = (0, _event.targetEvt)(evt);\n var scrollLeft = elm.scrollLeft;\n _this2.headTblCont.scrollLeft = scrollLeft;\n //New pointerX calc taking into account scrollLeft\n // if(!o.isPointerXOverwritten){\n // try{\n // o.Evt.pointerX = function(evt){\n // let e = evt || global.event;\n // let bdScrollLeft = tf_StandardBody().scrollLeft +\n // scrollLeft;\n // return (e.pageX + scrollLeft) ||\n // (e.clientX + bdScrollLeft);\n // };\n // o.isPointerXOverwritten = true;\n // } catch(err) {\n // o.isPointerXOverwritten = false;\n // }\n // }\n });\n\n // TODO: Trigger a custom event handled by sort extension\n var sort = tf.extension('sort');\n if (sort) {\n sort.asyncSort = true;\n sort.triggerIds = sortTriggers;\n }\n\n //Col elements are enough to keep column widths after sorting and\n //filtering\n this.setColumnElements();\n\n if (tf.popupFilters) {\n filtersRow.style.display = _const.NONE;\n }\n\n if (tbl.clientWidth !== this.headTbl.clientWidth) {\n tbl.style.width = this.headTbl.clientWidth + 'px';\n }\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Overrides TableFilter instance properties to adjust to grid layout mode\n * @private\n */\n\n }, {\n key: 'setOverrides',\n value: function setOverrides() {\n var tf = this.tf;\n tf.refRow = 0;\n tf.headersRow = 0;\n tf.filtersRowIndex = 1;\n tf.isExternalFlt = true;\n }\n\n /**\n * Set grid-layout default column widths if column widths are not defined\n * @private\n */\n\n }, {\n key: 'setDefaultColWidths',\n value: function setDefaultColWidths() {\n var tf = this.tf;\n if (tf.hasColWidths) {\n return;\n }\n for (var k = 0, len = tf.getCellsNb(); k < len; k++) {\n var colW = void 0;\n var cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k];\n if (cell.width !== '') {\n colW = cell.width;\n } else if (cell.style.width !== '') {\n colW = parseInt(cell.style.width, 10);\n } else {\n colW = this.defaultColWidth;\n }\n tf.colWidths[k] = colW;\n }\n tf.hasColWidths = true;\n tf.setColWidths();\n }\n\n /**\n * Initial table width\n * @returns {Number}\n * @private\n */\n\n }, {\n key: 'initialTableWidth',\n value: function initialTableWidth() {\n var tbl = this.tf.dom();\n var width = void 0; //initial table width\n\n if (tbl.width !== '') {\n width = tbl.width;\n } else if (tbl.style.width !== '') {\n width = tbl.style.width;\n } else {\n width = tbl.clientWidth;\n }\n return parseInt(width, 10);\n }\n\n /**\n * Creates container element\n * @param {String} tag Tag name\n * @param {String} className Css class to assign to element\n * @returns {DOMElement}\n * @private\n */\n\n }, {\n key: 'createContainer',\n value: function createContainer(tag, className) {\n var element = (0, _dom.createElm)(tag);\n element.className = className;\n return element;\n }\n\n /**\n * Creates filters row with cells\n * @returns {HTMLTableRowElement}\n * @private\n */\n\n }, {\n key: 'createFiltersRow',\n value: function createFiltersRow() {\n var tf = this.tf;\n var filtersRow = (0, _dom.createElm)('tr');\n if (this.filters && tf.fltGrid) {\n tf.externalFltTgtIds = [];\n for (var j = 0; j < tf.getCellsNb(); j++) {\n var fltTdId = '' + (tf.prfxFlt + j + this.prfxGridFltTd + tf.id);\n var cl = (0, _dom.createElm)(tf.fltCellTag, ['id', fltTdId]);\n filtersRow.appendChild(cl);\n tf.externalFltTgtIds[j] = fltTdId;\n }\n }\n return filtersRow;\n }\n\n /**\n * Generates column elements if necessary and assigns their widths\n * @private\n */\n\n }, {\n key: 'setColumnElements',\n value: function setColumnElements() {\n var tf = this.tf;\n var cols = (0, _dom.tag)(tf.dom(), 'col');\n this.tblHasColTag = cols.length > 0;\n\n for (var k = tf.nbCells - 1; k >= 0; k--) {\n var col = void 0;\n\n if (!this.tblHasColTag) {\n col = (0, _dom.createElm)('col');\n tf.dom().insertBefore(col, tf.dom().firstChild);\n } else {\n col = cols[k];\n }\n col.style.width = tf.colWidths[k];\n this.colElms[k] = col;\n }\n this.tblHasColTag = true;\n }\n\n /**\n * Sets headers row in headers table\n * @param {HTMLHeadElement} tableHead Table head element\n * @private\n */\n\n }, {\n key: 'setHeadersRow',\n value: function setHeadersRow(tableHead) {\n if (this.noHeaders) {\n // Handle table with no headers, assuming here headers do not\n // exist\n tableHead.appendChild((0, _dom.createElm)('tr'));\n } else {\n // Headers row are moved from content table to headers table\n for (var i = 0; i < this.headRows.length; i++) {\n var row = this.tf.dom().rows[this.headRows[i]];\n tableHead.appendChild(row);\n }\n }\n }\n\n /**\n * Sets width defined in configuration to passed element\n * @param {DOMElement} element DOM element\n * @private\n */\n\n }, {\n key: 'setConfigWidth',\n value: function setConfigWidth(element) {\n if (!this.width) {\n return;\n }\n if (this.width.indexOf('%') !== -1) {\n element.style.width = '100%';\n } else {\n element.style.width = this.width;\n }\n }\n\n /**\n * Returns a list of header IDs used for specifing external sort triggers\n * @param {HTMLTableRowElement} row DOM row element\n * @returns {Array} List of IDs\n * @private\n */\n\n }, {\n key: 'getSortTriggerIds',\n value: function getSortTriggerIds(row) {\n var tf = this.tf;\n var sortTriggers = [];\n for (var n = 0; n < tf.getCellsNb(); n++) {\n var c = row.cells[n];\n var thId = c.getAttribute('id');\n if (!thId || thId === '') {\n thId = this.prfxGridTh + n + '_' + tf.id;\n c.setAttribute('id', thId);\n }\n sortTriggers.push(thId);\n }\n return sortTriggers;\n }\n\n /**\n * Removes the grid layout\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var tf = this.tf;\n var tbl = tf.dom();\n\n if (!this.initialized) {\n return;\n }\n var t = (0, _dom.removeElm)(tbl);\n this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont);\n (0, _dom.removeElm)(this.tblMainCont);\n\n this.tblMainCont = null;\n this.headTblCont = null;\n this.headTbl = null;\n this.tblCont = null;\n\n tbl.outerHTML = this.sourceTblHtml;\n //needed to keep reference of table element for future usage\n this.tf.tbl = (0, _dom.elm)(tf.id);\n\n this.initialized = false;\n }\n }]);\n\n return GridLayout;\n}(_feature.Feature);\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Hash = exports.hasHashChange = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _event = __webpack_require__(17);\n\nvar _root = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JSON = _root.root.JSON;\nvar location = _root.root.location;\nvar decodeURIComponent = _root.root.decodeURIComponent;\nvar encodeURIComponent = _root.root.encodeURIComponent;\n\n/**\r\n * Checks if browser has onhashchange event\r\n */\nvar hasHashChange = exports.hasHashChange = function hasHashChange() {\n var docMode = _root.root.documentMode;\n return 'onhashchange' in _root.root && (docMode === undefined || docMode > 7);\n};\n\n/**\r\n * Manages state via URL hash changes\r\n *\r\n * @export\r\n * @class Hash\r\n */\n\nvar Hash = exports.Hash = function () {\n\n /**\r\n * Creates an instance of Hash\r\n *\r\n * @param {State} state Instance of State\r\n */\n function Hash(state) {\n _classCallCheck(this, Hash);\n\n /**\r\n * State object\r\n * @type {State}\r\n */\n this.state = state;\n\n /**\r\n * Cached URL hash\r\n * @type {String} Hash string\r\n * @private\r\n */\n this.lastHash = null;\n\n /**\r\n * Application event emitter instance\r\n * @type {Emitter}\r\n */\n this.emitter = state.emitter;\n\n /**\r\n * Bound sync wrapper for future use\r\n * @private\r\n */\n this.boundSync = null;\n }\n\n /**\r\n * Initializes the Hash object\r\n */\n\n\n _createClass(Hash, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n if (!hasHashChange()) {\n return;\n }\n\n this.lastHash = location.hash;\n //Store a bound sync wrapper\n this.boundSync = this.sync.bind(this);\n this.emitter.on(['state-changed'], function (tf, state) {\n return _this.update(state);\n });\n this.emitter.on(['initialized'], this.boundSync);\n (0, _event.addEvt)(_root.root, 'hashchange', this.boundSync);\n }\n\n /**\r\n * Updates the URL hash based on a state change\r\n *\r\n * @param {State} state Instance of State\r\n */\n\n }, {\n key: 'update',\n value: function update(state) {\n var hash = '#' + encodeURIComponent(JSON.stringify(state));\n if (this.lastHash === hash) {\n return;\n }\n\n location.hash = hash;\n this.lastHash = hash;\n }\n\n /**\r\n * Converts a URL hash into a state JSON object\r\n *\r\n * @param {String} hash URL hash fragment\r\n * @returns {Object} JSON object\r\n */\n\n }, {\n key: 'parse',\n value: function parse(hash) {\n if (hash.indexOf('#') === -1) {\n return null;\n }\n hash = hash.substr(1);\n return JSON.parse(decodeURIComponent(hash));\n }\n\n /**\r\n * Applies current hash state to features\r\n */\n\n }, {\n key: 'sync',\n value: function sync() {\n var state = this.parse(location.hash);\n if (!state) {\n return;\n }\n // override current state with persisted one and sync features\n this.state.overrideAndSync(state);\n }\n\n /**\r\n * Release Hash event subscriptions and clear fields\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this2 = this;\n\n this.emitter.off(['state-changed'], function (tf, state) {\n return _this2.update(state);\n });\n this.emitter.off(['initialized'], this.boundSync);\n (0, _event.removeEvt)(_root.root, 'hashchange', this.boundSync);\n\n this.state = null;\n this.lastHash = null;\n this.emitter = null;\n }\n }]);\n\n return Hash;\n}();\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Help = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _event = __webpack_require__(17);\n\nvar _const = __webpack_require__(14);\n\nvar _root = __webpack_require__(15);\n\nvar _types = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' + '4.-Filter-operators';\nvar WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/';\n\n/**\r\n * Help UI component\r\n */\n\nvar Help = exports.Help = function (_Feature) {\n _inherits(Help, _Feature);\n\n /**\r\n * Creates an instance of Help\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function Help(tf) {\n _classCallCheck(this, Help);\n\n var _this = _possibleConstructorReturn(this, (Help.__proto__ || Object.getPrototypeOf(Help)).call(this, tf, 'help'));\n\n var f = _this.config.help_instructions || {};\n\n /**\r\n * ID of main custom container element\r\n * @type {String}\r\n */\n _this.tgtId = f.target_id || null;\n\n /**\r\n * ID of custom container element for instructions\r\n * @type {String}\r\n */\n _this.contTgtId = f.container_target_id || null;\n\n /**\r\n * Instructions text (accepts HTML)\r\n * @type {String}\r\n */\n _this.instrText = !(0, _types.isEmpty)(f.text) ? f.text : 'Use the filters above each column to filter and limit table ' + 'data. Advanced searches can be performed by using the following ' + 'operators:
<, <=, >, ' + '>=, =, *, !, {, }, ' + '||,&&, [empty], [nonempty], ' + 'rgx:
' + 'Learn more
';\n\n /**\r\n * Instructions HTML\r\n * @type {String}\r\n */\n _this.instrHtml = f.html || null;\n\n /**\r\n * Help button text ('?')\r\n * @type {String}\r\n */\n _this.btnText = f.btn_text || '?';\n\n /**\r\n * Custom help button HTML\r\n * @type {String}\r\n */\n _this.btnHtml = f.btn_html || null;\n\n /**\r\n * Css class for help button\r\n * @type {String}\r\n */\n _this.btnCssClass = f.btn_css_class || 'helpBtn';\n\n /**\r\n * Css class for help container element\r\n * @type {String}\r\n */\n _this.contCssClass = f.container_css_class || 'helpCont';\n\n /**\r\n * Button DOM element\r\n * @type {DOMElement}\r\n */\n _this.btn = null;\n\n /**\r\n * Help container DOM element\r\n * @type {DOMElement}\r\n */\n _this.cont = null;\n\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\n _this.boundMouseup = null;\n\n /**\r\n * Default HTML appended to instructions text\r\n * @type {String}\r\n */\n _this.defaultHtml = '

TableFilter ' + 'v' + tf.version + '

' + '' + WEBSITE_URL + '' + '
©2015-' + tf.year + ' Max Guglielmi' + '
' + 'Close
';\n\n _this.emitter.on(['init-help'], function () {\n return _this.init();\n });\n return _this;\n }\n\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\n\n\n _createClass(Help, [{\n key: 'onMouseup',\n value: function onMouseup(evt) {\n var targetElm = (0, _event.targetEvt)(evt);\n\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== this.cont && targetElm !== this.btn) {\n this.toggle();\n }\n\n return;\n }\n\n /**\r\n * Initialise Help instance\r\n */\n\n }, {\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n\n var btn = (0, _dom.createElm)('span');\n var cont = (0, _dom.createElm)('div');\n\n this.boundMouseup = this.onMouseup.bind(this);\n\n //help button is added to defined element\n if (!this.tgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.tgtId ? tf.rDiv : (0, _dom.elm)(this.tgtId);\n targetEl.appendChild(btn);\n\n var divContainer = !this.contTgtId ? btn : (0, _dom.elm)(this.contTgtId);\n\n if (!this.btnHtml) {\n divContainer.appendChild(cont);\n var helplink = (0, _dom.createElm)('a', ['href', 'javascript:void(0);']);\n helplink.className = this.btnCssClass;\n helplink.appendChild((0, _dom.createText)(this.btnText));\n btn.appendChild(helplink);\n (0, _event.addEvt)(helplink, 'click', function () {\n return _this2.toggle();\n });\n } else {\n btn.innerHTML = this.btnHtml;\n var helpEl = btn.firstChild;\n (0, _event.addEvt)(helpEl, 'click', function () {\n return _this2.toggle();\n });\n divContainer.appendChild(cont);\n }\n\n if (!this.instrHtml) {\n cont.innerHTML = this.instrText;\n cont.className = this.contCssClass;\n } else {\n if (this.contTgtId) {\n divContainer.appendChild(cont);\n }\n cont.innerHTML = this.instrHtml;\n if (!this.contTgtId) {\n cont.className = this.contCssClass;\n }\n }\n cont.innerHTML += this.defaultHtml;\n (0, _event.addEvt)(cont, 'click', function () {\n return _this2.toggle();\n });\n\n this.cont = cont;\n this.btn = btn;\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Toggle help pop-up\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n // check only if explicitily disabled as in this case undefined\n // signifies the help feature is enabled by default\n if (!this.isEnabled()) {\n return;\n }\n\n // ensure mouseup event handler is removed\n (0, _event.removeEvt)(_root.root, 'mouseup', this.boundMouseup);\n\n var divDisplay = this.cont.style.display;\n if (divDisplay === '' || divDisplay === _const.NONE) {\n this.cont.style.display = 'inline';\n (0, _event.addEvt)(_root.root, 'mouseup', this.boundMouseup);\n } else {\n this.cont.style.display = _const.NONE;\n }\n }\n\n /**\r\n * Remove help UI\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n if (!this.initialized) {\n return;\n }\n (0, _dom.removeElm)(this.btn);\n this.btn = null;\n\n (0, _dom.removeElm)(this.cont);\n this.cont = null;\n\n this.boundMouseup = null;\n this.initialized = false;\n }\n }]);\n\n return Help;\n}(_feature.Feature);\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HighlightKeyword = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _string = __webpack_require__(19);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\r\n * Highlight matched keywords upon filtering\r\n *\r\n * @export\r\n * @class HighlightKeyword\r\n */\nvar HighlightKeyword = exports.HighlightKeyword = function () {\n\n /**\r\n * Creates an instance of HighlightKeyword\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function HighlightKeyword(tf) {\n _classCallCheck(this, HighlightKeyword);\n\n var f = tf.config();\n\n /**\r\n * Css class for highlighted term\r\n * @type {String}\r\n */\n this.highlightCssClass = f.highlight_css_class || 'keyword';\n\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\n this.tf = tf;\n\n /**\r\n * TableFilter's emitter instance\r\n * @type {Emitter}\r\n */\n this.emitter = tf.emitter;\n }\n\n /**\r\n * Initializes HighlightKeyword instance\r\n */\n\n\n _createClass(HighlightKeyword, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n this.emitter.on(['before-filtering', 'destroy'], function () {\n return _this.unhighlightAll();\n });\n this.emitter.on(['highlight-keyword'], function (tf, cell, term) {\n return _this._processTerm(cell, term);\n });\n }\n\n /**\r\n * Highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} term Searched term\r\n * @param {String} cssClass Css class name\r\n *\r\n * TODO: refactor this method\r\n */\n\n }, {\n key: 'highlight',\n value: function highlight(node, term, cssClass) {\n // Iterate into this nodes childNodes\n if (node.hasChildNodes) {\n var children = node.childNodes;\n for (var i = 0; i < children.length; i++) {\n this.highlight(children[i], term, cssClass);\n }\n }\n\n if (node.nodeType === 3) {\n var nodeVal = node.nodeValue.toLowerCase();\n var termIdx = nodeVal.indexOf(term.toLowerCase());\n\n if (termIdx !== -1) {\n var pn = node.parentNode;\n if (pn && pn.className !== cssClass) {\n // term not highlighted yet\n var nv = node.nodeValue,\n\n // Create a load of replacement nodes\n before = (0, _dom.createText)(nv.substr(0, termIdx)),\n value = nv.substr(termIdx, term.length),\n after = (0, _dom.createText)(nv.substr(termIdx + term.length)),\n text = (0, _dom.createText)(value),\n container = (0, _dom.createElm)('span');\n container.className = cssClass;\n container.appendChild(text);\n pn.insertBefore(before, node);\n pn.insertBefore(container, node);\n pn.insertBefore(after, node);\n pn.removeChild(node);\n }\n }\n }\n }\n\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} term\r\n * @param {String} cssClass Css class to remove\r\n */\n\n }, {\n key: 'unhighlight',\n value: function unhighlight(term, cssClass) {\n var highlightedNodes = this.tf.dom().querySelectorAll('.' + cssClass);\n for (var i = 0; i < highlightedNodes.length; i++) {\n var n = highlightedNodes[i];\n var nodeVal = (0, _dom.getText)(n);\n\n if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) {\n var parentNode = n.parentNode;\n parentNode.replaceChild((0, _dom.createText)(nodeVal), n);\n parentNode.normalize();\n }\n }\n }\n\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\n\n }, {\n key: 'unhighlightAll',\n value: function unhighlightAll() {\n var _this2 = this;\n\n if (!this.tf.highlightKeywords) {\n return;\n }\n // iterate filters values to unhighlight all values\n this.tf.getFiltersValue().forEach(function (val) {\n if ((0, _types.isArray)(val)) {\n val.forEach(function (item) {\n return _this2.unhighlight(item, _this2.highlightCssClass);\n });\n } else {\n _this2.unhighlight(val, _this2.highlightCssClass);\n }\n });\n }\n\n /** Remove feature */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n this.emitter.off(['before-filtering', 'destroy'], function () {\n return _this3.unhighlightAll();\n });\n this.emitter.off(['highlight-keyword'], function (tf, cell, term) {\n return _this3._processTerm(cell, term);\n });\n }\n\n /**\r\n * Ensure filtering operators are handled before highlighting any match\r\n * @param {any} Table cell to look searched term into\r\n * @param {any} Searched termIdx\r\n */\n\n }, {\n key: '_processTerm',\n value: function _processTerm(cell, term) {\n var tf = this.tf;\n var reLk = new RegExp((0, _string.rgxEsc)(tf.lkOperator));\n var reEq = new RegExp(tf.eqOperator);\n var reSt = new RegExp(tf.stOperator);\n var reEn = new RegExp(tf.enOperator);\n var reLe = new RegExp(tf.leOperator);\n var reGe = new RegExp(tf.geOperator);\n var reL = new RegExp(tf.lwOperator);\n var reG = new RegExp(tf.grOperator);\n var reD = new RegExp(tf.dfOperator);\n\n term = term.replace(reLk, '').replace(reEq, '').replace(reSt, '').replace(reEn, '');\n\n if (reLe.test(term) || reGe.test(term) || reL.test(term) || reG.test(term) || reD.test(term)) {\n term = (0, _dom.getText)(cell);\n }\n\n if (term === '') {\n return;\n }\n\n this.highlight(cell, term, this.highlightCssClass);\n }\n }]);\n\n return HighlightKeyword;\n}();\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Loader = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _root = __webpack_require__(15);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EVENTS = ['before-filtering', 'before-populating-filter', 'before-page-change', 'before-clearing-filters', 'before-page-length-change', 'before-reset-page', 'before-reset-page-length', 'before-loading-extensions', 'before-loading-themes'];\n\n/**\r\n * Activity indicator\r\n *\r\n * @export\r\n * @class Loader\r\n * @extends {Feature}\r\n */\n\nvar Loader = exports.Loader = function (_Feature) {\n _inherits(Loader, _Feature);\n\n /**\r\n * Creates an instance of Loader.\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function Loader(tf) {\n _classCallCheck(this, Loader);\n\n var _this = _possibleConstructorReturn(this, (Loader.__proto__ || Object.getPrototypeOf(Loader)).call(this, tf, 'loader'));\n\n var f = _this.config.loader || {};\n\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\n _this.targetId = f.target_id || null;\n\n /**\r\n * Loader container DOM element\r\n * @type {DOMElement}\r\n */\n _this.cont = null;\n\n /**\r\n * Text displayed when indicator is visible\r\n * @type {String}\r\n */\n _this.text = f.text || 'Loading...';\n\n /**\r\n * Custom HTML injected in Loader's container element\r\n * @type {String}\r\n */\n _this.html = f.html || null;\n\n /**\r\n * Css class for Loader's container element\r\n * @type {String}\r\n */\n _this.cssClass = f.css_class || 'loader';\n\n /**\r\n * Close delay in milliseconds\r\n * @type {Number}\r\n */\n _this.closeDelay = 250;\n\n /**\r\n * Callback fired when loader is displayed\r\n * @type {Function}\r\n */\n _this.onShow = (0, _types.isFn)(f.on_show_loader) ? f.on_show_loader : _types.EMPTY_FN;\n\n /**\r\n * Callback fired when loader is closed\r\n * @type {Function}\r\n */\n _this.onHide = (0, _types.isFn)(f.on_hide_loader) ? f.on_hide_loader : _types.EMPTY_FN;\n return _this;\n }\n\n /**\r\n * Initializes Loader instance\r\n */\n\n\n _createClass(Loader, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n var emitter = this.emitter;\n\n var containerDiv = (0, _dom.createElm)('div');\n containerDiv.className = this.cssClass;\n\n var targetEl = !this.targetId ? tf.dom().parentNode : (0, _dom.elm)(this.targetId);\n if (!this.targetId) {\n targetEl.insertBefore(containerDiv, tf.dom());\n } else {\n targetEl.appendChild(containerDiv);\n }\n this.cont = containerDiv;\n if (!this.html) {\n this.cont.appendChild((0, _dom.createText)(this.text));\n } else {\n this.cont.innerHTML = this.html;\n }\n\n this.show(_const.NONE);\n\n // Subscribe to events\n emitter.on(EVENTS, function () {\n return _this2.show('');\n });\n emitter.on(EVENTS, function () {\n return _this2.show(_const.NONE);\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Shows or hides activity indicator\r\n * @param {String} Two possible values: '' or 'none'\r\n */\n\n }, {\n key: 'show',\n value: function show(p) {\n var _this3 = this;\n\n if (!this.isEnabled()) {\n return;\n }\n\n var displayLoader = function displayLoader() {\n if (!_this3.cont) {\n return;\n }\n if (p !== _const.NONE) {\n _this3.onShow(_this3);\n }\n _this3.cont.style.display = p;\n if (p === _const.NONE) {\n _this3.onHide(_this3);\n }\n };\n\n var t = p === _const.NONE ? this.closeDelay : 1;\n _root.root.setTimeout(displayLoader, t);\n }\n\n /**\r\n * Removes feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n\n var emitter = this.emitter;\n\n (0, _dom.removeElm)(this.cont);\n this.cont = null;\n\n // Unsubscribe to events\n emitter.off(EVENTS, function () {\n return _this4.show('');\n });\n emitter.off(EVENTS, function () {\n return _this4.show(_const.NONE);\n });\n\n this.initialized = false;\n }\n }]);\n\n return Loader;\n}(_feature.Feature);\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MarkActiveColumns = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Visual indicator for filtered columns\r\n * @export\r\n * @class MarkActiveColumns\r\n * @extends {Feature}\r\n */\nvar MarkActiveColumns = exports.MarkActiveColumns = function (_Feature) {\n _inherits(MarkActiveColumns, _Feature);\n\n /**\r\n * Create an instance of MarkActiveColumns\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function MarkActiveColumns(tf) {\n _classCallCheck(this, MarkActiveColumns);\n\n var _this = _possibleConstructorReturn(this, (MarkActiveColumns.__proto__ || Object.getPrototypeOf(MarkActiveColumns)).call(this, tf, 'markActiveColumns'));\n\n var config = _this.config.mark_active_columns || {};\n\n /**\r\n * Css class for filtered (active) columns\r\n * @type {String}\r\n */\n _this.headerCssClass = config.header_css_class || 'activeHeader';\n\n /**\r\n * Callback fired before a column is marked as filtered\r\n * @type {Function}\r\n */\n _this.onBeforeActiveColumn = (0, _types.isFn)(config.on_before_active_column) ? config.on_before_active_column : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a column is marked as filtered\r\n * @type {Function}\r\n */\n _this.onAfterActiveColumn = (0, _types.isFn)(config.on_after_active_column) ? config.on_after_active_column : _types.EMPTY_FN;\n return _this;\n }\n\n /**\r\n * Initialise MarkActiveColumns instance\r\n */\n\n\n _createClass(MarkActiveColumns, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n this.emitter.on(['before-filtering'], function () {\n return _this2.clearActiveColumns();\n });\n this.emitter.on(['cell-processed'], function (tf, colIndex) {\n return _this2.markActiveColumn(colIndex);\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Clear filtered columns visual indicator (background color)\r\n */\n\n }, {\n key: 'clearActiveColumns',\n value: function clearActiveColumns() {\n var tf = this.tf;\n var len = tf.getCellsNb();\n for (var i = 0; i < len; i++) {\n (0, _dom.removeClass)(tf.getHeaderElement(i), this.headerCssClass);\n }\n }\n\n /**\r\n * Mark currently filtered column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'markActiveColumn',\n value: function markActiveColumn(colIndex) {\n var header = this.tf.getHeaderElement(colIndex);\n if ((0, _dom.hasClass)(header, this.headerCssClass)) {\n return;\n }\n this.onBeforeActiveColumn(this, colIndex);\n\n (0, _dom.addClass)(header, this.headerCssClass);\n\n this.onAfterActiveColumn(this, colIndex);\n }\n\n /**\r\n * Remove feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n\n this.clearActiveColumns();\n this.emitter.off(['before-filtering'], function () {\n return _this3.clearActiveColumns();\n });\n this.emitter.off(['cell-processed'], function (tf, colIndex) {\n return _this3.markActiveColumn(colIndex);\n });\n\n /** @inherited */\n this.initialized = false;\n }\n }]);\n\n return MarkActiveColumns;\n}(_feature.Feature);\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NoResults = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\nvar NoResults = exports.NoResults = function (_Feature) {\n _inherits(NoResults, _Feature);\n\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function NoResults(tf) {\n _classCallCheck(this, NoResults);\n\n //configuration object\n var _this = _possibleConstructorReturn(this, (NoResults.__proto__ || Object.getPrototypeOf(NoResults)).call(this, tf, 'noResults'));\n\n var f = _this.config.no_results_message || {};\n\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\n _this.content = f.content || 'No results';\n\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\n _this.customContainer = f.custom_container || null;\n\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\n _this.customContainerId = f.custom_container_id || null;\n\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\n _this.isExternal = !(0, _types.isEmpty)(_this.customContainer) || !(0, _types.isEmpty)(_this.customContainerId);\n\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\n _this.cssClass = f.css_class || 'no-results';\n\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\n _this.cont = null;\n\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\n _this.onBeforeShow = (0, _types.isFn)(f.on_before_show_msg) ? f.on_before_show_msg : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\n _this.onAfterShow = (0, _types.isFn)(f.on_after_show_msg) ? f.on_after_show_msg : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\n _this.onBeforeHide = (0, _types.isFn)(f.on_before_hide_msg) ? f.on_before_hide_msg : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\n _this.onAfterHide = (0, _types.isFn)(f.on_after_hide_msg) ? f.on_after_hide_msg : _types.EMPTY_FN;\n return _this;\n }\n\n /**\r\n * Initializes NoResults instance\r\n */\n\n\n _createClass(NoResults, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n var tf = this.tf;\n var target = this.customContainer || (0, _dom.elm)(this.customContainerId) || tf.dom();\n\n //container\n var cont = (0, _dom.createElm)('div');\n cont.className = this.cssClass;\n cont.innerHTML = this.content;\n\n if (this.isExternal) {\n target.appendChild(cont);\n } else {\n target.parentNode.insertBefore(cont, target.nextSibling);\n }\n\n this.cont = cont;\n\n // subscribe to after-filtering event\n this.emitter.on(['after-filtering'], function () {\n return _this2.toggle();\n });\n\n /** @inherited */\n this.initialized = true;\n\n this.hide();\n }\n\n /**\r\n * Toggle no results message\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n if (this.tf.getValidRowsNb() > 0) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\r\n * Show no results message\r\n */\n\n }, {\n key: 'show',\n value: function show() {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n this.onBeforeShow(this.tf, this);\n\n this.setWidth();\n this.cont.style.display = 'block';\n\n this.onAfterShow(this.tf, this);\n }\n\n /**\r\n * Hide no results message\r\n */\n\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n this.onBeforeHide(this.tf, this);\n\n this.cont.style.display = _const.NONE;\n\n this.onAfterHide(this.tf, this);\n }\n\n /**\r\n * Sets no results container width\r\n * @private\r\n */\n\n }, {\n key: 'setWidth',\n value: function setWidth() {\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\n return;\n }\n var tf = this.tf;\n if (tf.gridLayout) {\n var gridLayout = tf.feature('gridLayout');\n this.cont.style.width = gridLayout.tblCont.clientWidth + 'px';\n } else {\n this.cont.style.width = (tf.dom().tHead ? tf.dom().tHead.clientWidth : tf.dom().tBodies[0].clientWidth) + 'px';\n }\n }\n\n /**\r\n * Remove feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n (0, _dom.removeElm)(this.cont);\n this.cont = null;\n // unsubscribe to after-filtering event\n this.emitter.off(['after-filtering'], function () {\n return _this3.toggle();\n });\n\n this.initialized = false;\n }\n }]);\n\n return NoResults;\n}(_feature.Feature);\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Paging = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _event = __webpack_require__(17);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\nvar Paging = exports.Paging = function (_Feature) {\n _inherits(Paging, _Feature);\n\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function Paging(tf) {\n _classCallCheck(this, Paging);\n\n // Configuration object\n var _this = _possibleConstructorReturn(this, (Paging.__proto__ || Object.getPrototypeOf(Paging)).call(this, tf, 'paging'));\n\n var f = _this.config.paging || {};\n\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\n _this.btnCssClass = f.btn_css_class || 'pgInp';\n\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\n _this.pageSlc = null;\n\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\n _this.pageLengthSlc = null;\n\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\n _this.tgtId = f.target_id || null;\n\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\n _this.pageLength = !isNaN(f.length) ? f.length : 10;\n\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\n _this.pageLengthTgtId = f.results_per_page_target_id || null;\n\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\n _this.pgSlcCssClass = f.slc_css_class || 'pgSlc';\n\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\n _this.pgInpCssClass = f.inp_css_class || 'pgNbInp';\n\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\n _this.resultsPerPage = f.results_per_page || null;\n\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\n _this.hasResultsPerPage = (0, _types.isArray)(_this.resultsPerPage);\n\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\n _this.resultsSlcCssClass = f.results_slc_css_class || 'rspg';\n\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\n _this.resultsSpanCssClass = f.results_span_css_class || 'rspgSpan';\n\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\n _this.startPagingRow = 0;\n\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\n _this.nbPages = 0;\n\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\n _this.currentPageNb = 1;\n\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\n _this.btnNextPageText = f.btn_next_page_text || '>';\n\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\n _this.btnPrevPageText = f.btn_prev_page_text || '<';\n\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\n _this.btnLastPageText = f.btn_last_page_text || '>|';\n\n /**\r\n * First page button text\r\n * @type {String}\r\n */\n _this.btnFirstPageText = f.btn_first_page_text || '|<';\n\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\n _this.btnNextPageHtml = f.btn_next_page_html || (!tf.enableIcons ? null : '');\n\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\n _this.btnPrevPageHtml = f.btn_prev_page_html || (!tf.enableIcons ? null : '');\n\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\n _this.btnFirstPageHtml = f.btn_first_page_html || (!tf.enableIcons ? null : '');\n\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\n _this.btnLastPageHtml = f.btn_last_page_html || (!tf.enableIcons ? null : '');\n\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\n _this.pageText = f.page_text || ' Page ';\n\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\n _this.ofText = f.of_text || ' of ';\n\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\n _this.nbPgSpanCssClass = f.nb_pages_css_class || 'nbpg';\n\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\n _this.hasBtns = f.btns === false ? false : true;\n\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\n _this.pageSelectorType = f.page_selector_type || _const.SELECT;\n\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\n _this.onBeforeChangePage = (0, _types.isFn)(f.on_before_change_page) ? f.on_before_change_page : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\n _this.onAfterChangePage = (0, _types.isFn)(f.on_after_change_page) ? f.on_after_change_page : _types.EMPTY_FN;\n\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.slcResultsTxt = null;\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.btnNextCont = null;\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.btnPrevCont = null;\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.btnLastCont = null;\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.btnFirstCont = null;\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.pgCont = null;\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.pgBefore = null;\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.pgAfter = null;\n\n var startRow = tf.refRow;\n var nrows = tf.getRowsNb(true);\n //calculates page nb\n _this.nbPages = Math.ceil((nrows - startRow) / _this.pageLength);\n\n var o = _this;\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\n _this.evt = {\n slcIndex: function slcIndex() {\n return o.pageSelectorType === _const.SELECT ? o.pageSlc.options.selectedIndex : parseInt(o.pageSlc.value, 10) - 1;\n },\n nbOpts: function nbOpts() {\n return o.pageSelectorType === _const.SELECT ? parseInt(o.pageSlc.options.length, 10) - 1 : o.nbPages - 1;\n },\n next: function next() {\n var nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ? o.evt.slcIndex() + 1 : 0;\n o.changePage(nextIndex);\n },\n prev: function prev() {\n var prevIndex = o.evt.slcIndex() > 0 ? o.evt.slcIndex() - 1 : o.evt.nbOpts();\n o.changePage(prevIndex);\n },\n last: function last() {\n o.changePage(o.evt.nbOpts());\n },\n first: function first() {\n o.changePage(0);\n },\n _detectKey: function _detectKey(e) {\n var key = (0, _event.keyCode)(e);\n if (key === _const.ENTER_KEY) {\n if (tf.sorted) {\n tf.filter();\n o.changePage(o.evt.slcIndex());\n } else {\n o.changePage();\n }\n this.blur();\n }\n },\n\n slcPagesChange: null,\n nextEvt: null,\n prevEvt: null,\n lastEvt: null,\n firstEvt: null\n };\n return _this;\n }\n\n /**\r\n * Initialize DOM elements\r\n */\n\n\n _createClass(Paging, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n var slcPages = void 0;\n var tf = this.tf;\n var evt = this.evt;\n\n if (this.initialized) {\n return;\n }\n\n // Check resultsPerPage is in expected format and initialise the\n // results per page component\n if (this.hasResultsPerPage) {\n if (this.resultsPerPage.length < 2) {\n this.hasResultsPerPage = false;\n } else {\n this.pageLength = this.resultsPerPage[1][0];\n this.setResultsPerPage();\n }\n }\n\n evt.slcPagesChange = function (event) {\n var slc = event.target;\n _this2.changePage(slc.selectedIndex);\n };\n\n // Paging drop-down list selector\n if (this.pageSelectorType === _const.SELECT) {\n slcPages = (0, _dom.createElm)(_const.SELECT);\n slcPages.className = this.pgSlcCssClass;\n (0, _event.addEvt)(slcPages, 'change', evt.slcPagesChange);\n }\n\n // Paging input selector\n if (this.pageSelectorType === _const.INPUT) {\n slcPages = (0, _dom.createElm)(_const.INPUT, ['value', this.currentPageNb]);\n slcPages.className = this.pgInpCssClass;\n (0, _event.addEvt)(slcPages, 'keypress', evt._detectKey);\n }\n\n // btns containers\n var btnNextSpan = (0, _dom.createElm)('span');\n var btnPrevSpan = (0, _dom.createElm)('span');\n var btnLastSpan = (0, _dom.createElm)('span');\n var btnFirstSpan = (0, _dom.createElm)('span');\n\n if (this.hasBtns) {\n // Next button\n if (!this.btnNextPageHtml) {\n var btnNext = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnNextPageText], ['title', 'Next']);\n btnNext.className = this.btnCssClass;\n (0, _event.addEvt)(btnNext, 'click', evt.next);\n btnNextSpan.appendChild(btnNext);\n } else {\n btnNextSpan.innerHTML = this.btnNextPageHtml;\n (0, _event.addEvt)(btnNextSpan, 'click', evt.next);\n }\n // Previous button\n if (!this.btnPrevPageHtml) {\n var btnPrev = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnPrevPageText], ['title', 'Previous']);\n btnPrev.className = this.btnCssClass;\n (0, _event.addEvt)(btnPrev, 'click', evt.prev);\n btnPrevSpan.appendChild(btnPrev);\n } else {\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\n (0, _event.addEvt)(btnPrevSpan, 'click', evt.prev);\n }\n // Last button\n if (!this.btnLastPageHtml) {\n var btnLast = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnLastPageText], ['title', 'Last']);\n btnLast.className = this.btnCssClass;\n (0, _event.addEvt)(btnLast, 'click', evt.last);\n btnLastSpan.appendChild(btnLast);\n } else {\n btnLastSpan.innerHTML = this.btnLastPageHtml;\n (0, _event.addEvt)(btnLastSpan, 'click', evt.last);\n }\n // First button\n if (!this.btnFirstPageHtml) {\n var btnFirst = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnFirstPageText], ['title', 'First']);\n btnFirst.className = this.btnCssClass;\n (0, _event.addEvt)(btnFirst, 'click', evt.first);\n btnFirstSpan.appendChild(btnFirst);\n } else {\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\n (0, _event.addEvt)(btnFirstSpan, 'click', evt.first);\n }\n }\n\n // paging elements (buttons+drop-down list) are added to defined element\n if (!this.tgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.tgtId ? tf.mDiv : (0, _dom.elm)(this.tgtId);\n targetEl.appendChild(btnFirstSpan);\n targetEl.appendChild(btnPrevSpan);\n\n var pgBeforeSpan = (0, _dom.createElm)('span');\n pgBeforeSpan.appendChild((0, _dom.createText)(this.pageText));\n pgBeforeSpan.className = this.nbPgSpanCssClass;\n targetEl.appendChild(pgBeforeSpan);\n targetEl.appendChild(slcPages);\n var pgAfterSpan = (0, _dom.createElm)('span');\n pgAfterSpan.appendChild((0, _dom.createText)(this.ofText));\n pgAfterSpan.className = this.nbPgSpanCssClass;\n targetEl.appendChild(pgAfterSpan);\n var pgSpan = (0, _dom.createElm)('span');\n pgSpan.className = this.nbPgSpanCssClass;\n pgSpan.appendChild((0, _dom.createText)(' ' + this.nbPages + ' '));\n targetEl.appendChild(pgSpan);\n targetEl.appendChild(btnNextSpan);\n targetEl.appendChild(btnLastSpan);\n\n this.btnNextCont = btnNextSpan;\n this.btnPrevCont = btnPrevSpan;\n this.btnLastCont = btnLastSpan;\n this.btnFirstCont = btnFirstSpan;\n this.pgCont = pgSpan;\n this.pgBefore = pgBeforeSpan;\n this.pgAfter = pgAfterSpan;\n this.pageSlc = slcPages;\n\n this.setPagingInfo();\n\n if (!tf.fltGrid) {\n tf.validateAllRows();\n this.setPagingInfo(tf.validRowsIndex);\n }\n\n this.emitter.on(['after-filtering'], function () {\n return _this2.resetPagingInfo();\n });\n this.emitter.on(['change-page'], function (tf, pageNumber) {\n return _this2.setPage(pageNumber);\n });\n this.emitter.on(['change-page-results'], function (tf, pageLength) {\n return _this2.changeResultsPerPage(pageLength);\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n var filterTable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this.enable();\n this.init();\n\n if (filterTable) {\n this.tf.filter();\n }\n }\n\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\n\n }, {\n key: 'resetPagingInfo',\n value: function resetPagingInfo() {\n this.startPagingRow = 0;\n this.currentPageNb = 1;\n this.setPagingInfo(this.tf.validRowsIndex);\n }\n\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\n\n }, {\n key: 'setPagingInfo',\n value: function setPagingInfo(validRows) {\n var tf = this.tf;\n var mdiv = !this.tgtId ? tf.mDiv : (0, _dom.elm)(this.tgtId);\n\n //store valid rows indexes\n tf.validRowsIndex = validRows || tf.getValidRows(true);\n\n //calculate nb of pages\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\n //refresh page nb span\n this.pgCont.innerHTML = this.nbPages;\n //select clearing shortcut\n if (this.pageSelectorType === _const.SELECT) {\n this.pageSlc.innerHTML = '';\n }\n\n if (this.nbPages > 0) {\n mdiv.style.visibility = 'visible';\n if (this.pageSelectorType === _const.SELECT) {\n for (var z = 0; z < this.nbPages; z++) {\n var opt = (0, _dom.createOpt)(z + 1, z * this.pageLength, false);\n this.pageSlc.options[z] = opt;\n }\n } else {\n //input type\n this.pageSlc.value = this.currentPageNb;\n }\n } else {\n /*** if no results paging select and buttons are hidden ***/\n mdiv.style.visibility = 'hidden';\n }\n this.groupByPage(tf.validRowsIndex);\n }\n\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\n\n }, {\n key: 'groupByPage',\n value: function groupByPage(validRows) {\n var tf = this.tf;\n var rows = tf.dom().rows;\n var startPagingRow = parseInt(this.startPagingRow, 10);\n var endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\n\n //store valid rows indexes\n if (validRows) {\n tf.validRowsIndex = validRows;\n }\n\n //this loop shows valid rows of current page\n for (var h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\n var validRowIdx = tf.validRowsIndex[h];\n var r = rows[validRowIdx];\n var isRowValid = r.getAttribute('validRow');\n var rowDisplayed = false;\n\n if (h >= startPagingRow && h < endPagingRow) {\n if ((0, _types.isNull)(isRowValid) || Boolean(isRowValid === 'true')) {\n r.style.display = '';\n rowDisplayed = true;\n }\n } else {\n r.style.display = _const.NONE;\n }\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\n }\n\n // broadcast grouping by page\n this.emitter.emit('grouped-by-page', tf, this);\n }\n\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\n\n }, {\n key: 'getPage',\n value: function getPage() {\n return this.currentPageNb;\n }\n\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\n\n }, {\n key: 'setPage',\n value: function setPage(cmd) {\n var tf = this.tf;\n if (!tf.isInitialized() || !this.isEnabled()) {\n return;\n }\n var btnEvt = this.evt,\n cmdtype = typeof cmd === 'undefined' ? 'undefined' : _typeof(cmd);\n if (cmdtype === 'string') {\n switch (cmd.toLowerCase()) {\n case 'next':\n btnEvt.next();\n break;\n case 'previous':\n btnEvt.prev();\n break;\n case 'last':\n btnEvt.last();\n break;\n case 'first':\n btnEvt.first();\n break;\n default:\n btnEvt.next();\n break;\n }\n } else if (cmdtype === 'number') {\n this.changePage(cmd - 1);\n }\n }\n\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\n\n }, {\n key: 'setResultsPerPage',\n value: function setResultsPerPage() {\n var _this3 = this;\n\n var tf = this.tf;\n var evt = this.evt;\n\n if (this.pageLengthSlc || !this.resultsPerPage) {\n return;\n }\n\n evt.slcResultsChange = function (ev) {\n _this3.onChangeResultsPerPage();\n ev.target.blur();\n };\n\n var slcR = (0, _dom.createElm)(_const.SELECT);\n slcR.className = this.resultsSlcCssClass;\n var slcRText = this.resultsPerPage[0],\n slcROpts = this.resultsPerPage[1];\n var slcRSpan = (0, _dom.createElm)('span');\n slcRSpan.className = this.resultsSpanCssClass;\n\n // results per page select is added to external element\n if (!this.pageLengthTgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.pageLengthTgtId ? tf.rDiv : (0, _dom.elm)(this.pageLengthTgtId);\n slcRSpan.appendChild((0, _dom.createText)(slcRText));\n\n var help = tf.feature('help');\n if (help && help.btn) {\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\n help.btn.parentNode.insertBefore(slcR, help.btn);\n } else {\n targetEl.appendChild(slcRSpan);\n targetEl.appendChild(slcR);\n }\n\n for (var r = 0; r < slcROpts.length; r++) {\n var currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\n slcR.options[r] = currOpt;\n }\n (0, _event.addEvt)(slcR, 'change', evt.slcResultsChange);\n this.slcResultsTxt = slcRSpan;\n this.pageLengthSlc = slcR;\n }\n\n /**\r\n * Remove number of results per page UI elements\r\n */\n\n }, {\n key: 'removeResultsPerPage',\n value: function removeResultsPerPage() {\n var tf = this.tf;\n if (!tf.isInitialized() || !this.pageLengthSlc || !this.resultsPerPage) {\n return;\n }\n if (this.pageLengthSlc) {\n (0, _dom.removeElm)(this.pageLengthSlc);\n }\n if (this.slcResultsTxt) {\n (0, _dom.removeElm)(this.slcResultsTxt);\n }\n this.pageLengthSlc = null;\n this.slcResultsTxt = null;\n }\n\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\n\n }, {\n key: 'changePage',\n value: function changePage(index) {\n var tf = this.tf;\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.emitter.emit('before-page-change', tf, index + 1);\n\n if (index === null) {\n index = this.pageSelectorType === _const.SELECT ? this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\n }\n if (index >= 0 && index <= this.nbPages - 1) {\n this.onBeforeChangePage(this, index + 1);\n\n this.currentPageNb = parseInt(index, 10) + 1;\n if (this.pageSelectorType === _const.SELECT) {\n this.pageSlc.options[index].selected = true;\n } else {\n this.pageSlc.value = this.currentPageNb;\n }\n\n this.startPagingRow = this.pageSelectorType === _const.SELECT ? this.pageSlc.value : index * this.pageLength;\n\n this.groupByPage();\n\n this.onAfterChangePage(this, index + 1);\n }\n\n this.emitter.emit('after-page-change', tf, index + 1);\n }\n\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\n\n }, {\n key: 'changeResultsPerPage',\n value: function changeResultsPerPage(val) {\n if (!this.isEnabled() || isNaN(val)) {\n return;\n }\n\n this.pageLengthSlc.value = val;\n this.onChangeResultsPerPage();\n }\n\n /**\r\n * Change rows according to page results drop-down\r\n */\n\n }, {\n key: 'onChangeResultsPerPage',\n value: function onChangeResultsPerPage() {\n var tf = this.tf;\n\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\n return;\n }\n\n var slcR = this.pageLengthSlc,\n pageSelectorType = this.pageSelectorType,\n pageSlc = this.pageSlc,\n emitter = this.emitter;\n\n\n emitter.emit('before-page-length-change', tf);\n\n var slcIndex = slcR.selectedIndex;\n var slcPagesSelIndex = pageSelectorType === _const.SELECT ? pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\n\n if (!isNaN(this.pageLength)) {\n if (this.startPagingRow >= tf.nbFilterableRows) {\n this.startPagingRow = tf.nbFilterableRows - this.pageLength;\n }\n this.setPagingInfo();\n\n if (pageSelectorType === _const.SELECT) {\n var slcIdx = pageSlc.options.length - 1 <= slcPagesSelIndex ? pageSlc.options.length - 1 : slcPagesSelIndex;\n pageSlc.options[slcIdx].selected = true;\n }\n }\n\n emitter.emit('after-page-length-change', tf, this.pageLength);\n }\n\n /**\r\n * Re-set page nb at page re-load\r\n */\n\n }, {\n key: 'resetPage',\n value: function resetPage() {\n var tf = this.tf;\n if (!this.isEnabled()) {\n return;\n }\n this.emitter.emit('before-reset-page', tf);\n var pgNb = tf.feature('store').getPageNb();\n if (pgNb !== '') {\n this.changePage(pgNb - 1);\n }\n this.emitter.emit('after-reset-page', tf, pgNb);\n }\n\n /**\r\n * Re-set page length value at page re-load\r\n */\n\n }, {\n key: 'resetPageLength',\n value: function resetPageLength() {\n var tf = this.tf;\n if (!this.isEnabled()) {\n return;\n }\n this.emitter.emit('before-reset-page-length', tf);\n var pglenIndex = tf.feature('store').getPageLength();\n\n if (pglenIndex !== '') {\n this.pageLengthSlc.options[pglenIndex].selected = true;\n this.changeResultsPerPage();\n }\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\n }\n\n /**\r\n * Remove paging feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n\n var evt = this.evt;\n\n if (this.pageSlc) {\n if (this.pageSelectorType === _const.SELECT) {\n (0, _event.removeEvt)(this.pageSlc, 'change', evt.slcPagesChange);\n } else if (this.pageSelectorType === _const.INPUT) {\n (0, _event.removeEvt)(this.pageSlc, 'keypress', evt._detectKey);\n }\n (0, _dom.removeElm)(this.pageSlc);\n }\n\n if (this.btnNextCont) {\n (0, _event.removeEvt)(this.btnNextCont, 'click', evt.next);\n (0, _dom.removeElm)(this.btnNextCont);\n this.btnNextCont = null;\n }\n\n if (this.btnPrevCont) {\n (0, _event.removeEvt)(this.btnPrevCont, 'click', evt.prev);\n (0, _dom.removeElm)(this.btnPrevCont);\n this.btnPrevCont = null;\n }\n\n if (this.btnLastCont) {\n (0, _event.removeEvt)(this.btnLastCont, 'click', evt.last);\n (0, _dom.removeElm)(this.btnLastCont);\n this.btnLastCont = null;\n }\n\n if (this.btnFirstCont) {\n (0, _event.removeEvt)(this.btnFirstCont, 'click', evt.first);\n (0, _dom.removeElm)(this.btnFirstCont);\n this.btnFirstCont = null;\n }\n\n if (this.pgBefore) {\n (0, _dom.removeElm)(this.pgBefore);\n this.pgBefore = null;\n }\n\n if (this.pgAfter) {\n (0, _dom.removeElm)(this.pgAfter);\n this.pgAfter = null;\n }\n\n if (this.pgCont) {\n (0, _dom.removeElm)(this.pgCont);\n this.pgCont = null;\n }\n\n if (this.hasResultsPerPage) {\n this.removeResultsPerPage();\n }\n\n this.emitter.off(['after-filtering'], function () {\n return _this4.resetPagingInfo();\n });\n this.emitter.off(['change-page'], function (tf, pageNumber) {\n return _this4.setPage(pageNumber);\n });\n this.emitter.off(['change-page-results'], function (tf, pageLength) {\n return _this4.changeResultsPerPage(pageLength);\n });\n\n this.pageSlc = null;\n this.nbPages = 0;\n\n this.initialized = false;\n }\n }]);\n\n return Paging;\n}(_feature.Feature);\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PopupFilter = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _types = __webpack_require__(6);\n\nvar _dom = __webpack_require__(9);\n\nvar _event = __webpack_require__(17);\n\nvar _const = __webpack_require__(14);\n\nvar _root = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Pop-up filter component\r\n * @export\r\n * @class PopupFilter\r\n * @extends {Feature}\r\n */\nvar PopupFilter = exports.PopupFilter = function (_Feature) {\n _inherits(PopupFilter, _Feature);\n\n /**\r\n * Creates an instance of PopupFilter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function PopupFilter(tf) {\n _classCallCheck(this, PopupFilter);\n\n // Configuration object\n var _this = _possibleConstructorReturn(this, (PopupFilter.__proto__ || Object.getPrototypeOf(PopupFilter)).call(this, tf, 'popupFilters'));\n\n var f = _this.config.popup_filters || {};\n\n // Enable external filters\n tf.isExternalFlt = true;\n tf.externalFltTgtIds = [];\n\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\n _this.closeOnFiltering = f.close_on_filtering === false ? false : true;\n\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\n _this.iconPath = f.image || tf.themesPath + 'icn_filter.gif';\n\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\n _this.activeIconPath = f.image_active || tf.themesPath + 'icn_filterActive.gif';\n\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\n _this.iconHtml = f.image_html || '\"Column';\n\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\n _this.placeholderCssClass = f.placeholder_css_class || 'popUpPlaceholder';\n\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\n _this.containerCssClass = f.div_css_class || 'popUpFilter';\n\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\n _this.adjustToContainer = f.adjust_to_container === false ? false : true;\n\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\n _this.onBeforeOpen = (0, _types.isFn)(f.on_before_popup_filter_open) ? f.on_before_popup_filter_open : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\n _this.onAfterOpen = (0, _types.isFn)(f.on_after_popup_filter_open) ? f.on_after_popup_filter_open : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\n _this.onBeforeClose = (0, _types.isFn)(f.on_before_popup_filter_close) ? f.on_before_popup_filter_close : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\n _this.onAfterClose = (0, _types.isFn)(f.on_after_popup_filter_close) ? f.on_after_popup_filter_close : _types.EMPTY_FN;\n\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\n _this.fltSpans = [];\n\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\n _this.fltIcons = [];\n\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\n _this.filtersCache = null;\n\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\n _this.fltElms = _this.filtersCache || [];\n\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\n _this.prfxDiv = 'popup_';\n\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\n _this.activeFilterIdx = -1;\n return _this;\n }\n\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\n\n\n _createClass(PopupFilter, [{\n key: 'onClick',\n value: function onClick(evt) {\n var elm = (0, _event.targetEvt)(evt).parentNode;\n var colIndex = parseInt(elm.getAttribute('ci'), 10);\n\n this.closeAll(colIndex);\n this.toggle(colIndex);\n\n if (this.adjustToContainer) {\n var cont = this.fltElms[colIndex],\n header = this.tf.getHeaderElement(colIndex),\n headerWidth = header.clientWidth * 0.95;\n cont.style.width = parseInt(headerWidth, 10) + 'px';\n }\n (0, _event.cancelEvt)(evt);\n (0, _event.stopEvt)(evt);\n }\n\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\n\n }, {\n key: 'onMouseup',\n value: function onMouseup(evt) {\n if (this.activeFilterIdx === -1) {\n return;\n }\n var targetElm = (0, _event.targetEvt)(evt);\n var activeFlt = this.fltElms[this.activeFilterIdx];\n var icon = this.fltIcons[this.activeFilterIdx];\n\n if (icon === targetElm) {\n return;\n }\n\n while (targetElm && targetElm !== activeFlt) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== activeFlt) {\n this.close(this.activeFilterIdx);\n }\n\n return;\n }\n\n /**\r\n * Initialize DOM elements\r\n */\n\n }, {\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n\n // Override headers row index if no grouped headers\n // TODO: Because of the filters row generation, headers row index needs\n // adjusting: prevent useless row generation\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\n tf.headersRow = 0;\n }\n\n // Adjust headers row index for grid-layout mode\n // TODO: Because of the filters row generation, headers row index needs\n // adjusting: prevent useless row generation\n if (tf.gridLayout) {\n tf.headersRow--;\n this.buildIcons();\n }\n\n // subscribe to events\n this.emitter.on(['before-filtering'], function () {\n return _this2.setIconsState();\n });\n this.emitter.on(['after-filtering'], function () {\n return _this2.closeAll();\n });\n this.emitter.on(['cell-processed'], function (tf, cellIndex) {\n return _this2.changeState(cellIndex, true);\n });\n this.emitter.on(['filters-row-inserted'], function () {\n return _this2.buildIcons();\n });\n this.emitter.on(['before-filter-init'], function (tf, colIndex) {\n return _this2.build(colIndex);\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Reset previously destroyed feature\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n this.enable();\n this.init();\n this.buildIcons();\n this.buildAll();\n }\n\n /**\r\n * Build all filters icons\r\n */\n\n }, {\n key: 'buildIcons',\n value: function buildIcons() {\n var _this3 = this;\n\n var tf = this.tf;\n\n // TODO: Because of the filters row generation, headers row index needs\n // adjusting: prevent useless row generation\n tf.headersRow++;\n\n for (var i = 0; i < tf.nbCells; i++) {\n if (tf.getFilterType(i) === _const.NONE) {\n continue;\n }\n var icon = (0, _dom.createElm)('span', ['ci', i]);\n icon.innerHTML = this.iconHtml;\n var header = tf.getHeaderElement(i);\n header.appendChild(icon);\n (0, _event.addEvt)(icon, 'click', function (evt) {\n return _this3.onClick(evt);\n });\n this.fltSpans[i] = icon;\n this.fltIcons[i] = icon.firstChild;\n }\n }\n\n /**\r\n * Build all pop-up filters elements\r\n */\n\n }, {\n key: 'buildAll',\n value: function buildAll() {\n for (var i = 0; i < this.filtersCache.length; i++) {\n this.build(i, this.filtersCache[i]);\n }\n }\n\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\n\n }, {\n key: 'build',\n value: function build(colIndex, div) {\n var tf = this.tf;\n var contId = '' + this.prfxDiv + tf.id + '_' + colIndex;\n var placeholder = (0, _dom.createElm)('div', ['class', this.placeholderCssClass]);\n var cont = div || (0, _dom.createElm)('div', ['id', contId], ['class', this.containerCssClass]);\n tf.externalFltTgtIds.push(cont.id);\n placeholder.appendChild(cont);\n\n var header = tf.getHeaderElement(colIndex);\n header.insertBefore(placeholder, header.firstChild);\n (0, _event.addEvt)(cont, 'click', function (evt) {\n return (0, _event.stopEvt)(evt);\n });\n this.fltElms[colIndex] = cont;\n }\n\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle(colIndex) {\n if (!this.isOpen(colIndex)) {\n this.open(colIndex);\n } else {\n this.close(colIndex);\n }\n }\n\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'open',\n value: function open(colIndex) {\n var _this4 = this;\n\n var tf = this.tf,\n container = this.fltElms[colIndex];\n\n this.onBeforeOpen(this, container, colIndex);\n\n container.style.display = 'block';\n this.activeFilterIdx = colIndex;\n (0, _event.addEvt)(_root.root, 'mouseup', function (evt) {\n return _this4.onMouseup(evt);\n });\n\n if (tf.getFilterType(colIndex) === _const.INPUT) {\n var flt = tf.getFilterElement(colIndex);\n if (flt) {\n flt.focus();\n }\n }\n\n this.onAfterOpen(this, container, colIndex);\n }\n\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'close',\n value: function close(colIndex) {\n var _this5 = this;\n\n var container = this.fltElms[colIndex];\n\n this.onBeforeClose(this, container, colIndex);\n\n container.style.display = _const.NONE;\n if (this.activeFilterIdx === colIndex) {\n this.activeFilterIdx = -1;\n }\n (0, _event.removeEvt)(_root.root, 'mouseup', function (evt) {\n return _this5.onMouseup(evt);\n });\n\n this.onAfterClose(this, container, colIndex);\n }\n\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\n\n }, {\n key: 'isOpen',\n value: function isOpen(colIndex) {\n return this.fltElms[colIndex].style.display === 'block';\n }\n\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\n\n }, {\n key: 'closeAll',\n value: function closeAll(exceptIdx) {\n // Do not close filters only if argument is undefined and close on\n // filtering option is disabled\n if ((0, _types.isUndef)(exceptIdx) && !this.closeOnFiltering) {\n return;\n }\n for (var i = 0; i < this.fltElms.length; i++) {\n if (i === exceptIdx) {\n continue;\n }\n var fltType = this.tf.getFilterType(i);\n var isMultipleFilter = fltType === _const.CHECKLIST || fltType === _const.MULTIPLE;\n\n // Always hide all single selection filter types but hide multiple\n // selection filter types only if index set\n if (!isMultipleFilter || !(0, _types.isUndef)(exceptIdx)) {\n this.close(i);\n }\n }\n }\n\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\n\n }, {\n key: 'setIconsState',\n value: function setIconsState() {\n for (var i = 0; i < this.fltIcons.length; i++) {\n this.changeState(i, false);\n }\n }\n\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\n\n }, {\n key: 'changeState',\n value: function changeState(colIndex, active) {\n var icon = this.fltIcons[colIndex];\n if (icon) {\n icon.src = active ? this.activeIconPath : this.iconPath;\n }\n }\n\n /**\r\n * Remove pop-up filters\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this6 = this;\n\n if (!this.initialized) {\n return;\n }\n\n this.filtersCache = [];\n for (var i = 0; i < this.fltElms.length; i++) {\n var container = this.fltElms[i],\n placeholder = container.parentNode,\n icon = this.fltSpans[i],\n iconImg = this.fltIcons[i];\n if (container) {\n (0, _dom.removeElm)(container);\n this.filtersCache[i] = container;\n }\n container = null;\n if (placeholder) {\n (0, _dom.removeElm)(placeholder);\n }\n placeholder = null;\n if (icon) {\n (0, _dom.removeElm)(icon);\n }\n icon = null;\n if (iconImg) {\n (0, _dom.removeElm)(iconImg);\n }\n iconImg = null;\n }\n this.fltElms = [];\n this.fltSpans = [];\n this.fltIcons = [];\n\n // TODO: expose an API to handle external filter IDs\n this.tf.externalFltTgtIds = [];\n\n // unsubscribe to events\n this.emitter.off(['before-filtering'], function () {\n return _this6.setIconsState();\n });\n this.emitter.off(['after-filtering'], function () {\n return _this6.closeAll();\n });\n this.emitter.off(['cell-processed'], function (tf, cellIndex) {\n return _this6.changeState(cellIndex, true);\n });\n this.emitter.off(['filters-row-inserted'], function () {\n return _this6.buildIcons();\n });\n this.emitter.off(['before-filter-init'], function (tf, colIndex) {\n return _this6.build(colIndex);\n });\n\n this.initialized = false;\n }\n }]);\n\n return PopupFilter;\n}(_feature.Feature);\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RowsCounter = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Rows counter UI component\r\n * @export\r\n * @class RowsCounter\r\n * @extends {Feature}\r\n */\nvar RowsCounter = exports.RowsCounter = function (_Feature) {\n _inherits(RowsCounter, _Feature);\n\n /**\r\n * Creates an instance of RowsCounter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function RowsCounter(tf) {\n _classCallCheck(this, RowsCounter);\n\n // TableFilter configuration\n var _this = _possibleConstructorReturn(this, (RowsCounter.__proto__ || Object.getPrototypeOf(RowsCounter)).call(this, tf, 'rowsCounter'));\n\n var f = _this.config.rows_counter || {};\n\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\n _this.targetId = f.target_id || null;\n\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.container = null;\n\n /**\r\n * Container DOM element for label displaying the total number of rows\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.label = null;\n\n /**\r\n * Text preceding the total number of rows\r\n * @type {String}\r\n */\n _this.text = f.text || 'Rows: ';\n\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page when paging is enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\n _this.fromToTextSeparator = f.separator || '-';\n\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page and the total number of filterable rows when paging is\r\n * enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\n _this.overText = f.over_text || ' / ';\n\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\n _this.cssClass = f.css_class || 'tot';\n\n /**\r\n * Callback fired before the counter is refreshed\r\n * @type {Function}\r\n */\n _this.onBeforeRefreshCounter = (0, _types.isFn)(f.on_before_refresh_counter) ? f.on_before_refresh_counter : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the counter is refreshed\r\n * @type {Function}\r\n */\n _this.onAfterRefreshCounter = (0, _types.isFn)(f.on_after_refresh_counter) ? f.on_after_refresh_counter : _types.EMPTY_FN;\n return _this;\n }\n\n /**\r\n * Initializes RowsCounter instance\r\n */\n\n\n _createClass(RowsCounter, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n\n //rows counter container\n var countDiv = (0, _dom.createElm)('div');\n countDiv.className = this.cssClass;\n //rows counter label\n var countSpan = (0, _dom.createElm)('span');\n var countText = (0, _dom.createElm)('span');\n countText.appendChild((0, _dom.createText)(this.text));\n\n // counter is added to defined element\n if (!this.targetId) {\n tf.setToolbar();\n }\n var targetEl = !this.targetId ? tf.lDiv : (0, _dom.elm)(this.targetId);\n\n //default container: 'lDiv'\n if (!this.targetId) {\n countDiv.appendChild(countText);\n countDiv.appendChild(countSpan);\n targetEl.appendChild(countDiv);\n } else {\n //custom container, no need to append statusDiv\n targetEl.appendChild(countText);\n targetEl.appendChild(countSpan);\n }\n this.container = countDiv;\n this.label = countSpan;\n\n // subscribe to events\n this.emitter.on(['after-filtering', 'grouped-by-page'], function () {\n return _this2.refresh(tf.getValidRowsNb());\n });\n this.emitter.on(['rows-changed'], function () {\n return _this2.refresh();\n });\n\n /** @inherited */\n this.initialized = true;\n this.refresh();\n }\n\n /**\r\n * Refreshes the rows counter\r\n * @param {Number} p Optional parameter the total number of rows to display\r\n */\n\n }, {\n key: 'refresh',\n value: function refresh(p) {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n\n var tf = this.tf;\n\n this.onBeforeRefreshCounter(tf, this.label);\n\n var totTxt = void 0;\n if (!tf.paging) {\n if (p && p !== '') {\n totTxt = p;\n } else {\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\n }\n } else {\n var paging = tf.feature('paging');\n if (paging) {\n var nbValidRows = tf.getValidRowsNb();\n //paging start row\n var pagingStartRow = parseInt(paging.startPagingRow, 10) + (nbValidRows > 0 ? 1 : 0);\n var pagingEndRow = pagingStartRow + paging.pageLength - 1 <= nbValidRows ? pagingStartRow + paging.pageLength - 1 : nbValidRows;\n totTxt = pagingStartRow + this.fromToTextSeparator + pagingEndRow + this.overText + nbValidRows;\n }\n }\n\n this.label.innerHTML = totTxt;\n this.onAfterRefreshCounter(tf, this.label, totTxt);\n }\n\n /**\r\n * Remove feature\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n\n if (!this.targetId && this.container) {\n (0, _dom.removeElm)(this.container);\n } else {\n (0, _dom.elm)(this.targetId).innerHTML = '';\n }\n this.label = null;\n this.container = null;\n\n // unsubscribe to events\n this.emitter.off(['after-filtering', 'grouped-by-page'], function () {\n return _this3.refresh(tf.getValidRowsNb());\n });\n this.emitter.off(['rows-changed'], function () {\n return _this3.refresh();\n });\n\n this.initialized = false;\n }\n }]);\n\n return RowsCounter;\n}(_feature.Feature);\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.State = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _hash = __webpack_require__(114);\n\nvar _storage = __webpack_require__(125);\n\nvar _string = __webpack_require__(19);\n\nvar _types = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Features state object persistable with localStorage, cookie or URL hash\n *\n * @export\n * @class State\n * @extends {Feature}\n */\nvar State = exports.State = function (_Feature) {\n _inherits(State, _Feature);\n\n /**\n * Creates an instance of State\n * @param {TableFilter} tf TableFilter instance\n */\n function State(tf) {\n _classCallCheck(this, State);\n\n var _this = _possibleConstructorReturn(this, (State.__proto__ || Object.getPrototypeOf(State)).call(this, tf, 'state'));\n\n var cfg = _this.config.state;\n\n /**\n * Determines whether state is persisted with URL hash\n * @type {Boolean}\n */\n _this.enableHash = cfg === true || (0, _types.isArray)(cfg.types) && cfg.types.indexOf('hash') !== -1;\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n _this.enableLocalStorage = (0, _types.isArray)(cfg.types) && cfg.types.indexOf('local_storage') !== -1;\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n _this.enableCookie = (0, _types.isArray)(cfg.types) && cfg.types.indexOf('cookie') !== -1;\n\n /**\n * Persist filters values, enabled by default\n * @type {Boolean}\n */\n _this.persistFilters = cfg.filters === false ? false : true;\n\n /**\n * Persist current page number when paging is enabled\n * @type {Boolean}\n */\n _this.persistPageNumber = Boolean(cfg.page_number);\n\n /**\n * Persist page length when paging is enabled\n * @type {Boolean}\n */\n _this.persistPageLength = Boolean(cfg.page_length);\n\n /**\n * Persist column sorting\n * @type {Boolean}\n */\n _this.persistSort = Boolean(cfg.sort);\n\n /**\n * Persist columns visibility\n * @type {Boolean}\n */\n _this.persistColsVisibility = Boolean(cfg.columns_visibility);\n\n /**\n * Persist filters row visibility\n * @type {Boolean}\n */\n _this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\n\n /**\n * Cookie duration in hours\n * @type {Boolean}\n */\n _this.cookieDuration = !isNaN(cfg.cookie_duration) ? parseInt(cfg.cookie_duration, 10) : 87600;\n\n /**\n * Enable Storage if localStorage or cookie is required\n * @type {Boolean}\n * @private\n */\n _this.enableStorage = _this.enableLocalStorage || _this.enableCookie;\n\n /**\n * Storage instance if storage is required\n * @type {Storage}\n * @private\n */\n _this.storage = null;\n\n /**\n * Hash instance if URL hash is required\n * @type {Boolean}\n * @private\n */\n _this.hash = null;\n\n /**\n * Current page number\n * @type {Number}\n * @private\n */\n _this.pageNb = null;\n\n /**\n * Current page length\n * @type {Number}\n * @private\n */\n _this.pageLength = null;\n\n /**\n * Current column sorting\n * @type {Object}\n * @private\n */\n _this.sort = null;\n\n /**\n * Current hidden columns\n * @type {Object}\n * @private\n */\n _this.hiddenCols = null;\n\n /**\n * Filters row visibility\n * @type {Boolean}\n * @private\n */\n _this.filtersVisibility = null;\n\n /**\n * State object\n * @type {Object}\n * @private\n */\n _this.state = {};\n\n /**\n * Prefix for column ID\n * @type {String}\n * @private\n */\n _this.prfxCol = 'col_';\n\n /**\n * Prefix for page number ID\n * @type {String}\n * @private\n */\n _this.pageNbKey = 'page';\n\n /**\n * Prefix for page length ID\n * @type {String}\n * @private\n */\n _this.pageLengthKey = 'page_length';\n\n /**\n * Prefix for filters visibility ID\n * @type {String}\n * @private\n */\n _this.filtersVisKey = 'filters_visibility';\n return _this;\n }\n\n /**\n * Initializes State instance\n */\n\n\n _createClass(State, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n this.emitter.on(['after-filtering'], function () {\n return _this2.update();\n });\n this.emitter.on(['after-page-change', 'after-clearing-filters'], function (tf, pageNb) {\n return _this2.updatePage(pageNb);\n });\n this.emitter.on(['after-page-length-change'], function (tf, pageLength) {\n return _this2.updatePageLength(pageLength);\n });\n this.emitter.on(['column-sorted'], function (tf, index, descending) {\n return _this2.updateSort(index, descending);\n });\n this.emitter.on(['sort-initialized'], function () {\n return _this2._syncSort();\n });\n this.emitter.on(['columns-visibility-initialized'], function () {\n return _this2._syncColsVisibility();\n });\n this.emitter.on(['column-shown', 'column-hidden'], function (tf, feature, colIndex, hiddenCols) {\n return _this2.updateColsVisibility(hiddenCols);\n });\n this.emitter.on(['filters-visibility-initialized'], function () {\n return _this2._syncFiltersVisibility();\n });\n this.emitter.on(['filters-toggled'], function (tf, extension, visible) {\n return _this2.updateFiltersVisibility(visible);\n });\n\n if (this.enableHash) {\n this.hash = new _hash.Hash(this);\n this.hash.init();\n }\n if (this.enableStorage) {\n this.storage = new _storage.Storage(this);\n this.storage.init();\n }\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Update state object based on current features state\n */\n\n }, {\n key: 'update',\n value: function update() {\n var _this3 = this;\n\n if (!this.isEnabled()) {\n return;\n }\n var state = this.state;\n var tf = this.tf;\n\n if (this.persistFilters) {\n var filterValues = tf.getFiltersValue();\n\n filterValues.forEach(function (val, idx) {\n var key = '' + _this3.prfxCol + idx;\n\n if ((0, _types.isString)(val) && (0, _string.isEmpty)(val)) {\n if (state.hasOwnProperty(key)) {\n state[key].flt = undefined;\n }\n } else {\n state[key] = state[key] || {};\n state[key].flt = val;\n }\n });\n }\n\n if (this.persistPageNumber) {\n if ((0, _types.isNull)(this.pageNb)) {\n state[this.pageNbKey] = undefined;\n } else {\n state[this.pageNbKey] = this.pageNb;\n }\n }\n\n if (this.persistPageLength) {\n if ((0, _types.isNull)(this.pageLength)) {\n state[this.pageLengthKey] = undefined;\n } else {\n state[this.pageLengthKey] = this.pageLength;\n }\n }\n\n if (this.persistSort) {\n if (!(0, _types.isNull)(this.sort)) {\n // Remove previuosly sorted column\n Object.keys(state).forEach(function (key) {\n if (key.indexOf(_this3.prfxCol) !== -1 && state[key]) {\n state[key].sort = undefined;\n }\n });\n\n var key = '' + this.prfxCol + this.sort.column;\n state[key] = state[key] || {};\n state[key].sort = { descending: this.sort.descending };\n }\n }\n\n if (this.persistColsVisibility) {\n if (!(0, _types.isNull)(this.hiddenCols)) {\n // Clear previuosly hidden columns\n Object.keys(state).forEach(function (key) {\n if (key.indexOf(_this3.prfxCol) !== -1 && state[key]) {\n state[key].hidden = undefined;\n }\n });\n\n this.hiddenCols.forEach(function (colIdx) {\n var key = '' + _this3.prfxCol + colIdx;\n state[key] = state[key] || {};\n state[key].hidden = true;\n });\n }\n }\n\n if (this.persistFiltersVisibility) {\n if ((0, _types.isNull)(this.filtersVisibility)) {\n state[this.filtersVisKey] = undefined;\n } else {\n state[this.filtersVisKey] = this.filtersVisibility;\n }\n }\n\n this.emitter.emit('state-changed', tf, state);\n }\n\n /**\n * Refresh page number field on page number changes\n *\n * @param {Number} pageNb Current page number\n */\n\n }, {\n key: 'updatePage',\n value: function updatePage(pageNb) {\n this.pageNb = pageNb;\n this.update();\n }\n\n /**\n * Refresh page length field on page length changes\n *\n * @param {Number} pageLength Current page length value\n */\n\n }, {\n key: 'updatePageLength',\n value: function updatePageLength(pageLength) {\n this.pageLength = pageLength;\n this.update();\n }\n\n /**\n * Refresh column sorting information on sort changes\n *\n * @param index {Number} Column index\n * @param {Boolean} descending Descending manner\n */\n\n }, {\n key: 'updateSort',\n value: function updateSort(index, descending) {\n this.sort = {\n column: index,\n descending: descending\n };\n this.update();\n }\n\n /**\n * Refresh hidden columns information on columns visibility changes\n *\n * @param {Array} hiddenCols Columns indexes\n */\n\n }, {\n key: 'updateColsVisibility',\n value: function updateColsVisibility(hiddenCols) {\n this.hiddenCols = hiddenCols;\n this.update();\n }\n\n /**\n * Refresh filters visibility on filters visibility change\n *\n * @param {Boolean} visible Visibility flad\n */\n\n }, {\n key: 'updateFiltersVisibility',\n value: function updateFiltersVisibility(visible) {\n this.filtersVisibility = visible;\n this.update();\n }\n\n /**\n * Override state field\n *\n * @param state State object\n */\n\n }, {\n key: 'override',\n value: function override(state) {\n this.state = state;\n }\n\n /**\n * Sync stored features state\n */\n\n }, {\n key: 'sync',\n value: function sync() {\n var state = this.state;\n var tf = this.tf;\n\n this._syncFilters();\n\n if (this.persistPageNumber) {\n var pageNumber = state[this.pageNbKey];\n this.emitter.emit('change-page', tf, pageNumber);\n }\n\n if (this.persistPageLength) {\n var pageLength = state[this.pageLengthKey];\n this.emitter.emit('change-page-results', tf, pageLength);\n }\n\n this._syncSort();\n this._syncColsVisibility();\n this._syncFiltersVisibility();\n }\n\n /**\n * Override current state with passed one and sync features\n *\n * @param {Object} state State object\n */\n\n }, {\n key: 'overrideAndSync',\n value: function overrideAndSync(state) {\n // To prevent state to react to features changes, state is temporarily\n // disabled\n this.disable();\n // State is overriden with passed state object\n this.override(state);\n // New hash state is applied to features\n this.sync();\n // State is re-enabled\n this.enable();\n }\n\n /**\n * Sync filters with stored values and filter table\n *\n * @private\n */\n\n }, {\n key: '_syncFilters',\n value: function _syncFilters() {\n var _this4 = this;\n\n if (!this.persistFilters) {\n return;\n }\n var state = this.state;\n var tf = this.tf;\n\n Object.keys(state).forEach(function (key) {\n if (key.indexOf(_this4.prfxCol) !== -1) {\n var colIdx = parseInt(key.replace(_this4.prfxCol, ''), 10);\n var val = state[key].flt;\n tf.setFilterValue(colIdx, val);\n }\n });\n\n tf.filter();\n }\n\n /**\n * Sync sorted column with stored sorting information and sort table\n *\n * @private\n */\n\n }, {\n key: '_syncSort',\n value: function _syncSort() {\n var _this5 = this;\n\n if (!this.persistSort) {\n return;\n }\n var state = this.state;\n var tf = this.tf;\n\n Object.keys(state).forEach(function (key) {\n if (key.indexOf(_this5.prfxCol) !== -1) {\n var colIdx = parseInt(key.replace(_this5.prfxCol, ''), 10);\n if (!(0, _types.isUndef)(state[key].sort)) {\n var sort = state[key].sort;\n _this5.emitter.emit('sort', tf, colIdx, sort.descending);\n }\n }\n });\n }\n\n /**\n * Sync hidden columns with stored information\n *\n * @private\n */\n\n }, {\n key: '_syncColsVisibility',\n value: function _syncColsVisibility() {\n var _this6 = this;\n\n if (!this.persistColsVisibility) {\n return;\n }\n var state = this.state;\n var tf = this.tf;\n var hiddenCols = [];\n\n Object.keys(state).forEach(function (key) {\n if (key.indexOf(_this6.prfxCol) !== -1) {\n var colIdx = parseInt(key.replace(_this6.prfxCol, ''), 10);\n if (!(0, _types.isUndef)(state[key].hidden)) {\n hiddenCols.push(colIdx);\n }\n }\n });\n\n hiddenCols.forEach(function (colIdx) {\n _this6.emitter.emit('hide-column', tf, colIdx);\n });\n }\n\n /**\n * Sync filters visibility with stored information\n *\n * @private\n */\n\n }, {\n key: '_syncFiltersVisibility',\n value: function _syncFiltersVisibility() {\n if (!this.persistFiltersVisibility) {\n return;\n }\n var state = this.state;\n var tf = this.tf;\n var filtersVisibility = state[this.filtersVisKey];\n\n this.filtersVisibility = filtersVisibility;\n this.emitter.emit('show-filters', tf, filtersVisibility);\n }\n\n /**\n * Destroy State instance\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this7 = this;\n\n if (!this.initialized) {\n return;\n }\n\n this.state = {};\n\n this.emitter.off(['after-filtering'], function () {\n return _this7.update();\n });\n this.emitter.off(['after-page-change', 'after-clearing-filters'], function (tf, pageNb) {\n return _this7.updatePage(pageNb);\n });\n this.emitter.off(['after-page-length-change'], function (tf, index) {\n return _this7.updatePageLength(index);\n });\n this.emitter.off(['column-sorted'], function (tf, index, descending) {\n return _this7.updateSort(index, descending);\n });\n this.emitter.off(['sort-initialized'], function () {\n return _this7._syncSort();\n });\n this.emitter.off(['columns-visibility-initialized'], function () {\n return _this7._syncColsVisibility();\n });\n this.emitter.off(['column-shown', 'column-hidden'], function (tf, feature, colIndex, hiddenCols) {\n return _this7.updateColsVisibility(hiddenCols);\n });\n this.emitter.off(['filters-visibility-initialized'], function () {\n return _this7._syncFiltersVisibility();\n });\n this.emitter.off(['filters-toggled'], function (tf, extension, visible) {\n return _this7.updateFiltersVisibility(visible);\n });\n\n if (this.enableHash) {\n this.hash.destroy();\n this.hash = null;\n }\n\n if (this.enableStorage) {\n this.storage.destroy();\n this.storage = null;\n }\n\n this.initialized = false;\n }\n }]);\n\n return State;\n}(_feature.Feature);\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StatusBar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _root = __webpack_require__(15);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EVENTS = ['after-filtering', 'after-populating-filter', 'after-page-change', 'after-clearing-filters', 'after-page-length-change', 'after-reset-page', 'after-reset-page-length', 'after-loading-extensions', 'after-loading-themes'];\n\n/**\r\n * Status bar UI component\r\n * @export\r\n * @class StatusBar\r\n * @extends {Feature}\r\n */\n\nvar StatusBar = exports.StatusBar = function (_Feature) {\n _inherits(StatusBar, _Feature);\n\n /**\r\n * Creates an instance of StatusBar\r\n * @param {TableFilter} tf TableFilter instance\r\n */\n function StatusBar(tf) {\n _classCallCheck(this, StatusBar);\n\n // Configuration object\n var _this = _possibleConstructorReturn(this, (StatusBar.__proto__ || Object.getPrototypeOf(StatusBar)).call(this, tf, 'statusBar'));\n\n var f = _this.config.status_bar || {};\n\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\n _this.targetId = f.target_id || null;\n\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.container = null;\n\n /**\r\n * Message container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.msgContainer = null;\n\n /**\r\n * Label container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n _this.labelContainer = null;\n\n /**\r\n * Text preceding status message\r\n * @type {String}\r\n */\n _this.text = f.text || '';\n\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\n _this.cssClass = f.css_class || 'status';\n\n /**\r\n * Message visibility duration in milliseconds\r\n * @type {Number}\r\n * @private\r\n */\n _this.delay = 250;\n\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\n _this.onBeforeShowMsg = (0, _types.isFn)(f.on_before_show_msg) ? f.on_before_show_msg : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\n _this.onAfterShowMsg = (0, _types.isFn)(f.on_after_show_msg) ? f.on_after_show_msg : _types.EMPTY_FN;\n\n /**\r\n * Message appearing upon filtering\r\n * @type {String}\r\n */\n _this.msgFilter = f.msg_filter || 'Filtering data...';\n\n /**\r\n * Message appearing when a drop-down filter is populated\r\n * @type {String}\r\n */\n _this.msgPopulate = f.msg_populate || 'Populating filter...';\n\n /**\r\n * Message appearing when a checklist filter is populated\r\n * @type {String}\r\n */\n _this.msgPopulateCheckList = f.msg_populate_checklist || 'Populating list...';\n\n /**\r\n * Message appearing when a pagination page is changed\r\n * @type {String}\r\n */\n _this.msgChangePage = f.msg_change_page || 'Collecting paging data...';\n\n /**\r\n * Message appearing when filters are cleared\r\n * @type {String}\r\n */\n _this.msgClear = f.msg_clear || 'Clearing filters...';\n\n /**\r\n * Message appearing when the page length is changed\r\n * @type {String}\r\n */\n _this.msgChangeResults = f.msg_change_results || 'Changing results per page...';\n\n /**\r\n * Message appearing when the page is re-set\r\n * @type {String}\r\n */\n _this.msgResetPage = f.msg_reset_page || 'Re-setting page...';\n\n /**\r\n * Message appearing when the page length is re-set\r\n * @type {String}\r\n */\n _this.msgResetPageLength = f.msg_reset_page_length || 'Re-setting page length...';\n\n /**\r\n * Message appearing upon column sorting\r\n * @type {String}\r\n */\n _this.msgSort = f.msg_sort || 'Sorting data...';\n\n /**\r\n * Message appearing when extensions are loading\r\n * @type {String}\r\n */\n _this.msgLoadExtensions = f.msg_load_extensions || 'Loading extensions...';\n\n /**\r\n * Message appearing when themes are loading\r\n * @type {String}\r\n */\n _this.msgLoadThemes = f.msg_load_themes || 'Loading theme(s)...';\n return _this;\n }\n\n /**\r\n * Initializes StatusBar instance\r\n */\n\n\n _createClass(StatusBar, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n var emitter = this.emitter;\n\n //status bar container\n var statusDiv = (0, _dom.createElm)('div');\n statusDiv.className = this.cssClass;\n\n //status bar label\n var statusSpan = (0, _dom.createElm)('span');\n //preceding text\n var statusSpanText = (0, _dom.createElm)('span');\n statusSpanText.appendChild((0, _dom.createText)(this.text));\n\n // target element container\n if (!this.targetId) {\n tf.setToolbar();\n }\n var targetEl = !this.targetId ? tf.lDiv : (0, _dom.elm)(this.targetId);\n\n //default container: 'lDiv'\n if (!this.targetId) {\n statusDiv.appendChild(statusSpanText);\n statusDiv.appendChild(statusSpan);\n targetEl.appendChild(statusDiv);\n } else {\n // custom container, no need to append statusDiv\n targetEl.appendChild(statusSpanText);\n targetEl.appendChild(statusSpan);\n }\n\n this.container = statusDiv;\n this.msgContainer = statusSpan;\n this.labelContainer = statusSpanText;\n\n // Subscribe to events\n emitter.on(['before-filtering'], function () {\n return _this2.message(_this2.msgFilter);\n });\n emitter.on(['before-populating-filter'], function () {\n return _this2.message(_this2.msgPopulate);\n });\n emitter.on(['before-page-change'], function () {\n return _this2.message(_this2.msgChangePage);\n });\n emitter.on(['before-clearing-filters'], function () {\n return _this2.message(_this2.msgClear);\n });\n emitter.on(['before-page-length-change'], function () {\n return _this2.message(_this2.msgChangeResults);\n });\n emitter.on(['before-reset-page'], function () {\n return _this2.message(_this2.msgResetPage);\n });\n emitter.on(['before-reset-page-length'], function () {\n return _this2.message(_this2.msgResetPageLength);\n });\n emitter.on(['before-loading-extensions'], function () {\n return _this2.message(_this2.msgLoadExtensions);\n });\n emitter.on(['before-loading-themes'], function () {\n return _this2.message(_this2.msgLoadThemes);\n });\n\n emitter.on(EVENTS, function () {\n return _this2.message('');\n });\n\n /**\r\n * @inherited\r\n */\n this.initialized = true;\n }\n\n /**\r\n * Display status message\r\n * @param {String} [t=''] Message to be displayed\r\n */\n\n }, {\n key: 'message',\n value: function message() {\n var _this3 = this;\n\n var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.onBeforeShowMsg(this.tf, t);\n\n var d = t === '' ? this.delay : 1;\n _root.root.setTimeout(function () {\n if (!_this3.initialized) {\n return;\n }\n _this3.msgContainer.innerHTML = t;\n\n _this3.onAfterShowMsg(_this3.tf, t);\n }, d);\n }\n\n /**\r\n * Destroy StatusBar instance\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n\n var emitter = this.emitter;\n\n this.container.innerHTML = '';\n if (!this.targetId) {\n (0, _dom.removeElm)(this.container);\n }\n this.labelContainer = null;\n this.msgContainer = null;\n this.container = null;\n\n // Unsubscribe to events\n emitter.off(['before-filtering'], function () {\n return _this4.message(_this4.msgFilter);\n });\n emitter.off(['before-populating-filter'], function () {\n return _this4.message(_this4.msgPopulate);\n });\n emitter.off(['before-page-change'], function () {\n return _this4.message(_this4.msgChangePage);\n });\n emitter.off(['before-clearing-filters'], function () {\n return _this4.message(_this4.msgClear);\n });\n emitter.off(['before-page-length-change'], function () {\n return _this4.message(_this4.msgChangeResults);\n });\n emitter.off(['before-reset-page'], function () {\n return _this4.message(_this4.msgResetPage);\n });\n emitter.off(['before-reset-page-length'], function () {\n return _this4.message(_this4.msgResetPageLength);\n });\n emitter.off(['before-loading-extensions'], function () {\n return _this4.message(_this4.msgLoadExtensions);\n });\n emitter.off(['before-loading-themes'], function () {\n return _this4.message(_this4.msgLoadThemes);\n });\n\n emitter.off(EVENTS, function () {\n return _this4.message('');\n });\n\n this.initialized = false;\n }\n }]);\n\n return StatusBar;\n}(_feature.Feature);\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Storage = exports.hasStorage = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cookie = __webpack_require__(109);\n\nvar _cookie2 = _interopRequireDefault(_cookie);\n\nvar _root = __webpack_require__(15);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JSON = _root.root.JSON;\nvar localStorage = _root.root.localStorage;\nvar location = _root.root.location;\n\n/**\r\n * Checks if browser has Storage feature\r\n */\nvar hasStorage = exports.hasStorage = function hasStorage() {\n return 'Storage' in _root.root;\n};\n\n/**\r\n * Stores the features state in browser's local storage or cookie\r\n *\r\n * @export\r\n * @class Storage\r\n */\n\nvar Storage = exports.Storage = function () {\n\n /**\r\n * Creates an instance of Storage\r\n *\r\n * @param {State} state Instance of State\r\n */\n function Storage(state) {\n _classCallCheck(this, Storage);\n\n /**\r\n * State object\r\n * @type {State}\r\n * @private\r\n */\n this.state = state;\n\n /**\r\n * TableFilter object\r\n * @type {TableFilter}\r\n * @private\r\n */\n this.tf = state.tf;\n\n /**\r\n * Persist with local storage\r\n * @type {Boolean}\r\n * @private\r\n */\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\n\n /**\r\n * Persist with cookie\r\n * @type {Boolean}\r\n * @private\r\n */\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\n\n /**\r\n * Emitter object\r\n * @type {Emitter}\r\n * @private\r\n */\n this.emitter = state.emitter;\n\n /**\r\n * Cookie duration in hours from state object\r\n * @type {Number}\r\n * @private\r\n */\n this.duration = state.cookieDuration;\n }\n\n /**\r\n * Initializes the Storage object\r\n */\n\n\n _createClass(Storage, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n this.emitter.on(['state-changed'], function (tf, state) {\n return _this.save(state);\n });\n this.emitter.on(['initialized'], function () {\n return _this.sync();\n });\n }\n\n /**\r\n * Persists the features state on state changes\r\n *\r\n * @param {State} state Instance of State\r\n */\n\n }, {\n key: 'save',\n value: function save(state) {\n if (this.enableLocalStorage) {\n localStorage[this.getKey()] = JSON.stringify(state);\n } else {\n _cookie2.default.write(this.getKey(), JSON.stringify(state), this.duration);\n }\n }\n\n /**\r\n * Turns stored string into a State JSON object\r\n *\r\n * @returns {Object} JSON object\r\n */\n\n }, {\n key: 'retrieve',\n value: function retrieve() {\n var state = null;\n if (this.enableLocalStorage) {\n state = localStorage[this.getKey()];\n } else {\n state = _cookie2.default.read(this.getKey());\n }\n\n if (!state) {\n return null;\n }\n return JSON.parse(state);\n }\n\n /**\r\n * Removes persisted state from storage\r\n */\n\n }, {\n key: 'remove',\n value: function remove() {\n if (this.enableLocalStorage) {\n localStorage.removeItem(this.getKey());\n } else {\n _cookie2.default.remove(this.getKey());\n }\n }\n\n /**\r\n * Applies persisted state to features\r\n */\n\n }, {\n key: 'sync',\n value: function sync() {\n var state = this.retrieve();\n if (!state) {\n return;\n }\n // override current state with persisted one and sync features\n this.state.overrideAndSync(state);\n }\n\n /**\r\n * Returns the storage key\r\n *\r\n * @returns {String} Key\r\n */\n\n }, {\n key: 'getKey',\n value: function getKey() {\n return JSON.stringify({\n key: this.tf.prfxTf + '_' + this.tf.id,\n path: location.pathname\n });\n }\n\n /**\r\n * Release Storage event subscriptions and clear fields\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this2 = this;\n\n this.emitter.off(['state-changed'], function (tf, state) {\n return _this2.save(state);\n });\n this.emitter.off(['initialized'], function () {\n return _this2.sync();\n });\n\n this.remove();\n\n this.state = null;\n this.emitter = null;\n }\n }]);\n\n return Storage;\n}();\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TableFilter = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _event = __webpack_require__(17);\n\nvar _dom = __webpack_require__(9);\n\nvar _string = __webpack_require__(19);\n\nvar _types = __webpack_require__(6);\n\nvar _number = __webpack_require__(52);\n\nvar _root = __webpack_require__(15);\n\nvar _emitter = __webpack_require__(69);\n\nvar _dropdown = __webpack_require__(71);\n\nvar _checkList = __webpack_require__(70);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar doc = _root.root.document;\n\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\n\nvar TableFilter = exports.TableFilter = function () {\n\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\n function TableFilter() {\n var _this = this;\n\n _classCallCheck(this, TableFilter);\n\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\n this.id = null;\n\n /**\r\n * Current version\r\n * @type {String}\r\n */\n this.version = '0.5.23';\n\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\n this.year = new Date().getFullYear();\n\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n this.tbl = null;\n\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\n this.refRow = null;\n\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\n this.headersRow = null;\n\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\n this.cfg = {};\n\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\n this.nbFilterableRows = 0;\n\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\n this.nbCells = null;\n\n /** @private */\n this.initialized = false;\n\n var startRow = void 0;\n\n // TODO: use for-of\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n args.forEach(function (arg) {\n if ((typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) === 'object' && arg.nodeName === 'TABLE') {\n _this.tbl = arg;\n _this.id = arg.id || 'tf_' + new Date().getTime() + '_';\n } else if ((0, _types.isString)(arg)) {\n _this.id = arg;\n _this.tbl = (0, _dom.elm)(arg);\n } else if ((0, _types.isNumber)(arg)) {\n startRow = arg;\n } else if ((0, _types.isObj)(arg)) {\n _this.cfg = arg;\n }\n });\n\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\n throw new Error('Could not instantiate TableFilter: HTML table\\n DOM element not found.');\n }\n\n if (this.getRowsNb() === 0) {\n throw new Error('Could not instantiate TableFilter: HTML table\\n requires at least 1 row.');\n }\n\n // configuration object\n var f = this.cfg;\n\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\n this.emitter = new _emitter.Emitter();\n\n //Start row et cols nb\n this.refRow = (0, _types.isUndef)(startRow) ? 2 : startRow + 1;\n\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\n this.basePath = f.base_path || 'tablefilter/';\n\n /*** filters' grid properties ***/\n\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\n this.fltGrid = f.grid === false ? false : true;\n\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\n this.gridLayout = (0, _types.isObj)(f.grid_layout) || Boolean(f.grid_layout);\n\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\n this.filtersRowIndex = isNaN(f.filters_row_index) ? 0 : f.filters_row_index;\n\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\n this.headersRow = isNaN(f.headers_row_index) ? this.filtersRowIndex === 0 ? 1 : 0 : f.headers_row_index;\n\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\n this.fltCellTag = (0, _types.isString)(f.filters_cell_tag) ? f.filters_cell_tag : _const.CELL_TAG;\n\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\n this.fltIds = [];\n\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\n this.validRowsIndex = [];\n\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\n this.infDiv = null;\n\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\n this.lDiv = null;\n\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\n this.rDiv = null;\n\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\n this.mDiv = null;\n\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\n this.infDivCssClass = f.inf_div_css_class || 'inf';\n\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\n this.lDivCssClass = f.left_div_css_class || 'ldiv';\n\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\n this.rDivCssClass = f.right_div_css_class || 'rdiv';\n\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\n this.mDivCssClass = f.middle_div_css_class || 'mdiv';\n\n /*** filters' grid appearance ***/\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\n this.stylePath = f.style_path || this.basePath + 'style/';\n\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\n this.stylesheet = f.stylesheet || this.stylePath + 'tablefilter.css';\n\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\n this.stylesheetId = this.id + '_style';\n\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\n this.fltsRowCssClass = f.flts_row_css_class || 'fltrow';\n\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\n this.enableIcons = f.enable_icons === false ? false : true;\n\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\n this.alternateRows = Boolean(f.alternate_rows);\n\n /**\r\n * Indicate whether columns widths are set\r\n * @type {Boolean}\r\n * @private\r\n */\n this.hasColWidths = (0, _types.isArray)(f.col_widths);\n\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\n this.colWidths = this.hasColWidths ? f.col_widths : [];\n\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\n this.fltCssClass = f.flt_css_class || 'flt';\n\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\n this.fltMultiCssClass = f.flt_multi_css_class || 'flt_multi';\n\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\n this.fltSmallCssClass = f.flt_small_css_class || 'flt_s';\n\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\n this.singleFltCssClass = f.single_flt_css_class || 'single_flt';\n\n /*** filters' grid behaviours ***/\n\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\n this.enterKey = f.enter_key === false ? false : true;\n\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\n this.onBeforeFilter = (0, _types.isFn)(f.on_before_filter) ? f.on_before_filter : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\n this.onAfterFilter = (0, _types.isFn)(f.on_after_filter) ? f.on_after_filter : _types.EMPTY_FN;\n\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\n this.caseSensitive = Boolean(f.case_sensitive);\n\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\n this.hasExactMatchByCol = (0, _types.isArray)(f.columns_exact_match);\n\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\n this.exactMatchByCol = this.hasExactMatchByCol ? f.columns_exact_match : [];\n\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\n this.exactMatch = Boolean(f.exact_match);\n\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\n this.ignoreDiacritics = f.ignore_diacritics;\n\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\n this.linkedFilters = Boolean(f.linked_filters);\n\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\n\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\n this.activeFilterId = null;\n\n /**\r\n * Enable/disable always visible rows, excluded from filtering\r\n * @type {Boolean}\r\n */\n this.hasVisibleRows = Boolean(f.rows_always_visible);\n\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\n this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : [];\n\n /**\r\n * Enable/disable external filters generation\r\n * @type {Boolean}\r\n */\n this.isExternalFlt = Boolean(f.external_flt_grid);\n\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\n this.externalFltTgtIds = f.external_flt_grid_ids || [];\n\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\n this.onFiltersLoaded = (0, _types.isFn)(f.on_filters_loaded) ? f.on_filters_loaded : _types.EMPTY_FN;\n\n /**\r\n * Enable/disable single filter filtering all columns\r\n * @type {Boolean}\r\n */\n this.singleSearchFlt = Boolean(f.single_filter);\n\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\n this.onRowValidated = (0, _types.isFn)(f.on_row_validated) ? f.on_row_validated : _types.EMPTY_FN;\n\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\n this.cellParser = (0, _types.isObj)(f.cell_parser) && (0, _types.isFn)(f.cell_parser.parse) && (0, _types.isArray)(f.cell_parser.cols) ? f.cell_parser : { cols: [], parse: _types.EMPTY_FN };\n\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\n this.watermark = f.watermark || '';\n\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\n this.isWatermarkArray = (0, _types.isArray)(this.watermark);\n\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\n this.toolBarTgtId = f.toolbar_target_id || null;\n\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\n this.help = (0, _types.isUndef)(f.help_instructions) ? undefined : (0, _types.isObj)(f.help_instructions) || Boolean(f.help_instructions);\n\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean}\r\n */\n this.popupFilters = (0, _types.isObj)(f.popup_filters) || Boolean(f.popup_filters);\n\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\n this.markActiveColumns = (0, _types.isObj)(f.mark_active_columns) || Boolean(f.mark_active_columns);\n\n /*** select filter's customisation and behaviours ***/\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\n this.clearFilterText = f.clear_filter_text || 'Clear';\n\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\n this.enableEmptyOption = Boolean(f.enable_empty_option);\n\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\n this.emptyText = f.empty_text || '(Empty)';\n\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\n\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\n\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\n this.onSlcChange = f.on_change === false ? false : true;\n\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\n this.sortSlc = (0, _types.isUndef)(f.sort_select) ? true : (0, _types.isArray)(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\n\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\n this.isSortNumAsc = Boolean(f.sort_num_asc);\n\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\n\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\n this.isSortNumDesc = Boolean(f.sort_num_desc);\n\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\n\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\n\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\n this.hasCustomOptions = (0, _types.isObj)(f.custom_options);\n\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\n this.customOptions = f.custom_options;\n\n /*** Filter operators ***/\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\n this.rgxOperator = f.regexp_operator || 'rgx:';\n\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\n this.emOperator = f.empty_operator || '[empty]';\n\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\n this.nmOperator = f.nonempty_operator || '[nonempty]';\n\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\n this.orOperator = f.or_operator || '||';\n\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\n this.anOperator = f.and_operator || '&&';\n\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\n this.grOperator = f.greater_operator || '>';\n\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\n this.lwOperator = f.lower_operator || '<';\n\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\n this.leOperator = f.lower_equal_operator || '<=';\n\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\n this.geOperator = f.greater_equal_operator || '>=';\n\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\n this.dfOperator = f.different_operator || '!';\n\n /**\r\n * Like operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\n this.lkOperator = f.like_operator || '*';\n\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\n this.eqOperator = f.equal_operator || '=';\n\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\n this.stOperator = f.start_with_operator || '{';\n\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\n this.enOperator = f.end_with_operator || '}';\n\n // this.curExp = f.cur_exp || '^[¥£€$]';\n\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\n this.separator = f.separator || ',';\n\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\n this.rowsCounter = (0, _types.isObj)(f.rows_counter) || Boolean(f.rows_counter);\n\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\n this.statusBar = (0, _types.isObj)(f.status_bar) || Boolean(f.status_bar);\n\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\n this.loader = (0, _types.isObj)(f.loader) || Boolean(f.loader);\n\n /*** validation - reset buttons/links ***/\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\n this.displayBtn = Boolean(f.btn);\n\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\n this.btnText = f.btn_text || (!this.enableIcons ? 'Go' : '');\n\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\n this.btnCssClass = f.btn_css_class || (!this.enableIcons ? 'btnflt' : 'btnflt_icon');\n\n /**\r\n * Enable clear button\r\n * @type {Boolean}\r\n */\n this.btnReset = Boolean(f.btn_reset);\n\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\n this.onBeforeReset = (0, _types.isFn)(f.on_before_reset) ? f.on_before_reset : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\n this.onAfterReset = (0, _types.isFn)(f.on_after_reset) ? f.on_after_reset : _types.EMPTY_FN;\n\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\n this.paging = (0, _types.isObj)(f.paging) || Boolean(f.paging);\n\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\n this.nbHiddenRows = 0;\n\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Boolean}\r\n */\n this.autoFilter = Boolean(f.auto_filter);\n\n /**\r\n * Auto-filter delay in msecs\r\n * @type {Number}\r\n */\n this.autoFilterDelay = !isNaN(f.auto_filter_delay) ? f.auto_filter_delay : _const.AUTO_FILTER_DELAY;\n\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\n this.isUserTyping = null;\n\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\n this.autoFilterTimer = null;\n\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\n this.highlightKeywords = Boolean(f.highlight_keywords);\n\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\n this.noResults = (0, _types.isObj)(f.no_results_message) || Boolean(f.no_results_message);\n\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\n this.state = (0, _types.isObj)(f.state) || Boolean(f.state);\n\n /*** data types ***/\n\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\n this.dateType = true;\n\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\n this.locale = f.locale || 'en';\n\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\n this.thousandsSeparator = f.thousands_separator || ',';\n\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\n this.decimalSeparator = f.decimal_separator || '.';\n\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\n this.colTypes = (0, _types.isArray)(f.col_types) ? f.col_types : [];\n\n /*** ids prefixes ***/\n /**\r\n * Main prefix\r\n * @private\r\n */\n this.prfxTf = 'TF';\n\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\n this.prfxFlt = 'flt';\n\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\n this.prfxValButton = 'btn';\n\n /**\r\n * Toolbar container ID prefix\r\n * @private\r\n */\n this.prfxInfDiv = 'inf_';\n\n /**\r\n * Toolbar left element ID prefix\r\n * @private\r\n */\n this.prfxLDiv = 'ldiv_';\n\n /**\r\n * Toolbar right element ID prefix\r\n * @private\r\n */\n this.prfxRDiv = 'rdiv_';\n\n /**\r\n * Toolbar middle element ID prefix\r\n * @private\r\n */\n this.prfxMDiv = 'mdiv_';\n\n /**\r\n * Responsive Css class\r\n * @private\r\n */\n this.prfxResponsive = 'resp';\n\n /*** extensions ***/\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n * @private\r\n */\n this.extensions = f.extensions;\n\n /**\r\n * Determine whether extensions are loaded\r\n * @type {Boolean}\r\n * @private\r\n */\n this.hasExtensions = (0, _types.isArray)(this.extensions);\n\n /*** themes ***/\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\n\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\n this.hasThemes = this.enableDefaultTheme || (0, _types.isArray)(f.themes);\n\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\n this.themes = f.themes || [];\n\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\n this.themesPath = f.themes_path || this.stylePath + 'themes/';\n\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\n this.responsive = Boolean(f.responsive);\n\n /**\r\n * Features registry\r\n * @private\r\n */\n this.Mod = {};\n\n /**\r\n * Extensions registry\r\n * @private\r\n */\n this.ExtRegistry = {};\n\n //conditionally instantiate required features\n this.instantiateFeatures(Object.keys(_const.FEATURES).map(function (item) {\n return _const.FEATURES[item];\n }));\n\n //load styles if necessary\n this.import(this.stylesheetId, this.stylesheet, null, 'link');\n }\n\n /**\r\n * Initialise features and layout\r\n */\n\n\n _createClass(TableFilter, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n this.nbCells = this.getCellsNb(this.refRow);\n var Mod = this.Mod;\n var n = this.singleSearchFlt ? 1 : this.nbCells;\n var inpclass = void 0;\n\n //loads theme\n this.loadThemes();\n\n var dateType = _const.FEATURES.dateType,\n help = _const.FEATURES.help,\n state = _const.FEATURES.state,\n markActiveColumns = _const.FEATURES.markActiveColumns,\n gridLayout = _const.FEATURES.gridLayout,\n loader = _const.FEATURES.loader,\n highlightKeyword = _const.FEATURES.highlightKeyword,\n popupFilter = _const.FEATURES.popupFilter,\n rowsCounter = _const.FEATURES.rowsCounter,\n statusBar = _const.FEATURES.statusBar,\n clearButton = _const.FEATURES.clearButton,\n alternateRows = _const.FEATURES.alternateRows,\n noResults = _const.FEATURES.noResults,\n paging = _const.FEATURES.paging;\n\n //explicitly initialise features in given order\n\n this.initFeatures([dateType, help, state, markActiveColumns, gridLayout, loader, highlightKeyword, popupFilter]);\n\n //filters grid is not generated\n if (!this.fltGrid) {\n this._initNoFilters();\n } else {\n var fltrow = this._insertFiltersRow();\n\n this.nbFilterableRows = this.getRowsNb();\n\n // Generate filters\n for (var i = 0; i < n; i++) {\n this.emitter.emit('before-filter-init', this, i);\n\n var fltcell = (0, _dom.createElm)(this.fltCellTag),\n col = this.getFilterType(i);\n\n if (this.singleSearchFlt) {\n fltcell.colSpan = this.nbCells;\n }\n if (!this.gridLayout) {\n fltrow.appendChild(fltcell);\n }\n inpclass = i === n - 1 && this.displayBtn ? this.fltSmallCssClass : this.fltCssClass;\n\n //only 1 input for single search\n if (this.singleSearchFlt) {\n col = _const.INPUT;\n inpclass = this.singleFltCssClass;\n }\n\n //drop-down filters\n if (col === _const.SELECT || col === _const.MULTIPLE) {\n Mod.dropdown = Mod.dropdown || new _dropdown.Dropdown(this);\n Mod.dropdown.init(i, this.isExternalFlt, fltcell);\n }\n // checklist\n else if (col === _const.CHECKLIST) {\n Mod.checkList = Mod.checkList || new _checkList.CheckList(this);\n Mod.checkList.init(i, this.isExternalFlt, fltcell);\n } else {\n this._buildInputFilter(i, inpclass, fltcell);\n }\n\n // this adds submit button\n if (i === n - 1 && this.displayBtn) {\n this._buildSubmitButton(i, fltcell);\n }\n\n this.emitter.emit('after-filter-init', this, i);\n }\n\n this.emitter.on(['filter-focus'], function (tf, filter) {\n return _this2.setActiveFilterId(filter.id);\n });\n } //if this.fltGrid\n\n /* Features */\n if (this.hasVisibleRows) {\n this.emitter.on(['after-filtering'], function () {\n return _this2.enforceVisibility();\n });\n this.enforceVisibility();\n }\n\n this.initFeatures([rowsCounter, statusBar, clearButton, alternateRows, noResults, paging]);\n\n if (this.hasColWidths && !this.gridLayout) {\n this.setColWidths();\n }\n\n //TF css class is added to table\n if (!this.gridLayout) {\n (0, _dom.addClass)(this.dom(), this.prfxTf);\n if (this.responsive) {\n (0, _dom.addClass)(this.dom(), this.prfxResponsive);\n }\n }\n\n /* Load extensions */\n this.initExtensions();\n\n // Subscribe to events\n if (this.linkedFilters) {\n this.emitter.on(['after-filtering'], function () {\n return _this2.linkFilters();\n });\n }\n\n this.initialized = true;\n\n this.onFiltersLoaded(this);\n\n this.emitter.emit('initialized', this);\n }\n\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\n\n }, {\n key: 'detectKey',\n value: function detectKey(evt) {\n if (!this.enterKey) {\n return;\n }\n if (evt) {\n var key = (0, _event.keyCode)(evt);\n if (key === _const.ENTER_KEY) {\n this.filter();\n (0, _event.cancelEvt)(evt);\n (0, _event.stopEvt)(evt);\n } else {\n this.isUserTyping = true;\n _root.root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n }\n }\n }\n\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\n\n }, {\n key: 'onKeyUp',\n value: function onKeyUp(evt) {\n if (!this.autoFilter) {\n return;\n }\n var key = (0, _event.keyCode)(evt);\n this.isUserTyping = false;\n\n function filter() {\n _root.root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n if (!this.isUserTyping) {\n this.filter();\n this.isUserTyping = null;\n }\n }\n\n if (key !== _const.ENTER_KEY && key !== _const.TAB_KEY && key !== _const.ESC_KEY && key !== _const.UP_ARROW_KEY && key !== _const.DOWN_ARROW_KEY) {\n if (this.autoFilterTimer === null) {\n this.autoFilterTimer = _root.root.setInterval(filter.bind(this), this.autoFilterDelay);\n }\n } else {\n _root.root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n }\n }\n\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\n\n }, {\n key: 'onKeyDown',\n value: function onKeyDown() {\n if (this.autoFilter) {\n this.isUserTyping = true;\n }\n }\n\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\n\n }, {\n key: 'onInpFocus',\n value: function onInpFocus(evt) {\n var elm = (0, _event.targetEvt)(evt);\n this.emitter.emit('filter-focus', this, elm);\n }\n\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\n\n }, {\n key: 'onInpBlur',\n value: function onInpBlur() {\n if (this.autoFilter) {\n this.isUserTyping = false;\n _root.root.clearInterval(this.autoFilterTimer);\n }\n this.emitter.emit('filter-blur', this);\n }\n\n /**\r\n * Insert filters row at initialization\r\n */\n\n }, {\n key: '_insertFiltersRow',\n value: function _insertFiltersRow() {\n // TODO: prevent filters row generation for popup filters too,\n // to reduce and simplify headers row index adjusting across lib modules\n // (GridLayout, PopupFilter etc)\n if (this.gridLayout) {\n return;\n }\n var fltrow = void 0;\n\n var thead = (0, _dom.tag)(this.dom(), 'thead');\n if (thead.length > 0) {\n fltrow = thead[0].insertRow(this.filtersRowIndex);\n } else {\n fltrow = this.dom().insertRow(this.filtersRowIndex);\n }\n\n fltrow.className = this.fltsRowCssClass;\n\n if (this.isExternalFlt) {\n fltrow.style.display = _const.NONE;\n }\n\n this.emitter.emit('filters-row-inserted', this, fltrow);\n return fltrow;\n }\n\n /**\r\n * Initialize filtersless table\r\n */\n\n }, {\n key: '_initNoFilters',\n value: function _initNoFilters() {\n if (this.fltGrid) {\n return;\n }\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\n this.nbFilterableRows = this.getRowsNb();\n }\n\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\n\n }, {\n key: '_buildInputFilter',\n value: function _buildInputFilter(colIndex, cssClass, container) {\n var _this3 = this;\n\n var col = this.getFilterType(colIndex);\n var externalFltTgtId = this.isExternalFlt ? this.externalFltTgtIds[colIndex] : null;\n var inpType = col === _const.INPUT ? 'text' : 'hidden';\n var inp = (0, _dom.createElm)(_const.INPUT, ['id', this.buildFilterId(colIndex)], ['type', inpType], ['ct', colIndex]);\n\n if (inpType !== 'hidden' && this.watermark) {\n inp.setAttribute('placeholder', this.isWatermarkArray ? this.watermark[colIndex] || '' : this.watermark);\n }\n inp.className = cssClass || this.fltCssClass;\n (0, _event.addEvt)(inp, 'focus', function (evt) {\n return _this3.onInpFocus(evt);\n });\n\n //filter is appended in custom element\n if (externalFltTgtId) {\n (0, _dom.elm)(externalFltTgtId).appendChild(inp);\n } else {\n container.appendChild(inp);\n }\n\n this.fltIds.push(inp.id);\n\n (0, _event.addEvt)(inp, 'keypress', function (evt) {\n return _this3.detectKey(evt);\n });\n (0, _event.addEvt)(inp, 'keydown', function () {\n return _this3.onKeyDown();\n });\n (0, _event.addEvt)(inp, 'keyup', function (evt) {\n return _this3.onKeyUp(evt);\n });\n (0, _event.addEvt)(inp, 'blur', function () {\n return _this3.onInpBlur();\n });\n }\n\n /**\r\n * Build submit button\r\n * @param {Number} colIndex Column index\r\n * @param {DOMElement} container Container DOM element\r\n */\n\n }, {\n key: '_buildSubmitButton',\n value: function _buildSubmitButton(colIndex, container) {\n var _this4 = this;\n\n var externalFltTgtId = this.isExternalFlt ? this.externalFltTgtIds[colIndex] : null;\n var btn = (0, _dom.createElm)(_const.INPUT, ['type', 'button'], ['value', this.btnText]);\n btn.className = this.btnCssClass;\n\n //filter is appended in custom element\n if (externalFltTgtId) {\n (0, _dom.elm)(externalFltTgtId).appendChild(btn);\n } else {\n container.appendChild(btn);\n }\n\n (0, _event.addEvt)(btn, 'click', function () {\n return _this4.filter();\n });\n }\n\n /**\r\n * Istantiate the collection of features required by the\r\n * configuration and add them to the features registry. A feature is\r\n * described by a `class` and `name` fields and and optional `property`\r\n * field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\n\n }, {\n key: 'instantiateFeatures',\n value: function instantiateFeatures() {\n var _this5 = this;\n\n var features = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n features.forEach(function (feature) {\n // TODO: remove the property field.\n // Due to naming convention inconsistencies, a `property`\n // field is added to allow a conditional instanciation based\n // on that property on TableFilter, if supplied.\n feature.property = feature.property || feature.name;\n if (_this5[feature.property] === true || feature.enforce === true) {\n var Cls = feature.class,\n name = feature.name;\n\n\n _this5.Mod[name] = _this5.Mod[name] || new Cls(_this5);\n }\n });\n }\n\n /**\r\n * Initialise the passed features collection. A feature is described by a\r\n * `class` and `name` fields and and optional `property` field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\n\n }, {\n key: 'initFeatures',\n value: function initFeatures() {\n var _this6 = this;\n\n var features = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n features.forEach(function (feature) {\n var property = feature.property,\n name = feature.name;\n\n if (_this6[property] === true && _this6.Mod[name]) {\n _this6.Mod[name].init();\n }\n });\n }\n\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\n\n }, {\n key: 'feature',\n value: function feature(name) {\n return this.Mod[name];\n }\n\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\n\n }, {\n key: 'initExtensions',\n value: function initExtensions() {\n if (!this.hasExtensions) {\n return;\n }\n\n var exts = this.extensions;\n // Set config's publicPath dynamically for Webpack...\n __webpack_require__.p = this.basePath;\n\n this.emitter.emit('before-loading-extensions', this);\n for (var i = 0, len = exts.length; i < len; i++) {\n var ext = exts[i];\n this.loadExtension(ext);\n }\n this.emitter.emit('after-loading-extensions', this);\n }\n\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\n\n }, {\n key: 'loadExtension',\n value: function loadExtension(ext) {\n var _this7 = this;\n\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\n return;\n }\n\n var name = ext.name;\n var path = ext.path;\n var modulePath = void 0;\n\n if (name && path) {\n modulePath = ext.path + name;\n } else {\n name = name.replace('.js', '');\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\n }\n\n // Require pattern for Webpack\n __webpack_require__.e/* require */(0).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(438)(\"./\" + modulePath)]; (function (mod) {\n /* eslint-disable */\n var inst = new mod.default(_this7, ext);\n /* eslint-enable */\n inst.init();\n _this7.ExtRegistry[name] = inst;\n }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}).catch(__webpack_require__.oe);\n }\n\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\n\n }, {\n key: 'extension',\n value: function extension(name) {\n return this.ExtRegistry[name];\n }\n\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'hasExtension',\n value: function hasExtension(name) {\n return !(0, _types.isEmpty)(this.ExtRegistry[name]);\n }\n\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\n\n }, {\n key: 'registerExtension',\n value: function registerExtension(inst, name) {\n this.ExtRegistry[name] = inst;\n }\n\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\n\n }, {\n key: 'destroyExtensions',\n value: function destroyExtensions() {\n var reg = this.ExtRegistry;\n\n Object.keys(reg).forEach(function (key) {\n reg[key].destroy();\n reg[key] = undefined;\n });\n }\n\n /**\r\n * Load themes defined in the configuration object\r\n */\n\n }, {\n key: 'loadThemes',\n value: function loadThemes() {\n if (!this.hasThemes) {\n return;\n }\n\n var themes = this.themes;\n this.emitter.emit('before-loading-themes', this);\n\n //Default theme config\n if (this.enableDefaultTheme) {\n var defaultTheme = { name: 'default' };\n this.themes.push(defaultTheme);\n }\n if ((0, _types.isArray)(themes)) {\n for (var i = 0, len = themes.length; i < len; i++) {\n var theme = themes[i];\n var name = theme.name;\n var path = theme.path;\n var styleId = this.prfxTf + name;\n if (name && !path) {\n path = this.themesPath + name + '/' + name + '.css';\n } else if (!name && theme.path) {\n name = 'theme{0}'.replace('{0}', i);\n }\n\n if (!this.isImported(path, 'link')) {\n this.import(styleId, path, null, 'link');\n }\n }\n }\n\n // Enable loader indicator\n this.loader = true;\n\n this.emitter.emit('after-loading-themes', this);\n }\n\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\n\n }, {\n key: 'getStylesheet',\n value: function getStylesheet() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n\n return (0, _dom.elm)(this.prfxTf + name);\n }\n\n /**\r\n * Destroy filter grid\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this8 = this;\n\n if (!this.initialized) {\n return;\n }\n\n var emitter = this.emitter;\n\n if (this.isExternalFlt && !this.popupFilters) {\n this.removeExternalFlts();\n }\n\n this.removeToolbar();\n\n if (this.hasExtensions) {\n this.destroyExtensions();\n }\n\n this.validateAllRows();\n\n // broadcast destroy event modules and extensions are subscribed to\n emitter.emit('destroy', this);\n\n if (this.fltGrid && !this.gridLayout) {\n this.dom().deleteRow(this.filtersRowIndex);\n }\n\n // unsubscribe to events\n if (this.hasVisibleRows) {\n emitter.off(['after-filtering'], function () {\n return _this8.enforceVisibility();\n });\n }\n if (this.linkedFilters) {\n emitter.off(['after-filtering'], function () {\n return _this8.linkFilters();\n });\n }\n this.emitter.off(['filter-focus'], function (tf, filter) {\n return _this8.setActiveFilterId(filter.id);\n });\n\n (0, _dom.removeClass)(this.dom(), this.prfxTf);\n (0, _dom.removeClass)(this.dom(), this.prfxResponsive);\n\n this.nbHiddenRows = 0;\n this.validRowsIndex = [];\n this.fltIds = [];\n this.initialized = false;\n }\n\n /**\r\n * Generate container element for paging, reset button, rows counter etc.\r\n */\n\n }, {\n key: 'setToolbar',\n value: function setToolbar() {\n if (this.infDiv) {\n return;\n }\n\n /*** container div ***/\n var infDiv = (0, _dom.createElm)('div');\n infDiv.className = this.infDivCssClass;\n\n //custom container\n if (this.toolBarTgtId) {\n (0, _dom.elm)(this.toolBarTgtId).appendChild(infDiv);\n }\n //grid-layout\n else if (this.gridLayout) {\n var gridLayout = this.Mod.gridLayout;\n gridLayout.tblMainCont.appendChild(infDiv);\n infDiv.className = gridLayout.infDivCssClass;\n }\n //default location: just above the table\n else {\n var cont = (0, _dom.createElm)('caption');\n cont.appendChild(infDiv);\n this.dom().insertBefore(cont, this.dom().firstChild);\n }\n this.infDiv = infDiv;\n\n /*** left div containing rows # displayer ***/\n var lDiv = (0, _dom.createElm)('div');\n lDiv.className = this.lDivCssClass;\n infDiv.appendChild(lDiv);\n this.lDiv = lDiv;\n\n /*** right div containing reset button\r\n + nb results per page select ***/\n var rDiv = (0, _dom.createElm)('div');\n rDiv.className = this.rDivCssClass;\n infDiv.appendChild(rDiv);\n this.rDiv = rDiv;\n\n /*** mid div containing paging elements ***/\n var mDiv = (0, _dom.createElm)('div');\n mDiv.className = this.mDivCssClass;\n infDiv.appendChild(mDiv);\n this.mDiv = mDiv;\n\n // emit help initialisation only if undefined\n if ((0, _types.isUndef)(this.help)) {\n // explicitily enable help to initialise feature by\n // default, only if setting is undefined\n this.Mod.help.enable();\n this.emitter.emit('init-help', this);\n }\n }\n\n /**\r\n * Remove toolbar container element\r\n */\n\n }, {\n key: 'removeToolbar',\n value: function removeToolbar() {\n if (!this.infDiv) {\n return;\n }\n (0, _dom.removeElm)(this.infDiv);\n this.infDiv = null;\n\n var tbl = this.dom();\n var captions = (0, _dom.tag)(tbl, 'caption');\n [].forEach.call(captions, function (elm) {\n return (0, _dom.removeElm)(elm);\n });\n }\n\n /**\r\n * Remove all the external column filters\r\n */\n\n }, {\n key: 'removeExternalFlts',\n value: function removeExternalFlts() {\n if (!this.isExternalFlt) {\n return;\n }\n var ids = this.externalFltTgtIds,\n len = ids.length;\n for (var ct = 0; ct < len; ct++) {\n var externalFltTgtId = ids[ct],\n externalFlt = (0, _dom.elm)(externalFltTgtId);\n if (externalFlt) {\n externalFlt.innerHTML = '';\n }\n }\n }\n\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isCustomOptions',\n value: function isCustomOptions(colIndex) {\n return this.hasCustomOptions && this.customOptions.cols.indexOf(colIndex) !== -1;\n }\n\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\n\n }, {\n key: 'getCustomOptions',\n value: function getCustomOptions(colIndex) {\n if ((0, _types.isEmpty)(colIndex) || !this.isCustomOptions(colIndex)) {\n return;\n }\n\n var customOptions = this.customOptions;\n var cols = customOptions.cols;\n var optTxt = [],\n optArray = [];\n var index = cols.indexOf(colIndex);\n var slcValues = customOptions.values[index];\n var slcTexts = customOptions.texts[index];\n var slcSort = customOptions.sorts[index];\n\n for (var r = 0, len = slcValues.length; r < len; r++) {\n optArray.push(slcValues[r]);\n if (slcTexts[r]) {\n optTxt.push(slcTexts[r]);\n } else {\n optTxt.push(slcValues[r]);\n }\n }\n if (slcSort) {\n optArray.sort();\n optTxt.sort();\n }\n return [optArray, optTxt];\n }\n\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\n\n }, {\n key: 'filter',\n value: function filter() {\n if (!this.fltGrid || !this.initialized) {\n return;\n }\n //fire onbefore callback\n this.onBeforeFilter(this);\n this.emitter.emit('before-filtering', this);\n\n var row = this.dom().rows,\n nbRows = this.getRowsNb(true),\n hiddenRows = 0;\n\n this.validRowsIndex = [];\n // search args re-init\n var searchArgs = this.getFiltersValue();\n\n for (var k = this.refRow; k < nbRows; k++) {\n // already filtered rows display re-init\n row[k].style.display = '';\n\n var cells = row[k].cells;\n var nchilds = cells.length;\n\n // checks if row has exact cell #\n if (nchilds !== this.nbCells) {\n continue;\n }\n\n var occurence = [],\n isRowValid = true,\n\n //only for single filter search\n singleFltRowValid = false;\n\n // this loop retrieves cell data\n for (var j = 0; j < nchilds; j++) {\n //searched keyword\n var sA = searchArgs[this.singleSearchFlt ? 0 : j];\n\n if (sA === '') {\n continue;\n }\n\n var cellValue = (0, _string.matchCase)(this.getCellValue(cells[j]), this.caseSensitive);\n\n //multiple search parameter operator ||\n var sAOrSplit = sA.toString().split(this.orOperator),\n\n //multiple search || parameter boolean\n hasMultiOrSA = sAOrSplit.length > 1,\n\n //multiple search parameter operator &&\n sAAndSplit = sA.toString().split(this.anOperator),\n\n //multiple search && parameter boolean\n hasMultiAndSA = sAAndSplit.length > 1;\n\n //detect operators or array query\n if ((0, _types.isArray)(sA) || hasMultiOrSA || hasMultiAndSA) {\n var cS = void 0,\n s = void 0,\n occur = false;\n if ((0, _types.isArray)(sA)) {\n s = sA;\n } else {\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\n }\n // isolate search term and check occurence in cell data\n for (var w = 0, len = s.length; w < len; w++) {\n cS = (0, _string.trim)(s[w]);\n occur = this._testTerm(cS, cellValue, j);\n\n if (occur) {\n this.emitter.emit('highlight-keyword', this, cells[j], cS);\n }\n if (hasMultiOrSA && occur || hasMultiAndSA && !occur) {\n break;\n }\n if ((0, _types.isArray)(sA) && occur) {\n break;\n }\n }\n occurence[j] = occur;\n }\n //single search parameter\n else {\n occurence[j] = this._testTerm((0, _string.trim)(sA), cellValue, j);\n if (occurence[j]) {\n this.emitter.emit('highlight-keyword', this, cells[j], sA);\n }\n } //else single param\n\n if (!occurence[j]) {\n isRowValid = false;\n }\n if (this.singleSearchFlt && occurence[j]) {\n singleFltRowValid = true;\n }\n\n this.emitter.emit('cell-processed', this, j, cells[j]);\n } //for j\n\n if (this.singleSearchFlt && singleFltRowValid) {\n isRowValid = true;\n }\n\n this.validateRow(k, isRowValid);\n if (!isRowValid) {\n hiddenRows++;\n }\n\n this.emitter.emit('row-processed', this, k, this.validRowsIndex.length, isRowValid);\n } // for k\n\n this.nbHiddenRows = hiddenRows;\n\n //fire onafterfilter callback\n this.onAfterFilter(this);\n\n this.emitter.emit('after-filtering', this, searchArgs);\n }\n\n /**\r\n * Test for a match of search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {Number} colIdx Column index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: '_testTerm',\n value: function _testTerm(term, cellValue, colIdx) {\n var numData = void 0;\n var decimal = this.getDecimal(colIdx);\n var reLe = new RegExp(this.leOperator),\n reGe = new RegExp(this.geOperator),\n reL = new RegExp(this.lwOperator),\n reG = new RegExp(this.grOperator),\n reD = new RegExp(this.dfOperator),\n reLk = new RegExp((0, _string.rgxEsc)(this.lkOperator)),\n reEq = new RegExp(this.eqOperator),\n reSt = new RegExp(this.stOperator),\n reEn = new RegExp(this.enOperator),\n\n // re_an = new RegExp(this.anOperator),\n // re_cr = new RegExp(this.curExp),\n reEm = this.emOperator,\n reNm = this.nmOperator,\n reRe = new RegExp((0, _string.rgxEsc)(this.rgxOperator));\n\n term = (0, _string.matchCase)(term, this.caseSensitive);\n\n var occurence = false;\n\n //Search arg operator tests\n var hasLO = reL.test(term),\n hasLE = reLe.test(term),\n hasGR = reG.test(term),\n hasGE = reGe.test(term),\n hasDF = reD.test(term),\n hasEQ = reEq.test(term),\n hasLK = reLk.test(term),\n\n // hatermN = re_an.test(term),\n hasST = reSt.test(term),\n hasEN = reEn.test(term),\n hasEM = reEm === term,\n hasNM = reNm === term,\n hasRE = reRe.test(term);\n\n // Check for dates or resolve date type\n if (this.hasType(colIdx, [_const.DATE])) {\n var dte1 = void 0,\n dte2 = void 0;\n\n var dateType = this.Mod.dateType;\n var isValidDate = dateType.isValid.bind(dateType);\n var parseDate = dateType.parse.bind(dateType);\n var locale = dateType.getLocale(colIdx);\n\n // Search arg dates tests\n var isLDate = hasLO && isValidDate(term.replace(reL, ''), locale);\n var isLEDate = hasLE && isValidDate(term.replace(reLe, ''), locale);\n var isGDate = hasGR && isValidDate(term.replace(reG, ''), locale);\n var isGEDate = hasGE && isValidDate(term.replace(reGe, ''), locale);\n var isDFDate = hasDF && isValidDate(term.replace(reD, ''), locale);\n var isEQDate = hasEQ && isValidDate(term.replace(reEq, ''), locale);\n\n dte1 = parseDate(cellValue, locale);\n\n // lower equal date\n if (isLEDate) {\n dte2 = parseDate(term.replace(reLe, ''), locale);\n occurence = dte1 <= dte2;\n }\n // lower date\n else if (isLDate) {\n dte2 = parseDate(term.replace(reL, ''), locale);\n occurence = dte1 < dte2;\n }\n // greater equal date\n else if (isGEDate) {\n dte2 = parseDate(term.replace(reGe, ''), locale);\n occurence = dte1 >= dte2;\n }\n // greater date\n else if (isGDate) {\n dte2 = parseDate(term.replace(reG, ''), locale);\n occurence = dte1 > dte2;\n }\n // different date\n else if (isDFDate) {\n dte2 = parseDate(term.replace(reD, ''), locale);\n occurence = dte1.toString() !== dte2.toString();\n }\n // equal date\n else if (isEQDate) {\n dte2 = parseDate(term.replace(reEq, ''), locale);\n occurence = dte1.toString() === dte2.toString();\n }\n // searched keyword with * operator doesn't have to be a date\n else if (reLk.test(term)) {\n // like date\n occurence = (0, _string.contains)(term.replace(reLk, ''), cellValue, false, this.caseSensitive);\n } else if (isValidDate(term)) {\n dte2 = parseDate(term, locale);\n occurence = dte1.toString() === dte2.toString();\n }\n //empty\n else if (hasEM) {\n occurence = (0, _string.isEmpty)(cellValue);\n }\n //non-empty\n else if (hasNM) {\n occurence = !(0, _string.isEmpty)(cellValue);\n } else {\n occurence = (0, _string.contains)(term, cellValue, this.isExactMatch(colIdx), this.caseSensitive);\n }\n } else {\n // Convert to number anyways to auto-resolve type in case not\n // defined by configuration\n numData = Number(cellValue) || (0, _number.parse)(cellValue, decimal);\n\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\n // rgx:)\n // lower equal\n if (hasLE) {\n occurence = numData <= (0, _number.parse)(term.replace(reLe, ''), decimal);\n }\n //greater equal\n else if (hasGE) {\n occurence = numData >= (0, _number.parse)(term.replace(reGe, ''), decimal);\n }\n //lower\n else if (hasLO) {\n occurence = numData < (0, _number.parse)(term.replace(reL, ''), decimal);\n }\n //greater\n else if (hasGR) {\n occurence = numData > (0, _number.parse)(term.replace(reG, ''), decimal);\n }\n //different\n else if (hasDF) {\n occurence = (0, _string.contains)(term.replace(reD, ''), cellValue, false, this.caseSensitive) ? false : true;\n }\n //like\n else if (hasLK) {\n occurence = (0, _string.contains)(term.replace(reLk, ''), cellValue, false, this.caseSensitive);\n }\n //equal\n else if (hasEQ) {\n occurence = (0, _string.contains)(term.replace(reEq, ''), cellValue, true, this.caseSensitive);\n }\n //starts with\n else if (hasST) {\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ? true : false;\n }\n //ends with\n else if (hasEN) {\n var searchArg = term.replace(reEn, '');\n occurence = cellValue.lastIndexOf(searchArg, cellValue.length - 1) === cellValue.length - 1 - (searchArg.length - 1) && cellValue.lastIndexOf(searchArg, cellValue.length - 1) > -1 ? true : false;\n }\n //empty\n else if (hasEM) {\n occurence = (0, _string.isEmpty)(cellValue);\n }\n //non-empty\n else if (hasNM) {\n occurence = !(0, _string.isEmpty)(cellValue);\n }\n //regexp\n else if (hasRE) {\n //in case regexp throws\n try {\n //operator is removed\n var srchArg = term.replace(reRe, '');\n var rgx = new RegExp(srchArg);\n occurence = rgx.test(cellValue);\n } catch (ex) {\n occurence = false;\n }\n } else {\n // If numeric type data, perform a strict equality test and\n // fallback to unformatted number string comparison\n if (numData && this.hasType(colIdx, [_const.NUMBER, _const.FORMATTED_NUMBER]) && !this.singleSearchFlt) {\n // parseNb can return 0 for strings which are not\n // formatted numbers, in that case return the original\n // string. TODO: handle this in parseNb\n term = (0, _number.parse)(term, decimal) || term;\n occurence = numData === term || (0, _string.contains)(term.toString(), numData.toString(), this.isExactMatch(colIdx), this.caseSensitive);\n } else {\n // Finally test search term is contained in cell data\n occurence = (0, _string.contains)(term, cellValue, this.isExactMatch(colIdx), this.caseSensitive, this.ignoresDiacritics(colIdx));\n }\n }\n } //else\n\n return occurence;\n }\n\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\n\n }, {\n key: 'getColumnData',\n value: function getColumnData(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getColValues(colIndex, includeHeaders, true, exclude);\n }\n\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\n\n }, {\n key: 'getColumnValues',\n value: function getColumnValues(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getColValues(colIndex, includeHeaders, false, exclude);\n }\n\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\n\n }, {\n key: 'getColValues',\n value: function getColValues(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var exclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n var row = this.dom().rows;\n var nbRows = this.getRowsNb(true);\n var colValues = [];\n var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this);\n\n if (includeHeaders) {\n colValues.push(this.getHeadersText()[colIndex]);\n }\n\n for (var i = this.refRow; i < nbRows; i++) {\n var isExludedRow = false;\n // checks if current row index appears in exclude array\n if (exclude.length > 0) {\n isExludedRow = exclude.indexOf(i) !== -1;\n }\n var cell = row[i].cells,\n nchilds = cell.length;\n\n // checks if row has exact cell # and is not excluded\n if (nchilds === this.nbCells && !isExludedRow) {\n // this loop retrieves cell data\n for (var j = 0; j < nchilds; j++) {\n if (j !== colIndex) {\n continue;\n }\n var data = getContent(cell[j]);\n colValues.push(data);\n }\n }\n }\n return colValues;\n }\n\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\n\n }, {\n key: 'getFilterValue',\n value: function getFilterValue(index) {\n if (!this.fltGrid) {\n return;\n }\n var fltValue = '';\n var flt = this.getFilterElement(index);\n if (!flt) {\n return fltValue;\n }\n\n var fltColType = this.getFilterType(index);\n if (fltColType !== _const.MULTIPLE && fltColType !== _const.CHECKLIST) {\n fltValue = flt.value;\n }\n //mutiple select\n else if (fltColType === _const.MULTIPLE) {\n fltValue = this.feature('dropdown').getValues(index);\n }\n //checklist\n else if (fltColType === _const.CHECKLIST) {\n fltValue = this.feature('checkList').getValues(index);\n }\n //return an empty string if collection is empty or contains a single\n //empty string\n if ((0, _types.isArray)(fltValue) && fltValue.length === 0 || fltValue.length === 1 && fltValue[0] === '') {\n fltValue = '';\n }\n\n return fltValue;\n }\n\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\n\n }, {\n key: 'getFiltersValue',\n value: function getFiltersValue() {\n if (!this.fltGrid) {\n return;\n }\n var searchArgs = [];\n for (var i = 0, len = this.fltIds.length; i < len; i++) {\n var fltValue = this.getFilterValue(i);\n if ((0, _types.isArray)(fltValue)) {\n searchArgs.push(fltValue);\n } else {\n searchArgs.push((0, _string.trim)(fltValue));\n }\n }\n return searchArgs;\n }\n\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\n\n }, {\n key: 'getFilterId',\n value: function getFilterId(index) {\n if (!this.fltGrid) {\n return;\n }\n return this.fltIds[index];\n }\n\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\n\n }, {\n key: 'getFiltersByType',\n value: function getFiltersByType(type, bool) {\n if (!this.fltGrid) {\n return;\n }\n var arr = [];\n for (var i = 0, len = this.fltIds.length; i < len; i++) {\n var fltType = this.getFilterType(i);\n if (fltType === type.toLowerCase()) {\n var a = bool ? i : this.fltIds[i];\n arr.push(a);\n }\n }\n return arr;\n }\n\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\n\n }, {\n key: 'getFilterElement',\n value: function getFilterElement(index) {\n var fltId = this.fltIds[index];\n return (0, _dom.elm)(fltId);\n }\n\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\n\n }, {\n key: 'getCellsNb',\n value: function getCellsNb() {\n var rowIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n var tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\n return tr ? tr.cells.length : 0;\n }\n\n /**\r\n * Return the number of filterable rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row\r\n * @return {Number} Number of filterable rows\r\n */\n\n }, {\n key: 'getRowsNb',\n value: function getRowsNb(includeHeaders) {\n var s = (0, _types.isUndef)(this.refRow) ? 0 : this.refRow;\n var ntrs = this.dom().rows.length;\n if (includeHeaders) {\n s = 0;\n }\n return parseInt(ntrs - s, 10);\n }\n\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\n\n }, {\n key: 'getCellValue',\n value: function getCellValue(cell) {\n var idx = cell.cellIndex;\n var cellParser = this.cellParser;\n // Invoke cellParser for this column if any\n if (cellParser.cols.indexOf(idx) !== -1) {\n return cellParser.parse(this, cell, idx);\n } else {\n return (0, _dom.getText)(cell);\n }\n }\n\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\n\n }, {\n key: 'getCellData',\n value: function getCellData(cell) {\n var colIndex = cell.cellIndex;\n var value = this.getCellValue(cell);\n\n if (this.hasType(colIndex, [_const.FORMATTED_NUMBER])) {\n return (0, _number.parse)(value, this.getDecimal(colIndex));\n } else if (this.hasType(colIndex, [_const.NUMBER])) {\n return Number(value) || (0, _number.parse)(value);\n } else if (this.hasType(colIndex, [_const.DATE])) {\n var dateType = this.Mod.dateType;\n return dateType.parse(value, dateType.getLocale(colIndex));\n }\n\n return value;\n }\n\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\n\n }, {\n key: 'getData',\n value: function getData() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\n }\n\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\n\n }, {\n key: 'getValues',\n value: function getValues() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\n }\n\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getTableData',\n value: function getTableData() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var rows = this.dom().rows;\n var nbRows = this.getRowsNb(true);\n var tblData = [];\n var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this);\n\n if (includeHeaders) {\n var headers = this.getHeadersText(excludeHiddenCols);\n tblData.push([this.getHeadersRowIndex(), headers]);\n }\n for (var k = this.refRow; k < nbRows; k++) {\n var rowData = [k, []];\n var cells = rows[k].cells;\n for (var j = 0, len = cells.length; j < len; j++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(j)) {\n continue;\n }\n }\n var cellValue = getContent(cells[j]);\n rowData[1].push(cellValue);\n }\n tblData.push(rowData);\n }\n return tblData;\n }\n\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getFilteredData',\n value: function getFilteredData() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\n }\n\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getFilteredValues',\n value: function getFilteredValues() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\n }\n\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'filteredData',\n value: function filteredData() {\n var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var excludeHiddenCols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (this.validRowsIndex.length === 0) {\n return [];\n }\n var rows = this.dom().rows,\n filteredData = [];\n var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this);\n\n if (includeHeaders) {\n var headers = this.getHeadersText(excludeHiddenCols);\n filteredData.push([this.getHeadersRowIndex(), headers]);\n }\n\n var validRows = this.getValidRows(true);\n for (var i = 0; i < validRows.length; i++) {\n var rData = [this.validRowsIndex[i], []],\n cells = rows[this.validRowsIndex[i]].cells;\n for (var k = 0; k < cells.length; k++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(k)) {\n continue;\n }\n }\n var cellValue = getContent(cells[k]);\n rData[1].push(cellValue);\n }\n filteredData.push(rData);\n }\n return filteredData;\n }\n\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getFilteredColumnData',\n value: function getFilteredColumnData(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getFilteredDataCol(colIndex, includeHeaders, true, exclude, false);\n }\n\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getVisibleColumnData',\n value: function getVisibleColumnData(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getFilteredDataCol(colIndex, includeHeaders, true, exclude, true);\n }\n\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getFilteredColumnValues',\n value: function getFilteredColumnValues(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getFilteredDataCol(colIndex, includeHeaders, false, exclude, false);\n }\n\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getVisibleColumnValues',\n value: function getVisibleColumnValues(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return this.getFilteredDataCol(colIndex, includeHeaders, false, exclude, true);\n }\n\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\n\n }, {\n key: 'getFilteredDataCol',\n value: function getFilteredDataCol(colIndex) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var typed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var _this9 = this;\n\n var exclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var visible = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\n if ((0, _types.isUndef)(colIndex)) {\n return [];\n }\n\n var rows = this.dom().rows;\n var getContent = typed ? this.getCellData.bind(this) : this.getCellValue.bind(this);\n\n // ensure valid rows index do not contain excluded rows and row is\n // displayed\n var validRows = this.getValidRows(true).filter(function (rowIdx) {\n return exclude.indexOf(rowIdx) === -1 && (visible ? _this9.getRowDisplay(rows[rowIdx]) !== 'none' : true);\n });\n\n // convert column value to expected type if necessary\n var validColValues = validRows.map(function (rowIdx) {\n return getContent(rows[rowIdx].cells[colIndex]);\n });\n\n if (includeHeaders) {\n validColValues.unshift(this.getHeadersText()[colIndex]);\n }\n\n return validColValues;\n }\n\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\n\n }, {\n key: 'getRowDisplay',\n value: function getRowDisplay(row) {\n return row.style.display;\n }\n\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\n\n }, {\n key: 'validateRow',\n value: function validateRow(rowIndex, isValid) {\n var row = this.dom().rows[rowIndex];\n if (!row || typeof isValid !== 'boolean') {\n return;\n }\n\n // always visible rows are valid\n if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) {\n isValid = true;\n }\n\n var displayFlag = isValid ? '' : _const.NONE,\n validFlag = isValid ? 'true' : 'false';\n row.style.display = displayFlag;\n\n if (this.paging) {\n row.setAttribute('validRow', validFlag);\n }\n\n if (isValid) {\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\n this.validRowsIndex.push(rowIndex);\n }\n\n this.onRowValidated(this, rowIndex);\n\n this.emitter.emit('row-validated', this, rowIndex);\n }\n }\n\n /**\r\n * Validate all filterable rows\r\n */\n\n }, {\n key: 'validateAllRows',\n value: function validateAllRows() {\n if (!this.initialized) {\n return;\n }\n this.validRowsIndex = [];\n for (var k = this.refRow; k < this.nbFilterableRows; k++) {\n this.validateRow(k, true);\n }\n }\n\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\n\n }, {\n key: 'setFilterValue',\n value: function setFilterValue(index) {\n var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (!this.fltGrid) {\n return;\n }\n var slc = this.getFilterElement(index),\n fltColType = this.getFilterType(index);\n\n if (fltColType !== _const.MULTIPLE && fltColType !== _const.CHECKLIST) {\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index, this.linkedFilters, this.isExternalFlt);\n }\n slc.value = query;\n }\n //multiple selects\n else if (fltColType === _const.MULTIPLE) {\n var values = (0, _types.isArray)(query) ? query : query.split(' ' + this.orOperator + ' ');\n\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index, this.linkedFilters, this.isExternalFlt);\n }\n\n this.emitter.emit('select-options', this, index, values);\n }\n //checklist\n else if (fltColType === _const.CHECKLIST) {\n var _values = [];\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-checklist-filter', this, index, this.linkedFilters);\n }\n if ((0, _types.isArray)(query)) {\n _values = query;\n } else {\n query = (0, _string.matchCase)(query, this.caseSensitive);\n _values = query.split(' ' + this.orOperator + ' ');\n }\n\n this.emitter.emit('select-checklist-options', this, index, _values);\n }\n }\n\n /**\r\n * Set them columns' widths as per configuration\r\n * @param {Element} tbl DOM element\r\n */\n\n }, {\n key: 'setColWidths',\n value: function setColWidths(tbl) {\n if (!this.hasColWidths) {\n return;\n }\n tbl = tbl || this.dom();\n\n var nbCols = this.nbCells;\n var colWidths = this.colWidths;\n var colTags = (0, _dom.tag)(tbl, 'col');\n var tblHasColTag = colTags.length > 0;\n var frag = !tblHasColTag ? doc.createDocumentFragment() : null;\n for (var k = 0; k < nbCols; k++) {\n var col = void 0;\n if (tblHasColTag) {\n col = colTags[k];\n } else {\n col = (0, _dom.createElm)('col');\n frag.appendChild(col);\n }\n col.style.width = colWidths[k];\n }\n if (!tblHasColTag) {\n tbl.insertBefore(frag, tbl.firstChild);\n }\n }\n\n /**\r\n * Make defined rows always visible\r\n */\n\n }, {\n key: 'enforceVisibility',\n value: function enforceVisibility() {\n if (!this.hasVisibleRows) {\n return;\n }\n var nbRows = this.getRowsNb(true);\n for (var i = 0, len = this.visibleRows.length; i < len; i++) {\n var row = this.visibleRows[i];\n //row index cannot be > nrows\n if (row <= nbRows) {\n this.validateRow(row, true);\n }\n }\n }\n\n /**\r\n * Clear all the filters' values\r\n */\n\n }, {\n key: 'clearFilters',\n value: function clearFilters() {\n if (!this.fltGrid) {\n return;\n }\n\n this.emitter.emit('before-clearing-filters', this);\n this.onBeforeReset(this, this.getFiltersValue());\n\n for (var i = 0, len = this.fltIds.length; i < len; i++) {\n this.setFilterValue(i, '');\n }\n\n this.filter();\n\n this.onAfterReset(this);\n this.emitter.emit('after-clearing-filters', this);\n }\n\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\n\n }, {\n key: 'getActiveFilterId',\n value: function getActiveFilterId() {\n return this.activeFilterId;\n }\n\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\n\n }, {\n key: 'setActiveFilterId',\n value: function setActiveFilterId(filterId) {\n this.activeFilterId = filterId;\n }\n\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\n\n }, {\n key: 'getColumnIndexFromFilterId',\n value: function getColumnIndexFromFilterId() {\n var filterId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var idx = filterId.split('_')[0];\n idx = idx.split(this.prfxFlt)[1];\n return parseInt(idx, 10);\n }\n\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\n\n }, {\n key: 'buildFilterId',\n value: function buildFilterId(colIndex) {\n return '' + this.prfxFlt + colIndex + '_' + this.id;\n }\n\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\n\n }, {\n key: 'activateFilter',\n value: function activateFilter(colIndex) {\n if ((0, _types.isUndef)(colIndex)) {\n return;\n }\n this.setActiveFilterId(this.getFilterId(colIndex));\n }\n\n /**\r\n * Refresh the filters subject to linking ('select', 'multiple',\r\n * 'checklist' type)\r\n */\n\n }, {\n key: 'linkFilters',\n value: function linkFilters() {\n if (!this.linkedFilters || !this.activeFilterId) {\n return;\n }\n var slcA1 = this.getFiltersByType(_const.SELECT, true),\n slcA2 = this.getFiltersByType(_const.MULTIPLE, true),\n slcA3 = this.getFiltersByType(_const.CHECKLIST, true),\n slcIndex = slcA1.concat(slcA2);\n slcIndex = slcIndex.concat(slcA3);\n\n var activeIdx = this.getColumnIndexFromFilterId(this.activeFilterId);\n\n for (var i = 0, len = slcIndex.length; i < len; i++) {\n var colIdx = slcIndex[i];\n var curSlc = (0, _dom.elm)(this.fltIds[colIdx]);\n var slcSelectedValue = this.getFilterValue(colIdx);\n\n // Welcome to cyclomatic complexity hell :)\n // TODO: simplify/refactor if statement\n if (activeIdx !== colIdx || this.paging && slcA1.indexOf(colIdx) !== -1 && activeIdx === colIdx || !this.paging && (slcA3.indexOf(colIdx) !== -1 || slcA2.indexOf(colIdx) !== -1) || slcSelectedValue === this.getClearFilterText(colIdx)) {\n\n //1st option needs to be inserted\n if (this.loadFltOnDemand) {\n var opt0 = (0, _dom.createOpt)(this.getClearFilterText(colIdx), '');\n curSlc.innerHTML = '';\n curSlc.appendChild(opt0);\n }\n\n if (slcA3.indexOf(colIdx) !== -1) {\n this.emitter.emit('build-checklist-filter', this, colIdx, true);\n } else {\n this.emitter.emit('build-select-filter', this, colIdx, true);\n }\n\n this.setFilterValue(colIdx, slcSelectedValue);\n }\n }\n }\n\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isExactMatch',\n value: function isExactMatch(colIndex) {\n var fltType = this.getFilterType(colIndex);\n return this.exactMatchByCol[colIndex] || this.exactMatch || fltType !== _const.INPUT;\n }\n\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isRowValid',\n value: function isRowValid(rowIndex) {\n return this.getValidRows().indexOf(rowIndex) !== -1;\n }\n\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isRowDisplayed',\n value: function isRowDisplayed(rowIndex) {\n var row = this.dom().rows[rowIndex];\n return this.getRowDisplay(row) === '';\n }\n\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'ignoresDiacritics',\n value: function ignoresDiacritics(colIndex) {\n var ignoreDiac = this.ignoreDiacritics;\n if ((0, _types.isArray)(ignoreDiac)) {\n return ignoreDiac[colIndex];\n }\n return Boolean(ignoreDiac);\n }\n\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\n\n }, {\n key: 'getClearFilterText',\n value: function getClearFilterText(colIndex) {\n var clearText = this.clearFilterText;\n if ((0, _types.isArray)(clearText)) {\n return clearText[colIndex];\n }\n return clearText;\n }\n\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isImported',\n value: function isImported(filePath) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'script';\n\n var imported = false,\n attr = type === 'script' ? 'src' : 'href',\n files = (0, _dom.tag)(doc, type);\n for (var i = 0, len = files.length; i < len; i++) {\n if ((0, _types.isUndef)(files[i][attr])) {\n continue;\n }\n if (files[i][attr].match(filePath)) {\n imported = true;\n break;\n }\n }\n return imported;\n }\n\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\n\n }, {\n key: 'import',\n value: function _import(fileId, filePath, callback) {\n var _this10 = this;\n\n var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'script';\n\n if (this.isImported(filePath, type)) {\n return;\n }\n var o = this,\n isLoaded = false,\n file = void 0,\n head = (0, _dom.tag)(doc, 'head')[0];\n\n if (type.toLowerCase() === 'link') {\n file = (0, _dom.createElm)('link', ['id', fileId], ['type', 'text/css'], ['rel', 'stylesheet'], ['href', filePath]);\n } else {\n file = (0, _dom.createElm)('script', ['id', fileId], ['type', 'text/javascript'], ['src', filePath]);\n }\n\n //Browser <> IE onload event works only for scripts, not for stylesheets\n file.onload = file.onreadystatechange = function () {\n if (!isLoaded && (!_this10.readyState || _this10.readyState === 'loaded' || _this10.readyState === 'complete')) {\n isLoaded = true;\n if (typeof callback === 'function') {\n callback.call(null, o);\n }\n }\n };\n file.onerror = function () {\n throw new Error('TableFilter could not load: ' + filePath);\n };\n head.appendChild(file);\n }\n\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isInitialized',\n value: function isInitialized() {\n return this.initialized;\n }\n\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\n\n }, {\n key: 'getFiltersId',\n value: function getFiltersId() {\n return this.fltIds || [];\n }\n\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\n\n }, {\n key: 'getValidRows',\n value: function getValidRows(reCalc) {\n if (!reCalc) {\n return this.validRowsIndex;\n }\n\n var nbRows = this.getRowsNb(true);\n this.validRowsIndex = [];\n for (var k = this.refRow; k < nbRows; k++) {\n var r = this.dom().rows[k];\n if (!this.paging) {\n if (this.getRowDisplay(r) !== _const.NONE) {\n this.validRowsIndex.push(r.rowIndex);\n }\n } else {\n if (r.getAttribute('validRow') === 'true' || r.getAttribute('validRow') === null) {\n this.validRowsIndex.push(r.rowIndex);\n }\n }\n }\n return this.validRowsIndex;\n }\n\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getFiltersRowIndex',\n value: function getFiltersRowIndex() {\n return this.filtersRowIndex;\n }\n\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getHeadersRowIndex',\n value: function getHeadersRowIndex() {\n return this.headersRow;\n }\n\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getStartRowIndex',\n value: function getStartRowIndex() {\n return this.refRow;\n }\n\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getLastRowIndex',\n value: function getLastRowIndex() {\n var nbRows = this.getRowsNb(true);\n return nbRows - 1;\n }\n\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'hasType',\n value: function hasType(colIndex) {\n var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (this.colTypes.length === 0) {\n return false;\n }\n var colType = this.colTypes[colIndex];\n if ((0, _types.isObj)(colType)) {\n colType = colType.type;\n }\n return types.indexOf(colType) !== -1;\n }\n\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\n\n }, {\n key: 'getHeaderElement',\n value: function getHeaderElement(colIndex) {\n var table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\n var tHead = (0, _dom.tag)(table, 'thead');\n var rowIdx = this.getHeadersRowIndex();\n var header = void 0;\n if (tHead.length === 0) {\n header = table.rows[rowIdx].cells[colIndex];\n }\n if (tHead.length === 1) {\n header = tHead[0].rows[rowIdx].cells[colIndex];\n }\n return header;\n }\n\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\n\n }, {\n key: 'getHeadersText',\n value: function getHeadersText() {\n var excludeHiddenCols = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var headers = [];\n for (var j = 0; j < this.nbCells; j++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(j)) {\n continue;\n }\n }\n var header = this.getHeaderElement(j);\n var headerText = (0, _dom.getFirstTextNode)(header);\n headers.push(headerText);\n }\n return headers;\n }\n\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\n\n }, {\n key: 'getFilterType',\n value: function getFilterType(colIndex) {\n var colType = this.cfg['col_' + colIndex];\n return !colType ? _const.INPUT : colType.toLowerCase();\n }\n\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getFilterableRowsNb',\n value: function getFilterableRowsNb() {\n return this.getRowsNb(false);\n }\n\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\n\n }, {\n key: 'getValidRowsNb',\n value: function getValidRowsNb() {\n var reCalc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return this.getValidRows(reCalc).length;\n }\n\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\n\n }, {\n key: 'dom',\n value: function dom() {\n return this.tbl;\n }\n\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\n\n }, {\n key: 'getDecimal',\n value: function getDecimal(colIndex) {\n var decimal = this.decimalSeparator;\n if (this.hasType(colIndex, [_const.FORMATTED_NUMBER])) {\n var colType = this.colTypes[colIndex];\n if (colType.hasOwnProperty('decimal')) {\n decimal = colType.decimal;\n }\n }\n return decimal;\n }\n\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\n\n }, {\n key: 'config',\n value: function config() {\n return this.cfg;\n }\n }]);\n\n return TableFilter;\n}();\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports) {\n\nexports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n}\n\nmodule.exports = allCharsReg;\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar forEach = __webpack_require__(26),\n spaceSplit = __webpack_require__(43),\n classChecks = __webpack_require__(3);\n\nvar isString = classChecks.isString;\n\nfunction collectSimilarMethods(set, fn) {\n var methods = {};\n if (isString(set)) {\n set = spaceSplit(set);\n }\n forEach(set, function(el, i) {\n fn(methods, el, i);\n });\n return methods;\n}\n\nmodule.exports = collectSimilarMethods;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CommonChars = __webpack_require__(44);\n\nvar HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nfunction commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n}\n\nmodule.exports = commaSplit;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar STRING_FORMAT_REG = __webpack_require__(155),\n CommonChars = __webpack_require__(44),\n memoizeFunction = __webpack_require__(145);\n\nvar OPEN_BRACE = CommonChars.OPEN_BRACE,\n CLOSE_BRACE = CommonChars.CLOSE_BRACE;\n\nfunction createFormatMatcher(bracketMatcher, percentMatcher, precheck) {\n\n var reg = STRING_FORMAT_REG;\n var compileMemoized = memoizeFunction(compile);\n\n function getToken(format, match) {\n var get, token, literal, fn;\n var bKey = match[2];\n var pLit = match[3];\n var pKey = match[5];\n if (match[4] && percentMatcher) {\n token = pKey;\n get = percentMatcher;\n } else if (bKey) {\n token = bKey;\n get = bracketMatcher;\n } else if (pLit && percentMatcher) {\n literal = pLit;\n } else {\n literal = match[1] || match[0];\n }\n if (get) {\n assertPassesPrecheck(precheck, bKey, pKey);\n fn = function(obj, opt) {\n return get(obj, token, opt);\n };\n }\n format.push(fn || getLiteral(literal));\n }\n\n function getSubstring(format, str, start, end) {\n if (end > start) {\n var sub = str.slice(start, end);\n assertNoUnmatched(sub, OPEN_BRACE);\n assertNoUnmatched(sub, CLOSE_BRACE);\n format.push(function() {\n return sub;\n });\n }\n }\n\n function getLiteral(str) {\n return function() {\n return str;\n };\n }\n\n function assertPassesPrecheck(precheck, bt, pt) {\n if (precheck && !precheck(bt, pt)) {\n throw new TypeError('Invalid token '+ (bt || pt) +' in format string');\n }\n }\n\n function assertNoUnmatched(str, chr) {\n if (str.indexOf(chr) !== -1) {\n throw new TypeError('Unmatched '+ chr +' in format string');\n }\n }\n\n function compile(str) {\n var format = [], lastIndex = 0, match;\n reg.lastIndex = 0;\n while(match = reg.exec(str)) {\n getSubstring(format, str, lastIndex, match.index);\n getToken(format, match);\n lastIndex = reg.lastIndex;\n }\n getSubstring(format, str, lastIndex, str.length);\n return format;\n }\n\n return function(str, obj, opt) {\n var format = compileMemoized(str), result = '';\n for (var i = 0; i < format.length; i++) {\n result += format[i](obj, opt);\n }\n return result;\n };\n}\n\nmodule.exports = createFormatMatcher;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n}\n\nmodule.exports = defineAccessor;\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar simpleClone = __webpack_require__(42),\n defineAccessor = __webpack_require__(132),\n coreUtilityAliases = __webpack_require__(10);\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOptionsAccessor(namespace, defaults) {\n var obj = simpleClone(defaults);\n\n function getOption(name) {\n return obj[name];\n }\n\n function setOption(arg1, arg2) {\n var options;\n if (arguments.length === 1) {\n options = arg1;\n } else {\n options = {};\n options[arg1] = arg2;\n }\n forEachProperty(options, function(val, name) {\n if (val === null) {\n val = defaults[name];\n }\n obj[name] = val;\n });\n }\n\n defineAccessor(namespace, 'getOption', getOption);\n defineAccessor(namespace, 'setOption', setOption);\n return getOption;\n}\n\nmodule.exports = defineOptionsAccessor;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3);\n\nvar isString = classChecks.isString;\n\nfunction escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\\\/\\'*+?|()\\[\\]{}.^$-])/g,'\\\\$1');\n}\n\nmodule.exports = escapeRegExp;\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction filter(arr, fn) {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var el = arr[i];\n if (i in arr && fn(el, i)) {\n result.push(el);\n }\n }\n return result;\n}\n\nmodule.exports = filter;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\n\nmodule.exports = getKeys;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction getOrdinalSuffix(num) {\n if (num >= 11 && num <= 13) {\n return 'th';\n } else {\n switch(num % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n}\n\nmodule.exports = getOrdinalSuffix;\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n}\n\nmodule.exports = getOwnKey;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isArrayIndex = __webpack_require__(142);\n\nfunction getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) {\n indexes.push(+i);\n }\n }\n indexes.sort(function(a, b) {\n var aLoop = a > fromIndex;\n var bLoop = b > fromIndex;\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n}\n\nmodule.exports = getSparseArrayIndexes;\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasOwnEnumeratedProperties(obj) {\n // Plain objects are generally defined as having enumerated properties\n // all their own, however in early IE environments without defineProperty,\n // there may also be enumerated methods in the prototype chain, so check\n // for both of these cases.\n var objectProto = Object.prototype;\n for (var key in obj) {\n var val = obj[key];\n if (!hasOwn(obj, key) && val !== objectProto[key]) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = hasOwnEnumeratedProperties;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coreUtilityAliases = __webpack_require__(10);\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasValidPlainObjectPrototype(obj) {\n var hasToString = 'toString' in obj;\n var hasConstructor = 'constructor' in obj;\n // An object created with Object.create(null) has no methods in the\n // prototype chain, so check if any are missing. The additional hasToString\n // check is for false positives on some host objects in old IE which have\n // toString but no constructor. If the object has an inherited constructor,\n // then check if it is Object (the \"isPrototypeOf\" tapdance here is a more\n // robust way of ensuring this if the global has been hijacked). Note that\n // accessing the constructor directly (without \"in\" or \"hasOwnProperty\")\n // will throw a permissions error in IE8 on cross-domain windows.\n return (!hasConstructor && !hasToString) ||\n (hasConstructor && !hasOwn(obj, 'constructor') &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf'));\n}\n\nmodule.exports = hasValidPlainObjectPrototype;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n}\n\nmodule.exports = isArrayIndex;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isClass = __webpack_require__(72),\n isObjectType = __webpack_require__(53),\n hasOwnEnumeratedProperties = __webpack_require__(140),\n hasValidPlainObjectPrototype = __webpack_require__(141);\n\nfunction isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n}\n\nmodule.exports = isPlainObject;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getSparseArrayIndexes = __webpack_require__(139);\n\nfunction iterateOverSparseArray(arr, fn, fromIndex, loop) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index;\n for (var i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n fn.call(arr, arr[index], index, arr);\n }\n return arr;\n}\n\nmodule.exports = iterateOverSparseArray;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar INTERNAL_MEMOIZE_LIMIT = __webpack_require__(152),\n coreUtilityAliases = __webpack_require__(10);\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n}\n\nmodule.exports = memoizeFunction;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CommonChars = __webpack_require__(44);\n\nvar HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD;\n\nfunction periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n}\n\nmodule.exports = periodSplit;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PRIVATE_PROP_PREFIX = __webpack_require__(154),\n coreUtilityAliases = __webpack_require__(10);\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction privatePropertyAccessor(key) {\n var privateKey = PRIVATE_PROP_PREFIX + key;\n return function(obj, val) {\n if (arguments.length > 1) {\n setProperty(obj, privateKey, val);\n return obj;\n }\n return obj[privateKey];\n };\n}\n\nmodule.exports = privatePropertyAccessor;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction repeatString(str, num) {\n var result = '';\n str = str.toString();\n while (num > 0) {\n if (num & 1) {\n result += str;\n }\n if (num >>= 1) {\n str += str;\n }\n }\n return result;\n}\n\nmodule.exports = repeatString;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n}\n\nmodule.exports = setChainableConstructor;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction trim(str) {\n return str.trim();\n}\n\nmodule.exports = trim;\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n}\n\nmodule.exports = wrapNamespace;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 1000;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 'Boolean Number String Date RegExp Function Array Error Set Map';\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = '_sugar_';\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = /([{}])\\1|\\{([^}]*)\\}|(%)%|(%(\\w*))/g;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CommonChars = __webpack_require__(44),\n chr = __webpack_require__(75),\n allCharsReg = __webpack_require__(128);\n\nvar HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO,\n FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO,\n HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD,\n FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD,\n HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nvar fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\nfunction buildFullWidthNumber() {\n var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = '';\n fullWidthNumberMap = {};\n for (var i = 0, digit; i <= 9; i++) {\n digit = chr(i + FULL_WIDTH_ZERO);\n fwn += digit;\n fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO);\n }\n fullWidthNumberMap[hwc] = '';\n fullWidthNumberMap[fwp] = hwp;\n // Mapping this to itself to capture it easily\n // in stringToNumber to detect decimals later.\n fullWidthNumberMap[hwp] = hwp;\n fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp);\n fullWidthNumbers = fwn;\n}\n\nbuildFullWidthNumber();\n\nmodule.exports = {\n fullWidthNumberReg: fullWidthNumberReg,\n fullWidthNumberMap: fullWidthNumberMap,\n fullWidthNumbers: fullWidthNumbers\n};\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar wrapNamespace = __webpack_require__(151);\n\nmodule.exports = {\n alias: wrapNamespace('alias'),\n defineStatic: wrapNamespace('defineStatic'),\n defineInstance: wrapNamespace('defineInstance'),\n defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'),\n defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'),\n defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'),\n defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments')\n};\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addDays;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addHours;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addMilliseconds;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addMinutes;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addMonths;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addSeconds;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addWeeks;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.addYears;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n advanceDateWithArgs = __webpack_require__(76);\n\nSugar.Date.defineInstanceWithArguments({\n\n 'advance': function(d, args) {\n return advanceDateWithArgs(d, args, 1);\n }\n\n});\n\nmodule.exports = Sugar.Date.advance;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.beginningOfDay;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n resetTime = __webpack_require__(92),\n getWeekday = __webpack_require__(20),\n setWeekday = __webpack_require__(24);\n\nSugar.Date.defineInstance({\n\n 'beginningOfISOWeek': function(date) {\n var day = getWeekday(date);\n if (day === 0) {\n day = -6;\n } else if (day !== 1) {\n day = 1;\n }\n setWeekday(date, day);\n return resetTime(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.beginningOfISOWeek;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.beginningOfMonth;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.beginningOfWeek;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.beginningOfYear;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setDateChainableConstructor = __webpack_require__(226);\n\nsetDateChainableConstructor();\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n cloneDate = __webpack_require__(33);\n\nSugar.Date.defineInstance({\n\n 'clone': function(date) {\n return cloneDate(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.clone;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDate = __webpack_require__(28);\n\n__webpack_require__(172);\n\nSugar.Date.defineStatic({\n\n 'create': function(d, options) {\n return createDate(d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.create;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.daysAgo;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.daysFromNow;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n getDaysInMonth = __webpack_require__(86);\n\nSugar.Date.defineInstance({\n\n 'daysInMonth': function(date) {\n return getDaysInMonth(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.daysInMonth;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.daysSince;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.daysUntil;\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.endOfDay;\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n DateUnitIndexes = __webpack_require__(5),\n getWeekday = __webpack_require__(20),\n setWeekday = __webpack_require__(24),\n moveToEndOfUnit = __webpack_require__(48);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'endOfISOWeek': function(date) {\n if (getWeekday(date) !== 0) {\n setWeekday(date, 7);\n }\n return moveToEndOfUnit(date, DAY_INDEX);\n }\n\n});\n\nmodule.exports = Sugar.Date.endOfISOWeek;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.endOfMonth;\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.endOfWeek;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.endOfYear;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n dateFormat = __webpack_require__(81);\n\nSugar.Date.defineInstance({\n\n 'format': function(date, f, localeCode) {\n return dateFormat(date, f, localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.format;\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDateWithContext = __webpack_require__(80);\n\nSugar.Date.defineInstance({\n\n 'get': function(date, d, options) {\n return createDateWithContext(date, d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.get;\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8),\n getKeys = __webpack_require__(136);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocaleCodes': function() {\n return getKeys(localeManager.getAll());\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocaleCodes;\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocales': function() {\n return localeManager.getAll();\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocales;\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n getWeekNumber = __webpack_require__(60);\n\nSugar.Date.defineInstance({\n\n 'getISOWeek': function(date) {\n return getWeekNumber(date, true);\n }\n\n});\n\nmodule.exports = Sugar.Date.getISOWeek;\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getLocale': function(code) {\n return localeManager.get(code, !code);\n }\n\n});\n\nmodule.exports = Sugar.Date.getLocale;\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n _dateOptions = __webpack_require__(64);\n\nmodule.exports = Sugar.Date.getOption;\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n getUTCOffset = __webpack_require__(89);\n\nSugar.Date.defineInstance({\n\n 'getUTCOffset': function(date, iso) {\n return getUTCOffset(date, iso);\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCOffset;\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\nSugar.Date.defineInstance({\n\n 'getUTCWeekday': function(date) {\n return date.getUTCDay();\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCWeekday;\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n getWeekday = __webpack_require__(20);\n\nSugar.Date.defineInstance({\n\n 'getWeekday': function(date) {\n return getWeekday(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.getWeekday;\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.hoursAgo;\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.hoursFromNow;\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.hoursSince;\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.hoursUntil;\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Static Methods\n__webpack_require__(4);\n__webpack_require__(174);\n__webpack_require__(187);\n__webpack_require__(188);\n__webpack_require__(190);\n__webpack_require__(275);\n__webpack_require__(284);\n\n// Instance Methods\n__webpack_require__(324);\n__webpack_require__(325);\n__webpack_require__(326);\n__webpack_require__(327);\n__webpack_require__(328);\n__webpack_require__(329);\n__webpack_require__(330);\n__webpack_require__(331);\n__webpack_require__(332);\n__webpack_require__(333);\n__webpack_require__(334);\n__webpack_require__(335);\n__webpack_require__(336);\n__webpack_require__(337);\n__webpack_require__(338);\n__webpack_require__(339);\n__webpack_require__(340);\n__webpack_require__(341);\n__webpack_require__(342);\n__webpack_require__(343);\n__webpack_require__(344);\n__webpack_require__(345);\n__webpack_require__(346);\n__webpack_require__(347);\n__webpack_require__(348);\n__webpack_require__(349);\n__webpack_require__(350);\n__webpack_require__(351);\n__webpack_require__(352);\n__webpack_require__(353);\n__webpack_require__(354);\n__webpack_require__(355);\n__webpack_require__(356);\n__webpack_require__(357);\n__webpack_require__(358);\n__webpack_require__(359);\n__webpack_require__(360);\n__webpack_require__(361);\n__webpack_require__(362);\n__webpack_require__(363);\n__webpack_require__(364);\n__webpack_require__(365);\n__webpack_require__(366);\n__webpack_require__(367);\n__webpack_require__(368);\n__webpack_require__(369);\n__webpack_require__(370);\n__webpack_require__(371);\n__webpack_require__(372);\n__webpack_require__(373);\n__webpack_require__(374);\n__webpack_require__(375);\n__webpack_require__(376);\n__webpack_require__(377);\n__webpack_require__(378);\n__webpack_require__(379);\n__webpack_require__(380);\n__webpack_require__(381);\n__webpack_require__(382);\n__webpack_require__(383);\n__webpack_require__(384);\n__webpack_require__(385);\n__webpack_require__(386);\n__webpack_require__(387);\n__webpack_require__(388);\n__webpack_require__(389);\n__webpack_require__(390);\n__webpack_require__(391);\n__webpack_require__(392);\n__webpack_require__(393);\n__webpack_require__(394);\n__webpack_require__(395);\n__webpack_require__(396);\n__webpack_require__(397);\n__webpack_require__(398);\n__webpack_require__(399);\n__webpack_require__(400);\n__webpack_require__(401);\n__webpack_require__(402);\n__webpack_require__(403);\n__webpack_require__(404);\n__webpack_require__(158);\n__webpack_require__(159);\n__webpack_require__(160);\n__webpack_require__(161);\n__webpack_require__(162);\n__webpack_require__(163);\n__webpack_require__(164);\n__webpack_require__(165);\n__webpack_require__(166);\n__webpack_require__(167);\n__webpack_require__(168);\n__webpack_require__(169);\n__webpack_require__(170);\n__webpack_require__(171);\n__webpack_require__(173);\n__webpack_require__(175);\n__webpack_require__(176);\n__webpack_require__(177);\n__webpack_require__(178);\n__webpack_require__(179);\n__webpack_require__(180);\n__webpack_require__(181);\n__webpack_require__(182);\n__webpack_require__(183);\n__webpack_require__(184);\n__webpack_require__(185);\n__webpack_require__(186);\n__webpack_require__(189);\n__webpack_require__(192);\n__webpack_require__(193);\n__webpack_require__(194);\n__webpack_require__(195);\n__webpack_require__(196);\n__webpack_require__(197);\n__webpack_require__(198);\n__webpack_require__(229);\n__webpack_require__(230);\n__webpack_require__(231);\n__webpack_require__(232);\n__webpack_require__(233);\n__webpack_require__(234);\n__webpack_require__(235);\n__webpack_require__(236);\n__webpack_require__(237);\n__webpack_require__(238);\n__webpack_require__(239);\n__webpack_require__(240);\n__webpack_require__(241);\n__webpack_require__(242);\n__webpack_require__(243);\n__webpack_require__(244);\n__webpack_require__(245);\n__webpack_require__(246);\n__webpack_require__(247);\n__webpack_require__(248);\n__webpack_require__(249);\n__webpack_require__(250);\n__webpack_require__(251);\n__webpack_require__(252);\n__webpack_require__(253);\n__webpack_require__(254);\n__webpack_require__(255);\n__webpack_require__(256);\n__webpack_require__(257);\n__webpack_require__(258);\n__webpack_require__(259);\n__webpack_require__(260);\n__webpack_require__(261);\n__webpack_require__(262);\n__webpack_require__(263);\n__webpack_require__(264);\n__webpack_require__(265);\n__webpack_require__(266);\n__webpack_require__(267);\n__webpack_require__(268);\n__webpack_require__(269);\n__webpack_require__(270);\n__webpack_require__(271);\n__webpack_require__(273);\n__webpack_require__(274);\n__webpack_require__(276);\n__webpack_require__(277);\n__webpack_require__(278);\n__webpack_require__(279);\n__webpack_require__(280);\n__webpack_require__(281);\n__webpack_require__(282);\n__webpack_require__(283);\n__webpack_require__(286);\n__webpack_require__(287);\n__webpack_require__(298);\n__webpack_require__(299);\n__webpack_require__(300);\n__webpack_require__(301);\n__webpack_require__(302);\n__webpack_require__(303);\n__webpack_require__(304);\n__webpack_require__(305);\n\n// Accessors\n__webpack_require__(191);\n__webpack_require__(285);\n\nmodule.exports = __webpack_require__(0);\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar map = __webpack_require__(73),\n escapeRegExp = __webpack_require__(134);\n\nfunction arrayToRegAlternates(arr) {\n var joined = arr.join('');\n if (!arr || !arr.length) {\n return '';\n }\n if (joined.length === arr.length) {\n return '[' + joined + ']';\n }\n // map handles sparse arrays so no need to compact the array here.\n return map(arr, escapeRegExp).join('|');\n}\n\nmodule.exports = arrayToRegAlternates;\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n DateUnitIndexes = __webpack_require__(5),\n forEach = __webpack_require__(26),\n compareDate = __webpack_require__(79),\n advanceDate = __webpack_require__(38),\n moveToEndOfUnit = __webpack_require__(48),\n simpleCapitalize = __webpack_require__(55),\n namespaceAliases = __webpack_require__(22),\n defineInstanceSimilar = __webpack_require__(41),\n moveToBeginningOfUnit = __webpack_require__(47),\n createDateWithContext = __webpack_require__(80),\n getTimeDistanceForUnit = __webpack_require__(59);\n\nvar sugarDate = namespaceAliases.sugarDate,\n HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction buildDateUnitMethods() {\n\n defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) {\n var name = unit.name, caps = simpleCapitalize(name);\n\n if (index > DAY_INDEX) {\n forEach(['Last','This','Next'], function(shift) {\n methods['is' + shift + caps] = function(d, localeCode) {\n return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' });\n };\n });\n }\n if (index > HOURS_INDEX) {\n methods['beginningOf' + caps] = function(d, localeCode) {\n return moveToBeginningOfUnit(d, index, localeCode);\n };\n methods['endOf' + caps] = function(d, localeCode) {\n return moveToEndOfUnit(d, index, localeCode);\n };\n }\n\n methods['add' + caps + 's'] = function(d, num, reset) {\n return advanceDate(d, name, num, reset);\n };\n\n var since = function(date, d, options) {\n return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit);\n };\n\n methods[name + 'sAgo'] = methods[name + 'sUntil'] = until;\n methods[name + 'sSince'] = methods[name + 'sFromNow'] = since;\n\n });\n\n}\n\nmodule.exports = buildDateUnitMethods;\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n createDate = __webpack_require__(28),\n mathAliases = __webpack_require__(7),\n advanceDate = __webpack_require__(38),\n namespaceAliases = __webpack_require__(22),\n defineInstanceSimilar = __webpack_require__(41);\n\nvar sugarNumber = namespaceAliases.sugarNumber,\n round = mathAliases.round;\n\nfunction buildNumberUnitMethods() {\n defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {\n var name = unit.name, base, after, before;\n base = function(n) {\n return round(n * unit.multiplier);\n };\n after = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, n);\n };\n before = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, -n);\n };\n methods[name] = base;\n methods[name + 's'] = base;\n methods[name + 'Before'] = before;\n methods[name + 'sBefore'] = before;\n methods[name + 'Ago'] = before;\n methods[name + 'sAgo'] = before;\n methods[name + 'After'] = after;\n methods[name + 'sAfter'] = after;\n methods[name + 'FromNow'] = after;\n methods[name + 'sFromNow'] = after;\n });\n}\n\nmodule.exports = buildNumberUnitMethods;\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n spaceSplit = __webpack_require__(43),\n fullCompareDate = __webpack_require__(83),\n namespaceAliases = __webpack_require__(22),\n defineInstanceSimilar = __webpack_require__(41);\n\nvar English = LocaleHelpers.English,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction buildRelativeAliases() {\n var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past');\n var weekdays = English.weekdays.slice(0, 7);\n var months = English.months.slice(0, 12);\n var together = special.concat(weekdays).concat(months);\n defineInstanceSimilar(sugarDate, together, function(methods, name) {\n methods['is'+ name] = function(d) {\n return fullCompareDate(d, name);\n };\n });\n}\n\nmodule.exports = buildRelativeAliases;\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateSet = __webpack_require__(32),\n setISOWeekNumber = __webpack_require__(93);\n\nfunction callDateSetWithWeek(d, method, value, safe) {\n if (method === 'ISOWeek') {\n setISOWeekNumber(d, value);\n } else {\n callDateSet(d, method, value, safe);\n }\n}\n\nmodule.exports = callDateSetWithWeek;\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5),\n isDefined = __webpack_require__(27),\n walkUnitDown = __webpack_require__(94);\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction collectDateParamsFromArguments(args) {\n var params = {}, index = 0;\n walkUnitDown(YEAR_INDEX, function(unit) {\n var arg = args[index++];\n if (isDefined(arg)) {\n params[unit.name] = arg;\n }\n });\n return params;\n}\n\nmodule.exports = collectDateParamsFromArguments;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar setDate = __webpack_require__(35),\n getDate = __webpack_require__(34),\n getYear = __webpack_require__(30),\n getMonth = __webpack_require__(29),\n getNewDate = __webpack_require__(40);\n\nfunction compareDay(d, shift) {\n var comp = getNewDate();\n if (shift) {\n setDate(comp, getDate(comp) + shift);\n }\n return getYear(d) === getYear(comp) &&\n getMonth(d) === getMonth(comp) &&\n getDate(d) === getDate(comp);\n}\n\nmodule.exports = compareDay;\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction defaultNewDate() {\n return new Date;\n}\n\nmodule.exports = defaultNewDate;\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDateParamKey = __webpack_require__(85);\n\nfunction deleteDateParam(params, key) {\n delete params[getDateParamKey(params, key)];\n}\n\nmodule.exports = deleteDateParam;\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getNewDate = __webpack_require__(40),\n mathAliases = __webpack_require__(7),\n getAdjustedUnit = __webpack_require__(84),\n getTimeDistanceForUnit = __webpack_require__(59);\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnitForDate(d, dRelative) {\n var ms;\n if (!dRelative) {\n dRelative = getNewDate();\n if (d > dRelative) {\n // If our date is greater than the one that we got from getNewDate, it\n // means that we are finding the unit for a date that is in the future\n // relative to now. However, often the incoming date was created in\n // the same cycle as our comparison, but our \"now\" date will have been\n // created an instant after it, creating situations where \"5 minutes from\n // now\" becomes \"4 minutes from now\" in the same tick. To prevent this,\n // subtract a buffer of 10ms to compensate.\n dRelative = new Date(dRelative.getTime() - 10);\n }\n }\n ms = d - dRelative;\n return getAdjustedUnit(ms, function(u) {\n return abs(getTimeDistanceForUnit(d, dRelative, u));\n });\n}\n\nmodule.exports = getAdjustedUnitForDate;\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar trunc = __webpack_require__(23),\n withPrecision = __webpack_require__(74),\n getAdjustedUnit = __webpack_require__(84);\n\nfunction getAdjustedUnitForNumber(ms) {\n return getAdjustedUnit(ms, function(unit) {\n return trunc(withPrecision(ms / unit.multiplier, 1));\n });\n}\n\nmodule.exports = getAdjustedUnitForNumber;\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction getArrayWithOffset(arr, n, alternate, offset) {\n var val;\n if (alternate > 1) {\n val = arr[n + (alternate - 1) * offset];\n }\n return val || arr[n];\n}\n\nmodule.exports = getArrayWithOffset;\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDateParamKey = __webpack_require__(85),\n coreUtilityAliases = __webpack_require__(10);\n\nvar getOwn = coreUtilityAliases.getOwn;\n\nfunction getDateParam(params, key) {\n return getOwn(params, getDateParamKey(params, key));\n}\n\nmodule.exports = getDateParam;\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isUndefined = __webpack_require__(37);\n\nfunction getDateParamsFromString(str) {\n var match, num, params = {};\n match = str.match(/^(-?\\d*[\\d.]\\d*)?\\s?(\\w+?)s?$/i);\n if (match) {\n if (isUndefined(num)) {\n num = +match[1];\n if (isNaN(num)) {\n num = 1;\n }\n }\n params[match[2].toLowerCase()] = num;\n }\n return params;\n}\n\nmodule.exports = getDateParamsFromString;\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnits = __webpack_require__(31),\n DateUnitIndexes = __webpack_require__(5),\n getTimeDistanceForUnit = __webpack_require__(59);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction getDaysSince(d1, d2) {\n return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]);\n}\n\nmodule.exports = getDaysSince;\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getHigherUnitIndex(index) {\n return index === DAY_INDEX ? MONTH_INDEX : index + 1;\n}\n\nmodule.exports = getHigherUnitIndex;\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n trunc = __webpack_require__(23),\n getHours = __webpack_require__(87);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getMeridiemToken(d, localeCode) {\n var hours = getHours(d);\n return localeManager.get(localeCode).ampm[trunc(hours / 12)] || '';\n}\n\nmodule.exports = getMeridiemToken;\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LOCALE_ARRAY_FIELDS = __webpack_require__(294),\n ISODefaults = __webpack_require__(63),\n ParsingTokens = __webpack_require__(99),\n CoreParsingFormats = __webpack_require__(290),\n LocalizedParsingTokens = __webpack_require__(97),\n map = __webpack_require__(73),\n filter = __webpack_require__(135),\n forEach = __webpack_require__(26),\n isDefined = __webpack_require__(27),\n commaSplit = __webpack_require__(130),\n classChecks = __webpack_require__(3),\n isUndefined = __webpack_require__(37),\n mathAliases = __webpack_require__(7),\n simpleMerge = __webpack_require__(56),\n getOrdinalSuffix = __webpack_require__(137),\n getRegNonCapturing = __webpack_require__(88),\n coreUtilityAliases = __webpack_require__(10),\n getArrayWithOffset = __webpack_require__(211),\n iterateOverDateUnits = __webpack_require__(61),\n arrayToRegAlternates = __webpack_require__(200),\n fullwidthNumberHelpers = __webpack_require__(156),\n getAdjustedUnitForNumber = __webpack_require__(210),\n getParsingTokenWithSuffix = __webpack_require__(219);\n\nvar getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap,\n fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers,\n pow = mathAliases.pow,\n max = mathAliases.max,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR,\n isString = classChecks.isString,\n isFunction = classChecks.isFunction;\n\nfunction getNewLocale(def) {\n\n function Locale(def) {\n this.init(def);\n }\n\n Locale.prototype = {\n\n getMonthName: function(n, alternate) {\n if (this.monthSuffix) {\n return (n + 1) + this.monthSuffix;\n }\n return getArrayWithOffset(this.months, n, alternate, 12);\n },\n\n getWeekdayName: function(n, alternate) {\n return getArrayWithOffset(this.weekdays, n, alternate, 7);\n },\n\n getTokenValue: function(field, str) {\n var map = this[field + 'Map'], val;\n if (map) {\n val = map[str];\n }\n if (isUndefined(val)) {\n val = this.getNumber(str);\n if (field === 'month') {\n // Months are the only numeric date field\n // whose value is not the same as its number.\n val -= 1;\n }\n }\n return val;\n },\n\n getNumber: function(str) {\n var num = this.numeralMap[str];\n if (isDefined(num)) {\n return num;\n }\n // The unary plus operator here show better performance and handles\n // every format that parseFloat does with the exception of trailing\n // characters, which are guaranteed not to be in our string at this point.\n num = +str.replace(/,/, '.');\n if (!isNaN(num)) {\n return num;\n }\n num = this.getNumeralValue(str);\n if (!isNaN(num)) {\n this.numeralMap[str] = num;\n return num;\n }\n return num;\n },\n\n getNumeralValue: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n // Note that \"numerals\" that need to be converted through this method are\n // all considered to be single characters in order to handle CJK. This\n // method is by no means unique to CJK, but the complexity of handling\n // inflections in non-CJK languages adds too much overhead for not enough\n // value, so avoiding for now.\n arr = str.split('');\n for (var i = arr.length - 1; numeral = arr[i]; i--) {\n digit = getOwn(this.numeralMap, numeral);\n if (isUndefined(digit)) {\n digit = getOwn(fullWidthNumberMap, numeral) || 0;\n }\n isPlace = digit > 0 && digit % 10 === 0;\n if (isPlace) {\n if (lastWasPlace) {\n num += place;\n }\n if (i) {\n place = digit;\n } else {\n num += digit;\n }\n } else {\n num += digit * place;\n place *= 10;\n }\n lastWasPlace = isPlace;\n }\n return num;\n },\n\n getOrdinal: function(n) {\n var suffix = this.ordinalSuffix;\n return suffix || getOrdinalSuffix(n);\n },\n\n getRelativeFormat: function(adu, type) {\n return this.convertAdjustedToFormat(adu, type);\n },\n\n getDuration: function(ms) {\n return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration');\n },\n\n getFirstDayOfWeek: function() {\n var val = this.firstDayOfWeek;\n return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK;\n },\n\n getFirstDayOfWeekYear: function() {\n return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR;\n },\n\n convertAdjustedToFormat: function(adu, type) {\n var sign, unit, mult,\n num = adu[0],\n u = adu[1],\n ms = adu[2],\n format = this[type] || this.relative;\n if (isFunction(format)) {\n return format.call(this, num, u, ms, type);\n }\n mult = !this.plural || num === 1 ? 0 : 1;\n unit = this.units[mult * 8 + u] || this.units[u];\n sign = this[ms > 0 ? 'fromNow' : 'ago'];\n return format.replace(/\\{(.*?)\\}/g, function(full, match) {\n switch(match) {\n case 'num': return num;\n case 'unit': return unit;\n case 'sign': return sign;\n }\n });\n },\n\n cacheFormat: function(dif, i) {\n this.compiledFormats.splice(i, 1);\n this.compiledFormats.unshift(dif);\n },\n\n addFormat: function(src, to) {\n var loc = this;\n\n function getTokenSrc(str) {\n var suffix, src, val,\n opt = str.match(/\\?$/),\n nc = str.match(/^(\\d+)\\??$/),\n slice = str.match(/(\\d)(?:-(\\d))?/),\n key = str.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (val = getOwn(loc.parsingAliases, key)) {\n src = replaceParsingTokens(val);\n if (opt) {\n src = getRegNonCapturing(src, true);\n }\n return src;\n }\n\n if (nc) {\n src = loc.tokens[nc[1]];\n } else if (val = getOwn(ParsingTokens, key)) {\n src = val.src;\n } else {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key);\n\n // Both the \"months\" array and the \"month\" parsing token can be accessed\n // by either {month} or {months}, falling back as necessary, however\n // regardless of whether or not a fallback occurs, the final field to\n // be passed to addRawFormat must be normalized as singular.\n key = key.replace(/s$/, '');\n\n if (!val) {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's');\n }\n\n if (isString(val)) {\n src = val;\n suffix = loc[key + 'Suffix'];\n } else {\n if (slice) {\n val = filter(val, function(m, i) {\n var mod = i % (loc.units ? 8 : val.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(val);\n }\n }\n if (!src) {\n return '';\n }\n if (nc) {\n // Non-capturing tokens like {0}\n src = getRegNonCapturing(src);\n } else {\n // Capturing group and add to parsed tokens\n to.push(key);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(key, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function replaceParsingTokens(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n return str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|'), src;\n if (tokens.length > 1) {\n src = getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n src = getTokenSrc(token);\n }\n return src;\n });\n }\n\n if (!to) {\n to = [];\n src = replaceParsingTokens(src);\n }\n\n loc.addRawFormat(src, to);\n },\n\n addRawFormat: function(format, to) {\n this.compiledFormats.unshift({\n reg: RegExp('^ *' + format + ' *$', 'i'),\n to: to\n });\n },\n\n init: function(def) {\n var loc = this;\n\n // -- Initialization helpers\n\n function initFormats() {\n loc.compiledFormats = [];\n loc.parsingAliases = {};\n loc.parsingTokens = {};\n }\n\n function initDefinition() {\n simpleMerge(loc, def);\n }\n\n function initArrayFields() {\n forEach(LOCALE_ARRAY_FIELDS, function(name) {\n var val = loc[name];\n if (isString(val)) {\n loc[name] = commaSplit(val);\n } else if (!val) {\n loc[name] = [];\n }\n });\n }\n\n // -- Value array build helpers\n\n function buildValueArray(name, mod, map, fn) {\n var field = name, all = [], setMap;\n if (!loc[field]) {\n field += 's';\n }\n if (!map) {\n map = {};\n setMap = true;\n }\n forAllAlternates(field, function(alt, j, i) {\n var idx = j * mod + i, val;\n val = fn ? fn(i) : i;\n map[alt] = val;\n map[alt.toLowerCase()] = val;\n all[idx] = alt;\n });\n loc[field] = all;\n if (setMap) {\n loc[name + 'Map'] = map;\n }\n }\n\n function forAllAlternates(field, fn) {\n forEach(loc[field], function(str, i) {\n forEachAlternate(str, function(alt, j) {\n fn(alt, j, i);\n });\n });\n }\n\n function forEachAlternate(str, fn) {\n var arr = map(str.split('+'), function(split) {\n return split.replace(/(.+):(.+)$/, function(full, base, suffixes) {\n return map(suffixes.split('|'), function(suffix) {\n return base + suffix;\n }).join('|');\n });\n }).join('|');\n forEach(arr.split('|'), fn);\n }\n\n function buildNumerals() {\n var map = {};\n buildValueArray('numeral', 10, map);\n buildValueArray('article', 1, map, function() {\n return 1;\n });\n buildValueArray('placeholder', 4, map, function(n) {\n return pow(10, n + 1);\n });\n loc.numeralMap = map;\n }\n\n function buildTimeFormats() {\n loc.parsingAliases['time'] = getTimeFormat();\n loc.parsingAliases['tzOffset'] = getTZOffsetFormat();\n }\n\n function getTimeFormat() {\n var src;\n if (loc.ampmFront) {\n // \"ampmFront\" exists mostly for CJK locales, which also presume that\n // time suffixes exist, allowing this to be a simpler regex.\n src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?';\n } else if(loc.ampm.length) {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)';\n }\n return src;\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src, arr;\n src = token.base ? ParsingTokens[token.base].src : token.src;\n if (token.requiresNumerals || loc.numeralUnits) {\n src += getNumeralSrc();\n }\n arr = loc[name + 's'];\n if (arr && arr.length) {\n src += '|' + arrayToRegAlternates(arr);\n }\n loc.parsingTokens[name] = src;\n });\n }\n\n function getNumeralSrc() {\n var all, src = '';\n all = loc.numerals.concat(loc.placeholders).concat(loc.articles);\n if (loc.allowsFullWidth) {\n all = all.concat(fullWidthNumbers.split(''));\n }\n if (all.length) {\n src = '|(?:' + arrayToRegAlternates(all) + ')+';\n }\n return src;\n }\n\n function buildTimeSuffixes() {\n iterateOverDateUnits(function(unit, i) {\n var token = loc.timeSuffixes[i];\n if (token) {\n loc[(unit.alias || unit.name) + 'Suffix'] = token;\n }\n });\n }\n\n function buildModifiers() {\n forEach(loc.modifiers, function(modifier) {\n var name = modifier.name, mapKey = name + 'Map', map;\n map = loc[mapKey] || {};\n forEachAlternate(modifier.src, function(alt, j) {\n var token = getOwn(loc.parsingTokens, name), val = modifier.value;\n map[alt] = val;\n loc.parsingTokens[name] = token ? token + '|' + alt : alt;\n if (modifier.name === 'sign' && j === 0) {\n // Hooking in here to set the first \"fromNow\" or \"ago\" modifier\n // directly on the locale, so that it can be reused in the\n // relative format.\n loc[val === 1 ? 'fromNow' : 'ago'] = alt;\n }\n });\n loc[mapKey] = map;\n });\n }\n\n // -- Format adding helpers\n\n function addCoreFormats() {\n forEach(CoreParsingFormats, function(df) {\n var src = df.src;\n if (df.mdy && loc.mdy) {\n // Use the mm/dd/yyyy variant if it\n // exists and the locale requires it\n src = df.mdy;\n }\n if (df.time) {\n // Core formats that allow time require the time\n // reg on both sides, so add both versions here.\n loc.addFormat(getFormatWithTime(src, true));\n loc.addFormat(getFormatWithTime(src));\n } else {\n loc.addFormat(src);\n }\n });\n loc.addFormat('{time}');\n }\n\n function addLocaleFormats() {\n addFormatSet('parse');\n addFormatSet('timeParse', true);\n addFormatSet('timeFrontParse', true, true);\n }\n\n function addFormatSet(field, allowTime, timeFront) {\n forEach(loc[field], function(format) {\n if (allowTime) {\n format = getFormatWithTime(format, timeFront);\n }\n loc.addFormat(format);\n });\n }\n\n function getFormatWithTime(baseFormat, timeBefore) {\n if (timeBefore) {\n return getTimeBefore() + baseFormat;\n }\n return baseFormat + getTimeAfter();\n }\n\n function getTimeBefore() {\n return getRegNonCapturing('{time}[,\\\\s\\\\u3000]', true);\n }\n\n function getTimeAfter() {\n var markers = ',?[\\\\s\\\\u3000]', localized;\n localized = arrayToRegAlternates(loc.timeMarkers);\n if (localized) {\n markers += '| (?:' + localized + ') ';\n }\n markers = getRegNonCapturing(markers, loc.timeMarkerOptional);\n return getRegNonCapturing(markers + '{time}', true);\n }\n\n initFormats();\n initDefinition();\n initArrayFields();\n\n buildValueArray('month', 12);\n buildValueArray('weekday', 7);\n buildValueArray('unit', 8);\n buildValueArray('ampm', 2);\n\n buildNumerals();\n buildTimeFormats();\n buildParsingTokens();\n buildTimeSuffixes();\n buildModifiers();\n\n // The order of these formats is important. Order is reversed so formats\n // that are initialized later will take precedence. Generally, this means\n // that more specific formats should come later.\n addCoreFormats();\n addLocaleFormats();\n\n }\n\n };\n\n return new Locale(def);\n}\n\nmodule.exports = getNewLocale;\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction getParsingTokenValue(token, str) {\n var val;\n if (token.val) {\n val = token.val;\n } else if (token.sign) {\n val = str === '+' ? 1 : -1;\n } else if (token.bool) {\n val = !!val;\n } else {\n val = +str.replace(/,/, '.');\n }\n if (token.param === 'month') {\n val -= 1;\n }\n return val;\n}\n\nmodule.exports = getParsingTokenValue;\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocalizedParsingTokens = __webpack_require__(97),\n getRegNonCapturing = __webpack_require__(88);\n\nfunction getParsingTokenWithSuffix(field, src, suffix) {\n var token = LocalizedParsingTokens[field];\n if (token.requiresSuffix) {\n src = getRegNonCapturing(src + getRegNonCapturing(suffix));\n } else if (token.requiresSuffixOr) {\n src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix);\n } else {\n src += getRegNonCapturing(suffix, true);\n }\n return src;\n}\n\nmodule.exports = getParsingTokenWithSuffix;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar iterateOverDateParams = __webpack_require__(46);\n\nfunction getUnitIndexForParamName(name) {\n var params = {}, unitIndex;\n params[name] = 1;\n iterateOverDateParams(params, function(name, val, unit, i) {\n unitIndex = i;\n return false;\n });\n return unitIndex;\n}\n\nmodule.exports = getUnitIndexForParamName;\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n getYear = __webpack_require__(30),\n getMonth = __webpack_require__(29),\n getWeekNumber = __webpack_require__(60);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getWeekYear(d, localeCode, iso) {\n var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc;\n year = getYear(d);\n month = getMonth(d);\n if (month === 0 || month === 11) {\n if (!iso) {\n loc = localeManager.get(localeCode);\n firstDayOfWeek = loc.getFirstDayOfWeek(localeCode);\n firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode);\n }\n week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear);\n if (month === 0 && week === 0) {\n year -= 1;\n } else if (month === 11 && week === 1) {\n year += 1;\n }\n }\n return year;\n}\n\nmodule.exports = getWeekYear;\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getYear = __webpack_require__(30),\n mathAliases = __webpack_require__(7);\n\nvar abs = mathAliases.abs;\n\nfunction getYearFromAbbreviation(str, d, prefer) {\n // Following IETF here, adding 1900 or 2000 depending on the last two digits.\n // Note that this makes no accordance for what should happen after 2050, but\n // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt\n var val = +str, delta;\n val += val < 50 ? 2000 : 1900;\n if (prefer) {\n delta = val - getYear(d);\n if (delta / abs(delta) !== prefer) {\n val += prefer * 100;\n }\n }\n return val;\n}\n\nmodule.exports = getYearFromAbbreviation;\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _utc = __webpack_require__(21),\n tzOffset = __webpack_require__(49);\n\nfunction isUTC(d) {\n return !!_utc(d) || tzOffset(d) === 0;\n}\n\nmodule.exports = isUTC;\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DateUnitIndexes = __webpack_require__(5),\n iterateOverDateParams = __webpack_require__(46);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverHigherDateParams(params, fn) {\n iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX);\n}\n\nmodule.exports = iterateOverHigherDateParams;\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getLowerUnitIndex = __webpack_require__(39),\n setUnitAndLowerToEdge = __webpack_require__(36);\n\nfunction resetLowerUnits(d, unitIndex) {\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = resetLowerUnits;\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar createDate = __webpack_require__(28),\n namespaceAliases = __webpack_require__(22),\n setChainableConstructor = __webpack_require__(149);\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nfunction setDateChainableConstructor() {\n setChainableConstructor(sugarDate, createDate);\n}\n\nmodule.exports = setDateChainableConstructor;\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateSet = __webpack_require__(32);\n\nfunction setMonth(d, val) {\n callDateSet(d, 'Month', val);\n}\n\nmodule.exports = setMonth;\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar callDateSet = __webpack_require__(32);\n\nfunction setYear(d, val) {\n callDateSet(d, 'FullYear', val);\n}\n\nmodule.exports = setYear;\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n fullCompareDate = __webpack_require__(83);\n\nSugar.Date.defineInstance({\n\n 'is': function(date, d, margin) {\n return fullCompareDate(date, d, margin);\n }\n\n});\n\nmodule.exports = Sugar.Date.is;\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDate = __webpack_require__(28);\n\nSugar.Date.defineInstance({\n\n 'isAfter': function(date, d, margin) {\n return date.getTime() > createDate(d).getTime() - (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isAfter;\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDate = __webpack_require__(28);\n\nSugar.Date.defineInstance({\n\n 'isBefore': function(date, d, margin) {\n return date.getTime() < createDate(d).getTime() + (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBefore;\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDate = __webpack_require__(28),\n mathAliases = __webpack_require__(7);\n\nvar min = mathAliases.min,\n max = mathAliases.max;\n\nSugar.Date.defineInstance({\n\n 'isBetween': function(date, d1, d2, margin) {\n var t = date.getTime();\n var t1 = createDate(d1).getTime();\n var t2 = createDate(d2).getTime();\n var lo = min(t1, t2);\n var hi = max(t1, t2);\n margin = margin || 0;\n return (lo - margin <= t) && (hi + margin >= t);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBetween;\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isFriday;\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isFuture;\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isLastMonth;\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isLastWeek;\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isLastYear;\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n getYear = __webpack_require__(30);\n\nSugar.Date.defineInstance({\n\n 'isLeapYear': function(date) {\n var year = getYear(date);\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isLeapYear;\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isMonday;\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isNextMonth;\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isNextWeek;\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isNextYear;\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isPast;\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isSaturday;\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isSunday;\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isThisMonth;\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isThisWeek;\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.isThisYear;\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isThursday;\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isToday;\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isTomorrow;\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isTuesday;\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n isUTC = __webpack_require__(223);\n\nSugar.Date.defineInstance({\n\n 'isUTC': function(date) {\n return isUTC(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isUTC;\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n dateIsValid = __webpack_require__(45);\n\nSugar.Date.defineInstance({\n\n 'isValid': function(date) {\n return dateIsValid(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isValid;\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isWednesday;\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isWeekday;\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isWeekend;\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(12);\n\nmodule.exports = Sugar.Date.isYesterday;\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\nSugar.Date.defineInstance({\n\n 'iso': function(date) {\n return date.toISOString();\n }\n\n});\n\nmodule.exports = Sugar.Date.iso;\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.millisecondsAgo;\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.millisecondsFromNow;\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.millisecondsSince;\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.millisecondsUntil;\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.minutesAgo;\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.minutesFromNow;\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.minutesSince;\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.minutesUntil;\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.monthsAgo;\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.monthsFromNow;\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.monthsSince;\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.monthsUntil;\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n DateRangeConstructor = __webpack_require__(433);\n\nSugar.Date.defineStatic({\n\n 'range': DateRangeConstructor\n\n});\n\nmodule.exports = Sugar.Date.range;\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n dateRelative = __webpack_require__(82);\n\nSugar.Date.defineInstance({\n\n 'relative': function(date, localeCode, fn) {\n return dateRelative(date, null, localeCode, fn);\n }\n\n});\n\nmodule.exports = Sugar.Date.relative;\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n createDate = __webpack_require__(28),\n dateRelative = __webpack_require__(82);\n\nSugar.Date.defineInstance({\n\n 'relativeTo': function(date, d, localeCode) {\n return dateRelative(date, createDate(d), localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.relativeTo;\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'removeLocale': function(code) {\n return localeManager.remove(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.removeLocale;\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n DateUnitIndexes = __webpack_require__(5),\n moveToBeginningOfUnit = __webpack_require__(47),\n getUnitIndexForParamName = __webpack_require__(220);\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'reset': function(date, unit, localeCode) {\n var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX;\n moveToBeginningOfUnit(date, unitIndex, localeCode);\n return date;\n }\n\n});\n\nmodule.exports = Sugar.Date.reset;\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n advanceDateWithArgs = __webpack_require__(76);\n\nSugar.Date.defineInstanceWithArguments({\n\n 'rewind': function(d, args) {\n return advanceDateWithArgs(d, args, -1);\n }\n\n});\n\nmodule.exports = Sugar.Date.rewind;\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.secondsAgo;\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.secondsFromNow;\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.secondsSince;\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.secondsUntil;\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n updateDate = __webpack_require__(50),\n collectDateArguments = __webpack_require__(78);\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectDateArguments(args);\n return updateDate(d, args[0], args[1]);\n }\n\n});\n\nmodule.exports = Sugar.Date.set;\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n setISOWeekNumber = __webpack_require__(93);\n\nSugar.Date.defineInstance({\n\n 'setISOWeek': function(date, num) {\n return setISOWeekNumber(date, num);\n }\n\n});\n\nmodule.exports = Sugar.Date.setISOWeek;\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'setLocale': function(code) {\n return localeManager.set(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.setLocale;\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n _dateOptions = __webpack_require__(64);\n\nmodule.exports = Sugar.Date.setOption;\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n _utc = __webpack_require__(21);\n\nSugar.Date.defineInstance({\n\n 'setUTC': function(date, on) {\n return _utc(date, on);\n }\n\n});\n\nmodule.exports = Sugar.Date.setUTC;\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n setWeekday = __webpack_require__(24);\n\nSugar.Date.defineInstance({\n\n 'setWeekday': function(date, dow) {\n return setWeekday(date, dow);\n }\n\n});\n\nmodule.exports = Sugar.Date.setWeekday;\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getEnglishVariant = __webpack_require__(57);\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getEnglishVariant = __webpack_require__(57);\n\nvar CanadianEnglishDefinition = getEnglishVariant({\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {Month}, {yyyy}',\n 'long': '{d} {Month}, {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = CanadianEnglishDefinition;\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar CoreParsingFormats = [\n {\n // 12-1978\n // 08-1978 (MDY)\n src: '{MM}[-.\\\\/]{yyyy}'\n },\n {\n // 12/08/1978\n // 08/12/1978 (MDY)\n time: true,\n src: '{dd}[-.\\\\/]{MM}(?:[-.\\\\/]{yyyy|yy|y})?',\n mdy: '{MM}[-.\\\\/]{dd}(?:[-.\\\\/]{yyyy|yy|y})?'\n },\n {\n // 1975-08-25\n time: true,\n src: '{yyyy}[-.\\\\/]{MM}(?:[-.\\\\/]{dd})?'\n },\n {\n // .NET JSON\n src: '\\\\\\\\/Date\\\\({timestamp}(?:[+-]\\\\d{4,4})?\\\\)\\\\\\\\/'\n },\n {\n // ISO-8601\n src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaultNewDate = __webpack_require__(207);\n\nvar DATE_OPTIONS = {\n 'newDateInternal': defaultNewDate\n};\n\nmodule.exports = DATE_OPTIONS;\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar EnglishLocaleBaseDefinition = {\n 'code': 'en',\n 'plural': true,\n 'timeMarkers': 'at',\n 'ampm': 'AM|A.M.|a,PM|P.M.|p',\n 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s',\n 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|',\n 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend',\n 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th',\n 'articles': 'a,an,the',\n 'tokens': 'the,st|nd|rd|th,of|in,a|an,on',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'modifiers': [\n { 'name': 'half', 'src': 'half', 'value': .5 },\n { 'name': 'midday', 'src': 'noon', 'value': 12 },\n { 'name': 'midday', 'src': 'midnight', 'value': 24 },\n { 'name': 'day', 'src': 'yesterday', 'value': -1 },\n { 'name': 'day', 'src': 'today|tonight', 'value': 0 },\n { 'name': 'day', 'src': 'tomorrow', 'value': 1 },\n { 'name': 'sign', 'src': 'ago|before', 'value': -1 },\n { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 },\n { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 },\n { 'name': 'edge', 'src': 'last day', 'value': 1 },\n { 'name': 'edge', 'src': 'end|last', 'value': 2 },\n { 'name': 'shift', 'src': 'last', 'value': -1 },\n { 'name': 'shift', 'src': 'the|this', 'value': 0 },\n { 'name': 'shift', 'src': 'next', 'value': 1 }\n ],\n 'parse': [\n '(?:just)? now',\n '{shift} {unit:5-7}',\n \"{months?} (?:{year}|'{yy})\",\n '{midday} {4?} {day|weekday}',\n '{months},?(?:[-.\\\\/\\\\s]{year})?',\n '{edge} of (?:day)? {day|weekday}',\n '{0} {num}{1?} {weekday} {2} {months},? {year?}',\n '{shift?} {day?} {weekday?} {timeMarker?} {midday}',\n '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}',\n '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{0?} {date}{1?} {2?} {months?}',\n '{weekday} {2?} {shift} {unit:5}',\n '{0?} {num} {2?} {months}\\\\.?,? {year?}',\n '{num?} {unit:4-5} {sign} {day|weekday}',\n '{year}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s]{date}',\n '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n \"{date}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s](?:{year}|'?{yy})\",\n \"{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? (?:{year}|'{yy})?\"\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar TIMEZONE_ABBREVIATION_REG = __webpack_require__(296),\n LocaleHelpers = __webpack_require__(8),\n DateUnitIndexes = __webpack_require__(5),\n trunc = __webpack_require__(23),\n getDate = __webpack_require__(34),\n getYear = __webpack_require__(30),\n getHours = __webpack_require__(87),\n getMonth = __webpack_require__(29),\n cloneDate = __webpack_require__(33),\n padNumber = __webpack_require__(54),\n getWeekday = __webpack_require__(20),\n callDateGet = __webpack_require__(18),\n mathAliases = __webpack_require__(7),\n getWeekYear = __webpack_require__(221),\n getUTCOffset = __webpack_require__(89),\n getDaysSince = __webpack_require__(214),\n getWeekNumber = __webpack_require__(60),\n getMeridiemToken = __webpack_require__(216),\n setUnitAndLowerToEdge = __webpack_require__(36);\n\nvar localeManager = LocaleHelpers.localeManager,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n ceil = mathAliases.ceil;\n\nvar FormatTokensBase = [\n {\n ldml: 'Dow',\n strf: 'a',\n lowerToken: 'dow',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2);\n }\n },\n {\n ldml: 'Weekday',\n strf: 'A',\n lowerToken: 'weekday',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate);\n }\n },\n {\n ldml: 'Mon',\n strf: 'b h',\n lowerToken: 'mon',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), 2);\n }\n },\n {\n ldml: 'Month',\n strf: 'B',\n lowerToken: 'month',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), alternate);\n }\n },\n {\n strf: 'C',\n get: function(d) {\n return getYear(d).toString().slice(0, 2);\n }\n },\n {\n ldml: 'd date day',\n strf: 'd',\n strfPadding: 2,\n ldmlPaddedToken: 'dd',\n ordinalToken: 'do',\n get: function(d) {\n return getDate(d);\n }\n },\n {\n strf: 'e',\n get: function(d) {\n return padNumber(getDate(d), 2, false, 10, ' ');\n }\n },\n {\n ldml: 'H 24hr',\n strf: 'H',\n strfPadding: 2,\n ldmlPaddedToken: 'HH',\n get: function(d) {\n return getHours(d);\n }\n },\n {\n ldml: 'h hours 12hr',\n strf: 'I',\n strfPadding: 2,\n ldmlPaddedToken: 'hh',\n get: function(d) {\n return getHours(d) % 12 || 12;\n }\n },\n {\n ldml: 'D',\n strf: 'j',\n strfPadding: 3,\n ldmlPaddedToken: 'DDD',\n get: function(d) {\n var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX);\n return getDaysSince(d, s) + 1;\n }\n },\n {\n ldml: 'M',\n strf: 'm',\n strfPadding: 2,\n ordinalToken: 'Mo',\n ldmlPaddedToken: 'MM',\n get: function(d) {\n return getMonth(d) + 1;\n }\n },\n {\n ldml: 'm minutes',\n strf: 'M',\n strfPadding: 2,\n ldmlPaddedToken: 'mm',\n get: function(d) {\n return callDateGet(d, 'Minutes');\n }\n },\n {\n ldml: 'Q',\n get: function(d) {\n return ceil((getMonth(d) + 1) / 3);\n }\n },\n {\n ldml: 'TT',\n strf: 'p',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode);\n }\n },\n {\n ldml: 'tt',\n strf: 'P',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).toLowerCase();\n }\n },\n {\n ldml: 'T',\n lowerToken: 't',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).charAt(0);\n }\n },\n {\n ldml: 's seconds',\n strf: 'S',\n strfPadding: 2,\n ldmlPaddedToken: 'ss',\n get: function(d) {\n return callDateGet(d, 'Seconds');\n }\n },\n {\n ldml: 'S ms',\n strfPadding: 3,\n ldmlPaddedToken: 'SSS',\n get: function(d) {\n return callDateGet(d, 'Milliseconds');\n }\n },\n {\n ldml: 'e',\n strf: 'u',\n ordinalToken: 'eo',\n get: function(d) {\n return getWeekday(d) || 7;\n }\n },\n {\n strf: 'U',\n strfPadding: 2,\n get: function(d) {\n // Sunday first, 0-53\n return getWeekNumber(d, false, 0);\n }\n },\n {\n ldml: 'W',\n strf: 'V',\n strfPadding: 2,\n ordinalToken: 'Wo',\n ldmlPaddedToken: 'WW',\n get: function(d) {\n // Monday first, 1-53 (ISO8601)\n return getWeekNumber(d, true);\n }\n },\n {\n strf: 'w',\n get: function(d) {\n return getWeekday(d);\n }\n },\n {\n ldml: 'w',\n ordinalToken: 'wo',\n ldmlPaddedToken: 'ww',\n get: function(d, localeCode) {\n // Locale dependent, 1-53\n var loc = localeManager.get(localeCode),\n dow = loc.getFirstDayOfWeek(localeCode),\n doy = loc.getFirstDayOfWeekYear(localeCode);\n return getWeekNumber(d, true, dow, doy);\n }\n },\n {\n strf: 'W',\n strfPadding: 2,\n get: function(d) {\n // Monday first, 0-53\n return getWeekNumber(d, false);\n }\n },\n {\n ldmlPaddedToken: 'gggg',\n ldmlTwoDigitToken: 'gg',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode);\n }\n },\n {\n strf: 'G',\n strfPadding: 4,\n strfTwoDigitToken: 'g',\n ldmlPaddedToken: 'GGGG',\n ldmlTwoDigitToken: 'GG',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode, true);\n }\n },\n {\n ldml: 'year',\n ldmlPaddedToken: 'yyyy',\n ldmlTwoDigitToken: 'yy',\n strf: 'Y',\n strfPadding: 4,\n strfTwoDigitToken: 'y',\n get: function(d) {\n return getYear(d);\n }\n },\n {\n ldml: 'ZZ',\n strf: 'z',\n get: function(d) {\n return getUTCOffset(d);\n }\n },\n {\n ldml: 'X',\n get: function(d) {\n return trunc(d.getTime() / 1000);\n }\n },\n {\n ldml: 'x',\n get: function(d) {\n return d.getTime();\n }\n },\n {\n ldml: 'Z',\n get: function(d) {\n return getUTCOffset(d, true);\n }\n },\n {\n ldml: 'z',\n strf: 'Z',\n get: function(d) {\n // Note that this is not accurate in all browsing environments!\n // https://github.com/moment/moment/issues/162\n // It will continue to be supported for Node and usage with the\n // understanding that it may be blank.\n var match = d.toString().match(TIMEZONE_ABBREVIATION_REG);\n return match ? match[1]: '';\n }\n },\n {\n strf: 'D',\n alias: '%m/%d/%y'\n },\n {\n strf: 'F',\n alias: '%Y-%m-%d'\n },\n {\n strf: 'r',\n alias: '%I:%M:%S %p'\n },\n {\n strf: 'R',\n alias: '%H:%M'\n },\n {\n strf: 'T',\n alias: '%H:%M:%S'\n },\n {\n strf: 'x',\n alias: '{short}'\n },\n {\n strf: 'X',\n alias: '{time}'\n },\n {\n strf: 'c',\n alias: '{stamp}'\n }\n];\n\nmodule.exports = FormatTokensBase;\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LOCALE_ARRAY_FIELDS = [\n 'months', 'weekdays', 'units', 'numerals', 'placeholders',\n 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes',\n 'parse', 'timeParse', 'timeFrontParse', 'modifiers'\n];\n\nmodule.exports = LOCALE_ARRAY_FIELDS;\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar BritishEnglishDefinition = __webpack_require__(288),\n AmericanEnglishDefinition = __webpack_require__(95),\n CanadianEnglishDefinition = __webpack_require__(289);\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;\n\n/***/ }),\n/* 296 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = /(\\w{3})[()\\s\\d]*$/;\n\n/***/ }),\n/* 297 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LocaleHelpers = __webpack_require__(8),\n FormatTokensBase = __webpack_require__(293),\n CoreOutputFormats = __webpack_require__(96),\n forEach = __webpack_require__(26),\n padNumber = __webpack_require__(54),\n spaceSplit = __webpack_require__(43),\n namespaceAliases = __webpack_require__(22),\n coreUtilityAliases = __webpack_require__(10),\n createFormatMatcher = __webpack_require__(131),\n defineInstanceSimilar = __webpack_require__(41);\n\nvar localeManager = LocaleHelpers.localeManager,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n sugarDate = namespaceAliases.sugarDate;\n\nvar ldmlTokens, strfTokens;\n\nfunction buildDateFormatTokens() {\n\n function addFormats(target, tokens, fn) {\n if (tokens) {\n forEach(spaceSplit(tokens), function(token) {\n target[token] = fn;\n });\n }\n }\n\n function buildLowercase(get) {\n return function(d, localeCode) {\n return get(d, localeCode).toLowerCase();\n };\n }\n\n function buildOrdinal(get) {\n return function(d, localeCode) {\n var n = get(d, localeCode);\n return n + localeManager.get(localeCode).getOrdinal(n);\n };\n }\n\n function buildPadded(get, padding) {\n return function(d, localeCode) {\n return padNumber(get(d, localeCode), padding);\n };\n }\n\n function buildTwoDigits(get) {\n return function(d, localeCode) {\n return get(d, localeCode) % 100;\n };\n }\n\n function buildAlias(alias) {\n return function(d, localeCode) {\n return dateFormatMatcher(alias, d, localeCode);\n };\n }\n\n function buildAlternates(f) {\n for (var n = 1; n <= 5; n++) {\n buildAlternate(f, n);\n }\n }\n\n function buildAlternate(f, n) {\n var alternate = function(d, localeCode) {\n return f.get(d, localeCode, n);\n };\n addFormats(ldmlTokens, f.ldml + n, alternate);\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken + n] = buildLowercase(alternate);\n }\n }\n\n function getIdentityFormat(name) {\n return function(d, localeCode) {\n var loc = localeManager.get(localeCode);\n return dateFormatMatcher(loc[name], d, localeCode);\n };\n }\n\n ldmlTokens = {};\n strfTokens = {};\n\n forEach(FormatTokensBase, function(f) {\n var get = f.get, getPadded;\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken] = buildLowercase(get);\n }\n if (f.ordinalToken) {\n ldmlTokens[f.ordinalToken] = buildOrdinal(get, f);\n }\n if (f.ldmlPaddedToken) {\n ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length);\n }\n if (f.ldmlTwoDigitToken) {\n ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfTwoDigitToken) {\n strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfPadding) {\n getPadded = buildPadded(get, f.strfPadding);\n }\n if (f.alias) {\n get = buildAlias(f.alias);\n }\n if (f.allowAlternates) {\n buildAlternates(f);\n }\n addFormats(ldmlTokens, f.ldml, get);\n addFormats(strfTokens, f.strf, getPadded || get);\n });\n\n forEachProperty(CoreOutputFormats, function(src, name) {\n addFormats(ldmlTokens, name, buildAlias(src));\n });\n\n defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) {\n var fn = getIdentityFormat(name);\n addFormats(ldmlTokens, name, fn);\n methods[name] = fn;\n });\n\n addFormats(ldmlTokens, 'time', getIdentityFormat('time'));\n addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp'));\n}\n\nvar dateFormatMatcher;\n\nfunction buildDateFormatMatcher() {\n\n function getLdml(d, token, localeCode) {\n return getOwn(ldmlTokens, token)(d, localeCode);\n }\n\n function getStrf(d, token, localeCode) {\n return getOwn(strfTokens, token)(d, localeCode);\n }\n\n function checkDateToken(ldml, strf) {\n return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf);\n }\n\n // Format matcher for LDML or STRF tokens.\n dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken);\n}\n\nbuildDateFormatTokens();\n\nbuildDateFormatMatcher();\n\nmodule.exports = {\n ldmlTokens: ldmlTokens,\n strfTokens: strfTokens,\n dateFormatMatcher: dateFormatMatcher\n};\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.weeksAgo;\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.weeksFromNow;\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.weeksSince;\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.weeksUntil;\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.yearsAgo;\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.yearsFromNow;\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.yearsSince;\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(2);\n\nmodule.exports = Sugar.Date.yearsUntil;\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Catalan locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ca')\n *\n */\naddLocale('ca', {\n 'plural': true,\n 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s',\n 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|',\n 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds',\n 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': \"abans d'ahir\", 'value': -2 },\n { 'name': 'day', 'src': 'ahir', 'value': -1 },\n { 'name': 'day', 'src': 'avui', 'value': 0 },\n { 'name': 'day', 'src': 'demà|dema', 'value': 1 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'en', 'value': 1 },\n { 'name': 'shift', 'src': 'passat', 'value': -1 },\n { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 }\n ],\n 'parse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift} {weekday}',\n '{weekday} {shift}',\n '{date?} {2?} {months}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ca\" locale.\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Danish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('da')\n *\n */\naddLocale('da', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|',\n 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} {time}',\n 'full': '{weekday} d. {d}. {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{0?} {weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"da\" locale.\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * German locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('de')\n *\n */\naddLocale('de', {\n 'plural': true,\n 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e',\n 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|',\n 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|',\n 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn',\n 'tokens': 'der',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d}. {Month} {yyyy}',\n 'long': '{d}. {Month} {yyyy} {time}',\n 'full': '{Weekday}, {d}. {Month} {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'um',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'vorgestern', 'value': -2 },\n { 'name': 'day', 'src': 'gestern', 'value': -1 },\n { 'name': 'day', 'src': 'heute', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'vor:|her', 'value': -1 },\n { 'name': 'sign', 'src': 'in', 'value': 1 },\n { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 },\n { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"de\" locale.\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Spanish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('es')\n *\n */\naddLocale('es', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos',\n 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|',\n 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|',\n 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{weekday}, {d} de {month} de {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteayer', 'value': -2 },\n { 'name': 'day', 'src': 'ayer', 'value': -1 },\n { 'name': 'day', 'src': 'hoy', 'value': 0 },\n { 'name': 'day', 'src': 'mañana|manana', 'value': 1 },\n { 'name': 'sign', 'src': 'hace', 'value': -1 },\n { 'name': 'sign', 'src': 'dentro de', 'value': 1 },\n { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {2?} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"es\" locale.\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Finnish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fi')\n *\n */\naddLocale('fi', {\n 'plural': true,\n 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna',\n 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu',\n 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina',\n 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s',\n 'short': '{d}.{M}.{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} klo {time}',\n 'full': '{weekday} {d}. {month} {yyyy} klo {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}.{mm}',\n 'timeMarkers': 'klo,kello',\n 'ordinalSuffix': '.',\n 'relative': function(num, unit, ms, format) {\n var units = this['units'];\n function numberWithUnit(mult) {\n return num + ' ' + units[(8 * mult) + unit];\n }\n function baseUnit() {\n return numberWithUnit(num === 1 ? 0 : 1);\n }\n switch(format) {\n case 'duration': return baseUnit();\n case 'past': return baseUnit() + ' sitten';\n case 'future': return numberWithUnit(2) + ' kuluttua';\n }\n },\n 'modifiers': [\n { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 },\n { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 },\n { 'name': 'day', 'src': 'tänään', 'value': 0 },\n { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 },\n { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 },\n { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 },\n { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 },\n { 'name': 'edge', 'src': 'lopussa', 'value': 2 },\n { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 },\n { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 },\n { 'name': 'shift', 'src': 'viime', 'value': -1 },\n { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 },\n { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{num?} {unit} {sign}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fi\" locale.\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * French locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fr')\n *\n */\naddLocale('fr', {\n 'plural': true,\n 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee',\n 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|',\n 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|',\n 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix',\n 'tokens': \"l'|la|le,er\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'à',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'hier', 'value': -1 },\n { 'name': 'day', 'src': \"aujourd'hui\", 'value': 0 },\n { 'name': 'day', 'src': 'demain', 'value': 1 },\n { 'name': 'sign', 'src': 'il y a', 'value': -1 },\n { 'name': 'sign', 'src': \"dans|d'ici\", 'value': 1 },\n { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 },\n { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{0?} {weekday} {shift}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fr\" locale.\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(306);\n__webpack_require__(307);\n__webpack_require__(308);\n__webpack_require__(309);\n__webpack_require__(310);\n__webpack_require__(311);\n__webpack_require__(313);\n__webpack_require__(314);\n__webpack_require__(315);\n__webpack_require__(316);\n__webpack_require__(317);\n__webpack_require__(318);\n__webpack_require__(319);\n__webpack_require__(320);\n__webpack_require__(321);\n__webpack_require__(322);\n__webpack_require__(323);\n\nmodule.exports = __webpack_require__(0);\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"it\" locale.\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.\n\n/***/ }),\n/* 318 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addLocale = __webpack_require__(4);\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.\n\n/***/ }),\n/* 324 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.day;\n\n/***/ }),\n/* 325 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.dayAfter;\n\n/***/ }),\n/* 326 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.dayAgo;\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.dayBefore;\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.dayFromNow;\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.days;\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.daysAfter;\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.daysAgo;\n\n/***/ }),\n/* 332 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.daysBefore;\n\n/***/ }),\n/* 333 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.daysFromNow;\n\n/***/ }),\n/* 334 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0),\n LocaleHelpers = __webpack_require__(8);\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Number.defineInstance({\n\n 'duration': function(n, localeCode) {\n return localeManager.get(localeCode).getDuration(n);\n }\n\n});\n\nmodule.exports = Sugar.Number.duration;\n\n/***/ }),\n/* 335 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hour;\n\n/***/ }),\n/* 336 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hourAfter;\n\n/***/ }),\n/* 337 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hourAgo;\n\n/***/ }),\n/* 338 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hourBefore;\n\n/***/ }),\n/* 339 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hourFromNow;\n\n/***/ }),\n/* 340 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hours;\n\n/***/ }),\n/* 341 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hoursAfter;\n\n/***/ }),\n/* 342 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hoursAgo;\n\n/***/ }),\n/* 343 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hoursBefore;\n\n/***/ }),\n/* 344 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.hoursFromNow;\n\n/***/ }),\n/* 345 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecond;\n\n/***/ }),\n/* 346 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondAfter;\n\n/***/ }),\n/* 347 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondAgo;\n\n/***/ }),\n/* 348 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondBefore;\n\n/***/ }),\n/* 349 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondFromNow;\n\n/***/ }),\n/* 350 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.milliseconds;\n\n/***/ }),\n/* 351 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondsAfter;\n\n/***/ }),\n/* 352 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondsAgo;\n\n/***/ }),\n/* 353 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondsBefore;\n\n/***/ }),\n/* 354 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.millisecondsFromNow;\n\n/***/ }),\n/* 355 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minute;\n\n/***/ }),\n/* 356 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minuteAfter;\n\n/***/ }),\n/* 357 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minuteAgo;\n\n/***/ }),\n/* 358 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minuteBefore;\n\n/***/ }),\n/* 359 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minuteFromNow;\n\n/***/ }),\n/* 360 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minutes;\n\n/***/ }),\n/* 361 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minutesAfter;\n\n/***/ }),\n/* 362 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minutesAgo;\n\n/***/ }),\n/* 363 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minutesBefore;\n\n/***/ }),\n/* 364 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.minutesFromNow;\n\n/***/ }),\n/* 365 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.month;\n\n/***/ }),\n/* 366 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthAfter;\n\n/***/ }),\n/* 367 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthAgo;\n\n/***/ }),\n/* 368 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthBefore;\n\n/***/ }),\n/* 369 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthFromNow;\n\n/***/ }),\n/* 370 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.months;\n\n/***/ }),\n/* 371 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthsAfter;\n\n/***/ }),\n/* 372 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthsAgo;\n\n/***/ }),\n/* 373 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthsBefore;\n\n/***/ }),\n/* 374 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.monthsFromNow;\n\n/***/ }),\n/* 375 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.second;\n\n/***/ }),\n/* 376 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondAfter;\n\n/***/ }),\n/* 377 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondAgo;\n\n/***/ }),\n/* 378 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondBefore;\n\n/***/ }),\n/* 379 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondFromNow;\n\n/***/ }),\n/* 380 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.seconds;\n\n/***/ }),\n/* 381 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondsAfter;\n\n/***/ }),\n/* 382 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondsAgo;\n\n/***/ }),\n/* 383 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondsBefore;\n\n/***/ }),\n/* 384 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.secondsFromNow;\n\n/***/ }),\n/* 385 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.week;\n\n/***/ }),\n/* 386 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weekAfter;\n\n/***/ }),\n/* 387 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weekAgo;\n\n/***/ }),\n/* 388 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weekBefore;\n\n/***/ }),\n/* 389 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weekFromNow;\n\n/***/ }),\n/* 390 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weeks;\n\n/***/ }),\n/* 391 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weeksAfter;\n\n/***/ }),\n/* 392 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weeksAgo;\n\n/***/ }),\n/* 393 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weeksBefore;\n\n/***/ }),\n/* 394 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.weeksFromNow;\n\n/***/ }),\n/* 395 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.year;\n\n/***/ }),\n/* 396 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearAfter;\n\n/***/ }),\n/* 397 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearAgo;\n\n/***/ }),\n/* 398 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearBefore;\n\n/***/ }),\n/* 399 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearFromNow;\n\n/***/ }),\n/* 400 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.years;\n\n/***/ }),\n/* 401 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearsAfter;\n\n/***/ }),\n/* 402 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearsAgo;\n\n/***/ }),\n/* 403 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearsBefore;\n\n/***/ }),\n/* 404 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Sugar = __webpack_require__(0);\n\n__webpack_require__(1);\n\nmodule.exports = Sugar.Number.yearsFromNow;\n\n/***/ }),\n/* 405 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n rangeClamp = __webpack_require__(420),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'clamp': function(el) {\n return rangeClamp(this, el);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clamp\" on Range.prototype.\n\n/***/ }),\n/* 406 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'clone': function() {\n return new Range(this.start, this.end);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clone\" on Range.prototype.\n\n/***/ }),\n/* 407 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'contains': function(el) {\n if (el == null) return false;\n if (el.start && el.end) {\n return el.start >= this.start && el.start <= this.end &&\n el.end >= this.start && el.end <= this.end;\n } else {\n return el >= this.start && el <= this.end;\n }\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"contains\" on Range.prototype.\n\n/***/ }),\n/* 408 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"days\" on Range.prototype.\n\n/***/ }),\n/* 409 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n rangeEvery = __webpack_require__(65),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'every': function(amount, fn) {\n return rangeEvery(this, amount, false, fn);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"every\" on Range.prototype.\n\n/***/ }),\n/* 410 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"hours\" on Range.prototype.\n\n/***/ }),\n/* 411 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Static Methods\n__webpack_require__(272);\n\n// Prototype Methods\n__webpack_require__(405);\n__webpack_require__(406);\n__webpack_require__(407);\n__webpack_require__(408);\n__webpack_require__(409);\n__webpack_require__(410);\n__webpack_require__(422);\n__webpack_require__(423);\n__webpack_require__(424);\n__webpack_require__(425);\n__webpack_require__(426);\n__webpack_require__(427);\n__webpack_require__(428);\n__webpack_require__(429);\n__webpack_require__(430);\n__webpack_require__(431);\n__webpack_require__(436);\n__webpack_require__(437);\n\nmodule.exports = __webpack_require__(0);\n\n/***/ }),\n/* 412 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar MULTIPLIERS = __webpack_require__(106),\n DURATION_UNITS = __webpack_require__(66),\n Range = __webpack_require__(13),\n trunc = __webpack_require__(23),\n forEach = __webpack_require__(26),\n rangeEvery = __webpack_require__(65),\n simpleCapitalize = __webpack_require__(55),\n defineOnPrototype = __webpack_require__(16);\n\nfunction buildDateRangeUnits() {\n var methods = {};\n forEach(DURATION_UNITS.split('|'), function(unit, i) {\n var name = unit + 's', mult, fn;\n if (i < 4) {\n fn = function() {\n return rangeEvery(this, unit, true);\n };\n } else {\n mult = MULTIPLIERS[simpleCapitalize(name)];\n fn = function() {\n return trunc((this.end - this.start) / mult);\n };\n }\n methods[name] = fn;\n });\n defineOnPrototype(Range, methods);\n}\n\nmodule.exports = buildDateRangeUnits;\n\n/***/ }),\n/* 413 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n DurationTextFormats = __webpack_require__(434),\n incrementDate = __webpack_require__(105),\n getDateForRange = __webpack_require__(102),\n namespaceAliases = __webpack_require__(22),\n getDateIncrementObject = __webpack_require__(103);\n\nvar sugarDate = namespaceAliases.sugarDate,\n RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO,\n RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION,\n RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION;\n\nfunction createDateRangeFromString(str) {\n var match, datetime, duration, dio, start, end;\n if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) {\n start = getDateForRange(match[1].replace('from', 'at'));\n end = sugarDate.get(start, match[2]);\n return new Range(start, end);\n }\n if (match = str.match(RANGE_REG_FRONT_DURATION)) {\n duration = match[1];\n datetime = match[2];\n }\n if (match = str.match(RANGE_REG_REAR_DURATION)) {\n datetime = match[1];\n duration = match[2];\n }\n if (datetime && duration) {\n start = getDateForRange(datetime);\n dio = getDateIncrementObject(duration);\n end = incrementDate(start, dio[0], dio[1]);\n } else {\n start = str;\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n}\n\nmodule.exports = createDateRangeFromString;\n\n/***/ }),\n/* 414 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar mathAliases = __webpack_require__(7),\n getPrecision = __webpack_require__(415);\n\nvar max = mathAliases.max;\n\nfunction getGreaterPrecision(n1, n2) {\n return max(getPrecision(n1), getPrecision(n2));\n}\n\nmodule.exports = getGreaterPrecision;\n\n/***/ }),\n/* 415 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar periodSplit = __webpack_require__(146);\n\nfunction getPrecision(n) {\n var split = periodSplit(n.toString());\n return split[1] ? split[1].length : 0;\n}\n\nmodule.exports = getPrecision;\n\n/***/ }),\n/* 416 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classChecks = __webpack_require__(3);\n\nvar isString = classChecks.isString;\n\nfunction getRangeMemberNumericValue(m) {\n return isString(m) ? m.charCodeAt(0) : m;\n}\n\nmodule.exports = getRangeMemberNumericValue;\n\n/***/ }),\n/* 417 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar withPrecision = __webpack_require__(74);\n\nfunction incrementNumber(current, amount, precision) {\n return withPrecision(current + amount, precision);\n}\n\nmodule.exports = incrementNumber;\n\n/***/ }),\n/* 418 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar chr = __webpack_require__(75);\n\nfunction incrementString(current, amount) {\n return chr(current.charCodeAt(0) + amount);\n}\n\nmodule.exports = incrementString;\n\n/***/ }),\n/* 419 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar valueIsNotInfinite = __webpack_require__(421),\n getRangeMemberPrimitiveValue = __webpack_require__(104);\n\nfunction isValidRangeMember(m) {\n var val = getRangeMemberPrimitiveValue(m);\n return (!!val || val === 0) && valueIsNotInfinite(m);\n}\n\nmodule.exports = isValidRangeMember;\n\n/***/ }),\n/* 420 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar cloneRangeMember = __webpack_require__(101);\n\nfunction rangeClamp(range, obj) {\n var clamped,\n start = range.start,\n end = range.end,\n min = end < start ? end : start,\n max = start > end ? start : end;\n if (obj < min) {\n clamped = min;\n } else if (obj > max) {\n clamped = max;\n } else {\n clamped = obj;\n }\n return cloneRangeMember(clamped);\n}\n\nmodule.exports = rangeClamp;\n\n/***/ }),\n/* 421 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction valueIsNotInfinite(m) {\n return m !== -Infinity && m !== Infinity;\n}\n\nmodule.exports = valueIsNotInfinite;\n\n/***/ }),\n/* 422 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'intersect': function(range) {\n if (range.start > this.end || range.end < this.start) {\n return new Range(NaN, NaN);\n }\n return new Range(\n this.start > range.start ? this.start : range.start,\n this.end < range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"intersect\" on Range.prototype.\n\n/***/ }),\n/* 423 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n rangeIsValid = __webpack_require__(51),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'isValid': function() {\n return rangeIsValid(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"isValid\" on Range.prototype.\n\n/***/ }),\n/* 424 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"milliseconds\" on Range.prototype.\n\n/***/ }),\n/* 425 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"minutes\" on Range.prototype.\n\n/***/ }),\n/* 426 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"months\" on Range.prototype.\n\n/***/ }),\n/* 427 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"seconds\" on Range.prototype.\n\n/***/ }),\n/* 428 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n mathAliases = __webpack_require__(7),\n rangeIsValid = __webpack_require__(51),\n defineOnPrototype = __webpack_require__(16),\n getRangeMemberNumericValue = __webpack_require__(416);\n\nvar abs = mathAliases.abs;\n\ndefineOnPrototype(Range, {\n\n 'span': function() {\n var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start);\n return rangeIsValid(this) ? abs(n) + 1 : NaN;\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"span\" on Range.prototype.\n\n/***/ }),\n/* 429 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n rangeEvery = __webpack_require__(65),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'toArray': function() {\n return rangeEvery(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toArray\" on Range.prototype.\n\n/***/ }),\n/* 430 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n rangeIsValid = __webpack_require__(51),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'toString': function() {\n return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range';\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toString\" on Range.prototype.\n\n/***/ }),\n/* 431 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n defineOnPrototype = __webpack_require__(16);\n\ndefineOnPrototype(Range, {\n\n 'union': function(range) {\n return new Range(\n this.start < range.start ? this.start : range.start,\n this.end > range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"union\" on Range.prototype.\n\n/***/ }),\n/* 432 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DURATION_UNITS = __webpack_require__(66);\n\nmodule.exports = RegExp('(\\\\d+)?\\\\s*('+ DURATION_UNITS +')s?', 'i');\n\n/***/ }),\n/* 433 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Range = __webpack_require__(13),\n classChecks = __webpack_require__(3),\n getDateForRange = __webpack_require__(102),\n createDateRangeFromString = __webpack_require__(413);\n\nvar isString = classChecks.isString;\n\nvar DateRangeConstructor = function(start, end) {\n if (arguments.length === 1 && isString(start)) {\n return createDateRangeFromString(start);\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n};\n\nmodule.exports = DateRangeConstructor;\n\n/***/ }),\n/* 434 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FULL_CAPTURED_DURATION = __webpack_require__(435);\n\nmodule.exports = {\n RANGE_REG_FROM_TO: /(?:from)?\\s*(.+)\\s+(?:to|until)\\s+(.+)$/i,\n RANGE_REG_REAR_DURATION: RegExp('(.+)\\\\s*for\\\\s*' + FULL_CAPTURED_DURATION, 'i'),\n RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\\\s*'+ FULL_CAPTURED_DURATION +'\\\\s*(?:starting)?\\\\s(?:at\\\\s)?(.+)', 'i')\n};\n\n/***/ }),\n/* 435 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DURATION_UNITS = __webpack_require__(66);\n\nmodule.exports = '((?:\\\\d+)?\\\\s*(?:' + DURATION_UNITS + '))s?';\n\n/***/ }),\n/* 436 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"weeks\" on Range.prototype.\n\n/***/ }),\n/* 437 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(25);\n\n// This package does not export anything as it is\n// simply defining \"years\" on Range.prototype.\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// tablefilter.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"d88702b82ce1d192a674\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 126);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap de20f8ff394dde594434","/*\n * Sugar v2.0.4\n *\n * Freely distributable and licensed under the MIT-style license.\n * Copyright (c) Andrew Plummer\n * https://sugarjs.com/\n *\n * ---------------------------- */\n(function() {\n 'use strict';\n\n /***\n * @module Core\n * @description Core functionality including the ability to define methods and\n * extend onto natives.\n *\n ***/\n\n // The global to export.\n var Sugar;\n\n // The name of Sugar in the global namespace.\n var SUGAR_GLOBAL = 'Sugar';\n\n // Natives available on initialization. Letting Object go first to ensure its\n // global is set by the time the rest are checking for chainable Object methods.\n var NATIVE_NAMES = 'Object Number String Array Date RegExp Function';\n\n // Static method flag\n var STATIC = 0x1;\n\n // Instance method flag\n var INSTANCE = 0x2;\n\n // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch.\n var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties);\n\n // The global context. Rhino uses a different \"global\" keyword so\n // do an extra check to be sure that it's actually the global context.\n var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this;\n\n // Is the environment node?\n var hasExports = typeof module !== 'undefined' && module.exports;\n\n // Whether object instance methods can be mapped to the prototype.\n var allowObjectPrototype = false;\n\n // A map from Array to SugarArray.\n var namespacesByName = {};\n\n // A map from [object Object] to namespace.\n var namespacesByClassString = {};\n\n // Defining properties.\n var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim;\n\n // A default chainable class for unknown types.\n var DefaultChainable = getNewChainableClass('Chainable');\n\n\n // Global methods\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n if (Sugar) {\n // Reuse already defined Sugar global object.\n return;\n }\n Sugar = function(arg) {\n forEachProperty(Sugar, function(sugarNamespace, name) {\n // Although only the only enumerable properties on the global\n // object are Sugar namespaces, environments that can't set\n // non-enumerable properties will step through the utility methods\n // as well here, so use this check to only allow true namespaces.\n if (hasOwn(namespacesByName, name)) {\n sugarNamespace.extend(arg);\n }\n });\n return Sugar;\n };\n if (hasExports) {\n module.exports = Sugar;\n } else {\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments.\n *\n * @example\n *\n * Sugar.Object.defineStaticPolyfill({\n * keys: function (obj) {\n * // get keys!\n * }\n * });\n *\n * @signature defineStaticPolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name], opts.methods, true, opts.last);\n return sugarNamespace;\n });\n\n /***\n * @method defineInstancePolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that are mapped onto the native prototype\n * if they do not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. This method differs from\n * `defineInstance` as there is no static signature (as the method\n * is mapped as-is to the native), so it should refer to its `this`\n * object.\n *\n * @example\n *\n * Sugar.Array.defineInstancePolyfill({\n * indexOf: function (arr, el) {\n * // index finding code here!\n * }\n * });\n *\n * @signature defineInstancePolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name].prototype, opts.methods, true, opts.last);\n // Map instance polyfills to chainable as well.\n forEachProperty(opts.methods, function(fn, methodName) {\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n return sugarNamespace;\n });\n\n /***\n * @method alias(toName, from)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Aliases one Sugar method to another.\n *\n * @example\n *\n * Sugar.Array.alias('all', 'every');\n *\n * @signature alias(toName, fn)\n * @param {string} toName - Name for new method.\n * @param {string|Function} from - Method to alias, or string shortcut.\n ***/\n setProperty(sugarNamespace, 'alias', function(name, source) {\n var method = typeof source === 'string' ? sugarNamespace[source] : source;\n setMethod(sugarNamespace, name, method);\n return sugarNamespace;\n });\n\n // Each namespace can extend only itself through its .extend method.\n setProperty(sugarNamespace, 'extend', extend);\n\n // Cache the class to namespace relationship for later use.\n namespacesByName[name] = sugarNamespace;\n namespacesByClassString['[object ' + name + ']'] = sugarNamespace;\n\n mapNativeToChainable(name);\n mapObjectChainablesToNamespace(sugarNamespace);\n\n\n // Export\n return Sugar[name] = sugarNamespace;\n }\n\n function setGlobalProperties() {\n setProperty(Sugar, 'extend', Sugar);\n setProperty(Sugar, 'toString', toString);\n setProperty(Sugar, 'createNamespace', createNamespace);\n\n setProperty(Sugar, 'util', {\n 'hasOwn': hasOwn,\n 'getOwn': getOwn,\n 'setProperty': setProperty,\n 'classToString': classToString,\n 'defineProperty': defineProperty,\n 'forEachProperty': forEachProperty,\n 'mapNativeToChainable': mapNativeToChainable\n });\n }\n\n function toString() {\n return SUGAR_GLOBAL;\n }\n\n\n // Defining Methods\n\n function defineMethods(sugarNamespace, methods, type, args, flags) {\n forEachProperty(methods, function(method, methodName) {\n var instanceMethod, staticMethod = method;\n if (args) {\n staticMethod = wrapMethodWithArguments(method);\n }\n if (flags) {\n staticMethod.flags = flags;\n }\n\n // A method may define its own custom implementation, so\n // make sure that's not the case before creating one.\n if (type & INSTANCE && !method.instance) {\n instanceMethod = wrapInstanceMethod(method, args);\n setProperty(staticMethod, 'instance', instanceMethod);\n }\n\n if (type & STATIC) {\n setProperty(staticMethod, 'static', true);\n }\n\n setMethod(sugarNamespace, methodName, staticMethod);\n\n if (sugarNamespace.active) {\n // If the namespace has been activated (.extend has been called),\n // then map this method as well.\n sugarNamespace.extend(methodName);\n }\n });\n }\n\n function collectDefineOptions(arg1, arg2, arg3) {\n var methods, last;\n if (typeof arg1 === 'string') {\n methods = {};\n methods[arg1] = arg2;\n last = arg3;\n } else {\n methods = arg1;\n last = arg2;\n }\n return {\n last: last,\n methods: methods\n };\n }\n\n function wrapInstanceMethod(fn, args) {\n return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn);\n }\n\n function wrapMethodWithArguments(fn, instance) {\n // Functions accepting enumerated arguments will always have \"args\" as the\n // last argument, so subtract one from the function length to get the point\n // at which to start collecting arguments. If this is an instance method on\n // a prototype, then \"this\" will be pushed into the arguments array so start\n // collecting 1 argument earlier.\n var startCollect = fn.length - 1 - (instance ? 1 : 0);\n return function() {\n var args = [], collectedArgs = [], len;\n if (instance) {\n args.push(this);\n }\n len = Math.max(arguments.length, startCollect);\n // Optimized: no leaking arguments\n for (var i = 0; i < len; i++) {\n if (i < startCollect) {\n args.push(arguments[i]);\n } else {\n collectedArgs.push(arguments[i]);\n }\n }\n args.push(collectedArgs);\n return fn.apply(this, args);\n };\n }\n\n function wrapInstanceMethodFixed(fn) {\n switch(fn.length) {\n // Wrapped instance methods will always be passed the instance\n // as the first argument, but requiring the argument to be defined\n // may cause confusion here, so return the same wrapped function regardless.\n case 0:\n case 1:\n return function() {\n return fn(this);\n };\n case 2:\n return function(a) {\n return fn(this, a);\n };\n case 3:\n return function(a, b) {\n return fn(this, a, b);\n };\n case 4:\n return function(a, b, c) {\n return fn(this, a, b, c);\n };\n case 5:\n return function(a, b, c, d) {\n return fn(this, a, b, c, d);\n };\n }\n }\n\n // Method helpers\n\n function extendNative(target, source, polyfill, override) {\n forEachProperty(source, function(method, name) {\n if (polyfill && !override && target[name]) {\n // Method exists, so bail.\n return;\n }\n setProperty(target, name, method);\n });\n }\n\n function setMethod(sugarNamespace, methodName, method) {\n sugarNamespace[methodName] = method;\n if (method.instance) {\n defineChainableMethod(sugarNamespace, methodName, method.instance, true);\n }\n }\n\n\n // Chainables\n\n function getNewChainableClass(name) {\n var fn = function SugarChainable(obj, arg) {\n if (!(this instanceof fn)) {\n return new fn(obj, arg);\n }\n if (this.constructor !== fn) {\n // Allow modules to define their own constructors.\n obj = this.constructor.apply(obj, arguments);\n }\n this.raw = obj;\n };\n setProperty(fn, 'toString', function() {\n return SUGAR_GLOBAL + name;\n });\n setProperty(fn.prototype, 'valueOf', function() {\n return this.raw;\n });\n return fn;\n }\n\n function defineChainableMethod(sugarNamespace, methodName, fn) {\n var wrapped = wrapWithChainableResult(fn), existing, collision, dcp;\n dcp = DefaultChainable.prototype;\n existing = dcp[methodName];\n\n // If the method was previously defined on the default chainable, then a\n // collision exists, so set the method to a disambiguation function that will\n // lazily evaluate the object and find it's associated chainable. An extra\n // check is required to avoid false positives from Object inherited methods.\n collision = existing && existing !== Object.prototype[methodName];\n\n // The disambiguation function is only required once.\n if (!existing || !existing.disambiguate) {\n dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped;\n }\n\n // The target chainable always receives the wrapped method. Additionally,\n // if the target chainable is Sugar.Object, then map the wrapped method\n // to all other namespaces as well if they do not define their own method\n // of the same name. This way, a Sugar.Number will have methods like\n // isEqual that can be called on any object without having to traverse up\n // the prototype chain and perform disambiguation, which costs cycles.\n // Note that the \"if\" block below actually does nothing on init as Object\n // goes first and no other namespaces exist yet. However it needs to be\n // here as Object instance methods defined later also need to be mapped\n // back onto existing namespaces.\n sugarNamespace.prototype[methodName] = wrapped;\n if (sugarNamespace === Sugar.Object) {\n mapObjectChainableToAllNamespaces(methodName, wrapped);\n }\n }\n\n function mapObjectChainablesToNamespace(sugarNamespace) {\n forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) {\n if (typeof val === 'function') {\n setObjectChainableOnNamespace(sugarNamespace, methodName, val);\n }\n });\n }\n\n function mapObjectChainableToAllNamespaces(methodName, fn) {\n forEachProperty(namespacesByName, function(sugarNamespace) {\n setObjectChainableOnNamespace(sugarNamespace, methodName, fn);\n });\n }\n\n function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) {\n var proto = sugarNamespace.prototype;\n if (!hasOwn(proto, methodName)) {\n proto[methodName] = fn;\n }\n }\n\n function wrapWithChainableResult(fn) {\n return function() {\n return new DefaultChainable(fn.apply(this.raw, arguments));\n };\n }\n\n function disambiguateMethod(methodName) {\n var fn = function() {\n var raw = this.raw, sugarNamespace, fn;\n if (raw != null) {\n // Find the Sugar namespace for this unknown.\n sugarNamespace = namespacesByClassString[classToString(raw)];\n }\n if (!sugarNamespace) {\n // If no sugarNamespace can be resolved, then default\n // back to Sugar.Object so that undefined and other\n // non-supported types can still have basic object\n // methods called on them, such as type checks.\n sugarNamespace = Sugar.Object;\n }\n\n fn = new sugarNamespace(raw)[methodName];\n\n if (fn.disambiguate) {\n // If the method about to be called on this chainable is\n // itself a disambiguation method, then throw an error to\n // prevent infinite recursion.\n throw new TypeError('Cannot resolve namespace for ' + raw);\n }\n\n return fn.apply(this, arguments);\n };\n fn.disambiguate = true;\n return fn;\n }\n\n function mapNativeToChainable(name, methodNames) {\n var sugarNamespace = namespacesByName[name],\n nativeProto = globalContext[name].prototype;\n\n if (!methodNames && ownPropertyNames) {\n methodNames = ownPropertyNames(nativeProto);\n }\n\n forEachProperty(methodNames, function(methodName) {\n if (nativeMethodProhibited(methodName)) {\n // Sugar chainables have their own constructors as well as \"valueOf\"\n // methods, so exclude them here. The __proto__ argument should be trapped\n // by the function check below, however simply accessing this property on\n // Object.prototype causes QML to segfault, so pre-emptively excluding it.\n return;\n }\n try {\n var fn = nativeProto[methodName];\n if (typeof fn !== 'function') {\n // Bail on anything not a function.\n return;\n }\n } catch (e) {\n // Function.prototype has properties that\n // will throw errors when accessed.\n return;\n }\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n }\n\n function nativeMethodProhibited(methodName) {\n return methodName === 'constructor' ||\n methodName === 'valueOf' ||\n methodName === '__proto__';\n }\n\n\n // Util\n\n // Internal references\n var ownPropertyNames = Object.getOwnPropertyNames,\n internalToString = Object.prototype.toString,\n internalHasOwnProperty = Object.prototype.hasOwnProperty;\n\n // Defining this as a variable here as the ES5 module\n // overwrites it to patch DONTENUM.\n var forEachProperty = function (obj, fn) {\n for(var key in obj) {\n if (!hasOwn(obj, key)) continue;\n if (fn.call(obj, obj[key], key, obj) === false) break;\n }\n };\n\n function definePropertyShim(obj, prop, descriptor) {\n obj[prop] = descriptor.value;\n }\n\n function setProperty(target, name, value, enumerable) {\n defineProperty(target, name, {\n value: value,\n enumerable: !!enumerable,\n configurable: true,\n writable: true\n });\n }\n\n // PERF: Attempts to speed this method up get very Heisenbergy. Quickly\n // returning based on typeof works for primitives, but slows down object\n // types. Even === checks on null and undefined (no typeof) will end up\n // basically breaking even. This seems to be as fast as it can go.\n function classToString(obj) {\n return internalToString.call(obj);\n }\n\n function hasOwn(obj, prop) {\n return !!obj && internalHasOwnProperty.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n if (hasOwn(obj, prop)) {\n return obj[prop];\n }\n }\n\n setupGlobal();\n\n}).call(this);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-core/sugar-core.js\n// module id = 0\n// module chunks = 1","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildNumberUnitMethodsCall.js\n// module id = 1\n// module chunks = 1","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildDateUnitMethodsCall.js\n// module id = 2\n// module chunks = 1","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject'),\n coreUtilityAliases = require('./coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nvar isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\nfunction buildClassChecks() {\n\n var knownTypes = {};\n\n function addCoreTypes() {\n\n var names = spaceSplit(NATIVE_TYPES);\n\n isBoolean = buildPrimitiveClassCheck(names[0]);\n isNumber = buildPrimitiveClassCheck(names[1]);\n isString = buildPrimitiveClassCheck(names[2]);\n\n isDate = buildClassCheck(names[3]);\n isRegExp = buildClassCheck(names[4]);\n\n // Wanted to enhance performance here by using simply \"typeof\"\n // but Firefox has two major issues that make this impossible,\n // one fixed, the other not, so perform a full class check here.\n //\n // 1. Regexes can be typeof \"function\" in FF < 3\n // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed)\n //\n // 2. HTMLEmbedElement and HTMLObjectElement are be typeof \"function\"\n // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix)\n isFunction = buildClassCheck(names[5]);\n\n\n isArray = Array.isArray || buildClassCheck(names[6]);\n isError = buildClassCheck(names[7]);\n\n isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set);\n isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map);\n\n // Add core types as known so that they can be checked by value below,\n // notably excluding Functions and adding Arguments and Error.\n addKnownType('Arguments');\n addKnownType(names[0]);\n addKnownType(names[1]);\n addKnownType(names[2]);\n addKnownType(names[3]);\n addKnownType(names[4]);\n addKnownType(names[6]);\n\n }\n\n function addArrayTypes() {\n var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64';\n forEach(spaceSplit(types), function(str) {\n addKnownType(str + 'Array');\n });\n }\n\n function addKnownType(className) {\n var str = '[object '+ className +']';\n knownTypes[str] = true;\n }\n\n function isKnownType(className) {\n return knownTypes[className];\n }\n\n function buildClassCheck(className, globalObject) {\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n function getConstructorClassCheck(obj) {\n var ctorStr = String(obj);\n return function(obj) {\n return String(obj.constructor) === ctorStr;\n };\n }\n\n function getToStringClassCheck(className) {\n return function(obj, str) {\n // perf: Returning up front on instanceof appears to be slower.\n return isClass(obj, className, str);\n };\n }\n\n function buildPrimitiveClassCheck(className) {\n var type = className.toLowerCase();\n return function(obj) {\n var t = typeof obj;\n return t === type || t === 'object' && isClass(obj, className);\n };\n }\n\n addCoreTypes();\n addArrayTypes();\n\n isSerializable = function(obj, className) {\n // Only known objects can be serialized. This notably excludes functions,\n // host objects, Symbols (which are matched by reference), and instances\n // of classes. The latter can arguably be matched by value, but\n // distinguishing between these and host objects -- which should never be\n // compared by value -- is very tricky so not dealing with it here.\n className = className || classToString(obj);\n return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/classChecks.js\n// module id = 3\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addLocale.js\n// module id = 4\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DateUnitIndexes.js\n// module id = 5\n// module chunks = 1","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj objue\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/types.js","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/mathAliases.js\n// module id = 7\n// module chunks = 1","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LocaleHelpers.js\n// module id = 8\n// module chunks = 1","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue]\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/dom.js","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n hasOwn: Sugar.util.hasOwn,\n getOwn: Sugar.util.getOwn,\n setProperty: Sugar.util.setProperty,\n classToString: Sugar.util.classToString,\n defineProperty: Sugar.util.defineProperty,\n forEachProperty: Sugar.util.forEachProperty,\n mapNativeToChainable: Sugar.util.mapNativeToChainable\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/coreUtilityAliases.js\n// module id = 10\n// module chunks = 1","\r\nconst NOTIMPLEMENTED = 'Not implemented.';\r\n\r\n/**\r\n * Base class defining the interface of a TableFilter feature\r\n */\r\nexport class Feature {\r\n /**\r\n * Creates an instance of Feature\r\n * @param {Object} tf TableFilter instance\r\n * @param {String} feature Feature name known by TableFilter\r\n */\r\n constructor(tf, feature) {\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * Feature name\r\n * @type {String}\r\n */\r\n this.feature = feature;\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOTIMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOTIMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/feature.js","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildRelativeAliasesCall.js\n// module id = 12\n// module chunks = 1","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction Range(start, end) {\n this.start = cloneRangeMember(start);\n this.end = cloneRangeMember(end);\n}\n\nmodule.exports = Range;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/Range.js\n// module id = 13\n// module chunks = 1","import {DateType} from './modules/dateType';\r\nimport {Help} from './modules/help';\r\nimport {State} from './modules/state';\r\nimport {GridLayout} from './modules/gridLayout';\r\nimport {Loader} from './modules/loader';\r\nimport {HighlightKeyword} from './modules/highlightKeywords';\r\nimport {PopupFilter} from './modules/popupFilter';\r\nimport {MarkActiveColumns} from './modules/markActiveColumns';\r\nimport {RowsCounter} from './modules/rowsCounter';\r\nimport {StatusBar} from './modules/statusBar';\r\nimport {ClearButton} from './modules/clearButton';\r\nimport {AlternateRows} from './modules/alternateRows';\r\nimport {NoResults} from './modules/noResults';\r\nimport {Paging} from './modules/paging';\r\n\r\n/**\r\n * Filter types\r\n */\r\n\r\n/**\r\n * Input filter type\r\n * @type {String}\r\n */\r\nexport const INPUT = 'input';\r\n/**\r\n * Select filter type\r\n * @type {String}\r\n */\r\nexport const SELECT = 'select';\r\n/**\r\n * Multiple select filter type\r\n * @type {String}\r\n */\r\nexport const MULTIPLE = 'multiple';\r\n/**\r\n * Checklist filter type\r\n * @type {String}\r\n */\r\nexport const CHECKLIST = 'checklist';\r\n/**\r\n * None filter type\r\n * @type {String}\r\n */\r\nexport const NONE = 'none';\r\n\r\n/**\r\n * Key codes\r\n */\r\n\r\n/**\r\n * Enter key code\r\n * @type {Number}\r\n */\r\nexport const ENTER_KEY = 13;\r\n/**\r\n * Tab key code\r\n * @type {Number}\r\n */\r\nexport const TAB_KEY = 9;\r\n/**\r\n * Escape key code\r\n * @type {Number}\r\n */\r\nexport const ESC_KEY = 27;\r\n/**\r\n * Up arrow key code\r\n * @type {Number}\r\n */\r\nexport const UP_ARROW_KEY = 38;\r\n/**\r\n * Down arrow key code\r\n * @type {Number}\r\n */\r\nexport const DOWN_ARROW_KEY = 40;\r\n\r\n/**\r\n * HTML tags\r\n */\r\n\r\n/**\r\n * Header cell tag\r\n * @type {String}\r\n */\r\nexport const HEADER_TAG = 'TH';\r\n/**\r\n * Cell tag\r\n * @type {String}\r\n */\r\nexport const CELL_TAG = 'TD';\r\n\r\n/**\r\n * Data types\r\n */\r\n\r\n/**\r\n * String\r\n * @type {String}\r\n */\r\nexport const STRING = 'string';\r\n\r\n/**\r\n * Number\r\n * @type {String}\r\n */\r\nexport const NUMBER = 'number';\r\n\r\n/**\r\n * Formatted number\r\n * @type {String}\r\n */\r\nexport const FORMATTED_NUMBER = 'formatted-number';\r\n\r\n/**\r\n * Date\r\n * @type {String}\r\n */\r\nexport const DATE = 'date';\r\n\r\n/**\r\n * IP address\r\n * @type {String}\r\n */\r\nexport const IP_ADDRESS = 'ipaddress';\r\n\r\n/**\r\n * Default values\r\n */\r\n\r\n/**\r\n * Auto filter delay in milliseconds\r\n * @type {Number}\r\n */\r\nexport const AUTO_FILTER_DELAY = 750;\r\n\r\n/**\r\n * TableFilter features definitions\r\n * @type {Object}\r\n */\r\nexport const FEATURES = {\r\n dateType: {\r\n class: DateType,\r\n name: 'dateType'\r\n },\r\n help: {\r\n class: Help,\r\n name: 'help',\r\n enforce: true\r\n },\r\n state: {\r\n class: State,\r\n name: 'state'\r\n },\r\n markActiveColumns: {\r\n class: MarkActiveColumns,\r\n name: 'markActiveColumns'\r\n },\r\n gridLayout: {\r\n class: GridLayout,\r\n name: 'gridLayout'\r\n },\r\n loader: {\r\n class: Loader,\r\n name: 'loader'\r\n },\r\n highlightKeyword: {\r\n class: HighlightKeyword,\r\n name: 'highlightKeyword',\r\n property: 'highlightKeywords'\r\n },\r\n popupFilter: {\r\n class: PopupFilter,\r\n name: 'popupFilter',\r\n property: 'popupFilters'\r\n },\r\n rowsCounter: {\r\n class: RowsCounter,\r\n name: 'rowsCounter'\r\n },\r\n statusBar: {\r\n class: StatusBar,\r\n name: 'statusBar'\r\n },\r\n clearButton: {\r\n class: ClearButton,\r\n name: 'clearButton',\r\n property: 'btnReset'\r\n },\r\n alternateRows: {\r\n class: AlternateRows,\r\n name: 'alternateRows'\r\n },\r\n noResults: {\r\n class: NoResults,\r\n name: 'noResults'\r\n },\r\n paging: {\r\n class: Paging,\r\n name: 'paging'\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/const.js","/**\r\n * Export window or global object depending on the environment\r\n */\r\nexport const root = (typeof self === 'object' && self.self === self && self) ||\r\n (typeof global === 'object' && global.global === global && global) ||\r\n this;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/root.js","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineOnPrototype.js\n// module id = 16\n// module chunks = 1","import {root} from './root';\r\n\r\n/**\r\n * DOM event utilities\r\n */\r\n\r\n/**\r\n * Add event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const addEvt = (obj, type, func, capture) => {\r\n if (obj.addEventListener) {\r\n obj.addEventListener(type, func, capture);\r\n }\r\n else if (obj.attachEvent) {\r\n obj.attachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = func;\r\n }\r\n};\r\n\r\n/**\r\n * Remove event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const removeEvt = (obj, type, func, capture) => {\r\n if (obj.removeEventListener) {\r\n obj.removeEventListener(type, func, capture);\r\n } else if (obj.detachEvent) {\r\n obj.detachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Prevents further propagation of the current event in the bubbling phase\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const stopEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n};\r\n\r\n/**\r\n * Cancels the event if it is cancelable, without stopping further\r\n * propagation of the event.\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const cancelEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.preventDefault) {\r\n evt.preventDefault();\r\n } else {\r\n evt.returnValue = false;\r\n }\r\n};\r\n\r\n/**\r\n * Reference to the object that dispatched the event\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {DOMElement}\r\n */\r\nexport const targetEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n return evt.target || evt.srcElement;\r\n};\r\n\r\n/**\r\n * Returns the Unicode value of pressed key\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {Number}\r\n */\r\nexport const keyCode = (evt) => {\r\n return evt.charCode ? evt.charCode :\r\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/event.js","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/callDateGet.js\n// module id = 18\n// module chunks = 1","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/string.js","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekday.js\n// module id = 20\n// module chunks = 1","'use strict';\n\nvar privatePropertyAccessor = require('../internal/privatePropertyAccessor');\n\nmodule.exports = privatePropertyAccessor('utc');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/_utc.js\n// module id = 21\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n sugarObject: Sugar.Object,\n sugarArray: Sugar.Array,\n sugarDate: Sugar.Date,\n sugarString: Sugar.String,\n sugarNumber: Sugar.Number,\n sugarFunction: Sugar.Function,\n sugarRegExp: Sugar.RegExp\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/namespaceAliases.js\n// module id = 22\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('./mathAliases');\n\nvar ceil = mathAliases.ceil,\n floor = mathAliases.floor;\n\nvar trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n};\n\nmodule.exports = trunc;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/trunc.js\n// module id = 23\n// module chunks = 1","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getWeekday = require('./getWeekday'),\n classChecks = require('../../common/var/classChecks'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar isNumber = classChecks.isNumber,\n abs = mathAliases.abs;\n\nfunction setWeekday(d, dow, dir) {\n if (!isNumber(dow)) return;\n var currentWeekday = getWeekday(d);\n if (dir) {\n // Allow a \"direction\" parameter to determine whether a weekday can\n // be set beyond the current weekday in either direction.\n var ndir = dir > 0 ? 1 : -1;\n var offset = dow % 7 - currentWeekday;\n if (offset && offset / abs(offset) !== ndir) {\n dow += 7 * ndir;\n }\n }\n setDate(d, getDate(d) + dow - currentWeekday);\n return d.getTime();\n}\n\nmodule.exports = setWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setWeekday.js\n// module id = 24\n// module chunks = 1","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/build/buildDateRangeUnitsCall.js\n// module id = 25\n// module chunks = 1","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/forEach.js\n// module id = 26\n// module chunks = 1","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isDefined.js\n// module id = 27\n// module chunks = 1","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDate(d, options, forceClone) {\n return getExtendedDate(null, d, options, forceClone).date;\n}\n\nmodule.exports = createDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/createDate.js\n// module id = 28\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getMonth.js\n// module id = 29\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getYear.js\n// module id = 30\n// module chunks = 1","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DateUnits.js\n// module id = 31\n// module chunks = 1","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/callDateSet.js\n// module id = 32\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/cloneDate.js\n// module id = 33\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDate.js\n// module id = 34\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setDate.js\n// module id = 35\n// module chunks = 1","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setUnitAndLowerToEdge.js\n// module id = 36\n// module chunks = 1","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isUndefined.js\n// module id = 37\n// module chunks = 1","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/advanceDate.js\n// module id = 38\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getLowerUnitIndex.js\n// module id = 39\n// module chunks = 1","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getNewDate.js\n// module id = 40\n// module chunks = 1","'use strict';\n\nvar methodDefineAliases = require('../var/methodDefineAliases'),\n collectSimilarMethods = require('./collectSimilarMethods');\n\nvar defineInstance = methodDefineAliases.defineInstance;\n\nfunction defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n}\n\nmodule.exports = defineInstanceSimilar;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineInstanceSimilar.js\n// module id = 41\n// module chunks = 1","'use strict';\n\nvar simpleMerge = require('./simpleMerge');\n\nfunction simpleClone(obj) {\n return simpleMerge({}, obj);\n}\n\nmodule.exports = simpleClone;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleClone.js\n// module id = 42\n// module chunks = 1","'use strict';\n\nfunction spaceSplit(str) {\n return str.split(' ');\n}\n\nmodule.exports = spaceSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/spaceSplit.js\n// module id = 43\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n HALF_WIDTH_ZERO: 0x30,\n FULL_WIDTH_ZERO: 0xff10,\n HALF_WIDTH_PERIOD: '.',\n FULL_WIDTH_PERIOD: '.',\n HALF_WIDTH_COMMA: ',',\n OPEN_BRACE: '{',\n CLOSE_BRACE: '}'\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/CommonChars.js\n// module id = 44\n// module chunks = 1","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateIsValid.js\n// module id = 45\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n getDateParam = require('./getDateParam'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction iterateOverDateParams(params, fn, startIndex, endIndex) {\n\n function run(name, unit, i) {\n var val = getDateParam(params, name);\n if (isDefined(val)) {\n fn(name, val, unit, i);\n }\n }\n\n iterateOverDateUnits(function (unit, i) {\n var result = run(unit.name, unit, i);\n if (result !== false && i === DAY_INDEX) {\n // Check for \"weekday\", which has a distinct meaning\n // in the context of setting a date, but has the same\n // meaning as \"day\" as a unit of time.\n result = run('weekday', unit, i);\n }\n return result;\n }, startIndex, endIndex);\n\n}\n\nmodule.exports = iterateOverDateParams;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverDateParams.js\n// module id = 46\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToBeginningOfUnit(d, unitIndex, localeCode) {\n if (unitIndex === WEEK_INDEX) {\n moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = moveToBeginningOfUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToBeginningOfUnit.js\n// module id = 47\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) {\n if (unitIndex === WEEK_INDEX) {\n moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true);\n}\n\nmodule.exports = moveToEndOfUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToEndOfUnit.js\n// module id = 48\n// module chunks = 1","'use strict';\n\nfunction tzOffset(d) {\n return d.getTimezoneOffset();\n}\n\nmodule.exports = tzOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/tzOffset.js\n// module id = 49\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate'),\n setWeekday = require('./setWeekday'),\n mathAliases = require('../../common/var/mathAliases'),\n callDateGet = require('../../common/internal/callDateGet'),\n classChecks = require('../../common/var/classChecks'),\n resetLowerUnits = require('./resetLowerUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n getHigherUnitIndex = require('./getHigherUnitIndex'),\n callDateSetWithWeek = require('./callDateSetWithWeek'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX,\n round = mathAliases.round,\n isNumber = classChecks.isNumber;\n\nfunction updateDate(d, params, reset, advance, prefer, weekdayDir) {\n var upperUnitIndex;\n\n function setUpperUnit(unitName, unitIndex) {\n if (prefer && !upperUnitIndex) {\n if (unitName === 'weekday') {\n upperUnitIndex = WEEK_INDEX;\n } else {\n upperUnitIndex = getHigherUnitIndex(unitIndex);\n }\n }\n }\n\n function setSpecificity(unitIndex) {\n // Other functions may preemptively set the specificity before arriving\n // here so concede to them if they have already set more specific units.\n if (unitIndex > params.specificity) {\n return;\n }\n params.specificity = unitIndex;\n }\n\n function canDisambiguate() {\n if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) {\n return;\n }\n switch(prefer) {\n case -1: return d > getNewDate();\n case 1: return d < getNewDate();\n }\n }\n\n function disambiguateHigherUnit() {\n var unit = DateUnits[upperUnitIndex];\n advance = prefer;\n setUnit(unit.name, 1, unit, upperUnitIndex);\n }\n\n function handleFraction(unit, unitIndex, fraction) {\n if (unitIndex) {\n var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)];\n var val = round(unit.multiplier / lowerUnit.multiplier * fraction);\n params[lowerUnit.name] = val;\n }\n }\n\n function monthHasShifted(d, targetMonth) {\n if (targetMonth < 0) {\n targetMonth = targetMonth % 12 + 12;\n }\n return targetMonth % 12 !== getMonth(d);\n }\n\n function setUnit(unitName, value, unit, unitIndex) {\n var method = unit.method, checkMonth, fraction;\n\n setUpperUnit(unitName, unitIndex);\n setSpecificity(unitIndex);\n\n fraction = value % 1;\n if (fraction) {\n handleFraction(unit, unitIndex, fraction);\n value = trunc(value);\n }\n\n if (unitName === 'weekday') {\n if (!advance) {\n // Weekdays are always considered absolute units so simply set them\n // here even if it is an \"advance\" operation. This is to help avoid\n // ambiguous meanings in \"advance\" as well as to neatly allow formats\n // like \"Wednesday of next week\" without more complex logic.\n setWeekday(d, value, weekdayDir);\n }\n return;\n }\n checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28;\n\n // If we are advancing or rewinding, then we need we need to set the\n // absolute time if the unit is \"hours\" or less. This is due to the fact\n // that setting by method is ambiguous during DST shifts. For example,\n // 1:00am on November 1st 2015 occurs twice in North American timezones\n // with DST, the second time being after the clocks are rolled back at\n // 2:00am. When springing forward this is automatically handled as there\n // is no 2:00am so the date automatically jumps to 3:00am. However, when\n // rolling back, setHours(2) will always choose the first \"2am\" even if\n // the date is currently set to the second, causing unintended jumps.\n // This ambiguity is unavoidable when setting dates as the notation is\n // ambiguous. However when advancing, we clearly want the resulting date\n // to be an acutal hour ahead, which can only be accomplished by setting\n // the absolute time. Conversely, any unit higher than \"hours\" MUST use\n // the internal set methods, as they are ambiguous as absolute units of\n // time. Years may be 365 or 366 days depending on leap years, months are\n // all over the place, and even days may be 23-25 hours depending on DST\n // shifts. Finally, note that the kind of jumping described above will\n // occur when calling ANY \"set\" method on the date and will occur even if\n // the value being set is identical to the one currently set (i.e.\n // setHours(2) on a date at 2am may not be a noop). This is precarious,\n // so avoiding this situation in callDateSet by checking up front that\n // the value is not the same before setting.\n if (advance && !unit.ambiguous) {\n d.setTime(d.getTime() + (value * advance * unit.multiplier));\n return;\n } else if (advance) {\n if (unitIndex === WEEK_INDEX) {\n value *= 7;\n method = DateUnits[DAY_INDEX].method;\n }\n value = (value * advance) + callDateGet(d, method);\n }\n callDateSetWithWeek(d, method, value, advance);\n if (checkMonth && monthHasShifted(d, value)) {\n // As we are setting the units in reverse order, there is a chance that\n // our date may accidentally traverse into a new month, such as setting\n // { month: 1, date 15 } on January 31st. Check for this here and reset\n // the date to the last day of the previous month if this has happened.\n setDate(d, 0);\n }\n }\n\n if (isNumber(params) && advance) {\n // If param is a number and advancing, the number is in milliseconds.\n params = { millisecond: params };\n } else if (isNumber(params)) {\n // Otherwise just set the timestamp and return.\n d.setTime(params);\n return d;\n }\n\n iterateOverDateParams(params, setUnit);\n\n if (reset && params.specificity) {\n resetLowerUnits(d, params.specificity);\n }\n\n // If past or future is preferred, then the process of \"disambiguation\" will\n // ensure that an ambiguous time/date (\"4pm\", \"thursday\", \"June\", etc.) will\n // be in the past or future. Weeks are only considered ambiguous if there is\n // a weekday, i.e. \"thursday\" is an ambiguous week, but \"the 4th\" is an\n // ambiguous month.\n if (canDisambiguate()) {\n disambiguateHigherUnit();\n }\n return d;\n}\n\nmodule.exports = updateDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/updateDate.js\n// module id = 50\n// module chunks = 1","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeIsValid.js\n// module id = 51\n// module chunks = 1","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n .replace(/\\((.*)\\)/, '-$1') // replace bracketed values with negatives\r\n .replace(regex, '') // strip out any cruft\r\n .replace(decimal, '.') // make sure decimal point is standard\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/number.js","'use strict';\n\nfunction isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n}\n\nmodule.exports = isObjectType;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isObjectType.js\n// module id = 53\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../var/mathAliases'),\n repeatString = require('./repeatString');\n\nvar abs = mathAliases.abs;\n\nfunction padNumber(num, place, sign, base, replacement) {\n var str = abs(num).toString(base || 10);\n str = repeatString(replacement || '0', place - str.replace(/\\.\\d+/, '').length) + str;\n if (sign || num < 0) {\n str = (num < 0 ? '-' : '+') + str;\n }\n return str;\n}\n\nmodule.exports = padNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/padNumber.js\n// module id = 54\n// module chunks = 1","'use strict';\n\nfunction simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = simpleCapitalize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleCapitalize.js\n// module id = 55\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n}\n\nmodule.exports = simpleMerge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleMerge.js\n// module id = 56\n// module chunks = 1","'use strict';\n\nvar EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getEnglishVariant.js\n// module id = 57\n// module chunks = 1","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n ParsingTokens = require('../var/ParsingTokens'),\n LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n tzOffset = require('./tzOffset'),\n resetTime = require('./resetTime'),\n isDefined = require('../../common/internal/isDefined'),\n setWeekday = require('./setWeekday'),\n updateDate = require('./updateDate'),\n getNewDate = require('./getNewDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n advanceDate = require('./advanceDate'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n deleteDateParam = require('./deleteDateParam'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getParsingTokenValue = require('./getParsingTokenValue'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n iterateOverDateParams = require('./iterateOverDateParams'),\n getYearFromAbbreviation = require('./getYearFromAbbreviation'),\n iterateOverHigherDateParams = require('./iterateOverHigherDateParams');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n English = LocaleHelpers.English,\n localeManager = LocaleHelpers.localeManager,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction getExtendedDate(contextDate, d, opt, forceClone) {\n\n var date, set, loc, options, afterCallbacks, relative, weekdayDir;\n\n afterCallbacks = [];\n options = getDateOptions(opt);\n\n function getDateOptions(opt) {\n var options = isString(opt) ? { locale: opt } : opt || {};\n options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past');\n return options;\n }\n\n function getFormatParams(match, dif) {\n var set = getOwn(options, 'params') || {};\n forEach(dif.to, function(field, i) {\n var str = match[i + 1], token, val;\n if (!str) return;\n if (field === 'yy' || field === 'y') {\n field = 'year';\n val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer'));\n } else if (token = getOwn(ParsingTokens, field)) {\n field = token.param || field;\n val = getParsingTokenValue(token, str);\n } else {\n val = loc.getTokenValue(field, str);\n }\n set[field] = val;\n });\n return set;\n }\n\n // Clone date will set the utc flag, but it will\n // be overriden later, so set option flags instead.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) {\n options.fromUTC = true;\n }\n if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) {\n options.setUTC = true;\n }\n if (clone) {\n d = new Date(d.getTime());\n }\n return d;\n }\n\n function afterDateSet(fn) {\n afterCallbacks.push(fn);\n }\n\n function fireCallbacks() {\n forEach(afterCallbacks, function(fn) {\n fn.call();\n });\n }\n\n function parseStringDate(str) {\n\n str = str.toLowerCase();\n\n // The act of getting the locale will initialize\n // if it is missing and add the required formats.\n loc = localeManager.get(getOwn(options, 'locale'));\n\n for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) {\n match = str.match(dif.reg);\n if (match) {\n\n // Note that caching the format will modify the compiledFormats array\n // which is not a good idea to do inside its for loop, however we\n // know at this point that we have a matched format and that we will\n // break out below, so simpler to do it here.\n loc.cacheFormat(dif, i);\n\n set = getFormatParams(match, dif);\n\n if (isDefined(set.timestamp)) {\n str = set.timestamp;\n set = null;\n break;\n }\n\n if (isDefined(set.ampm)) {\n handleAmpm(set.ampm);\n }\n\n if (set.utc || isDefined(set.tzHour)) {\n handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign);\n }\n\n if (isDefined(set.shift) && isUndefined(set.unit)) {\n // \"next january\", \"next monday\", etc\n handleUnitlessShift();\n }\n\n if (isDefined(set.num) && isUndefined(set.unit)) {\n // \"the second of January\", etc\n handleUnitlessNum(set.num);\n }\n\n if (set.midday) {\n // \"noon\" and \"midnight\"\n handleMidday(set.midday);\n }\n\n if (isDefined(set.day)) {\n // Relative day localizations such as \"today\" and \"tomorrow\".\n handleRelativeDay(set.day);\n }\n\n if (isDefined(set.unit)) {\n // \"3 days ago\", etc\n handleRelativeUnit(set.unit);\n }\n\n if (set.edge) {\n // \"the end of January\", etc\n handleEdge(set.edge, set);\n }\n\n if (set.yearSign) {\n set.year *= set.yearSign;\n }\n\n break;\n }\n }\n\n if (!set) {\n // Fall back to native parsing\n date = new Date(str);\n if (getOwn(options, 'fromUTC')) {\n // Falling back to system date here which cannot be parsed as UTC,\n // so if we're forcing UTC then simply add the offset.\n date.setTime(date.getTime() + (tzOffset(date) * MINUTES));\n }\n } else if (relative) {\n updateDate(date, set, false, 1);\n } else {\n if (_utc(date)) {\n // UTC times can traverse into other days or even months,\n // so preemtively reset the time here to prevent this.\n resetTime(date);\n }\n updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir);\n }\n fireCallbacks();\n return date;\n }\n\n function handleAmpm(ampm) {\n if (ampm === 1 && set.hour < 12) {\n // If the time is 1pm-11pm advance the time by 12 hours.\n set.hour += 12;\n } else if (ampm === 0 && set.hour === 12) {\n // If it is 12:00am then set the hour to 0.\n set.hour = 0;\n }\n }\n\n function handleTimezoneOffset(tzHour, tzMinute, tzSign) {\n // Adjust for timezone offset\n _utc(date, true);\n var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0));\n if (offset) {\n set.minute = (set.minute || 0) - offset;\n }\n }\n\n function handleUnitlessShift() {\n if (isDefined(set.month)) {\n // \"next January\"\n set.unit = YEAR_INDEX;\n } else if (isDefined(set.weekday)) {\n // \"next Monday\"\n set.unit = WEEK_INDEX;\n }\n }\n\n function handleUnitlessNum(num) {\n if (isDefined(set.weekday)) {\n // \"The second Tuesday of March\"\n setOrdinalWeekday(num);\n } else if (isDefined(set.month)) {\n // \"The second of March\"\n set.date = set.num;\n }\n }\n\n function handleMidday(hour) {\n set.hour = hour % 24;\n if (hour > 23) {\n // If the date has hours past 24, we need to prevent it from traversing\n // into a new day as that would make it being part of a new week in\n // ambiguous dates such as \"Monday\".\n afterDateSet(function() {\n advanceDate(date, 'date', trunc(hour / 24));\n });\n }\n }\n\n function handleRelativeDay() {\n resetTime(date);\n if (isUndefined(set.unit)) {\n set.unit = DAY_INDEX;\n set.num = set.day;\n delete set.day;\n }\n }\n\n function handleRelativeUnit(unitIndex) {\n var num = isDefined(set.num) ? set.num : 1;\n\n // If a weekday is defined, there are 3 possible formats being applied:\n //\n // 1. \"the day after monday\": unit is days\n // 2. \"next monday\": short for \"next week monday\", unit is weeks\n // 3. \"the 2nd monday of next month\": unit is months\n //\n // In the first case, we need to set the weekday up front, as the day is\n // relative to it. The second case also needs to be handled up front for\n // formats like \"next monday at midnight\" which will have its weekday reset\n // if not set up front. The last case will set up the params necessary to\n // shift the weekday and allow separateAbsoluteUnits below to handle setting\n // it after the date has been shifted.\n if(isDefined(set.weekday)) {\n if(unitIndex === MONTH_INDEX) {\n setOrdinalWeekday(num);\n num = 1;\n } else {\n updateDate(date, { weekday: set.weekday }, true);\n delete set.weekday;\n }\n }\n\n if (set.half) {\n // Allow localized \"half\" as a standalone colloquialism. Purposely avoiding\n // the locale number system to reduce complexity. The units \"month\" and\n // \"week\" are purposely excluded in the English date formats below, as\n // \"half a week\" and \"half a month\" are meaningless as exact dates.\n num *= set.half;\n }\n\n if (isDefined(set.shift)) {\n // Shift and unit, ie \"next month\", \"last week\", etc.\n num *= set.shift;\n } else if (set.sign) {\n // Unit and sign, ie \"months ago\", \"weeks from now\", etc.\n num *= set.sign;\n }\n\n if (isDefined(set.day)) {\n // \"the day after tomorrow\"\n num += set.day;\n delete set.day;\n }\n\n // Formats like \"the 15th of last month\" or \"6:30pm of next week\"\n // contain absolute units in addition to relative ones, so separate\n // them here, remove them from the params, and set up a callback to\n // set them after the relative ones have been set.\n separateAbsoluteUnits(unitIndex);\n\n // Finally shift the unit.\n set[English.units[unitIndex]] = num;\n relative = true;\n }\n\n function handleEdge(edge, params) {\n var edgeIndex = params.unit, weekdayOfMonth;\n if (!edgeIndex) {\n // If we have \"the end of January\", then we need to find the unit index.\n iterateOverHigherDateParams(params, function(unitName, val, unit, i) {\n if (unitName === 'weekday' && isDefined(params.month)) {\n // If both a month and weekday exist, then we have a format like\n // \"the last tuesday in November, 2012\", where the \"last\" is still\n // relative to the end of the month, so prevent the unit \"weekday\"\n // from taking over.\n return;\n }\n edgeIndex = i;\n });\n }\n if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) {\n // If a weekday in a month exists (as described above),\n // then set it up to be set after the date has been shifted.\n weekdayOfMonth = params.weekday;\n delete params.weekday;\n }\n afterDateSet(function() {\n var stopIndex;\n // \"edge\" values that are at the very edge are \"2\" so the beginning of the\n // year is -2 and the end of the year is 2. Conversely, the \"last day\" is\n // actually 00:00am so it is 1. -1 is reserved but unused for now.\n if (edge < 0) {\n moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale'));\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex);\n }\n if (isDefined(weekdayOfMonth)) {\n setWeekday(date, weekdayOfMonth, -edge);\n resetTime(date);\n }\n });\n if (edgeIndex === MONTH_INDEX) {\n params.specificity = DAY_INDEX;\n } else {\n params.specificity = edgeIndex - 1;\n }\n }\n\n function setOrdinalWeekday(num) {\n // If we have \"the 2nd Tuesday of June\", then pass the \"weekdayDir\"\n // flag along to updateDate so that the date does not accidentally traverse\n // into the previous month. This needs to be independent of the \"prefer\"\n // flag because we are only ensuring that the weekday is in the future, not\n // the entire date.\n set.weekday = 7 * (num - 1) + set.weekday;\n set.date = 1;\n weekdayDir = 1;\n }\n\n function separateAbsoluteUnits(unitIndex) {\n var params;\n\n iterateOverDateParams(set, function(name, val, unit, i) {\n // If there is a time unit set that is more specific than\n // the matched unit we have a string like \"5:30am in 2 minutes\",\n // which is meaningless, so invalidate the date...\n if (i >= unitIndex) {\n date.setTime(NaN);\n return false;\n } else if (i < unitIndex) {\n // ...otherwise set the params to set the absolute date\n // as a callback after the relative date has been set.\n params = params || {};\n params[name] = val;\n deleteDateParam(set, name);\n }\n });\n if (params) {\n afterDateSet(function() {\n updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir);\n });\n if (set.edge) {\n // \"the end of March of next year\"\n handleEdge(set.edge, params);\n delete set.edge;\n }\n }\n }\n\n if (contextDate && d) {\n // If a context date is passed (\"get\" and \"unitsFromNow\"),\n // then use it as the starting point.\n date = cloneDateByFlag(contextDate, true);\n } else {\n date = getNewDate();\n }\n\n _utc(date, getOwn(options, 'fromUTC'));\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone);\n } else if (isObjectType(d)) {\n set = simpleClone(d);\n updateDate(date, set, true);\n } else if (isNumber(d) || d === null) {\n date.setTime(d);\n }\n // A date created by parsing a string presumes that the format *itself* is\n // UTC, but not that the date, once created, should be manipulated as such. In\n // other words, if you are creating a date object from a server time\n // \"2012-11-15T12:00:00Z\", in the majority of cases you are using it to create\n // a date that will, after creation, be manipulated as local, so reset the utc\n // flag here unless \"setUTC\" is also set.\n _utc(date, !!getOwn(options, 'setUTC'));\n return {\n set: set,\n date: date\n };\n}\n\nmodule.exports = getExtendedDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getExtendedDate.js\n// module id = 58\n// module chunks = 1","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n cloneDate = require('./cloneDate'),\n advanceDate = require('./advanceDate');\n\nfunction getTimeDistanceForUnit(d1, d2, unit) {\n var fwd = d2 > d1, num, tmp;\n if (!fwd) {\n tmp = d2;\n d2 = d1;\n d1 = tmp;\n }\n num = d2 - d1;\n if (unit.multiplier > 1) {\n num = trunc(num / unit.multiplier);\n }\n // For higher order with potential ambiguity, use the numeric calculation\n // as a starting point, then iterate until we pass the target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n advanceDate(d1, unit.name, num);\n }\n while (d1 < d2) {\n advanceDate(d1, unit.name, 1);\n if (d1 > d2) {\n break;\n }\n num += 1;\n }\n }\n return fwd ? -num : num;\n}\n\nmodule.exports = getTimeDistanceForUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getTimeDistanceForUnit.js\n// module id = 59\n// module chunks = 1","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n cloneDate = require('./cloneDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) {\n var isoWeek, n = 0;\n if (isUndefined(firstDayOfWeek)) {\n firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK;\n }\n if (isUndefined(firstDayOfWeekYear)) {\n firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR;\n }\n // Moving to the end of the week allows for forward year traversal, ie\n // Dec 29 2014 is actually week 01 of 2015.\n isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n if (allowPrevious && d < isoWeek) {\n // If the date is still before the start of the year, then it should be\n // the last week of the previous year, ie Jan 1 2016 is actually week 53\n // of 2015, so move to the beginning of the week to traverse the year.\n isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n }\n while (isoWeek <= d) {\n // Doing a very simple walk to get the week number.\n setDate(isoWeek, getDate(isoWeek) + 7);\n n++;\n }\n return n;\n}\n\nmodule.exports = getWeekNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekNumber.js\n// module id = 60\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n isUndefined = require('../../common/internal/isUndefined');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverDateUnits(fn, startIndex, endIndex) {\n endIndex = endIndex || 0;\n if (isUndefined(startIndex)) {\n startIndex = YEAR_INDEX;\n }\n for (var index = startIndex; index >= endIndex; index--) {\n if (fn(DateUnits[index], index) === false) {\n break;\n }\n }\n}\n\nmodule.exports = iterateOverDateUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverDateUnits.js\n// module id = 61\n// module chunks = 1","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar floor = mathAliases.floor;\n\nfunction moveToBeginningOfWeek(d, firstDayOfWeek) {\n setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek);\n return d;\n}\n\nmodule.exports = moveToBeginningOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToBeginningOfWeek.js\n// module id = 62\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n ISO_FIRST_DAY_OF_WEEK: 1,\n ISO_FIRST_DAY_OF_WEEK_YEAR: 4\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/ISODefaults.js\n// module id = 63\n// module chunks = 1","'use strict';\n\nvar DATE_OPTIONS = require('./DATE_OPTIONS'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineOptionsAccessor = require('../../common/internal/defineOptionsAccessor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nmodule.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/_dateOptions.js\n// module id = 64\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n rangeIsValid = require('./rangeIsValid'),\n incrementDate = require('./incrementDate'),\n incrementNumber = require('./incrementNumber'),\n incrementString = require('./incrementString'),\n getGreaterPrecision = require('./getGreaterPrecision'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n isFunction = classChecks.isFunction;\n\nfunction rangeEvery(range, step, countOnly, fn) {\n var increment,\n precision,\n dio,\n unit,\n start = range.start,\n end = range.end,\n inverse = end < start,\n current = start,\n index = 0,\n result = [];\n\n if (!rangeIsValid(range)) {\n return countOnly ? NaN : [];\n }\n if (isFunction(step)) {\n fn = step;\n step = null;\n }\n step = step || 1;\n if (isNumber(start)) {\n precision = getGreaterPrecision(start, step);\n increment = function() {\n return incrementNumber(current, step, precision);\n };\n } else if (isString(start)) {\n increment = function() {\n return incrementString(current, step);\n };\n } else if (isDate(start)) {\n dio = getDateIncrementObject(step);\n step = dio[0];\n unit = dio[1];\n increment = function() {\n return incrementDate(current, step, unit);\n };\n }\n // Avoiding infinite loops\n if (inverse && step > 0) {\n step *= -1;\n }\n while(inverse ? current >= end : current <= end) {\n if (!countOnly) {\n result.push(current);\n }\n if (fn) {\n fn(current, index, range);\n }\n current = increment();\n index++;\n }\n return countOnly ? index - 1 : result;\n}\n\nmodule.exports = rangeEvery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeEvery.js\n// module id = 65\n// module chunks = 1","'use strict';\n\nmodule.exports = 'year|month|week|day|hour|minute|second|millisecond';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DURATION_UNITS.js\n// module id = 66\n// module chunks = 1","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/array.js","import {Feature} from '../feature';\r\nimport {\r\n ignoreCase, numSortAsc, numSortDesc,\r\n dateSortAsc, sortNumberStr, sortDateStr\r\n} from '../sort';\r\nimport {isArray, isObj} from '../types';\r\nimport {NUMBER, FORMATTED_NUMBER, DATE} from '../const';\r\n\r\n/**\r\n * Base class for Dropdown and CheckList UI components\r\n * @export\r\n * @class BaseDropdown\r\n * @extends {Feature}\r\n */\r\nexport class BaseDropdown extends Feature {\r\n\r\n /**\r\n * Creates an instance of BaseDropdown\r\n * @param {TableFilter} tf\r\n */\r\n constructor(tf) {\r\n super(tf, 'baseDropdown');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Filter options custom sorter on a column basis\r\n * @type {Object}\r\n */\r\n this.customSorter = isObj(f.filter_options_sorter) &&\r\n isArray(f.filter_options_sorter.col) &&\r\n isArray(f.filter_options_sorter.comparer) ?\r\n f.filter_options_sorter :\r\n null;\r\n\r\n // TODO: move here all properties shared by Dropdown CheckList\r\n\r\n /**\r\n * Has custom options\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isCustom = false;\r\n\r\n /**\r\n * List of options values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.opts = [];\r\n\r\n /**\r\n * List of options texts for custom values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.optsTxt = [];\r\n\r\n /**\r\n * List of options to be excluded from the checklist filter\r\n * @type {Array}\r\n * @private\r\n */\r\n this.excludedOpts = [];\r\n }\r\n\r\n /**\r\n * Sort passed options based on the type of the specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [options=[]] Collection of values\r\n * @return {Array} Sorted values\r\n * @private\r\n */\r\n sortOptions(colIndex, options = []) {\r\n let tf = this.tf;\r\n\r\n if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||\r\n (isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {\r\n return options;\r\n }\r\n\r\n let { caseSensitive, sortNumDesc } = tf;\r\n let compareFn;\r\n\r\n if (this.customSorter &&\r\n this.customSorter.col.indexOf(colIndex) !== -1) {\r\n var idx = this.customSorter.col.indexOf(colIndex);\r\n compareFn = this.customSorter.comparer[idx];\r\n }\r\n else if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {\r\n let decimal = tf.getDecimal(colIndex);\r\n let comparer = numSortAsc;\r\n if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {\r\n comparer = numSortDesc;\r\n }\r\n compareFn = sortNumberStr(comparer, decimal);\r\n }\r\n else if (tf.hasType(colIndex, [DATE])) {\r\n let locale = tf.feature('dateType').getLocale(colIndex);\r\n let comparer = dateSortAsc;\r\n compareFn = sortDateStr(comparer, locale);\r\n } else { // string\r\n compareFn = caseSensitive ? undefined : ignoreCase;\r\n }\r\n\r\n return options.sort(compareFn);\r\n }\r\n\r\n /**\r\n * Regenerate filters of specified columns and maintain selection if any\r\n * @param {Array} colIndexes Collection of column indexes\r\n * @private\r\n */\r\n refreshFilters(colIndexes) {\r\n colIndexes.forEach((colIdx) => {\r\n let values = this.getValues(colIdx);\r\n this.build(colIdx, this.tf.linkedFilters);\r\n this.selectOptions(colIdx, values);\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/baseDropdown.js","/**\r\n * Event emitter class\r\n */\r\nexport class Emitter {\r\n /**\r\n * Creates an instance of Emitter.\r\n */\r\n constructor() {\r\n /**\r\n * Events object\r\n * @type {Object}\r\n */\r\n this.events = {};\r\n }\r\n\r\n /**\r\n * Subscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n on(evts, fn) {\r\n evts.forEach((evt) => {\r\n this.events[evt] = this.events[evt] || [];\r\n this.events[evt].push(fn);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n off(evts, fn) {\r\n evts.forEach((evt) => {\r\n if (evt in this.events) {\r\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Emit an event\r\n * @param {String} evt Event name followed by any other argument passed to\r\n * the invoked function\r\n */\r\n emit(evt /*, args...*/) {\r\n if (evt in this.events) {\r\n for (let i = 0; i < this.events[evt].length; i++) {\r\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\r\n }\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/emitter.js","import {BaseDropdown} from './baseDropdown';\r\nimport {\r\n addClass, createCheckItem, createText, createElm, elm, getText,\r\n removeClass, tag\r\n} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase, trim, rgxEsc} from '../string';\r\nimport {addEvt, removeEvt, targetEvt} from '../event';\r\nimport {isEmpty} from '../types';\r\nimport {CHECKLIST, NONE} from '../const';\r\n\r\n/**\r\n * Checklist filter UI component\r\n * @export\r\n * @class CheckList\r\n * @extends {BaseDropdown}\r\n */\r\nexport class CheckList extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of CheckList\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'checkList');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * List of container DOM elements\r\n * @type {Array}\r\n */\r\n this.containers = [];\r\n\r\n /**\r\n * Css class for the container of the checklist filter (div)\r\n * @type {String}\r\n */\r\n this.containerCssClass = f.div_checklist_css_class || 'div_checklist';\r\n\r\n /**\r\n * Css class for the checklist filter element (ul)\r\n * @type {String}\r\n */\r\n this.filterCssClass = f.checklist_css_class || 'flt_checklist';\r\n\r\n /**\r\n * Css class for the item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.itemCssClass = f.checklist_item_css_class || 'flt_checklist_item';\r\n\r\n /**\r\n * Css class for a selected item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.selectedItemCssClass =\r\n f.checklist_selected_item_css_class || 'flt_checklist_slc_item';\r\n\r\n /**\r\n * Text placed in the filter's container when load filter on demand\r\n * feature is enabled\r\n * @type {String}\r\n */\r\n this.activateText =\r\n f.activate_checklist_text || 'Click to load filter data';\r\n\r\n /**\r\n * Css class for a disabled item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.disabledItemCssClass = f.checklist_item_disabled_css_class ||\r\n 'flt_checklist_item_disabled';\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableResetOption = f.enable_checklist_reset_filter === false ?\r\n false : true;\r\n\r\n /**\r\n * Prefix for container element ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfx = 'chkdiv_';\r\n }\r\n\r\n /**\r\n * Checklist option click event handler\r\n * @param {Event} evt\r\n * @private\r\n */\r\n optionClick(evt) {\r\n let elm = targetEvt(evt);\r\n let tf = this.tf;\r\n\r\n this.emitter.emit('filter-focus', tf, elm);\r\n this.setCheckListValues(elm);\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Checklist container click event handler for load-on-demand feature\r\n * @param {Event} evt\r\n * @private\r\n */\r\n onCheckListClick(evt) {\r\n let elm = targetEvt(evt);\r\n if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n let div = this.containers[ct];\r\n this.build(ct);\r\n removeEvt(div, 'click', (evt) => this.onCheckListClick(evt));\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all checklist filters\r\n */\r\n refreshAll() {\r\n let colIdxs = this.tf.getFiltersByType(CHECKLIST, true);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize checklist filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltTgtIds[colIndex] : null;\r\n\r\n let divCont = createElm('div',\r\n ['id', `${this.prfx}${colIndex}_${tf.id}`],\r\n ['ct', colIndex], ['filled', '0']);\r\n divCont.className = this.containerCssClass;\r\n\r\n //filter is appended in desired element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(divCont);\r\n } else {\r\n container.appendChild(divCont);\r\n }\r\n\r\n this.containers[colIndex] = divCont;\r\n tf.fltIds.push(tf.buildFilterId(colIndex));\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n addEvt(divCont, 'click', (evt) => this.onCheckListClick(evt));\r\n divCont.appendChild(createText(this.activateText));\r\n }\r\n\r\n this.emitter.on(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n\r\n this.emitter.on(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build checklist UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = parseInt(colIndex, 10);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let flt = this.containers[colIndex];\r\n let ul = createElm('ul',\r\n ['id', tf.fltIds[colIndex]],\r\n ['colIndex', colIndex]);\r\n ul.className = this.filterCssClass;\r\n\r\n let rows = tf.dom().rows;\r\n let nbRows = tf.getRowsNb(true);\r\n let caseSensitive = tf.caseSensitive;\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let filteredDataCol = [];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n /** @inherited */\r\n this.excludedOpts = [];\r\n }\r\n\r\n flt.innerHTML = '';\r\n\r\n for (let k = tf.refRow; k < nbRows; k++) {\r\n // always visible rows don't need to appear on selects as always\r\n // valid\r\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\r\n continue;\r\n }\r\n\r\n let cells = rows[k].cells;\r\n let ncells = cells.length;\r\n\r\n // checks if row has exact cell #\r\n if (ncells !== tf.nbCells || this.isCustom) {\r\n continue;\r\n }\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < ncells; j++) {\r\n if (colIndex !== j) {\r\n continue;\r\n }\r\n if (isLinked && !tf.disableExcludedOptions &&\r\n (!tf.paging && !tf.isRowDisplayed(k)) ||\r\n (tf.paging && activeIdx && !tf.isRowValid(k))) {\r\n continue;\r\n }\r\n\r\n let cellValue = tf.getCellValue(cells[j]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, caseSensitive);\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n let filteredCol = filteredDataCol[j];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(j);\r\n }\r\n if (!has(filteredCol, cellString, caseSensitive) &&\r\n !has(this.excludedOpts, cellString,\r\n caseSensitive)) {\r\n this.excludedOpts.push(cellValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (this.excludedOpts) {\r\n this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);\r\n }\r\n\r\n this.addChecks(colIndex, ul);\r\n\r\n if (tf.loadFltOnDemand) {\r\n flt.innerHTML = '';\r\n }\r\n flt.appendChild(ul);\r\n flt.setAttribute('filled', '1');\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, flt);\r\n }\r\n\r\n /**\r\n * Add checklist options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = this.addTChecks(colIndex, ul);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n let val = this.opts[y]; //item value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //item text\r\n let fltId = tf.fltIds[colIndex];\r\n let li = createCheckItem(`${fltId}_${(y + chkCt)}`, val, lbl);\r\n li.className = this.itemCssClass;\r\n\r\n if (tf.linkedFilters && tf.disableExcludedOptions &&\r\n has(this.excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n addClass(li, this.disabledItemCssClass);\r\n li.check.disabled = true;\r\n li.disabled = true;\r\n } else {\r\n addEvt(li.check, 'click', evt => this.optionClick(evt));\r\n }\r\n ul.appendChild(li);\r\n\r\n if (val === '') {\r\n //item is hidden\r\n li.style.display = NONE;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add checklist header option\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addTChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = 1;\r\n let fltId = tf.fltIds[colIndex];\r\n let li0 = createCheckItem(`${fltId}_0`, '',\r\n tf.getClearFilterText(colIndex));\r\n li0.className = this.itemCssClass;\r\n ul.appendChild(li0);\r\n\r\n addEvt(li0.check, 'click', evt => this.optionClick(evt));\r\n\r\n if (!this.enableResetOption) {\r\n li0.style.display = NONE;\r\n }\r\n\r\n if (tf.enableEmptyOption) {\r\n let li1 = createCheckItem(`${fltId}_1`, tf.emOperator,\r\n tf.emptyText);\r\n li1.className = this.itemCssClass;\r\n ul.appendChild(li1);\r\n addEvt(li1.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n\r\n if (tf.enableNonEmptyOption) {\r\n let li2 = createCheckItem(`${fltId}_2`, tf.nmOperator,\r\n tf.nonEmptyText);\r\n li2.className = this.itemCssClass;\r\n ul.appendChild(li2);\r\n addEvt(li2.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n return chkCt;\r\n }\r\n\r\n /**\r\n * Store checked options in DOM element attribute\r\n * @param {Object} o checklist option DOM element\r\n * @private\r\n */\r\n setCheckListValues(o) {\r\n if (!o) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let chkValue = o.value; //checked item value\r\n // TODO: provide helper to extract column index, ugly!\r\n let chkIndex = parseInt(o.id.split('_')[2], 10);\r\n let colIdx = tf.getColumnIndexFromFilterId(o.id);\r\n let itemTag = 'LI';\r\n\r\n let n = tf.getFilterElement(parseInt(colIdx, 10));\r\n let li = n.childNodes[chkIndex];\r\n let colIndex = n.getAttribute('colIndex');\r\n let fltValue = n.getAttribute('value'); //filter value (ul tag)\r\n let fltIndexes = n.getAttribute('indexes'); //selected items (ul tag)\r\n\r\n if (o.checked) {\r\n //show all item\r\n if (chkValue === '') {\r\n if ((fltIndexes && fltIndexes !== '')) {\r\n //items indexes\r\n let indSplit = fltIndexes.split(tf.separator);\r\n //checked items loop\r\n for (let u = 0; u < indSplit.length; u++) {\r\n //checked item\r\n let cChk = elm(tf.fltIds[colIndex] + '_' +\r\n indSplit[u]);\r\n if (cChk) {\r\n cChk.checked = false;\r\n removeClass(n.childNodes[indSplit[u]],\r\n this.selectedItemCssClass);\r\n }\r\n }\r\n }\r\n n.setAttribute('value', '');\r\n n.setAttribute('indexes', '');\r\n\r\n } else {\r\n fltValue = (fltValue) ? fltValue : '';\r\n chkValue = trim(fltValue + ' ' + chkValue + ' ' +\r\n tf.orOperator);\r\n chkIndex = fltIndexes + chkIndex + tf.separator;\r\n n.setAttribute('value', chkValue);\r\n n.setAttribute('indexes', chkIndex);\r\n //1st option unchecked\r\n if (elm(tf.fltIds[colIndex] + '_0')) {\r\n elm(tf.fltIds[colIndex] + '_0').checked = false;\r\n }\r\n }\r\n\r\n if (li.nodeName === itemTag) {\r\n removeClass(n.childNodes[0], this.selectedItemCssClass);\r\n addClass(li, this.selectedItemCssClass);\r\n }\r\n } else { //removes values and indexes\r\n if (chkValue !== '') {\r\n let replaceValue = new RegExp(\r\n rgxEsc(chkValue + ' ' + tf.orOperator));\r\n fltValue = fltValue.replace(replaceValue, '');\r\n n.setAttribute('value', trim(fltValue));\r\n\r\n let replaceIndex = new RegExp(\r\n rgxEsc(chkIndex + tf.separator));\r\n fltIndexes = fltIndexes.replace(replaceIndex, '');\r\n n.setAttribute('indexes', fltIndexes);\r\n }\r\n if (li.nodeName === itemTag) {\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n if (tf.getFilterType(colIndex) !== CHECKLIST || !flt ||\r\n values.length === 0) {\r\n return;\r\n }\r\n\r\n let lisNb = tag(flt, 'li').length;\r\n\r\n flt.setAttribute('value', '');\r\n flt.setAttribute('indexes', '');\r\n\r\n for (let k = 0; k < lisNb; k++) {\r\n let li = tag(flt, 'li')[k];\r\n let lbl = tag(li, 'label')[0];\r\n let chk = tag(li, 'input')[0];\r\n let lblTxt = matchCase(getText(lbl), tf.caseSensitive);\r\n\r\n if (lblTxt !== '' && has(values, lblTxt, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n // Check non-empty-text or empty-text option\r\n if (values.indexOf(tf.nmOperator) !== -1 &&\r\n lblTxt === matchCase(tf.nonEmptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n }\r\n else if (values.indexOf(tf.emOperator) !== -1 &&\r\n lblTxt === matchCase(tf.emptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n chk.checked = false;\r\n }\r\n }\r\n this.setCheckListValues(chk);\r\n }\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Collection of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n let fltAttr = flt.getAttribute('value');\r\n let values = isEmpty(fltAttr) ? '' : fltAttr;\r\n //removes last operator ||\r\n values = values.substr(0, values.length - 3);\r\n //turn || separated values into array\r\n values = values.split(' ' + tf.orOperator + ' ');\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy CheckList instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n this.emitter.off(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/checkList.js","import {BaseDropdown} from './baseDropdown';\r\nimport {createElm, createOpt, elm} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase} from '../string';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {SELECT, MULTIPLE, NONE} from '../const';\r\n\r\n/**\r\n * Dropdown filter UI component\r\n * @export\r\n * @class Dropdown\r\n * @extends {BaseDropdown}\r\n */\r\nexport class Dropdown extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of Dropdown\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dropdown');\r\n\r\n // Configuration object\r\n let f = this.config;\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableSlcResetFilter = f.enable_slc_reset_filter === false ?\r\n false : true;\r\n\r\n /**\r\n * Non empty option text\r\n * @type {String}\r\n */\r\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\r\n\r\n /**\r\n * Tooltip text appearing on multiple select\r\n * @type {String}\r\n */\r\n this.multipleSlcTooltip = f.multiple_slc_tooltip ||\r\n 'Use Ctrl/Cmd key for multiple selections';\r\n }\r\n\r\n\r\n /**\r\n * Drop-down filter focus event handler\r\n * @param {Event} e DOM Event\r\n * @private\r\n */\r\n onSlcFocus(e) {\r\n let elm = targetEvt(e);\r\n let tf = this.tf;\r\n // select is populated when element has focus\r\n if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n this.build(ct);\r\n }\r\n this.emitter.emit('filter-focus', tf, elm);\r\n }\r\n\r\n /**\r\n * Drop-down filter change event handler\r\n * @private\r\n */\r\n onSlcChange() {\r\n if (this.tf.onSlcChange) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all drop-down filters\r\n */\r\n refreshAll() {\r\n let selectFlts = this.tf.getFiltersByType(SELECT, true);\r\n let multipleFlts = this.tf.getFiltersByType(MULTIPLE, true);\r\n let colIdxs = selectFlts.concat(multipleFlts);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize drop-down filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let col = tf.getFilterType(colIndex);\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltTgtIds[colIndex] : null;\r\n\r\n let slc = createElm(SELECT,\r\n ['id', tf.buildFilterId(colIndex)],\r\n ['ct', colIndex], ['filled', '0']\r\n );\r\n\r\n if (col === MULTIPLE) {\r\n slc.multiple = MULTIPLE;\r\n slc.title = this.multipleSlcTooltip;\r\n }\r\n slc.className = col.toLowerCase() === SELECT ?\r\n tf.fltCssClass : tf.fltMultiCssClass;\r\n\r\n //filter is appended in container element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(slc);\r\n } else {\r\n container.appendChild(slc);\r\n }\r\n\r\n tf.fltIds.push(slc.id);\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n //1st option is created here since build isn't invoked\r\n let opt0 = createOpt(tf.getClearFilterText(colIndex), '');\r\n slc.appendChild(opt0);\r\n }\r\n\r\n addEvt(slc, 'change', () => this.onSlcChange());\r\n addEvt(slc, 'focus', (e) => this.onSlcFocus(e));\r\n\r\n this.emitter.on(\r\n ['build-select-filter'],\r\n (tf, colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.on(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build drop-down filter UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = parseInt(colIndex, 10);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let slcId = tf.fltIds[colIndex];\r\n let slc = elm(slcId);\r\n let rows = tf.dom().rows;\r\n let nbRows = tf.getRowsNb(true);\r\n\r\n //custom select test\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n //custom selects text\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let excludedOpts = null,\r\n filteredDataCol = null;\r\n if (isLinked && tf.disableExcludedOptions) {\r\n excludedOpts = [];\r\n filteredDataCol = [];\r\n }\r\n\r\n for (let k = tf.refRow; k < nbRows; k++) {\r\n // always visible rows don't need to appear on selects as always\r\n // valid\r\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\r\n continue;\r\n }\r\n\r\n let cell = rows[k].cells,\r\n nchilds = cell.length;\r\n\r\n // checks if row has exact cell #\r\n if (nchilds !== tf.nbCells || this.isCustom) {\r\n continue;\r\n }\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n if (colIndex !== j) {\r\n continue;\r\n }\r\n if (isLinked && !tf.disableExcludedOptions &&\r\n (!tf.paging && !tf.isRowDisplayed(k)) ||\r\n (tf.paging && activeIdx && !tf.isRowValid(k))) {\r\n continue;\r\n }\r\n\r\n let cellValue = tf.getCellValue(cell[j]),\r\n //Vary Peter's patch\r\n cellString = matchCase(cellValue, tf.caseSensitive);\r\n\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, tf.caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n\r\n if (isLinked && tf.disableExcludedOptions) {\r\n let filteredCol = filteredDataCol[j];\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(j);\r\n }\r\n if (!has(filteredCol, cellString, tf.caseSensitive) &&\r\n !has(excludedOpts, cellString, tf.caseSensitive)) {\r\n excludedOpts.push(cellValue);\r\n }\r\n }\r\n }//for j\r\n }//for k\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (excludedOpts) {\r\n excludedOpts = this.sortOptions(colIndex, excludedOpts);\r\n }\r\n\r\n //populates drop-down\r\n this.addOptions(colIndex, slc, isLinked, excludedOpts);\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, slc);\r\n }\r\n\r\n /**\r\n * Add drop-down options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} slc Select Dom element\r\n * @param {Boolean} isLinked Enable linked refresh behaviour\r\n * @param {Array} excludedOpts Array of excluded options\r\n */\r\n addOptions(colIndex, slc, isLinked, excludedOpts) {\r\n let tf = this.tf,\r\n slcValue = slc.value;\r\n\r\n slc.innerHTML = '';\r\n slc = this.addFirstOption(slc);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n if (this.opts[y] === '') {\r\n continue;\r\n }\r\n let val = this.opts[y]; //option value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //option text\r\n let isDisabled = false;\r\n if (isLinked && tf.disableExcludedOptions &&\r\n has(excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n isDisabled = true;\r\n }\r\n\r\n let opt;\r\n //fill select on demand\r\n if (tf.loadFltOnDemand && slcValue === this.opts[y] &&\r\n tf.getFilterType(colIndex) === SELECT) {\r\n opt = createOpt(lbl, val, true);\r\n } else {\r\n opt = createOpt(lbl, val, false);\r\n }\r\n if (isDisabled) {\r\n opt.disabled = true;\r\n }\r\n slc.appendChild(opt);\r\n }// for y\r\n\r\n slc.setAttribute('filled', '1');\r\n }\r\n\r\n /**\r\n * Add drop-down header option\r\n * @param {Object} slc Select DOM element\r\n */\r\n addFirstOption(slc) {\r\n let tf = this.tf;\r\n let colIdx = tf.getColumnIndexFromFilterId(slc.id);\r\n let opt0 = createOpt((!this.enableSlcResetFilter ?\r\n '' : tf.getClearFilterText(colIdx)), '');\r\n if (!this.enableSlcResetFilter) {\r\n opt0.style.display = NONE;\r\n }\r\n slc.appendChild(opt0);\r\n if (tf.enableEmptyOption) {\r\n let opt1 = createOpt(tf.emptyText, tf.emOperator);\r\n slc.appendChild(opt1);\r\n }\r\n if (tf.enableNonEmptyOption) {\r\n let opt2 = createOpt(tf.nonEmptyText, tf.nmOperator);\r\n slc.appendChild(opt2);\r\n }\r\n return slc;\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n if (values.length === 0) {\r\n return;\r\n }\r\n let slc = tf.getFilterElement(colIndex);\r\n [].forEach.call(slc.options, (option) => {\r\n // Empty value means clear all selections and first option is the\r\n // clear all option\r\n if (values[0] === '' || option.value === '') {\r\n option.selected = false;\r\n }\r\n\r\n if (option.value !== '' && has(values, option.value, true)) {\r\n option.selected = true;\r\n }//if\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Array of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let slc = tf.getFilterElement(colIndex);\r\n let values = [];\r\n\r\n // IE >= 9 does not support the selectedOptions property :(\r\n if (slc.selectedOptions) {\r\n [].forEach.call(slc.selectedOptions,\r\n option => values.push(option.value));\r\n } else {\r\n [].forEach.call(slc.options, (option) => {\r\n if (option.selected) {\r\n values.push(option.value);\r\n }\r\n });\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy Dropdown instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-select-filter'],\r\n (colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.off(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/dropdown.js","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nfunction isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n}\n\nmodule.exports = isClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isClass.js\n// module id = 72\n// module chunks = 1","'use strict';\n\nfunction map(arr, fn) {\n // perf: Not using fixed array len here as it may be sparse.\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr) {\n result.push(fn(arr[i], i));\n }\n }\n return result;\n}\n\nmodule.exports = map;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/map.js\n// module id = 73\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../var/mathAliases');\n\nvar abs = mathAliases.abs,\n pow = mathAliases.pow,\n round = mathAliases.round;\n\nfunction withPrecision(val, precision, fn) {\n var multiplier = pow(10, abs(precision || 0));\n fn = fn || round;\n if (precision < 0) multiplier = 1 / multiplier;\n return fn(val * multiplier) / multiplier;\n}\n\nmodule.exports = withPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/withPrecision.js\n// module id = 74\n// module chunks = 1","'use strict';\n\nmodule.exports = String.fromCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/chr.js\n// module id = 75\n// module chunks = 1","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectDateArguments = require('./collectDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/advanceDateWithArgs.js\n// module id = 76\n// module chunks = 1","'use strict';\n\nvar dateIsValid = require('./dateIsValid');\n\nfunction assertDateIsValid(d) {\n if (!dateIsValid(d)) {\n throw new TypeError('Date is not valid');\n }\n}\n\nmodule.exports = assertDateIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/assertDateIsValid.js\n// module id = 77\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n getDateParamsFromString = require('./getDateParamsFromString'),\n collectDateParamsFromArguments = require('./collectDateParamsFromArguments');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString;\n\nfunction collectDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1];\n if (allowDuration && isString(arg1)) {\n arg1 = getDateParamsFromString(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n arg1 = collectDateParamsFromArguments(args);\n arg2 = null;\n } else {\n if (isObjectType(arg1)) {\n arg1 = simpleClone(arg1);\n }\n }\n return [arg1, arg2];\n}\n\nmodule.exports = collectDateArguments;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/collectDateArguments.js\n// module id = 78\n// module chunks = 1","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset'),\n cloneDate = require('./cloneDate'),\n isDefined = require('../../common/internal/isDefined'),\n advanceDate = require('./advanceDate'),\n dateIsValid = require('./dateIsValid'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n getExtendedDate = require('./getExtendedDate'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction compareDate(date, d, margin, localeCode, options) {\n var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t;\n\n function getTimezoneShift() {\n // If there is any specificity in the date then we're implicitly not\n // checking absolute time, so ignore timezone shifts.\n if (p.set && p.set.specificity) {\n return 0;\n }\n return (tzOffset(p.date) - tzOffset(date)) * MINUTES;\n }\n\n function addSpecificUnit() {\n var unit = DateUnits[p.set.specificity];\n return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1;\n }\n\n if (_utc(date)) {\n options = options || {};\n options.fromUTC = true;\n options.setUTC = true;\n }\n\n p = getExtendedDate(null, d, options, true);\n\n if (margin > 0) {\n loMargin = hiMargin = margin;\n override = true;\n }\n if (!dateIsValid(p.date)) return false;\n if (p.set && p.set.specificity) {\n if (isDefined(p.set.edge) || isDefined(p.set.shift)) {\n compareEdges = true;\n moveToBeginningOfUnit(p.date, p.set.specificity, localeCode);\n }\n if (compareEdges || p.set.specificity === MONTH_INDEX) {\n max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime();\n } else {\n max = addSpecificUnit();\n }\n if (!override && isDefined(p.set.sign) && p.set.specificity) {\n // If the time is relative, there can occasionally be an disparity between\n // the relative date and \"now\", which it is being compared to, so set an\n // extra margin to account for this.\n loMargin = 50;\n hiMargin = -50;\n }\n }\n t = date.getTime();\n min = p.date.getTime();\n max = max || min;\n timezoneShift = getTimezoneShift();\n if (timezoneShift) {\n min -= timezoneShift;\n max -= timezoneShift;\n }\n return t >= (min - loMargin) && t <= (max + hiMargin);\n}\n\nmodule.exports = compareDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/compareDate.js\n// module id = 79\n// module chunks = 1","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDateWithContext(contextDate, d, options, forceClone) {\n return getExtendedDate(contextDate, d, options, forceClone).date;\n}\n\nmodule.exports = createDateWithContext;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/createDateWithContext.js\n// module id = 80\n// module chunks = 1","'use strict';\n\nvar CoreOutputFormats = require('../var/CoreOutputFormats'),\n formattingTokens = require('../var/formattingTokens'),\n assertDateIsValid = require('./assertDateIsValid');\n\nvar dateFormatMatcher = formattingTokens.dateFormatMatcher;\n\nfunction dateFormat(d, format, localeCode) {\n assertDateIsValid(d);\n format = CoreOutputFormats[format] || format || '{long}';\n return dateFormatMatcher(format, d, localeCode);\n}\n\nmodule.exports = dateFormat;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateFormat.js\n// module id = 81\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n dateFormat = require('./dateFormat'),\n classChecks = require('../../common/var/classChecks'),\n assertDateIsValid = require('./assertDateIsValid'),\n getAdjustedUnitForDate = require('./getAdjustedUnitForDate');\n\nvar isFunction = classChecks.isFunction,\n localeManager = LocaleHelpers.localeManager;\n\nfunction dateRelative(d, dRelative, arg1, arg2) {\n var adu, format, type, localeCode, fn;\n assertDateIsValid(d);\n if (isFunction(arg1)) {\n fn = arg1;\n } else {\n localeCode = arg1;\n fn = arg2;\n }\n adu = getAdjustedUnitForDate(d, dRelative);\n if (fn) {\n format = fn.apply(d, adu.concat(localeManager.get(localeCode)));\n if (format) {\n return dateFormat(d, format, localeCode);\n }\n }\n // Adjust up if time is in ms, as this doesn't\n // look very good for a standard relative date.\n if (adu[1] === 0) {\n adu[1] = 1;\n adu[0] = 1;\n }\n if (dRelative) {\n type = 'duration';\n } else if (adu[2] > 0) {\n type = 'future';\n } else {\n type = 'past';\n }\n return localeManager.get(localeCode).getRelativeFormat(adu, type);\n}\n\nmodule.exports = dateRelative;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateRelative.js\n// module id = 82\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trim = require('../../common/internal/trim'),\n getMonth = require('./getMonth'),\n isDefined = require('../../common/internal/isDefined'),\n getNewDate = require('./getNewDate'),\n compareDay = require('./compareDay'),\n getWeekday = require('./getWeekday'),\n dateIsValid = require('./dateIsValid'),\n classChecks = require('../../common/var/classChecks'),\n compareDate = require('./compareDate');\n\nvar isString = classChecks.isString,\n English = LocaleHelpers.English;\n\nfunction fullCompareDate(date, d, margin) {\n var tmp;\n if (!dateIsValid(date)) return;\n if (isString(d)) {\n d = trim(d).toLowerCase();\n switch(true) {\n case d === 'future': return date.getTime() > getNewDate().getTime();\n case d === 'past': return date.getTime() < getNewDate().getTime();\n case d === 'today': return compareDay(date);\n case d === 'tomorrow': return compareDay(date, 1);\n case d === 'yesterday': return compareDay(date, -1);\n case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;\n case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;\n\n case (isDefined(tmp = English.weekdayMap[d])):\n return getWeekday(date) === tmp;\n case (isDefined(tmp = English.monthMap[d])):\n return getMonth(date) === tmp;\n }\n }\n return compareDate(date, d, margin);\n}\n\nmodule.exports = fullCompareDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/fullCompareDate.js\n// module id = 83\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnit(ms, fn) {\n var unitIndex = 0, value = 0;\n iterateOverDateUnits(function(unit, i) {\n value = abs(fn(unit));\n if (value >= 1) {\n unitIndex = i;\n return false;\n }\n });\n return [value, unitIndex, ms];\n}\n\nmodule.exports = getAdjustedUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnit.js\n// module id = 84\n// module chunks = 1","'use strict';\n\nvar getOwnKey = require('../../common/internal/getOwnKey');\n\nfunction getDateParamKey(params, key) {\n return getOwnKey(params, key) ||\n getOwnKey(params, key + 's') ||\n (key === 'day' && getOwnKey(params, 'date'));\n}\n\nmodule.exports = getDateParamKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParamKey.js\n// module id = 85\n// module chunks = 1","'use strict';\n\nvar getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDaysInMonth(d) {\n return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date');\n}\n\nmodule.exports = getDaysInMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDaysInMonth.js\n// module id = 86\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getHours(d) {\n return callDateGet(d, 'Hours');\n}\n\nmodule.exports = getHours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getHours.js\n// module id = 87\n// module chunks = 1","'use strict';\n\nfunction getRegNonCapturing(src, opt) {\n if (src.length > 1) {\n src = '(?:' + src + ')';\n }\n if (opt) {\n src += '?';\n }\n return src;\n}\n\nmodule.exports = getRegNonCapturing;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getRegNonCapturing.js\n// module id = 88\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n tzOffset = require('./tzOffset'),\n padNumber = require('../../common/internal/padNumber'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getUTCOffset(d, iso) {\n var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon;\n colon = iso === true ? ':' : '';\n if (!offset && iso) return 'Z';\n hours = padNumber(trunc(-offset / 60), 2, true);\n mins = padNumber(abs(offset % 60), 2);\n return hours + colon + mins;\n}\n\nmodule.exports = getUTCOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getUTCOffset.js\n// module id = 89\n// module chunks = 1","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar ceil = mathAliases.ceil;\n\nfunction moveToEndOfWeek(d, firstDayOfWeek) {\n var target = firstDayOfWeek - 1;\n setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target);\n return d;\n}\n\nmodule.exports = moveToEndOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToEndOfWeek.js\n// module id = 90\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setDate = require('./setDate'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) {\n setUnitAndLowerToEdge(d, MONTH_INDEX);\n setDate(d, firstDayOfWeekYear);\n moveToBeginningOfWeek(d, firstDayOfWeek);\n}\n\nmodule.exports = moveToFirstDayOfWeekYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToFirstDayOfWeekYear.js\n// module id = 91\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX;\n\nfunction resetTime(d) {\n return setUnitAndLowerToEdge(d, HOURS_INDEX);\n}\n\nmodule.exports = resetTime;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/resetTime.js\n// module id = 92\n// module chunks = 1","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n getDate = require('./getDate'),\n setDate = require('./setDate'),\n setYear = require('./setYear'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n setMonth = require('./setMonth'),\n cloneDate = require('./cloneDate'),\n getWeekday = require('./getWeekday'),\n setWeekday = require('./setWeekday'),\n classChecks = require('../../common/var/classChecks'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar isNumber = classChecks.isNumber,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction setISOWeekNumber(d, num) {\n if (isNumber(num)) {\n // Intentionally avoiding updateDate here to prevent circular dependencies.\n var isoWeek = cloneDate(d), dow = getWeekday(d);\n moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR);\n setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1));\n setYear(d, getYear(isoWeek));\n setMonth(d, getMonth(isoWeek));\n setDate(d, getDate(isoWeek));\n setWeekday(d, dow || 7);\n }\n return d.getTime();\n}\n\nmodule.exports = setISOWeekNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setISOWeekNumber.js\n// module id = 93\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex');\n\nfunction walkUnitDown(unitIndex, fn) {\n while (unitIndex >= 0) {\n if (fn(DateUnits[unitIndex], unitIndex) === false) {\n break;\n }\n unitIndex = getLowerUnitIndex(unitIndex);\n }\n}\n\nmodule.exports = walkUnitDown;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/walkUnitDown.js\n// module id = 94\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/AmericanEnglishDefinition.js\n// module id = 95\n// module chunks = 1","'use strict';\n\nvar CoreOutputFormats = {\n 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}',\n 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}',\n 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}'\n};\n\nmodule.exports = CoreOutputFormats;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CoreOutputFormats.js\n// module id = 96\n// module chunks = 1","'use strict';\n\nvar LocalizedParsingTokens = {\n 'year': {\n base: 'yyyy',\n requiresSuffix: true\n },\n 'month': {\n base: 'MM',\n requiresSuffix: true\n },\n 'date': {\n base: 'dd',\n requiresSuffix: true\n },\n 'hour': {\n base: 'hh',\n requiresSuffixOr: ':'\n },\n 'minute': {\n base: 'mm'\n },\n 'second': {\n base: 'ss'\n },\n 'num': {\n src: '\\\\d+',\n requiresNumerals: true\n }\n};\n\nmodule.exports = LocalizedParsingTokens;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LocalizedParsingTokens.js\n// module id = 97\n// module chunks = 1","'use strict';\n\nmodule.exports = 60 * 1000;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/MINUTES.js\n// module id = 98\n// module chunks = 1","'use strict';\n\nvar ParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '\\\\d{4}'\n },\n 'MM': {\n param: 'month',\n src: '[01]?\\\\d'\n },\n 'dd': {\n param: 'date',\n src: '[0123]?\\\\d'\n },\n 'hh': {\n param: 'hour',\n src: '[0-2]?\\\\d'\n },\n 'mm': {\n param: 'minute',\n src: '[0-5]\\\\d'\n },\n 'ss': {\n param: 'second',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'yearSign': {\n src: '[+-]',\n sign: true\n },\n 'tzHour': {\n src: '[0-1]\\\\d'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'tzSign': {\n src: '[+−-]',\n sign: true\n },\n 'ihh': {\n param: 'hour',\n src: '[0-2]?\\\\d(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT',\n val: 1\n },\n 'Z': {\n param: 'utc',\n src: 'Z',\n val: 1\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = ParsingTokens;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/ParsingTokens.js\n// module id = 99\n// module chunks = 1","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/index.js\n// module id = 100\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nvar isDate = classChecks.isDate;\n\nfunction cloneRangeMember(m) {\n if (isDate(m)) {\n return new Date(m.getTime());\n } else {\n return getRangeMemberPrimitiveValue(m);\n }\n}\n\nmodule.exports = cloneRangeMember;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/cloneRangeMember.js\n// module id = 101\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n namespaceAliases = require('../../common/var/namespaceAliases');\n\nvar isDate = classChecks.isDate,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction getDateForRange(d) {\n if (isDate(d)) {\n return d;\n } else if (d == null) {\n return new Date();\n } else if (sugarDate.create) {\n return sugarDate.create(d);\n }\n return new Date(d);\n}\n\nmodule.exports = getDateForRange;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getDateForRange.js\n// module id = 102\n// module chunks = 1","'use strict';\n\nvar DURATION_REG = require('../var/DURATION_REG'),\n classChecks = require('../../common/var/classChecks'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize');\n\nvar isNumber = classChecks.isNumber;\n\nfunction getDateIncrementObject(amt) {\n var match, val, unit;\n if (isNumber(amt)) {\n return [amt, 'Milliseconds'];\n }\n match = amt.match(DURATION_REG);\n val = +match[1] || 1;\n unit = simpleCapitalize(match[2].toLowerCase());\n if (unit.match(/hour|minute|second/i)) {\n unit += 's';\n } else if (unit === 'Year') {\n unit = 'FullYear';\n } else if (unit === 'Week') {\n unit = 'Date';\n val *= 7;\n } else if (unit === 'Day') {\n unit = 'Date';\n }\n return [val, unit];\n}\n\nmodule.exports = getDateIncrementObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getDateIncrementObject.js\n// module id = 103\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isDate = classChecks.isDate;\n\nfunction getRangeMemberPrimitiveValue(m) {\n if (m == null) return m;\n return isDate(m) ? m.getTime() : m.valueOf();\n}\n\nmodule.exports = getRangeMemberPrimitiveValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getRangeMemberPrimitiveValue.js\n// module id = 104\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n callDateSet = require('../../common/internal/callDateSet'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction incrementDate(src, amount, unit) {\n var mult = MULTIPLIERS[unit], d;\n if (mult) {\n d = new Date(src.getTime() + (amount * mult));\n } else {\n d = new Date(src);\n callDateSet(d, unit, callDateGet(src, unit) + amount);\n }\n return d;\n}\n\nmodule.exports = incrementDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementDate.js\n// module id = 105\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = {\n 'Hours': 60 * 60 * 1000,\n 'Minutes': 60 * 1000,\n 'Seconds': 1000,\n 'Milliseconds': 1\n};\n\nmodule.exports = MULTIPLIERS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/MULTIPLIERS.js\n// module id = 106\n// module chunks = 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 107\n// module chunks = 1","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/sort.js","import {root} from './root';\r\n\r\n/**\r\n * Cookie utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\nexport default {\r\n\r\n /**\r\n * Write a cookie\r\n * @param {String} name Name of the cookie\r\n * @param {String} value Value of the cookie\r\n * @param {Number} hours Cookie duration in hours\r\n */\r\n write(name, value, hours) {\r\n let expire = '';\r\n if (hours) {\r\n expire = new Date((new Date()).getTime() + hours * 3600000);\r\n expire = '; expires=' + expire.toGMTString();\r\n }\r\n doc.cookie = name + '=' + escape(value) + expire;\r\n },\r\n\r\n /**\r\n * Read a cookie\r\n * @param {String} name Name of the cookie\r\n * @returns {String} Value of the cookie\r\n */\r\n read(name) {\r\n let cookieValue = '',\r\n search = name + '=';\r\n if (doc.cookie.length > 0) {\r\n let cookie = doc.cookie,\r\n offset = cookie.indexOf(search);\r\n if (offset !== -1) {\r\n offset += search.length;\r\n let end = cookie.indexOf(';', offset);\r\n if (end === -1) {\r\n end = cookie.length;\r\n }\r\n cookieValue = unescape(cookie.substring(offset, end));\r\n }\r\n }\r\n return cookieValue;\r\n },\r\n\r\n /**\r\n * Remove a cookie\r\n * @param {String} name Name of the cookie\r\n */\r\n remove(name) {\r\n this.write(name, '', -1);\r\n }\r\n\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/cookie.js","import {Feature} from '../feature';\r\nimport {addClass, removeClass} from '../dom';\r\n\r\n/**\r\n * Rows with alternating background color for improved readability\r\n */\r\nexport class AlternateRows extends Feature {\r\n\r\n /**\r\n * Creates an instance of AlternateRows.\r\n *\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'alternateRows');\r\n\r\n let config = this.config;\r\n /**\r\n * Css class for even rows (default: 'even')\r\n * @type {String}\r\n */\r\n this.evenCss = config.even_row_css_class || 'even';\r\n\r\n /**\r\n * Css class for odd rows (default: 'odd')\r\n * @type {String}\r\n */\r\n this.oddCss = config.odd_row_css_class || 'odd';\r\n }\r\n\r\n /**\r\n * Sets alternating rows color\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.processAll();\r\n\r\n // Subscribe to events\r\n this.emitter.on(['row-processed', 'row-paged'],\r\n (tf, rowIndex, arrIndex, isValid) =>\r\n this.processRow(rowIndex, arrIndex, isValid));\r\n this.emitter.on(['column-sorted'], () => this.processAll());\r\n this.emitter.on(['rows-changed'], () => this.processAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Apply background to all valid rows\r\n */\r\n processAll() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let validRowsIndex = tf.getValidRows(true);\r\n let indexLen = validRowsIndex.length;\r\n let idx = 0;\r\n\r\n //alternates bg color\r\n for (let j = 0; j < indexLen; j++) {\r\n let rowIdx = validRowsIndex[j];\r\n this.setRowBg(rowIdx, idx);\r\n idx++;\r\n }\r\n }\r\n\r\n /**\r\n * Set/remove row background based on row validation\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} arrIdx Array index\r\n * @param {Boolean} isValid Valid row flag\r\n */\r\n processRow(rowIdx, arrIdx, isValid) {\r\n if (isValid) {\r\n this.setRowBg(rowIdx, arrIdx);\r\n } else {\r\n this.removeRowBg(rowIdx);\r\n }\r\n }\r\n\r\n /**\r\n * Sets row background color\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} idx Valid rows collection index needed to calculate bg\r\n * color\r\n * @private\r\n */\r\n setRowBg(rowIdx, idx) {\r\n if (!this.isEnabled() || isNaN(rowIdx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n let i = isNaN(idx) ? rowIdx : idx;\r\n this.removeRowBg(rowIdx);\r\n\r\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\r\n }\r\n\r\n /**\r\n * Removes row background color\r\n * @param {Number} idx Row index\r\n * @private\r\n */\r\n removeRowBg(idx) {\r\n if (isNaN(idx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n removeClass(rows[idx], this.oddCss);\r\n removeClass(rows[idx], this.evenCss);\r\n }\r\n\r\n /**\r\n * Removes all alternating backgrounds\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let nbRows = this.tf.getRowsNb(true);\r\n for (let i = 0; i < nbRows; i++) {\r\n this.removeRowBg(i);\r\n }\r\n\r\n // Unsubscribe to events\r\n this.emitter.off(['row-processed', 'row-paged'],\r\n (tf, rowIndex, arrIndex, isValid) =>\r\n this.processRow(rowIndex, arrIndex, isValid));\r\n this.emitter.off(['column-sorted'], () => this.processAll());\r\n this.emitter.off(['rows-changed'], () => this.processAll());\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/alternateRows.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt} from '../event';\r\n\r\n/**\r\n * Clear button UI component\r\n */\r\nexport class ClearButton extends Feature {\r\n\r\n /**\r\n * Creates an instance of ClearButton\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'btnReset');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = f.btn_reset_target_id || null;\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = f.btn_reset_text || 'Reset';\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = f.btn_reset_css_class || 'reset';\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.btn_reset_tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = f.btn_reset_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let cont = createElm('span');\r\n\r\n // reset button is added to defined element\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.targetId ? tf.rDiv : elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/clearButton.js","import {Date as SugarDate} from 'sugar-date';\r\nimport 'sugar-date/locales';\r\nimport {Feature} from '../feature';\r\nimport {isObj, isArray} from '../types';\r\nimport {DATE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Wrapper for Sugar Date module providing datetime helpers and locales\r\n * @export\r\n * @class DateType\r\n */\r\nexport class DateType extends Feature {\r\n\r\n /**\r\n * Creates an instance of DateType\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dateType');\r\n\r\n /**\r\n * Global locale\r\n * @type {String}\r\n */\r\n this.locale = tf.locale;\r\n\r\n /**\r\n * Sugar Date instance\r\n * @type {Object}\r\n */\r\n this.datetime = SugarDate;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialize DateType instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Set global locale\r\n this.datetime.setLocale(this.locale);\r\n\r\n // Add formats from column types configuration if any\r\n this.addConfigFormats(this.tf.colTypes);\r\n\r\n this.emitter.on(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n // Broadcast date-type initialization\r\n this.emitter.emit('date-type-initialized', this.tf, this);\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Parse a string representation of a date for a specified locale and return\r\n * a date object\r\n * @param {String} dateStr String representation of a date\r\n * @param {String} localeCode Locale code (ie 'en-us')\r\n * @returns {Date}\r\n */\r\n parse(dateStr, localeCode) {\r\n return this.datetime.create(dateStr, localeCode);\r\n }\r\n\r\n /**\r\n * Check string representation of a date for a specified locale is valid\r\n * @param {any} dateStr String representation of a date\r\n * @param {any} localeCode Locale code (ie 'en-us')\r\n * @returns {Boolean}\r\n */\r\n isValid(dateStr, localeCode) {\r\n return this.datetime.isValid(this.parse(dateStr, localeCode));\r\n }\r\n\r\n /**\r\n * Return the type object of a specified column as per configuration or\r\n * passed collection\r\n * @param {Number} colIndex Column index\r\n * @param {Array} types Collection of column types, optional\r\n * @returns {Object}\r\n */\r\n getOptions(colIndex, types) {\r\n types = types || this.tf.colTypes;\r\n let colType = types[colIndex];\r\n return isObj(colType) ? colType : {};\r\n }\r\n\r\n /**\r\n * Return the locale code for supplied column index as per configuration\r\n * or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} Locale code (ie: 'en-us')\r\n */\r\n getLocale(colIndex) {\r\n return this.getOptions(colIndex).locale || this.locale;\r\n }\r\n\r\n /**\r\n * Add date time format(s) to a locale as specified by the passed\r\n * collection of column types, ie:\r\n * [\r\n * 'string',\r\n * 'number',\r\n * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']}\r\n * ]\r\n *\r\n * @param {Array} [types=[]] Collection of column types\r\n */\r\n addConfigFormats(types=[]) {\r\n types.forEach((type, idx) => {\r\n let options = this.getOptions(idx, types);\r\n if (options.type === DATE && options.hasOwnProperty('format')) {\r\n let locale = this.datetime.getLocale(\r\n options.locale || this.locale\r\n );\r\n let formats = isArray(options.format) ?\r\n options.format : [options.format];\r\n\r\n // Sugar date module throws exceptions with locale.addFormat\r\n try {\r\n formats.forEach((format) => {\r\n locale.addFormat(format);\r\n });\r\n } catch (ex) {\r\n root.console.error(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove DateType instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n // TODO: remove added formats\r\n\r\n this.emitter.off(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/dateType.js","import {Feature} from '../feature';\nimport {createElm, removeElm, elm, tag} from '../dom';\nimport {addEvt, targetEvt} from '../event';\nimport {contains} from '../string';\nimport {NONE} from '../const';\n\n/**\n * Grid layout, table with fixed headers\n */\nexport class GridLayout extends Feature {\n\n /**\n * Creates an instance of GridLayout\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'gridLayout');\n\n let f = this.config.grid_layout || {};\n\n /**\n * Grid-layout container width as CSS string\n * @type {String}\n */\n this.width = f.width || null;\n\n /**\n * Grid-layout container height as CSS string\n * @type {String}\n */\n this.height = f.height || null;\n\n /**\n * Css class for main container element\n * @type {String}\n */\n this.mainContCssClass = f.cont_css_class || 'grd_Cont';\n\n /**\n * Css class for body table container element\n * @type {String}\n */\n this.contCssClass = f.tbl_cont_css_class || 'grd_tblCont';\n\n /**\n * Css class for headers table container element\n * @type {String}\n */\n this.headContCssClass = f.tbl_head_css_class || 'grd_headTblCont';\n\n /**\n * Css class for toolbar container element (rows counter, paging etc.)\n * @type {String}\n */\n this.infDivCssClass = f.inf_grid_css_class || 'grd_inf';\n\n /**\n * Index of the headers row, default: 0\n * @type {Number}\n */\n this.headRowIndex = f.headers_row_index || 0;\n\n /**\n * Collection of the header row indexes to be moved into headers table\n * @type {Array}\n */\n this.headRows = f.headers_rows || [0];\n\n /**\n * Enable or disable column filters generation, default: true\n * @type {Boolean}\n */\n this.filters = f.filters === false ? false : true;\n\n /**\n * Enable or disable column headers, default: false\n * @type {Boolean}\n */\n this.noHeaders = Boolean(f.no_headers);\n\n /**\n * Grid-layout default column widht as CSS string\n * @type {String}\n */\n this.defaultColWidth = f.default_col_width || '100px';\n\n /**\n * List of column elements\n * @type {Array}\n * @private\n */\n this.colElms = [];\n\n /**\n * Prefix for grid-layout filter's cell ID\n * @type {String}\n * @private\n */\n this.prfxGridFltTd = '_td_';\n\n /**\n * Prefix for grid-layout header's cell ID\n * @type {String}\n * @private\n */\n this.prfxGridTh = 'tblHeadTh_';\n\n /**\n * Mark-up of original HTML table\n * @type {String}\n * @private\n */\n this.sourceTblHtml = tf.dom().outerHTML;\n\n /**\n * Indicates if working table has column elements\n * @type {Boolean}\n * @private\n */\n this.tblHasColTag = tag(tf.dom(), 'col').length > 0 ? true : false;\n\n /**\n * Main container element\n * @private\n */\n this.tblMainCont = null;\n\n /**\n * Table container element\n * @private\n */\n this.tblCont = null;\n\n /**\n * Headers' table container element\n * @private\n */\n this.headTblCont = null;\n\n /**\n * Headers' table element\n * @private\n */\n this.headTbl = null;\n\n // filters flag at TF level\n tf.fltGrid = this.filters;\n }\n\n /**\n * Generates a grid with fixed headers\n * TODO: reduce size of init by extracting single purposed methods\n */\n init() {\n let tf = this.tf;\n let tbl = tf.dom();\n\n if (this.initialized) {\n return;\n }\n\n // Override relevant TableFilter properties\n this.setOverrides();\n\n // Assign default column widths\n this.setDefaultColWidths();\n\n // Initial table width\n let tblW = this.initialTableWidth();\n\n //Main container: it will contain all the elements\n this.tblMainCont = this.createContainer(\n 'div', this.mainContCssClass);\n if (this.width) {\n this.tblMainCont.style.width = this.width;\n }\n tbl.parentNode.insertBefore(this.tblMainCont, tbl);\n\n //Table container: div wrapping content table\n this.tblCont = this.createContainer('div', this.contCssClass);\n this.setConfigWidth(this.tblCont);\n if (this.height) {\n this.tblCont.style.height = this.height;\n }\n tbl.parentNode.insertBefore(this.tblCont, tbl);\n let t = removeElm(tbl);\n this.tblCont.appendChild(t);\n\n //In case table width is expressed in %\n if (tbl.style.width === '') {\n tbl.style.width = (contains('%', tblW) ?\n tbl.clientWidth : tblW) + 'px';\n }\n\n let d = removeElm(this.tblCont);\n this.tblMainCont.appendChild(d);\n\n //Headers table container: div wrapping headers table\n this.headTblCont = this.createContainer(\n 'div', this.headContCssClass);\n\n //Headers table\n this.headTbl = createElm('table');\n let tH = createElm('tHead');\n\n //1st row should be headers row, ids are added if not set\n //Those ids are used by the sort feature\n let hRow = tbl.rows[this.headRowIndex];\n let sortTriggers = this.getSortTriggerIds(hRow);\n\n //Filters row is created\n let filtersRow = this.createFiltersRow();\n\n //Headers row are moved from content table to headers table\n this.setHeadersRow(tH);\n\n this.headTbl.appendChild(tH);\n if (tf.filtersRowIndex === 0) {\n tH.insertBefore(filtersRow, hRow);\n } else {\n tH.appendChild(filtersRow);\n }\n\n this.headTblCont.appendChild(this.headTbl);\n this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont);\n\n //THead needs to be removed in content table for sort feature\n let thead = tag(tbl, 'thead');\n if (thead.length > 0) {\n tbl.removeChild(thead[0]);\n }\n\n //Headers table style\n this.headTbl.style.tableLayout = 'fixed';\n tbl.style.tableLayout = 'fixed';\n this.headTbl.cellPadding = tbl.cellPadding;\n this.headTbl.cellSpacing = tbl.cellSpacing;\n\n //content table without headers needs col widths to be reset\n tf.setColWidths(this.headTbl);\n\n //Headers container width\n // this.headTblCont.style.width = this.tblCont.clientWidth+'px';\n\n tbl.style.width = '';\n //\n this.headTbl.style.width = tbl.clientWidth + 'px';\n //\n\n //scroll synchronisation\n addEvt(this.tblCont, 'scroll', (evt) => {\n let elm = targetEvt(evt);\n let scrollLeft = elm.scrollLeft;\n this.headTblCont.scrollLeft = scrollLeft;\n //New pointerX calc taking into account scrollLeft\n // if(!o.isPointerXOverwritten){\n // try{\n // o.Evt.pointerX = function(evt){\n // let e = evt || global.event;\n // let bdScrollLeft = tf_StandardBody().scrollLeft +\n // scrollLeft;\n // return (e.pageX + scrollLeft) ||\n // (e.clientX + bdScrollLeft);\n // };\n // o.isPointerXOverwritten = true;\n // } catch(err) {\n // o.isPointerXOverwritten = false;\n // }\n // }\n });\n\n // TODO: Trigger a custom event handled by sort extension\n let sort = tf.extension('sort');\n if (sort) {\n sort.asyncSort = true;\n sort.triggerIds = sortTriggers;\n }\n\n //Col elements are enough to keep column widths after sorting and\n //filtering\n this.setColumnElements();\n\n if (tf.popupFilters) {\n filtersRow.style.display = NONE;\n }\n\n if (tbl.clientWidth !== this.headTbl.clientWidth) {\n tbl.style.width = this.headTbl.clientWidth + 'px';\n }\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Overrides TableFilter instance properties to adjust to grid layout mode\n * @private\n */\n setOverrides() {\n let tf = this.tf;\n tf.refRow = 0;\n tf.headersRow = 0;\n tf.filtersRowIndex = 1;\n tf.isExternalFlt = true;\n }\n\n /**\n * Set grid-layout default column widths if column widths are not defined\n * @private\n */\n setDefaultColWidths() {\n let tf = this.tf;\n if (tf.hasColWidths) {\n return;\n }\n for (let k = 0, len = tf.getCellsNb(); k < len; k++) {\n let colW;\n let cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k];\n if (cell.width !== '') {\n colW = cell.width;\n } else if (cell.style.width !== '') {\n colW = parseInt(cell.style.width, 10);\n } else {\n colW = this.defaultColWidth;\n }\n tf.colWidths[k] = colW;\n }\n tf.hasColWidths = true;\n tf.setColWidths();\n }\n\n /**\n * Initial table width\n * @returns {Number}\n * @private\n */\n initialTableWidth() {\n let tbl = this.tf.dom();\n let width; //initial table width\n\n if (tbl.width !== '') {\n width = tbl.width;\n }\n else if (tbl.style.width !== '') {\n width = tbl.style.width;\n } else {\n width = tbl.clientWidth;\n }\n return parseInt(width, 10);\n }\n\n /**\n * Creates container element\n * @param {String} tag Tag name\n * @param {String} className Css class to assign to element\n * @returns {DOMElement}\n * @private\n */\n createContainer(tag, className) {\n let element = createElm(tag);\n element.className = className;\n return element;\n }\n\n /**\n * Creates filters row with cells\n * @returns {HTMLTableRowElement}\n * @private\n */\n createFiltersRow() {\n let tf = this.tf;\n let filtersRow = createElm('tr');\n if (this.filters && tf.fltGrid) {\n tf.externalFltTgtIds = [];\n for (let j = 0; j < tf.getCellsNb(); j++) {\n let fltTdId = `${tf.prfxFlt + j + this.prfxGridFltTd + tf.id}`;\n let cl = createElm(tf.fltCellTag, ['id', fltTdId]);\n filtersRow.appendChild(cl);\n tf.externalFltTgtIds[j] = fltTdId;\n }\n }\n return filtersRow;\n }\n\n /**\n * Generates column elements if necessary and assigns their widths\n * @private\n */\n setColumnElements() {\n let tf = this.tf;\n let cols = tag(tf.dom(), 'col');\n this.tblHasColTag = cols.length > 0;\n\n for (let k = (tf.nbCells - 1); k >= 0; k--) {\n let col;\n\n if (!this.tblHasColTag) {\n col = createElm('col');\n tf.dom().insertBefore(col, tf.dom().firstChild);\n } else {\n col = cols[k];\n }\n col.style.width = tf.colWidths[k];\n this.colElms[k] = col;\n }\n this.tblHasColTag = true;\n }\n\n /**\n * Sets headers row in headers table\n * @param {HTMLHeadElement} tableHead Table head element\n * @private\n */\n setHeadersRow(tableHead) {\n if (this.noHeaders) {\n // Handle table with no headers, assuming here headers do not\n // exist\n tableHead.appendChild(createElm('tr'));\n } else {\n // Headers row are moved from content table to headers table\n for (let i = 0; i < this.headRows.length; i++) {\n let row = this.tf.dom().rows[this.headRows[i]];\n tableHead.appendChild(row);\n }\n }\n }\n\n /**\n * Sets width defined in configuration to passed element\n * @param {DOMElement} element DOM element\n * @private\n */\n setConfigWidth(element) {\n if (!this.width) {\n return;\n }\n if (this.width.indexOf('%') !== -1) {\n element.style.width = '100%';\n } else {\n element.style.width = this.width;\n }\n }\n\n /**\n * Returns a list of header IDs used for specifing external sort triggers\n * @param {HTMLTableRowElement} row DOM row element\n * @returns {Array} List of IDs\n * @private\n */\n getSortTriggerIds(row) {\n let tf = this.tf;\n let sortTriggers = [];\n for (let n = 0; n < tf.getCellsNb(); n++) {\n let c = row.cells[n];\n let thId = c.getAttribute('id');\n if (!thId || thId === '') {\n thId = `${this.prfxGridTh + n}_${tf.id}`;\n c.setAttribute('id', thId);\n }\n sortTriggers.push(thId);\n }\n return sortTriggers;\n }\n\n /**\n * Removes the grid layout\n */\n destroy() {\n let tf = this.tf;\n let tbl = tf.dom();\n\n if (!this.initialized) {\n return;\n }\n let t = removeElm(tbl);\n this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont);\n removeElm(this.tblMainCont);\n\n this.tblMainCont = null;\n this.headTblCont = null;\n this.headTbl = null;\n this.tblCont = null;\n\n tbl.outerHTML = this.sourceTblHtml;\n //needed to keep reference of table element for future usage\n this.tf.tbl = elm(tf.id);\n\n this.initialized = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/gridLayout.js","import {addEvt, removeEvt} from '../event';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst location = root.location;\r\nconst decodeURIComponent = root.decodeURIComponent;\r\nconst encodeURIComponent = root.encodeURIComponent;\r\n\r\n/**\r\n * Checks if browser has onhashchange event\r\n */\r\nexport const hasHashChange = () => {\r\n let docMode = root.documentMode;\r\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\r\n};\r\n\r\n/**\r\n * Manages state via URL hash changes\r\n *\r\n * @export\r\n * @class Hash\r\n */\r\nexport class Hash {\r\n\r\n /**\r\n * Creates an instance of Hash\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n /**\r\n * State object\r\n * @type {State}\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * Cached URL hash\r\n * @type {String} Hash string\r\n * @private\r\n */\r\n this.lastHash = null;\r\n\r\n /**\r\n * Application event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Bound sync wrapper for future use\r\n * @private\r\n */\r\n this.boundSync = null;\r\n }\r\n\r\n /**\r\n * Initializes the Hash object\r\n */\r\n init() {\r\n if (!hasHashChange()) {\r\n return;\r\n }\r\n\r\n this.lastHash = location.hash;\r\n //Store a bound sync wrapper\r\n this.boundSync = this.sync.bind(this);\r\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.on(['initialized'], this.boundSync);\r\n addEvt(root, 'hashchange', this.boundSync);\r\n }\r\n\r\n /**\r\n * Updates the URL hash based on a state change\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n update(state) {\r\n let hash = `#${encodeURIComponent(JSON.stringify(state))}`;\r\n if (this.lastHash === hash) {\r\n return;\r\n }\r\n\r\n location.hash = hash;\r\n this.lastHash = hash;\r\n }\r\n\r\n /**\r\n * Converts a URL hash into a state JSON object\r\n *\r\n * @param {String} hash URL hash fragment\r\n * @returns {Object} JSON object\r\n */\r\n parse(hash) {\r\n if (hash.indexOf('#') === -1) {\r\n return null;\r\n }\r\n hash = hash.substr(1);\r\n return JSON.parse(decodeURIComponent(hash));\r\n }\r\n\r\n /**\r\n * Applies current hash state to features\r\n */\r\n sync() {\r\n let state = this.parse(location.hash);\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Release Hash event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.off(['initialized'], this.boundSync);\r\n removeEvt(root, 'hashchange', this.boundSync);\r\n\r\n this.state = null;\r\n this.lastHash = null;\r\n this.emitter = null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/hash.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt, targetEvt, removeEvt} from '../event';\r\nimport {NONE} from '../const';\r\nimport {root} from '../root';\r\nimport {isEmpty} from '../types';\r\n\r\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\r\n '4.-Filter-operators';\r\nconst WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/';\r\n\r\n/**\r\n * Help UI component\r\n */\r\nexport class Help extends Feature {\r\n\r\n /**\r\n * Creates an instance of Help\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'help');\r\n\r\n let f = this.config.help_instructions || {};\r\n\r\n /**\r\n * ID of main custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = f.target_id || null;\r\n\r\n /**\r\n * ID of custom container element for instructions\r\n * @type {String}\r\n */\r\n this.contTgtId = f.container_target_id || null;\r\n\r\n /**\r\n * Instructions text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.instrText = !isEmpty(f.text) ? f.text :\r\n 'Use the filters above each column to filter and limit table ' +\r\n 'data. Advanced searches can be performed by using the following ' +\r\n 'operators:
<, <=, >, ' +\r\n '>=, =, *, !, {, }, ' +\r\n '||,&&, [empty], [nonempty], ' +\r\n 'rgx:
' +\r\n 'Learn more
';\r\n\r\n /**\r\n * Instructions HTML\r\n * @type {String}\r\n */\r\n this.instrHtml = f.html || null;\r\n\r\n /**\r\n * Help button text ('?')\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || '?';\r\n\r\n /**\r\n * Custom help button HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = f.btn_html || null;\r\n\r\n /**\r\n * Css class for help button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'helpBtn';\r\n\r\n /**\r\n * Css class for help container element\r\n * @type {String}\r\n */\r\n this.contCssClass = f.container_css_class || 'helpCont';\r\n\r\n /**\r\n * Button DOM element\r\n * @type {DOMElement}\r\n */\r\n this.btn = null;\r\n\r\n /**\r\n * Help container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Default HTML appended to instructions text\r\n * @type {String}\r\n */\r\n this.defaultHtml = '

TableFilter ' +\r\n 'v' + tf.version + '

' + '' + WEBSITE_URL + '' +\r\n '
©2015-' + tf.year + ' Max Guglielmi' +\r\n '
' +\r\n 'Close
';\r\n\r\n this.emitter.on(['init-help'], () => this.init());\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.cont && targetElm !== this.btn) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialise Help instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n let btn = createElm('span');\r\n let cont = createElm('div');\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n //help button is added to defined element\r\n if (!this.tgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.tgtId ? tf.rDiv : elm(this.tgtId);\r\n targetEl.appendChild(btn);\r\n\r\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\r\n\r\n if (!this.btnHtml) {\r\n divContainer.appendChild(cont);\r\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\r\n helplink.className = this.btnCssClass;\r\n helplink.appendChild(createText(this.btnText));\r\n btn.appendChild(helplink);\r\n addEvt(helplink, 'click', () => this.toggle());\r\n } else {\r\n btn.innerHTML = this.btnHtml;\r\n let helpEl = btn.firstChild;\r\n addEvt(helpEl, 'click', () => this.toggle());\r\n divContainer.appendChild(cont);\r\n }\r\n\r\n if (!this.instrHtml) {\r\n cont.innerHTML = this.instrText;\r\n cont.className = this.contCssClass;\r\n } else {\r\n if (this.contTgtId) {\r\n divContainer.appendChild(cont);\r\n }\r\n cont.innerHTML = this.instrHtml;\r\n if (!this.contTgtId) {\r\n cont.className = this.contCssClass;\r\n }\r\n }\r\n cont.innerHTML += this.defaultHtml;\r\n addEvt(cont, 'click', () => this.toggle());\r\n\r\n this.cont = cont;\r\n this.btn = btn;\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle help pop-up\r\n */\r\n toggle() {\r\n // check only if explicitily disabled as in this case undefined\r\n // signifies the help feature is enabled by default\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let divDisplay = this.cont.style.display;\r\n if (divDisplay === '' || divDisplay === NONE) {\r\n this.cont.style.display = 'inline';\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n } else {\r\n this.cont.style.display = NONE;\r\n }\r\n }\r\n\r\n /**\r\n * Remove help UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.btn);\r\n this.btn = null;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n this.boundMouseup = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/help.js","import {createText, createElm, getText} from '../dom';\r\nimport {isArray} from '../types';\r\nimport {rgxEsc} from '../string';\r\n\r\n/**\r\n * Highlight matched keywords upon filtering\r\n *\r\n * @export\r\n * @class HighlightKeyword\r\n */\r\nexport class HighlightKeyword {\r\n\r\n /**\r\n * Creates an instance of HighlightKeyword\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n let f = tf.config();\r\n\r\n /**\r\n * Css class for highlighted term\r\n * @type {String}\r\n */\r\n this.highlightCssClass = f.highlight_css_class || 'keyword';\r\n\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * TableFilter's emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n }\r\n\r\n /**\r\n * Initializes HighlightKeyword instance\r\n */\r\n init() {\r\n this.emitter.on(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.on(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} term Searched term\r\n * @param {String} cssClass Css class name\r\n *\r\n * TODO: refactor this method\r\n */\r\n highlight(node, term, cssClass) {\r\n // Iterate into this nodes childNodes\r\n if (node.hasChildNodes) {\r\n let children = node.childNodes;\r\n for (let i = 0; i < children.length; i++) {\r\n this.highlight(children[i], term, cssClass);\r\n }\r\n }\r\n\r\n if (node.nodeType === 3) {\r\n let nodeVal = node.nodeValue.toLowerCase();\r\n let termIdx = nodeVal.indexOf(term.toLowerCase());\r\n\r\n if (termIdx !== -1) {\r\n let pn = node.parentNode;\r\n if (pn && pn.className !== cssClass) {\r\n // term not highlighted yet\r\n let nv = node.nodeValue,\r\n // Create a load of replacement nodes\r\n before = createText(nv.substr(0, termIdx)),\r\n value = nv.substr(termIdx, term.length),\r\n after = createText(nv.substr(termIdx + term.length)),\r\n text = createText(value),\r\n container = createElm('span');\r\n container.className = cssClass;\r\n container.appendChild(text);\r\n pn.insertBefore(before, node);\r\n pn.insertBefore(container, node);\r\n pn.insertBefore(after, node);\r\n pn.removeChild(node);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} term\r\n * @param {String} cssClass Css class to remove\r\n */\r\n unhighlight(term, cssClass) {\r\n let highlightedNodes = this.tf.dom().querySelectorAll(`.${cssClass}`);\r\n for (let i = 0; i < highlightedNodes.length; i++) {\r\n let n = highlightedNodes[i];\r\n let nodeVal = getText(n);\r\n\r\n if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) {\r\n let parentNode = n.parentNode;\r\n parentNode.replaceChild(createText(nodeVal), n);\r\n parentNode.normalize();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\r\n unhighlightAll() {\r\n if (!this.tf.highlightKeywords) {\r\n return;\r\n }\r\n // iterate filters values to unhighlight all values\r\n this.tf.getFiltersValue().forEach((val) => {\r\n if (isArray(val)) {\r\n val.forEach((item) =>\r\n this.unhighlight(item, this.highlightCssClass));\r\n } else {\r\n this.unhighlight(val, this.highlightCssClass);\r\n }\r\n });\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n this.emitter.off(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.off(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Ensure filtering operators are handled before highlighting any match\r\n * @param {any} Table cell to look searched term into\r\n * @param {any} Searched termIdx\r\n */\r\n _processTerm(cell, term) {\r\n let tf = this.tf;\r\n let reLk = new RegExp(rgxEsc(tf.lkOperator));\r\n let reEq = new RegExp(tf.eqOperator);\r\n let reSt = new RegExp(tf.stOperator);\r\n let reEn = new RegExp(tf.enOperator);\r\n let reLe = new RegExp(tf.leOperator);\r\n let reGe = new RegExp(tf.geOperator);\r\n let reL = new RegExp(tf.lwOperator);\r\n let reG = new RegExp(tf.grOperator);\r\n let reD = new RegExp(tf.dfOperator);\r\n\r\n term = term\r\n .replace(reLk, '')\r\n .replace(reEq, '')\r\n .replace(reSt, '')\r\n .replace(reEn, '');\r\n\r\n if (reLe.test(term) || reGe.test(term) || reL.test(term) ||\r\n reG.test(term) || reD.test(term)) {\r\n term = getText(cell);\r\n }\r\n\r\n if (term === '') {\r\n return;\r\n }\r\n\r\n this.highlight(cell, term, this.highlightCssClass);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/highlightKeywords.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\nimport {root} from '../root';\r\nimport {NONE} from '../const';\r\n\r\nconst EVENTS = [\r\n 'before-filtering',\r\n 'before-populating-filter',\r\n 'before-page-change',\r\n 'before-clearing-filters',\r\n 'before-page-length-change',\r\n 'before-reset-page',\r\n 'before-reset-page-length',\r\n 'before-loading-extensions',\r\n 'before-loading-themes'\r\n];\r\n\r\n/**\r\n * Activity indicator\r\n *\r\n * @export\r\n * @class Loader\r\n * @extends {Feature}\r\n */\r\nexport class Loader extends Feature {\r\n\r\n /**\r\n * Creates an instance of Loader.\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'loader');\r\n\r\n let f = this.config.loader || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Loader container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Text displayed when indicator is visible\r\n * @type {String}\r\n */\r\n this.text = f.text || 'Loading...';\r\n\r\n /**\r\n * Custom HTML injected in Loader's container element\r\n * @type {String}\r\n */\r\n this.html = f.html || null;\r\n\r\n /**\r\n * Css class for Loader's container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'loader';\r\n\r\n /**\r\n * Close delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.closeDelay = 250;\r\n\r\n /**\r\n * Callback fired when loader is displayed\r\n * @type {Function}\r\n */\r\n this.onShow = isFn(f.on_show_loader) ?\r\n f.on_show_loader : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired when loader is closed\r\n * @type {Function}\r\n */\r\n this.onHide = isFn(f.on_hide_loader) ? f.on_hide_loader : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes Loader instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n let containerDiv = createElm('div');\r\n containerDiv.className = this.cssClass;\r\n\r\n let targetEl = !this.targetId ?\r\n tf.dom().parentNode : elm(this.targetId);\r\n if (!this.targetId) {\r\n targetEl.insertBefore(containerDiv, tf.dom());\r\n } else {\r\n targetEl.appendChild(containerDiv);\r\n }\r\n this.cont = containerDiv;\r\n if (!this.html) {\r\n this.cont.appendChild(createText(this.text));\r\n } else {\r\n this.cont.innerHTML = this.html;\r\n }\r\n\r\n this.show(NONE);\r\n\r\n // Subscribe to events\r\n emitter.on(EVENTS, () => this.show(''));\r\n emitter.on(EVENTS, () => this.show(NONE));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Shows or hides activity indicator\r\n * @param {String} Two possible values: '' or 'none'\r\n */\r\n show(p) {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let displayLoader = () => {\r\n if (!this.cont) {\r\n return;\r\n }\r\n if (p !== NONE) {\r\n this.onShow(this);\r\n }\r\n this.cont.style.display = p;\r\n if (p === NONE) {\r\n this.onHide(this);\r\n }\r\n };\r\n\r\n let t = p === NONE ? this.closeDelay : 1;\r\n root.setTimeout(displayLoader, t);\r\n }\r\n\r\n /**\r\n * Removes feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(EVENTS, () => this.show(''));\r\n emitter.off(EVENTS, () => this.show(NONE));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/loader.js","import {Feature} from '../feature';\r\nimport {addClass, removeClass, hasClass} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\n/**\r\n * Visual indicator for filtered columns\r\n * @export\r\n * @class MarkActiveColumns\r\n * @extends {Feature}\r\n */\r\nexport class MarkActiveColumns extends Feature {\r\n\r\n /**\r\n * Create an instance of MarkActiveColumns\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'markActiveColumns');\r\n\r\n let config = this.config.mark_active_columns || {};\r\n\r\n /**\r\n * Css class for filtered (active) columns\r\n * @type {String}\r\n */\r\n this.headerCssClass = config.header_css_class || 'activeHeader';\r\n\r\n /**\r\n * Callback fired before a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onBeforeActiveColumn = isFn(config.on_before_active_column) ?\r\n config.on_before_active_column : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onAfterActiveColumn = isFn(config.on_after_active_column) ?\r\n config.on_after_active_column : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initialise MarkActiveColumns instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.on(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Clear filtered columns visual indicator (background color)\r\n */\r\n clearActiveColumns() {\r\n let tf = this.tf;\r\n let len = tf.getCellsNb();\r\n for (let i = 0; i < len; i++) {\r\n removeClass(tf.getHeaderElement(i), this.headerCssClass);\r\n }\r\n }\r\n\r\n /**\r\n * Mark currently filtered column\r\n * @param {Number} colIndex Column index\r\n */\r\n markActiveColumn(colIndex) {\r\n let header = this.tf.getHeaderElement(colIndex);\r\n if (hasClass(header, this.headerCssClass)) {\r\n return;\r\n }\r\n this.onBeforeActiveColumn(this, colIndex);\r\n\r\n addClass(header, this.headerCssClass);\r\n\r\n this.onAfterActiveColumn(this, colIndex);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.clearActiveColumns();\r\n this.emitter.off(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.off(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/markActiveColumns.js","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, isFn, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'noResults');\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = f.content || 'No results';\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = f.custom_container || null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = f.custom_container_id || null;\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'no-results';\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = isFn(f.on_before_show_msg) ?\r\n f.on_before_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = isFn(f.on_after_show_msg) ?\r\n f.on_after_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = isFn(f.on_before_hide_msg) ?\r\n f.on_before_hide_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = isFn(f.on_after_hide_msg) ?\r\n f.on_after_hide_msg : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(['after-filtering'], () => this.toggle());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.hide();\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.tblCont.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/noResults.js","import {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isFn, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, keyCode, removeEvt} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'paging');\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'pgInp';\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = f.target_id || null;\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = !isNaN(f.length) ? f.length : 10;\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = f.results_per_page_target_id || null;\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = f.slc_css_class || 'pgSlc';\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = f.inp_css_class || 'pgNbInp';\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = f.results_per_page || null;\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = f.results_slc_css_class || 'rspg';\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = f.results_span_css_class || 'rspgSpan';\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = f.btn_next_page_text || '>';\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = f.btn_prev_page_text || '<';\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = f.btn_last_page_text || '>|';\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = f.btn_first_page_text || '|<';\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = f.btn_next_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = f.btn_prev_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = f.btn_first_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = f.btn_last_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = f.page_text || ' Page ';\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = f.of_text || ' of ';\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = f.nb_pages_css_class || 'nbpg';\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = f.btns === false ? false : true;\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = f.page_selector_type || SELECT;\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = isFn(f.on_before_change_page) ?\r\n f.on_before_change_page : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = isFn(f.on_after_change_page) ?\r\n f.on_after_change_page : EMPTY_FN;\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n let key = keyCode(e);\r\n if (key === ENTER_KEY) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n if (!this.tgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.tgtId ? tf.mDiv : elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], () => this.resetPagingInfo());\r\n this.emitter.on(['change-page'],\r\n (tf, pageNumber) => this.setPage(pageNumber));\r\n this.emitter.on(['change-page-results'],\r\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let mdiv = !this.tgtId ? tf.mDiv : elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n mdiv.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n mdiv.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n if (!this.pageLengthTgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.rDiv : elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx =\r\n (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) : slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'], () => this.resetPagingInfo());\r\n this.emitter.off(['change-page'],\r\n (tf, pageNumber) => this.setPage(pageNumber));\r\n this.emitter.off(['change-page-results'],\r\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/paging.js","import {Feature} from '../feature';\r\nimport {isFn, isUndef, EMPTY_FN} from '../types';\r\nimport {createElm, removeElm} from '../dom';\r\nimport {addEvt, cancelEvt, stopEvt, targetEvt, removeEvt} from '../event';\r\nimport {INPUT, NONE, CHECKLIST, MULTIPLE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Pop-up filter component\r\n * @export\r\n * @class PopupFilter\r\n * @extends {Feature}\r\n */\r\nexport class PopupFilter extends Feature {\r\n\r\n /**\r\n * Creates an instance of PopupFilter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'popupFilters');\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n // Enable external filters\r\n tf.isExternalFlt = true;\r\n tf.externalFltTgtIds = [];\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = f.close_on_filtering === false ? false : true;\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = f.image || tf.themesPath + 'icn_filter.gif';\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = f.image_active ||\r\n tf.themesPath + 'icn_filterActive.gif';\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = f.image_html ||\r\n '\"Column';\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = f.placeholder_css_class ||\r\n 'popUpPlaceholder';\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = f.div_css_class || 'popUpFilter';\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = f.adjust_to_container === false ? false : true;\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = isFn(f.on_before_popup_filter_open) ?\r\n f.on_before_popup_filter_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = isFn(f.on_after_popup_filter_open) ?\r\n f.on_after_popup_filter_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = isFn(f.on_before_popup_filter_close) ?\r\n f.on_before_popup_filter_close : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = isFn(f.on_after_popup_filter_close) ?\r\n f.on_after_popup_filter_close : EMPTY_FN;\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = this.filtersCache || [];\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n for (let i = 0; i < tf.nbCells; i++) {\r\n if (tf.getFilterType(i) === NONE) {\r\n continue;\r\n }\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n }\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltTgtIds.push(cont.id);\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltTgtIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/popupFilter.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\n/**\r\n * Rows counter UI component\r\n * @export\r\n * @class RowsCounter\r\n * @extends {Feature}\r\n */\r\nexport class RowsCounter extends Feature {\r\n\r\n /**\r\n * Creates an instance of RowsCounter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'rowsCounter');\r\n\r\n // TableFilter configuration\r\n let f = this.config.rows_counter || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Container DOM element for label displaying the total number of rows\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Text preceding the total number of rows\r\n * @type {String}\r\n */\r\n this.text = f.text || 'Rows: ';\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page when paging is enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.fromToTextSeparator = f.separator || '-';\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page and the total number of filterable rows when paging is\r\n * enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.overText = f.over_text || ' / ';\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'tot';\r\n\r\n /**\r\n * Callback fired before the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onBeforeRefreshCounter = isFn(f.on_before_refresh_counter) ?\r\n f.on_before_refresh_counter : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onAfterRefreshCounter = isFn(f.on_after_refresh_counter) ?\r\n f.on_after_refresh_counter : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes RowsCounter instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n //rows counter container\r\n let countDiv = createElm('div');\r\n countDiv.className = this.cssClass;\r\n //rows counter label\r\n let countSpan = createElm('span');\r\n let countText = createElm('span');\r\n countText.appendChild(createText(this.text));\r\n\r\n // counter is added to defined element\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.targetId ? tf.lDiv : elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n countDiv.appendChild(countText);\r\n countDiv.appendChild(countSpan);\r\n targetEl.appendChild(countDiv);\r\n } else {\r\n //custom container, no need to append statusDiv\r\n targetEl.appendChild(countText);\r\n targetEl.appendChild(countSpan);\r\n }\r\n this.container = countDiv;\r\n this.label = countSpan;\r\n\r\n // subscribe to events\r\n this.emitter.on(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.on(['rows-changed'], () => this.refresh());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n this.refresh();\r\n }\r\n\r\n /**\r\n * Refreshes the rows counter\r\n * @param {Number} p Optional parameter the total number of rows to display\r\n */\r\n refresh(p) {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n this.onBeforeRefreshCounter(tf, this.label);\r\n\r\n let totTxt;\r\n if (!tf.paging) {\r\n if (p && p !== '') {\r\n totTxt = p;\r\n } else {\r\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\r\n }\r\n } else {\r\n let paging = tf.feature('paging');\r\n if (paging) {\r\n let nbValidRows = tf.getValidRowsNb();\r\n //paging start row\r\n let pagingStartRow = parseInt(paging.startPagingRow, 10) +\r\n ((nbValidRows > 0) ? 1 : 0);\r\n let pagingEndRow =\r\n (pagingStartRow + paging.pageLength) - 1 <=\r\n nbValidRows ?\r\n pagingStartRow + paging.pageLength - 1 :\r\n nbValidRows;\r\n totTxt = pagingStartRow + this.fromToTextSeparator +\r\n pagingEndRow + this.overText + nbValidRows;\r\n }\r\n }\r\n\r\n this.label.innerHTML = totTxt;\r\n this.onAfterRefreshCounter(tf, this.label, totTxt);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n if (!this.targetId && this.container) {\r\n removeElm(this.container);\r\n } else {\r\n elm(this.targetId).innerHTML = '';\r\n }\r\n this.label = null;\r\n this.container = null;\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.off(['rows-changed'], () => this.refresh());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/rowsCounter.js","import {Feature} from '../feature';\nimport {Hash} from './hash';\nimport {Storage} from './storage';\nimport {isEmpty} from '../string';\nimport {isArray, isNull, isString, isUndef} from '../types';\n\n/**\n * Features state object persistable with localStorage, cookie or URL hash\n *\n * @export\n * @class State\n * @extends {Feature}\n */\nexport class State extends Feature {\n\n /**\n * Creates an instance of State\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'state');\n\n let cfg = this.config.state;\n\n /**\n * Determines whether state is persisted with URL hash\n * @type {Boolean}\n */\n this.enableHash = cfg === true ||\n (isArray(cfg.types) && cfg.types.indexOf('hash') !== -1);\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableLocalStorage = isArray(cfg.types) &&\n cfg.types.indexOf('local_storage') !== -1;\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableCookie = isArray(cfg.types) &&\n cfg.types.indexOf('cookie') !== -1;\n\n /**\n * Persist filters values, enabled by default\n * @type {Boolean}\n */\n this.persistFilters = cfg.filters === false ? false : true;\n\n /**\n * Persist current page number when paging is enabled\n * @type {Boolean}\n */\n this.persistPageNumber = Boolean(cfg.page_number);\n\n /**\n * Persist page length when paging is enabled\n * @type {Boolean}\n */\n this.persistPageLength = Boolean(cfg.page_length);\n\n /**\n * Persist column sorting\n * @type {Boolean}\n */\n this.persistSort = Boolean(cfg.sort);\n\n /**\n * Persist columns visibility\n * @type {Boolean}\n */\n this.persistColsVisibility = Boolean(cfg.columns_visibility);\n\n /**\n * Persist filters row visibility\n * @type {Boolean}\n */\n this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\n\n /**\n * Cookie duration in hours\n * @type {Boolean}\n */\n this.cookieDuration = !isNaN(cfg.cookie_duration) ?\n parseInt(cfg.cookie_duration, 10) : 87600;\n\n /**\n * Enable Storage if localStorage or cookie is required\n * @type {Boolean}\n * @private\n */\n this.enableStorage = this.enableLocalStorage || this.enableCookie;\n\n /**\n * Storage instance if storage is required\n * @type {Storage}\n * @private\n */\n this.storage = null;\n\n /**\n * Hash instance if URL hash is required\n * @type {Boolean}\n * @private\n */\n this.hash = null;\n\n /**\n * Current page number\n * @type {Number}\n * @private\n */\n this.pageNb = null;\n\n /**\n * Current page length\n * @type {Number}\n * @private\n */\n this.pageLength = null;\n\n /**\n * Current column sorting\n * @type {Object}\n * @private\n */\n this.sort = null;\n\n /**\n * Current hidden columns\n * @type {Object}\n * @private\n */\n this.hiddenCols = null;\n\n /**\n * Filters row visibility\n * @type {Boolean}\n * @private\n */\n this.filtersVisibility = null;\n\n /**\n * State object\n * @type {Object}\n * @private\n */\n this.state = {};\n\n /**\n * Prefix for column ID\n * @type {String}\n * @private\n */\n this.prfxCol = 'col_';\n\n /**\n * Prefix for page number ID\n * @type {String}\n * @private\n */\n this.pageNbKey = 'page';\n\n /**\n * Prefix for page length ID\n * @type {String}\n * @private\n */\n this.pageLengthKey = 'page_length';\n\n /**\n * Prefix for filters visibility ID\n * @type {String}\n * @private\n */\n this.filtersVisKey = 'filters_visibility';\n }\n\n /**\n * Initializes State instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.on(['after-filtering'], () => this.update());\n this.emitter.on(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.on(['after-page-length-change'],\n (tf, pageLength) => this.updatePageLength(pageLength));\n this.emitter.on(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.on(['sort-initialized'], () => this._syncSort());\n this.emitter.on(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.on(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.on(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.on(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash = new Hash(this);\n this.hash.init();\n }\n if (this.enableStorage) {\n this.storage = new Storage(this);\n this.storage.init();\n }\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n\n /**\n * Update state object based on current features state\n */\n update() {\n if (!this.isEnabled()) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n if (this.persistFilters) {\n let filterValues = tf.getFiltersValue();\n\n filterValues.forEach((val, idx) => {\n let key = `${this.prfxCol}${idx}`;\n\n if (isString(val) && isEmpty(val)) {\n if (state.hasOwnProperty(key)) {\n state[key].flt = undefined;\n }\n } else {\n state[key] = state[key] || {};\n state[key].flt = val;\n }\n });\n }\n\n if (this.persistPageNumber) {\n if (isNull(this.pageNb)) {\n state[this.pageNbKey] = undefined;\n } else {\n state[this.pageNbKey] = this.pageNb;\n }\n }\n\n if (this.persistPageLength) {\n if (isNull(this.pageLength)) {\n state[this.pageLengthKey] = undefined;\n } else {\n state[this.pageLengthKey] = this.pageLength;\n }\n }\n\n if (this.persistSort) {\n if (!isNull(this.sort)) {\n // Remove previuosly sorted column\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].sort = undefined;\n }\n });\n\n let key = `${this.prfxCol}${this.sort.column}`;\n state[key] = state[key] || {};\n state[key].sort = { descending: this.sort.descending };\n }\n }\n\n if (this.persistColsVisibility) {\n if (!isNull(this.hiddenCols)) {\n // Clear previuosly hidden columns\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].hidden = undefined;\n }\n });\n\n this.hiddenCols.forEach((colIdx) => {\n let key = `${this.prfxCol}${colIdx}`;\n state[key] = state[key] || {};\n state[key].hidden = true;\n });\n }\n }\n\n if (this.persistFiltersVisibility) {\n if (isNull(this.filtersVisibility)) {\n state[this.filtersVisKey] = undefined;\n } else {\n state[this.filtersVisKey] = this.filtersVisibility;\n }\n }\n\n this.emitter.emit('state-changed', tf, state);\n }\n\n /**\n * Refresh page number field on page number changes\n *\n * @param {Number} pageNb Current page number\n */\n updatePage(pageNb) {\n this.pageNb = pageNb;\n this.update();\n }\n\n /**\n * Refresh page length field on page length changes\n *\n * @param {Number} pageLength Current page length value\n */\n updatePageLength(pageLength) {\n this.pageLength = pageLength;\n this.update();\n }\n\n /**\n * Refresh column sorting information on sort changes\n *\n * @param index {Number} Column index\n * @param {Boolean} descending Descending manner\n */\n updateSort(index, descending) {\n this.sort = {\n column: index,\n descending: descending\n };\n this.update();\n }\n\n /**\n * Refresh hidden columns information on columns visibility changes\n *\n * @param {Array} hiddenCols Columns indexes\n */\n updateColsVisibility(hiddenCols) {\n this.hiddenCols = hiddenCols;\n this.update();\n }\n\n /**\n * Refresh filters visibility on filters visibility change\n *\n * @param {Boolean} visible Visibility flad\n */\n updateFiltersVisibility(visible) {\n this.filtersVisibility = visible;\n this.update();\n }\n\n /**\n * Override state field\n *\n * @param state State object\n */\n override(state) {\n this.state = state;\n }\n\n /**\n * Sync stored features state\n */\n sync() {\n let state = this.state;\n let tf = this.tf;\n\n this._syncFilters();\n\n if (this.persistPageNumber) {\n let pageNumber = state[this.pageNbKey];\n this.emitter.emit('change-page', tf, pageNumber);\n }\n\n if (this.persistPageLength) {\n let pageLength = state[this.pageLengthKey];\n this.emitter.emit('change-page-results', tf, pageLength);\n }\n\n this._syncSort();\n this._syncColsVisibility();\n this._syncFiltersVisibility();\n }\n\n /**\n * Override current state with passed one and sync features\n *\n * @param {Object} state State object\n */\n overrideAndSync(state) {\n // To prevent state to react to features changes, state is temporarily\n // disabled\n this.disable();\n // State is overriden with passed state object\n this.override(state);\n // New hash state is applied to features\n this.sync();\n // State is re-enabled\n this.enable();\n }\n\n /**\n * Sync filters with stored values and filter table\n *\n * @private\n */\n _syncFilters() {\n if (!this.persistFilters) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n let val = state[key].flt;\n tf.setFilterValue(colIdx, val);\n }\n });\n\n tf.filter();\n }\n\n /**\n * Sync sorted column with stored sorting information and sort table\n *\n * @private\n */\n _syncSort() {\n if (!this.persistSort) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].sort)) {\n let sort = state[key].sort;\n this.emitter.emit('sort', tf, colIdx, sort.descending);\n }\n }\n });\n }\n\n /**\n * Sync hidden columns with stored information\n *\n * @private\n */\n _syncColsVisibility() {\n if (!this.persistColsVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let hiddenCols = [];\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].hidden)) {\n hiddenCols.push(colIdx);\n }\n }\n });\n\n hiddenCols.forEach((colIdx) => {\n this.emitter.emit('hide-column', tf, colIdx);\n });\n }\n\n /**\n * Sync filters visibility with stored information\n *\n * @private\n */\n _syncFiltersVisibility() {\n if (!this.persistFiltersVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let filtersVisibility = state[this.filtersVisKey];\n\n this.filtersVisibility = filtersVisibility;\n this.emitter.emit('show-filters', tf, filtersVisibility);\n }\n\n /**\n * Destroy State instance\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n this.state = {};\n\n this.emitter.off(['after-filtering'], () => this.update());\n this.emitter.off(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.off(['after-page-length-change'],\n (tf, index) => this.updatePageLength(index));\n this.emitter.off(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.off(['sort-initialized'], () => this._syncSort());\n this.emitter.off(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.off(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.off(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.off(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash.destroy();\n this.hash = null;\n }\n\n if (this.enableStorage) {\n this.storage.destroy();\n this.storage = null;\n }\n\n this.initialized = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/state.js","import {Feature} from '../feature';\r\nimport {root} from '../root';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-populating-filter',\r\n 'after-page-change',\r\n 'after-clearing-filters',\r\n 'after-page-length-change',\r\n 'after-reset-page',\r\n 'after-reset-page-length',\r\n 'after-loading-extensions',\r\n 'after-loading-themes'\r\n];\r\n\r\n/**\r\n * Status bar UI component\r\n * @export\r\n * @class StatusBar\r\n * @extends {Feature}\r\n */\r\nexport class StatusBar extends Feature {\r\n\r\n /**\r\n * Creates an instance of StatusBar\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'statusBar');\r\n\r\n // Configuration object\r\n let f = this.config.status_bar || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Message container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.msgContainer = null;\r\n\r\n /**\r\n * Label container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.labelContainer = null;\r\n\r\n /**\r\n * Text preceding status message\r\n * @type {String}\r\n */\r\n this.text = f.text || '';\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'status';\r\n\r\n /**\r\n * Message visibility duration in milliseconds\r\n * @type {Number}\r\n * @private\r\n */\r\n this.delay = 250;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShowMsg = isFn(f.on_before_show_msg) ?\r\n f.on_before_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShowMsg = isFn(f.on_after_show_msg) ?\r\n f.on_after_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Message appearing upon filtering\r\n * @type {String}\r\n */\r\n this.msgFilter = f.msg_filter || 'Filtering data...';\r\n\r\n /**\r\n * Message appearing when a drop-down filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulate = f.msg_populate || 'Populating filter...';\r\n\r\n /**\r\n * Message appearing when a checklist filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulateCheckList = f.msg_populate_checklist ||\r\n 'Populating list...';\r\n\r\n /**\r\n * Message appearing when a pagination page is changed\r\n * @type {String}\r\n */\r\n this.msgChangePage = f.msg_change_page || 'Collecting paging data...';\r\n\r\n /**\r\n * Message appearing when filters are cleared\r\n * @type {String}\r\n */\r\n this.msgClear = f.msg_clear || 'Clearing filters...';\r\n\r\n /**\r\n * Message appearing when the page length is changed\r\n * @type {String}\r\n */\r\n this.msgChangeResults = f.msg_change_results ||\r\n 'Changing results per page...';\r\n\r\n /**\r\n * Message appearing when the page is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPage = f.msg_reset_page || 'Re-setting page...';\r\n\r\n /**\r\n * Message appearing when the page length is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPageLength = f.msg_reset_page_length ||\r\n 'Re-setting page length...';\r\n\r\n /**\r\n * Message appearing upon column sorting\r\n * @type {String}\r\n */\r\n this.msgSort = f.msg_sort || 'Sorting data...';\r\n\r\n /**\r\n * Message appearing when extensions are loading\r\n * @type {String}\r\n */\r\n this.msgLoadExtensions = f.msg_load_extensions ||\r\n 'Loading extensions...';\r\n\r\n /**\r\n * Message appearing when themes are loading\r\n * @type {String}\r\n */\r\n this.msgLoadThemes = f.msg_load_themes || 'Loading theme(s)...';\r\n }\r\n\r\n /**\r\n * Initializes StatusBar instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n //status bar container\r\n let statusDiv = createElm('div');\r\n statusDiv.className = this.cssClass;\r\n\r\n //status bar label\r\n let statusSpan = createElm('span');\r\n //preceding text\r\n let statusSpanText = createElm('span');\r\n statusSpanText.appendChild(createText(this.text));\r\n\r\n // target element container\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = (!this.targetId) ? tf.lDiv : elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n statusDiv.appendChild(statusSpanText);\r\n statusDiv.appendChild(statusSpan);\r\n targetEl.appendChild(statusDiv);\r\n } else {\r\n // custom container, no need to append statusDiv\r\n targetEl.appendChild(statusSpanText);\r\n targetEl.appendChild(statusSpan);\r\n }\r\n\r\n this.container = statusDiv;\r\n this.msgContainer = statusSpan;\r\n this.labelContainer = statusSpanText;\r\n\r\n // Subscribe to events\r\n emitter.on(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.on(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.on(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.on(['before-clearing-filters'], () =>\r\n this.message(this.msgClear));\r\n emitter.on(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.on(['before-reset-page'],\r\n () => this.message(this.msgResetPage));\r\n emitter.on(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.on(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.on(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.on(EVENTS, () => this.message(''));\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Display status message\r\n * @param {String} [t=''] Message to be displayed\r\n */\r\n message(t = '') {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.onBeforeShowMsg(this.tf, t);\r\n\r\n let d = t === '' ? this.delay : 1;\r\n root.setTimeout(() => {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.msgContainer.innerHTML = t;\r\n\r\n this.onAfterShowMsg(this.tf, t);\r\n }, d);\r\n }\r\n\r\n /**\r\n * Destroy StatusBar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n this.container.innerHTML = '';\r\n if (!this.targetId) {\r\n removeElm(this.container);\r\n }\r\n this.labelContainer = null;\r\n this.msgContainer = null;\r\n this.container = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.off(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.off(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.off(['before-clearing-filters'],\r\n () => this.message(this.msgClear));\r\n emitter.off(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.off(['before-reset-page'], () =>\r\n this.message(this.msgResetPage));\r\n emitter.off(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.off(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.off(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.off(EVENTS, () => this.message(''));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/statusBar.js","\r\nimport Cookie from '../cookie';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst localStorage = root.localStorage;\r\nconst location = root.location;\r\n\r\n/**\r\n * Checks if browser has Storage feature\r\n */\r\nexport const hasStorage = () => {\r\n return 'Storage' in root;\r\n};\r\n\r\n/**\r\n * Stores the features state in browser's local storage or cookie\r\n *\r\n * @export\r\n * @class Storage\r\n */\r\nexport class Storage {\r\n\r\n /**\r\n * Creates an instance of Storage\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n\r\n /**\r\n * State object\r\n * @type {State}\r\n * @private\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * TableFilter object\r\n * @type {TableFilter}\r\n * @private\r\n */\r\n this.tf = state.tf;\r\n\r\n /**\r\n * Persist with local storage\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\r\n\r\n /**\r\n * Persist with cookie\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\r\n\r\n /**\r\n * Emitter object\r\n * @type {Emitter}\r\n * @private\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Cookie duration in hours from state object\r\n * @type {Number}\r\n * @private\r\n */\r\n this.duration = state.cookieDuration;\r\n }\r\n\r\n\r\n /**\r\n * Initializes the Storage object\r\n */\r\n init() {\r\n this.emitter.on(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.on(['initialized'], () => this.sync());\r\n }\r\n\r\n /**\r\n * Persists the features state on state changes\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n save(state) {\r\n if (this.enableLocalStorage) {\r\n localStorage[this.getKey()] = JSON.stringify(state);\r\n } else {\r\n Cookie.write(this.getKey(), JSON.stringify(state), this.duration);\r\n }\r\n }\r\n\r\n /**\r\n * Turns stored string into a State JSON object\r\n *\r\n * @returns {Object} JSON object\r\n */\r\n retrieve() {\r\n let state = null;\r\n if (this.enableLocalStorage) {\r\n state = localStorage[this.getKey()];\r\n } else {\r\n state = Cookie.read(this.getKey());\r\n }\r\n\r\n if (!state) {\r\n return null;\r\n }\r\n return JSON.parse(state);\r\n }\r\n\r\n /**\r\n * Removes persisted state from storage\r\n */\r\n remove() {\r\n if (this.enableLocalStorage) {\r\n localStorage.removeItem(this.getKey());\r\n } else {\r\n Cookie.remove(this.getKey());\r\n }\r\n }\r\n\r\n /**\r\n * Applies persisted state to features\r\n */\r\n sync() {\r\n let state = this.retrieve();\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Returns the storage key\r\n *\r\n * @returns {String} Key\r\n */\r\n getKey() {\r\n return JSON.stringify({\r\n key: `${this.tf.prfxTf}_${this.tf.id}`,\r\n path: location.pathname\r\n });\r\n }\r\n\r\n /**\r\n * Release Storage event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.off(['initialized'], () => this.sync());\r\n\r\n this.remove();\r\n\r\n this.state = null;\r\n this.emitter = null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/storage.js","import {addEvt, cancelEvt, stopEvt, targetEvt, keyCode} from './event';\r\nimport {\r\n addClass, createElm, createOpt, elm, getText, getFirstTextNode,\r\n removeClass, removeElm, tag\r\n} from './dom';\r\nimport {contains, matchCase, rgxEsc, trim} from './string';\r\nimport {isEmpty as isEmptyString} from './string';\r\nimport {\r\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN\r\n} from './types';\r\nimport {parse as parseNb} from './number';\r\n\r\nimport {root} from './root';\r\nimport {Emitter} from './emitter';\r\nimport {Dropdown} from './modules/dropdown';\r\nimport {CheckList} from './modules/checkList';\r\n\r\nimport {\r\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\r\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\r\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER,\r\n FEATURES\r\n} from './const';\r\n\r\nlet doc = root.document;\r\n\r\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\r\nexport class TableFilter {\r\n\r\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\r\n constructor(...args) {\r\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Current version\r\n * @type {String}\r\n */\r\n this.version = '0.5.23';\r\n\r\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\r\n this.year = new Date().getFullYear();\r\n\r\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.tbl = null;\r\n\r\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\r\n this.refRow = null;\r\n\r\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.headersRow = null;\r\n\r\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.cfg = {};\r\n\r\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbFilterableRows = 0;\r\n\r\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbCells = null;\r\n\r\n /** @private */\r\n this.initialized = false;\r\n\r\n let startRow;\r\n\r\n // TODO: use for-of\r\n args.forEach((arg) => {\r\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\r\n this.tbl = arg;\r\n this.id = arg.id || `tf_${new Date().getTime()}_`;\r\n } else if (isString(arg)) {\r\n this.id = arg;\r\n this.tbl = elm(arg);\r\n } else if (isNumber(arg)) {\r\n startRow = arg;\r\n } else if (isObj(arg)) {\r\n this.cfg = arg;\r\n }\r\n });\r\n\r\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n DOM element not found.`);\r\n }\r\n\r\n if (this.getRowsNb() === 0) {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n requires at least 1 row.`);\r\n }\r\n\r\n // configuration object\r\n let f = this.cfg;\r\n\r\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = new Emitter();\r\n\r\n //Start row et cols nb\r\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\r\n\r\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\r\n this.basePath = f.base_path || 'tablefilter/';\r\n\r\n /*** filters' grid properties ***/\r\n\r\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\r\n this.fltGrid = f.grid === false ? false : true;\r\n\r\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\r\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = isNaN(f.filters_row_index) ?\r\n 0 : f.filters_row_index;\r\n\r\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\r\n this.headersRow = isNaN(f.headers_row_index) ?\r\n (this.filtersRowIndex === 0 ? 1 : 0) : f.headers_row_index;\r\n\r\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\r\n this.fltCellTag = isString(f.filters_cell_tag) ?\r\n f.filters_cell_tag : CELL_TAG;\r\n\r\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIds = [];\r\n\r\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\r\n this.validRowsIndex = [];\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.infDiv = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lDiv = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rDiv = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.mDiv = null;\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.infDivCssClass = f.inf_div_css_class || 'inf';\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lDivCssClass = f.left_div_css_class || 'ldiv';\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rDivCssClass = f.right_div_css_class || 'rdiv';\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.mDivCssClass = f.middle_div_css_class || 'mdiv';\r\n\r\n /*** filters' grid appearance ***/\r\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\r\n this.stylePath = f.style_path || this.basePath + 'style/';\r\n\r\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\r\n this.stylesheet = f.stylesheet || this.stylePath + 'tablefilter.css';\r\n\r\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.stylesheetId = this.id + '_style';\r\n\r\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\r\n this.fltsRowCssClass = f.flts_row_css_class || 'fltrow';\r\n\r\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\r\n this.enableIcons = f.enable_icons === false ? false : true;\r\n\r\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\r\n this.alternateRows = Boolean(f.alternate_rows);\r\n\r\n /**\r\n * Indicate whether columns widths are set\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasColWidths = isArray(f.col_widths);\r\n\r\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\r\n this.colWidths = this.hasColWidths ? f.col_widths : [];\r\n\r\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\r\n this.fltCssClass = f.flt_css_class || 'flt';\r\n\r\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\r\n this.fltMultiCssClass = f.flt_multi_css_class || 'flt_multi';\r\n\r\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\r\n this.fltSmallCssClass = f.flt_small_css_class || 'flt_s';\r\n\r\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\r\n this.singleFltCssClass = f.single_flt_css_class || 'single_flt';\r\n\r\n /*** filters' grid behaviours ***/\r\n\r\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\r\n this.enterKey = f.enter_key === false ? false : true;\r\n\r\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\r\n this.onBeforeFilter = isFn(f.on_before_filter) ?\r\n f.on_before_filter : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\r\n this.onAfterFilter = isFn(f.on_after_filter) ?\r\n f.on_after_filter : EMPTY_FN;\r\n\r\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\r\n this.caseSensitive = Boolean(f.case_sensitive);\r\n\r\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\r\n\r\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\r\n this.exactMatchByCol = this.hasExactMatchByCol ?\r\n f.columns_exact_match : [];\r\n\r\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\r\n this.exactMatch = Boolean(f.exact_match);\r\n\r\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.ignoreDiacritics = f.ignore_diacritics;\r\n\r\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\r\n this.linkedFilters = Boolean(f.linked_filters);\r\n\r\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\r\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\r\n\r\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.activeFilterId = null;\r\n\r\n /**\r\n * Enable/disable always visible rows, excluded from filtering\r\n * @type {Boolean}\r\n */\r\n this.hasVisibleRows = Boolean(f.rows_always_visible);\r\n\r\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\r\n this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : [];\r\n\r\n /**\r\n * Enable/disable external filters generation\r\n * @type {Boolean}\r\n */\r\n this.isExternalFlt = Boolean(f.external_flt_grid);\r\n\r\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\r\n this.externalFltTgtIds = f.external_flt_grid_ids || [];\r\n\r\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\r\n this.onFiltersLoaded = isFn(f.on_filters_loaded) ?\r\n f.on_filters_loaded : EMPTY_FN;\r\n\r\n /**\r\n * Enable/disable single filter filtering all columns\r\n * @type {Boolean}\r\n */\r\n this.singleSearchFlt = Boolean(f.single_filter);\r\n\r\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\r\n this.onRowValidated = isFn(f.on_row_validated) ?\r\n f.on_row_validated : EMPTY_FN;\r\n\r\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\r\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\r\n isArray(f.cell_parser.cols) ?\r\n f.cell_parser : { cols: [], parse: EMPTY_FN };\r\n\r\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\r\n this.watermark = f.watermark || '';\r\n\r\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isWatermarkArray = isArray(this.watermark);\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.toolBarTgtId = f.toolbar_target_id || null;\r\n\r\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\r\n this.help = isUndef(f.help_instructions) ? undefined :\r\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\r\n\r\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean}\r\n */\r\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\r\n\r\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\r\n this.markActiveColumns = isObj(f.mark_active_columns) ||\r\n Boolean(f.mark_active_columns);\r\n\r\n /*** select filter's customisation and behaviours ***/\r\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\r\n this.clearFilterText = f.clear_filter_text || 'Clear';\r\n\r\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\r\n this.enableEmptyOption = Boolean(f.enable_empty_option);\r\n\r\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.emptyText = f.empty_text || '(Empty)';\r\n\r\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\r\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\r\n\r\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\r\n\r\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\r\n this.onSlcChange = f.on_change === false ? false : true;\r\n\r\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.sortSlc = isUndef(f.sort_select) ? true :\r\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumAsc = Boolean(f.sort_num_asc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumDesc = Boolean(f.sort_num_desc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\r\n\r\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\r\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\r\n\r\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\r\n this.hasCustomOptions = isObj(f.custom_options);\r\n\r\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\r\n this.customOptions = f.custom_options;\r\n\r\n /*** Filter operators ***/\r\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\r\n this.rgxOperator = f.regexp_operator || 'rgx:';\r\n\r\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\r\n this.emOperator = f.empty_operator || '[empty]';\r\n\r\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\r\n this.nmOperator = f.nonempty_operator || '[nonempty]';\r\n\r\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\r\n this.orOperator = f.or_operator || '||';\r\n\r\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\r\n this.anOperator = f.and_operator || '&&';\r\n\r\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\r\n this.grOperator = f.greater_operator || '>';\r\n\r\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\r\n this.lwOperator = f.lower_operator || '<';\r\n\r\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\r\n this.leOperator = f.lower_equal_operator || '<=';\r\n\r\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\r\n this.geOperator = f.greater_equal_operator || '>=';\r\n\r\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.dfOperator = f.different_operator || '!';\r\n\r\n /**\r\n * Like operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.lkOperator = f.like_operator || '*';\r\n\r\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.eqOperator = f.equal_operator || '=';\r\n\r\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.stOperator = f.start_with_operator || '{';\r\n\r\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.enOperator = f.end_with_operator || '}';\r\n\r\n // this.curExp = f.cur_exp || '^[¥£€$]';\r\n\r\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\r\n this.separator = f.separator || ',';\r\n\r\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\r\n\r\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\r\n\r\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.loader = isObj(f.loader) || Boolean(f.loader);\r\n\r\n /*** validation - reset buttons/links ***/\r\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\r\n this.displayBtn = Boolean(f.btn);\r\n\r\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || (!this.enableIcons ? 'Go' : '');\r\n\r\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class ||\r\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon');\r\n\r\n /**\r\n * Enable clear button\r\n * @type {Boolean}\r\n */\r\n this.btnReset = Boolean(f.btn_reset);\r\n\r\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\r\n this.onBeforeReset = isFn(f.on_before_reset) ?\r\n f.on_before_reset : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\r\n this.onAfterReset = isFn(f.on_after_reset) ?\r\n f.on_after_reset : EMPTY_FN;\r\n\r\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\r\n this.paging = isObj(f.paging) || Boolean(f.paging);\r\n\r\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbHiddenRows = 0;\r\n\r\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Boolean}\r\n */\r\n this.autoFilter = Boolean(f.auto_filter);\r\n\r\n /**\r\n * Auto-filter delay in msecs\r\n * @type {Number}\r\n */\r\n this.autoFilterDelay = !isNaN(f.auto_filter_delay) ?\r\n f.auto_filter_delay : AUTO_FILTER_DELAY;\r\n\r\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isUserTyping = null;\r\n\r\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.autoFilterTimer = null;\r\n\r\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\r\n this.highlightKeywords = Boolean(f.highlight_keywords);\r\n\r\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\r\n this.noResults = isObj(f.no_results_message) ||\r\n Boolean(f.no_results_message);\r\n\r\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\r\n this.state = isObj(f.state) || Boolean(f.state);\r\n\r\n /*** data types ***/\r\n\r\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.dateType = true;\r\n\r\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\r\n this.locale = f.locale || 'en';\r\n\r\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\r\n this.thousandsSeparator = f.thousands_separator || ',';\r\n\r\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\r\n this.decimalSeparator = f.decimal_separator || '.';\r\n\r\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\r\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\r\n\r\n /*** ids prefixes ***/\r\n /**\r\n * Main prefix\r\n * @private\r\n */\r\n this.prfxTf = 'TF';\r\n\r\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\r\n this.prfxFlt = 'flt';\r\n\r\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\r\n this.prfxValButton = 'btn';\r\n\r\n /**\r\n * Toolbar container ID prefix\r\n * @private\r\n */\r\n this.prfxInfDiv = 'inf_';\r\n\r\n /**\r\n * Toolbar left element ID prefix\r\n * @private\r\n */\r\n this.prfxLDiv = 'ldiv_';\r\n\r\n /**\r\n * Toolbar right element ID prefix\r\n * @private\r\n */\r\n this.prfxRDiv = 'rdiv_';\r\n\r\n /**\r\n * Toolbar middle element ID prefix\r\n * @private\r\n */\r\n this.prfxMDiv = 'mdiv_';\r\n\r\n /**\r\n * Responsive Css class\r\n * @private\r\n */\r\n this.prfxResponsive = 'resp';\r\n\r\n /*** extensions ***/\r\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n * @private\r\n */\r\n this.extensions = f.extensions;\r\n\r\n /**\r\n * Determine whether extensions are loaded\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExtensions = isArray(this.extensions);\r\n\r\n /*** themes ***/\r\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\r\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\r\n\r\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\r\n\r\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themes = f.themes || [];\r\n\r\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themesPath = f.themes_path || this.stylePath + 'themes/';\r\n\r\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\r\n this.responsive = Boolean(f.responsive);\r\n\r\n /**\r\n * Features registry\r\n * @private\r\n */\r\n this.Mod = {};\r\n\r\n /**\r\n * Extensions registry\r\n * @private\r\n */\r\n this.ExtRegistry = {};\r\n\r\n //conditionally instantiate required features\r\n this.instantiateFeatures(\r\n Object.keys(FEATURES).map((item) => FEATURES[item])\r\n );\r\n\r\n //load styles if necessary\r\n this.import(this.stylesheetId, this.stylesheet, null, 'link');\r\n }\r\n\r\n /**\r\n * Initialise features and layout\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.nbCells = this.getCellsNb(this.refRow);\r\n let Mod = this.Mod;\r\n let n = this.singleSearchFlt ? 1 : this.nbCells;\r\n let inpclass;\r\n\r\n //loads theme\r\n this.loadThemes();\r\n\r\n const { dateType, help, state, markActiveColumns, gridLayout, loader,\r\n highlightKeyword, popupFilter, rowsCounter, statusBar, clearButton,\r\n alternateRows, noResults, paging } = FEATURES;\r\n\r\n //explicitly initialise features in given order\r\n this.initFeatures([\r\n dateType,\r\n help,\r\n state,\r\n markActiveColumns,\r\n gridLayout,\r\n loader,\r\n highlightKeyword,\r\n popupFilter\r\n ]);\r\n\r\n //filters grid is not generated\r\n if (!this.fltGrid) {\r\n this._initNoFilters();\r\n } else {\r\n let fltrow = this._insertFiltersRow();\r\n\r\n this.nbFilterableRows = this.getRowsNb();\r\n\r\n // Generate filters\r\n for (let i = 0; i < n; i++) {\r\n this.emitter.emit('before-filter-init', this, i);\r\n\r\n let fltcell = createElm(this.fltCellTag),\r\n col = this.getFilterType(i);\r\n\r\n if (this.singleSearchFlt) {\r\n fltcell.colSpan = this.nbCells;\r\n }\r\n if (!this.gridLayout) {\r\n fltrow.appendChild(fltcell);\r\n }\r\n inpclass = (i === n - 1 && this.displayBtn) ?\r\n this.fltSmallCssClass : this.fltCssClass;\r\n\r\n //only 1 input for single search\r\n if (this.singleSearchFlt) {\r\n col = INPUT;\r\n inpclass = this.singleFltCssClass;\r\n }\r\n\r\n //drop-down filters\r\n if (col === SELECT || col === MULTIPLE) {\r\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\r\n Mod.dropdown.init(i, this.isExternalFlt, fltcell);\r\n }\r\n // checklist\r\n else if (col === CHECKLIST) {\r\n Mod.checkList = Mod.checkList || new CheckList(this);\r\n Mod.checkList.init(i, this.isExternalFlt, fltcell);\r\n } else {\r\n this._buildInputFilter(i, inpclass, fltcell);\r\n }\r\n\r\n // this adds submit button\r\n if (i === n - 1 && this.displayBtn) {\r\n this._buildSubmitButton(i, fltcell);\r\n }\r\n\r\n this.emitter.emit('after-filter-init', this, i);\r\n }\r\n\r\n this.emitter.on(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n }//if this.fltGrid\r\n\r\n /* Features */\r\n if (this.hasVisibleRows) {\r\n this.emitter.on(['after-filtering'],\r\n () => this.enforceVisibility());\r\n this.enforceVisibility();\r\n }\r\n\r\n this.initFeatures([\r\n rowsCounter,\r\n statusBar,\r\n clearButton,\r\n alternateRows,\r\n noResults,\r\n paging\r\n ]);\r\n\r\n if (this.hasColWidths && !this.gridLayout) {\r\n this.setColWidths();\r\n }\r\n\r\n //TF css class is added to table\r\n if (!this.gridLayout) {\r\n addClass(this.dom(), this.prfxTf);\r\n if (this.responsive) {\r\n addClass(this.dom(), this.prfxResponsive);\r\n }\r\n }\r\n\r\n /* Load extensions */\r\n this.initExtensions();\r\n\r\n // Subscribe to events\r\n if (this.linkedFilters) {\r\n this.emitter.on(['after-filtering'], () => this.linkFilters());\r\n }\r\n\r\n this.initialized = true;\r\n\r\n this.onFiltersLoaded(this);\r\n\r\n this.emitter.emit('initialized', this);\r\n }\r\n\r\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\r\n detectKey(evt) {\r\n if (!this.enterKey) {\r\n return;\r\n }\r\n if (evt) {\r\n let key = keyCode(evt);\r\n if (key === ENTER_KEY) {\r\n this.filter();\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n } else {\r\n this.isUserTyping = true;\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\r\n onKeyUp(evt) {\r\n if (!this.autoFilter) {\r\n return;\r\n }\r\n let key = keyCode(evt);\r\n this.isUserTyping = false;\r\n\r\n function filter() {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n if (!this.isUserTyping) {\r\n this.filter();\r\n this.isUserTyping = null;\r\n }\r\n }\r\n\r\n if (key !== ENTER_KEY && key !== TAB_KEY && key !== ESC_KEY &&\r\n key !== UP_ARROW_KEY && key !== DOWN_ARROW_KEY) {\r\n if (this.autoFilterTimer === null) {\r\n this.autoFilterTimer = root.setInterval(filter.bind(this),\r\n this.autoFilterDelay);\r\n }\r\n } else {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\r\n onKeyDown() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = true;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\r\n onInpFocus(evt) {\r\n let elm = targetEvt(evt);\r\n this.emitter.emit('filter-focus', this, elm);\r\n }\r\n\r\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\r\n onInpBlur() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = false;\r\n root.clearInterval(this.autoFilterTimer);\r\n }\r\n this.emitter.emit('filter-blur', this);\r\n }\r\n\r\n /**\r\n * Insert filters row at initialization\r\n */\r\n _insertFiltersRow() {\r\n // TODO: prevent filters row generation for popup filters too,\r\n // to reduce and simplify headers row index adjusting across lib modules\r\n // (GridLayout, PopupFilter etc)\r\n if (this.gridLayout) {\r\n return;\r\n }\r\n let fltrow;\r\n\r\n let thead = tag(this.dom(), 'thead');\r\n if (thead.length > 0) {\r\n fltrow = thead[0].insertRow(this.filtersRowIndex);\r\n } else {\r\n fltrow = this.dom().insertRow(this.filtersRowIndex);\r\n }\r\n\r\n fltrow.className = this.fltsRowCssClass;\r\n\r\n if (this.isExternalFlt) {\r\n fltrow.style.display = NONE;\r\n }\r\n\r\n this.emitter.emit('filters-row-inserted', this, fltrow);\r\n return fltrow;\r\n }\r\n\r\n /**\r\n * Initialize filtersless table\r\n */\r\n _initNoFilters() {\r\n if (this.fltGrid) {\r\n return;\r\n }\r\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\r\n this.nbFilterableRows = this.getRowsNb();\r\n }\r\n\r\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildInputFilter(colIndex, cssClass, container) {\r\n let col = this.getFilterType(colIndex);\r\n let externalFltTgtId = this.isExternalFlt ?\r\n this.externalFltTgtIds[colIndex] : null;\r\n let inpType = col === INPUT ? 'text' : 'hidden';\r\n let inp = createElm(INPUT,\r\n ['id', this.buildFilterId(colIndex)],\r\n ['type', inpType], ['ct', colIndex]);\r\n\r\n if (inpType !== 'hidden' && this.watermark) {\r\n inp.setAttribute('placeholder',\r\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\r\n this.watermark\r\n );\r\n }\r\n inp.className = cssClass || this.fltCssClass;\r\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(inp);\r\n } else {\r\n container.appendChild(inp);\r\n }\r\n\r\n this.fltIds.push(inp.id);\r\n\r\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\r\n addEvt(inp, 'keydown', () => this.onKeyDown());\r\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\r\n addEvt(inp, 'blur', () => this.onInpBlur());\r\n }\r\n\r\n /**\r\n * Build submit button\r\n * @param {Number} colIndex Column index\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildSubmitButton(colIndex, container) {\r\n let externalFltTgtId = this.isExternalFlt ?\r\n this.externalFltTgtIds[colIndex] : null;\r\n let btn = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnText]\r\n );\r\n btn.className = this.btnCssClass;\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(btn);\r\n } else {\r\n container.appendChild(btn);\r\n }\r\n\r\n addEvt(btn, 'click', () => this.filter());\r\n }\r\n\r\n /**\r\n * Istantiate the collection of features required by the\r\n * configuration and add them to the features registry. A feature is\r\n * described by a `class` and `name` fields and and optional `property`\r\n * field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n instantiateFeatures(features = []) {\r\n features.forEach((feature) => {\r\n // TODO: remove the property field.\r\n // Due to naming convention inconsistencies, a `property`\r\n // field is added to allow a conditional instanciation based\r\n // on that property on TableFilter, if supplied.\r\n feature.property = feature.property || feature.name;\r\n if (this[feature.property] === true || feature.enforce === true) {\r\n let {class: Cls, name} = feature;\r\n\r\n this.Mod[name] = this.Mod[name] || new Cls(this);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initialise the passed features collection. A feature is described by a\r\n * `class` and `name` fields and and optional `property` field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n initFeatures(features = []) {\r\n features.forEach((feature) => {\r\n let {property, name} = feature;\r\n if (this[property] === true && this.Mod[name]) {\r\n this.Mod[name].init();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\r\n feature(name) {\r\n return this.Mod[name];\r\n }\r\n\r\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\r\n initExtensions() {\r\n if (!this.hasExtensions) {\r\n return;\r\n }\r\n\r\n let exts = this.extensions;\r\n // Set config's publicPath dynamically for Webpack...\r\n __webpack_public_path__ = this.basePath;\r\n\r\n this.emitter.emit('before-loading-extensions', this);\r\n for (let i = 0, len = exts.length; i < len; i++) {\r\n let ext = exts[i];\r\n this.loadExtension(ext);\r\n }\r\n this.emitter.emit('after-loading-extensions', this);\r\n }\r\n\r\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\r\n loadExtension(ext) {\r\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\r\n return;\r\n }\r\n\r\n let name = ext.name;\r\n let path = ext.path;\r\n let modulePath;\r\n\r\n if (name && path) {\r\n modulePath = ext.path + name;\r\n } else {\r\n name = name.replace('.js', '');\r\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\r\n }\r\n\r\n // Require pattern for Webpack\r\n require(['./' + modulePath], (mod) => {\r\n /* eslint-disable */\r\n let inst = new mod.default(this, ext);\r\n /* eslint-enable */\r\n inst.init();\r\n this.ExtRegistry[name] = inst;\r\n });\r\n }\r\n\r\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\r\n extension(name) {\r\n return this.ExtRegistry[name];\r\n }\r\n\r\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\r\n hasExtension(name) {\r\n return !isEmpty(this.ExtRegistry[name]);\r\n }\r\n\r\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\r\n registerExtension(inst, name) {\r\n this.ExtRegistry[name] = inst;\r\n }\r\n\r\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\r\n destroyExtensions() {\r\n let reg = this.ExtRegistry;\r\n\r\n Object.keys(reg).forEach((key) => {\r\n reg[key].destroy();\r\n reg[key] = undefined;\r\n });\r\n }\r\n\r\n /**\r\n * Load themes defined in the configuration object\r\n */\r\n loadThemes() {\r\n if (!this.hasThemes) {\r\n return;\r\n }\r\n\r\n let themes = this.themes;\r\n this.emitter.emit('before-loading-themes', this);\r\n\r\n //Default theme config\r\n if (this.enableDefaultTheme) {\r\n let defaultTheme = { name: 'default' };\r\n this.themes.push(defaultTheme);\r\n }\r\n if (isArray(themes)) {\r\n for (let i = 0, len = themes.length; i < len; i++) {\r\n let theme = themes[i];\r\n let name = theme.name;\r\n let path = theme.path;\r\n let styleId = this.prfxTf + name;\r\n if (name && !path) {\r\n path = this.themesPath + name + '/' + name + '.css';\r\n }\r\n else if (!name && theme.path) {\r\n name = 'theme{0}'.replace('{0}', i);\r\n }\r\n\r\n if (!this.isImported(path, 'link')) {\r\n this.import(styleId, path, null, 'link');\r\n }\r\n }\r\n }\r\n\r\n // Enable loader indicator\r\n this.loader = true;\r\n\r\n this.emitter.emit('after-loading-themes', this);\r\n }\r\n\r\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\r\n getStylesheet(name = 'default') {\r\n return elm(this.prfxTf + name);\r\n }\r\n\r\n /**\r\n * Destroy filter grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n if (this.isExternalFlt && !this.popupFilters) {\r\n this.removeExternalFlts();\r\n }\r\n\r\n this.removeToolbar();\r\n\r\n if (this.hasExtensions) {\r\n this.destroyExtensions();\r\n }\r\n\r\n this.validateAllRows();\r\n\r\n // broadcast destroy event modules and extensions are subscribed to\r\n emitter.emit('destroy', this);\r\n\r\n if (this.fltGrid && !this.gridLayout) {\r\n this.dom().deleteRow(this.filtersRowIndex);\r\n }\r\n\r\n // unsubscribe to events\r\n if (this.hasVisibleRows) {\r\n emitter.off(['after-filtering'], () => this.enforceVisibility());\r\n }\r\n if (this.linkedFilters) {\r\n emitter.off(['after-filtering'], () => this.linkFilters());\r\n }\r\n this.emitter.off(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n removeClass(this.dom(), this.prfxTf);\r\n removeClass(this.dom(), this.prfxResponsive);\r\n\r\n this.nbHiddenRows = 0;\r\n this.validRowsIndex = [];\r\n this.fltIds = [];\r\n this.initialized = false;\r\n }\r\n\r\n /**\r\n * Generate container element for paging, reset button, rows counter etc.\r\n */\r\n setToolbar() {\r\n if (this.infDiv) {\r\n return;\r\n }\r\n\r\n /*** container div ***/\r\n let infDiv = createElm('div');\r\n infDiv.className = this.infDivCssClass;\r\n\r\n //custom container\r\n if (this.toolBarTgtId) {\r\n elm(this.toolBarTgtId).appendChild(infDiv);\r\n }\r\n //grid-layout\r\n else if (this.gridLayout) {\r\n let gridLayout = this.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(infDiv);\r\n infDiv.className = gridLayout.infDivCssClass;\r\n }\r\n //default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(infDiv);\r\n this.dom().insertBefore(cont, this.dom().firstChild);\r\n }\r\n this.infDiv = infDiv;\r\n\r\n /*** left div containing rows # displayer ***/\r\n let lDiv = createElm('div');\r\n lDiv.className = this.lDivCssClass;\r\n infDiv.appendChild(lDiv);\r\n this.lDiv = lDiv;\r\n\r\n /*** right div containing reset button\r\n + nb results per page select ***/\r\n let rDiv = createElm('div');\r\n rDiv.className = this.rDivCssClass;\r\n infDiv.appendChild(rDiv);\r\n this.rDiv = rDiv;\r\n\r\n /*** mid div containing paging elements ***/\r\n let mDiv = createElm('div');\r\n mDiv.className = this.mDivCssClass;\r\n infDiv.appendChild(mDiv);\r\n this.mDiv = mDiv;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(this.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n this.Mod.help.enable();\r\n this.emitter.emit('init-help', this);\r\n }\r\n }\r\n\r\n /**\r\n * Remove toolbar container element\r\n */\r\n removeToolbar() {\r\n if (!this.infDiv) {\r\n return;\r\n }\r\n removeElm(this.infDiv);\r\n this.infDiv = null;\r\n\r\n let tbl = this.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (elm) => removeElm(elm));\r\n }\r\n\r\n /**\r\n * Remove all the external column filters\r\n */\r\n removeExternalFlts() {\r\n if (!this.isExternalFlt) {\r\n return;\r\n }\r\n let ids = this.externalFltTgtIds,\r\n len = ids.length;\r\n for (let ct = 0; ct < len; ct++) {\r\n let externalFltTgtId = ids[ct],\r\n externalFlt = elm(externalFltTgtId);\r\n if (externalFlt) {\r\n externalFlt.innerHTML = '';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\r\n isCustomOptions(colIndex) {\r\n return this.hasCustomOptions &&\r\n this.customOptions.cols.indexOf(colIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\r\n getCustomOptions(colIndex) {\r\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\r\n return;\r\n }\r\n\r\n let customOptions = this.customOptions;\r\n let cols = customOptions.cols;\r\n let optTxt = [], optArray = [];\r\n let index = cols.indexOf(colIndex);\r\n let slcValues = customOptions.values[index];\r\n let slcTexts = customOptions.texts[index];\r\n let slcSort = customOptions.sorts[index];\r\n\r\n for (let r = 0, len = slcValues.length; r < len; r++) {\r\n optArray.push(slcValues[r]);\r\n if (slcTexts[r]) {\r\n optTxt.push(slcTexts[r]);\r\n } else {\r\n optTxt.push(slcValues[r]);\r\n }\r\n }\r\n if (slcSort) {\r\n optArray.sort();\r\n optTxt.sort();\r\n }\r\n return [optArray, optTxt];\r\n }\r\n\r\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\r\n filter() {\r\n if (!this.fltGrid || !this.initialized) {\r\n return;\r\n }\r\n //fire onbefore callback\r\n this.onBeforeFilter(this);\r\n this.emitter.emit('before-filtering', this);\r\n\r\n let row = this.dom().rows,\r\n nbRows = this.getRowsNb(true),\r\n hiddenRows = 0;\r\n\r\n this.validRowsIndex = [];\r\n // search args re-init\r\n let searchArgs = this.getFiltersValue();\r\n\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n // already filtered rows display re-init\r\n row[k].style.display = '';\r\n\r\n let cells = row[k].cells;\r\n let nchilds = cells.length;\r\n\r\n // checks if row has exact cell #\r\n if (nchilds !== this.nbCells) {\r\n continue;\r\n }\r\n\r\n let occurence = [],\r\n isRowValid = true,\r\n //only for single filter search\r\n singleFltRowValid = false;\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n //searched keyword\r\n let sA = searchArgs[this.singleSearchFlt ? 0 : j];\r\n\r\n if (sA === '') {\r\n continue;\r\n }\r\n\r\n let cellValue = matchCase(this.getCellValue(cells[j]),\r\n this.caseSensitive);\r\n\r\n //multiple search parameter operator ||\r\n let sAOrSplit = sA.toString().split(this.orOperator),\r\n //multiple search || parameter boolean\r\n hasMultiOrSA = sAOrSplit.length > 1,\r\n //multiple search parameter operator &&\r\n sAAndSplit = sA.toString().split(this.anOperator),\r\n //multiple search && parameter boolean\r\n hasMultiAndSA = sAAndSplit.length > 1;\r\n\r\n //detect operators or array query\r\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\r\n let cS,\r\n s,\r\n occur = false;\r\n if (isArray(sA)) {\r\n s = sA;\r\n } else {\r\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\r\n }\r\n // isolate search term and check occurence in cell data\r\n for (let w = 0, len = s.length; w < len; w++) {\r\n cS = trim(s[w]);\r\n occur = this._testTerm(cS, cellValue, j);\r\n\r\n if (occur) {\r\n this.emitter.emit('highlight-keyword', this,\r\n cells[j], cS);\r\n }\r\n if ((hasMultiOrSA && occur) ||\r\n (hasMultiAndSA && !occur)) {\r\n break;\r\n }\r\n if (isArray(sA) && occur) {\r\n break;\r\n }\r\n }\r\n occurence[j] = occur;\r\n\r\n }\r\n //single search parameter\r\n else {\r\n occurence[j] = this._testTerm(trim(sA), cellValue, j);\r\n if (occurence[j]) {\r\n this.emitter.emit('highlight-keyword', this, cells[j],\r\n sA);\r\n }\r\n }//else single param\r\n\r\n if (!occurence[j]) {\r\n isRowValid = false;\r\n }\r\n if (this.singleSearchFlt && occurence[j]) {\r\n singleFltRowValid = true;\r\n }\r\n\r\n this.emitter.emit('cell-processed', this, j, cells[j]);\r\n }//for j\r\n\r\n if (this.singleSearchFlt && singleFltRowValid) {\r\n isRowValid = true;\r\n }\r\n\r\n this.validateRow(k, isRowValid);\r\n if (!isRowValid) {\r\n hiddenRows++;\r\n }\r\n\r\n this.emitter.emit('row-processed', this, k,\r\n this.validRowsIndex.length, isRowValid);\r\n }// for k\r\n\r\n this.nbHiddenRows = hiddenRows;\r\n\r\n //fire onafterfilter callback\r\n this.onAfterFilter(this);\r\n\r\n this.emitter.emit('after-filtering', this, searchArgs);\r\n }\r\n\r\n /**\r\n * Test for a match of search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {Number} colIdx Column index\r\n * @return {Boolean}\r\n */\r\n _testTerm(term, cellValue, colIdx) {\r\n let numData;\r\n let decimal = this.getDecimal(colIdx);\r\n let reLe = new RegExp(this.leOperator),\r\n reGe = new RegExp(this.geOperator),\r\n reL = new RegExp(this.lwOperator),\r\n reG = new RegExp(this.grOperator),\r\n reD = new RegExp(this.dfOperator),\r\n reLk = new RegExp(rgxEsc(this.lkOperator)),\r\n reEq = new RegExp(this.eqOperator),\r\n reSt = new RegExp(this.stOperator),\r\n reEn = new RegExp(this.enOperator),\r\n // re_an = new RegExp(this.anOperator),\r\n // re_cr = new RegExp(this.curExp),\r\n reEm = this.emOperator,\r\n reNm = this.nmOperator,\r\n reRe = new RegExp(rgxEsc(this.rgxOperator));\r\n\r\n term = matchCase(term, this.caseSensitive);\r\n\r\n let occurence = false;\r\n\r\n //Search arg operator tests\r\n let hasLO = reL.test(term),\r\n hasLE = reLe.test(term),\r\n hasGR = reG.test(term),\r\n hasGE = reGe.test(term),\r\n hasDF = reD.test(term),\r\n hasEQ = reEq.test(term),\r\n hasLK = reLk.test(term),\r\n // hatermN = re_an.test(term),\r\n hasST = reSt.test(term),\r\n hasEN = reEn.test(term),\r\n hasEM = (reEm === term),\r\n hasNM = (reNm === term),\r\n hasRE = reRe.test(term);\r\n\r\n // Check for dates or resolve date type\r\n if (this.hasType(colIdx, [DATE])) {\r\n let dte1, dte2;\r\n\r\n let dateType = this.Mod.dateType;\r\n let isValidDate = dateType.isValid.bind(dateType);\r\n let parseDate = dateType.parse.bind(dateType);\r\n let locale = dateType.getLocale(colIdx);\r\n\r\n // Search arg dates tests\r\n let isLDate = hasLO &&\r\n isValidDate(term.replace(reL, ''), locale);\r\n let isLEDate = hasLE &&\r\n isValidDate(term.replace(reLe, ''), locale);\r\n let isGDate = hasGR &&\r\n isValidDate(term.replace(reG, ''), locale);\r\n let isGEDate = hasGE &&\r\n isValidDate(term.replace(reGe, ''), locale);\r\n let isDFDate = hasDF &&\r\n isValidDate(term.replace(reD, ''), locale);\r\n let isEQDate = hasEQ &&\r\n isValidDate(term.replace(reEq, ''), locale);\r\n\r\n dte1 = parseDate(cellValue, locale);\r\n\r\n // lower equal date\r\n if (isLEDate) {\r\n dte2 = parseDate(term.replace(reLe, ''), locale);\r\n occurence = dte1 <= dte2;\r\n }\r\n // lower date\r\n else if (isLDate) {\r\n dte2 = parseDate(term.replace(reL, ''), locale);\r\n occurence = dte1 < dte2;\r\n }\r\n // greater equal date\r\n else if (isGEDate) {\r\n dte2 = parseDate(term.replace(reGe, ''), locale);\r\n occurence = dte1 >= dte2;\r\n }\r\n // greater date\r\n else if (isGDate) {\r\n dte2 = parseDate(term.replace(reG, ''), locale);\r\n occurence = dte1 > dte2;\r\n }\r\n // different date\r\n else if (isDFDate) {\r\n dte2 = parseDate(term.replace(reD, ''), locale);\r\n occurence = dte1.toString() !== dte2.toString();\r\n }\r\n // equal date\r\n else if (isEQDate) {\r\n dte2 = parseDate(term.replace(reEq, ''), locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n // searched keyword with * operator doesn't have to be a date\r\n else if (reLk.test(term)) {// like date\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n else if (isValidDate(term)) {\r\n dte2 = parseDate(term, locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = isEmptyString(cellValue);\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = !isEmptyString(cellValue);\r\n } else {\r\n occurence = contains(term, cellValue,\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n }\r\n }\r\n\r\n else {\r\n // Convert to number anyways to auto-resolve type in case not\r\n // defined by configuration\r\n numData = Number(cellValue) || parseNb(cellValue, decimal);\r\n\r\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\r\n // rgx:)\r\n // lower equal\r\n if (hasLE) {\r\n occurence = numData <= parseNb(\r\n term.replace(reLe, ''),\r\n decimal\r\n );\r\n }\r\n //greater equal\r\n else if (hasGE) {\r\n occurence = numData >= parseNb(\r\n term.replace(reGe, ''),\r\n decimal\r\n );\r\n }\r\n //lower\r\n else if (hasLO) {\r\n occurence = numData < parseNb(\r\n term.replace(reL, ''),\r\n decimal\r\n );\r\n }\r\n //greater\r\n else if (hasGR) {\r\n occurence = numData > parseNb(\r\n term.replace(reG, ''),\r\n decimal\r\n );\r\n }\r\n //different\r\n else if (hasDF) {\r\n occurence = contains(term.replace(reD, ''), cellValue,\r\n false, this.caseSensitive) ? false : true;\r\n }\r\n //like\r\n else if (hasLK) {\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n //equal\r\n else if (hasEQ) {\r\n occurence = contains(term.replace(reEq, ''), cellValue,\r\n true, this.caseSensitive);\r\n }\r\n //starts with\r\n else if (hasST) {\r\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\r\n true : false;\r\n }\r\n //ends with\r\n else if (hasEN) {\r\n let searchArg = term.replace(reEn, '');\r\n occurence =\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\r\n (cellValue.length - 1) - (searchArg.length - 1) &&\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\r\n > -1 ? true : false;\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = isEmptyString(cellValue);\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = !isEmptyString(cellValue);\r\n }\r\n //regexp\r\n else if (hasRE) {\r\n //in case regexp throws\r\n try {\r\n //operator is removed\r\n let srchArg = term.replace(reRe, '');\r\n let rgx = new RegExp(srchArg);\r\n occurence = rgx.test(cellValue);\r\n } catch (ex) {\r\n occurence = false;\r\n }\r\n } else {\r\n // If numeric type data, perform a strict equality test and\r\n // fallback to unformatted number string comparison\r\n if (numData &&\r\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\r\n !this.singleSearchFlt) {\r\n // parseNb can return 0 for strings which are not\r\n // formatted numbers, in that case return the original\r\n // string. TODO: handle this in parseNb\r\n term = parseNb(term, decimal) || term;\r\n occurence = numData === term ||\r\n contains(term.toString(), numData.toString(),\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n } else {\r\n // Finally test search term is contained in cell data\r\n occurence = contains(\r\n term,\r\n cellValue,\r\n this.isExactMatch(colIdx),\r\n this.caseSensitive,\r\n this.ignoresDiacritics(colIdx)\r\n );\r\n }\r\n }\r\n\r\n }//else\r\n\r\n return occurence;\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\r\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, true, exclude);\r\n }\r\n\r\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\r\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, false, exclude);\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\r\n getColValues(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = []\r\n ) {\r\n let row = this.dom().rows;\r\n let nbRows = this.getRowsNb(true);\r\n let colValues = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n colValues.push(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n for (let i = this.refRow; i < nbRows; i++) {\r\n let isExludedRow = false;\r\n // checks if current row index appears in exclude array\r\n if (exclude.length > 0) {\r\n isExludedRow = exclude.indexOf(i) !== -1;\r\n }\r\n let cell = row[i].cells,\r\n nchilds = cell.length;\r\n\r\n // checks if row has exact cell # and is not excluded\r\n if (nchilds === this.nbCells && !isExludedRow) {\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n if (j !== colIndex) {\r\n continue;\r\n }\r\n let data = getContent(cell[j]);\r\n colValues.push(data);\r\n }\r\n }\r\n }\r\n return colValues;\r\n }\r\n\r\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\r\n getFilterValue(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let fltValue = '';\r\n let flt = this.getFilterElement(index);\r\n if (!flt) {\r\n return fltValue;\r\n }\r\n\r\n let fltColType = this.getFilterType(index);\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n fltValue = flt.value;\r\n }\r\n //mutiple select\r\n else if (fltColType === MULTIPLE) {\r\n fltValue = this.feature('dropdown').getValues(index);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n fltValue = this.feature('checkList').getValues(index);\r\n }\r\n //return an empty string if collection is empty or contains a single\r\n //empty string\r\n if (isArray(fltValue) && fltValue.length === 0 ||\r\n (fltValue.length === 1 && fltValue[0] === '')) {\r\n fltValue = '';\r\n }\r\n\r\n return fltValue;\r\n }\r\n\r\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\r\n getFiltersValue() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let searchArgs = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltValue = this.getFilterValue(i);\r\n if (isArray(fltValue)) {\r\n searchArgs.push(fltValue);\r\n } else {\r\n searchArgs.push(trim(fltValue));\r\n }\r\n }\r\n return searchArgs;\r\n }\r\n\r\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\r\n getFilterId(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n return this.fltIds[index];\r\n }\r\n\r\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\r\n getFiltersByType(type, bool) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let arr = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltType = this.getFilterType(i);\r\n if (fltType === type.toLowerCase()) {\r\n let a = bool ? i : this.fltIds[i];\r\n arr.push(a);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\r\n getFilterElement(index) {\r\n let fltId = this.fltIds[index];\r\n return elm(fltId);\r\n }\r\n\r\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\r\n getCellsNb(rowIndex = 0) {\r\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\r\n return tr ? tr.cells.length : 0;\r\n }\r\n\r\n /**\r\n * Return the number of filterable rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row\r\n * @return {Number} Number of filterable rows\r\n */\r\n getRowsNb(includeHeaders) {\r\n let s = isUndef(this.refRow) ? 0 : this.refRow;\r\n let ntrs = this.dom().rows.length;\r\n if (includeHeaders) {\r\n s = 0;\r\n }\r\n return parseInt(ntrs - s, 10);\r\n }\r\n\r\n\r\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\r\n getCellValue(cell) {\r\n let idx = cell.cellIndex;\r\n let cellParser = this.cellParser;\r\n // Invoke cellParser for this column if any\r\n if (cellParser.cols.indexOf(idx) !== -1) {\r\n return cellParser.parse(this, cell, idx);\r\n } else {\r\n return getText(cell);\r\n }\r\n }\r\n\r\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\r\n getCellData(cell) {\r\n let colIndex = cell.cellIndex;\r\n let value = this.getCellValue(cell);\r\n\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n return parseNb(value, this.getDecimal(colIndex));\r\n }\r\n else if (this.hasType(colIndex, [NUMBER])) {\r\n return Number(value) || parseNb(value);\r\n }\r\n else if (this.hasType(colIndex, [DATE])){\r\n let dateType = this.Mod.dateType;\r\n return dateType.parse(value, dateType.getLocale(colIndex));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getTableData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n let rows = this.dom().rows;\r\n let nbRows = this.getRowsNb(true);\r\n let tblData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n tblData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n let rowData = [k, []];\r\n let cells = rows[k].cells;\r\n for (let j = 0, len = cells.length; j < len; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[j]);\r\n rowData[1].push(cellValue);\r\n }\r\n tblData.push(rowData);\r\n }\r\n return tblData;\r\n }\r\n\r\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n filteredData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n if (this.validRowsIndex.length === 0) {\r\n return [];\r\n }\r\n let rows = this.dom().rows,\r\n filteredData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n filteredData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let validRows = this.getValidRows(true);\r\n for (let i = 0; i < validRows.length; i++) {\r\n let rData = [this.validRowsIndex[i], []],\r\n cells = rows[this.validRowsIndex[i]].cells;\r\n for (let k = 0; k < cells.length; k++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(k)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[k]);\r\n rData[1].push(cellValue);\r\n }\r\n filteredData.push(rData);\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredDataCol(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = [],\r\n visible = true\r\n ) {\r\n if (isUndef(colIndex)) {\r\n return [];\r\n }\r\n\r\n let rows = this.dom().rows;\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n // ensure valid rows index do not contain excluded rows and row is\r\n // displayed\r\n let validRows = this.getValidRows(true).filter((rowIdx) => {\r\n return exclude.indexOf(rowIdx) === -1 &&\r\n (visible ?\r\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\r\n true);\r\n });\r\n\r\n // convert column value to expected type if necessary\r\n let validColValues = validRows.map((rowIdx) => {\r\n return getContent(rows[rowIdx].cells[colIndex]);\r\n });\r\n\r\n if (includeHeaders) {\r\n validColValues.unshift(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n return validColValues;\r\n }\r\n\r\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\r\n getRowDisplay(row) {\r\n return row.style.display;\r\n }\r\n\r\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\r\n validateRow(rowIndex, isValid) {\r\n let row = this.dom().rows[rowIndex];\r\n if (!row || typeof isValid !== 'boolean') {\r\n return;\r\n }\r\n\r\n // always visible rows are valid\r\n if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) {\r\n isValid = true;\r\n }\r\n\r\n let displayFlag = isValid ? '' : NONE,\r\n validFlag = isValid ? 'true' : 'false';\r\n row.style.display = displayFlag;\r\n\r\n if (this.paging) {\r\n row.setAttribute('validRow', validFlag);\r\n }\r\n\r\n if (isValid) {\r\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\r\n this.validRowsIndex.push(rowIndex);\r\n }\r\n\r\n this.onRowValidated(this, rowIndex);\r\n\r\n this.emitter.emit('row-validated', this, rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Validate all filterable rows\r\n */\r\n validateAllRows() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\r\n this.validateRow(k, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\r\n setFilterValue(index, query = '') {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let slc = this.getFilterElement(index),\r\n fltColType = this.getFilterType(index);\r\n\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt);\r\n }\r\n slc.value = query;\r\n }\r\n //multiple selects\r\n else if (fltColType === MULTIPLE) {\r\n let values = isArray(query) ? query :\r\n query.split(' ' + this.orOperator + ' ');\r\n\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt);\r\n }\r\n\r\n this.emitter.emit('select-options', this, index, values);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n let values = [];\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-checklist-filter', this, index,\r\n this.linkedFilters);\r\n }\r\n if (isArray(query)) {\r\n values = query;\r\n } else {\r\n query = matchCase(query, this.caseSensitive);\r\n values = query.split(' ' + this.orOperator + ' ');\r\n }\r\n\r\n this.emitter.emit('select-checklist-options', this, index, values);\r\n }\r\n }\r\n\r\n /**\r\n * Set them columns' widths as per configuration\r\n * @param {Element} tbl DOM element\r\n */\r\n setColWidths(tbl) {\r\n if (!this.hasColWidths) {\r\n return;\r\n }\r\n tbl = tbl || this.dom();\r\n\r\n let nbCols = this.nbCells;\r\n let colWidths = this.colWidths;\r\n let colTags = tag(tbl, 'col');\r\n let tblHasColTag = colTags.length > 0;\r\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\r\n for (let k = 0; k < nbCols; k++) {\r\n let col;\r\n if (tblHasColTag) {\r\n col = colTags[k];\r\n } else {\r\n col = createElm('col');\r\n frag.appendChild(col);\r\n }\r\n col.style.width = colWidths[k];\r\n }\r\n if (!tblHasColTag) {\r\n tbl.insertBefore(frag, tbl.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Make defined rows always visible\r\n */\r\n enforceVisibility() {\r\n if (!this.hasVisibleRows) {\r\n return;\r\n }\r\n let nbRows = this.getRowsNb(true);\r\n for (let i = 0, len = this.visibleRows.length; i < len; i++) {\r\n let row = this.visibleRows[i];\r\n //row index cannot be > nrows\r\n if (row <= nbRows) {\r\n this.validateRow(row, true);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all the filters' values\r\n */\r\n clearFilters() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-clearing-filters', this);\r\n this.onBeforeReset(this, this.getFiltersValue());\r\n\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n this.setFilterValue(i, '');\r\n }\r\n\r\n this.filter();\r\n\r\n this.onAfterReset(this);\r\n this.emitter.emit('after-clearing-filters', this);\r\n }\r\n\r\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\r\n getActiveFilterId() {\r\n return this.activeFilterId;\r\n }\r\n\r\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\r\n setActiveFilterId(filterId) {\r\n this.activeFilterId = filterId;\r\n }\r\n\r\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\r\n getColumnIndexFromFilterId(filterId = '') {\r\n let idx = filterId.split('_')[0];\r\n idx = idx.split(this.prfxFlt)[1];\r\n return parseInt(idx, 10);\r\n }\r\n\r\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\r\n buildFilterId(colIndex) {\r\n return `${this.prfxFlt}${colIndex}_${this.id}`;\r\n }\r\n\r\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\r\n activateFilter(colIndex) {\r\n if (isUndef(colIndex)) {\r\n return;\r\n }\r\n this.setActiveFilterId(this.getFilterId(colIndex));\r\n }\r\n\r\n /**\r\n * Refresh the filters subject to linking ('select', 'multiple',\r\n * 'checklist' type)\r\n */\r\n linkFilters() {\r\n if (!this.linkedFilters || !this.activeFilterId) {\r\n return;\r\n }\r\n let slcA1 = this.getFiltersByType(SELECT, true),\r\n slcA2 = this.getFiltersByType(MULTIPLE, true),\r\n slcA3 = this.getFiltersByType(CHECKLIST, true),\r\n slcIndex = slcA1.concat(slcA2);\r\n slcIndex = slcIndex.concat(slcA3);\r\n\r\n let activeIdx = this.getColumnIndexFromFilterId(this.activeFilterId);\r\n\r\n for (let i = 0, len = slcIndex.length; i < len; i++) {\r\n let colIdx = slcIndex[i];\r\n let curSlc = elm(this.fltIds[colIdx]);\r\n let slcSelectedValue = this.getFilterValue(colIdx);\r\n\r\n // Welcome to cyclomatic complexity hell :)\r\n // TODO: simplify/refactor if statement\r\n if (activeIdx !== colIdx ||\r\n (this.paging && slcA1.indexOf(colIdx) !== -1 &&\r\n activeIdx === colIdx) ||\r\n (!this.paging && (slcA3.indexOf(colIdx) !== -1 ||\r\n slcA2.indexOf(colIdx) !== -1)) ||\r\n slcSelectedValue === this.getClearFilterText(colIdx)) {\r\n\r\n //1st option needs to be inserted\r\n if (this.loadFltOnDemand) {\r\n let opt0 = createOpt(this.getClearFilterText(colIdx), '');\r\n curSlc.innerHTML = '';\r\n curSlc.appendChild(opt0);\r\n }\r\n\r\n if (slcA3.indexOf(colIdx) !== -1) {\r\n this.emitter.emit('build-checklist-filter', this, colIdx,\r\n true);\r\n } else {\r\n this.emitter.emit('build-select-filter', this, colIdx,\r\n true);\r\n }\r\n\r\n this.setFilterValue(colIdx, slcSelectedValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n isExactMatch(colIndex) {\r\n let fltType = this.getFilterType(colIndex);\r\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\r\n fltType !== INPUT;\r\n }\r\n\r\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowValid(rowIndex) {\r\n return this.getValidRows().indexOf(rowIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowDisplayed(rowIndex) {\r\n let row = this.dom().rows[rowIndex];\r\n return this.getRowDisplay(row) === '';\r\n }\r\n\r\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n ignoresDiacritics(colIndex) {\r\n let ignoreDiac = this.ignoreDiacritics;\r\n if (isArray(ignoreDiac)) {\r\n return ignoreDiac[colIndex];\r\n }\r\n return Boolean(ignoreDiac);\r\n }\r\n\r\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\r\n getClearFilterText(colIndex) {\r\n let clearText = this.clearFilterText;\r\n if (isArray(clearText)) {\r\n return clearText[colIndex];\r\n }\r\n return clearText;\r\n }\r\n\r\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\r\n isImported(filePath, type = 'script') {\r\n let imported = false,\r\n attr = type === 'script' ? 'src' : 'href',\r\n files = tag(doc, type);\r\n for (let i = 0, len = files.length; i < len; i++) {\r\n if (isUndef(files[i][attr])) {\r\n continue;\r\n }\r\n if (files[i][attr].match(filePath)) {\r\n imported = true;\r\n break;\r\n }\r\n }\r\n return imported;\r\n }\r\n\r\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\r\n import(fileId, filePath, callback, type = 'script') {\r\n if (this.isImported(filePath, type)) {\r\n return;\r\n }\r\n let o = this,\r\n isLoaded = false,\r\n file,\r\n head = tag(doc, 'head')[0];\r\n\r\n if (type.toLowerCase() === 'link') {\r\n file = createElm('link',\r\n ['id', fileId], ['type', 'text/css'],\r\n ['rel', 'stylesheet'], ['href', filePath]\r\n );\r\n } else {\r\n file = createElm('script',\r\n ['id', fileId],\r\n ['type', 'text/javascript'], ['src', filePath]\r\n );\r\n }\r\n\r\n //Browser <> IE onload event works only for scripts, not for stylesheets\r\n file.onload = file.onreadystatechange = () => {\r\n if (!isLoaded &&\r\n (!this.readyState || this.readyState === 'loaded' ||\r\n this.readyState === 'complete')) {\r\n isLoaded = true;\r\n if (typeof callback === 'function') {\r\n callback.call(null, o);\r\n }\r\n }\r\n };\r\n file.onerror = function () {\r\n throw new Error(`TableFilter could not load: ${filePath}`);\r\n };\r\n head.appendChild(file);\r\n }\r\n\r\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\r\n getFiltersId() {\r\n return this.fltIds || [];\r\n }\r\n\r\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\r\n getValidRows(reCalc) {\r\n if (!reCalc) {\r\n return this.validRowsIndex;\r\n }\r\n\r\n let nbRows = this.getRowsNb(true);\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n let r = this.dom().rows[k];\r\n if (!this.paging) {\r\n if (this.getRowDisplay(r) !== NONE) {\r\n this.validRowsIndex.push(r.rowIndex);\r\n }\r\n } else {\r\n if (r.getAttribute('validRow') === 'true' ||\r\n r.getAttribute('validRow') === null) {\r\n this.validRowsIndex.push(r.rowIndex);\r\n }\r\n }\r\n }\r\n return this.validRowsIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\r\n getFiltersRowIndex() {\r\n return this.filtersRowIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\r\n getHeadersRowIndex() {\r\n return this.headersRow;\r\n }\r\n\r\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\r\n getStartRowIndex() {\r\n return this.refRow;\r\n }\r\n\r\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\r\n getLastRowIndex() {\r\n let nbRows = this.getRowsNb(true);\r\n return (nbRows - 1);\r\n }\r\n\r\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\r\n hasType(colIndex, types = []) {\r\n if (this.colTypes.length === 0) {\r\n return false;\r\n }\r\n let colType = this.colTypes[colIndex];\r\n if (isObj(colType)) {\r\n colType = colType.type;\r\n }\r\n return types.indexOf(colType) !== -1;\r\n }\r\n\r\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\r\n getHeaderElement(colIndex) {\r\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\r\n let tHead = tag(table, 'thead');\r\n let rowIdx = this.getHeadersRowIndex();\r\n let header;\r\n if (tHead.length === 0) {\r\n header = table.rows[rowIdx].cells[colIndex];\r\n }\r\n if (tHead.length === 1) {\r\n header = tHead[0].rows[rowIdx].cells[colIndex];\r\n }\r\n return header;\r\n }\r\n\r\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\r\n getHeadersText(excludeHiddenCols = false) {\r\n let headers = [];\r\n for (let j = 0; j < this.nbCells; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let header = this.getHeaderElement(j);\r\n let headerText = getFirstTextNode(header);\r\n headers.push(headerText);\r\n }\r\n return headers;\r\n }\r\n\r\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\r\n getFilterType(colIndex) {\r\n let colType = this.cfg['col_' + colIndex];\r\n return !colType ? INPUT : colType.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\r\n getFilterableRowsNb() {\r\n return this.getRowsNb(false);\r\n }\r\n\r\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\r\n getValidRowsNb(reCalc = false) {\r\n return this.getValidRows(reCalc).length;\r\n }\r\n\r\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\r\n dom() {\r\n return this.tbl;\r\n }\r\n\r\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\r\n getDecimal(colIndex) {\r\n let decimal = this.decimalSeparator;\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = this.colTypes[colIndex];\r\n if (colType.hasOwnProperty('decimal')) {\r\n decimal = colType.decimal;\r\n }\r\n }\r\n return decimal;\r\n }\r\n\r\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\r\n config() {\r\n return this.cfg;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/tablefilter.js","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/diacritics/index.js\n// module id = 127\n// module chunks = 1","'use strict';\n\nfunction allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n}\n\nmodule.exports = allCharsReg;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/allCharsReg.js\n// module id = 128\n// module chunks = 1","'use strict';\n\nvar forEach = require('./forEach'),\n spaceSplit = require('./spaceSplit'),\n classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction collectSimilarMethods(set, fn) {\n var methods = {};\n if (isString(set)) {\n set = spaceSplit(set);\n }\n forEach(set, function(el, i) {\n fn(methods, el, i);\n });\n return methods;\n}\n\nmodule.exports = collectSimilarMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/collectSimilarMethods.js\n// module id = 129\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nfunction commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n}\n\nmodule.exports = commaSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/commaSplit.js\n// module id = 130\n// module chunks = 1","'use strict';\n\nvar STRING_FORMAT_REG = require('../var/STRING_FORMAT_REG'),\n CommonChars = require('../var/CommonChars'),\n memoizeFunction = require('./memoizeFunction');\n\nvar OPEN_BRACE = CommonChars.OPEN_BRACE,\n CLOSE_BRACE = CommonChars.CLOSE_BRACE;\n\nfunction createFormatMatcher(bracketMatcher, percentMatcher, precheck) {\n\n var reg = STRING_FORMAT_REG;\n var compileMemoized = memoizeFunction(compile);\n\n function getToken(format, match) {\n var get, token, literal, fn;\n var bKey = match[2];\n var pLit = match[3];\n var pKey = match[5];\n if (match[4] && percentMatcher) {\n token = pKey;\n get = percentMatcher;\n } else if (bKey) {\n token = bKey;\n get = bracketMatcher;\n } else if (pLit && percentMatcher) {\n literal = pLit;\n } else {\n literal = match[1] || match[0];\n }\n if (get) {\n assertPassesPrecheck(precheck, bKey, pKey);\n fn = function(obj, opt) {\n return get(obj, token, opt);\n };\n }\n format.push(fn || getLiteral(literal));\n }\n\n function getSubstring(format, str, start, end) {\n if (end > start) {\n var sub = str.slice(start, end);\n assertNoUnmatched(sub, OPEN_BRACE);\n assertNoUnmatched(sub, CLOSE_BRACE);\n format.push(function() {\n return sub;\n });\n }\n }\n\n function getLiteral(str) {\n return function() {\n return str;\n };\n }\n\n function assertPassesPrecheck(precheck, bt, pt) {\n if (precheck && !precheck(bt, pt)) {\n throw new TypeError('Invalid token '+ (bt || pt) +' in format string');\n }\n }\n\n function assertNoUnmatched(str, chr) {\n if (str.indexOf(chr) !== -1) {\n throw new TypeError('Unmatched '+ chr +' in format string');\n }\n }\n\n function compile(str) {\n var format = [], lastIndex = 0, match;\n reg.lastIndex = 0;\n while(match = reg.exec(str)) {\n getSubstring(format, str, lastIndex, match.index);\n getToken(format, match);\n lastIndex = reg.lastIndex;\n }\n getSubstring(format, str, lastIndex, str.length);\n return format;\n }\n\n return function(str, obj, opt) {\n var format = compileMemoized(str), result = '';\n for (var i = 0; i < format.length; i++) {\n result += format[i](obj, opt);\n }\n return result;\n };\n}\n\nmodule.exports = createFormatMatcher;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/createFormatMatcher.js\n// module id = 131\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n}\n\nmodule.exports = defineAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineAccessor.js\n// module id = 132\n// module chunks = 1","'use strict';\n\nvar simpleClone = require('./simpleClone'),\n defineAccessor = require('./defineAccessor'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOptionsAccessor(namespace, defaults) {\n var obj = simpleClone(defaults);\n\n function getOption(name) {\n return obj[name];\n }\n\n function setOption(arg1, arg2) {\n var options;\n if (arguments.length === 1) {\n options = arg1;\n } else {\n options = {};\n options[arg1] = arg2;\n }\n forEachProperty(options, function(val, name) {\n if (val === null) {\n val = defaults[name];\n }\n obj[name] = val;\n });\n }\n\n defineAccessor(namespace, 'getOption', getOption);\n defineAccessor(namespace, 'setOption', setOption);\n return getOption;\n}\n\nmodule.exports = defineOptionsAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineOptionsAccessor.js\n// module id = 133\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\\\/\\'*+?|()\\[\\]{}.^$-])/g,'\\\\$1');\n}\n\nmodule.exports = escapeRegExp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/escapeRegExp.js\n// module id = 134\n// module chunks = 1","'use strict';\n\nfunction filter(arr, fn) {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var el = arr[i];\n if (i in arr && fn(el, i)) {\n result.push(el);\n }\n }\n return result;\n}\n\nmodule.exports = filter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/filter.js\n// module id = 135\n// module chunks = 1","'use strict';\n\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\n\nmodule.exports = getKeys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getKeys.js\n// module id = 136\n// module chunks = 1","'use strict';\n\nfunction getOrdinalSuffix(num) {\n if (num >= 11 && num <= 13) {\n return 'th';\n } else {\n switch(num % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n}\n\nmodule.exports = getOrdinalSuffix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getOrdinalSuffix.js\n// module id = 137\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n}\n\nmodule.exports = getOwnKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getOwnKey.js\n// module id = 138\n// module chunks = 1","'use strict';\n\nvar isArrayIndex = require('./isArrayIndex');\n\nfunction getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) {\n indexes.push(+i);\n }\n }\n indexes.sort(function(a, b) {\n var aLoop = a > fromIndex;\n var bLoop = b > fromIndex;\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n}\n\nmodule.exports = getSparseArrayIndexes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getSparseArrayIndexes.js\n// module id = 139\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasOwnEnumeratedProperties(obj) {\n // Plain objects are generally defined as having enumerated properties\n // all their own, however in early IE environments without defineProperty,\n // there may also be enumerated methods in the prototype chain, so check\n // for both of these cases.\n var objectProto = Object.prototype;\n for (var key in obj) {\n var val = obj[key];\n if (!hasOwn(obj, key) && val !== objectProto[key]) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = hasOwnEnumeratedProperties;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/hasOwnEnumeratedProperties.js\n// module id = 140\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasValidPlainObjectPrototype(obj) {\n var hasToString = 'toString' in obj;\n var hasConstructor = 'constructor' in obj;\n // An object created with Object.create(null) has no methods in the\n // prototype chain, so check if any are missing. The additional hasToString\n // check is for false positives on some host objects in old IE which have\n // toString but no constructor. If the object has an inherited constructor,\n // then check if it is Object (the \"isPrototypeOf\" tapdance here is a more\n // robust way of ensuring this if the global has been hijacked). Note that\n // accessing the constructor directly (without \"in\" or \"hasOwnProperty\")\n // will throw a permissions error in IE8 on cross-domain windows.\n return (!hasConstructor && !hasToString) ||\n (hasConstructor && !hasOwn(obj, 'constructor') &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf'));\n}\n\nmodule.exports = hasValidPlainObjectPrototype;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/hasValidPlainObjectPrototype.js\n// module id = 141\n// module chunks = 1","'use strict';\n\nfunction isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n}\n\nmodule.exports = isArrayIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isArrayIndex.js\n// module id = 142\n// module chunks = 1","'use strict';\n\nvar isClass = require('./isClass'),\n isObjectType = require('./isObjectType'),\n hasOwnEnumeratedProperties = require('./hasOwnEnumeratedProperties'),\n hasValidPlainObjectPrototype = require('./hasValidPlainObjectPrototype');\n\nfunction isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n}\n\nmodule.exports = isPlainObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isPlainObject.js\n// module id = 143\n// module chunks = 1","'use strict';\n\nvar getSparseArrayIndexes = require('./getSparseArrayIndexes');\n\nfunction iterateOverSparseArray(arr, fn, fromIndex, loop) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index;\n for (var i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n fn.call(arr, arr[index], index, arr);\n }\n return arr;\n}\n\nmodule.exports = iterateOverSparseArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/iterateOverSparseArray.js\n// module id = 144\n// module chunks = 1","'use strict';\n\nvar INTERNAL_MEMOIZE_LIMIT = require('../var/INTERNAL_MEMOIZE_LIMIT'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n}\n\nmodule.exports = memoizeFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/memoizeFunction.js\n// module id = 145\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD;\n\nfunction periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n}\n\nmodule.exports = periodSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/periodSplit.js\n// module id = 146\n// module chunks = 1","'use strict';\n\nvar PRIVATE_PROP_PREFIX = require('../var/PRIVATE_PROP_PREFIX'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction privatePropertyAccessor(key) {\n var privateKey = PRIVATE_PROP_PREFIX + key;\n return function(obj, val) {\n if (arguments.length > 1) {\n setProperty(obj, privateKey, val);\n return obj;\n }\n return obj[privateKey];\n };\n}\n\nmodule.exports = privatePropertyAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/privatePropertyAccessor.js\n// module id = 147\n// module chunks = 1","'use strict';\n\nfunction repeatString(str, num) {\n var result = '';\n str = str.toString();\n while (num > 0) {\n if (num & 1) {\n result += str;\n }\n if (num >>= 1) {\n str += str;\n }\n }\n return result;\n}\n\nmodule.exports = repeatString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/repeatString.js\n// module id = 148\n// module chunks = 1","'use strict';\n\nfunction setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n}\n\nmodule.exports = setChainableConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/setChainableConstructor.js\n// module id = 149\n// module chunks = 1","'use strict';\n\nfunction trim(str) {\n return str.trim();\n}\n\nmodule.exports = trim;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/trim.js\n// module id = 150\n// module chunks = 1","'use strict';\n\nfunction wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n}\n\nmodule.exports = wrapNamespace;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/wrapNamespace.js\n// module id = 151\n// module chunks = 1","'use strict';\n\nmodule.exports = 1000;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js\n// module id = 152\n// module chunks = 1","'use strict';\n\nmodule.exports = 'Boolean Number String Date RegExp Function Array Error Set Map';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/NATIVE_TYPES.js\n// module id = 153\n// module chunks = 1","'use strict';\n\nmodule.exports = '_sugar_';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/PRIVATE_PROP_PREFIX.js\n// module id = 154\n// module chunks = 1","'use strict';\n\nmodule.exports = /([{}])\\1|\\{([^}]*)\\}|(%)%|(%(\\w*))/g;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/STRING_FORMAT_REG.js\n// module id = 155\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('./CommonChars'),\n chr = require('./chr'),\n allCharsReg = require('../internal/allCharsReg');\n\nvar HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO,\n FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO,\n HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD,\n FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD,\n HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nvar fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\nfunction buildFullWidthNumber() {\n var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = '';\n fullWidthNumberMap = {};\n for (var i = 0, digit; i <= 9; i++) {\n digit = chr(i + FULL_WIDTH_ZERO);\n fwn += digit;\n fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO);\n }\n fullWidthNumberMap[hwc] = '';\n fullWidthNumberMap[fwp] = hwp;\n // Mapping this to itself to capture it easily\n // in stringToNumber to detect decimals later.\n fullWidthNumberMap[hwp] = hwp;\n fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp);\n fullWidthNumbers = fwn;\n}\n\nbuildFullWidthNumber();\n\nmodule.exports = {\n fullWidthNumberReg: fullWidthNumberReg,\n fullWidthNumberMap: fullWidthNumberMap,\n fullWidthNumbers: fullWidthNumbers\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/fullwidthNumberHelpers.js\n// module id = 156\n// module chunks = 1","'use strict';\n\nvar wrapNamespace = require('../internal/wrapNamespace');\n\nmodule.exports = {\n alias: wrapNamespace('alias'),\n defineStatic: wrapNamespace('defineStatic'),\n defineInstance: wrapNamespace('defineInstance'),\n defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'),\n defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'),\n defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'),\n defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/methodDefineAliases.js\n// module id = 157\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addDays;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addDays.js\n// module id = 158\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addHours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addHours.js\n// module id = 159\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMilliseconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMilliseconds.js\n// module id = 160\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMinutes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMinutes.js\n// module id = 161\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMonths;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMonths.js\n// module id = 162\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addSeconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addSeconds.js\n// module id = 163\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addWeeks;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addWeeks.js\n// module id = 164\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addYears;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addYears.js\n// module id = 165\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'advance': function(d, args) {\n return advanceDateWithArgs(d, args, 1);\n }\n\n});\n\nmodule.exports = Sugar.Date.advance;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/advance.js\n// module id = 166\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfDay.js\n// module id = 167\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n resetTime = require('./internal/resetTime'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'beginningOfISOWeek': function(date) {\n var day = getWeekday(date);\n if (day === 0) {\n day = -6;\n } else if (day !== 1) {\n day = 1;\n }\n setWeekday(date, day);\n return resetTime(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.beginningOfISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfISOWeek.js\n// module id = 168\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfMonth.js\n// module id = 169\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfWeek.js\n// module id = 170\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfYear.js\n// module id = 171\n// module chunks = 1","'use strict';\n\nvar setDateChainableConstructor = require('../internal/setDateChainableConstructor');\n\nsetDateChainableConstructor();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/setDateChainableConstructorCall.js\n// module id = 172\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n cloneDate = require('./internal/cloneDate');\n\nSugar.Date.defineInstance({\n\n 'clone': function(date) {\n return cloneDate(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.clone;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/clone.js\n// module id = 173\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nrequire('./build/setDateChainableConstructorCall');\n\nSugar.Date.defineStatic({\n\n 'create': function(d, options) {\n return createDate(d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.create;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/create.js\n// module id = 174\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysAgo.js\n// module id = 175\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysFromNow.js\n// module id = 176\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getDaysInMonth = require('./internal/getDaysInMonth');\n\nSugar.Date.defineInstance({\n\n 'daysInMonth': function(date) {\n return getDaysInMonth(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.daysInMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysInMonth.js\n// module id = 177\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysSince.js\n// module id = 178\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysUntil.js\n// module id = 179\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfDay.js\n// module id = 180\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday'),\n moveToEndOfUnit = require('./internal/moveToEndOfUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'endOfISOWeek': function(date) {\n if (getWeekday(date) !== 0) {\n setWeekday(date, 7);\n }\n return moveToEndOfUnit(date, DAY_INDEX);\n }\n\n});\n\nmodule.exports = Sugar.Date.endOfISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfISOWeek.js\n// module id = 181\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfMonth.js\n// module id = 182\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfWeek.js\n// module id = 183\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfYear.js\n// module id = 184\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateFormat = require('./internal/dateFormat');\n\nSugar.Date.defineInstance({\n\n 'format': function(date, f, localeCode) {\n return dateFormat(date, f, localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.format;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/format.js\n// module id = 185\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDateWithContext = require('./internal/createDateWithContext');\n\nSugar.Date.defineInstance({\n\n 'get': function(date, d, options) {\n return createDateWithContext(date, d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.get;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/get.js\n// module id = 186\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers'),\n getKeys = require('../common/internal/getKeys');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocaleCodes': function() {\n return getKeys(localeManager.getAll());\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocaleCodes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getAllLocaleCodes.js\n// module id = 187\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocales': function() {\n return localeManager.getAll();\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocales;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getAllLocales.js\n// module id = 188\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekNumber = require('./internal/getWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'getISOWeek': function(date) {\n return getWeekNumber(date, true);\n }\n\n});\n\nmodule.exports = Sugar.Date.getISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getISOWeek.js\n// module id = 189\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getLocale': function(code) {\n return localeManager.get(code, !code);\n }\n\n});\n\nmodule.exports = Sugar.Date.getLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getLocale.js\n// module id = 190\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.getOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getOption.js\n// module id = 191\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getUTCOffset = require('./internal/getUTCOffset');\n\nSugar.Date.defineInstance({\n\n 'getUTCOffset': function(date, iso) {\n return getUTCOffset(date, iso);\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getUTCOffset.js\n// module id = 192\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'getUTCWeekday': function(date) {\n return date.getUTCDay();\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getUTCWeekday.js\n// module id = 193\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekday = require('./internal/getWeekday');\n\nSugar.Date.defineInstance({\n\n 'getWeekday': function(date) {\n return getWeekday(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.getWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getWeekday.js\n// module id = 194\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursAgo.js\n// module id = 195\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursFromNow.js\n// module id = 196\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursSince.js\n// module id = 197\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursUntil.js\n// module id = 198\n// module chunks = 1","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/index.js\n// module id = 199\n// module chunks = 1","'use strict';\n\nvar map = require('../../common/internal/map'),\n escapeRegExp = require('../../common/internal/escapeRegExp');\n\nfunction arrayToRegAlternates(arr) {\n var joined = arr.join('');\n if (!arr || !arr.length) {\n return '';\n }\n if (joined.length === arr.length) {\n return '[' + joined + ']';\n }\n // map handles sparse arrays so no need to compact the array here.\n return map(arr, escapeRegExp).join('|');\n}\n\nmodule.exports = arrayToRegAlternates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/arrayToRegAlternates.js\n// module id = 200\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n forEach = require('../../common/internal/forEach'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n createDateWithContext = require('./createDateWithContext'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar sugarDate = namespaceAliases.sugarDate,\n HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction buildDateUnitMethods() {\n\n defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) {\n var name = unit.name, caps = simpleCapitalize(name);\n\n if (index > DAY_INDEX) {\n forEach(['Last','This','Next'], function(shift) {\n methods['is' + shift + caps] = function(d, localeCode) {\n return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' });\n };\n });\n }\n if (index > HOURS_INDEX) {\n methods['beginningOf' + caps] = function(d, localeCode) {\n return moveToBeginningOfUnit(d, index, localeCode);\n };\n methods['endOf' + caps] = function(d, localeCode) {\n return moveToEndOfUnit(d, index, localeCode);\n };\n }\n\n methods['add' + caps + 's'] = function(d, num, reset) {\n return advanceDate(d, name, num, reset);\n };\n\n var since = function(date, d, options) {\n return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit);\n };\n\n methods[name + 'sAgo'] = methods[name + 'sUntil'] = until;\n methods[name + 'sSince'] = methods[name + 'sFromNow'] = since;\n\n });\n\n}\n\nmodule.exports = buildDateUnitMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildDateUnitMethods.js\n// module id = 201\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n createDate = require('./createDate'),\n mathAliases = require('../../common/var/mathAliases'),\n advanceDate = require('./advanceDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar sugarNumber = namespaceAliases.sugarNumber,\n round = mathAliases.round;\n\nfunction buildNumberUnitMethods() {\n defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {\n var name = unit.name, base, after, before;\n base = function(n) {\n return round(n * unit.multiplier);\n };\n after = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, n);\n };\n before = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, -n);\n };\n methods[name] = base;\n methods[name + 's'] = base;\n methods[name + 'Before'] = before;\n methods[name + 'sBefore'] = before;\n methods[name + 'Ago'] = before;\n methods[name + 'sAgo'] = before;\n methods[name + 'After'] = after;\n methods[name + 'sAfter'] = after;\n methods[name + 'FromNow'] = after;\n methods[name + 'sFromNow'] = after;\n });\n}\n\nmodule.exports = buildNumberUnitMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildNumberUnitMethods.js\n// module id = 202\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n fullCompareDate = require('./fullCompareDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar English = LocaleHelpers.English,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction buildRelativeAliases() {\n var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past');\n var weekdays = English.weekdays.slice(0, 7);\n var months = English.months.slice(0, 12);\n var together = special.concat(weekdays).concat(months);\n defineInstanceSimilar(sugarDate, together, function(methods, name) {\n methods['is'+ name] = function(d) {\n return fullCompareDate(d, name);\n };\n });\n}\n\nmodule.exports = buildRelativeAliases;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildRelativeAliases.js\n// module id = 203\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet'),\n setISOWeekNumber = require('./setISOWeekNumber');\n\nfunction callDateSetWithWeek(d, method, value, safe) {\n if (method === 'ISOWeek') {\n setISOWeekNumber(d, value);\n } else {\n callDateSet(d, method, value, safe);\n }\n}\n\nmodule.exports = callDateSetWithWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/callDateSetWithWeek.js\n// module id = 204\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n walkUnitDown = require('./walkUnitDown');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction collectDateParamsFromArguments(args) {\n var params = {}, index = 0;\n walkUnitDown(YEAR_INDEX, function(unit) {\n var arg = args[index++];\n if (isDefined(arg)) {\n params[unit.name] = arg;\n }\n });\n return params;\n}\n\nmodule.exports = collectDateParamsFromArguments;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/collectDateParamsFromArguments.js\n// module id = 205\n// module chunks = 1","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate');\n\nfunction compareDay(d, shift) {\n var comp = getNewDate();\n if (shift) {\n setDate(comp, getDate(comp) + shift);\n }\n return getYear(d) === getYear(comp) &&\n getMonth(d) === getMonth(comp) &&\n getDate(d) === getDate(comp);\n}\n\nmodule.exports = compareDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/compareDay.js\n// module id = 206\n// module chunks = 1","'use strict';\n\nfunction defaultNewDate() {\n return new Date;\n}\n\nmodule.exports = defaultNewDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/defaultNewDate.js\n// module id = 207\n// module chunks = 1","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey');\n\nfunction deleteDateParam(params, key) {\n delete params[getDateParamKey(params, key)];\n}\n\nmodule.exports = deleteDateParam;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/deleteDateParam.js\n// module id = 208\n// module chunks = 1","'use strict';\n\nvar getNewDate = require('./getNewDate'),\n mathAliases = require('../../common/var/mathAliases'),\n getAdjustedUnit = require('./getAdjustedUnit'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnitForDate(d, dRelative) {\n var ms;\n if (!dRelative) {\n dRelative = getNewDate();\n if (d > dRelative) {\n // If our date is greater than the one that we got from getNewDate, it\n // means that we are finding the unit for a date that is in the future\n // relative to now. However, often the incoming date was created in\n // the same cycle as our comparison, but our \"now\" date will have been\n // created an instant after it, creating situations where \"5 minutes from\n // now\" becomes \"4 minutes from now\" in the same tick. To prevent this,\n // subtract a buffer of 10ms to compensate.\n dRelative = new Date(dRelative.getTime() - 10);\n }\n }\n ms = d - dRelative;\n return getAdjustedUnit(ms, function(u) {\n return abs(getTimeDistanceForUnit(d, dRelative, u));\n });\n}\n\nmodule.exports = getAdjustedUnitForDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnitForDate.js\n// module id = 209\n// module chunks = 1","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n withPrecision = require('../../common/internal/withPrecision'),\n getAdjustedUnit = require('./getAdjustedUnit');\n\nfunction getAdjustedUnitForNumber(ms) {\n return getAdjustedUnit(ms, function(unit) {\n return trunc(withPrecision(ms / unit.multiplier, 1));\n });\n}\n\nmodule.exports = getAdjustedUnitForNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnitForNumber.js\n// module id = 210\n// module chunks = 1","'use strict';\n\nfunction getArrayWithOffset(arr, n, alternate, offset) {\n var val;\n if (alternate > 1) {\n val = arr[n + (alternate - 1) * offset];\n }\n return val || arr[n];\n}\n\nmodule.exports = getArrayWithOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getArrayWithOffset.js\n// module id = 211\n// module chunks = 1","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases');\n\nvar getOwn = coreUtilityAliases.getOwn;\n\nfunction getDateParam(params, key) {\n return getOwn(params, getDateParamKey(params, key));\n}\n\nmodule.exports = getDateParam;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParam.js\n// module id = 212\n// module chunks = 1","'use strict';\n\nvar isUndefined = require('../../common/internal/isUndefined');\n\nfunction getDateParamsFromString(str) {\n var match, num, params = {};\n match = str.match(/^(-?\\d*[\\d.]\\d*)?\\s?(\\w+?)s?$/i);\n if (match) {\n if (isUndefined(num)) {\n num = +match[1];\n if (isNaN(num)) {\n num = 1;\n }\n }\n params[match[2].toLowerCase()] = num;\n }\n return params;\n}\n\nmodule.exports = getDateParamsFromString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParamsFromString.js\n// module id = 213\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction getDaysSince(d1, d2) {\n return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]);\n}\n\nmodule.exports = getDaysSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDaysSince.js\n// module id = 214\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getHigherUnitIndex(index) {\n return index === DAY_INDEX ? MONTH_INDEX : index + 1;\n}\n\nmodule.exports = getHigherUnitIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getHigherUnitIndex.js\n// module id = 215\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trunc = require('../../common/var/trunc'),\n getHours = require('./getHours');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getMeridiemToken(d, localeCode) {\n var hours = getHours(d);\n return localeManager.get(localeCode).ampm[trunc(hours / 12)] || '';\n}\n\nmodule.exports = getMeridiemToken;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getMeridiemToken.js\n// module id = 216\n// module chunks = 1","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = require('../var/LOCALE_ARRAY_FIELDS'),\n ISODefaults = require('../var/ISODefaults'),\n ParsingTokens = require('../var/ParsingTokens'),\n CoreParsingFormats = require('../var/CoreParsingFormats'),\n LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n map = require('../../common/internal/map'),\n filter = require('../../common/internal/filter'),\n forEach = require('../../common/internal/forEach'),\n isDefined = require('../../common/internal/isDefined'),\n commaSplit = require('../../common/internal/commaSplit'),\n classChecks = require('../../common/var/classChecks'),\n isUndefined = require('../../common/internal/isUndefined'),\n mathAliases = require('../../common/var/mathAliases'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap,\n fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers,\n pow = mathAliases.pow,\n max = mathAliases.max,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR,\n isString = classChecks.isString,\n isFunction = classChecks.isFunction;\n\nfunction getNewLocale(def) {\n\n function Locale(def) {\n this.init(def);\n }\n\n Locale.prototype = {\n\n getMonthName: function(n, alternate) {\n if (this.monthSuffix) {\n return (n + 1) + this.monthSuffix;\n }\n return getArrayWithOffset(this.months, n, alternate, 12);\n },\n\n getWeekdayName: function(n, alternate) {\n return getArrayWithOffset(this.weekdays, n, alternate, 7);\n },\n\n getTokenValue: function(field, str) {\n var map = this[field + 'Map'], val;\n if (map) {\n val = map[str];\n }\n if (isUndefined(val)) {\n val = this.getNumber(str);\n if (field === 'month') {\n // Months are the only numeric date field\n // whose value is not the same as its number.\n val -= 1;\n }\n }\n return val;\n },\n\n getNumber: function(str) {\n var num = this.numeralMap[str];\n if (isDefined(num)) {\n return num;\n }\n // The unary plus operator here show better performance and handles\n // every format that parseFloat does with the exception of trailing\n // characters, which are guaranteed not to be in our string at this point.\n num = +str.replace(/,/, '.');\n if (!isNaN(num)) {\n return num;\n }\n num = this.getNumeralValue(str);\n if (!isNaN(num)) {\n this.numeralMap[str] = num;\n return num;\n }\n return num;\n },\n\n getNumeralValue: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n // Note that \"numerals\" that need to be converted through this method are\n // all considered to be single characters in order to handle CJK. This\n // method is by no means unique to CJK, but the complexity of handling\n // inflections in non-CJK languages adds too much overhead for not enough\n // value, so avoiding for now.\n arr = str.split('');\n for (var i = arr.length - 1; numeral = arr[i]; i--) {\n digit = getOwn(this.numeralMap, numeral);\n if (isUndefined(digit)) {\n digit = getOwn(fullWidthNumberMap, numeral) || 0;\n }\n isPlace = digit > 0 && digit % 10 === 0;\n if (isPlace) {\n if (lastWasPlace) {\n num += place;\n }\n if (i) {\n place = digit;\n } else {\n num += digit;\n }\n } else {\n num += digit * place;\n place *= 10;\n }\n lastWasPlace = isPlace;\n }\n return num;\n },\n\n getOrdinal: function(n) {\n var suffix = this.ordinalSuffix;\n return suffix || getOrdinalSuffix(n);\n },\n\n getRelativeFormat: function(adu, type) {\n return this.convertAdjustedToFormat(adu, type);\n },\n\n getDuration: function(ms) {\n return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration');\n },\n\n getFirstDayOfWeek: function() {\n var val = this.firstDayOfWeek;\n return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK;\n },\n\n getFirstDayOfWeekYear: function() {\n return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR;\n },\n\n convertAdjustedToFormat: function(adu, type) {\n var sign, unit, mult,\n num = adu[0],\n u = adu[1],\n ms = adu[2],\n format = this[type] || this.relative;\n if (isFunction(format)) {\n return format.call(this, num, u, ms, type);\n }\n mult = !this.plural || num === 1 ? 0 : 1;\n unit = this.units[mult * 8 + u] || this.units[u];\n sign = this[ms > 0 ? 'fromNow' : 'ago'];\n return format.replace(/\\{(.*?)\\}/g, function(full, match) {\n switch(match) {\n case 'num': return num;\n case 'unit': return unit;\n case 'sign': return sign;\n }\n });\n },\n\n cacheFormat: function(dif, i) {\n this.compiledFormats.splice(i, 1);\n this.compiledFormats.unshift(dif);\n },\n\n addFormat: function(src, to) {\n var loc = this;\n\n function getTokenSrc(str) {\n var suffix, src, val,\n opt = str.match(/\\?$/),\n nc = str.match(/^(\\d+)\\??$/),\n slice = str.match(/(\\d)(?:-(\\d))?/),\n key = str.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (val = getOwn(loc.parsingAliases, key)) {\n src = replaceParsingTokens(val);\n if (opt) {\n src = getRegNonCapturing(src, true);\n }\n return src;\n }\n\n if (nc) {\n src = loc.tokens[nc[1]];\n } else if (val = getOwn(ParsingTokens, key)) {\n src = val.src;\n } else {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key);\n\n // Both the \"months\" array and the \"month\" parsing token can be accessed\n // by either {month} or {months}, falling back as necessary, however\n // regardless of whether or not a fallback occurs, the final field to\n // be passed to addRawFormat must be normalized as singular.\n key = key.replace(/s$/, '');\n\n if (!val) {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's');\n }\n\n if (isString(val)) {\n src = val;\n suffix = loc[key + 'Suffix'];\n } else {\n if (slice) {\n val = filter(val, function(m, i) {\n var mod = i % (loc.units ? 8 : val.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(val);\n }\n }\n if (!src) {\n return '';\n }\n if (nc) {\n // Non-capturing tokens like {0}\n src = getRegNonCapturing(src);\n } else {\n // Capturing group and add to parsed tokens\n to.push(key);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(key, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function replaceParsingTokens(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n return str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|'), src;\n if (tokens.length > 1) {\n src = getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n src = getTokenSrc(token);\n }\n return src;\n });\n }\n\n if (!to) {\n to = [];\n src = replaceParsingTokens(src);\n }\n\n loc.addRawFormat(src, to);\n },\n\n addRawFormat: function(format, to) {\n this.compiledFormats.unshift({\n reg: RegExp('^ *' + format + ' *$', 'i'),\n to: to\n });\n },\n\n init: function(def) {\n var loc = this;\n\n // -- Initialization helpers\n\n function initFormats() {\n loc.compiledFormats = [];\n loc.parsingAliases = {};\n loc.parsingTokens = {};\n }\n\n function initDefinition() {\n simpleMerge(loc, def);\n }\n\n function initArrayFields() {\n forEach(LOCALE_ARRAY_FIELDS, function(name) {\n var val = loc[name];\n if (isString(val)) {\n loc[name] = commaSplit(val);\n } else if (!val) {\n loc[name] = [];\n }\n });\n }\n\n // -- Value array build helpers\n\n function buildValueArray(name, mod, map, fn) {\n var field = name, all = [], setMap;\n if (!loc[field]) {\n field += 's';\n }\n if (!map) {\n map = {};\n setMap = true;\n }\n forAllAlternates(field, function(alt, j, i) {\n var idx = j * mod + i, val;\n val = fn ? fn(i) : i;\n map[alt] = val;\n map[alt.toLowerCase()] = val;\n all[idx] = alt;\n });\n loc[field] = all;\n if (setMap) {\n loc[name + 'Map'] = map;\n }\n }\n\n function forAllAlternates(field, fn) {\n forEach(loc[field], function(str, i) {\n forEachAlternate(str, function(alt, j) {\n fn(alt, j, i);\n });\n });\n }\n\n function forEachAlternate(str, fn) {\n var arr = map(str.split('+'), function(split) {\n return split.replace(/(.+):(.+)$/, function(full, base, suffixes) {\n return map(suffixes.split('|'), function(suffix) {\n return base + suffix;\n }).join('|');\n });\n }).join('|');\n forEach(arr.split('|'), fn);\n }\n\n function buildNumerals() {\n var map = {};\n buildValueArray('numeral', 10, map);\n buildValueArray('article', 1, map, function() {\n return 1;\n });\n buildValueArray('placeholder', 4, map, function(n) {\n return pow(10, n + 1);\n });\n loc.numeralMap = map;\n }\n\n function buildTimeFormats() {\n loc.parsingAliases['time'] = getTimeFormat();\n loc.parsingAliases['tzOffset'] = getTZOffsetFormat();\n }\n\n function getTimeFormat() {\n var src;\n if (loc.ampmFront) {\n // \"ampmFront\" exists mostly for CJK locales, which also presume that\n // time suffixes exist, allowing this to be a simpler regex.\n src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?';\n } else if(loc.ampm.length) {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)';\n }\n return src;\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src, arr;\n src = token.base ? ParsingTokens[token.base].src : token.src;\n if (token.requiresNumerals || loc.numeralUnits) {\n src += getNumeralSrc();\n }\n arr = loc[name + 's'];\n if (arr && arr.length) {\n src += '|' + arrayToRegAlternates(arr);\n }\n loc.parsingTokens[name] = src;\n });\n }\n\n function getNumeralSrc() {\n var all, src = '';\n all = loc.numerals.concat(loc.placeholders).concat(loc.articles);\n if (loc.allowsFullWidth) {\n all = all.concat(fullWidthNumbers.split(''));\n }\n if (all.length) {\n src = '|(?:' + arrayToRegAlternates(all) + ')+';\n }\n return src;\n }\n\n function buildTimeSuffixes() {\n iterateOverDateUnits(function(unit, i) {\n var token = loc.timeSuffixes[i];\n if (token) {\n loc[(unit.alias || unit.name) + 'Suffix'] = token;\n }\n });\n }\n\n function buildModifiers() {\n forEach(loc.modifiers, function(modifier) {\n var name = modifier.name, mapKey = name + 'Map', map;\n map = loc[mapKey] || {};\n forEachAlternate(modifier.src, function(alt, j) {\n var token = getOwn(loc.parsingTokens, name), val = modifier.value;\n map[alt] = val;\n loc.parsingTokens[name] = token ? token + '|' + alt : alt;\n if (modifier.name === 'sign' && j === 0) {\n // Hooking in here to set the first \"fromNow\" or \"ago\" modifier\n // directly on the locale, so that it can be reused in the\n // relative format.\n loc[val === 1 ? 'fromNow' : 'ago'] = alt;\n }\n });\n loc[mapKey] = map;\n });\n }\n\n // -- Format adding helpers\n\n function addCoreFormats() {\n forEach(CoreParsingFormats, function(df) {\n var src = df.src;\n if (df.mdy && loc.mdy) {\n // Use the mm/dd/yyyy variant if it\n // exists and the locale requires it\n src = df.mdy;\n }\n if (df.time) {\n // Core formats that allow time require the time\n // reg on both sides, so add both versions here.\n loc.addFormat(getFormatWithTime(src, true));\n loc.addFormat(getFormatWithTime(src));\n } else {\n loc.addFormat(src);\n }\n });\n loc.addFormat('{time}');\n }\n\n function addLocaleFormats() {\n addFormatSet('parse');\n addFormatSet('timeParse', true);\n addFormatSet('timeFrontParse', true, true);\n }\n\n function addFormatSet(field, allowTime, timeFront) {\n forEach(loc[field], function(format) {\n if (allowTime) {\n format = getFormatWithTime(format, timeFront);\n }\n loc.addFormat(format);\n });\n }\n\n function getFormatWithTime(baseFormat, timeBefore) {\n if (timeBefore) {\n return getTimeBefore() + baseFormat;\n }\n return baseFormat + getTimeAfter();\n }\n\n function getTimeBefore() {\n return getRegNonCapturing('{time}[,\\\\s\\\\u3000]', true);\n }\n\n function getTimeAfter() {\n var markers = ',?[\\\\s\\\\u3000]', localized;\n localized = arrayToRegAlternates(loc.timeMarkers);\n if (localized) {\n markers += '| (?:' + localized + ') ';\n }\n markers = getRegNonCapturing(markers, loc.timeMarkerOptional);\n return getRegNonCapturing(markers + '{time}', true);\n }\n\n initFormats();\n initDefinition();\n initArrayFields();\n\n buildValueArray('month', 12);\n buildValueArray('weekday', 7);\n buildValueArray('unit', 8);\n buildValueArray('ampm', 2);\n\n buildNumerals();\n buildTimeFormats();\n buildParsingTokens();\n buildTimeSuffixes();\n buildModifiers();\n\n // The order of these formats is important. Order is reversed so formats\n // that are initialized later will take precedence. Generally, this means\n // that more specific formats should come later.\n addCoreFormats();\n addLocaleFormats();\n\n }\n\n };\n\n return new Locale(def);\n}\n\nmodule.exports = getNewLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getNewLocale.js\n// module id = 217\n// module chunks = 1","'use strict';\n\nfunction getParsingTokenValue(token, str) {\n var val;\n if (token.val) {\n val = token.val;\n } else if (token.sign) {\n val = str === '+' ? 1 : -1;\n } else if (token.bool) {\n val = !!val;\n } else {\n val = +str.replace(/,/, '.');\n }\n if (token.param === 'month') {\n val -= 1;\n }\n return val;\n}\n\nmodule.exports = getParsingTokenValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getParsingTokenValue.js\n// module id = 218\n// module chunks = 1","'use strict';\n\nvar LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n getRegNonCapturing = require('./getRegNonCapturing');\n\nfunction getParsingTokenWithSuffix(field, src, suffix) {\n var token = LocalizedParsingTokens[field];\n if (token.requiresSuffix) {\n src = getRegNonCapturing(src + getRegNonCapturing(suffix));\n } else if (token.requiresSuffixOr) {\n src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix);\n } else {\n src += getRegNonCapturing(suffix, true);\n }\n return src;\n}\n\nmodule.exports = getParsingTokenWithSuffix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getParsingTokenWithSuffix.js\n// module id = 219\n// module chunks = 1","'use strict';\n\nvar iterateOverDateParams = require('./iterateOverDateParams');\n\nfunction getUnitIndexForParamName(name) {\n var params = {}, unitIndex;\n params[name] = 1;\n iterateOverDateParams(params, function(name, val, unit, i) {\n unitIndex = i;\n return false;\n });\n return unitIndex;\n}\n\nmodule.exports = getUnitIndexForParamName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getUnitIndexForParamName.js\n// module id = 220\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getWeekNumber = require('./getWeekNumber');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getWeekYear(d, localeCode, iso) {\n var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc;\n year = getYear(d);\n month = getMonth(d);\n if (month === 0 || month === 11) {\n if (!iso) {\n loc = localeManager.get(localeCode);\n firstDayOfWeek = loc.getFirstDayOfWeek(localeCode);\n firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode);\n }\n week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear);\n if (month === 0 && week === 0) {\n year -= 1;\n } else if (month === 11 && week === 1) {\n year += 1;\n }\n }\n return year;\n}\n\nmodule.exports = getWeekYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekYear.js\n// module id = 221\n// module chunks = 1","'use strict';\n\nvar getYear = require('./getYear'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getYearFromAbbreviation(str, d, prefer) {\n // Following IETF here, adding 1900 or 2000 depending on the last two digits.\n // Note that this makes no accordance for what should happen after 2050, but\n // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt\n var val = +str, delta;\n val += val < 50 ? 2000 : 1900;\n if (prefer) {\n delta = val - getYear(d);\n if (delta / abs(delta) !== prefer) {\n val += prefer * 100;\n }\n }\n return val;\n}\n\nmodule.exports = getYearFromAbbreviation;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getYearFromAbbreviation.js\n// module id = 222\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset');\n\nfunction isUTC(d) {\n return !!_utc(d) || tzOffset(d) === 0;\n}\n\nmodule.exports = isUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/isUTC.js\n// module id = 223\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverHigherDateParams(params, fn) {\n iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX);\n}\n\nmodule.exports = iterateOverHigherDateParams;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverHigherDateParams.js\n// module id = 224\n// module chunks = 1","'use strict';\n\nvar getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nfunction resetLowerUnits(d, unitIndex) {\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = resetLowerUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/resetLowerUnits.js\n// module id = 225\n// module chunks = 1","'use strict';\n\nvar createDate = require('./createDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n setChainableConstructor = require('../../common/internal/setChainableConstructor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nfunction setDateChainableConstructor() {\n setChainableConstructor(sugarDate, createDate);\n}\n\nmodule.exports = setDateChainableConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setDateChainableConstructor.js\n// module id = 226\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setMonth(d, val) {\n callDateSet(d, 'Month', val);\n}\n\nmodule.exports = setMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setMonth.js\n// module id = 227\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setYear(d, val) {\n callDateSet(d, 'FullYear', val);\n}\n\nmodule.exports = setYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setYear.js\n// module id = 228\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n fullCompareDate = require('./internal/fullCompareDate');\n\nSugar.Date.defineInstance({\n\n 'is': function(date, d, margin) {\n return fullCompareDate(date, d, margin);\n }\n\n});\n\nmodule.exports = Sugar.Date.is;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/is.js\n// module id = 229\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isAfter': function(date, d, margin) {\n return date.getTime() > createDate(d).getTime() - (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isAfter.js\n// module id = 230\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isBefore': function(date, d, margin) {\n return date.getTime() < createDate(d).getTime() + (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isBefore.js\n// module id = 231\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n mathAliases = require('../common/var/mathAliases');\n\nvar min = mathAliases.min,\n max = mathAliases.max;\n\nSugar.Date.defineInstance({\n\n 'isBetween': function(date, d1, d2, margin) {\n var t = date.getTime();\n var t1 = createDate(d1).getTime();\n var t2 = createDate(d2).getTime();\n var lo = min(t1, t2);\n var hi = max(t1, t2);\n margin = margin || 0;\n return (lo - margin <= t) && (hi + margin >= t);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBetween;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isBetween.js\n// module id = 232\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFriday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isFriday.js\n// module id = 233\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFuture;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isFuture.js\n// module id = 234\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastMonth.js\n// module id = 235\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastWeek.js\n// module id = 236\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastYear.js\n// module id = 237\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getYear = require('./internal/getYear');\n\nSugar.Date.defineInstance({\n\n 'isLeapYear': function(date) {\n var year = getYear(date);\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isLeapYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLeapYear.js\n// module id = 238\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isMonday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isMonday.js\n// module id = 239\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextMonth.js\n// module id = 240\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextWeek.js\n// module id = 241\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextYear.js\n// module id = 242\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isPast;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isPast.js\n// module id = 243\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSaturday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isSaturday.js\n// module id = 244\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSunday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isSunday.js\n// module id = 245\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisMonth.js\n// module id = 246\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisWeek.js\n// module id = 247\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisYear.js\n// module id = 248\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isThursday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThursday.js\n// module id = 249\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isToday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isToday.js\n// module id = 250\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTomorrow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isTomorrow.js\n// module id = 251\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTuesday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isTuesday.js\n// module id = 252\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n isUTC = require('./internal/isUTC');\n\nSugar.Date.defineInstance({\n\n 'isUTC': function(date) {\n return isUTC(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isUTC.js\n// module id = 253\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateIsValid = require('./internal/dateIsValid');\n\nSugar.Date.defineInstance({\n\n 'isValid': function(date) {\n return dateIsValid(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isValid.js\n// module id = 254\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWednesday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWednesday.js\n// module id = 255\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWeekday.js\n// module id = 256\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekend;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWeekend.js\n// module id = 257\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isYesterday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isYesterday.js\n// module id = 258\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'iso': function(date) {\n return date.toISOString();\n }\n\n});\n\nmodule.exports = Sugar.Date.iso;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/iso.js\n// module id = 259\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsAgo.js\n// module id = 260\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsFromNow.js\n// module id = 261\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsSince.js\n// module id = 262\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsUntil.js\n// module id = 263\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesAgo.js\n// module id = 264\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesFromNow.js\n// module id = 265\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesSince.js\n// module id = 266\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesUntil.js\n// module id = 267\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsAgo.js\n// module id = 268\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsFromNow.js\n// module id = 269\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsSince.js\n// module id = 270\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsUntil.js\n// module id = 271\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateRangeConstructor = require('../range/var/DateRangeConstructor');\n\nSugar.Date.defineStatic({\n\n 'range': DateRangeConstructor\n\n});\n\nmodule.exports = Sugar.Date.range;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/range.js\n// module id = 272\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relative': function(date, localeCode, fn) {\n return dateRelative(date, null, localeCode, fn);\n }\n\n});\n\nmodule.exports = Sugar.Date.relative;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/relative.js\n// module id = 273\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relativeTo': function(date, d, localeCode) {\n return dateRelative(date, createDate(d), localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.relativeTo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/relativeTo.js\n// module id = 274\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'removeLocale': function(code) {\n return localeManager.remove(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.removeLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/removeLocale.js\n// module id = 275\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n moveToBeginningOfUnit = require('./internal/moveToBeginningOfUnit'),\n getUnitIndexForParamName = require('./internal/getUnitIndexForParamName');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'reset': function(date, unit, localeCode) {\n var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX;\n moveToBeginningOfUnit(date, unitIndex, localeCode);\n return date;\n }\n\n});\n\nmodule.exports = Sugar.Date.reset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/reset.js\n// module id = 276\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'rewind': function(d, args) {\n return advanceDateWithArgs(d, args, -1);\n }\n\n});\n\nmodule.exports = Sugar.Date.rewind;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/rewind.js\n// module id = 277\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsAgo.js\n// module id = 278\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsFromNow.js\n// module id = 279\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsSince.js\n// module id = 280\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsUntil.js\n// module id = 281\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n updateDate = require('./internal/updateDate'),\n collectDateArguments = require('./internal/collectDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectDateArguments(args);\n return updateDate(d, args[0], args[1]);\n }\n\n});\n\nmodule.exports = Sugar.Date.set;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/set.js\n// module id = 282\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n setISOWeekNumber = require('./internal/setISOWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'setISOWeek': function(date, num) {\n return setISOWeekNumber(date, num);\n }\n\n});\n\nmodule.exports = Sugar.Date.setISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setISOWeek.js\n// module id = 283\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'setLocale': function(code) {\n return localeManager.set(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.setLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setLocale.js\n// module id = 284\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.setOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setOption.js\n// module id = 285\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _utc = require('../common/var/_utc');\n\nSugar.Date.defineInstance({\n\n 'setUTC': function(date, on) {\n return _utc(date, on);\n }\n\n});\n\nmodule.exports = Sugar.Date.setUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setUTC.js\n// module id = 286\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'setWeekday': function(date, dow) {\n return setWeekday(date, dow);\n }\n\n});\n\nmodule.exports = Sugar.Date.setWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setWeekday.js\n// module id = 287\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/BritishEnglishDefinition.js\n// module id = 288\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar CanadianEnglishDefinition = getEnglishVariant({\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {Month}, {yyyy}',\n 'long': '{d} {Month}, {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = CanadianEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CanadianEnglishDefinition.js\n// module id = 289\n// module chunks = 1","'use strict';\n\nvar CoreParsingFormats = [\n {\n // 12-1978\n // 08-1978 (MDY)\n src: '{MM}[-.\\\\/]{yyyy}'\n },\n {\n // 12/08/1978\n // 08/12/1978 (MDY)\n time: true,\n src: '{dd}[-.\\\\/]{MM}(?:[-.\\\\/]{yyyy|yy|y})?',\n mdy: '{MM}[-.\\\\/]{dd}(?:[-.\\\\/]{yyyy|yy|y})?'\n },\n {\n // 1975-08-25\n time: true,\n src: '{yyyy}[-.\\\\/]{MM}(?:[-.\\\\/]{dd})?'\n },\n {\n // .NET JSON\n src: '\\\\\\\\/Date\\\\({timestamp}(?:[+-]\\\\d{4,4})?\\\\)\\\\\\\\/'\n },\n {\n // ISO-8601\n src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CoreParsingFormats.js\n// module id = 290\n// module chunks = 1","'use strict';\n\nvar defaultNewDate = require('../internal/defaultNewDate');\n\nvar DATE_OPTIONS = {\n 'newDateInternal': defaultNewDate\n};\n\nmodule.exports = DATE_OPTIONS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DATE_OPTIONS.js\n// module id = 291\n// module chunks = 1","'use strict';\n\nvar EnglishLocaleBaseDefinition = {\n 'code': 'en',\n 'plural': true,\n 'timeMarkers': 'at',\n 'ampm': 'AM|A.M.|a,PM|P.M.|p',\n 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s',\n 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|',\n 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend',\n 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th',\n 'articles': 'a,an,the',\n 'tokens': 'the,st|nd|rd|th,of|in,a|an,on',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'modifiers': [\n { 'name': 'half', 'src': 'half', 'value': .5 },\n { 'name': 'midday', 'src': 'noon', 'value': 12 },\n { 'name': 'midday', 'src': 'midnight', 'value': 24 },\n { 'name': 'day', 'src': 'yesterday', 'value': -1 },\n { 'name': 'day', 'src': 'today|tonight', 'value': 0 },\n { 'name': 'day', 'src': 'tomorrow', 'value': 1 },\n { 'name': 'sign', 'src': 'ago|before', 'value': -1 },\n { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 },\n { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 },\n { 'name': 'edge', 'src': 'last day', 'value': 1 },\n { 'name': 'edge', 'src': 'end|last', 'value': 2 },\n { 'name': 'shift', 'src': 'last', 'value': -1 },\n { 'name': 'shift', 'src': 'the|this', 'value': 0 },\n { 'name': 'shift', 'src': 'next', 'value': 1 }\n ],\n 'parse': [\n '(?:just)? now',\n '{shift} {unit:5-7}',\n \"{months?} (?:{year}|'{yy})\",\n '{midday} {4?} {day|weekday}',\n '{months},?(?:[-.\\\\/\\\\s]{year})?',\n '{edge} of (?:day)? {day|weekday}',\n '{0} {num}{1?} {weekday} {2} {months},? {year?}',\n '{shift?} {day?} {weekday?} {timeMarker?} {midday}',\n '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}',\n '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{0?} {date}{1?} {2?} {months?}',\n '{weekday} {2?} {shift} {unit:5}',\n '{0?} {num} {2?} {months}\\\\.?,? {year?}',\n '{num?} {unit:4-5} {sign} {day|weekday}',\n '{year}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s]{date}',\n '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n \"{date}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s](?:{year}|'?{yy})\",\n \"{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? (?:{year}|'{yy})?\"\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/EnglishLocaleBaseDefinition.js\n// module id = 292\n// module chunks = 1","'use strict';\n\nvar TIMEZONE_ABBREVIATION_REG = require('./TIMEZONE_ABBREVIATION_REG'),\n LocaleHelpers = require('./LocaleHelpers'),\n DateUnitIndexes = require('./DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n getDate = require('../internal/getDate'),\n getYear = require('../internal/getYear'),\n getHours = require('../internal/getHours'),\n getMonth = require('../internal/getMonth'),\n cloneDate = require('../internal/cloneDate'),\n padNumber = require('../../common/internal/padNumber'),\n getWeekday = require('../internal/getWeekday'),\n callDateGet = require('../../common/internal/callDateGet'),\n mathAliases = require('../../common/var/mathAliases'),\n getWeekYear = require('../internal/getWeekYear'),\n getUTCOffset = require('../internal/getUTCOffset'),\n getDaysSince = require('../internal/getDaysSince'),\n getWeekNumber = require('../internal/getWeekNumber'),\n getMeridiemToken = require('../internal/getMeridiemToken'),\n setUnitAndLowerToEdge = require('../internal/setUnitAndLowerToEdge');\n\nvar localeManager = LocaleHelpers.localeManager,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n ceil = mathAliases.ceil;\n\nvar FormatTokensBase = [\n {\n ldml: 'Dow',\n strf: 'a',\n lowerToken: 'dow',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2);\n }\n },\n {\n ldml: 'Weekday',\n strf: 'A',\n lowerToken: 'weekday',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate);\n }\n },\n {\n ldml: 'Mon',\n strf: 'b h',\n lowerToken: 'mon',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), 2);\n }\n },\n {\n ldml: 'Month',\n strf: 'B',\n lowerToken: 'month',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), alternate);\n }\n },\n {\n strf: 'C',\n get: function(d) {\n return getYear(d).toString().slice(0, 2);\n }\n },\n {\n ldml: 'd date day',\n strf: 'd',\n strfPadding: 2,\n ldmlPaddedToken: 'dd',\n ordinalToken: 'do',\n get: function(d) {\n return getDate(d);\n }\n },\n {\n strf: 'e',\n get: function(d) {\n return padNumber(getDate(d), 2, false, 10, ' ');\n }\n },\n {\n ldml: 'H 24hr',\n strf: 'H',\n strfPadding: 2,\n ldmlPaddedToken: 'HH',\n get: function(d) {\n return getHours(d);\n }\n },\n {\n ldml: 'h hours 12hr',\n strf: 'I',\n strfPadding: 2,\n ldmlPaddedToken: 'hh',\n get: function(d) {\n return getHours(d) % 12 || 12;\n }\n },\n {\n ldml: 'D',\n strf: 'j',\n strfPadding: 3,\n ldmlPaddedToken: 'DDD',\n get: function(d) {\n var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX);\n return getDaysSince(d, s) + 1;\n }\n },\n {\n ldml: 'M',\n strf: 'm',\n strfPadding: 2,\n ordinalToken: 'Mo',\n ldmlPaddedToken: 'MM',\n get: function(d) {\n return getMonth(d) + 1;\n }\n },\n {\n ldml: 'm minutes',\n strf: 'M',\n strfPadding: 2,\n ldmlPaddedToken: 'mm',\n get: function(d) {\n return callDateGet(d, 'Minutes');\n }\n },\n {\n ldml: 'Q',\n get: function(d) {\n return ceil((getMonth(d) + 1) / 3);\n }\n },\n {\n ldml: 'TT',\n strf: 'p',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode);\n }\n },\n {\n ldml: 'tt',\n strf: 'P',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).toLowerCase();\n }\n },\n {\n ldml: 'T',\n lowerToken: 't',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).charAt(0);\n }\n },\n {\n ldml: 's seconds',\n strf: 'S',\n strfPadding: 2,\n ldmlPaddedToken: 'ss',\n get: function(d) {\n return callDateGet(d, 'Seconds');\n }\n },\n {\n ldml: 'S ms',\n strfPadding: 3,\n ldmlPaddedToken: 'SSS',\n get: function(d) {\n return callDateGet(d, 'Milliseconds');\n }\n },\n {\n ldml: 'e',\n strf: 'u',\n ordinalToken: 'eo',\n get: function(d) {\n return getWeekday(d) || 7;\n }\n },\n {\n strf: 'U',\n strfPadding: 2,\n get: function(d) {\n // Sunday first, 0-53\n return getWeekNumber(d, false, 0);\n }\n },\n {\n ldml: 'W',\n strf: 'V',\n strfPadding: 2,\n ordinalToken: 'Wo',\n ldmlPaddedToken: 'WW',\n get: function(d) {\n // Monday first, 1-53 (ISO8601)\n return getWeekNumber(d, true);\n }\n },\n {\n strf: 'w',\n get: function(d) {\n return getWeekday(d);\n }\n },\n {\n ldml: 'w',\n ordinalToken: 'wo',\n ldmlPaddedToken: 'ww',\n get: function(d, localeCode) {\n // Locale dependent, 1-53\n var loc = localeManager.get(localeCode),\n dow = loc.getFirstDayOfWeek(localeCode),\n doy = loc.getFirstDayOfWeekYear(localeCode);\n return getWeekNumber(d, true, dow, doy);\n }\n },\n {\n strf: 'W',\n strfPadding: 2,\n get: function(d) {\n // Monday first, 0-53\n return getWeekNumber(d, false);\n }\n },\n {\n ldmlPaddedToken: 'gggg',\n ldmlTwoDigitToken: 'gg',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode);\n }\n },\n {\n strf: 'G',\n strfPadding: 4,\n strfTwoDigitToken: 'g',\n ldmlPaddedToken: 'GGGG',\n ldmlTwoDigitToken: 'GG',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode, true);\n }\n },\n {\n ldml: 'year',\n ldmlPaddedToken: 'yyyy',\n ldmlTwoDigitToken: 'yy',\n strf: 'Y',\n strfPadding: 4,\n strfTwoDigitToken: 'y',\n get: function(d) {\n return getYear(d);\n }\n },\n {\n ldml: 'ZZ',\n strf: 'z',\n get: function(d) {\n return getUTCOffset(d);\n }\n },\n {\n ldml: 'X',\n get: function(d) {\n return trunc(d.getTime() / 1000);\n }\n },\n {\n ldml: 'x',\n get: function(d) {\n return d.getTime();\n }\n },\n {\n ldml: 'Z',\n get: function(d) {\n return getUTCOffset(d, true);\n }\n },\n {\n ldml: 'z',\n strf: 'Z',\n get: function(d) {\n // Note that this is not accurate in all browsing environments!\n // https://github.com/moment/moment/issues/162\n // It will continue to be supported for Node and usage with the\n // understanding that it may be blank.\n var match = d.toString().match(TIMEZONE_ABBREVIATION_REG);\n return match ? match[1]: '';\n }\n },\n {\n strf: 'D',\n alias: '%m/%d/%y'\n },\n {\n strf: 'F',\n alias: '%Y-%m-%d'\n },\n {\n strf: 'r',\n alias: '%I:%M:%S %p'\n },\n {\n strf: 'R',\n alias: '%H:%M'\n },\n {\n strf: 'T',\n alias: '%H:%M:%S'\n },\n {\n strf: 'x',\n alias: '{short}'\n },\n {\n strf: 'X',\n alias: '{time}'\n },\n {\n strf: 'c',\n alias: '{stamp}'\n }\n];\n\nmodule.exports = FormatTokensBase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/FormatTokensBase.js\n// module id = 293\n// module chunks = 1","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = [\n 'months', 'weekdays', 'units', 'numerals', 'placeholders',\n 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes',\n 'parse', 'timeParse', 'timeFrontParse', 'modifiers'\n];\n\nmodule.exports = LOCALE_ARRAY_FIELDS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js\n// module id = 294\n// module chunks = 1","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LazyLoadedLocales.js\n// module id = 295\n// module chunks = 1","'use strict';\n\nmodule.exports = /(\\w{3})[()\\s\\d]*$/;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js\n// module id = 296\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('./LocaleHelpers'),\n FormatTokensBase = require('./FormatTokensBase'),\n CoreOutputFormats = require('./CoreOutputFormats'),\n forEach = require('../../common/internal/forEach'),\n padNumber = require('../../common/internal/padNumber'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n createFormatMatcher = require('../../common/internal/createFormatMatcher'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar localeManager = LocaleHelpers.localeManager,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n sugarDate = namespaceAliases.sugarDate;\n\nvar ldmlTokens, strfTokens;\n\nfunction buildDateFormatTokens() {\n\n function addFormats(target, tokens, fn) {\n if (tokens) {\n forEach(spaceSplit(tokens), function(token) {\n target[token] = fn;\n });\n }\n }\n\n function buildLowercase(get) {\n return function(d, localeCode) {\n return get(d, localeCode).toLowerCase();\n };\n }\n\n function buildOrdinal(get) {\n return function(d, localeCode) {\n var n = get(d, localeCode);\n return n + localeManager.get(localeCode).getOrdinal(n);\n };\n }\n\n function buildPadded(get, padding) {\n return function(d, localeCode) {\n return padNumber(get(d, localeCode), padding);\n };\n }\n\n function buildTwoDigits(get) {\n return function(d, localeCode) {\n return get(d, localeCode) % 100;\n };\n }\n\n function buildAlias(alias) {\n return function(d, localeCode) {\n return dateFormatMatcher(alias, d, localeCode);\n };\n }\n\n function buildAlternates(f) {\n for (var n = 1; n <= 5; n++) {\n buildAlternate(f, n);\n }\n }\n\n function buildAlternate(f, n) {\n var alternate = function(d, localeCode) {\n return f.get(d, localeCode, n);\n };\n addFormats(ldmlTokens, f.ldml + n, alternate);\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken + n] = buildLowercase(alternate);\n }\n }\n\n function getIdentityFormat(name) {\n return function(d, localeCode) {\n var loc = localeManager.get(localeCode);\n return dateFormatMatcher(loc[name], d, localeCode);\n };\n }\n\n ldmlTokens = {};\n strfTokens = {};\n\n forEach(FormatTokensBase, function(f) {\n var get = f.get, getPadded;\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken] = buildLowercase(get);\n }\n if (f.ordinalToken) {\n ldmlTokens[f.ordinalToken] = buildOrdinal(get, f);\n }\n if (f.ldmlPaddedToken) {\n ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length);\n }\n if (f.ldmlTwoDigitToken) {\n ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfTwoDigitToken) {\n strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfPadding) {\n getPadded = buildPadded(get, f.strfPadding);\n }\n if (f.alias) {\n get = buildAlias(f.alias);\n }\n if (f.allowAlternates) {\n buildAlternates(f);\n }\n addFormats(ldmlTokens, f.ldml, get);\n addFormats(strfTokens, f.strf, getPadded || get);\n });\n\n forEachProperty(CoreOutputFormats, function(src, name) {\n addFormats(ldmlTokens, name, buildAlias(src));\n });\n\n defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) {\n var fn = getIdentityFormat(name);\n addFormats(ldmlTokens, name, fn);\n methods[name] = fn;\n });\n\n addFormats(ldmlTokens, 'time', getIdentityFormat('time'));\n addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp'));\n}\n\nvar dateFormatMatcher;\n\nfunction buildDateFormatMatcher() {\n\n function getLdml(d, token, localeCode) {\n return getOwn(ldmlTokens, token)(d, localeCode);\n }\n\n function getStrf(d, token, localeCode) {\n return getOwn(strfTokens, token)(d, localeCode);\n }\n\n function checkDateToken(ldml, strf) {\n return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf);\n }\n\n // Format matcher for LDML or STRF tokens.\n dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken);\n}\n\nbuildDateFormatTokens();\n\nbuildDateFormatMatcher();\n\nmodule.exports = {\n ldmlTokens: ldmlTokens,\n strfTokens: strfTokens,\n dateFormatMatcher: dateFormatMatcher\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/formattingTokens.js\n// module id = 297\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksAgo.js\n// module id = 298\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksFromNow.js\n// module id = 299\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksSince.js\n// module id = 300\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksUntil.js\n// module id = 301\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsAgo.js\n// module id = 302\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsFromNow.js\n// module id = 303\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsSince.js\n// module id = 304\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsUntil.js\n// module id = 305\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Catalan locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ca')\n *\n */\naddLocale('ca', {\n 'plural': true,\n 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s',\n 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|',\n 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds',\n 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': \"abans d'ahir\", 'value': -2 },\n { 'name': 'day', 'src': 'ahir', 'value': -1 },\n { 'name': 'day', 'src': 'avui', 'value': 0 },\n { 'name': 'day', 'src': 'demà|dema', 'value': 1 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'en', 'value': 1 },\n { 'name': 'shift', 'src': 'passat', 'value': -1 },\n { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 }\n ],\n 'parse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift} {weekday}',\n '{weekday} {shift}',\n '{date?} {2?} {months}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ca\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ca.js\n// module id = 306\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Danish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('da')\n *\n */\naddLocale('da', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|',\n 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} {time}',\n 'full': '{weekday} d. {d}. {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{0?} {weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"da\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/da.js\n// module id = 307\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * German locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('de')\n *\n */\naddLocale('de', {\n 'plural': true,\n 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e',\n 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|',\n 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|',\n 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn',\n 'tokens': 'der',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d}. {Month} {yyyy}',\n 'long': '{d}. {Month} {yyyy} {time}',\n 'full': '{Weekday}, {d}. {Month} {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'um',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'vorgestern', 'value': -2 },\n { 'name': 'day', 'src': 'gestern', 'value': -1 },\n { 'name': 'day', 'src': 'heute', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'vor:|her', 'value': -1 },\n { 'name': 'sign', 'src': 'in', 'value': 1 },\n { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 },\n { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"de\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/de.js\n// module id = 308\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Spanish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('es')\n *\n */\naddLocale('es', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos',\n 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|',\n 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|',\n 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{weekday}, {d} de {month} de {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteayer', 'value': -2 },\n { 'name': 'day', 'src': 'ayer', 'value': -1 },\n { 'name': 'day', 'src': 'hoy', 'value': 0 },\n { 'name': 'day', 'src': 'mañana|manana', 'value': 1 },\n { 'name': 'sign', 'src': 'hace', 'value': -1 },\n { 'name': 'sign', 'src': 'dentro de', 'value': 1 },\n { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {2?} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"es\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/es.js\n// module id = 309\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Finnish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fi')\n *\n */\naddLocale('fi', {\n 'plural': true,\n 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna',\n 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu',\n 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina',\n 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s',\n 'short': '{d}.{M}.{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} klo {time}',\n 'full': '{weekday} {d}. {month} {yyyy} klo {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}.{mm}',\n 'timeMarkers': 'klo,kello',\n 'ordinalSuffix': '.',\n 'relative': function(num, unit, ms, format) {\n var units = this['units'];\n function numberWithUnit(mult) {\n return num + ' ' + units[(8 * mult) + unit];\n }\n function baseUnit() {\n return numberWithUnit(num === 1 ? 0 : 1);\n }\n switch(format) {\n case 'duration': return baseUnit();\n case 'past': return baseUnit() + ' sitten';\n case 'future': return numberWithUnit(2) + ' kuluttua';\n }\n },\n 'modifiers': [\n { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 },\n { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 },\n { 'name': 'day', 'src': 'tänään', 'value': 0 },\n { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 },\n { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 },\n { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 },\n { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 },\n { 'name': 'edge', 'src': 'lopussa', 'value': 2 },\n { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 },\n { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 },\n { 'name': 'shift', 'src': 'viime', 'value': -1 },\n { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 },\n { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{num?} {unit} {sign}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fi\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/fi.js\n// module id = 310\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * French locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fr')\n *\n */\naddLocale('fr', {\n 'plural': true,\n 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee',\n 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|',\n 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|',\n 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix',\n 'tokens': \"l'|la|le,er\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'à',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'hier', 'value': -1 },\n { 'name': 'day', 'src': \"aujourd'hui\", 'value': 0 },\n { 'name': 'day', 'src': 'demain', 'value': 1 },\n { 'name': 'sign', 'src': 'il y a', 'value': -1 },\n { 'name': 'sign', 'src': \"dans|d'ici\", 'value': 1 },\n { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 },\n { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{0?} {weekday} {shift}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fr\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/fr.js\n// module id = 311\n// module chunks = 1","'use strict';\n\nrequire('./ca');\nrequire('./da');\nrequire('./de');\nrequire('./es');\nrequire('./fi');\nrequire('./fr');\nrequire('./it');\nrequire('./ja');\nrequire('./ko');\nrequire('./nl');\nrequire('./no');\nrequire('./pl');\nrequire('./pt');\nrequire('./ru');\nrequire('./sv');\nrequire('./zh-CN');\nrequire('./zh-TW');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/index.js\n// module id = 312\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"it\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/it.js\n// module id = 313\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ja.js\n// module id = 314\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ko.js\n// module id = 315\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/nl.js\n// module id = 316\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/no.js\n// module id = 317\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/pl.js\n// module id = 318\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/pt.js\n// module id = 319\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ru.js\n// module id = 320\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/sv.js\n// module id = 321\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/zh-CN.js\n// module id = 322\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/zh-TW.js\n// module id = 323\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.day;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/day.js\n// module id = 324\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayAfter.js\n// module id = 325\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayAgo.js\n// module id = 326\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayBefore.js\n// module id = 327\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayFromNow.js\n// module id = 328\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.days;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/days.js\n// module id = 329\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysAfter.js\n// module id = 330\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysAgo.js\n// module id = 331\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysBefore.js\n// module id = 332\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysFromNow.js\n// module id = 333\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('../date/var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Number.defineInstance({\n\n 'duration': function(n, localeCode) {\n return localeManager.get(localeCode).getDuration(n);\n }\n\n});\n\nmodule.exports = Sugar.Number.duration;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/duration.js\n// module id = 334\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hour;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hour.js\n// module id = 335\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourAfter.js\n// module id = 336\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourAgo.js\n// module id = 337\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourBefore.js\n// module id = 338\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourFromNow.js\n// module id = 339\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hours.js\n// module id = 340\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursAfter.js\n// module id = 341\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursAgo.js\n// module id = 342\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursBefore.js\n// module id = 343\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursFromNow.js\n// module id = 344\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecond;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecond.js\n// module id = 345\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondAfter.js\n// module id = 346\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondAgo.js\n// module id = 347\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondBefore.js\n// module id = 348\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondFromNow.js\n// module id = 349\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.milliseconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/milliseconds.js\n// module id = 350\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsAfter.js\n// module id = 351\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsAgo.js\n// module id = 352\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsBefore.js\n// module id = 353\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsFromNow.js\n// module id = 354\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minute;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minute.js\n// module id = 355\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteAfter.js\n// module id = 356\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteAgo.js\n// module id = 357\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteBefore.js\n// module id = 358\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteFromNow.js\n// module id = 359\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutes.js\n// module id = 360\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesAfter.js\n// module id = 361\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesAgo.js\n// module id = 362\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesBefore.js\n// module id = 363\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesFromNow.js\n// module id = 364\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.month;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/month.js\n// module id = 365\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthAfter.js\n// module id = 366\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthAgo.js\n// module id = 367\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthBefore.js\n// module id = 368\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthFromNow.js\n// module id = 369\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.months;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/months.js\n// module id = 370\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsAfter.js\n// module id = 371\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsAgo.js\n// module id = 372\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsBefore.js\n// module id = 373\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsFromNow.js\n// module id = 374\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.second;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/second.js\n// module id = 375\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondAfter.js\n// module id = 376\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondAgo.js\n// module id = 377\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondBefore.js\n// module id = 378\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondFromNow.js\n// module id = 379\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.seconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/seconds.js\n// module id = 380\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsAfter.js\n// module id = 381\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsAgo.js\n// module id = 382\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsBefore.js\n// module id = 383\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsFromNow.js\n// module id = 384\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.week;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/week.js\n// module id = 385\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekAfter.js\n// module id = 386\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekAgo.js\n// module id = 387\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekBefore.js\n// module id = 388\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekFromNow.js\n// module id = 389\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeks;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeks.js\n// module id = 390\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksAfter.js\n// module id = 391\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksAgo.js\n// module id = 392\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksBefore.js\n// module id = 393\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksFromNow.js\n// module id = 394\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.year;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/year.js\n// module id = 395\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearAfter.js\n// module id = 396\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearAgo.js\n// module id = 397\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearBefore.js\n// module id = 398\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearFromNow.js\n// module id = 399\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.years;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/years.js\n// module id = 400\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsAfter.js\n// module id = 401\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsAgo.js\n// module id = 402\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsBefore.js\n// module id = 403\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsFromNow.js\n// module id = 404\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeClamp = require('./internal/rangeClamp'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clamp': function(el) {\n return rangeClamp(this, el);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clamp\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/clamp.js\n// module id = 405\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clone': function() {\n return new Range(this.start, this.end);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clone\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/clone.js\n// module id = 406\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'contains': function(el) {\n if (el == null) return false;\n if (el.start && el.end) {\n return el.start >= this.start && el.start <= this.end &&\n el.end >= this.start && el.end <= this.end;\n } else {\n return el >= this.start && el <= this.end;\n }\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"contains\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/contains.js\n// module id = 407\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"days\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/days.js\n// module id = 408\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'every': function(amount, fn) {\n return rangeEvery(this, amount, false, fn);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"every\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/every.js\n// module id = 409\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"hours\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/hours.js\n// module id = 410\n// module chunks = 1","'use strict';\n\n// Static Methods\nrequire('../date/range');\n\n// Prototype Methods\nrequire('./clamp');\nrequire('./clone');\nrequire('./contains');\nrequire('./days');\nrequire('./every');\nrequire('./hours');\nrequire('./intersect');\nrequire('./isValid');\nrequire('./milliseconds');\nrequire('./minutes');\nrequire('./months');\nrequire('./seconds');\nrequire('./span');\nrequire('./toArray');\nrequire('./toString');\nrequire('./union');\nrequire('./weeks');\nrequire('./years');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/index.js\n// module id = 411\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n DURATION_UNITS = require('../var/DURATION_UNITS'),\n Range = require('./Range'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n rangeEvery = require('./rangeEvery'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n defineOnPrototype = require('../../common/internal/defineOnPrototype');\n\nfunction buildDateRangeUnits() {\n var methods = {};\n forEach(DURATION_UNITS.split('|'), function(unit, i) {\n var name = unit + 's', mult, fn;\n if (i < 4) {\n fn = function() {\n return rangeEvery(this, unit, true);\n };\n } else {\n mult = MULTIPLIERS[simpleCapitalize(name)];\n fn = function() {\n return trunc((this.end - this.start) / mult);\n };\n }\n methods[name] = fn;\n });\n defineOnPrototype(Range, methods);\n}\n\nmodule.exports = buildDateRangeUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/buildDateRangeUnits.js\n// module id = 412\n// module chunks = 1","'use strict';\n\nvar Range = require('./Range'),\n DurationTextFormats = require('../var/DurationTextFormats'),\n incrementDate = require('./incrementDate'),\n getDateForRange = require('./getDateForRange'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar sugarDate = namespaceAliases.sugarDate,\n RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO,\n RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION,\n RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION;\n\nfunction createDateRangeFromString(str) {\n var match, datetime, duration, dio, start, end;\n if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) {\n start = getDateForRange(match[1].replace('from', 'at'));\n end = sugarDate.get(start, match[2]);\n return new Range(start, end);\n }\n if (match = str.match(RANGE_REG_FRONT_DURATION)) {\n duration = match[1];\n datetime = match[2];\n }\n if (match = str.match(RANGE_REG_REAR_DURATION)) {\n datetime = match[1];\n duration = match[2];\n }\n if (datetime && duration) {\n start = getDateForRange(datetime);\n dio = getDateIncrementObject(duration);\n end = incrementDate(start, dio[0], dio[1]);\n } else {\n start = str;\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n}\n\nmodule.exports = createDateRangeFromString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/createDateRangeFromString.js\n// module id = 413\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n getPrecision = require('./getPrecision');\n\nvar max = mathAliases.max;\n\nfunction getGreaterPrecision(n1, n2) {\n return max(getPrecision(n1), getPrecision(n2));\n}\n\nmodule.exports = getGreaterPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getGreaterPrecision.js\n// module id = 414\n// module chunks = 1","'use strict';\n\nvar periodSplit = require('../../common/internal/periodSplit');\n\nfunction getPrecision(n) {\n var split = periodSplit(n.toString());\n return split[1] ? split[1].length : 0;\n}\n\nmodule.exports = getPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getPrecision.js\n// module id = 415\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction getRangeMemberNumericValue(m) {\n return isString(m) ? m.charCodeAt(0) : m;\n}\n\nmodule.exports = getRangeMemberNumericValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getRangeMemberNumericValue.js\n// module id = 416\n// module chunks = 1","'use strict';\n\nvar withPrecision = require('../../common/internal/withPrecision');\n\nfunction incrementNumber(current, amount, precision) {\n return withPrecision(current + amount, precision);\n}\n\nmodule.exports = incrementNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementNumber.js\n// module id = 417\n// module chunks = 1","'use strict';\n\nvar chr = require('../../common/var/chr');\n\nfunction incrementString(current, amount) {\n return chr(current.charCodeAt(0) + amount);\n}\n\nmodule.exports = incrementString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementString.js\n// module id = 418\n// module chunks = 1","'use strict';\n\nvar valueIsNotInfinite = require('./valueIsNotInfinite'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nfunction isValidRangeMember(m) {\n var val = getRangeMemberPrimitiveValue(m);\n return (!!val || val === 0) && valueIsNotInfinite(m);\n}\n\nmodule.exports = isValidRangeMember;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/isValidRangeMember.js\n// module id = 419\n// module chunks = 1","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction rangeClamp(range, obj) {\n var clamped,\n start = range.start,\n end = range.end,\n min = end < start ? end : start,\n max = start > end ? start : end;\n if (obj < min) {\n clamped = min;\n } else if (obj > max) {\n clamped = max;\n } else {\n clamped = obj;\n }\n return cloneRangeMember(clamped);\n}\n\nmodule.exports = rangeClamp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeClamp.js\n// module id = 420\n// module chunks = 1","'use strict';\n\nfunction valueIsNotInfinite(m) {\n return m !== -Infinity && m !== Infinity;\n}\n\nmodule.exports = valueIsNotInfinite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/valueIsNotInfinite.js\n// module id = 421\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'intersect': function(range) {\n if (range.start > this.end || range.end < this.start) {\n return new Range(NaN, NaN);\n }\n return new Range(\n this.start > range.start ? this.start : range.start,\n this.end < range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"intersect\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/intersect.js\n// module id = 422\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'isValid': function() {\n return rangeIsValid(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"isValid\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/isValid.js\n// module id = 423\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"milliseconds\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/milliseconds.js\n// module id = 424\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"minutes\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/minutes.js\n// module id = 425\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"months\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/months.js\n// module id = 426\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"seconds\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/seconds.js\n// module id = 427\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n mathAliases = require('../common/var/mathAliases'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype'),\n getRangeMemberNumericValue = require('./internal/getRangeMemberNumericValue');\n\nvar abs = mathAliases.abs;\n\ndefineOnPrototype(Range, {\n\n 'span': function() {\n var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start);\n return rangeIsValid(this) ? abs(n) + 1 : NaN;\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"span\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/span.js\n// module id = 428\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toArray': function() {\n return rangeEvery(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toArray\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/toArray.js\n// module id = 429\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toString': function() {\n return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range';\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toString\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/toString.js\n// module id = 430\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'union': function(range) {\n return new Range(\n this.start < range.start ? this.start : range.start,\n this.end > range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"union\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/union.js\n// module id = 431\n// module chunks = 1","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = RegExp('(\\\\d+)?\\\\s*('+ DURATION_UNITS +')s?', 'i');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DURATION_REG.js\n// module id = 432\n// module chunks = 1","'use strict';\n\nvar Range = require('../internal/Range'),\n classChecks = require('../../common/var/classChecks'),\n getDateForRange = require('../internal/getDateForRange'),\n createDateRangeFromString = require('../internal/createDateRangeFromString');\n\nvar isString = classChecks.isString;\n\nvar DateRangeConstructor = function(start, end) {\n if (arguments.length === 1 && isString(start)) {\n return createDateRangeFromString(start);\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n};\n\nmodule.exports = DateRangeConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DateRangeConstructor.js\n// module id = 433\n// module chunks = 1","'use strict';\n\nvar FULL_CAPTURED_DURATION = require('./FULL_CAPTURED_DURATION');\n\nmodule.exports = {\n RANGE_REG_FROM_TO: /(?:from)?\\s*(.+)\\s+(?:to|until)\\s+(.+)$/i,\n RANGE_REG_REAR_DURATION: RegExp('(.+)\\\\s*for\\\\s*' + FULL_CAPTURED_DURATION, 'i'),\n RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\\\s*'+ FULL_CAPTURED_DURATION +'\\\\s*(?:starting)?\\\\s(?:at\\\\s)?(.+)', 'i')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DurationTextFormats.js\n// module id = 434\n// module chunks = 1","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = '((?:\\\\d+)?\\\\s*(?:' + DURATION_UNITS + '))s?';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/FULL_CAPTURED_DURATION.js\n// module id = 435\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"weeks\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/weeks.js\n// module id = 436\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"years\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/years.js\n// module id = 437\n// module chunks = 1"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 8da88e076165adc2edf1","webpack:///./~/sugar-core/sugar-core.js","webpack:///./~/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./~/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./~/sugar-date/common/var/classChecks.js","webpack:///./~/sugar-date/date/addLocale.js","webpack:///./~/sugar-date/date/var/DateUnitIndexes.js","webpack:///./src/types.js","webpack:///./~/sugar-date/common/var/mathAliases.js","webpack:///./~/sugar-date/date/var/LocaleHelpers.js","webpack:///./src/dom.js","webpack:///./~/sugar-date/common/var/coreUtilityAliases.js","webpack:///./src/feature.js","webpack:///./~/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./~/sugar-date/range/internal/Range.js","webpack:///./src/const.js","webpack:///./src/root.js","webpack:///./~/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/event.js","webpack:///./~/sugar-date/common/internal/callDateGet.js","webpack:///./src/string.js","webpack:///./~/sugar-date/date/internal/getWeekday.js","webpack:///./~/sugar-date/common/var/_utc.js","webpack:///./~/sugar-date/common/var/namespaceAliases.js","webpack:///./~/sugar-date/common/var/trunc.js","webpack:///./~/sugar-date/date/internal/setWeekday.js","webpack:///./~/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./~/sugar-date/common/internal/forEach.js","webpack:///./~/sugar-date/common/internal/isDefined.js","webpack:///./~/sugar-date/date/internal/createDate.js","webpack:///./~/sugar-date/date/internal/getMonth.js","webpack:///./~/sugar-date/date/internal/getYear.js","webpack:///./~/sugar-date/date/var/DateUnits.js","webpack:///./~/sugar-date/common/internal/callDateSet.js","webpack:///./~/sugar-date/date/internal/cloneDate.js","webpack:///./~/sugar-date/date/internal/getDate.js","webpack:///./~/sugar-date/date/internal/setDate.js","webpack:///./~/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./~/sugar-date/common/internal/isUndefined.js","webpack:///./~/sugar-date/date/internal/advanceDate.js","webpack:///./~/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./~/sugar-date/date/internal/getNewDate.js","webpack:///./~/sugar-date/common/internal/defineInstanceSimilar.js","webpack:///./~/sugar-date/common/internal/simpleClone.js","webpack:///./~/sugar-date/common/internal/spaceSplit.js","webpack:///./~/sugar-date/common/var/CommonChars.js","webpack:///./~/sugar-date/date/internal/dateIsValid.js","webpack:///./~/sugar-date/date/internal/iterateOverDateParams.js","webpack:///./~/sugar-date/date/internal/moveToBeginningOfUnit.js","webpack:///./~/sugar-date/date/internal/moveToEndOfUnit.js","webpack:///./~/sugar-date/date/internal/tzOffset.js","webpack:///./~/sugar-date/date/internal/updateDate.js","webpack:///./~/sugar-date/range/internal/rangeIsValid.js","webpack:///./src/number.js","webpack:///./~/sugar-date/common/internal/isObjectType.js","webpack:///./~/sugar-date/common/internal/padNumber.js","webpack:///./~/sugar-date/common/internal/simpleCapitalize.js","webpack:///./~/sugar-date/common/internal/simpleMerge.js","webpack:///./~/sugar-date/date/internal/getEnglishVariant.js","webpack:///./~/sugar-date/date/internal/getExtendedDate.js","webpack:///./~/sugar-date/date/internal/getTimeDistanceForUnit.js","webpack:///./~/sugar-date/date/internal/getWeekNumber.js","webpack:///./~/sugar-date/date/internal/iterateOverDateUnits.js","webpack:///./~/sugar-date/date/internal/moveToBeginningOfWeek.js","webpack:///./~/sugar-date/date/var/ISODefaults.js","webpack:///./~/sugar-date/date/var/_dateOptions.js","webpack:///./~/sugar-date/range/internal/rangeEvery.js","webpack:///./~/sugar-date/range/var/DURATION_UNITS.js","webpack:///./src/array.js","webpack:///./src/modules/baseDropdown.js","webpack:///./src/emitter.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/dropdown.js","webpack:///./~/sugar-date/common/internal/isClass.js","webpack:///./~/sugar-date/common/internal/map.js","webpack:///./~/sugar-date/common/internal/withPrecision.js","webpack:///./~/sugar-date/common/var/chr.js","webpack:///./~/sugar-date/date/internal/advanceDateWithArgs.js","webpack:///./~/sugar-date/date/internal/assertDateIsValid.js","webpack:///./~/sugar-date/date/internal/collectDateArguments.js","webpack:///./~/sugar-date/date/internal/compareDate.js","webpack:///./~/sugar-date/date/internal/createDateWithContext.js","webpack:///./~/sugar-date/date/internal/dateFormat.js","webpack:///./~/sugar-date/date/internal/dateRelative.js","webpack:///./~/sugar-date/date/internal/fullCompareDate.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnit.js","webpack:///./~/sugar-date/date/internal/getDateParamKey.js","webpack:///./~/sugar-date/date/internal/getDaysInMonth.js","webpack:///./~/sugar-date/date/internal/getHours.js","webpack:///./~/sugar-date/date/internal/getRegNonCapturing.js","webpack:///./~/sugar-date/date/internal/getUTCOffset.js","webpack:///./~/sugar-date/date/internal/moveToEndOfWeek.js","webpack:///./~/sugar-date/date/internal/moveToFirstDayOfWeekYear.js","webpack:///./~/sugar-date/date/internal/resetTime.js","webpack:///./~/sugar-date/date/internal/setISOWeekNumber.js","webpack:///./~/sugar-date/date/internal/walkUnitDown.js","webpack:///./~/sugar-date/date/var/AmericanEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CoreOutputFormats.js","webpack:///./~/sugar-date/date/var/LocalizedParsingTokens.js","webpack:///./~/sugar-date/date/var/MINUTES.js","webpack:///./~/sugar-date/date/var/ParsingTokens.js","webpack:///./~/sugar-date/index.js","webpack:///./~/sugar-date/range/internal/cloneRangeMember.js","webpack:///./~/sugar-date/range/internal/getDateForRange.js","webpack:///./~/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./~/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./~/sugar-date/range/internal/incrementDate.js","webpack:///./~/sugar-date/range/var/MULTIPLIERS.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/sort.js","webpack:///./src/cookie.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/dateType.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/help.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/state.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/storage.js","webpack:///./src/tablefilter.js","webpack:///./~/diacritics/index.js","webpack:///./~/sugar-date/common/internal/allCharsReg.js","webpack:///./~/sugar-date/common/internal/collectSimilarMethods.js","webpack:///./~/sugar-date/common/internal/commaSplit.js","webpack:///./~/sugar-date/common/internal/createFormatMatcher.js","webpack:///./~/sugar-date/common/internal/defineAccessor.js","webpack:///./~/sugar-date/common/internal/defineOptionsAccessor.js","webpack:///./~/sugar-date/common/internal/escapeRegExp.js","webpack:///./~/sugar-date/common/internal/filter.js","webpack:///./~/sugar-date/common/internal/getKeys.js","webpack:///./~/sugar-date/common/internal/getOrdinalSuffix.js","webpack:///./~/sugar-date/common/internal/getOwnKey.js","webpack:///./~/sugar-date/common/internal/getSparseArrayIndexes.js","webpack:///./~/sugar-date/common/internal/hasOwnEnumeratedProperties.js","webpack:///./~/sugar-date/common/internal/hasValidPlainObjectPrototype.js","webpack:///./~/sugar-date/common/internal/isArrayIndex.js","webpack:///./~/sugar-date/common/internal/isPlainObject.js","webpack:///./~/sugar-date/common/internal/iterateOverSparseArray.js","webpack:///./~/sugar-date/common/internal/memoizeFunction.js","webpack:///./~/sugar-date/common/internal/periodSplit.js","webpack:///./~/sugar-date/common/internal/privatePropertyAccessor.js","webpack:///./~/sugar-date/common/internal/repeatString.js","webpack:///./~/sugar-date/common/internal/setChainableConstructor.js","webpack:///./~/sugar-date/common/internal/trim.js","webpack:///./~/sugar-date/common/internal/wrapNamespace.js","webpack:///./~/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js","webpack:///./~/sugar-date/common/var/NATIVE_TYPES.js","webpack:///./~/sugar-date/common/var/PRIVATE_PROP_PREFIX.js","webpack:///./~/sugar-date/common/var/STRING_FORMAT_REG.js","webpack:///./~/sugar-date/common/var/fullwidthNumberHelpers.js","webpack:///./~/sugar-date/common/var/methodDefineAliases.js","webpack:///./~/sugar-date/date/addDays.js","webpack:///./~/sugar-date/date/addHours.js","webpack:///./~/sugar-date/date/addMilliseconds.js","webpack:///./~/sugar-date/date/addMinutes.js","webpack:///./~/sugar-date/date/addMonths.js","webpack:///./~/sugar-date/date/addSeconds.js","webpack:///./~/sugar-date/date/addWeeks.js","webpack:///./~/sugar-date/date/addYears.js","webpack:///./~/sugar-date/date/advance.js","webpack:///./~/sugar-date/date/beginningOfDay.js","webpack:///./~/sugar-date/date/beginningOfISOWeek.js","webpack:///./~/sugar-date/date/beginningOfMonth.js","webpack:///./~/sugar-date/date/beginningOfWeek.js","webpack:///./~/sugar-date/date/beginningOfYear.js","webpack:///./~/sugar-date/date/build/setDateChainableConstructorCall.js","webpack:///./~/sugar-date/date/clone.js","webpack:///./~/sugar-date/date/create.js","webpack:///./~/sugar-date/date/daysAgo.js","webpack:///./~/sugar-date/date/daysFromNow.js","webpack:///./~/sugar-date/date/daysInMonth.js","webpack:///./~/sugar-date/date/daysSince.js","webpack:///./~/sugar-date/date/daysUntil.js","webpack:///./~/sugar-date/date/endOfDay.js","webpack:///./~/sugar-date/date/endOfISOWeek.js","webpack:///./~/sugar-date/date/endOfMonth.js","webpack:///./~/sugar-date/date/endOfWeek.js","webpack:///./~/sugar-date/date/endOfYear.js","webpack:///./~/sugar-date/date/format.js","webpack:///./~/sugar-date/date/get.js","webpack:///./~/sugar-date/date/getAllLocaleCodes.js","webpack:///./~/sugar-date/date/getAllLocales.js","webpack:///./~/sugar-date/date/getISOWeek.js","webpack:///./~/sugar-date/date/getLocale.js","webpack:///./~/sugar-date/date/getOption.js","webpack:///./~/sugar-date/date/getUTCOffset.js","webpack:///./~/sugar-date/date/getUTCWeekday.js","webpack:///./~/sugar-date/date/getWeekday.js","webpack:///./~/sugar-date/date/hoursAgo.js","webpack:///./~/sugar-date/date/hoursFromNow.js","webpack:///./~/sugar-date/date/hoursSince.js","webpack:///./~/sugar-date/date/hoursUntil.js","webpack:///./~/sugar-date/date/index.js","webpack:///./~/sugar-date/date/internal/arrayToRegAlternates.js","webpack:///./~/sugar-date/date/internal/buildDateUnitMethods.js","webpack:///./~/sugar-date/date/internal/buildNumberUnitMethods.js","webpack:///./~/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./~/sugar-date/date/internal/callDateSetWithWeek.js","webpack:///./~/sugar-date/date/internal/collectDateParamsFromArguments.js","webpack:///./~/sugar-date/date/internal/compareDay.js","webpack:///./~/sugar-date/date/internal/defaultNewDate.js","webpack:///./~/sugar-date/date/internal/deleteDateParam.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./~/sugar-date/date/internal/getAdjustedUnitForNumber.js","webpack:///./~/sugar-date/date/internal/getArrayWithOffset.js","webpack:///./~/sugar-date/date/internal/getDateParam.js","webpack:///./~/sugar-date/date/internal/getDateParamsFromString.js","webpack:///./~/sugar-date/date/internal/getDaysSince.js","webpack:///./~/sugar-date/date/internal/getHigherUnitIndex.js","webpack:///./~/sugar-date/date/internal/getMeridiemToken.js","webpack:///./~/sugar-date/date/internal/getNewLocale.js","webpack:///./~/sugar-date/date/internal/getParsingTokenValue.js","webpack:///./~/sugar-date/date/internal/getParsingTokenWithSuffix.js","webpack:///./~/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./~/sugar-date/date/internal/getWeekYear.js","webpack:///./~/sugar-date/date/internal/getYearFromAbbreviation.js","webpack:///./~/sugar-date/date/internal/isUTC.js","webpack:///./~/sugar-date/date/internal/iterateOverHigherDateParams.js","webpack:///./~/sugar-date/date/internal/resetLowerUnits.js","webpack:///./~/sugar-date/date/internal/setDateChainableConstructor.js","webpack:///./~/sugar-date/date/internal/setMonth.js","webpack:///./~/sugar-date/date/internal/setYear.js","webpack:///./~/sugar-date/date/is.js","webpack:///./~/sugar-date/date/isAfter.js","webpack:///./~/sugar-date/date/isBefore.js","webpack:///./~/sugar-date/date/isBetween.js","webpack:///./~/sugar-date/date/isFriday.js","webpack:///./~/sugar-date/date/isFuture.js","webpack:///./~/sugar-date/date/isLastMonth.js","webpack:///./~/sugar-date/date/isLastWeek.js","webpack:///./~/sugar-date/date/isLastYear.js","webpack:///./~/sugar-date/date/isLeapYear.js","webpack:///./~/sugar-date/date/isMonday.js","webpack:///./~/sugar-date/date/isNextMonth.js","webpack:///./~/sugar-date/date/isNextWeek.js","webpack:///./~/sugar-date/date/isNextYear.js","webpack:///./~/sugar-date/date/isPast.js","webpack:///./~/sugar-date/date/isSaturday.js","webpack:///./~/sugar-date/date/isSunday.js","webpack:///./~/sugar-date/date/isThisMonth.js","webpack:///./~/sugar-date/date/isThisWeek.js","webpack:///./~/sugar-date/date/isThisYear.js","webpack:///./~/sugar-date/date/isThursday.js","webpack:///./~/sugar-date/date/isToday.js","webpack:///./~/sugar-date/date/isTomorrow.js","webpack:///./~/sugar-date/date/isTuesday.js","webpack:///./~/sugar-date/date/isUTC.js","webpack:///./~/sugar-date/date/isValid.js","webpack:///./~/sugar-date/date/isWednesday.js","webpack:///./~/sugar-date/date/isWeekday.js","webpack:///./~/sugar-date/date/isWeekend.js","webpack:///./~/sugar-date/date/isYesterday.js","webpack:///./~/sugar-date/date/iso.js","webpack:///./~/sugar-date/date/millisecondsAgo.js","webpack:///./~/sugar-date/date/millisecondsFromNow.js","webpack:///./~/sugar-date/date/millisecondsSince.js","webpack:///./~/sugar-date/date/millisecondsUntil.js","webpack:///./~/sugar-date/date/minutesAgo.js","webpack:///./~/sugar-date/date/minutesFromNow.js","webpack:///./~/sugar-date/date/minutesSince.js","webpack:///./~/sugar-date/date/minutesUntil.js","webpack:///./~/sugar-date/date/monthsAgo.js","webpack:///./~/sugar-date/date/monthsFromNow.js","webpack:///./~/sugar-date/date/monthsSince.js","webpack:///./~/sugar-date/date/monthsUntil.js","webpack:///./~/sugar-date/date/range.js","webpack:///./~/sugar-date/date/relative.js","webpack:///./~/sugar-date/date/relativeTo.js","webpack:///./~/sugar-date/date/removeLocale.js","webpack:///./~/sugar-date/date/reset.js","webpack:///./~/sugar-date/date/rewind.js","webpack:///./~/sugar-date/date/secondsAgo.js","webpack:///./~/sugar-date/date/secondsFromNow.js","webpack:///./~/sugar-date/date/secondsSince.js","webpack:///./~/sugar-date/date/secondsUntil.js","webpack:///./~/sugar-date/date/set.js","webpack:///./~/sugar-date/date/setISOWeek.js","webpack:///./~/sugar-date/date/setLocale.js","webpack:///./~/sugar-date/date/setOption.js","webpack:///./~/sugar-date/date/setUTC.js","webpack:///./~/sugar-date/date/setWeekday.js","webpack:///./~/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./~/sugar-date/date/var/CoreParsingFormats.js","webpack:///./~/sugar-date/date/var/DATE_OPTIONS.js","webpack:///./~/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./~/sugar-date/date/var/FormatTokensBase.js","webpack:///./~/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./~/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./~/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js","webpack:///./~/sugar-date/date/var/formattingTokens.js","webpack:///./~/sugar-date/date/weeksAgo.js","webpack:///./~/sugar-date/date/weeksFromNow.js","webpack:///./~/sugar-date/date/weeksSince.js","webpack:///./~/sugar-date/date/weeksUntil.js","webpack:///./~/sugar-date/date/yearsAgo.js","webpack:///./~/sugar-date/date/yearsFromNow.js","webpack:///./~/sugar-date/date/yearsSince.js","webpack:///./~/sugar-date/date/yearsUntil.js","webpack:///./~/sugar-date/locales/ca.js","webpack:///./~/sugar-date/locales/da.js","webpack:///./~/sugar-date/locales/de.js","webpack:///./~/sugar-date/locales/es.js","webpack:///./~/sugar-date/locales/fi.js","webpack:///./~/sugar-date/locales/fr.js","webpack:///./~/sugar-date/locales/index.js","webpack:///./~/sugar-date/locales/it.js","webpack:///./~/sugar-date/locales/ja.js","webpack:///./~/sugar-date/locales/ko.js","webpack:///./~/sugar-date/locales/nl.js","webpack:///./~/sugar-date/locales/no.js","webpack:///./~/sugar-date/locales/pl.js","webpack:///./~/sugar-date/locales/pt.js","webpack:///./~/sugar-date/locales/ru.js","webpack:///./~/sugar-date/locales/sv.js","webpack:///./~/sugar-date/locales/zh-CN.js","webpack:///./~/sugar-date/locales/zh-TW.js","webpack:///./~/sugar-date/number/day.js","webpack:///./~/sugar-date/number/dayAfter.js","webpack:///./~/sugar-date/number/dayAgo.js","webpack:///./~/sugar-date/number/dayBefore.js","webpack:///./~/sugar-date/number/dayFromNow.js","webpack:///./~/sugar-date/number/days.js","webpack:///./~/sugar-date/number/daysAfter.js","webpack:///./~/sugar-date/number/daysAgo.js","webpack:///./~/sugar-date/number/daysBefore.js","webpack:///./~/sugar-date/number/daysFromNow.js","webpack:///./~/sugar-date/number/duration.js","webpack:///./~/sugar-date/number/hour.js","webpack:///./~/sugar-date/number/hourAfter.js","webpack:///./~/sugar-date/number/hourAgo.js","webpack:///./~/sugar-date/number/hourBefore.js","webpack:///./~/sugar-date/number/hourFromNow.js","webpack:///./~/sugar-date/number/hours.js","webpack:///./~/sugar-date/number/hoursAfter.js","webpack:///./~/sugar-date/number/hoursAgo.js","webpack:///./~/sugar-date/number/hoursBefore.js","webpack:///./~/sugar-date/number/hoursFromNow.js","webpack:///./~/sugar-date/number/millisecond.js","webpack:///./~/sugar-date/number/millisecondAfter.js","webpack:///./~/sugar-date/number/millisecondAgo.js","webpack:///./~/sugar-date/number/millisecondBefore.js","webpack:///./~/sugar-date/number/millisecondFromNow.js","webpack:///./~/sugar-date/number/milliseconds.js","webpack:///./~/sugar-date/number/millisecondsAfter.js","webpack:///./~/sugar-date/number/millisecondsAgo.js","webpack:///./~/sugar-date/number/millisecondsBefore.js","webpack:///./~/sugar-date/number/millisecondsFromNow.js","webpack:///./~/sugar-date/number/minute.js","webpack:///./~/sugar-date/number/minuteAfter.js","webpack:///./~/sugar-date/number/minuteAgo.js","webpack:///./~/sugar-date/number/minuteBefore.js","webpack:///./~/sugar-date/number/minuteFromNow.js","webpack:///./~/sugar-date/number/minutes.js","webpack:///./~/sugar-date/number/minutesAfter.js","webpack:///./~/sugar-date/number/minutesAgo.js","webpack:///./~/sugar-date/number/minutesBefore.js","webpack:///./~/sugar-date/number/minutesFromNow.js","webpack:///./~/sugar-date/number/month.js","webpack:///./~/sugar-date/number/monthAfter.js","webpack:///./~/sugar-date/number/monthAgo.js","webpack:///./~/sugar-date/number/monthBefore.js","webpack:///./~/sugar-date/number/monthFromNow.js","webpack:///./~/sugar-date/number/months.js","webpack:///./~/sugar-date/number/monthsAfter.js","webpack:///./~/sugar-date/number/monthsAgo.js","webpack:///./~/sugar-date/number/monthsBefore.js","webpack:///./~/sugar-date/number/monthsFromNow.js","webpack:///./~/sugar-date/number/second.js","webpack:///./~/sugar-date/number/secondAfter.js","webpack:///./~/sugar-date/number/secondAgo.js","webpack:///./~/sugar-date/number/secondBefore.js","webpack:///./~/sugar-date/number/secondFromNow.js","webpack:///./~/sugar-date/number/seconds.js","webpack:///./~/sugar-date/number/secondsAfter.js","webpack:///./~/sugar-date/number/secondsAgo.js","webpack:///./~/sugar-date/number/secondsBefore.js","webpack:///./~/sugar-date/number/secondsFromNow.js","webpack:///./~/sugar-date/number/week.js","webpack:///./~/sugar-date/number/weekAfter.js","webpack:///./~/sugar-date/number/weekAgo.js","webpack:///./~/sugar-date/number/weekBefore.js","webpack:///./~/sugar-date/number/weekFromNow.js","webpack:///./~/sugar-date/number/weeks.js","webpack:///./~/sugar-date/number/weeksAfter.js","webpack:///./~/sugar-date/number/weeksAgo.js","webpack:///./~/sugar-date/number/weeksBefore.js","webpack:///./~/sugar-date/number/weeksFromNow.js","webpack:///./~/sugar-date/number/year.js","webpack:///./~/sugar-date/number/yearAfter.js","webpack:///./~/sugar-date/number/yearAgo.js","webpack:///./~/sugar-date/number/yearBefore.js","webpack:///./~/sugar-date/number/yearFromNow.js","webpack:///./~/sugar-date/number/years.js","webpack:///./~/sugar-date/number/yearsAfter.js","webpack:///./~/sugar-date/number/yearsAgo.js","webpack:///./~/sugar-date/number/yearsBefore.js","webpack:///./~/sugar-date/number/yearsFromNow.js","webpack:///./~/sugar-date/range/clamp.js","webpack:///./~/sugar-date/range/clone.js","webpack:///./~/sugar-date/range/contains.js","webpack:///./~/sugar-date/range/days.js","webpack:///./~/sugar-date/range/every.js","webpack:///./~/sugar-date/range/hours.js","webpack:///./~/sugar-date/range/index.js","webpack:///./~/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./~/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./~/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./~/sugar-date/range/internal/getPrecision.js","webpack:///./~/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./~/sugar-date/range/internal/incrementNumber.js","webpack:///./~/sugar-date/range/internal/incrementString.js","webpack:///./~/sugar-date/range/internal/isValidRangeMember.js","webpack:///./~/sugar-date/range/internal/rangeClamp.js","webpack:///./~/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./~/sugar-date/range/intersect.js","webpack:///./~/sugar-date/range/isValid.js","webpack:///./~/sugar-date/range/milliseconds.js","webpack:///./~/sugar-date/range/minutes.js","webpack:///./~/sugar-date/range/months.js","webpack:///./~/sugar-date/range/seconds.js","webpack:///./~/sugar-date/range/span.js","webpack:///./~/sugar-date/range/toArray.js","webpack:///./~/sugar-date/range/toString.js","webpack:///./~/sugar-date/range/union.js","webpack:///./~/sugar-date/range/var/DURATION_REG.js","webpack:///./~/sugar-date/range/var/DateRangeConstructor.js","webpack:///./~/sugar-date/range/var/DurationTextFormats.js","webpack:///./~/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./~/sugar-date/range/weeks.js","webpack:///./~/sugar-date/range/years.js"],"names":["UNDEFINED","EMPTY_FN","isObj","obj","Object","prototype","toString","call","isFn","isArray","isString","isNumber","isUndef","isNull","isEmpty","length","doc","document","getText","node","textContent","innerText","getFirstTextNode","i","childNodes","n","nodeType","data","createElm","args","tag","el","createElement","arg","setAttribute","removeElm","parentNode","removeChild","createText","txt","createTextNode","hasClass","ele","cls","supportsClassList","classList","contains","className","match","RegExp","addClass","add","removeClass","remove","reg","replace","createOpt","text","value","isSel","isSelected","opt","appendChild","createCheckItem","id","chkValue","labelText","li","label","check","elm","getElementById","o","tagname","getElementsByTagName","documentElement","NOTIMPLEMENTED","Feature","tf","feature","enabled","config","emitter","initialized","on","destroy","Error","enable","init","INPUT","SELECT","MULTIPLE","CHECKLIST","NONE","ENTER_KEY","TAB_KEY","ESC_KEY","UP_ARROW_KEY","DOWN_ARROW_KEY","HEADER_TAG","CELL_TAG","STRING","NUMBER","FORMATTED_NUMBER","DATE","IP_ADDRESS","AUTO_FILTER_DELAY","FEATURES","dateType","class","name","help","enforce","state","markActiveColumns","gridLayout","loader","highlightKeyword","property","popupFilter","rowsCounter","statusBar","clearButton","alternateRows","noResults","paging","root","self","global","addEvt","type","func","capture","addEventListener","attachEvent","removeEvt","removeEventListener","detachEvent","stopEvt","evt","event","stopPropagation","cancelBubble","cancelEvt","preventDefault","returnValue","targetEvt","target","srcElement","keyCode","charCode","which","trim","rgxEsc","chars","escMatch","String","matchCase","caseSensitive","toLowerCase","term","exactMatch","ignoreDiacritics","regexp","modifier","test","parse","decimal","regex","unformatted","parseFloat","isNaN","has","arr","val","sCase","Boolean","l","BaseDropdown","f","customSorter","filter_options_sorter","col","comparer","isCustom","opts","optsTxt","excludedOpts","colIndex","options","isCustomOptions","sortSlc","indexOf","sortNumDesc","compareFn","idx","hasType","getDecimal","locale","getLocale","undefined","sort","colIndexes","forEach","colIdx","values","getValues","build","linkedFilters","selectOptions","Emitter","events","evts","fn","push","splice","apply","slice","arguments","CheckList","containers","containerCssClass","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","emit","setCheckListValues","filter","loadFltOnDemand","getAttribute","ct","div","onCheckListClick","colIdxs","getFiltersByType","refreshFilters","isExternal","container","externalFltTgtId","externalFltTgtIds","divCont","fltIds","buildFilterId","isLinked","refreshAll","parseInt","flt","ul","rows","dom","nbRows","getRowsNb","customValues","getCustomOptions","activeIdx","activeFilterId","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","disableExcludedOptions","innerHTML","k","refRow","hasVisibleRows","visibleRows","cells","ncells","nbCells","j","isRowDisplayed","isRowValid","cellValue","getCellValue","cellString","filteredCol","getVisibleColumnValues","sortOptions","addChecks","chkCt","addTChecks","y","lbl","fltId","disabled","optionClick","style","display","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","chkIndex","split","itemTag","getFilterElement","fltValue","fltIndexes","checked","indSplit","separator","u","cChk","orOperator","nodeName","replaceValue","replaceIndex","getFilterType","lisNb","chk","lblTxt","fltAttr","substr","off","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","e","onSlcChange","selectFlts","multipleFlts","concat","slc","multiple","title","fltCssClass","fltMultiCssClass","opt0","onSlcFocus","slcId","cell","nchilds","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selected","selectedOptions","ignoreCase","a","b","x","numSortAsc","numSortDesc","dateSortAsc","date1","date2","getTime","dateSortDesc","sortNumberStr","numStr1","numStr2","num1","num2","sortDateStr","dateStr1","dateStr2","create","write","hours","expire","Date","toGMTString","cookie","escape","read","cookieValue","search","offset","end","unescape","substring","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","rowIndex","arrIndex","isValid","processRow","isEnabled","validRowsIndex","getValidRows","indexLen","rowIdx","setRowBg","arrIdx","removeRowBg","ClearButton","targetId","btn_reset_target_id","element","btn_reset_text","cssClass","btn_reset_css_class","tooltip","btn_reset_tooltip","html","btn_reset_html","enableIcons","clearFilters","cont","setToolbar","targetEl","rDiv","fltReset","onClick","resetEl","firstChild","DateType","datetime","setLocale","addConfigFormats","colTypes","types","dateStr","localeCode","colType","getOptions","hasOwnProperty","formats","format","addFormat","ex","console","error","GridLayout","grid_layout","width","height","mainContCssClass","cont_css_class","contCssClass","tbl_cont_css_class","headContCssClass","tbl_head_css_class","infDivCssClass","inf_grid_css_class","headRowIndex","headers_row_index","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblMainCont","tblCont","headTblCont","headTbl","fltGrid","tbl","setOverrides","setDefaultColWidths","tblW","initialTableWidth","createContainer","insertBefore","setConfigWidth","t","clientWidth","d","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","filtersRowIndex","thead","tableLayout","cellPadding","cellSpacing","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","headTblW","hiddenWidth","headersRow","isExternalFlt","hasColWidths","len","getCellsNb","colW","getHeadersRowIndex","colWidths","fltTdId","prfxFlt","cl","fltCellTag","cols","tableHead","row","c","thId","JSON","location","decodeURIComponent","encodeURIComponent","hasHashChange","docMode","documentMode","Hash","lastHash","boundSync","hash","sync","bind","update","stringify","overrideAndSync","WIKI_URL","WEBSITE_URL","Help","help_instructions","tgtId","target_id","contTgtId","container_target_id","instrText","instrHtml","btnText","btn_text","btnHtml","btn_html","btnCssClass","btn_css_class","container_css_class","btn","boundMouseup","defaultHtml","version","year","targetElm","toggle","onMouseup","divContainer","helplink","helpEl","divDisplay","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","hasChildNodes","children","highlight","nodeVal","nodeValue","termIdx","pn","nv","before","after","highlightedNodes","querySelectorAll","replaceChild","normalize","highlightKeywords","getFiltersValue","item","unhighlight","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","EVENTS","Loader","css_class","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","show","p","displayLoader","setTimeout","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","getHeaderElement","header","NoResults","no_results_message","content","customContainer","custom_container","customContainerId","custom_container_id","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","hide","getValidRowsNb","setWidth","tHead","tBodies","Paging","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","nrows","Math","ceil","slcIndex","selectedIndex","nbOpts","next","nextIndex","changePage","prev","prevIndex","last","first","_detectKey","key","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","btnNext","btnPrev","btnLast","btnFirst","mDiv","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","validateAllRows","resetPagingInfo","pageNumber","setPage","changeResultsPerPage","filterTable","validRows","mdiv","visibility","z","groupByPage","endPagingRow","h","validRowIdx","r","rowDisplayed","cmd","isInitialized","btnEvt","cmdtype","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","currOpt","Option","index","slcPagesSelIndex","nbFilterableRows","slcIdx","pgNb","getPageNb","pglenIndex","getPageLength","removeResultsPerPage","PopupFilter","popup_filters","closeOnFiltering","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","activeFilterIdx","closeAll","headerWidth","activeFlt","icon","close","buildIcons","setIconsState","cellIndex","changeState","buildAll","contId","placeholder","isOpen","open","focus","exceptIdx","fltType","isMultipleFilter","active","src","iconImg","RowsCounter","rows_counter","fromToTextSeparator","overText","over_text","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","lDiv","refresh","totTxt","getFilterableRowsNb","nbHiddenRows","nbValidRows","pagingStartRow","pagingEndRow","State","cfg","enableHash","enableLocalStorage","enableCookie","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookieDuration","cookie_duration","enableStorage","storage","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","filterValues","keys","column","hidden","_syncFilters","disable","override","setFilterValue","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","statusSpan","statusSpanText","message","localStorage","hasStorage","Storage","duration","save","getKey","removeItem","retrieve","prfxTf","path","pathname","TableFilter","getFullYear","basePath","base_path","grid","filters_row_index","filters_cell_tag","infDiv","inf_div_css_class","lDivCssClass","left_div_css_class","rDivCssClass","right_div_css_class","mDivCssClass","middle_div_css_class","stylePath","style_path","stylesheet","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternate_rows","col_widths","flt_css_class","flt_multi_css_class","fltSmallCssClass","flt_small_css_class","singleFltCssClass","single_flt_css_class","enterKey","enter_key","onBeforeFilter","on_before_filter","onAfterFilter","on_after_filter","case_sensitive","hasExactMatchByCol","columns_exact_match","exactMatchByCol","exact_match","ignore_diacritics","linked_filters","disable_excluded_options","rows_always_visible","external_flt_grid","external_flt_grid_ids","onFiltersLoaded","on_filters_loaded","singleSearchFlt","single_filter","onRowValidated","on_row_validated","cellParser","cell_parser","watermark","isWatermarkArray","toolBarTgtId","toolbar_target_id","clearFilterText","clear_filter_text","enable_empty_option","empty_text","enable_non_empty_option","on_change","sort_select","isSortNumAsc","sort_num_asc","sortNumAsc","isSortNumDesc","sort_num_desc","load_filters_on_demand","hasCustomOptions","custom_options","customOptions","rgxOperator","regexp_operator","empty_operator","nonempty_operator","or_operator","anOperator","and_operator","greater_operator","lower_operator","lower_equal_operator","greater_equal_operator","different_operator","like_operator","equal_operator","start_with_operator","end_with_operator","displayBtn","btnReset","btn_reset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","auto_filter_delay","isUserTyping","autoFilterTimer","highlight_keywords","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxInfDiv","prfxLDiv","prfxRDiv","prfxMDiv","prfxResponsive","extensions","hasExtensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","themes_path","responsive","Mod","ExtRegistry","instantiateFeatures","map","import","inpclass","loadThemes","initFeatures","_initNoFilters","fltrow","_insertFiltersRow","fltcell","colSpan","dropdown","checkList","_buildInputFilter","_buildSubmitButton","setActiveFilterId","enforceVisibility","initExtensions","linkFilters","clearInterval","setInterval","insertRow","inpType","inp","onInpFocus","detectKey","onKeyDown","onKeyUp","onInpBlur","features","Cls","exts","__webpack_public_path__","ext","loadExtension","hasExtension","modulePath","require","mod","inst","default","defaultTheme","theme","styleId","isImported","removeExternalFlts","removeToolbar","destroyExtensions","deleteRow","captions","ids","externalFlt","optTxt","optArray","slcValues","slcTexts","texts","slcSort","sorts","hiddenRows","searchArgs","occurence","singleFltRowValid","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","s","occur","w","_testTerm","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","Number","searchArg","lastIndexOf","srchArg","rgx","ignoresDiacritics","includeHeaders","exclude","getColValues","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","fltColType","getFilterValue","bool","tr","ntrs","excludeHiddenCols","getTableData","tblData","headers","rowData","isColHidden","filteredData","rData","getFilteredDataCol","getRowDisplay","validColValues","unshift","displayFlag","validFlag","query","nbCols","colTags","frag","createDocumentFragment","filterId","getFilterId","slcA1","slcA2","slcA3","curSlc","slcSelectedValue","ignoreDiac","clearText","filePath","imported","attr","files","fileId","callback","isLoaded","file","head","onload","onreadystatechange","readyState","onerror","reCalc","table","headerText"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2DAAmD,6BAA6B,2BAA2B;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW;;AAEzE;AACA;;;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B,gBAAgB,gCAAgC;AAChD,gBAAgB,yBAAyB;AACzC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;;AAEA;AACA,4BAA4B,sBAAsB;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;AC32BD;;AAEA;;AAEA,yB;;;;;;;ACJA;;AAEA;;AAEA,uB;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4B;;;;;;;AC3BA;;AAEA;;AAEA,sB;;;;;;;ACJA;;AAEA;;AAEA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA,yB;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA,2B;;;;;;;ACNA;;AAEA;;AAEA;AACA;AACA;;AAEA,4B;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;;AAEA,0B;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;;ACnEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6B;;;;;;;ACnBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;;ACZA;;AAEA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;ACRA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,uC;;;;;;;ACrBA;;AAEA;AACA;AACA;;AAEA,6B;;;;;;;ACNA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6B;;;;;;;ACVA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,mC;;;;;;;AClBA;;AAEA;;AAEA;AACA;AACA;;AAEA,4B;;;;;;;ACRA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,uC;;;;;;;ACXA;;AAEA;;AAEA;AACA,uBAAuB;AACvB;;AAEA,6B;;;;;;;ACRA;;AAEA;AACA;AACA;;AAEA,4B;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB;AACjB,E;;;;;;;ACVA;;AAEA;AACA;AACA;;AAEA,6B;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,uC;;;;;;;AC/BA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uC;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;AClBA;;AAEA;AACA;AACA;;AAEA,0B;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4B;;;;;;;AC3KA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;;;;;;;;;ACVA;;AAEA;;;;;;;;AAQO,IAAM2I,wBAAQ,SAARA,KAAQ,CAAC5G,KAAD,EAA0B;AAAA,QAAlB6G,OAAkB,uEAAR,GAAQ;;AAC3C;AACA,QAAI,qBAAS7G,KAAT,CAAJ,EAAqB;AACjB,eAAOA,KAAP;AACH;;AAED;AACA;AACA,QAAI8G,QAAQ,IAAIvH,MAAJ,CAAW,WAAWsH,OAAX,GAAqB,GAAhC,EAAqC,CAAC,GAAD,CAArC,CAAZ;AACA,QAAIE,cAAcC,WACd,CAAC,KAAKhH,KAAN,EACCH,OADD,CACS,UADT,EACqB,KADrB,EAC4B;AAD5B,KAECA,OAFD,CAESiH,KAFT,EAEgB,EAFhB,EAE4B;AAF5B,KAGCjH,OAHD,CAGSgH,OAHT,EAGkB,GAHlB,CADc,CAIc;AAJd,KAAlB;;AAOA;AACA,WAAO,CAACI,MAAMF,WAAN,CAAD,GAAsBA,WAAtB,GAAoC,CAA3C;AACH,CAlBM,C;;;;;;;ACVP;;AAEA;AACA;AACA;;AAEA,8B;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;;AChBA;;AAEA;AACA;AACA;;AAEA,kC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,6B;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mC;;;;;;;ACVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,+BAA+B,8BAA8B;AAC7D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,0BAA0B,uBAAuB;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;AC/aA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;ACnCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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;AACA;AACA;AACA;;AAEA,6B;;;;;;;AC5EA;;AAEA;;AAEA;AACA;AACA;;AAEA,uC;;;;;;;ACRA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oDAAoD,KAAK;AACzD;AACA;;AAEA,4B;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,8B;;;;;;;AC3CA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACvCA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,iC;;;;;;;ACnBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACVA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gC;;;;;;;ACVA;;AAEA;;AAEA;AACA;AACA;;AAEA,0B;;;;;;;ACRA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;;ACZA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0C;;;;;;;ACfA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,2B;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kC;;;;;;;ACjCA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;;ACdA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,GAAG,EAAE,GAAG,EAAE,KAAK;AAC7B,cAAc,MAAM,EAAE,EAAE,GAAG,KAAK;AAChC,cAAc,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK;AACvC,cAAc,QAAQ,GAAG,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK;AAClD,cAAc,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK;AAC1C,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG;AAC1B,CAAC;;AAED,2C;;;;;;;AChBA;;AAEA;AACA,eAAe,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AACtD,eAAe,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC1D,eAAe,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC5D;;AAEA,mC;;;;;;;ACRA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;AC/BA;;AAEA,2B;;;;;;;ACFA;;AAEA;AACA;AACA;AACA,cAAc,EAAE;AAChB,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,EAAE;AAChB,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACxEA;;AAEA;AACA;;AAEA,wC;;;;;;;ACLA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,kC;;;;;;;ACfA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,wC;;;;;;;AC7BA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,8C;;;;;;;ACXA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6B;;;;;;ACTA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;ACpBA;;AACA;;AAEA;;AAEA;;;;;;;;AAQO,IAAMqR,kCAAa,SAAbA,UAAa,CAACC,CAAD,EAAIC,CAAJ,EAAU;AAChC,MAAIC,IAAIF,EAAE1M,WAAF,EAAR;AACA,MAAIoI,IAAIuE,EAAE3M,WAAF,EAAR;AACA,SAAO4M,IAAIxE,CAAJ,GAAQ,CAAC,CAAT,GAAcwE,IAAIxE,CAAJ,GAAQ,CAAR,GAAY,CAAjC;AACH,CAJM;;AAMP;;;;;;AAMO,IAAMyE,kCAAa,SAAbA,UAAa,CAACH,CAAD,EAAIC,CAAJ;AAAA,SAAWD,IAAIC,CAAf;AAAA,CAAnB;;AAEP;;;;;;AAMO,IAAMG,oCAAc,SAAdA,WAAc,CAACJ,CAAD,EAAIC,CAAJ;AAAA,SAAWA,IAAID,CAAf;AAAA,CAApB;;AAEP;;;;;;;AAOO,IAAMK,oCAAc,SAAdA,WAAc,CAACC,KAAD,EAAQC,KAAR;AAAA,SAAkBD,MAAME,OAAN,KAAkBD,MAAMC,OAAN,EAApC;AAAA,CAApB;;AAEP;;;;;;;AAOO,IAAMC,sCAAe,SAAfA,YAAe,CAACH,KAAD,EAAQC,KAAR;AAAA,SAAkBA,MAAMC,OAAN,KAAkBF,MAAME,OAAN,EAApC;AAAA,CAArB;;AAEP;;;;;;;AAOO,IAAME,wCAAgB,SAAhBA,aAAgB,CAACjL,SAAD,EAA8B;AAAA,MAAlB3B,OAAkB,uEAAR,GAAQ;;AACvD,SAAO,UAAC6M,OAAD,EAAUC,OAAV,EAAsB;AACzB,QAAIC,OAAO,mBAAQF,OAAR,EAAiB7M,OAAjB,CAAX;AACA,QAAIgN,OAAO,mBAAQF,OAAR,EAAiB9M,OAAjB,CAAX;AACA,WAAO2B,UAAUoL,IAAV,EAAgBC,IAAhB,CAAP;AACH,GAJD;AAKH,CANM;;AAQP;;;;;;;AAOO,IAAMC,oCAAc,SAAdA,WAAc,CAACtL,SAAD,EAAiC;AAAA,MAArBI,MAAqB,uEAAZ,OAAY;;AACxD,SAAO,UAACmL,QAAD,EAAWC,QAAX,EAAwB;AAC3B,QAAIX,QAAQ,gBAAUY,MAAV,CAAiBF,QAAjB,EAA2BnL,MAA3B,CAAZ;AACA,QAAI0K,QAAQ,gBAAUW,MAAV,CAAiBD,QAAjB,EAA2BpL,MAA3B,CAAZ;AACA,WAAOJ,UAAU6K,KAAV,EAAiBC,KAAjB,CAAP;AACH,GAJD;AAKH,CANM,C;;;;;;;;;;;;;AC3EP;;AAEA;;;;AAIA,IAAMhW,MAAM,WAAKC,QAAjB;;kBAEe;;AAEX;;;;;;AAMA2W,SARW,iBAQL9Q,IARK,EAQCpD,KARD,EAQQmU,KARR,EAQe;AACtB,YAAIC,SAAS,EAAb;AACA,YAAID,KAAJ,EAAW;AACPC,qBAAS,IAAIC,IAAJ,CAAU,IAAIA,IAAJ,EAAD,CAAad,OAAb,KAAyBY,QAAQ,OAA1C,CAAT;AACAC,qBAAS,eAAeA,OAAOE,WAAP,EAAxB;AACH;AACDhX,YAAIiX,MAAJ,GAAanR,OAAO,GAAP,GAAaoR,OAAOxU,KAAP,CAAb,GAA6BoU,MAA1C;AACH,KAfU;;;AAiBX;;;;;AAKAK,QAtBW,gBAsBNrR,IAtBM,EAsBA;AACP,YAAIsR,cAAc,EAAlB;AAAA,YACIC,SAASvR,OAAO,GADpB;AAEA,YAAI9F,IAAIiX,MAAJ,CAAWlX,MAAX,GAAoB,CAAxB,EAA2B;AACvB,gBAAIkX,SAASjX,IAAIiX,MAAjB;AAAA,gBACIK,SAASL,OAAOjM,OAAP,CAAeqM,MAAf,CADb;AAEA,gBAAIC,WAAW,CAAC,CAAhB,EAAmB;AACfA,0BAAUD,OAAOtX,MAAjB;AACA,oBAAIwX,MAAMN,OAAOjM,OAAP,CAAe,GAAf,EAAoBsM,MAApB,CAAV;AACA,oBAAIC,QAAQ,CAAC,CAAb,EAAgB;AACZA,0BAAMN,OAAOlX,MAAb;AACH;AACDqX,8BAAcI,SAASP,OAAOQ,SAAP,CAAiBH,MAAjB,EAAyBC,GAAzB,CAAT,CAAd;AACH;AACJ;AACD,eAAOH,WAAP;AACH,KAtCU;;;AAwCX;;;;AAIA/U,UA5CW,kBA4CJyD,IA5CI,EA4CE;AACT,aAAK8Q,KAAL,CAAW9Q,IAAX,EAAiB,EAAjB,EAAqB,CAAC,CAAtB;AACH;AA9CU,C;;;;;;;;;;;;;;;;ACRf;;AACA;;;;;;;;AAEA;;;IAGa4R,a,WAAAA,a;;;AAET;;;;;AAKA,2BAAY5T,EAAZ,EAAgB;AAAA;;AAAA,kIACNA,EADM,EACF,eADE;;AAGZ,YAAIG,SAAS,MAAKA,MAAlB;AACA;;;;AAIA,cAAK0T,OAAL,GAAe1T,OAAO2T,kBAAP,IAA6B,MAA5C;;AAEA;;;;AAIA,cAAKC,MAAL,GAAc5T,OAAO6T,iBAAP,IAA4B,KAA1C;AAdY;AAef;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK3T,WAAT,EAAsB;AAClB;AACH;;AAED,iBAAK4T,UAAL;;AAEA;AACA,iBAAK7T,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,EAAkB,WAAlB,CAAhB,EACI,UAACN,EAAD,EAAKkU,QAAL,EAAeC,QAAf,EAAyBC,OAAzB;AAAA,uBACI,OAAKC,UAAL,CAAgBH,QAAhB,EAA0BC,QAA1B,EAAoCC,OAApC,CADJ;AAAA,aADJ;AAGA,iBAAKhU,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,CAAhB,EAAmC;AAAA,uBAAM,OAAK2T,UAAL,EAAN;AAAA,aAAnC;AACA,iBAAK7T,OAAL,CAAaE,EAAb,CAAgB,CAAC,cAAD,CAAhB,EAAkC;AAAA,uBAAM,OAAK2T,UAAL,EAAN;AAAA,aAAlC;;AAEA;AACA,iBAAK5T,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;qCAGa;AACT,gBAAI,CAAC,KAAKiU,SAAL,EAAL,EAAuB;AACnB;AACH;AACD,gBAAItU,KAAK,KAAKA,EAAd;AACA,gBAAIuU,iBAAiBvU,GAAGwU,YAAH,CAAgB,IAAhB,CAArB;AACA,gBAAIC,WAAWF,eAAetY,MAA9B;AACA,gBAAIoL,MAAM,CAAV;;AAEA;AACA,iBAAK,IAAIoF,IAAI,CAAb,EAAgBA,IAAIgI,QAApB,EAA8BhI,GAA9B,EAAmC;AAC/B,oBAAIiI,SAASH,eAAe9H,CAAf,CAAb;AACA,qBAAKkI,QAAL,CAAcD,MAAd,EAAsBrN,GAAtB;AACAA;AACH;AACJ;;AAED;;;;;;;;;mCAMWqN,M,EAAQE,M,EAAQR,O,EAAS;AAChC,gBAAIA,OAAJ,EAAa;AACT,qBAAKO,QAAL,CAAcD,MAAd,EAAsBE,MAAtB;AACH,aAFD,MAEO;AACH,qBAAKC,WAAL,CAAiBH,MAAjB;AACH;AACJ;;AAED;;;;;;;;;;iCAOSA,M,EAAQrN,G,EAAK;AAClB,gBAAI,CAAC,KAAKiN,SAAL,EAAD,IAAqBzO,MAAM6O,MAAN,CAAzB,EAAwC;AACpC;AACH;AACD,gBAAIrJ,OAAO,KAAKrL,EAAL,CAAQsL,GAAR,GAAcD,IAAzB;AACA,gBAAI5O,IAAIoJ,MAAMwB,GAAN,IAAaqN,MAAb,GAAsBrN,GAA9B;AACA,iBAAKwN,WAAL,CAAiBH,MAAjB;;AAEA,+BAASrJ,KAAKqJ,MAAL,CAAT,EAAwBjY,IAAI,CAAL,GAAU,KAAKoX,OAAf,GAAyB,KAAKE,MAArD;AACH;;AAED;;;;;;;;oCAKY1M,G,EAAK;AACb,gBAAIxB,MAAMwB,GAAN,CAAJ,EAAgB;AACZ;AACH;AACD,gBAAIgE,OAAO,KAAKrL,EAAL,CAAQsL,GAAR,GAAcD,IAAzB;AACA,kCAAYA,KAAKhE,GAAL,CAAZ,EAAuB,KAAK0M,MAA5B;AACA,kCAAY1I,KAAKhE,GAAL,CAAZ,EAAuB,KAAKwM,OAA5B;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKxT,WAAV,EAAuB;AACnB;AACH;AACD,gBAAIkL,SAAS,KAAKvL,EAAL,CAAQwL,SAAR,CAAkB,IAAlB,CAAb;AACA,iBAAK,IAAI/O,IAAI,CAAb,EAAgBA,IAAI8O,MAApB,EAA4B9O,GAA5B,EAAiC;AAC7B,qBAAKoY,WAAL,CAAiBpY,CAAjB;AACH;;AAED;AACA,iBAAK2D,OAAL,CAAauP,GAAb,CAAiB,CAAC,eAAD,EAAkB,WAAlB,CAAjB,EACI,UAAC3P,EAAD,EAAKkU,QAAL,EAAeC,QAAf,EAAyBC,OAAzB;AAAA,uBACI,OAAKC,UAAL,CAAgBH,QAAhB,EAA0BC,QAA1B,EAAoCC,OAApC,CADJ;AAAA,aADJ;AAGA,iBAAKhU,OAAL,CAAauP,GAAb,CAAiB,CAAC,eAAD,CAAjB,EAAoC;AAAA,uBAAM,OAAKsE,UAAL,EAAN;AAAA,aAApC;AACA,iBAAK7T,OAAL,CAAauP,GAAb,CAAiB,CAAC,cAAD,CAAjB,EAAmC;AAAA,uBAAM,OAAKsE,UAAL,EAAN;AAAA,aAAnC;;AAEA,iBAAK5T,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;ACzIL;;AACA;;AACA;;;;;;;;AAEA;;;IAGayU,W,WAAAA,W;;;AAET;;;;AAIA,yBAAY9U,EAAZ,EAAgB;AAAA;;AAAA,8HACNA,EADM,EACF,UADE;;AAGZ,YAAIqG,IAAI,MAAKlG,MAAb;;AAEA;;;;AAIA,cAAK4U,QAAL,GAAgB1O,EAAE2O,mBAAF,IAAyB,IAAzC;;AAEA;;;;;AAKA,cAAKtK,SAAL,GAAiB,IAAjB;;AAEA;;;;;AAKA,cAAKuK,OAAL,GAAe,IAAf;;AAEA;;;;AAIA,cAAKtW,IAAL,GAAY0H,EAAE6O,cAAF,IAAoB,OAAhC;;AAEA;;;;AAIA,cAAKC,QAAL,GAAgB9O,EAAE+O,mBAAF,IAAyB,OAAzC;;AAEA;;;;AAIA,cAAKC,OAAL,GAAehP,EAAEiP,iBAAF,IAAuB,eAAtC;;AAEA;;;;AAIA,cAAKC,IAAL,GAAYlP,EAAEmP,cAAF,KACP,CAACxV,GAAGyV,WAAJ,GAAkB,IAAlB,GACG,0CAA0C,MAAKN,QAA/C,GACA,IADA,GACO,SADP,GACmB,MAAKE,OADxB,GACkC,MAH9B,CAAZ;AA/CY;AAmDf;;AAED;;;;;;;;kCAIU;AACN,gBAAI,CAAC,KAAKf,SAAL,EAAL,EAAuB;AACnB;AACH;AACD,iBAAKtU,EAAL,CAAQ0V,YAAR;AACH;;AAED;;;;;;+BAGO;AAAA;;AACH,gBAAI1V,KAAK,KAAKA,EAAd;;AAEA,gBAAI,KAAKK,WAAT,EAAsB;AAClB;AACH;;AAED,gBAAIsV,OAAO,oBAAU,MAAV,CAAX;;AAEA;AACA,gBAAI,CAAC,KAAKZ,QAAV,EAAoB;AAChB/U,mBAAG4V,UAAH;AACH;AACD,gBAAIC,WAAW,CAAC,KAAKd,QAAN,GAAiB/U,GAAG8V,IAApB,GAA2B,cAAI,KAAKf,QAAT,CAA1C;AACAc,qBAAS7W,WAAT,CAAqB2W,IAArB;;AAEA,gBAAI,CAAC,KAAKJ,IAAV,EAAgB;AACZ,oBAAIQ,WAAW,oBAAU,GAAV,EAAe,CAAC,MAAD,EAAS,qBAAT,CAAf,CAAf;AACAA,yBAAS9X,SAAT,GAAqB,KAAKkX,QAA1B;AACAY,yBAAS/W,WAAT,CAAqB,qBAAW,KAAKL,IAAhB,CAArB;AACAgX,qBAAK3W,WAAL,CAAiB+W,QAAjB;AACA,mCAAOA,QAAP,EAAiB,OAAjB,EAA0B;AAAA,2BAAM,OAAKC,OAAL,EAAN;AAAA,iBAA1B;AACH,aAND,MAMO;AACHL,qBAAK1J,SAAL,GAAiB,KAAKsJ,IAAtB;AACA,oBAAIU,UAAUN,KAAKO,UAAnB;AACA,mCAAOD,OAAP,EAAgB,OAAhB,EAAyB;AAAA,2BAAM,OAAKD,OAAL,EAAN;AAAA,iBAAzB;AACH;AACD,iBAAKf,OAAL,GAAeU,KAAKO,UAApB;AACA,iBAAKxL,SAAL,GAAiBiL,IAAjB;;AAEA;AACA,iBAAKtV,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;kCAGU;AACN,gBAAI,CAAC,KAAKA,WAAV,EAAuB;AACnB;AACH;AACD,gCAAU,KAAK4U,OAAf;AACA,gCAAU,KAAKvK,SAAf;AACA,iBAAKuK,OAAL,GAAe,IAAf;AACA,iBAAKvK,SAAL,GAAiB,IAAjB;AACA,iBAAKrK,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AC9HL;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;;;IAKa8V,Q,WAAAA,Q;;;AAET;;;;AAIA,sBAAYnW,EAAZ,EAAgB;AAAA;;AAGZ;;;;AAHY,wHACNA,EADM,EACF,UADE;;AAOZ,cAAKwH,MAAL,GAAcxH,GAAGwH,MAAjB;;AAEA;;;;AAIA,cAAK4O,QAAL;;AAEA,cAAK3V,MAAL;AAfY;AAgBf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAKJ,WAAT,EAAsB;AAClB;AACH;;AAED;AACA,iBAAK+V,QAAL,CAAcC,SAAd,CAAwB,KAAK7O,MAA7B;;AAEA;AACA,iBAAK8O,gBAAL,CAAsB,KAAKtW,EAAL,CAAQuW,QAA9B;;AAEA,iBAAKnW,OAAL,CAAaE,EAAb,CACI,CAAC,uBAAD,CADJ,EAEI,UAACN,EAAD,EAAKwW,KAAL;AAAA,uBAAe,OAAKF,gBAAL,CAAsBE,KAAtB,CAAf;AAAA,aAFJ;;AAKA;AACA,iBAAKpW,OAAL,CAAa0J,IAAb,CAAkB,uBAAlB,EAA2C,KAAK9J,EAAhD,EAAoD,IAApD;;AAEA;AACA,iBAAKK,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;;;;;8BAOMoW,O,EAASC,U,EAAY;AACvB,mBAAO,KAAKN,QAAL,CAAcvD,MAAd,CAAqB4D,OAArB,EAA8BC,UAA9B,CAAP;AACH;;AAED;;;;;;;;;gCAMQD,O,EAASC,U,EAAY;AACzB,mBAAO,KAAKN,QAAL,CAAchC,OAAd,CAAsB,KAAK5O,KAAL,CAAWiR,OAAX,EAAoBC,UAApB,CAAtB,CAAP;AACH;;AAED;;;;;;;;;;mCAOW5P,Q,EAAU0P,K,EAAO;AACxBA,oBAAQA,SAAS,KAAKxW,EAAL,CAAQuW,QAAzB;AACA,gBAAII,UAAUH,MAAM1P,QAAN,CAAd;AACA,mBAAO,kBAAM6P,OAAN,IAAiBA,OAAjB,GAA2B,EAAlC;AACH;;AAED;;;;;;;;;kCAMU7P,Q,EAAU;AAChB,mBAAO,KAAK8P,UAAL,CAAgB9P,QAAhB,EAA0BU,MAA1B,IAAoC,KAAKA,MAAhD;AACH;;AAED;;;;;;;;;;;;;;2CAW2B;AAAA;;AAAA,gBAAVgP,KAAU,uEAAJ,EAAI;;AACvBA,kBAAM3O,OAAN,CAAc,UAACzE,IAAD,EAAOiE,GAAP,EAAe;AACzB,oBAAIN,UAAU,OAAK6P,UAAL,CAAgBvP,GAAhB,EAAqBmP,KAArB,CAAd;AACA,oBAAIzP,QAAQ3D,IAAR,oBAAyB2D,QAAQ8P,cAAR,CAAuB,QAAvB,CAA7B,EAA+D;AAC3D,wBAAIrP,SAAS,OAAK4O,QAAL,CAAc3O,SAAd,CACTV,QAAQS,MAAR,IAAkB,OAAKA,MADd,CAAb;AAGA,wBAAIsP,UAAU,oBAAQ/P,QAAQgQ,MAAhB,IACVhQ,QAAQgQ,MADE,GACO,CAAChQ,QAAQgQ,MAAT,CADrB;;AAGA;AACA,wBAAI;AACAD,gCAAQjP,OAAR,CAAgB,UAACkP,MAAD,EAAY;AACxBvP,mCAAOwP,SAAP,CAAiBD,MAAjB;AACH,yBAFD;AAGH,qBAJD,CAIE,OAAOE,EAAP,EAAW;AACT,mCAAKC,OAAL,CAAaC,KAAb,CAAmBF,EAAnB;AACH;AACJ;AACJ,aAlBD;AAmBH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAK5W,WAAV,EAAuB;AACnB;AACH;;AAED;;AAEA,iBAAKD,OAAL,CAAauP,GAAb,CACI,CAAC,uBAAD,CADJ,EAEI,UAAC3P,EAAD,EAAKwW,KAAL;AAAA,uBAAe,OAAKF,gBAAL,CAAsBE,KAAtB,CAAf;AAAA,aAFJ;;AAKA,iBAAKnW,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AC3JL;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;IAGa+W,U,WAAAA,U;;;AAET;;;;AAIA,wBAAYpX,EAAZ,EAAgB;AAAA;;AAAA,4HACNA,EADM,EACF,YADE;;AAGZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAYkX,WAAZ,IAA2B,EAAnC;;AAEA;;;;AAIA,cAAKC,KAAL,GAAajR,EAAEiR,KAAF,IAAW,IAAxB;;AAEA;;;;AAIA,cAAKC,MAAL,GAAclR,EAAEkR,MAAF,IAAY,IAA1B;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwBnR,EAAEoR,cAAF,IAAoB,UAA5C;;AAEA;;;;AAIA,cAAKC,YAAL,GAAoBrR,EAAEsR,kBAAF,IAAwB,aAA5C;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwBvR,EAAEwR,kBAAF,IAAwB,iBAAhD;;AAEA;;;;AAIA,cAAKC,cAAL,GAAsBzR,EAAE0R,kBAAF,IAAwB,SAA9C;;AAEA;;;;AAIA,cAAKC,YAAL,GAAoB3R,EAAE4R,iBAAF,IAAuB,CAA3C;;AAEA;;;;AAIA,cAAKC,QAAL,GAAgB7R,EAAE8R,YAAF,IAAkB,CAAC,CAAD,CAAlC;;AAEA;;;;AAIA,cAAKC,OAAL,GAAe/R,EAAE+R,OAAF,KAAc,KAAd,GAAsB,KAAtB,GAA8B,IAA7C;;AAEA;;;;AAIA,cAAKC,SAAL,GAAiBnS,QAAQG,EAAEiS,UAAV,CAAjB;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuBlS,EAAEmS,iBAAF,IAAuB,OAA9C;;AAEA;;;;;AAKA,cAAKC,OAAL,GAAe,EAAf;;AAEA;;;;;AAKA,cAAKC,aAAL,GAAqB,MAArB;;AAEA;;;;;AAKA,cAAKC,UAAL,GAAkB,YAAlB;;AAEA;;;;;AAKA,cAAKC,aAAL,GAAqB5Y,GAAGsL,GAAH,GAASuN,SAA9B;;AAEA;;;;;AAKA,cAAKC,YAAL,GAAoB,cAAI9Y,GAAGsL,GAAH,EAAJ,EAAc,KAAd,EAAqBrP,MAArB,GAA8B,CAA9B,GAAkC,IAAlC,GAAyC,KAA7D;;AAEA;;;;AAIA,cAAK8c,WAAL,GAAmB,IAAnB;;AAEA;;;;AAIA,cAAKC,OAAL,GAAe,IAAf;;AAEA;;;;AAIA,cAAKC,WAAL,GAAmB,IAAnB;;AAEA;;;;AAIA,cAAKC,OAAL,GAAe,IAAf;;AAEA;AACAlZ,WAAGmZ,OAAH,GAAa,MAAKf,OAAlB;AAnIY;AAoIf;;AAED;;;;;;;;+BAIO;AAAA;;AACH,gBAAIpY,KAAK,KAAKA,EAAd;AACA,gBAAIoZ,MAAMpZ,GAAGsL,GAAH,EAAV;;AAEA,gBAAI,KAAKjL,WAAT,EAAsB;AAClB;AACH;;AAED;AACA,iBAAKgZ,YAAL;;AAEA;AACA,iBAAKC,mBAAL;;AAEA;AACA,gBAAIC,OAAO,KAAKC,iBAAL,EAAX;;AAEA;AACA,iBAAKT,WAAL,GAAmB,KAAKU,eAAL,CACf,KADe,EACR,KAAKjC,gBADG,CAAnB;AAEA,gBAAI,KAAKF,KAAT,EAAgB;AACZ,qBAAKyB,WAAL,CAAiBrL,KAAjB,CAAuB4J,KAAvB,GAA+B,KAAKA,KAApC;AACH;AACD8B,gBAAI9b,UAAJ,CAAeoc,YAAf,CAA4B,KAAKX,WAAjC,EAA8CK,GAA9C;;AAEA;AACA,iBAAKJ,OAAL,GAAe,KAAKS,eAAL,CAAqB,KAArB,EAA4B,KAAK/B,YAAjC,CAAf;AACA,iBAAKiC,cAAL,CAAoB,KAAKX,OAAzB;AACA,gBAAI,KAAKzB,MAAT,EAAiB;AACb,qBAAKyB,OAAL,CAAatL,KAAb,CAAmB6J,MAAnB,GAA4B,KAAKA,MAAjC;AACH;AACD6B,gBAAI9b,UAAJ,CAAeoc,YAAf,CAA4B,KAAKV,OAAjC,EAA0CI,GAA1C;AACA,gBAAIQ,IAAI,oBAAUR,GAAV,CAAR;AACA,iBAAKJ,OAAL,CAAaha,WAAb,CAAyB4a,CAAzB;;AAEA;AACA,gBAAIR,IAAI1L,KAAJ,CAAU4J,KAAV,KAAoB,EAAxB,EAA4B;AACxB8B,oBAAI1L,KAAJ,CAAU4J,KAAV,GAAkB,CAAC,sBAAS,GAAT,EAAciC,IAAd,IACfH,IAAIS,WADW,GACGN,IADJ,IACY,IAD9B;AAEH;;AAED,gBAAIO,IAAI,oBAAU,KAAKd,OAAf,CAAR;AACA,iBAAKD,WAAL,CAAiB/Z,WAAjB,CAA6B8a,CAA7B;;AAEA;AACA,iBAAKb,WAAL,GAAmB,KAAKQ,eAAL,CACf,KADe,EACR,KAAK7B,gBADG,CAAnB;;AAGA;AACA,iBAAKsB,OAAL,GAAe,oBAAU,OAAV,CAAf;AACA,gBAAIa,KAAK,oBAAU,OAAV,CAAT;;AAEA;AACA;AACA,gBAAIC,OAAOZ,IAAI/N,IAAJ,CAAS,KAAK2M,YAAd,CAAX;AACA,gBAAIiC,eAAe,KAAKC,iBAAL,CAAuBF,IAAvB,CAAnB;;AAEA;AACA,gBAAIG,aAAa,KAAKC,gBAAL,EAAjB;;AAEA;AACA,iBAAKC,aAAL,CAAmBN,EAAnB;;AAEA,iBAAKb,OAAL,CAAala,WAAb,CAAyB+a,EAAzB;AACA,gBAAI/Z,GAAGsa,eAAH,KAAuB,CAA3B,EAA8B;AAC1BP,mBAAGL,YAAH,CAAgBS,UAAhB,EAA4BH,IAA5B;AACH,aAFD,MAEO;AACHD,mBAAG/a,WAAH,CAAemb,UAAf;AACH;;AAED,iBAAKlB,WAAL,CAAiBja,WAAjB,CAA6B,KAAKka,OAAlC;AACA,iBAAKF,OAAL,CAAa1b,UAAb,CAAwBoc,YAAxB,CAAqC,KAAKT,WAA1C,EAAuD,KAAKD,OAA5D;;AAEA;AACA,gBAAIuB,QAAQ,cAAInB,GAAJ,EAAS,OAAT,CAAZ;AACA,gBAAImB,MAAMte,MAAN,GAAe,CAAnB,EAAsB;AAClBmd,oBAAI7b,WAAJ,CAAgBgd,MAAM,CAAN,CAAhB;AACH;;AAED;AACA,iBAAKrB,OAAL,CAAaxL,KAAb,CAAmB8M,WAAnB,GAAiC,OAAjC;AACApB,gBAAI1L,KAAJ,CAAU8M,WAAV,GAAwB,OAAxB;AACA,iBAAKtB,OAAL,CAAauB,WAAb,GAA2BrB,IAAIqB,WAA/B;AACA,iBAAKvB,OAAL,CAAawB,WAAb,GAA2BtB,IAAIsB,WAA/B;;AAEA;AACA1a,eAAG2a,YAAH,CAAgB,KAAKzB,OAArB;;AAEA;AACA;;AAEAE,gBAAI1L,KAAJ,CAAU4J,KAAV,GAAkB,EAAlB;AACA;AACA,iBAAK4B,OAAL,CAAaxL,KAAb,CAAmB4J,KAAnB,GAA2B8B,IAAIS,WAAJ,GAAkB,IAA7C;AACA;;AAEA;AACA,+BAAO,KAAKb,OAAZ,EAAqB,QAArB,EAA+B,UAACnV,GAAD,EAAS;AACpC,oBAAIrE,MAAM,sBAAUqE,GAAV,CAAV;AACA,oBAAI+W,aAAapb,IAAIob,UAArB;AACA,uBAAK3B,WAAL,CAAiB2B,UAAjB,GAA8BA,UAA9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH,aAnBD;;AAqBA;AACA,gBAAIjT,OAAO3H,GAAG6a,SAAH,CAAa,MAAb,CAAX;AACA,gBAAIlT,IAAJ,EAAU;AACNA,qBAAKmT,SAAL,GAAiB,IAAjB;AACAnT,qBAAKoT,UAAL,GAAkBd,YAAlB;AACH;;AAED;AACA;AACA,iBAAKe,iBAAL;;AAEA,gBAAIhb,GAAGib,YAAP,EAAqB;AACjBd,2BAAWzM,KAAX,CAAiBC,OAAjB;AACH;;AAED,gBAAIyL,IAAIS,WAAJ,KAAoB,KAAKX,OAAL,CAAaW,WAArC,EAAkD;AAC9CT,oBAAI1L,KAAJ,CAAU4J,KAAV,GAAkB,KAAK4B,OAAL,CAAaW,WAAb,GAA2B,IAA7C;AACH;;AAED,iBAAKzZ,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,CAAhB,EACI,UAACN,EAAD,EAAK6a,SAAL,EAAgB/T,QAAhB,CAAwB,gBAAxB,EAA6C;AACzC;AACA;AACA;AACA;AACA;AACA,oBAAIoU,WAAWhQ,SAAS,OAAKgO,OAAL,CAAaxL,KAAb,CAAmB4J,KAA5B,EAAmC,EAAnC,CAAf;AACA,oBAAI6D,cAAcjQ,SACd,OAAKuN,OAAL,CAAa3R,QAAb,EAAuB4G,KAAvB,CAA6B4J,KADf,EACsB,EADtB,CAAlB;AAEA,uBAAK4B,OAAL,CAAaxL,KAAb,CAAmB4J,KAAnB,GAA4B4D,WAAWC,WAAZ,GAA2B,IAAtD;AACA/B,oBAAI1L,KAAJ,CAAU4J,KAAV,GAAkB,OAAK4B,OAAL,CAAaxL,KAAb,CAAmB4J,KAArC;AACH,aAZL;;AAcA,iBAAKlX,OAAL,CAAaE,EAAb,CAAgB,CAAC,cAAD,CAAhB,EACI,UAACN,EAAD,EAAK6a,SAAL,EAAgB/T,QAAhB,CAAwB,gBAAxB,EAA6C;AACzC,oBAAIwQ,QAAQpM,SAAS,OAAKuN,OAAL,CAAa3R,QAAb,EAAuB4G,KAAvB,CAA6B4J,KAAtC,EAA6C,EAA7C,CAAZ;AACA;AACA;AACA;AACA,oBAAI4D,WAAWhQ,SAAS,OAAKgO,OAAL,CAAaxL,KAAb,CAAmB4J,KAA5B,EAAmC,EAAnC,CAAf;AACA;AACA,uBAAK4B,OAAL,CAAaxL,KAAb,CAAmB4J,KAAnB,GAA4B4D,WAAW5D,KAAZ,GAAqB,IAAhD;AACA8B,oBAAI1L,KAAJ,CAAU4J,KAAV,GAAkB,OAAK4B,OAAL,CAAaxL,KAAb,CAAmB4J,KAArC;AACH,aAVL;;AAYA;AACA,iBAAKjX,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;;uCAIe;AACX,gBAAIL,KAAK,KAAKA,EAAd;AACAA,eAAGmM,MAAH,GAAY,CAAZ;AACAnM,eAAGob,UAAH,GAAgB,CAAhB;AACApb,eAAGsa,eAAH,GAAqB,CAArB;AACAta,eAAGqb,aAAH,GAAmB,IAAnB;AACH;;AAED;;;;;;;8CAIsB;AAClB,gBAAIrb,KAAK,KAAKA,EAAd;AACA,gBAAIA,GAAGsb,YAAP,EAAqB;AACjB;AACH;AACD,iBAAK,IAAIpP,IAAI,CAAR,EAAWqP,MAAMvb,GAAGwb,UAAH,EAAtB,EAAuCtP,IAAIqP,GAA3C,EAAgDrP,GAAhD,EAAqD;AACjD,oBAAIuP,aAAJ;AACA,oBAAI1K,OAAO/Q,GAAGsL,GAAH,GAASD,IAAT,CAAcrL,GAAG0b,kBAAH,EAAd,EAAuCpP,KAAvC,CAA6CJ,CAA7C,CAAX;AACA,oBAAI6E,KAAKuG,KAAL,KAAe,EAAnB,EAAuB;AACnBmE,2BAAO1K,KAAKuG,KAAZ;AACH,iBAFD,MAEO,IAAIvG,KAAKrD,KAAL,CAAW4J,KAAX,KAAqB,EAAzB,EAA6B;AAChCmE,2BAAOvQ,SAAS6F,KAAKrD,KAAL,CAAW4J,KAApB,EAA2B,EAA3B,CAAP;AACH,iBAFM,MAEA;AACHmE,2BAAO,KAAKlD,eAAZ;AACH;AACDvY,mBAAG2b,SAAH,CAAazP,CAAb,IAAkBuP,IAAlB;AACH;AACDzb,eAAGsb,YAAH,GAAkB,IAAlB;AACAtb,eAAG2a,YAAH;AACH;;AAED;;;;;;;;4CAKoB;AAChB,gBAAIvB,MAAM,KAAKpZ,EAAL,CAAQsL,GAAR,EAAV;AACA,gBAAIgM,cAAJ,CAFgB,CAEL;;AAEX,gBAAI8B,IAAI9B,KAAJ,KAAc,EAAlB,EAAsB;AAClBA,wBAAQ8B,IAAI9B,KAAZ;AACH,aAFD,MAGK,IAAI8B,IAAI1L,KAAJ,CAAU4J,KAAV,KAAoB,EAAxB,EAA4B;AAC7BA,wBAAQ8B,IAAI1L,KAAJ,CAAU4J,KAAlB;AACH,aAFI,MAEE;AACHA,wBAAQ8B,IAAIS,WAAZ;AACH;AACD,mBAAO3O,SAASoM,KAAT,EAAgB,EAAhB,CAAP;AACH;;AAED;;;;;;;;;;wCAOgBta,G,EAAKiB,S,EAAW;AAC5B,gBAAIgX,UAAU,oBAAUjY,GAAV,CAAd;AACAiY,oBAAQhX,SAAR,GAAoBA,SAApB;AACA,mBAAOgX,OAAP;AACH;;AAED;;;;;;;;2CAKmB;AACf,gBAAIjV,KAAK,KAAKA,EAAd;AACA,gBAAIma,aAAa,oBAAU,IAAV,CAAjB;AACA,gBAAI,KAAK/B,OAAL,IAAgBpY,GAAGmZ,OAAvB,EAAgC;AAC5BnZ,mBAAG4K,iBAAH,GAAuB,EAAvB;AACA,qBAAK,IAAI6B,IAAI,CAAb,EAAgBA,IAAIzM,GAAGwb,UAAH,EAApB,EAAqC/O,GAArC,EAA0C;AACtC,wBAAImP,gBAAa5b,GAAG6b,OAAH,GAAapP,CAAb,GAAiB,KAAKiM,aAAtB,GAAsC1Y,GAAGd,EAAtD,CAAJ;AACA,wBAAI4c,KAAK,oBAAU9b,GAAG+b,UAAb,EAAyB,CAAC,IAAD,EAAOH,OAAP,CAAzB,CAAT;AACAzB,+BAAWnb,WAAX,CAAuB8c,EAAvB;AACA9b,uBAAG4K,iBAAH,CAAqB6B,CAArB,IAA0BmP,OAA1B;AACH;AACJ;AACD,mBAAOzB,UAAP;AACH;;AAED;;;;;;;4CAIoB;AAChB,gBAAIna,KAAK,KAAKA,EAAd;AACA,gBAAIgc,OAAO,cAAIhc,GAAGsL,GAAH,EAAJ,EAAc,KAAd,CAAX;AACA,iBAAKwN,YAAL,GAAoBkD,KAAK/f,MAAL,GAAc,CAAlC;;AAEA,iBAAK,IAAIiQ,IAAKlM,GAAGwM,OAAH,GAAa,CAA3B,EAA+BN,KAAK,CAApC,EAAuCA,GAAvC,EAA4C;AACxC,oBAAI1F,YAAJ;;AAEA,oBAAI,CAAC,KAAKsS,YAAV,EAAwB;AACpBtS,0BAAM,oBAAU,KAAV,CAAN;AACAxG,uBAAGsL,GAAH,GAASoO,YAAT,CAAsBlT,GAAtB,EAA2BxG,GAAGsL,GAAH,GAAS4K,UAApC;AACH,iBAHD,MAGO;AACH1P,0BAAMwV,KAAK9P,CAAL,CAAN;AACH;AACD1F,oBAAIkH,KAAJ,CAAU4J,KAAV,GAAkBtX,GAAG2b,SAAH,CAAazP,CAAb,CAAlB;AACA,qBAAKuM,OAAL,CAAavM,CAAb,IAAkB1F,GAAlB;AACH;AACD,iBAAKsS,YAAL,GAAoB,IAApB;AACH;;AAED;;;;;;;;sCAKcmD,S,EAAW;AACrB,gBAAI,KAAK5D,SAAT,EAAoB;AAChB;AACA;AACA4D,0BAAUjd,WAAV,CAAsB,oBAAU,IAAV,CAAtB;AACH,aAJD,MAIO;AACH;AACA,qBAAK,IAAIvC,IAAI,CAAb,EAAgBA,IAAI,KAAKyb,QAAL,CAAcjc,MAAlC,EAA0CQ,GAA1C,EAA+C;AAC3C,wBAAIyf,MAAM,KAAKlc,EAAL,CAAQsL,GAAR,GAAcD,IAAd,CAAmB,KAAK6M,QAAL,CAAczb,CAAd,CAAnB,CAAV;AACAwf,8BAAUjd,WAAV,CAAsBkd,GAAtB;AACH;AACJ;AACJ;;AAED;;;;;;;;uCAKejH,O,EAAS;AACpB,gBAAI,CAAC,KAAKqC,KAAV,EAAiB;AACb;AACH;AACD,gBAAI,KAAKA,KAAL,CAAWpQ,OAAX,CAAmB,GAAnB,MAA4B,CAAC,CAAjC,EAAoC;AAChC+N,wBAAQvH,KAAR,CAAc4J,KAAd,GAAsB,MAAtB;AACH,aAFD,MAEO;AACHrC,wBAAQvH,KAAR,CAAc4J,KAAd,GAAsB,KAAKA,KAA3B;AACH;AACJ;;AAED;;;;;;;;;0CAMkB4E,G,EAAK;AACnB,gBAAIlc,KAAK,KAAKA,EAAd;AACA,gBAAIia,eAAe,EAAnB;AACA,iBAAK,IAAItd,IAAI,CAAb,EAAgBA,IAAIqD,GAAGwb,UAAH,EAApB,EAAqC7e,GAArC,EAA0C;AACtC,oBAAIwf,IAAID,IAAI5P,KAAJ,CAAU3P,CAAV,CAAR;AACA,oBAAIyf,OAAOD,EAAEjS,YAAF,CAAe,IAAf,CAAX;AACA,oBAAI,CAACkS,IAAD,IAASA,SAAS,EAAtB,EAA0B;AACtBA,2BAAU,KAAKzD,UAAL,GAAkBhc,CAA5B,SAAiCqD,GAAGd,EAApC;AACAid,sBAAE/e,YAAF,CAAe,IAAf,EAAqBgf,IAArB;AACH;AACDnC,6BAAazR,IAAb,CAAkB4T,IAAlB;AACH;AACD,mBAAOnC,YAAP;AACH;;AAED;;;;;;kCAGU;AACN,gBAAIja,KAAK,KAAKA,EAAd;AACA,gBAAIoZ,MAAMpZ,GAAGsL,GAAH,EAAV;;AAEA,gBAAI,CAAC,KAAKjL,WAAV,EAAuB;AACnB;AACH;AACD,gBAAIuZ,IAAI,oBAAUR,GAAV,CAAR;AACA,iBAAKL,WAAL,CAAiBzb,UAAjB,CAA4Boc,YAA5B,CAAyCE,CAAzC,EAA4C,KAAKb,WAAjD;AACA,gCAAU,KAAKA,WAAf;;AAEA,iBAAKA,WAAL,GAAmB,IAAnB;AACA,iBAAKE,WAAL,GAAmB,IAAnB;AACA,iBAAKC,OAAL,GAAe,IAAf;AACA,iBAAKF,OAAL,GAAe,IAAf;;AAEAI,gBAAIP,SAAJ,GAAgB,KAAKD,aAArB;AACA;AACA,iBAAK5Y,EAAL,CAAQoZ,GAAR,GAAc,cAAIpZ,GAAGd,EAAP,CAAd;;AAEA,iBAAKmB,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AClgBL;;AACA;;;;AAEA,IAAMgc,OAAO,WAAKA,IAAlB;AACA,IAAMC,WAAW,WAAKA,QAAtB;AACA,IAAMC,qBAAqB,WAAKA,kBAAhC;AACA,IAAMC,qBAAqB,WAAKA,kBAAhC;;AAEA;;;AAGO,IAAMC,wCAAgB,SAAhBA,aAAgB,GAAM;AAC/B,QAAIC,UAAU,WAAKC,YAAnB;AACA,WAAQ,4BAAD,KAA6BD,YAAYhV,SAAZ,IAAyBgV,UAAU,CAAhE,CAAP;AACH,CAHM;;AAKP;;;;;;;IAMaE,I,WAAAA,I;;AAET;;;;;AAKA,kBAAYza,KAAZ,EAAmB;AAAA;;AACf;;;;AAIA,aAAKA,KAAL,GAAaA,KAAb;;AAEA;;;;;AAKA,aAAK0a,QAAL,GAAgB,IAAhB;;AAEA;;;;AAIA,aAAKzc,OAAL,GAAe+B,MAAM/B,OAArB;;AAEA;;;;AAIA,aAAK0c,SAAL,GAAiB,IAAjB;AACH;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,CAACL,eAAL,EAAsB;AAClB;AACH;;AAED,iBAAKI,QAAL,GAAgBP,SAASS,IAAzB;AACA;AACA,iBAAKD,SAAL,GAAiB,KAAKE,IAAL,CAAUC,IAAV,CAAe,IAAf,CAAjB;AACA,iBAAK7c,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,CAAhB,EAAmC,UAACN,EAAD,EAAKmC,KAAL;AAAA,uBAAe,MAAK+a,MAAL,CAAY/a,KAAZ,CAAf;AAAA,aAAnC;AACA,iBAAK/B,OAAL,CAAaE,EAAb,CAAgB,CAAC,aAAD,CAAhB,EAAiC,KAAKwc,SAAtC;AACA,2CAAa,YAAb,EAA2B,KAAKA,SAAhC;AACH;;AAED;;;;;;;;+BAKO3a,K,EAAO;AACV,gBAAI4a,aAAWP,mBAAmBH,KAAKc,SAAL,CAAehb,KAAf,CAAnB,CAAf;AACA,gBAAI,KAAK0a,QAAL,KAAkBE,IAAtB,EAA4B;AACxB;AACH;;AAEDT,qBAASS,IAAT,GAAgBA,IAAhB;AACA,iBAAKF,QAAL,GAAgBE,IAAhB;AACH;;AAED;;;;;;;;;8BAMMA,I,EAAM;AACR,gBAAIA,KAAK7V,OAAL,CAAa,GAAb,MAAsB,CAAC,CAA3B,EAA8B;AAC1B,uBAAO,IAAP;AACH;AACD6V,mBAAOA,KAAKrN,MAAL,CAAY,CAAZ,CAAP;AACA,mBAAO2M,KAAK7W,KAAL,CAAW+W,mBAAmBQ,IAAnB,CAAX,CAAP;AACH;;AAED;;;;;;+BAGO;AACH,gBAAI5a,QAAQ,KAAKqD,KAAL,CAAW8W,SAASS,IAApB,CAAZ;AACA,gBAAI,CAAC5a,KAAL,EAAY;AACR;AACH;AACD;AACA,iBAAKA,KAAL,CAAWib,eAAX,CAA2Bjb,KAA3B;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,iBAAK/B,OAAL,CAAauP,GAAb,CAAiB,CAAC,eAAD,CAAjB,EAAoC,UAAC3P,EAAD,EAAKmC,KAAL;AAAA,uBAAe,OAAK+a,MAAL,CAAY/a,KAAZ,CAAf;AAAA,aAApC;AACA,iBAAK/B,OAAL,CAAauP,GAAb,CAAiB,CAAC,aAAD,CAAjB,EAAkC,KAAKmN,SAAvC;AACA,8CAAgB,YAAhB,EAA8B,KAAKA,SAAnC;;AAEA,iBAAK3a,KAAL,GAAa,IAAb;AACA,iBAAK0a,QAAL,GAAgB,IAAhB;AACA,iBAAKzc,OAAL,GAAe,IAAf;AACH;;;;;;;;;;;;;;;;;;;;AC5HL;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMid,WAAW,mDACb,qBADJ;AAEA,IAAMC,cAAc,yCAApB;;AAEA;;;;IAGaC,I,WAAAA,I;;;AAET;;;;AAIA,sBAAYvd,EAAZ,EAAgB;AAAA;;AAAA,wHACNA,EADM,EACF,MADE;;AAGZ,oBAAIqG,IAAI,MAAKlG,MAAL,CAAYqd,iBAAZ,IAAiC,EAAzC;;AAEA;;;;AAIA,sBAAKC,KAAL,GAAapX,EAAEqX,SAAF,IAAe,IAA5B;;AAEA;;;;AAIA,sBAAKC,SAAL,GAAiBtX,EAAEuX,mBAAF,IAAyB,IAA1C;;AAEA;;;;AAIA,sBAAKC,SAAL,GAAiB,CAAC,oBAAQxX,EAAE1H,IAAV,CAAD,GAAmB0H,EAAE1H,IAArB,GACb,iEACA,kEADA,GAEA,2DAFA,GAGA,kEAHA,GAIA,kEAJA,GAKA,2BALA,GAK8B0e,QAL9B,GAKyC,oBALzC,GAMA,qBAPJ;;AASA;;;;AAIA,sBAAKS,SAAL,GAAiBzX,EAAEkP,IAAF,IAAU,IAA3B;;AAEA;;;;AAIA,sBAAKwI,OAAL,GAAe1X,EAAE2X,QAAF,IAAc,GAA7B;;AAEA;;;;AAIA,sBAAKC,OAAL,GAAe5X,EAAE6X,QAAF,IAAc,IAA7B;;AAEA;;;;AAIA,sBAAKC,WAAL,GAAmB9X,EAAE+X,aAAF,IAAmB,SAAtC;;AAEA;;;;AAIA,sBAAK1G,YAAL,GAAoBrR,EAAEgY,mBAAF,IAAyB,UAA7C;;AAEA;;;;AAIA,sBAAKC,GAAL,GAAW,IAAX;;AAEA;;;;AAIA,sBAAK3I,IAAL,GAAY,IAAZ;;AAEA;;;;AAIA,sBAAK4I,YAAL,GAAoB,IAApB;;AAEA;;;;AAIA,sBAAKC,WAAL,GAAmB,6CACf,GADe,GACTxe,GAAGye,OADM,GACI,OADJ,GACc,WADd,GAC4BnB,WAD5B,GAEf,oBAFe,GAEQA,WAFR,GAEsB,MAFtB,GAGf,wBAHe,GAGYtd,GAAG0e,IAHf,GAGsB,uBAHtB,GAIf,8CAJe,GAKf,mEALJ;;AAOA,sBAAKte,OAAL,CAAaE,EAAb,CAAgB,CAAC,WAAD,CAAhB,EAA+B;AAAA,+BAAM,MAAKI,IAAL,EAAN;AAAA,iBAA/B;AAzFY;AA0Ff;;AAED;;;;;;;;0CAIUmD,G,EAAK;AACX,4BAAI8a,YAAY,sBAAU9a,GAAV,CAAhB;;AAEA,+BAAO8a,aAAaA,cAAc,KAAKhJ,IAAhC,IAAwCgJ,cAAc,KAAKL,GAAlE,EAAuE;AACnEK,4CAAYA,UAAUrhB,UAAtB;AACH;;AAED,4BAAIqhB,cAAc,KAAKhJ,IAAnB,IAA2BgJ,cAAc,KAAKL,GAAlD,EAAuD;AACnD,qCAAKM,MAAL;AACH;;AAED;AACH;;AAED;;;;;;uCAGO;AAAA;;AACH,4BAAI,KAAKve,WAAT,EAAsB;AAClB;AACH;;AAED,4BAAIL,KAAK,KAAKA,EAAd;;AAEA,4BAAIse,MAAM,oBAAU,MAAV,CAAV;AACA,4BAAI3I,OAAO,oBAAU,KAAV,CAAX;;AAEA,6BAAK4I,YAAL,GAAoB,KAAKM,SAAL,CAAe5B,IAAf,CAAoB,IAApB,CAApB;;AAEA;AACA,4BAAI,CAAC,KAAKQ,KAAV,EAAiB;AACbzd,mCAAG4V,UAAH;AACH;AACD,4BAAIC,WAAW,CAAC,KAAK4H,KAAN,GAAczd,GAAG8V,IAAjB,GAAwB,cAAI,KAAK2H,KAAT,CAAvC;AACA5H,iCAAS7W,WAAT,CAAqBsf,GAArB;;AAEA,4BAAIQ,eAAe,CAAC,KAAKnB,SAAN,GAAkBW,GAAlB,GAAwB,cAAI,KAAKX,SAAT,CAA3C;;AAEA,4BAAI,CAAC,KAAKM,OAAV,EAAmB;AACfa,6CAAa9f,WAAb,CAAyB2W,IAAzB;AACA,oCAAIoJ,WAAW,oBAAU,GAAV,EAAe,CAAC,MAAD,EAAS,qBAAT,CAAf,CAAf;AACAA,yCAAS9gB,SAAT,GAAqB,KAAKkgB,WAA1B;AACAY,yCAAS/f,WAAT,CAAqB,qBAAW,KAAK+e,OAAhB,CAArB;AACAO,oCAAItf,WAAJ,CAAgB+f,QAAhB;AACA,mDAAOA,QAAP,EAAiB,OAAjB,EAA0B;AAAA,+CAAM,OAAKH,MAAL,EAAN;AAAA,iCAA1B;AACH,yBAPD,MAOO;AACHN,oCAAIrS,SAAJ,GAAgB,KAAKgS,OAArB;AACA,oCAAIe,SAASV,IAAIpI,UAAjB;AACA,mDAAO8I,MAAP,EAAe,OAAf,EAAwB;AAAA,+CAAM,OAAKJ,MAAL,EAAN;AAAA,iCAAxB;AACAE,6CAAa9f,WAAb,CAAyB2W,IAAzB;AACH;;AAED,4BAAI,CAAC,KAAKmI,SAAV,EAAqB;AACjBnI,qCAAK1J,SAAL,GAAiB,KAAK4R,SAAtB;AACAlI,qCAAK1X,SAAL,GAAiB,KAAKyZ,YAAtB;AACH,yBAHD,MAGO;AACH,oCAAI,KAAKiG,SAAT,EAAoB;AAChBmB,qDAAa9f,WAAb,CAAyB2W,IAAzB;AACH;AACDA,qCAAK1J,SAAL,GAAiB,KAAK6R,SAAtB;AACA,oCAAI,CAAC,KAAKH,SAAV,EAAqB;AACjBhI,6CAAK1X,SAAL,GAAiB,KAAKyZ,YAAtB;AACH;AACJ;AACD/B,6BAAK1J,SAAL,IAAkB,KAAKuS,WAAvB;AACA,2CAAO7I,IAAP,EAAa,OAAb,EAAsB;AAAA,uCAAM,OAAKiJ,MAAL,EAAN;AAAA,yBAAtB;;AAEA,6BAAKjJ,IAAL,GAAYA,IAAZ;AACA,6BAAK2I,GAAL,GAAWA,GAAX;AACA;AACA,6BAAKje,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;yCAGS;AACL;AACA;AACA,4BAAI,CAAC,KAAKiU,SAAL,EAAL,EAAuB;AACnB;AACH;;AAED;AACA,0DAAgB,SAAhB,EAA2B,KAAKiK,YAAhC;;AAEA,4BAAIU,aAAa,KAAKtJ,IAAL,CAAUjI,KAAV,CAAgBC,OAAjC;AACA,4BAAIsR,eAAe,EAAf,IAAqBA,0BAAzB,EAA8C;AAC1C,qCAAKtJ,IAAL,CAAUjI,KAAV,CAAgBC,OAAhB,GAA0B,QAA1B;AACA,+DAAa,SAAb,EAAwB,KAAK4Q,YAA7B;AACH,yBAHD,MAGO;AACH,qCAAK5I,IAAL,CAAUjI,KAAV,CAAgBC,OAAhB;AACH;AACJ;;AAED;;;;;;0CAGU;AACN,4BAAI,CAAC,KAAKtN,WAAV,EAAuB;AACnB;AACH;AACD,4CAAU,KAAKie,GAAf;AACA,6BAAKA,GAAL,GAAW,IAAX;;AAEA,4CAAU,KAAK3I,IAAf;AACA,6BAAKA,IAAL,GAAY,IAAZ;;AAEA,6BAAK4I,YAAL,GAAoB,IAApB;AACA,6BAAKle,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AClOL;;AACA;;AACA;;;;AAEA;;;;;;IAMa6e,gB,WAAAA,gB;;AAET;;;;AAIA,8BAAYlf,EAAZ,EAAgB;AAAA;;AACZ,YAAIqG,IAAIrG,GAAGG,MAAH,EAAR;;AAEA;;;;AAIA,aAAKgf,iBAAL,GAAyB9Y,EAAE+Y,mBAAF,IAAyB,SAAlD;;AAEA;;;;AAIA,aAAKpf,EAAL,GAAUA,EAAV;;AAEA;;;;AAIA,aAAKI,OAAL,GAAeJ,GAAGI,OAAlB;AACH;;AAED;;;;;;;+BAGO;AAAA;;AACH,iBAAKA,OAAL,CAAaE,EAAb,CACI,CAAC,kBAAD,EAAqB,SAArB,CADJ,EAEI;AAAA,uBAAM,MAAK+e,cAAL,EAAN;AAAA,aAFJ;AAIA,iBAAKjf,OAAL,CAAaE,EAAb,CACI,CAAC,mBAAD,CADJ,EAEI,UAACN,EAAD,EAAK+Q,IAAL,EAAW7L,IAAX;AAAA,uBAAoB,MAAKoa,YAAL,CAAkBvO,IAAlB,EAAwB7L,IAAxB,CAApB;AAAA,aAFJ;AAIH;;AAED;;;;;;;;;;;kCAQU7I,I,EAAM6I,I,EAAMiQ,Q,EAAU;AAC5B;AACA,gBAAI9Y,KAAKkjB,aAAT,EAAwB;AACpB,oBAAIC,WAAWnjB,KAAKK,UAApB;AACA,qBAAK,IAAID,IAAI,CAAb,EAAgBA,IAAI+iB,SAASvjB,MAA7B,EAAqCQ,GAArC,EAA0C;AACtC,yBAAKgjB,SAAL,CAAeD,SAAS/iB,CAAT,CAAf,EAA4ByI,IAA5B,EAAkCiQ,QAAlC;AACH;AACJ;;AAED,gBAAI9Y,KAAKO,QAAL,KAAkB,CAAtB,EAAyB;AACrB,oBAAI8iB,UAAUrjB,KAAKsjB,SAAL,CAAe1a,WAAf,EAAd;AACA,oBAAI2a,UAAUF,QAAQxY,OAAR,CAAgBhC,KAAKD,WAAL,EAAhB,CAAd;;AAEA,oBAAI2a,YAAY,CAAC,CAAjB,EAAoB;AAChB,wBAAIC,KAAKxjB,KAAKiB,UAAd;AACA,wBAAIuiB,MAAMA,GAAG5hB,SAAH,KAAiBkX,QAA3B,EAAqC;AACjC;AACA,4BAAI2K,KAAKzjB,KAAKsjB,SAAd;;AACI;AACAI,iCAAS,qBAAWD,GAAGpQ,MAAH,CAAU,CAAV,EAAakQ,OAAb,CAAX,CAFb;AAAA,4BAGIhhB,QAAQkhB,GAAGpQ,MAAH,CAAUkQ,OAAV,EAAmB1a,KAAKjJ,MAAxB,CAHZ;AAAA,4BAII+jB,QAAQ,qBAAWF,GAAGpQ,MAAH,CAAUkQ,UAAU1a,KAAKjJ,MAAzB,CAAX,CAJZ;AAAA,4BAKI0C,OAAO,qBAAWC,KAAX,CALX;AAAA,4BAMI8L,YAAY,oBAAU,MAAV,CANhB;AAOAA,kCAAUzM,SAAV,GAAsBkX,QAAtB;AACAzK,kCAAU1L,WAAV,CAAsBL,IAAtB;AACAkhB,2BAAGnG,YAAH,CAAgBqG,MAAhB,EAAwB1jB,IAAxB;AACAwjB,2BAAGnG,YAAH,CAAgBhP,SAAhB,EAA2BrO,IAA3B;AACAwjB,2BAAGnG,YAAH,CAAgBsG,KAAhB,EAAuB3jB,IAAvB;AACAwjB,2BAAGtiB,WAAH,CAAelB,IAAf;AACH;AACJ;AACJ;AACJ;;AAED;;;;;;;;oCAKY6I,I,EAAMiQ,Q,EAAU;AACxB,gBAAI8K,mBAAmB,KAAKjgB,EAAL,CAAQsL,GAAR,GAAc4U,gBAAd,OAAmC/K,QAAnC,CAAvB;AACA,iBAAK,IAAI1Y,IAAI,CAAb,EAAgBA,IAAIwjB,iBAAiBhkB,MAArC,EAA6CQ,GAA7C,EAAkD;AAC9C,oBAAIE,IAAIsjB,iBAAiBxjB,CAAjB,CAAR;AACA,oBAAIijB,UAAU,kBAAQ/iB,CAAR,CAAd;;AAEA,oBAAI+iB,QAAQza,WAAR,GAAsBiC,OAAtB,CAA8BhC,KAAKD,WAAL,EAA9B,MAAsD,CAAC,CAA3D,EAA8D;AAC1D,wBAAI3H,aAAaX,EAAEW,UAAnB;AACAA,+BAAW6iB,YAAX,CAAwB,qBAAWT,OAAX,CAAxB,EAA6C/iB,CAA7C;AACAW,+BAAW8iB,SAAX;AACH;AACJ;AACJ;;AAED;;;;;;yCAGiB;AAAA;;AACb,gBAAI,CAAC,KAAKpgB,EAAL,CAAQqgB,iBAAb,EAAgC;AAC5B;AACH;AACD;AACA,iBAAKrgB,EAAL,CAAQsgB,eAAR,GAA0BzY,OAA1B,CAAkC,UAAC7B,GAAD,EAAS;AACvC,oBAAI,oBAAQA,GAAR,CAAJ,EAAkB;AACdA,wBAAI6B,OAAJ,CAAY,UAAC0Y,IAAD;AAAA,+BACR,OAAKC,WAAL,CAAiBD,IAAjB,EAAuB,OAAKpB,iBAA5B,CADQ;AAAA,qBAAZ;AAEH,iBAHD,MAGO;AACH,2BAAKqB,WAAL,CAAiBxa,GAAjB,EAAsB,OAAKmZ,iBAA3B;AACH;AACJ,aAPD;AAQH;;AAED;;;;kCACU;AAAA;;AACN,iBAAK/e,OAAL,CAAauP,GAAb,CACI,CAAC,kBAAD,EAAqB,SAArB,CADJ,EAEI;AAAA,uBAAM,OAAK0P,cAAL,EAAN;AAAA,aAFJ;AAIA,iBAAKjf,OAAL,CAAauP,GAAb,CACI,CAAC,mBAAD,CADJ,EAEI,UAAC3P,EAAD,EAAK+Q,IAAL,EAAW7L,IAAX;AAAA,uBAAoB,OAAKoa,YAAL,CAAkBvO,IAAlB,EAAwB7L,IAAxB,CAApB;AAAA,aAFJ;AAIH;;AAED;;;;;;;;qCAKa6L,I,EAAM7L,I,EAAM;AACrB,gBAAIlF,KAAK,KAAKA,EAAd;AACA,gBAAIygB,OAAO,IAAItiB,MAAJ,CAAW,oBAAO6B,GAAG0gB,UAAV,CAAX,CAAX;AACA,gBAAIC,OAAO,IAAIxiB,MAAJ,CAAW6B,GAAG4gB,UAAd,CAAX;AACA,gBAAIC,OAAO,IAAI1iB,MAAJ,CAAW6B,GAAG8gB,UAAd,CAAX;AACA,gBAAIC,OAAO,IAAI5iB,MAAJ,CAAW6B,GAAGghB,UAAd,CAAX;AACA,gBAAIC,OAAO,IAAI9iB,MAAJ,CAAW6B,GAAGkhB,UAAd,CAAX;AACA,gBAAIC,OAAO,IAAIhjB,MAAJ,CAAW6B,GAAGohB,UAAd,CAAX;AACA,gBAAIC,MAAM,IAAIljB,MAAJ,CAAW6B,GAAGshB,UAAd,CAAV;AACA,gBAAIC,MAAM,IAAIpjB,MAAJ,CAAW6B,GAAGwhB,UAAd,CAAV;AACA,gBAAIC,MAAM,IAAItjB,MAAJ,CAAW6B,GAAG0hB,UAAd,CAAV;;AAEAxc,mBAAOA,KACFzG,OADE,CACMgiB,IADN,EACY,EADZ,EAEFhiB,OAFE,CAEMkiB,IAFN,EAEY,EAFZ,EAGFliB,OAHE,CAGMoiB,IAHN,EAGY,EAHZ,EAIFpiB,OAJE,CAIMsiB,IAJN,EAIY,EAJZ,CAAP;;AAMA,gBAAIE,KAAK1b,IAAL,CAAUL,IAAV,KAAmBic,KAAK5b,IAAL,CAAUL,IAAV,CAAnB,IAAsCmc,IAAI9b,IAAJ,CAASL,IAAT,CAAtC,IACAqc,IAAIhc,IAAJ,CAASL,IAAT,CADA,IACkBuc,IAAIlc,IAAJ,CAASL,IAAT,CADtB,EACsC;AAClCA,uBAAO,kBAAQ6L,IAAR,CAAP;AACH;;AAED,gBAAI7L,SAAS,EAAb,EAAiB;AACb;AACH;;AAED,iBAAKua,SAAL,CAAe1O,IAAf,EAAqB7L,IAArB,EAA2B,KAAKia,iBAAhC;AACH;;;;;;;;;;;;;;;;;;;;ACjLL;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMwC,SAAS,CACX,kBADW,EAEX,0BAFW,EAGX,oBAHW,EAIX,yBAJW,EAKX,2BALW,EAMX,mBANW,EAOX,0BAPW,EAQX,2BARW,EASX,uBATW,CAAf;;AAYA;;;;;;;;IAOaC,M,WAAAA,M;;;AAET;;;;;AAKA,oBAAY5hB,EAAZ,EAAgB;AAAA;;AAAA,oHACNA,EADM,EACF,QADE;;AAGZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAYmC,MAAZ,IAAsB,EAA9B;;AAEA;;;;AAIA,cAAKyS,QAAL,GAAgB1O,EAAEqX,SAAF,IAAe,IAA/B;;AAEA;;;;AAIA,cAAK/H,IAAL,GAAY,IAAZ;;AAEA;;;;AAIA,cAAKhX,IAAL,GAAY0H,EAAE1H,IAAF,IAAU,YAAtB;;AAEA;;;;AAIA,cAAK4W,IAAL,GAAYlP,EAAEkP,IAAF,IAAU,IAAtB;;AAEA;;;;AAIA,cAAKJ,QAAL,GAAgB9O,EAAEwb,SAAF,IAAe,QAA/B;;AAEA;;;;AAIA,cAAKC,UAAL,GAAkB,GAAlB;;AAEA;;;;AAIA,cAAKC,MAAL,GAAc,iBAAK1b,EAAE2b,cAAP,IACV3b,EAAE2b,cADQ,kBAAd;;AAGA;;;;AAIA,cAAKC,MAAL,GAAc,iBAAK5b,EAAE6b,cAAP,IAAyB7b,EAAE6b,cAA3B,kBAAd;AApDY;AAqDf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK7hB,WAAT,EAAsB;AAClB;AACH;;AAED,gBAAIL,KAAK,KAAKA,EAAd;AACA,gBAAII,UAAU,KAAKA,OAAnB;;AAEA,gBAAI+hB,eAAe,oBAAU,KAAV,CAAnB;AACAA,yBAAalkB,SAAb,GAAyB,KAAKkX,QAA9B;;AAEA,gBAAIU,WAAW,CAAC,KAAKd,QAAN,GACX/U,GAAGsL,GAAH,GAAShO,UADE,GACW,cAAI,KAAKyX,QAAT,CAD1B;AAEA,gBAAI,CAAC,KAAKA,QAAV,EAAoB;AAChBc,yBAAS6D,YAAT,CAAsByI,YAAtB,EAAoCniB,GAAGsL,GAAH,EAApC;AACH,aAFD,MAEO;AACHuK,yBAAS7W,WAAT,CAAqBmjB,YAArB;AACH;AACD,iBAAKxM,IAAL,GAAYwM,YAAZ;AACA,gBAAI,CAAC,KAAK5M,IAAV,EAAgB;AACZ,qBAAKI,IAAL,CAAU3W,WAAV,CAAsB,qBAAW,KAAKL,IAAhB,CAAtB;AACH,aAFD,MAEO;AACH,qBAAKgX,IAAL,CAAU1J,SAAV,GAAsB,KAAKsJ,IAA3B;AACH;;AAED,iBAAK6M,IAAL;;AAEA;AACAhiB,oBAAQE,EAAR,CAAWqhB,MAAX,EAAmB;AAAA,uBAAM,OAAKS,IAAL,CAAU,EAAV,CAAN;AAAA,aAAnB;AACAhiB,oBAAQE,EAAR,CAAWqhB,MAAX,EAAmB;AAAA,uBAAM,OAAKS,IAAL,aAAN;AAAA,aAAnB;;AAEA;AACA,iBAAK/hB,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;;6BAIKgiB,C,EAAG;AAAA;;AACJ,gBAAI,CAAC,KAAK/N,SAAL,EAAL,EAAuB;AACnB;AACH;;AAED,gBAAIgO,gBAAgB,SAAhBA,aAAgB,GAAM;AACtB,oBAAI,CAAC,OAAK3M,IAAV,EAAgB;AACZ;AACH;AACD,oBAAI0M,iBAAJ,EAAgB;AACZ,2BAAKN,MAAL;AACH;AACD,uBAAKpM,IAAL,CAAUjI,KAAV,CAAgBC,OAAhB,GAA0B0U,CAA1B;AACA,oBAAIA,iBAAJ,EAAgB;AACZ,2BAAKJ,MAAL;AACH;AACJ,aAXD;;AAaA,gBAAIrI,IAAIyI,oBAAa,KAAKP,UAAlB,GAA+B,CAAvC;AACA,uBAAKS,UAAL,CAAgBD,aAAhB,EAA+B1I,CAA/B;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKvZ,WAAV,EAAuB;AACnB;AACH;;AAED,gBAAID,UAAU,KAAKA,OAAnB;;AAEA,gCAAU,KAAKuV,IAAf;AACA,iBAAKA,IAAL,GAAY,IAAZ;;AAEA;AACAvV,oBAAQuP,GAAR,CAAYgS,MAAZ,EAAoB;AAAA,uBAAM,OAAKS,IAAL,CAAU,EAAV,CAAN;AAAA,aAApB;AACAhiB,oBAAQuP,GAAR,CAAYgS,MAAZ,EAAoB;AAAA,uBAAM,OAAKS,IAAL,aAAN;AAAA,aAApB;;AAEA,iBAAK/hB,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;ACzKL;;AACA;;AACA;;;;;;;;AAEA;;;;;;IAMamiB,iB,WAAAA,iB;;;AAET;;;;AAIA,+BAAYxiB,EAAZ,EAAgB;AAAA;;AAAA,0IACNA,EADM,EACF,mBADE;;AAGZ,YAAIG,SAAS,MAAKA,MAAL,CAAYsiB,mBAAZ,IAAmC,EAAhD;;AAEA;;;;AAIA,cAAKC,cAAL,GAAsBviB,OAAOwiB,gBAAP,IAA2B,cAAjD;;AAEA;;;;AAIA,cAAKC,oBAAL,GAA4B,iBAAKziB,OAAO0iB,uBAAZ,IACxB1iB,OAAO0iB,uBADiB,kBAA5B;;AAGA;;;;AAIA,cAAKC,mBAAL,GAA2B,iBAAK3iB,OAAO4iB,sBAAZ,IACvB5iB,OAAO4iB,sBADgB,kBAA3B;AAtBY;AAwBf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK1iB,WAAT,EAAsB;AAClB;AACH;;AAED,iBAAKD,OAAL,CAAaE,EAAb,CAAgB,CAAC,kBAAD,CAAhB,EAAsC;AAAA,uBAAM,OAAK0iB,kBAAL,EAAN;AAAA,aAAtC;AACA,iBAAK5iB,OAAL,CAAaE,EAAb,CACI,CAAC,gBAAD,CADJ,EAEI,UAACN,EAAD,EAAK8G,QAAL;AAAA,uBAAkB,OAAKmc,gBAAL,CAAsBnc,QAAtB,CAAlB;AAAA,aAFJ;;AAKA;AACA,iBAAKzG,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;6CAGqB;AACjB,gBAAIL,KAAK,KAAKA,EAAd;AACA,gBAAIub,MAAMvb,GAAGwb,UAAH,EAAV;AACA,iBAAK,IAAI/e,IAAI,CAAb,EAAgBA,IAAI8e,GAApB,EAAyB9e,GAAzB,EAA8B;AAC1B,sCAAYuD,GAAGkjB,gBAAH,CAAoBzmB,CAApB,CAAZ,EAAoC,KAAKimB,cAAzC;AACH;AACJ;;AAED;;;;;;;yCAIiB5b,Q,EAAU;AACvB,gBAAIqc,SAAS,KAAKnjB,EAAL,CAAQkjB,gBAAR,CAAyBpc,QAAzB,CAAb;AACA,gBAAI,mBAASqc,MAAT,EAAiB,KAAKT,cAAtB,CAAJ,EAA2C;AACvC;AACH;AACD,iBAAKE,oBAAL,CAA0B,IAA1B,EAAgC9b,QAAhC;;AAEA,+BAASqc,MAAT,EAAiB,KAAKT,cAAtB;;AAEA,iBAAKI,mBAAL,CAAyB,IAAzB,EAA+Bhc,QAA/B;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKzG,WAAV,EAAuB;AACnB;AACH;;AAED,iBAAK2iB,kBAAL;AACA,iBAAK5iB,OAAL,CAAauP,GAAb,CAAiB,CAAC,kBAAD,CAAjB,EAAuC;AAAA,uBAAM,OAAKqT,kBAAL,EAAN;AAAA,aAAvC;AACA,iBAAK5iB,OAAL,CAAauP,GAAb,CACI,CAAC,gBAAD,CADJ,EAEI,UAAC3P,EAAD,EAAK8G,QAAL;AAAA,uBAAkB,OAAKmc,gBAAL,CAAsBnc,QAAtB,CAAlB;AAAA,aAFJ;;AAKA;AACA,iBAAKzG,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;ACxGL;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;;;;IAMa+iB,S,WAAAA,S;;;AAET;;;;AAIA,uBAAYpjB,EAAZ,EAAgB;AAAA;;AAGZ;AAHY,0HACNA,EADM,EACF,WADE;;AAIZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAYkjB,kBAAZ,IAAkC,EAA1C;;AAEA;;;;AAIA,cAAKC,OAAL,GAAejd,EAAEid,OAAF,IAAa,YAA5B;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuBld,EAAEmd,gBAAF,IAAsB,IAA7C;;AAEA;;;;AAIA,cAAKC,iBAAL,GAAyBpd,EAAEqd,mBAAF,IAAyB,IAAlD;;AAEA;;;;;AAKA,cAAKjZ,UAAL,GAAkB,CAAC,oBAAQ,MAAK8Y,eAAb,CAAD,IACd,CAAC,oBAAQ,MAAKE,iBAAb,CADL;;AAGA;;;;AAIA,cAAKtO,QAAL,GAAgB9O,EAAEwb,SAAF,IAAe,YAA/B;;AAEA;;;;AAIA,cAAKlM,IAAL,GAAY,IAAZ;;AAEA;;;;AAIA,cAAKgO,YAAL,GAAoB,iBAAKtd,EAAEud,kBAAP,IAChBvd,EAAEud,kBADc,kBAApB;;AAGA;;;;AAIA,cAAKC,WAAL,GAAmB,iBAAKxd,EAAEyd,iBAAP,IACfzd,EAAEyd,iBADa,kBAAnB;;AAGA;;;;AAIA,cAAKC,YAAL,GAAoB,iBAAK1d,EAAE2d,kBAAP,IAChB3d,EAAE2d,kBADc,kBAApB;;AAGA;;;;AAIA,cAAKC,WAAL,GAAmB,iBAAK5d,EAAE6d,iBAAP,IACf7d,EAAE6d,iBADa,kBAAnB;AArEY;AAuEf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK7jB,WAAT,EAAsB;AAClB;AACH;AACD,gBAAIL,KAAK,KAAKA,EAAd;AACA,gBAAIqE,SAAS,KAAKkf,eAAL,IAAwB,cAAI,KAAKE,iBAAT,CAAxB,IACTzjB,GAAGsL,GAAH,EADJ;;AAGA;AACA,gBAAIqK,OAAO,oBAAU,KAAV,CAAX;AACAA,iBAAK1X,SAAL,GAAiB,KAAKkX,QAAtB;AACAQ,iBAAK1J,SAAL,GAAiB,KAAKqX,OAAtB;;AAEA,gBAAI,KAAK7Y,UAAT,EAAqB;AACjBpG,uBAAOrF,WAAP,CAAmB2W,IAAnB;AACH,aAFD,MAEO;AACHtR,uBAAO/G,UAAP,CAAkBoc,YAAlB,CAA+B/D,IAA/B,EAAqCtR,OAAO8f,WAA5C;AACH;;AAED,iBAAKxO,IAAL,GAAYA,IAAZ;;AAEA;AACA,iBAAKvV,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EAAqC;AAAA,uBAAM,OAAKse,MAAL,EAAN;AAAA,aAArC;;AAEA;AACA,iBAAKve,WAAL,GAAmB,IAAnB;;AAEA,iBAAK+jB,IAAL;AACH;;AAED;;;;;;iCAGS;AACL,gBAAI,KAAKpkB,EAAL,CAAQqkB,cAAR,KAA2B,CAA/B,EAAkC;AAC9B,qBAAKD,IAAL;AACH,aAFD,MAEO;AACH,qBAAKhC,IAAL;AACH;AACJ;;AAED;;;;;;+BAGO;AACH,gBAAI,CAAC,KAAK/hB,WAAN,IAAqB,CAAC,KAAKiU,SAAL,EAA1B,EAA4C;AACxC;AACH;AACD,iBAAKqP,YAAL,CAAkB,KAAK3jB,EAAvB,EAA2B,IAA3B;;AAEA,iBAAKskB,QAAL;AACA,iBAAK3O,IAAL,CAAUjI,KAAV,CAAgBC,OAAhB,GAA0B,OAA1B;;AAEA,iBAAKkW,WAAL,CAAiB,KAAK7jB,EAAtB,EAA0B,IAA1B;AACH;;AAED;;;;;;+BAGO;AACH,gBAAI,CAAC,KAAKK,WAAN,IAAqB,CAAC,KAAKiU,SAAL,EAA1B,EAA4C;AACxC;AACH;AACD,iBAAKyP,YAAL,CAAkB,KAAK/jB,EAAvB,EAA2B,IAA3B;;AAEA,iBAAK2V,IAAL,CAAUjI,KAAV,CAAgBC,OAAhB;;AAEA,iBAAKsW,WAAL,CAAiB,KAAKjkB,EAAtB,EAA0B,IAA1B;AACH;;AAED;;;;;;;mCAIW;AACP,gBAAI,CAAC,KAAKK,WAAN,IAAqB,KAAKoK,UAA1B,IAAwC,CAAC,KAAK6J,SAAL,EAA7C,EAA+D;AAC3D;AACH;AACD,gBAAItU,KAAK,KAAKA,EAAd;AACA,gBAAIA,GAAGqC,UAAP,EAAmB;AACf,oBAAIA,aAAarC,GAAGC,OAAH,CAAW,YAAX,CAAjB;AACA,qBAAK0V,IAAL,CAAUjI,KAAV,CAAgB4J,KAAhB,GAAwBjV,WAAW2W,OAAX,CAAmBa,WAAnB,GAAiC,IAAzD;AACH,aAHD,MAGO;AACH,qBAAKlE,IAAL,CAAUjI,KAAV,CAAgB4J,KAAhB,GAAwB,CAACtX,GAAGsL,GAAH,GAASiZ,KAAT,GACrBvkB,GAAGsL,GAAH,GAASiZ,KAAT,CAAe1K,WADM,GAErB7Z,GAAGsL,GAAH,GAASkZ,OAAT,CAAiB,CAAjB,EAAoB3K,WAFA,IAEe,IAFvC;AAGH;AACJ;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKxZ,WAAV,EAAuB;AACnB;AACH;AACD,gCAAU,KAAKsV,IAAf;AACA,iBAAKA,IAAL,GAAY,IAAZ;AACA;AACA,iBAAKvV,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,CAAjB,EAAsC;AAAA,uBAAM,OAAKiP,MAAL,EAAN;AAAA,aAAtC;;AAEA,iBAAKve,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;;;ACnML;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;;;;IAMaokB,M,WAAAA,M;;;AAET;;;;AAIA,oBAAYzkB,EAAZ,EAAgB;AAAA;;AAGZ;AAHY,oHACNA,EADM,EACF,QADE;;AAIZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAY4C,MAAZ,IAAsB,EAA9B;;AAEA;;;;AAIA,cAAKob,WAAL,GAAmB9X,EAAE+X,aAAF,IAAmB,OAAtC;;AAEC;;;;AAID,cAAKsG,OAAL,GAAe,IAAf;;AAEA;;;;AAIA,cAAKC,aAAL,GAAqB,IAArB;;AAEA;;;;AAIA,cAAKlH,KAAL,GAAapX,EAAEqX,SAAF,IAAe,IAA5B;;AAEA;;;;AAIA,cAAKkH,UAAL,GAAkB,CAAC/e,MAAMQ,EAAEpK,MAAR,CAAD,GAAmBoK,EAAEpK,MAArB,GAA8B,EAAhD;;AAEA;;;;AAIA,cAAK4oB,eAAL,GAAuBxe,EAAEye,0BAAF,IAAgC,IAAvD;;AAEA;;;;AAIA,cAAKC,aAAL,GAAqB1e,EAAE2e,aAAF,IAAmB,OAAxC;;AAEA;;;;AAIA,cAAKC,aAAL,GAAqB5e,EAAE6e,aAAF,IAAmB,SAAxC;;AAEA;;;;;AAKA,cAAKC,cAAL,GAAsB9e,EAAE+e,gBAAF,IAAsB,IAA5C;;AAEA;;;;AAIA,cAAKC,iBAAL,GAAyB,oBAAQ,MAAKF,cAAb,CAAzB;;AAEA;;;;AAIA,cAAKG,kBAAL,GAA0Bjf,EAAEkf,qBAAF,IAA2B,MAArD;;AAEA;;;;AAIA,cAAKC,mBAAL,GAA2Bnf,EAAEof,sBAAF,IAA4B,UAAvD;;AAEA;;;;;AAKA,cAAKC,cAAL,GAAsB,CAAtB;;AAEA;;;;;AAKA,cAAKC,OAAL,GAAe,CAAf;;AAEA;;;;;AAKA,cAAKC,aAAL,GAAqB,CAArB;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuBxf,EAAEyf,kBAAF,IAAwB,GAA/C;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuB1f,EAAE2f,kBAAF,IAAwB,GAA/C;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuB5f,EAAE6f,kBAAF,IAAwB,IAA/C;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwB9f,EAAE+f,mBAAF,IAAyB,IAAjD;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuBhgB,EAAEigB,kBAAF,KAClB,CAACtmB,GAAGyV,WAAJ,GAAkB,IAAlB,GACG,0CAA0C,MAAK0I,WAA/C,GACA,iCAHe,CAAvB;;AAKA;;;;AAIA,cAAKoI,eAAL,GAAuBlgB,EAAEmgB,kBAAF,KAClB,CAACxmB,GAAGyV,WAAJ,GAAkB,IAAlB,GACG,0CAA0C,MAAK0I,WAA/C,GACA,yCAHe,CAAvB;;AAKA;;;;AAIA,cAAKsI,gBAAL,GAAwBpgB,EAAEqgB,mBAAF,KACnB,CAAC1mB,GAAGyV,WAAJ,GAAkB,IAAlB,GACG,0CAA0C,MAAK0I,WAA/C,GACA,mCAHgB,CAAxB;;AAKA;;;;AAIA,cAAKwI,eAAL,GAAuBtgB,EAAEugB,kBAAF,KAClB,CAAC5mB,GAAGyV,WAAJ,GAAkB,IAAlB,GACG,0CAA0C,MAAK0I,WAA/C,GACA,iCAHe,CAAvB;;AAKA;;;;AAIA,cAAK0I,QAAL,GAAgBxgB,EAAEygB,SAAF,IAAe,QAA/B;;AAEA;;;;AAIA,cAAKC,MAAL,GAAc1gB,EAAE2gB,OAAF,IAAa,MAA3B;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwB5gB,EAAE6gB,kBAAF,IAAwB,MAAhD;;AAEA;;;;AAIA,cAAKC,OAAL,GAAe9gB,EAAE+gB,IAAF,KAAW,KAAX,GAAmB,KAAnB,GAA2B,IAA1C;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwBhhB,EAAEihB,kBAAF,iBAAxB;;AAEA;;;;AAIA,cAAKC,kBAAL,GAA0B,iBAAKlhB,EAAEmhB,qBAAP,IACtBnhB,EAAEmhB,qBADoB,kBAA1B;;AAGA;;;;AAIA,cAAKC,iBAAL,GAAyB,iBAAKphB,EAAEqhB,oBAAP,IACrBrhB,EAAEqhB,oBADmB,kBAAzB;;AAGA;;;;;AAKA,cAAKC,aAAL,GAAqB,IAArB;AACA;;;;;AAKA,cAAKC,WAAL,GAAmB,IAAnB;AACA;;;;;AAKA,cAAKC,WAAL,GAAmB,IAAnB;AACA;;;;;AAKA,cAAKC,WAAL,GAAmB,IAAnB;AACA;;;;;AAKA,cAAKC,YAAL,GAAoB,IAApB;AACA;;;;;AAKA,cAAKC,MAAL,GAAc,IAAd;AACA;;;;;AAKA,cAAKC,QAAL,GAAgB,IAAhB;AACA;;;;;AAKA,cAAKC,OAAL,GAAe,IAAf;;AAEA,YAAIC,WAAWnoB,GAAGmM,MAAlB;AACA,YAAIic,QAAQpoB,GAAGwL,SAAH,CAAa,IAAb,CAAZ;AACA;AACA,cAAKma,OAAL,GAAe0C,KAAKC,IAAL,CAAU,CAACF,QAAQD,QAAT,IAAqB,MAAKvD,UAApC,CAAf;;AAEA,YAAIllB,SAAJ;AACA;;;;;AAKA,cAAKmE,GAAL,GAAW;AACP0kB,oBADO,sBACI;AACP,uBAAQ7oB,EAAE2nB,gBAAF,kBAAD,GACH3nB,EAAEglB,OAAF,CAAU3d,OAAV,CAAkByhB,aADf,GAEHtd,SAASxL,EAAEglB,OAAF,CAAU9lB,KAAnB,EAA0B,EAA1B,IAAgC,CAFpC;AAGH,aALM;AAMP6pB,kBANO,oBAME;AACL,uBAAQ/oB,EAAE2nB,gBAAF,kBAAD,GACHnc,SAASxL,EAAEglB,OAAF,CAAU3d,OAAV,CAAkB9K,MAA3B,EAAmC,EAAnC,IAAyC,CADtC,GAEFyD,EAAEimB,OAAF,GAAY,CAFjB;AAGH,aAVM;AAWP+C,gBAXO,kBAWA;AACH,oBAAIC,YAAYjpB,EAAEmE,GAAF,CAAM0kB,QAAN,KAAmB7oB,EAAEmE,GAAF,CAAM4kB,MAAN,EAAnB,GACZ/oB,EAAEmE,GAAF,CAAM0kB,QAAN,KAAmB,CADP,GACW,CAD3B;AAEA7oB,kBAAEkpB,UAAF,CAAaD,SAAb;AACH,aAfM;AAgBPE,gBAhBO,kBAgBA;AACH,oBAAIC,YAAYppB,EAAEmE,GAAF,CAAM0kB,QAAN,KAAmB,CAAnB,GACZ7oB,EAAEmE,GAAF,CAAM0kB,QAAN,KAAmB,CADP,GACW7oB,EAAEmE,GAAF,CAAM4kB,MAAN,EAD3B;AAEA/oB,kBAAEkpB,UAAF,CAAaE,SAAb;AACH,aApBM;AAqBPC,gBArBO,kBAqBA;AACHrpB,kBAAEkpB,UAAF,CAAalpB,EAAEmE,GAAF,CAAM4kB,MAAN,EAAb;AACH,aAvBM;AAwBPO,iBAxBO,mBAwBC;AACJtpB,kBAAEkpB,UAAF,CAAa,CAAb;AACH,aA1BM;AA2BPK,sBA3BO,sBA2BI/Y,CA3BJ,EA2BO;AACV,oBAAIgZ,MAAM,oBAAQhZ,CAAR,CAAV;AACA,oBAAIgZ,wBAAJ,EAAuB;AACnB,wBAAIlpB,GAAGmpB,MAAP,EAAe;AACXnpB,2BAAGgK,MAAH;AACAtK,0BAAEkpB,UAAF,CAAalpB,EAAEmE,GAAF,CAAM0kB,QAAN,EAAb;AACH,qBAHD,MAGO;AACH7oB,0BAAEkpB,UAAF;AACH;AACD,yBAAKQ,IAAL;AACH;AACJ,aAtCM;;AAuCPC,4BAAgB,IAvCT;AAwCPC,qBAAS,IAxCF;AAyCPC,qBAAS,IAzCF;AA0CPC,qBAAS,IA1CF;AA2CPC,sBAAU;AA3CH,SAAX;AAxQY;AAqTf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAIC,iBAAJ;AACA,gBAAI1pB,KAAK,KAAKA,EAAd;AACA,gBAAI6D,MAAM,KAAKA,GAAf;;AAEA,gBAAI,KAAKxD,WAAT,EAAsB;AAClB;AACH;;AAED;AACA;AACA,gBAAI,KAAKglB,iBAAT,EAA4B;AACxB,oBAAI,KAAKF,cAAL,CAAoBlpB,MAApB,GAA6B,CAAjC,EAAoC;AAChC,yBAAKopB,iBAAL,GAAyB,KAAzB;AACH,iBAFD,MAEO;AACH,yBAAKT,UAAL,GAAkB,KAAKO,cAAL,CAAoB,CAApB,EAAuB,CAAvB,CAAlB;AACA,yBAAKwE,iBAAL;AACH;AACJ;;AAED9lB,gBAAIwlB,cAAJ,GAAqB,UAACvlB,KAAD,EAAW;AAC5B,oBAAIyM,MAAMzM,MAAMO,MAAhB;AACA,uBAAKukB,UAAL,CAAgBrY,IAAIiY,aAApB;AACH,aAHD;;AAKA;AACA,gBAAI,KAAKnB,gBAAL,kBAAJ,EAAsC;AAClCqC,2BAAW,kCAAX;AACAA,yBAASzrB,SAAT,GAAqB,KAAK8mB,aAA1B;AACA,mCAAO2E,QAAP,EAAiB,QAAjB,EAA2B7lB,IAAIwlB,cAA/B;AACH;;AAED;AACA,gBAAI,KAAKhC,gBAAL,iBAAJ,EAAqC;AACjCqC,2BAAW,kCAAiB,CAAC,OAAD,EAAU,KAAK9D,aAAf,CAAjB,CAAX;AACA8D,yBAASzrB,SAAT,GAAqB,KAAKgnB,aAA1B;AACA,mCAAOyE,QAAP,EAAiB,UAAjB,EAA6B7lB,IAAIolB,UAAjC;AACH;;AAED;AACA,gBAAIW,cAAc,oBAAU,MAAV,CAAlB;AACA,gBAAIC,cAAc,oBAAU,MAAV,CAAlB;AACA,gBAAIC,cAAc,oBAAU,MAAV,CAAlB;AACA,gBAAIC,eAAe,oBAAU,MAAV,CAAnB;;AAEA,gBAAI,KAAK5C,OAAT,EAAkB;AACd;AACA,oBAAI,CAAC,KAAKd,eAAV,EAA2B;AACvB,wBAAI2D,UAAU,kCACV,CAAC,MAAD,EAAS,QAAT,CADU,EAEV,CAAC,OAAD,EAAU,KAAKnE,eAAf,CAFU,EAGV,CAAC,OAAD,EAAU,MAAV,CAHU,CAAd;AAKAmE,4BAAQ/rB,SAAR,GAAoB,KAAKkgB,WAAzB;AACA,uCAAO6L,OAAP,EAAgB,OAAhB,EAAyBnmB,IAAI6kB,IAA7B;AACAkB,gCAAY5qB,WAAZ,CAAwBgrB,OAAxB;AACH,iBATD,MASO;AACHJ,gCAAY3d,SAAZ,GAAwB,KAAKoa,eAA7B;AACA,uCAAOuD,WAAP,EAAoB,OAApB,EAA6B/lB,IAAI6kB,IAAjC;AACH;AACD;AACA,oBAAI,CAAC,KAAKnC,eAAV,EAA2B;AACvB,wBAAI0D,UAAU,kCACV,CAAC,MAAD,EAAS,QAAT,CADU,EAEV,CAAC,OAAD,EAAU,KAAKlE,eAAf,CAFU,EAGV,CAAC,OAAD,EAAU,UAAV,CAHU,CAAd;AAKAkE,4BAAQhsB,SAAR,GAAoB,KAAKkgB,WAAzB;AACA,uCAAO8L,OAAP,EAAgB,OAAhB,EAAyBpmB,IAAIglB,IAA7B;AACAgB,gCAAY7qB,WAAZ,CAAwBirB,OAAxB;AACH,iBATD,MASO;AACHJ,gCAAY5d,SAAZ,GAAwB,KAAKsa,eAA7B;AACA,uCAAOsD,WAAP,EAAoB,OAApB,EAA6BhmB,IAAIglB,IAAjC;AACH;AACD;AACA,oBAAI,CAAC,KAAKlC,eAAV,EAA2B;AACvB,wBAAIuD,UAAU,kCACV,CAAC,MAAD,EAAS,QAAT,CADU,EAEV,CAAC,OAAD,EAAU,KAAKjE,eAAf,CAFU,EAGV,CAAC,OAAD,EAAU,MAAV,CAHU,CAAd;AAKAiE,4BAAQjsB,SAAR,GAAoB,KAAKkgB,WAAzB;AACA,uCAAO+L,OAAP,EAAgB,OAAhB,EAAyBrmB,IAAIklB,IAA7B;AACAe,gCAAY9qB,WAAZ,CAAwBkrB,OAAxB;AACH,iBATD,MASO;AACHJ,gCAAY7d,SAAZ,GAAwB,KAAK0a,eAA7B;AACA,uCAAOmD,WAAP,EAAoB,OAApB,EAA6BjmB,IAAIklB,IAAjC;AACH;AACD;AACA,oBAAI,CAAC,KAAKtC,gBAAV,EAA4B;AACxB,wBAAI0D,WAAW,kCACX,CAAC,MAAD,EAAS,QAAT,CADW,EAEX,CAAC,OAAD,EAAU,KAAKhE,gBAAf,CAFW,EAGX,CAAC,OAAD,EAAU,OAAV,CAHW,CAAf;AAKAgE,6BAASlsB,SAAT,GAAqB,KAAKkgB,WAA1B;AACA,uCAAOgM,QAAP,EAAiB,OAAjB,EAA0BtmB,IAAImlB,KAA9B;AACAe,iCAAa/qB,WAAb,CAAyBmrB,QAAzB;AACH,iBATD,MASO;AACHJ,iCAAa9d,SAAb,GAAyB,KAAKwa,gBAA9B;AACA,uCAAOsD,YAAP,EAAqB,OAArB,EAA8BlmB,IAAImlB,KAAlC;AACH;AACJ;;AAED;AACA,gBAAI,CAAC,KAAKvL,KAAV,EAAiB;AACbzd,mBAAG4V,UAAH;AACH;AACD,gBAAIC,WAAW,CAAC,KAAK4H,KAAN,GAAczd,GAAGoqB,IAAjB,GAAwB,cAAI,KAAK3M,KAAT,CAAvC;AACA5H,qBAAS7W,WAAT,CAAqB+qB,YAArB;AACAlU,qBAAS7W,WAAT,CAAqB6qB,WAArB;;AAEA,gBAAIQ,eAAe,oBAAU,MAAV,CAAnB;AACAA,yBAAarrB,WAAb,CAAyB,qBAAW,KAAK6nB,QAAhB,CAAzB;AACAwD,yBAAapsB,SAAb,GAAyB,KAAKgpB,gBAA9B;AACApR,qBAAS7W,WAAT,CAAqBqrB,YAArB;AACAxU,qBAAS7W,WAAT,CAAqB0qB,QAArB;AACA,gBAAIY,cAAc,oBAAU,MAAV,CAAlB;AACAA,wBAAYtrB,WAAZ,CAAwB,qBAAW,KAAK+nB,MAAhB,CAAxB;AACAuD,wBAAYrsB,SAAZ,GAAwB,KAAKgpB,gBAA7B;AACApR,qBAAS7W,WAAT,CAAqBsrB,WAArB;AACA,gBAAIC,SAAS,oBAAU,MAAV,CAAb;AACAA,mBAAOtsB,SAAP,GAAmB,KAAKgpB,gBAAxB;AACAsD,mBAAOvrB,WAAP,CAAmB,qBAAW,MAAM,KAAK2mB,OAAX,GAAqB,GAAhC,CAAnB;AACA9P,qBAAS7W,WAAT,CAAqBurB,MAArB;AACA1U,qBAAS7W,WAAT,CAAqB4qB,WAArB;AACA/T,qBAAS7W,WAAT,CAAqB8qB,WAArB;;AAEA,iBAAKlC,WAAL,GAAmBgC,WAAnB;AACA,iBAAK/B,WAAL,GAAmBgC,WAAnB;AACA,iBAAK/B,WAAL,GAAmBgC,WAAnB;AACA,iBAAK/B,YAAL,GAAoBgC,YAApB;AACA,iBAAK/B,MAAL,GAAcuC,MAAd;AACA,iBAAKtC,QAAL,GAAgBoC,YAAhB;AACA,iBAAKnC,OAAL,GAAeoC,WAAf;AACA,iBAAK5F,OAAL,GAAegF,QAAf;;AAEA,iBAAKc,aAAL;;AAEA,gBAAI,CAACxqB,GAAGmZ,OAAR,EAAiB;AACbnZ,mBAAGyqB,eAAH;AACA,qBAAKD,aAAL,CAAmBxqB,GAAGuU,cAAtB;AACH;;AAED,iBAAKnU,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EAAqC;AAAA,uBAAM,OAAKoqB,eAAL,EAAN;AAAA,aAArC;AACA,iBAAKtqB,OAAL,CAAaE,EAAb,CAAgB,CAAC,aAAD,CAAhB,EACI,UAACN,EAAD,EAAK2qB,UAAL;AAAA,uBAAoB,OAAKC,OAAL,CAAaD,UAAb,CAApB;AAAA,aADJ;AAEA,iBAAKvqB,OAAL,CAAaE,EAAb,CAAgB,CAAC,qBAAD,CAAhB,EACI,UAACN,EAAD,EAAK4kB,UAAL;AAAA,uBAAoB,OAAKiG,oBAAL,CAA0BjG,UAA1B,CAApB;AAAA,aADJ;;AAGA;AACA,iBAAKvkB,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;;gCAI2B;AAAA,gBAArByqB,WAAqB,uEAAP,KAAO;;AACvB,iBAAKrqB,MAAL;AACA,iBAAKC,IAAL;;AAEA,gBAAIoqB,WAAJ,EAAiB;AACb,qBAAK9qB,EAAL,CAAQgK,MAAR;AACH;AACJ;;AAED;;;;;;0CAGkB;AACd,iBAAK0b,cAAL,GAAsB,CAAtB;AACA,iBAAKE,aAAL,GAAqB,CAArB;AACA,iBAAK4E,aAAL,CAAmB,KAAKxqB,EAAL,CAAQuU,cAA3B;AACH;;AAED;;;;;;;;sCAKcwW,S,EAAW;AACrB,gBAAI/qB,KAAK,KAAKA,EAAd;AACA,gBAAIgrB,OAAO,CAAC,KAAKvN,KAAN,GAAczd,GAAGoqB,IAAjB,GAAwB,cAAI,KAAK3M,KAAT,CAAnC;;AAEA;AACAzd,eAAGuU,cAAH,GAAoBwW,aAAa/qB,GAAGwU,YAAH,CAAgB,IAAhB,CAAjC;;AAEA;AACA,iBAAKmR,OAAL,GAAe0C,KAAKC,IAAL,CAAUtoB,GAAGuU,cAAH,CAAkBtY,MAAlB,GAA2B,KAAK2oB,UAA1C,CAAf;AACA;AACA,iBAAKoD,MAAL,CAAY/b,SAAZ,GAAwB,KAAK0Z,OAA7B;AACA;AACA,gBAAI,KAAK0B,gBAAL,kBAAJ,EAAsC;AAClC,qBAAK3C,OAAL,CAAazY,SAAb,GAAyB,EAAzB;AACH;;AAED,gBAAI,KAAK0Z,OAAL,GAAe,CAAnB,EAAsB;AAClBqF,qBAAKtd,KAAL,CAAWud,UAAX,GAAwB,SAAxB;AACA,oBAAI,KAAK5D,gBAAL,kBAAJ,EAAsC;AAClC,yBAAK,IAAI6D,IAAI,CAAb,EAAgBA,IAAI,KAAKvF,OAAzB,EAAkCuF,GAAlC,EAAuC;AACnC,4BAAInsB,MAAM,oBAAUmsB,IAAI,CAAd,EAAiBA,IAAI,KAAKtG,UAA1B,EAAsC,KAAtC,CAAV;AACA,6BAAKF,OAAL,CAAa3d,OAAb,CAAqBmkB,CAArB,IAA0BnsB,GAA1B;AACH;AACJ,iBALD,MAKO;AACH;AACA,yBAAK2lB,OAAL,CAAa9lB,KAAb,GAAqB,KAAKgnB,aAA1B;AACH;AAEJ,aAZD,MAYO;AACH;AACAoF,qBAAKtd,KAAL,CAAWud,UAAX,GAAwB,QAAxB;AACH;AACD,iBAAKE,WAAL,CAAiBnrB,GAAGuU,cAApB;AACH;;AAED;;;;;;;oCAIYwW,S,EAAW;AACnB,gBAAI/qB,KAAK,KAAKA,EAAd;AACA,gBAAIqL,OAAOrL,GAAGsL,GAAH,GAASD,IAApB;AACA,gBAAIqa,iBAAiBxa,SAAS,KAAKwa,cAAd,EAA8B,EAA9B,CAArB;AACA,gBAAI0F,eAAe1F,iBAAiBxa,SAAS,KAAK0Z,UAAd,EAA0B,EAA1B,CAApC;;AAEA;AACA,gBAAImG,SAAJ,EAAe;AACX/qB,mBAAGuU,cAAH,GAAoBwW,SAApB;AACH;;AAED;AACA,iBAAK,IAAIM,IAAI,CAAR,EAAW9P,MAAMvb,GAAGqkB,cAAH,CAAkB,IAAlB,CAAtB,EAA+CgH,IAAI9P,GAAnD,EAAwD8P,GAAxD,EAA6D;AACzD,oBAAIC,cAActrB,GAAGuU,cAAH,CAAkB8W,CAAlB,CAAlB;AACA,oBAAIE,IAAIlgB,KAAKigB,WAAL,CAAR;AACA,oBAAI3e,aAAa4e,EAAErhB,YAAF,CAAe,UAAf,CAAjB;AACA,oBAAIshB,eAAe,KAAnB;;AAEA,oBAAIH,KAAK3F,cAAL,IAAuB2F,IAAID,YAA/B,EAA6C;AACzC,wBAAI,mBAAOze,UAAP,KAAsBzG,QAAQyG,eAAe,MAAvB,CAA1B,EAA0D;AACtD4e,0BAAE7d,KAAF,CAAQC,OAAR,GAAkB,EAAlB;AACA6d,uCAAe,IAAf;AACH;AACJ,iBALD,MAKO;AACHD,sBAAE7d,KAAF,CAAQC,OAAR;AACH;AACD,qBAAKvN,OAAL,CAAa0J,IAAb,CAAkB,WAAlB,EAA+B9J,EAA/B,EAAmCsrB,WAAnC,EAAgDD,CAAhD,EAAmDG,YAAnD;AACH;;AAED;AACA,iBAAKprB,OAAL,CAAa0J,IAAb,CAAkB,iBAAlB,EAAqC9J,EAArC,EAAyC,IAAzC;AACH;;AAED;;;;;;;kCAIU;AACN,mBAAO,KAAK4lB,aAAZ;AACH;;AAED;;;;;;;;gCAKQ6F,G,EAAK;AACT,gBAAIzrB,KAAK,KAAKA,EAAd;AACA,gBAAI,CAACA,GAAG0rB,aAAH,EAAD,IAAuB,CAAC,KAAKpX,SAAL,EAA5B,EAA8C;AAC1C;AACH;AACD,gBAAIqX,SAAS,KAAK9nB,GAAlB;AAAA,gBACI+nB,iBAAiBH,GAAjB,yCAAiBA,GAAjB,CADJ;AAEA,gBAAIG,YAAY,QAAhB,EAA0B;AACtB,wBAAQH,IAAIxmB,WAAJ,EAAR;AACI,yBAAK,MAAL;AACI0mB,+BAAOjD,IAAP;AACA;AACJ,yBAAK,UAAL;AACIiD,+BAAO9C,IAAP;AACA;AACJ,yBAAK,MAAL;AACI8C,+BAAO5C,IAAP;AACA;AACJ,yBAAK,OAAL;AACI4C,+BAAO3C,KAAP;AACA;AACJ;AACI2C,+BAAOjD,IAAP;AACA;AAfR;AAiBH,aAlBD,MAmBK,IAAIkD,YAAY,QAAhB,EAA0B;AAC3B,qBAAKhD,UAAL,CAAgB6C,MAAM,CAAtB;AACH;AACJ;;AAED;;;;;;4CAGoB;AAAA;;AAChB,gBAAIzrB,KAAK,KAAKA,EAAd;AACA,gBAAI6D,MAAM,KAAKA,GAAf;;AAEA,gBAAI,KAAK8gB,aAAL,IAAsB,CAAC,KAAKQ,cAAhC,EAAgD;AAC5C;AACH;;AAEDthB,gBAAIgoB,gBAAJ,GAAuB,UAACC,EAAD,EAAQ;AAC3B,uBAAKC,sBAAL;AACAD,mBAAGznB,MAAH,CAAU+kB,IAAV;AACH,aAHD;;AAKA,gBAAI4C,OAAO,kCAAX;AACAA,iBAAK/tB,SAAL,GAAiB,KAAKqnB,kBAAtB;AACA,gBAAI2G,WAAW,KAAK9G,cAAL,CAAoB,CAApB,CAAf;AAAA,gBACI+G,WAAW,KAAK/G,cAAL,CAAoB,CAApB,CADf;AAEA,gBAAIgH,WAAW,oBAAU,MAAV,CAAf;AACAA,qBAASluB,SAAT,GAAqB,KAAKunB,mBAA1B;;AAEA;AACA,gBAAI,CAAC,KAAKX,eAAV,EAA2B;AACvB7kB,mBAAG4V,UAAH;AACH;AACD,gBAAIC,WAAW,CAAC,KAAKgP,eAAN,GACX7kB,GAAG8V,IADQ,GACD,cAAI,KAAK+O,eAAT,CADd;AAEAsH,qBAASntB,WAAT,CAAqB,qBAAWitB,QAAX,CAArB;;AAEA,gBAAIhqB,OAAOjC,GAAGC,OAAH,CAAW,MAAX,CAAX;AACA,gBAAIgC,QAAQA,KAAKqc,GAAjB,EAAsB;AAClBrc,qBAAKqc,GAAL,CAAShhB,UAAT,CAAoBoc,YAApB,CAAiCyS,QAAjC,EAA2ClqB,KAAKqc,GAAhD;AACArc,qBAAKqc,GAAL,CAAShhB,UAAT,CAAoBoc,YAApB,CAAiCsS,IAAjC,EAAuC/pB,KAAKqc,GAA5C;AACH,aAHD,MAGO;AACHzI,yBAAS7W,WAAT,CAAqBmtB,QAArB;AACAtW,yBAAS7W,WAAT,CAAqBgtB,IAArB;AACH;;AAED,iBAAK,IAAIT,IAAI,CAAb,EAAgBA,IAAIW,SAASjwB,MAA7B,EAAqCsvB,GAArC,EAA0C;AACtC,oBAAIa,UAAU,IAAIC,MAAJ,CAAWH,SAASX,CAAT,CAAX,EAAwBW,SAASX,CAAT,CAAxB,EAAqC,KAArC,EAA4C,KAA5C,CAAd;AACAS,qBAAKjlB,OAAL,CAAawkB,CAAb,IAAkBa,OAAlB;AACH;AACD,+BAAOJ,IAAP,EAAa,QAAb,EAAuBnoB,IAAIgoB,gBAA3B;AACA,iBAAKlE,aAAL,GAAqBwE,QAArB;AACA,iBAAKxH,aAAL,GAAqBqH,IAArB;AACH;;AAED;;;;;;+CAGuB;AACnB,gBAAIhsB,KAAK,KAAKA,EAAd;AACA,gBAAI,CAACA,GAAG0rB,aAAH,EAAD,IAAuB,CAAC,KAAK/G,aAA7B,IACA,CAAC,KAAKQ,cADV,EAC0B;AACtB;AACH;AACD,gBAAI,KAAKR,aAAT,EAAwB;AACpB,oCAAU,KAAKA,aAAf;AACH;AACD,gBAAI,KAAKgD,aAAT,EAAwB;AACpB,oCAAU,KAAKA,aAAf;AACH;AACD,iBAAKhD,aAAL,GAAqB,IAArB;AACA,iBAAKgD,aAAL,GAAqB,IAArB;AACH;;AAED;;;;;;;mCAIW2E,K,EAAO;AACd,gBAAItsB,KAAK,KAAKA,EAAd;;AAEA,gBAAI,CAAC,KAAKsU,SAAL,EAAL,EAAuB;AACnB;AACH;;AAED,iBAAKlU,OAAL,CAAa0J,IAAb,CAAkB,oBAAlB,EAAwC9J,EAAxC,EAA6CssB,QAAQ,CAArD;;AAEA,gBAAIA,UAAU,IAAd,EAAoB;AAChBA,wBAAQ,KAAKjF,gBAAL,qBACJ,KAAK3C,OAAL,CAAa3d,OAAb,CAAqByhB,aADjB,GACiC,KAAK9D,OAAL,CAAa9lB,KAAb,GAAqB,CAD9D;AAEH;AACD,gBAAI0tB,SAAS,CAAT,IAAcA,SAAU,KAAK3G,OAAL,GAAe,CAA3C,EAA+C;AAC3C,qBAAK4B,kBAAL,CAAwB,IAAxB,EAA+B+E,QAAQ,CAAvC;;AAEA,qBAAK1G,aAAL,GAAqB1a,SAASohB,KAAT,EAAgB,EAAhB,IAAsB,CAA3C;AACA,oBAAI,KAAKjF,gBAAL,kBAAJ,EAAsC;AAClC,yBAAK3C,OAAL,CAAa3d,OAAb,CAAqBulB,KAArB,EAA4B9a,QAA5B,GAAuC,IAAvC;AACH,iBAFD,MAEO;AACH,yBAAKkT,OAAL,CAAa9lB,KAAb,GAAqB,KAAKgnB,aAA1B;AACH;;AAED,qBAAKF,cAAL,GAAuB,KAAK2B,gBAAL,kBAAD,GAClB,KAAK3C,OAAL,CAAa9lB,KADK,GACI0tB,QAAQ,KAAK1H,UADvC;;AAGA,qBAAKuG,WAAL;;AAEA,qBAAK1D,iBAAL,CAAuB,IAAvB,EAA8B6E,QAAQ,CAAtC;AACH;;AAED,iBAAKlsB,OAAL,CAAa0J,IAAb,CAAkB,mBAAlB,EAAuC9J,EAAvC,EAA4CssB,QAAQ,CAApD;AACH;;AAED;;;;;;;6CAIqBtmB,G,EAAK;AACtB,gBAAI,CAAC,KAAKsO,SAAL,EAAD,IAAqBzO,MAAMG,GAAN,CAAzB,EAAqC;AACjC;AACH;;AAED,iBAAK2e,aAAL,CAAmB/lB,KAAnB,GAA2BoH,GAA3B;AACA,iBAAK+lB,sBAAL;AACH;;AAED;;;;;;iDAGyB;AACrB,gBAAI/rB,KAAK,KAAKA,EAAd;;AAEA,gBAAI,CAAC,KAAKsU,SAAL,EAAD,IAAqBtU,GAAGqkB,cAAH,OAAwB,CAAjD,EAAoD;AAChD;AACH;;AALoB,gBAQF2H,IARE,GASjB,IATiB,CAQjBrH,aARiB;AAAA,gBAQI0C,gBARJ,GASjB,IATiB,CAQIA,gBARJ;AAAA,gBAQsB3C,OARtB,GASjB,IATiB,CAQsBA,OARtB;AAAA,gBAQ+BtkB,OAR/B,GASjB,IATiB,CAQ+BA,OAR/B;;;AAWrBA,oBAAQ0J,IAAR,CAAa,2BAAb,EAA0C9J,EAA1C;;AAEA,gBAAIuoB,WAAWyD,KAAKxD,aAApB;AACA,gBAAI+D,mBAAoBlF,kCAAD,GACnB3C,QAAQ8D,aADW,GACKtd,SAASwZ,QAAQ9lB,KAAR,GAAgB,CAAzB,EAA4B,EAA5B,CAD5B;AAEA,iBAAKgmB,UAAL,GAAkB1Z,SAAS8gB,KAAKjlB,OAAL,CAAawhB,QAAb,EAAuB3pB,KAAhC,EAAuC,EAAvC,CAAlB;AACA,iBAAK8mB,cAAL,GAAsB,KAAKd,UAAL,GAAkB2H,gBAAxC;;AAEA,gBAAI,CAAC1mB,MAAM,KAAK+e,UAAX,CAAL,EAA6B;AACzB,oBAAI,KAAKc,cAAL,IAAuB1lB,GAAGwsB,gBAA9B,EAAgD;AAC5C,yBAAK9G,cAAL,GAAuB1lB,GAAGwsB,gBAAH,GAAsB,KAAK5H,UAAlD;AACH;AACD,qBAAK4F,aAAL;;AAEA,oBAAInD,kCAAJ,EAAiC;AAC7B,wBAAIoF,SACC/H,QAAQ3d,OAAR,CAAgB9K,MAAhB,GAAyB,CAAzB,IAA8BswB,gBAA/B,GACC7H,QAAQ3d,OAAR,CAAgB9K,MAAhB,GAAyB,CAD1B,GAC+BswB,gBAFnC;AAGA7H,4BAAQ3d,OAAR,CAAgB0lB,MAAhB,EAAwBjb,QAAxB,GAAmC,IAAnC;AACH;AACJ;;AAEDpR,oBAAQ0J,IAAR,CAAa,0BAAb,EAAyC9J,EAAzC,EAA6C,KAAK4kB,UAAlD;AACH;;AAED;;;;;;oCAGY;AACR,gBAAI5kB,KAAK,KAAKA,EAAd;AACA,gBAAI,CAAC,KAAKsU,SAAL,EAAL,EAAuB;AACnB;AACH;AACD,iBAAKlU,OAAL,CAAa0J,IAAb,CAAkB,mBAAlB,EAAuC9J,EAAvC;AACA,gBAAI0sB,OAAO1sB,GAAGC,OAAH,CAAW,OAAX,EAAoB0sB,SAApB,EAAX;AACA,gBAAID,SAAS,EAAb,EAAiB;AACb,qBAAK9D,UAAL,CAAiB8D,OAAO,CAAxB;AACH;AACD,iBAAKtsB,OAAL,CAAa0J,IAAb,CAAkB,kBAAlB,EAAsC9J,EAAtC,EAA0C0sB,IAA1C;AACH;;AAED;;;;;;0CAGkB;AACd,gBAAI1sB,KAAK,KAAKA,EAAd;AACA,gBAAI,CAAC,KAAKsU,SAAL,EAAL,EAAuB;AACnB;AACH;AACD,iBAAKlU,OAAL,CAAa0J,IAAb,CAAkB,0BAAlB,EAA8C9J,EAA9C;AACA,gBAAI4sB,aAAa5sB,GAAGC,OAAH,CAAW,OAAX,EAAoB4sB,aAApB,EAAjB;;AAEA,gBAAID,eAAe,EAAnB,EAAuB;AACnB,qBAAKjI,aAAL,CAAmB5d,OAAnB,CAA2B6lB,UAA3B,EAAuCpb,QAAvC,GAAkD,IAAlD;AACA,qBAAKqZ,oBAAL;AACH;AACD,iBAAKzqB,OAAL,CAAa0J,IAAb,CAAkB,yBAAlB,EAA6C9J,EAA7C,EAAiD4sB,UAAjD;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKvsB,WAAV,EAAuB;AACnB;AACH;;AAED,gBAAIwD,MAAM,KAAKA,GAAf;;AAEA,gBAAI,KAAK6gB,OAAT,EAAkB;AACd,oBAAI,KAAK2C,gBAAL,kBAAJ,EAAsC;AAClC,0CAAU,KAAK3C,OAAf,EAAwB,QAAxB,EAAkC7gB,IAAIwlB,cAAtC;AACH,iBAFD,MAGK,IAAI,KAAKhC,gBAAL,iBAAJ,EAAqC;AACtC,0CAAU,KAAK3C,OAAf,EAAwB,UAAxB,EAAoC7gB,IAAIolB,UAAxC;AACH;AACD,oCAAU,KAAKvE,OAAf;AACH;;AAED,gBAAI,KAAKkD,WAAT,EAAsB;AAClB,sCAAU,KAAKA,WAAf,EAA4B,OAA5B,EAAqC/jB,IAAI6kB,IAAzC;AACA,oCAAU,KAAKd,WAAf;AACA,qBAAKA,WAAL,GAAmB,IAAnB;AACH;;AAED,gBAAI,KAAKC,WAAT,EAAsB;AAClB,sCAAU,KAAKA,WAAf,EAA4B,OAA5B,EAAqChkB,IAAIglB,IAAzC;AACA,oCAAU,KAAKhB,WAAf;AACA,qBAAKA,WAAL,GAAmB,IAAnB;AACH;;AAED,gBAAI,KAAKC,WAAT,EAAsB;AAClB,sCAAU,KAAKA,WAAf,EAA4B,OAA5B,EAAqCjkB,IAAIklB,IAAzC;AACA,oCAAU,KAAKjB,WAAf;AACA,qBAAKA,WAAL,GAAmB,IAAnB;AACH;;AAED,gBAAI,KAAKC,YAAT,EAAuB;AACnB,sCAAU,KAAKA,YAAf,EAA6B,OAA7B,EAAsClkB,IAAImlB,KAA1C;AACA,oCAAU,KAAKjB,YAAf;AACA,qBAAKA,YAAL,GAAoB,IAApB;AACH;;AAED,gBAAI,KAAKE,QAAT,EAAmB;AACf,oCAAU,KAAKA,QAAf;AACA,qBAAKA,QAAL,GAAgB,IAAhB;AACH;;AAED,gBAAI,KAAKC,OAAT,EAAkB;AACd,oCAAU,KAAKA,OAAf;AACA,qBAAKA,OAAL,GAAe,IAAf;AACH;;AAED,gBAAI,KAAKF,MAAT,EAAiB;AACb,oCAAU,KAAKA,MAAf;AACA,qBAAKA,MAAL,GAAc,IAAd;AACH;;AAED,gBAAI,KAAK3C,iBAAT,EAA4B;AACxB,qBAAKyH,oBAAL;AACH;;AAED,iBAAK1sB,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,CAAjB,EAAsC;AAAA,uBAAM,OAAK+a,eAAL,EAAN;AAAA,aAAtC;AACA,iBAAKtqB,OAAL,CAAauP,GAAb,CAAiB,CAAC,aAAD,CAAjB,EACI,UAAC3P,EAAD,EAAK2qB,UAAL;AAAA,uBAAoB,OAAKC,OAAL,CAAaD,UAAb,CAApB;AAAA,aADJ;AAEA,iBAAKvqB,OAAL,CAAauP,GAAb,CAAiB,CAAC,qBAAD,CAAjB,EACI,UAAC3P,EAAD,EAAK4kB,UAAL;AAAA,uBAAoB,OAAKiG,oBAAL,CAA0BjG,UAA1B,CAApB;AAAA,aADJ;;AAGA,iBAAKF,OAAL,GAAe,IAAf;AACA,iBAAKiB,OAAL,GAAe,CAAf;;AAEA,iBAAKtlB,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AC93BL;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;;;;IAMa0sB,W,WAAAA,W;;;AAET;;;;AAIA,yBAAY/sB,EAAZ,EAAgB;AAAA;;AAGZ;AAHY,8HACNA,EADM,EACF,cADE;;AAIZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAY6sB,aAAZ,IAA6B,EAArC;;AAEA;AACAhtB,WAAGqb,aAAH,GAAmB,IAAnB;AACArb,WAAG4K,iBAAH,GAAuB,EAAvB;;AAEA;;;;AAIA,cAAKqiB,gBAAL,GAAwB5mB,EAAE6mB,kBAAF,KAAyB,KAAzB,GAAiC,KAAjC,GAAyC,IAAjE;;AAEA;;;;AAIA,cAAKC,QAAL,GAAgB9mB,EAAE+mB,KAAF,IAAWptB,GAAGqtB,UAAH,GAAgB,gBAA3C;;AAEA;;;;AAIA,cAAKC,cAAL,GAAsBjnB,EAAEknB,YAAF,IAClBvtB,GAAGqtB,UAAH,GAAgB,sBADpB;;AAGA;;;;AAIA,cAAKG,QAAL,GAAgBnnB,EAAEonB,UAAF,IACZ,eAAe,MAAKN,QAApB,GAA+B,0BADnC;;AAGA;;;;AAIA,cAAKO,mBAAL,GAA2BrnB,EAAEsnB,qBAAF,IACvB,kBADJ;;AAGA;;;;AAIA,cAAK5kB,iBAAL,GAAyB1C,EAAEunB,aAAF,IAAmB,aAA5C;;AAEA;;;;;AAKA,cAAKC,iBAAL,GAAyBxnB,EAAEynB,mBAAF,KAA0B,KAA1B,GAAkC,KAAlC,GAA0C,IAAnE;;AAEA;;;;AAIA,cAAKC,YAAL,GAAoB,iBAAK1nB,EAAE2nB,2BAAP,IAChB3nB,EAAE2nB,2BADc,kBAApB;;AAGA;;;;AAIA,cAAKC,WAAL,GAAmB,iBAAK5nB,EAAE6nB,0BAAP,IACf7nB,EAAE6nB,0BADa,kBAAnB;;AAGA;;;;AAIA,cAAKC,aAAL,GAAqB,iBAAK9nB,EAAE+nB,4BAAP,IACjB/nB,EAAE+nB,4BADe,kBAArB;;AAGA;;;;AAIA,cAAKC,YAAL,GAAoB,iBAAKhoB,EAAEioB,2BAAP,IAChBjoB,EAAEioB,2BADc,kBAApB;;AAGA;;;;;AAKA,cAAKC,QAAL,GAAgB,EAAhB;;AAEA;;;;;AAKA,cAAKC,QAAL,GAAgB,EAAhB;;AAEA;;;;;AAKA,cAAKC,YAAL,GAAoB,IAApB;;AAEA;;;;;AAKA,cAAKC,OAAL,GAAe,MAAKD,YAAL,IAAqB,EAApC;;AAEA;;;;;AAKA,cAAKE,OAAL,GAAe,QAAf;;AAEA;;;;;AAKA,cAAKC,eAAL,GAAuB,CAAC,CAAxB;AA5HY;AA6Hf;;AAED;;;;;;;;gCAIQ/qB,G,EAAK;AACT,gBAAIrE,MAAM,sBAAUqE,GAAV,EAAevG,UAAzB;AACA,gBAAIwJ,WAAWoE,SAAS1L,IAAI0K,YAAJ,CAAiB,IAAjB,CAAT,EAAiC,EAAjC,CAAf;;AAEA,iBAAK2kB,QAAL,CAAc/nB,QAAd;AACA,iBAAK8X,MAAL,CAAY9X,QAAZ;;AAEA,gBAAI,KAAK+mB,iBAAT,EAA4B;AACxB,oBAAIlY,OAAO,KAAK+Y,OAAL,CAAa5nB,QAAb,CAAX;AAAA,oBACIqc,SAAS,KAAKnjB,EAAL,CAAQkjB,gBAAR,CAAyBpc,QAAzB,CADb;AAAA,oBAEIgoB,cAAc3L,OAAOtJ,WAAP,GAAqB,IAFvC;AAGAlE,qBAAKjI,KAAL,CAAW4J,KAAX,GAAmBpM,SAAS4jB,WAAT,EAAsB,EAAtB,IAA4B,IAA/C;AACH;AACD,kCAAUjrB,GAAV;AACA,gCAAQA,GAAR;AACH;;AAED;;;;;;;kCAIUA,G,EAAK;AACX,gBAAI,KAAK+qB,eAAL,KAAyB,CAAC,CAA9B,EAAiC;AAC7B;AACH;AACD,gBAAIjQ,YAAY,sBAAU9a,GAAV,CAAhB;AACA,gBAAIkrB,YAAY,KAAKL,OAAL,CAAa,KAAKE,eAAlB,CAAhB;AACA,gBAAII,OAAO,KAAKR,QAAL,CAAc,KAAKI,eAAnB,CAAX;;AAEA,gBAAII,SAASrQ,SAAb,EAAwB;AACpB;AACH;;AAED,mBAAOA,aAAaA,cAAcoQ,SAAlC,EAA6C;AACzCpQ,4BAAYA,UAAUrhB,UAAtB;AACH;;AAED,gBAAIqhB,cAAcoQ,SAAlB,EAA6B;AACzB,qBAAKE,KAAL,CAAW,KAAKL,eAAhB;AACH;;AAED;AACH;;AAED;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAKvuB,WAAT,EAAsB;AAClB;AACH;;AAED,gBAAIL,KAAK,KAAKA,EAAd;;AAEA;AACA;AACA;AACA,gBAAIA,GAAGob,UAAH,IAAiB,CAAjB,IAAsBvV,MAAM7F,GAAGG,MAAH,GAAY8X,iBAAlB,CAA1B,EAAgE;AAC5DjY,mBAAGob,UAAH,GAAgB,CAAhB;AACH;;AAED;AACA;AACA;AACA,gBAAIpb,GAAGqC,UAAP,EAAmB;AACfrC,mBAAGob,UAAH;AACA,qBAAK8T,UAAL;AACH;;AAED;AACA,iBAAK9uB,OAAL,CAAaE,EAAb,CAAgB,CAAC,kBAAD,CAAhB,EAAsC;AAAA,uBAAM,OAAK6uB,aAAL,EAAN;AAAA,aAAtC;AACA,iBAAK/uB,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EAAqC;AAAA,uBAAM,OAAKuuB,QAAL,EAAN;AAAA,aAArC;AACA,iBAAKzuB,OAAL,CAAaE,EAAb,CAAgB,CAAC,gBAAD,CAAhB,EACI,UAACN,EAAD,EAAKovB,SAAL;AAAA,uBAAmB,OAAKC,WAAL,CAAiBD,SAAjB,EAA4B,IAA5B,CAAnB;AAAA,aADJ;AAEA,iBAAKhvB,OAAL,CAAaE,EAAb,CAAgB,CAAC,sBAAD,CAAhB,EAA0C;AAAA,uBAAM,OAAK4uB,UAAL,EAAN;AAAA,aAA1C;AACA,iBAAK9uB,OAAL,CAAaE,EAAb,CAAgB,CAAC,oBAAD,CAAhB,EACI,UAACN,EAAD,EAAK8G,QAAL;AAAA,uBAAkB,OAAKmB,KAAL,CAAWnB,QAAX,CAAlB;AAAA,aADJ;;AAGA;AACA,iBAAKzG,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;gCAGQ;AACJ,iBAAKI,MAAL;AACA,iBAAKC,IAAL;AACA,iBAAKwuB,UAAL;AACA,iBAAKI,QAAL;AACH;;AAED;;;;;;qCAGa;AAAA;;AACT,gBAAItvB,KAAK,KAAKA,EAAd;;AAEA;AACA;AACAA,eAAGob,UAAH;;AAEA,iBAAK,IAAI3e,IAAI,CAAb,EAAgBA,IAAIuD,GAAGwM,OAAvB,EAAgC/P,GAAhC,EAAqC;AACjC,oBAAIuD,GAAGqP,aAAH,CAAiB5S,CAAjB,iBAAJ,EAAkC;AAC9B;AACH;AACD,oBAAIuyB,OAAO,oBAAU,MAAV,EAAkB,CAAC,IAAD,EAAOvyB,CAAP,CAAlB,CAAX;AACAuyB,qBAAK/iB,SAAL,GAAiB,KAAKuhB,QAAtB;AACA,oBAAIrK,SAASnjB,GAAGkjB,gBAAH,CAAoBzmB,CAApB,CAAb;AACA0mB,uBAAOnkB,WAAP,CAAmBgwB,IAAnB;AACA,mCAAOA,IAAP,EAAa,OAAb,EAAsB,UAACnrB,GAAD;AAAA,2BAAS,OAAKmS,OAAL,CAAanS,GAAb,CAAT;AAAA,iBAAtB;AACA,qBAAK0qB,QAAL,CAAc9xB,CAAd,IAAmBuyB,IAAnB;AACA,qBAAKR,QAAL,CAAc/xB,CAAd,IAAmBuyB,KAAK9Y,UAAxB;AACH;AACJ;;AAED;;;;;;mCAGW;AACP,iBAAK,IAAIzZ,IAAI,CAAb,EAAgBA,IAAI,KAAKgyB,YAAL,CAAkBxyB,MAAtC,EAA8CQ,GAA9C,EAAmD;AAC/C,qBAAKwL,KAAL,CAAWxL,CAAX,EAAc,KAAKgyB,YAAL,CAAkBhyB,CAAlB,CAAd;AACH;AACJ;;AAED;;;;;;;;8BAKMqK,Q,EAAUsD,G,EAAK;AACjB,gBAAIpK,KAAK,KAAKA,EAAd;AACA,gBAAIuvB,cAAY,KAAKZ,OAAjB,GAA2B3uB,GAAGd,EAA9B,SAAoC4H,QAAxC;AACA,gBAAI0oB,cAAc,oBAAU,KAAV,EAAiB,CAAC,OAAD,EAAU,KAAK9B,mBAAf,CAAjB,CAAlB;AACA,gBAAI/X,OAAOvL,OACP,oBAAU,KAAV,EAAiB,CAAC,IAAD,EAAOmlB,MAAP,CAAjB,EAAiC,CAAC,OAAD,EAAU,KAAKxmB,iBAAf,CAAjC,CADJ;AAEA/I,eAAG4K,iBAAH,CAAqBpC,IAArB,CAA0BmN,KAAKzW,EAA/B;AACAswB,wBAAYxwB,WAAZ,CAAwB2W,IAAxB;;AAEA,gBAAIwN,SAASnjB,GAAGkjB,gBAAH,CAAoBpc,QAApB,CAAb;AACAqc,mBAAOzJ,YAAP,CAAoB8V,WAApB,EAAiCrM,OAAOjN,UAAxC;AACA,+BAAOP,IAAP,EAAa,OAAb,EAAsB,UAAC9R,GAAD;AAAA,uBAAS,oBAAQA,GAAR,CAAT;AAAA,aAAtB;AACA,iBAAK6qB,OAAL,CAAa5nB,QAAb,IAAyB6O,IAAzB;AACH;;AAED;;;;;;;+BAIO7O,Q,EAAU;AACb,gBAAI,CAAC,KAAK2oB,MAAL,CAAY3oB,QAAZ,CAAL,EAA4B;AACxB,qBAAK4oB,IAAL,CAAU5oB,QAAV;AACH,aAFD,MAEO;AACH,qBAAKmoB,KAAL,CAAWnoB,QAAX;AACH;AACJ;;AAED;;;;;;;6BAIKA,Q,EAAU;AAAA;;AACX,gBAAI9G,KAAK,KAAKA,EAAd;AAAA,gBACI0K,YAAY,KAAKgkB,OAAL,CAAa5nB,QAAb,CADhB;;AAGA,iBAAKinB,YAAL,CAAkB,IAAlB,EAAwBrjB,SAAxB,EAAmC5D,QAAnC;;AAEA4D,sBAAUgD,KAAV,CAAgBC,OAAhB,GAA0B,OAA1B;AACA,iBAAKihB,eAAL,GAAuB9nB,QAAvB;AACA,2CAAa,SAAb,EAAwB,UAACjD,GAAD;AAAA,uBAAS,OAAKgb,SAAL,CAAehb,GAAf,CAAT;AAAA,aAAxB;;AAEA,gBAAI7D,GAAGqP,aAAH,CAAiBvI,QAAjB,kBAAJ,EAA0C;AACtC,oBAAIqE,MAAMnL,GAAGyO,gBAAH,CAAoB3H,QAApB,CAAV;AACA,oBAAIqE,GAAJ,EAAS;AACLA,wBAAIwkB,KAAJ;AACH;AACJ;;AAED,iBAAK1B,WAAL,CAAiB,IAAjB,EAAuBvjB,SAAvB,EAAkC5D,QAAlC;AACH;;AAED;;;;;;;8BAIMA,Q,EAAU;AAAA;;AACZ,gBAAI4D,YAAY,KAAKgkB,OAAL,CAAa5nB,QAAb,CAAhB;;AAEA,iBAAKqnB,aAAL,CAAmB,IAAnB,EAAyBzjB,SAAzB,EAAoC5D,QAApC;;AAEA4D,sBAAUgD,KAAV,CAAgBC,OAAhB;AACA,gBAAI,KAAKihB,eAAL,KAAyB9nB,QAA7B,EAAuC;AACnC,qBAAK8nB,eAAL,GAAuB,CAAC,CAAxB;AACH;AACD,8CAAgB,SAAhB,EAA2B,UAAC/qB,GAAD;AAAA,uBAAS,OAAKgb,SAAL,CAAehb,GAAf,CAAT;AAAA,aAA3B;;AAEA,iBAAKwqB,YAAL,CAAkB,IAAlB,EAAwB3jB,SAAxB,EAAmC5D,QAAnC;AACH;;AAED;;;;;;;;+BAKOA,Q,EAAU;AACb,mBAAO,KAAK4nB,OAAL,CAAa5nB,QAAb,EAAuB4G,KAAvB,CAA6BC,OAA7B,KAAyC,OAAhD;AACH;;AAED;;;;;;;iCAISiiB,S,EAAW;AAChB;AACA;AACA,gBAAI,oBAAQA,SAAR,KAAsB,CAAC,KAAK3C,gBAAhC,EAAkD;AAC9C;AACH;AACD,iBAAK,IAAIxwB,IAAI,CAAb,EAAgBA,IAAI,KAAKiyB,OAAL,CAAazyB,MAAjC,EAAyCQ,GAAzC,EAA8C;AAC1C,oBAAIA,MAAMmzB,SAAV,EAAqB;AACjB;AACH;AACD,oBAAIC,UAAU,KAAK7vB,EAAL,CAAQqP,aAAR,CAAsB5S,CAAtB,CAAd;AACA,oBAAIqzB,mBACCD,gCAAyBA,2BAD9B;;AAGA;AACA;AACA,oBAAI,CAACC,gBAAD,IAAqB,CAAC,oBAAQF,SAAR,CAA1B,EAA8C;AAC1C,yBAAKX,KAAL,CAAWxyB,CAAX;AACH;AACJ;AACJ;;AAED;;;;;;wCAGgB;AACZ,iBAAK,IAAIA,IAAI,CAAb,EAAgBA,IAAI,KAAK+xB,QAAL,CAAcvyB,MAAlC,EAA0CQ,GAA1C,EAA+C;AAC3C,qBAAK4yB,WAAL,CAAiB5yB,CAAjB,EAAoB,KAApB;AACH;AACJ;;AAED;;;;;;;;oCAKYqK,Q,EAAUipB,M,EAAQ;AAC1B,gBAAIf,OAAO,KAAKR,QAAL,CAAc1nB,QAAd,CAAX;AACA,gBAAIkoB,IAAJ,EAAU;AACNA,qBAAKgB,GAAL,GAAWD,SAAS,KAAKzC,cAAd,GAA+B,KAAKH,QAA/C;AACH;AACJ;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAK9sB,WAAV,EAAuB;AACnB;AACH;;AAED,iBAAKouB,YAAL,GAAoB,EAApB;AACA,iBAAK,IAAIhyB,IAAI,CAAb,EAAgBA,IAAI,KAAKiyB,OAAL,CAAazyB,MAAjC,EAAyCQ,GAAzC,EAA8C;AAC1C,oBAAIiO,YAAY,KAAKgkB,OAAL,CAAajyB,CAAb,CAAhB;AAAA,oBACI+yB,cAAc9kB,UAAUpN,UAD5B;AAAA,oBAEI0xB,OAAO,KAAKT,QAAL,CAAc9xB,CAAd,CAFX;AAAA,oBAGIwzB,UAAU,KAAKzB,QAAL,CAAc/xB,CAAd,CAHd;AAIA,oBAAIiO,SAAJ,EAAe;AACX,wCAAUA,SAAV;AACA,yBAAK+jB,YAAL,CAAkBhyB,CAAlB,IAAuBiO,SAAvB;AACH;AACDA,4BAAY,IAAZ;AACA,oBAAI8kB,WAAJ,EAAiB;AACb,wCAAUA,WAAV;AACH;AACDA,8BAAc,IAAd;AACA,oBAAIR,IAAJ,EAAU;AACN,wCAAUA,IAAV;AACH;AACDA,uBAAO,IAAP;AACA,oBAAIiB,OAAJ,EAAa;AACT,wCAAUA,OAAV;AACH;AACDA,0BAAU,IAAV;AACH;AACD,iBAAKvB,OAAL,GAAe,EAAf;AACA,iBAAKH,QAAL,GAAgB,EAAhB;AACA,iBAAKC,QAAL,GAAgB,EAAhB;;AAEA;AACA,iBAAKxuB,EAAL,CAAQ4K,iBAAR,GAA4B,EAA5B;;AAEA;AACA,iBAAKxK,OAAL,CAAauP,GAAb,CAAiB,CAAC,kBAAD,CAAjB,EAAuC;AAAA,uBAAM,OAAKwf,aAAL,EAAN;AAAA,aAAvC;AACA,iBAAK/uB,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,CAAjB,EAAsC;AAAA,uBAAM,OAAKkf,QAAL,EAAN;AAAA,aAAtC;AACA,iBAAKzuB,OAAL,CAAauP,GAAb,CAAiB,CAAC,gBAAD,CAAjB,EACI,UAAC3P,EAAD,EAAKovB,SAAL;AAAA,uBAAmB,OAAKC,WAAL,CAAiBD,SAAjB,EAA4B,IAA5B,CAAnB;AAAA,aADJ;AAEA,iBAAKhvB,OAAL,CAAauP,GAAb,CAAiB,CAAC,sBAAD,CAAjB,EAA2C;AAAA,uBAAM,OAAKuf,UAAL,EAAN;AAAA,aAA3C;AACA,iBAAK9uB,OAAL,CAAauP,GAAb,CAAiB,CAAC,oBAAD,CAAjB,EACI,UAAC3P,EAAD,EAAK8G,QAAL;AAAA,uBAAkB,OAAKmB,KAAL,CAAWnB,QAAX,CAAlB;AAAA,aADJ;;AAGA,iBAAKzG,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;ACtcL;;AACA;;AACA;;;;;;;;AAEA;;;;;;IAMa6vB,W,WAAAA,W;;;AAET;;;;AAIA,yBAAYlwB,EAAZ,EAAgB;AAAA;;AAGZ;AAHY,8HACNA,EADM,EACF,aADE;;AAIZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAYgwB,YAAZ,IAA4B,EAApC;;AAEA;;;;AAIA,cAAKpb,QAAL,GAAgB1O,EAAEqX,SAAF,IAAe,IAA/B;;AAEA;;;;;AAKA,cAAKhT,SAAL,GAAiB,IAAjB;;AAEA;;;;;AAKA,cAAKpL,KAAL,GAAa,IAAb;;AAEA;;;;AAIA,cAAKX,IAAL,GAAY0H,EAAE1H,IAAF,IAAU,QAAtB;;AAEA;;;;;AAKA,cAAKyxB,mBAAL,GAA2B/pB,EAAEyI,SAAF,IAAe,GAA1C;;AAEA;;;;;;AAMA,cAAKuhB,QAAL,GAAgBhqB,EAAEiqB,SAAF,IAAe,KAA/B;;AAEA;;;;AAIA,cAAKnb,QAAL,GAAgB9O,EAAEwb,SAAF,IAAe,KAA/B;;AAEA;;;;AAIA,cAAK0O,sBAAL,GAA8B,iBAAKlqB,EAAEmqB,yBAAP,IAC1BnqB,EAAEmqB,yBADwB,kBAA9B;;AAGA;;;;AAIA,cAAKC,qBAAL,GAA6B,iBAAKpqB,EAAEqqB,wBAAP,IACzBrqB,EAAEqqB,wBADuB,kBAA7B;AAhEY;AAkEf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAKrwB,WAAT,EAAsB;AAClB;AACH;;AAED,gBAAIL,KAAK,KAAKA,EAAd;;AAEA;AACA,gBAAI2wB,WAAW,oBAAU,KAAV,CAAf;AACAA,qBAAS1yB,SAAT,GAAqB,KAAKkX,QAA1B;AACA;AACA,gBAAIyb,YAAY,oBAAU,MAAV,CAAhB;AACA,gBAAIC,YAAY,oBAAU,MAAV,CAAhB;AACAA,sBAAU7xB,WAAV,CAAsB,qBAAW,KAAKL,IAAhB,CAAtB;;AAEA;AACA,gBAAI,CAAC,KAAKoW,QAAV,EAAoB;AAChB/U,mBAAG4V,UAAH;AACH;AACD,gBAAIC,WAAW,CAAC,KAAKd,QAAN,GAAiB/U,GAAG8wB,IAApB,GAA2B,cAAI,KAAK/b,QAAT,CAA1C;;AAEA;AACA,gBAAI,CAAC,KAAKA,QAAV,EAAoB;AAChB4b,yBAAS3xB,WAAT,CAAqB6xB,SAArB;AACAF,yBAAS3xB,WAAT,CAAqB4xB,SAArB;AACA/a,yBAAS7W,WAAT,CAAqB2xB,QAArB;AACH,aAJD,MAIO;AACH;AACA9a,yBAAS7W,WAAT,CAAqB6xB,SAArB;AACAhb,yBAAS7W,WAAT,CAAqB4xB,SAArB;AACH;AACD,iBAAKlmB,SAAL,GAAiBimB,QAAjB;AACA,iBAAKrxB,KAAL,GAAasxB,SAAb;;AAEA;AACA,iBAAKxwB,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,EAAoB,iBAApB,CAAhB,EACI;AAAA,uBAAM,OAAKywB,OAAL,CAAa/wB,GAAGqkB,cAAH,EAAb,CAAN;AAAA,aADJ;AAEA,iBAAKjkB,OAAL,CAAaE,EAAb,CAAgB,CAAC,cAAD,CAAhB,EAAkC;AAAA,uBAAM,OAAKywB,OAAL,EAAN;AAAA,aAAlC;;AAEA;AACA,iBAAK1wB,WAAL,GAAmB,IAAnB;AACA,iBAAK0wB,OAAL;AACH;;AAED;;;;;;;gCAIQ1O,C,EAAG;AACP,gBAAI,CAAC,KAAKhiB,WAAN,IAAqB,CAAC,KAAKiU,SAAL,EAA1B,EAA4C;AACxC;AACH;;AAED,gBAAItU,KAAK,KAAKA,EAAd;;AAEA,iBAAKuwB,sBAAL,CAA4BvwB,EAA5B,EAAgC,KAAKV,KAArC;;AAEA,gBAAI0xB,eAAJ;AACA,gBAAI,CAAChxB,GAAG+C,MAAR,EAAgB;AACZ,oBAAIsf,KAAKA,MAAM,EAAf,EAAmB;AACf2O,6BAAS3O,CAAT;AACH,iBAFD,MAEO;AACH2O,6BAAShxB,GAAGixB,mBAAH,KAA2BjxB,GAAGkxB,YAAvC;AACH;AACJ,aAND,MAMO;AACH,oBAAInuB,SAAS/C,GAAGC,OAAH,CAAW,QAAX,CAAb;AACA,oBAAI8C,MAAJ,EAAY;AACR,wBAAIouB,cAAcnxB,GAAGqkB,cAAH,EAAlB;AACA;AACA,wBAAI+M,iBAAiBlmB,SAASnI,OAAO2iB,cAAhB,EAAgC,EAAhC,KACfyL,cAAc,CAAf,GAAoB,CAApB,GAAwB,CADR,CAArB;AAEA,wBAAIE,eACCD,iBAAiBruB,OAAO6hB,UAAzB,GAAuC,CAAvC,IACAuM,WADA,GAEIC,iBAAiBruB,OAAO6hB,UAAxB,GAAqC,CAFzC,GAGIuM,WAJR;AAKAH,6BAASI,iBAAiB,KAAKhB,mBAAtB,GACLiB,YADK,GACU,KAAKhB,QADf,GAC0Bc,WADnC;AAEH;AACJ;;AAED,iBAAK7xB,KAAL,CAAW2M,SAAX,GAAuB+kB,MAAvB;AACA,iBAAKP,qBAAL,CAA2BzwB,EAA3B,EAA+B,KAAKV,KAApC,EAA2C0xB,MAA3C;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAK3wB,WAAV,EAAuB;AACnB;AACH;;AAED,gBAAI,CAAC,KAAK0U,QAAN,IAAkB,KAAKrK,SAA3B,EAAsC;AAClC,oCAAU,KAAKA,SAAf;AACH,aAFD,MAEO;AACH,8BAAI,KAAKqK,QAAT,EAAmB9I,SAAnB,GAA+B,EAA/B;AACH;AACD,iBAAK3M,KAAL,GAAa,IAAb;AACA,iBAAKoL,SAAL,GAAiB,IAAjB;;AAEA;AACA,iBAAKtK,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,EAAoB,iBAApB,CAAjB,EACI;AAAA,uBAAM,OAAKohB,OAAL,CAAa/wB,GAAGqkB,cAAH,EAAb,CAAN;AAAA,aADJ;AAEA,iBAAKjkB,OAAL,CAAauP,GAAb,CAAiB,CAAC,cAAD,CAAjB,EAAmC;AAAA,uBAAM,OAAKohB,OAAL,EAAN;AAAA,aAAnC;;AAEA,iBAAK1wB,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AClML;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;;;;;;;IAOaixB,K,WAAAA,K;;;AAET;;;;AAIA,mBAAYtxB,EAAZ,EAAgB;AAAA;;AAAA,kHACNA,EADM,EACF,OADE;;AAGZ,YAAIuxB,MAAM,MAAKpxB,MAAL,CAAYgC,KAAtB;;AAEA;;;;AAIA,cAAKqvB,UAAL,GAAkBD,QAAQ,IAAR,IACb,oBAAQA,IAAI/a,KAAZ,KAAsB+a,IAAI/a,KAAJ,CAAUtP,OAAV,CAAkB,MAAlB,MAA8B,CAAC,CAD1D;;AAGA;;;;AAIA,cAAKuqB,kBAAL,GAA0B,oBAAQF,IAAI/a,KAAZ,KACtB+a,IAAI/a,KAAJ,CAAUtP,OAAV,CAAkB,eAAlB,MAAuC,CAAC,CAD5C;;AAGA;;;;AAIA,cAAKwqB,YAAL,GAAoB,oBAAQH,IAAI/a,KAAZ,KAChB+a,IAAI/a,KAAJ,CAAUtP,OAAV,CAAkB,QAAlB,MAAgC,CAAC,CADrC;;AAGA;;;;AAIA,cAAKyqB,cAAL,GAAsBJ,IAAInZ,OAAJ,KAAgB,KAAhB,GAAwB,KAAxB,GAAgC,IAAtD;;AAEA;;;;AAIA,cAAKwZ,iBAAL,GAAyB1rB,QAAQqrB,IAAIM,WAAZ,CAAzB;;AAEA;;;;AAIA,cAAKC,iBAAL,GAAyB5rB,QAAQqrB,IAAIQ,WAAZ,CAAzB;;AAEA;;;;AAIA,cAAKC,WAAL,GAAmB9rB,QAAQqrB,IAAI5pB,IAAZ,CAAnB;;AAEA;;;;AAIA,cAAKsqB,qBAAL,GAA6B/rB,QAAQqrB,IAAIW,kBAAZ,CAA7B;;AAEA;;;;AAIA,cAAKC,wBAAL,GAAgCjsB,QAAQqrB,IAAIa,kBAAZ,CAAhC;;AAEA;;;;AAIA,cAAKC,cAAL,GAAsB,CAACxsB,MAAM0rB,IAAIe,eAAV,CAAD,GAClBpnB,SAASqmB,IAAIe,eAAb,EAA8B,EAA9B,CADkB,GACkB,KADxC;;AAGA;;;;;AAKA,cAAKC,aAAL,GAAqB,MAAKd,kBAAL,IAA2B,MAAKC,YAArD;;AAEA;;;;;AAKA,cAAKc,OAAL,GAAe,IAAf;;AAEA;;;;;AAKA,cAAKzV,IAAL,GAAY,IAAZ;;AAEA;;;;;AAKA,cAAK0V,MAAL,GAAc,IAAd;;AAEA;;;;;AAKA,cAAK7N,UAAL,GAAkB,IAAlB;;AAEA;;;;;AAKA,cAAKjd,IAAL,GAAY,IAAZ;;AAEA;;;;;AAKA,cAAK+qB,UAAL,GAAkB,IAAlB;;AAEA;;;;;AAKA,cAAKC,iBAAL,GAAyB,IAAzB;;AAEA;;;;;AAKA,cAAKxwB,KAAL,GAAa,EAAb;;AAEA;;;;;AAKA,cAAKywB,OAAL,GAAe,MAAf;;AAEA;;;;;AAKA,cAAKC,SAAL,GAAiB,MAAjB;;AAEA;;;;;AAKA,cAAKC,aAAL,GAAqB,aAArB;;AAEA;;;;;AAKA,cAAKC,aAAL,GAAqB,oBAArB;AA9JY;AA+Jf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK1yB,WAAT,EAAsB;AAClB;AACH;;AAED,iBAAKD,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EAAqC;AAAA,uBAAM,OAAK4c,MAAL,EAAN;AAAA,aAArC;AACA,iBAAK9c,OAAL,CAAaE,EAAb,CAAgB,CAAC,mBAAD,EAAsB,wBAAtB,CAAhB,EACI,UAACN,EAAD,EAAKyyB,MAAL;AAAA,uBAAgB,OAAKO,UAAL,CAAgBP,MAAhB,CAAhB;AAAA,aADJ;AAEA,iBAAKryB,OAAL,CAAaE,EAAb,CAAgB,CAAC,0BAAD,CAAhB,EACI,UAACN,EAAD,EAAK4kB,UAAL;AAAA,uBAAoB,OAAKqO,gBAAL,CAAsBrO,UAAtB,CAApB;AAAA,aADJ;AAEA,iBAAKxkB,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,CAAhB,EACI,UAACN,EAAD,EAAKssB,KAAL,EAAY4G,UAAZ;AAAA,uBAA2B,OAAKC,UAAL,CAAgB7G,KAAhB,EAAuB4G,UAAvB,CAA3B;AAAA,aADJ;AAEA,iBAAK9yB,OAAL,CAAaE,EAAb,CAAgB,CAAC,kBAAD,CAAhB,EAAsC;AAAA,uBAAM,OAAK8yB,SAAL,EAAN;AAAA,aAAtC;AACA,iBAAKhzB,OAAL,CAAaE,EAAb,CAAgB,CAAC,gCAAD,CAAhB,EACI;AAAA,uBAAM,OAAK+yB,mBAAL,EAAN;AAAA,aADJ;AAEA,iBAAKjzB,OAAL,CAAaE,EAAb,CAAgB,CAAC,cAAD,EAAiB,eAAjB,CAAhB,EAAmD,UAACN,EAAD,EAAKC,OAAL,EAC/C6G,QAD+C,EACrC4rB,UADqC;AAAA,uBACtB,OAAKY,oBAAL,CAA0BZ,UAA1B,CADsB;AAAA,aAAnD;AAEA,iBAAKtyB,OAAL,CAAaE,EAAb,CAAgB,CAAC,gCAAD,CAAhB,EACI;AAAA,uBAAM,OAAKizB,sBAAL,EAAN;AAAA,aADJ;AAEA,iBAAKnzB,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EACI,UAACN,EAAD,EAAK6a,SAAL,EAAgB2Y,OAAhB;AAAA,uBAA4B,OAAKC,uBAAL,CAA6BD,OAA7B,CAA5B;AAAA,aADJ;;AAGA,gBAAI,KAAKhC,UAAT,EAAqB;AACjB,qBAAKzU,IAAL,GAAY,eAAS,IAAT,CAAZ;AACA,qBAAKA,IAAL,CAAUrc,IAAV;AACH;AACD,gBAAI,KAAK6xB,aAAT,EAAwB;AACpB,qBAAKC,OAAL,GAAe,qBAAY,IAAZ,CAAf;AACA,qBAAKA,OAAL,CAAa9xB,IAAb;AACH;;AAED;;;AAGA,iBAAKL,WAAL,GAAmB,IAAnB;AACH;;AAGD;;;;;;iCAGS;AAAA;;AACL,gBAAI,CAAC,KAAKiU,SAAL,EAAL,EAAuB;AACnB;AACH;AACD,gBAAInS,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;;AAEA,gBAAI,KAAK2xB,cAAT,EAAyB;AACrB,oBAAI+B,eAAe1zB,GAAGsgB,eAAH,EAAnB;;AAEAoT,6BAAa7rB,OAAb,CAAqB,UAAC7B,GAAD,EAAMqB,GAAN,EAAc;AAC/B,wBAAI6hB,WAAS,OAAK0J,OAAd,GAAwBvrB,GAA5B;;AAEA,wBAAI,qBAASrB,GAAT,KAAiB,qBAAQA,GAAR,CAArB,EAAmC;AAC/B,4BAAI7D,MAAM0U,cAAN,CAAqBqS,GAArB,CAAJ,EAA+B;AAC3B/mB,kCAAM+mB,GAAN,EAAW/d,GAAX,GAAiBzD,SAAjB;AACH;AACJ,qBAJD,MAIO;AACHvF,8BAAM+mB,GAAN,IAAa/mB,MAAM+mB,GAAN,KAAc,EAA3B;AACA/mB,8BAAM+mB,GAAN,EAAW/d,GAAX,GAAiBnF,GAAjB;AACH;AACJ,iBAXD;AAYH;;AAED,gBAAI,KAAK4rB,iBAAT,EAA4B;AACxB,oBAAI,mBAAO,KAAKa,MAAZ,CAAJ,EAAyB;AACrBtwB,0BAAM,KAAK0wB,SAAX,IAAwBnrB,SAAxB;AACH,iBAFD,MAEO;AACHvF,0BAAM,KAAK0wB,SAAX,IAAwB,KAAKJ,MAA7B;AACH;AACJ;;AAED,gBAAI,KAAKX,iBAAT,EAA4B;AACxB,oBAAI,mBAAO,KAAKlN,UAAZ,CAAJ,EAA6B;AACzBziB,0BAAM,KAAK2wB,aAAX,IAA4BprB,SAA5B;AACH,iBAFD,MAEO;AACHvF,0BAAM,KAAK2wB,aAAX,IAA4B,KAAKlO,UAAjC;AACH;AACJ;;AAED,gBAAI,KAAKoN,WAAT,EAAsB;AAClB,oBAAI,CAAC,mBAAO,KAAKrqB,IAAZ,CAAL,EAAwB;AACpB;AACArM,2BAAOq4B,IAAP,CAAYxxB,KAAZ,EAAmB0F,OAAnB,CAA2B,UAACqhB,GAAD,EAAS;AAChC,4BAAIA,IAAIhiB,OAAJ,CAAY,OAAK0rB,OAAjB,MAA8B,CAAC,CAA/B,IAAoCzwB,MAAM+mB,GAAN,CAAxC,EAAoD;AAChD/mB,kCAAM+mB,GAAN,EAAWvhB,IAAX,GAAkBD,SAAlB;AACH;AACJ,qBAJD;;AAMA,wBAAIwhB,WAAS,KAAK0J,OAAd,GAAwB,KAAKjrB,IAAL,CAAUisB,MAAtC;AACAzxB,0BAAM+mB,GAAN,IAAa/mB,MAAM+mB,GAAN,KAAc,EAA3B;AACA/mB,0BAAM+mB,GAAN,EAAWvhB,IAAX,GAAkB,EAAEurB,YAAY,KAAKvrB,IAAL,CAAUurB,UAAxB,EAAlB;AACH;AACJ;;AAED,gBAAI,KAAKjB,qBAAT,EAAgC;AAC5B,oBAAI,CAAC,mBAAO,KAAKS,UAAZ,CAAL,EAA8B;AAC1B;AACAp3B,2BAAOq4B,IAAP,CAAYxxB,KAAZ,EAAmB0F,OAAnB,CAA2B,UAACqhB,GAAD,EAAS;AAChC,4BAAIA,IAAIhiB,OAAJ,CAAY,OAAK0rB,OAAjB,MAA8B,CAAC,CAA/B,IAAoCzwB,MAAM+mB,GAAN,CAAxC,EAAoD;AAChD/mB,kCAAM+mB,GAAN,EAAW2K,MAAX,GAAoBnsB,SAApB;AACH;AACJ,qBAJD;;AAMA,yBAAKgrB,UAAL,CAAgB7qB,OAAhB,CAAwB,UAACC,MAAD,EAAY;AAChC,4BAAIohB,WAAS,OAAK0J,OAAd,GAAwB9qB,MAA5B;AACA3F,8BAAM+mB,GAAN,IAAa/mB,MAAM+mB,GAAN,KAAc,EAA3B;AACA/mB,8BAAM+mB,GAAN,EAAW2K,MAAX,GAAoB,IAApB;AACH,qBAJD;AAKH;AACJ;;AAED,gBAAI,KAAK1B,wBAAT,EAAmC;AAC/B,oBAAI,mBAAO,KAAKQ,iBAAZ,CAAJ,EAAoC;AAChCxwB,0BAAM,KAAK4wB,aAAX,IAA4BrrB,SAA5B;AACH,iBAFD,MAEO;AACHvF,0BAAM,KAAK4wB,aAAX,IAA4B,KAAKJ,iBAAjC;AACH;AACJ;;AAED,iBAAKvyB,OAAL,CAAa0J,IAAb,CAAkB,eAAlB,EAAmC9J,EAAnC,EAAuCmC,KAAvC;AACH;;AAED;;;;;;;;mCAKWswB,M,EAAQ;AACf,iBAAKA,MAAL,GAAcA,MAAd;AACA,iBAAKvV,MAAL;AACH;;AAED;;;;;;;;yCAKiB0H,U,EAAY;AACzB,iBAAKA,UAAL,GAAkBA,UAAlB;AACA,iBAAK1H,MAAL;AACH;;AAED;;;;;;;;;mCAMWoP,K,EAAO4G,U,EAAY;AAC1B,iBAAKvrB,IAAL,GAAY;AACRisB,wBAAQtH,KADA;AAER4G,4BAAYA;AAFJ,aAAZ;AAIA,iBAAKhW,MAAL;AACH;;AAED;;;;;;;;6CAKqBwV,U,EAAY;AAC7B,iBAAKA,UAAL,GAAkBA,UAAlB;AACA,iBAAKxV,MAAL;AACH;;AAED;;;;;;;;gDAKwBsW,O,EAAS;AAC7B,iBAAKb,iBAAL,GAAyBa,OAAzB;AACA,iBAAKtW,MAAL;AACH;;AAED;;;;;;;;iCAKS/a,K,EAAO;AACZ,iBAAKA,KAAL,GAAaA,KAAb;AACH;;AAED;;;;;;+BAGO;AACH,gBAAIA,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;;AAEA,iBAAK8zB,YAAL;;AAEA,gBAAI,KAAKlC,iBAAT,EAA4B;AACxB,oBAAIjH,aAAaxoB,MAAM,KAAK0wB,SAAX,CAAjB;AACA,qBAAKzyB,OAAL,CAAa0J,IAAb,CAAkB,aAAlB,EAAiC9J,EAAjC,EAAqC2qB,UAArC;AACH;;AAED,gBAAI,KAAKmH,iBAAT,EAA4B;AACxB,oBAAIlN,aAAaziB,MAAM,KAAK2wB,aAAX,CAAjB;AACA,qBAAK1yB,OAAL,CAAa0J,IAAb,CAAkB,qBAAlB,EAAyC9J,EAAzC,EAA6C4kB,UAA7C;AACH;;AAED,iBAAKwO,SAAL;AACA,iBAAKC,mBAAL;AACA,iBAAKE,sBAAL;AACH;;AAED;;;;;;;;wCAKgBpxB,K,EAAO;AACnB;AACA;AACA,iBAAK4xB,OAAL;AACA;AACA,iBAAKC,QAAL,CAAc7xB,KAAd;AACA;AACA,iBAAK6a,IAAL;AACA;AACA,iBAAKvc,MAAL;AACH;;AAED;;;;;;;;uCAKe;AAAA;;AACX,gBAAI,CAAC,KAAKkxB,cAAV,EAA0B;AACtB;AACH;AACD,gBAAIxvB,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;;AAEA1E,mBAAOq4B,IAAP,CAAYxxB,KAAZ,EAAmB0F,OAAnB,CAA2B,UAACqhB,GAAD,EAAS;AAChC,oBAAIA,IAAIhiB,OAAJ,CAAY,OAAK0rB,OAAjB,MAA8B,CAAC,CAAnC,EAAsC;AAClC,wBAAI9qB,SAASoD,SAASge,IAAIzqB,OAAJ,CAAY,OAAKm0B,OAAjB,EAA0B,EAA1B,CAAT,EAAwC,EAAxC,CAAb;AACA,wBAAI5sB,MAAM7D,MAAM+mB,GAAN,EAAW/d,GAArB;AACAnL,uBAAGi0B,cAAH,CAAkBnsB,MAAlB,EAA0B9B,GAA1B;AACH;AACJ,aAND;;AAQAhG,eAAGgK,MAAH;AACH;;AAED;;;;;;;;oCAKY;AAAA;;AACR,gBAAI,CAAC,KAAKgoB,WAAV,EAAuB;AACnB;AACH;AACD,gBAAI7vB,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;;AAEA1E,mBAAOq4B,IAAP,CAAYxxB,KAAZ,EAAmB0F,OAAnB,CAA2B,UAACqhB,GAAD,EAAS;AAChC,oBAAIA,IAAIhiB,OAAJ,CAAY,OAAK0rB,OAAjB,MAA8B,CAAC,CAAnC,EAAsC;AAClC,wBAAI9qB,SAASoD,SAASge,IAAIzqB,OAAJ,CAAY,OAAKm0B,OAAjB,EAA0B,EAA1B,CAAT,EAAwC,EAAxC,CAAb;AACA,wBAAI,CAAC,oBAAQzwB,MAAM+mB,GAAN,EAAWvhB,IAAnB,CAAL,EAA+B;AAC3B,4BAAIA,OAAOxF,MAAM+mB,GAAN,EAAWvhB,IAAtB;AACA,+BAAKvH,OAAL,CAAa0J,IAAb,CAAkB,MAAlB,EAA0B9J,EAA1B,EAA8B8H,MAA9B,EAAsCH,KAAKurB,UAA3C;AACH;AACJ;AACJ,aARD;AASH;;AAED;;;;;;;;8CAKsB;AAAA;;AAClB,gBAAI,CAAC,KAAKjB,qBAAV,EAAiC;AAC7B;AACH;AACD,gBAAI9vB,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;AACA,gBAAI0yB,aAAa,EAAjB;;AAEAp3B,mBAAOq4B,IAAP,CAAYxxB,KAAZ,EAAmB0F,OAAnB,CAA2B,UAACqhB,GAAD,EAAS;AAChC,oBAAIA,IAAIhiB,OAAJ,CAAY,OAAK0rB,OAAjB,MAA8B,CAAC,CAAnC,EAAsC;AAClC,wBAAI9qB,SAASoD,SAASge,IAAIzqB,OAAJ,CAAY,OAAKm0B,OAAjB,EAA0B,EAA1B,CAAT,EAAwC,EAAxC,CAAb;AACA,wBAAI,CAAC,oBAAQzwB,MAAM+mB,GAAN,EAAW2K,MAAnB,CAAL,EAAiC;AAC7BnB,mCAAWlqB,IAAX,CAAgBV,MAAhB;AACH;AACJ;AACJ,aAPD;;AASA4qB,uBAAW7qB,OAAX,CAAmB,UAACC,MAAD,EAAY;AAC3B,uBAAK1H,OAAL,CAAa0J,IAAb,CAAkB,aAAlB,EAAiC9J,EAAjC,EAAqC8H,MAArC;AACH,aAFD;AAGH;;AAED;;;;;;;;iDAKyB;AACrB,gBAAI,CAAC,KAAKqqB,wBAAV,EAAoC;AAChC;AACH;AACD,gBAAIhwB,QAAQ,KAAKA,KAAjB;AACA,gBAAInC,KAAK,KAAKA,EAAd;AACA,gBAAI2yB,oBAAoBxwB,MAAM,KAAK4wB,aAAX,CAAxB;;AAEA,iBAAKJ,iBAAL,GAAyBA,iBAAzB;AACA,iBAAKvyB,OAAL,CAAa0J,IAAb,CAAkB,cAAlB,EAAkC9J,EAAlC,EAAsC2yB,iBAAtC;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKtyB,WAAV,EAAuB;AACnB;AACH;;AAED,iBAAK8B,KAAL,GAAa,EAAb;;AAEA,iBAAK/B,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,CAAjB,EAAsC;AAAA,uBAAM,OAAKuN,MAAL,EAAN;AAAA,aAAtC;AACA,iBAAK9c,OAAL,CAAauP,GAAb,CAAiB,CAAC,mBAAD,EAAsB,wBAAtB,CAAjB,EACI,UAAC3P,EAAD,EAAKyyB,MAAL;AAAA,uBAAgB,OAAKO,UAAL,CAAgBP,MAAhB,CAAhB;AAAA,aADJ;AAEA,iBAAKryB,OAAL,CAAauP,GAAb,CAAiB,CAAC,0BAAD,CAAjB,EACI,UAAC3P,EAAD,EAAKssB,KAAL;AAAA,uBAAe,OAAK2G,gBAAL,CAAsB3G,KAAtB,CAAf;AAAA,aADJ;AAEA,iBAAKlsB,OAAL,CAAauP,GAAb,CAAiB,CAAC,eAAD,CAAjB,EACI,UAAC3P,EAAD,EAAKssB,KAAL,EAAY4G,UAAZ;AAAA,uBAA2B,OAAKC,UAAL,CAAgB7G,KAAhB,EAAuB4G,UAAvB,CAA3B;AAAA,aADJ;AAEA,iBAAK9yB,OAAL,CAAauP,GAAb,CAAiB,CAAC,kBAAD,CAAjB,EAAuC;AAAA,uBAAM,OAAKyjB,SAAL,EAAN;AAAA,aAAvC;AACA,iBAAKhzB,OAAL,CAAauP,GAAb,CAAiB,CAAC,gCAAD,CAAjB,EACI;AAAA,uBAAM,OAAK0jB,mBAAL,EAAN;AAAA,aADJ;AAEA,iBAAKjzB,OAAL,CAAauP,GAAb,CAAiB,CAAC,cAAD,EAAiB,eAAjB,CAAjB,EAAoD,UAAC3P,EAAD,EAAKC,OAAL,EAChD6G,QADgD,EACtC4rB,UADsC;AAAA,uBACvB,OAAKY,oBAAL,CAA0BZ,UAA1B,CADuB;AAAA,aAApD;AAEA,iBAAKtyB,OAAL,CAAauP,GAAb,CAAiB,CAAC,gCAAD,CAAjB,EACI;AAAA,uBAAM,OAAK4jB,sBAAL,EAAN;AAAA,aADJ;AAEA,iBAAKnzB,OAAL,CAAauP,GAAb,CAAiB,CAAC,iBAAD,CAAjB,EACI,UAAC3P,EAAD,EAAK6a,SAAL,EAAgB2Y,OAAhB;AAAA,uBAA4B,OAAKC,uBAAL,CAA6BD,OAA7B,CAA5B;AAAA,aADJ;;AAGA,gBAAI,KAAKhC,UAAT,EAAqB;AACjB,qBAAKzU,IAAL,CAAUxc,OAAV;AACA,qBAAKwc,IAAL,GAAY,IAAZ;AACH;;AAED,gBAAI,KAAKwV,aAAT,EAAwB;AACpB,qBAAKC,OAAL,CAAajyB,OAAb;AACA,qBAAKiyB,OAAL,GAAe,IAAf;AACH;;AAED,iBAAKnyB,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;AC3hBL;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMshB,SAAS,CACX,iBADW,EAEX,yBAFW,EAGX,mBAHW,EAIX,wBAJW,EAKX,0BALW,EAMX,kBANW,EAOX,yBAPW,EAQX,0BARW,EASX,sBATW,CAAf;;AAYA;;;;;;;IAMauS,S,WAAAA,S;;;AAET;;;;AAIA,uBAAYl0B,EAAZ,EAAgB;AAAA;;AAGZ;AAHY,0HACNA,EADM,EACF,WADE;;AAIZ,YAAIqG,IAAI,MAAKlG,MAAL,CAAYg0B,UAAZ,IAA0B,EAAlC;;AAEA;;;;AAIA,cAAKpf,QAAL,GAAgB1O,EAAEqX,SAAF,IAAe,IAA/B;;AAEA;;;;;AAKA,cAAKhT,SAAL,GAAiB,IAAjB;;AAEA;;;;;AAKA,cAAK0pB,YAAL,GAAoB,IAApB;;AAEA;;;;;AAKA,cAAKC,cAAL,GAAsB,IAAtB;;AAEA;;;;AAIA,cAAK11B,IAAL,GAAY0H,EAAE1H,IAAF,IAAU,EAAtB;;AAEA;;;;AAIA,cAAKwW,QAAL,GAAgB9O,EAAEwb,SAAF,IAAe,QAA/B;;AAEA;;;;;AAKA,cAAKyS,KAAL,GAAa,GAAb;;AAEA;;;;AAIA,cAAKC,eAAL,GAAuB,iBAAKluB,EAAEud,kBAAP,IACnBvd,EAAEud,kBADiB,kBAAvB;;AAGA;;;;AAIA,cAAK4Q,cAAL,GAAsB,iBAAKnuB,EAAEyd,iBAAP,IAClBzd,EAAEyd,iBADgB,kBAAtB;;AAGA;;;;AAIA,cAAK2Q,SAAL,GAAiBpuB,EAAEquB,UAAF,IAAgB,mBAAjC;;AAEA;;;;AAIA,cAAKC,WAAL,GAAmBtuB,EAAEuuB,YAAF,IAAkB,sBAArC;;AAEA;;;;AAIA,cAAKC,oBAAL,GAA4BxuB,EAAEyuB,sBAAF,IACxB,oBADJ;;AAGA;;;;AAIA,cAAKC,aAAL,GAAqB1uB,EAAE2uB,eAAF,IAAqB,2BAA1C;;AAEA;;;;AAIA,cAAKC,QAAL,GAAgB5uB,EAAE6uB,SAAF,IAAe,qBAA/B;;AAEA;;;;AAIA,cAAKC,gBAAL,GAAwB9uB,EAAE+uB,kBAAF,IACpB,8BADJ;;AAGA;;;;AAIA,cAAKC,YAAL,GAAoBhvB,EAAEivB,cAAF,IAAoB,oBAAxC;;AAEA;;;;AAIA,cAAKC,kBAAL,GAA0BlvB,EAAEmvB,qBAAF,IACtB,2BADJ;;AAGA;;;;AAIA,cAAKC,OAAL,GAAepvB,EAAEqvB,QAAF,IAAc,iBAA7B;;AAEA;;;;AAIA,cAAKC,iBAAL,GAAyBtvB,EAAEuvB,mBAAF,IACrB,uBADJ;;AAGA;;;;AAIA,cAAKC,aAAL,GAAqBxvB,EAAEyvB,eAAF,IAAqB,qBAA1C;AAtIY;AAuIf;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAKz1B,WAAT,EAAsB;AAClB;AACH;;AAED,gBAAIL,KAAK,KAAKA,EAAd;AACA,gBAAII,UAAU,KAAKA,OAAnB;;AAEA;AACA,gBAAI21B,YAAY,oBAAU,KAAV,CAAhB;AACAA,sBAAU93B,SAAV,GAAsB,KAAKkX,QAA3B;;AAEA;AACA,gBAAI6gB,aAAa,oBAAU,MAAV,CAAjB;AACA;AACA,gBAAIC,iBAAiB,oBAAU,MAAV,CAArB;AACAA,2BAAej3B,WAAf,CAA2B,qBAAW,KAAKL,IAAhB,CAA3B;;AAEA;AACA,gBAAI,CAAC,KAAKoW,QAAV,EAAoB;AAChB/U,mBAAG4V,UAAH;AACH;AACD,gBAAIC,WAAY,CAAC,KAAKd,QAAP,GAAmB/U,GAAG8wB,IAAtB,GAA6B,cAAI,KAAK/b,QAAT,CAA5C;;AAEA;AACA,gBAAI,CAAC,KAAKA,QAAV,EAAoB;AAChBghB,0BAAU/2B,WAAV,CAAsBi3B,cAAtB;AACAF,0BAAU/2B,WAAV,CAAsBg3B,UAAtB;AACAngB,yBAAS7W,WAAT,CAAqB+2B,SAArB;AACH,aAJD,MAIO;AACH;AACAlgB,yBAAS7W,WAAT,CAAqBi3B,cAArB;AACApgB,yBAAS7W,WAAT,CAAqBg3B,UAArB;AACH;;AAED,iBAAKtrB,SAAL,GAAiBqrB,SAAjB;AACA,iBAAK3B,YAAL,GAAoB4B,UAApB;AACA,iBAAK3B,cAAL,GAAsB4B,cAAtB;;AAEA;AACA71B,oBAAQE,EAAR,CAAW,CAAC,kBAAD,CAAX,EAAiC;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKzB,SAAlB,CAAN;AAAA,aAAjC;AACAr0B,oBAAQE,EAAR,CAAW,CAAC,0BAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKvB,WAAlB,CAAN;AAAA,aADJ;AAEAv0B,oBAAQE,EAAR,CAAW,CAAC,oBAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKnB,aAAlB,CAAN;AAAA,aADJ;AAEA30B,oBAAQE,EAAR,CAAW,CAAC,yBAAD,CAAX,EAAwC;AAAA,uBACpC,OAAK41B,OAAL,CAAa,OAAKjB,QAAlB,CADoC;AAAA,aAAxC;AAEA70B,oBAAQE,EAAR,CAAW,CAAC,2BAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKf,gBAAlB,CAAN;AAAA,aADJ;AAEA/0B,oBAAQE,EAAR,CAAW,CAAC,mBAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKb,YAAlB,CAAN;AAAA,aADJ;AAEAj1B,oBAAQE,EAAR,CAAW,CAAC,0BAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKX,kBAAlB,CAAN;AAAA,aADJ;AAEAn1B,oBAAQE,EAAR,CAAW,CAAC,2BAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKP,iBAAlB,CAAN;AAAA,aADJ;AAEAv1B,oBAAQE,EAAR,CAAW,CAAC,uBAAD,CAAX,EACI;AAAA,uBAAM,OAAK41B,OAAL,CAAa,OAAKL,aAAlB,CAAN;AAAA,aADJ;;AAGAz1B,oBAAQE,EAAR,CAAWqhB,MAAX,EAAmB;AAAA,uBAAM,OAAKuU,OAAL,CAAa,EAAb,CAAN;AAAA,aAAnB;;AAEA;;;AAGA,iBAAK71B,WAAL,GAAmB,IAAnB;AACH;;AAED;;;;;;;kCAIgB;AAAA;;AAAA,gBAARuZ,CAAQ,uEAAJ,EAAI;;AACZ,gBAAI,CAAC,KAAKtF,SAAL,EAAL,EAAuB;AACnB;AACH;;AAED,iBAAKigB,eAAL,CAAqB,KAAKv0B,EAA1B,EAA8B4Z,CAA9B;;AAEA,gBAAIE,IAAIF,MAAM,EAAN,GAAW,KAAK0a,KAAhB,GAAwB,CAAhC;AACA,uBAAK/R,UAAL,CAAgB,YAAM;AAClB,oBAAI,CAAC,OAAKliB,WAAV,EAAuB;AACnB;AACH;AACD,uBAAK+zB,YAAL,CAAkBnoB,SAAlB,GAA8B2N,CAA9B;;AAEA,uBAAK4a,cAAL,CAAoB,OAAKx0B,EAAzB,EAA6B4Z,CAA7B;AACH,aAPD,EAOGE,CAPH;AAQH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAKzZ,WAAV,EAAuB;AACnB;AACH;;AAED,gBAAID,UAAU,KAAKA,OAAnB;;AAEA,iBAAKsK,SAAL,CAAeuB,SAAf,GAA2B,EAA3B;AACA,gBAAI,CAAC,KAAK8I,QAAV,EAAoB;AAChB,oCAAU,KAAKrK,SAAf;AACH;AACD,iBAAK2pB,cAAL,GAAsB,IAAtB;AACA,iBAAKD,YAAL,GAAoB,IAApB;AACA,iBAAK1pB,SAAL,GAAiB,IAAjB;;AAEA;AACAtK,oBAAQuP,GAAR,CAAY,CAAC,kBAAD,CAAZ,EAAkC;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKzB,SAAlB,CAAN;AAAA,aAAlC;AACAr0B,oBAAQuP,GAAR,CAAY,CAAC,0BAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKvB,WAAlB,CAAN;AAAA,aADJ;AAEAv0B,oBAAQuP,GAAR,CAAY,CAAC,oBAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKnB,aAAlB,CAAN;AAAA,aADJ;AAEA30B,oBAAQuP,GAAR,CAAY,CAAC,yBAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKjB,QAAlB,CAAN;AAAA,aADJ;AAEA70B,oBAAQuP,GAAR,CAAY,CAAC,2BAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKf,gBAAlB,CAAN;AAAA,aADJ;AAEA/0B,oBAAQuP,GAAR,CAAY,CAAC,mBAAD,CAAZ,EAAmC;AAAA,uBAC/B,OAAKumB,OAAL,CAAa,OAAKb,YAAlB,CAD+B;AAAA,aAAnC;AAEAj1B,oBAAQuP,GAAR,CAAY,CAAC,0BAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKX,kBAAlB,CAAN;AAAA,aADJ;AAEAn1B,oBAAQuP,GAAR,CAAY,CAAC,2BAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKP,iBAAlB,CAAN;AAAA,aADJ;AAEAv1B,oBAAQuP,GAAR,CAAY,CAAC,uBAAD,CAAZ,EACI;AAAA,uBAAM,OAAKumB,OAAL,CAAa,OAAKL,aAAlB,CAAN;AAAA,aADJ;;AAGAz1B,oBAAQuP,GAAR,CAAYgS,MAAZ,EAAoB;AAAA,uBAAM,OAAKuU,OAAL,CAAa,EAAb,CAAN;AAAA,aAApB;;AAEA,iBAAK71B,WAAL,GAAmB,KAAnB;AACH;;;;;;;;;;;;;;;;;;;;ACxSL;;;;AACA;;;;;;AAEA,IAAMgc,OAAO,WAAKA,IAAlB;AACA,IAAM8Z,eAAe,WAAKA,YAA1B;AACA,IAAM7Z,WAAW,WAAKA,QAAtB;;AAEA;;;AAGO,IAAM8Z,kCAAa,SAAbA,UAAa,GAAM;AAC5B,WAAO,uBAAP;AACH,CAFM;;AAIP;;;;;;;IAMaC,O,WAAAA,O;;AAET;;;;;AAKA,qBAAYl0B,KAAZ,EAAmB;AAAA;;AAEf;;;;;AAKA,aAAKA,KAAL,GAAaA,KAAb;;AAEA;;;;;AAKA,aAAKnC,EAAL,GAAUmC,MAAMnC,EAAhB;;AAEA;;;;;AAKA,aAAKyxB,kBAAL,GAA0BtvB,MAAMsvB,kBAAN,IAA4B2E,YAAtD;;AAEA;;;;;AAKA,aAAK1E,YAAL,GAAoBvvB,MAAMuvB,YAAN,IAAsB,CAAC,KAAKD,kBAAhD;;AAEA;;;;;AAKA,aAAKrxB,OAAL,GAAe+B,MAAM/B,OAArB;;AAEA;;;;;AAKA,aAAKk2B,QAAL,GAAgBn0B,MAAMkwB,cAAtB;AACH;;AAGD;;;;;;;+BAGO;AAAA;;AACH,iBAAKjyB,OAAL,CAAaE,EAAb,CAAgB,CAAC,eAAD,CAAhB,EAAmC,UAACN,EAAD,EAAKmC,KAAL;AAAA,uBAAe,MAAKo0B,IAAL,CAAUp0B,KAAV,CAAf;AAAA,aAAnC;AACA,iBAAK/B,OAAL,CAAaE,EAAb,CAAgB,CAAC,aAAD,CAAhB,EAAiC;AAAA,uBAAM,MAAK0c,IAAL,EAAN;AAAA,aAAjC;AACH;;AAED;;;;;;;;6BAKK7a,K,EAAO;AACR,gBAAI,KAAKsvB,kBAAT,EAA6B;AACzB0E,6BAAa,KAAKK,MAAL,EAAb,IAA8Bna,KAAKc,SAAL,CAAehb,KAAf,CAA9B;AACH,aAFD,MAEO;AACH,iCAAO2Q,KAAP,CAAa,KAAK0jB,MAAL,EAAb,EAA4Bna,KAAKc,SAAL,CAAehb,KAAf,CAA5B,EAAmD,KAAKm0B,QAAxD;AACH;AACJ;;AAED;;;;;;;;mCAKW;AACP,gBAAIn0B,QAAQ,IAAZ;AACA,gBAAI,KAAKsvB,kBAAT,EAA6B;AACzBtvB,wBAAQg0B,aAAa,KAAKK,MAAL,EAAb,CAAR;AACH,aAFD,MAEO;AACHr0B,wBAAQ,iBAAOkR,IAAP,CAAY,KAAKmjB,MAAL,EAAZ,CAAR;AACH;;AAED,gBAAI,CAACr0B,KAAL,EAAY;AACR,uBAAO,IAAP;AACH;AACD,mBAAOka,KAAK7W,KAAL,CAAWrD,KAAX,CAAP;AACH;;AAED;;;;;;iCAGS;AACL,gBAAI,KAAKsvB,kBAAT,EAA6B;AACzB0E,6BAAaM,UAAb,CAAwB,KAAKD,MAAL,EAAxB;AACH,aAFD,MAEO;AACH,iCAAOj4B,MAAP,CAAc,KAAKi4B,MAAL,EAAd;AACH;AACJ;;AAED;;;;;;+BAGO;AACH,gBAAIr0B,QAAQ,KAAKu0B,QAAL,EAAZ;AACA,gBAAI,CAACv0B,KAAL,EAAY;AACR;AACH;AACD;AACA,iBAAKA,KAAL,CAAWib,eAAX,CAA2Bjb,KAA3B;AACH;;AAED;;;;;;;;iCAKS;AACL,mBAAOka,KAAKc,SAAL,CAAe;AAClB+L,qBAAQ,KAAKlpB,EAAL,CAAQ22B,MAAhB,SAA0B,KAAK32B,EAAL,CAAQd,EADhB;AAElB03B,sBAAMta,SAASua;AAFG,aAAf,CAAP;AAIH;;AAED;;;;;;kCAGU;AAAA;;AACN,iBAAKz2B,OAAL,CAAauP,GAAb,CAAiB,CAAC,eAAD,CAAjB,EAAoC,UAAC3P,EAAD,EAAKmC,KAAL;AAAA,uBAAe,OAAKo0B,IAAL,CAAUp0B,KAAV,CAAf;AAAA,aAApC;AACA,iBAAK/B,OAAL,CAAauP,GAAb,CAAiB,CAAC,aAAD,CAAjB,EAAkC;AAAA,uBAAM,OAAKqN,IAAL,EAAN;AAAA,aAAlC;;AAEA,iBAAKze,MAAL;;AAEA,iBAAK4D,KAAL,GAAa,IAAb;AACA,iBAAK/B,OAAL,GAAe,IAAf;AACH;;;;;;;;;;;;;;;;;;;;;;AChKL;;AACA;;AAIA;;AAEA;;AAGA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;;;AAOA,IAAIlE,MAAM,WAAKC,QAAf;;AAEA;;;;;;;IAMa26B,W,WAAAA,W;;AAET;;;;;;;;AAQA,2BAAqB;AAAA;;AAAA;;AACjB;;;;;AAKA,aAAK53B,EAAL,GAAU,IAAV;;AAEA;;;;AAIA,aAAKuf,OAAL,GAAe,QAAf;;AAEA;;;;;AAKA,aAAKC,IAAL,GAAY,IAAIzL,IAAJ,GAAW8jB,WAAX,EAAZ;;AAEA;;;;;AAKA,aAAK3d,GAAL,GAAW,IAAX;;AAEA;;;;;AAKA,aAAKjN,MAAL,GAAc,IAAd;;AAEA;;;;;AAKA,aAAKiP,UAAL,GAAkB,IAAlB;;AAEA;;;;;AAKA,aAAKmW,GAAL,GAAW,EAAX;;AAEA;;;;;AAKA,aAAK/E,gBAAL,GAAwB,CAAxB;;AAEA;;;;;AAKA,aAAKhgB,OAAL,GAAe,IAAf;;AAEA;AACA,aAAKnM,WAAL,GAAmB,KAAnB;;AAEA,YAAI8nB,iBAAJ;;AAEA;;AApEiB,0CAANprB,IAAM;AAANA,gBAAM;AAAA;;AAqEjBA,aAAK8K,OAAL,CAAa,UAAC1K,GAAD,EAAS;AAClB,gBAAI,QAAOA,GAAP,yCAAOA,GAAP,OAAe,QAAf,IAA2BA,IAAI+R,QAAJ,KAAiB,OAAhD,EAAyD;AACrD,sBAAKkK,GAAL,GAAWjc,GAAX;AACA,sBAAK+B,EAAL,GAAU/B,IAAI+B,EAAJ,YAAgB,IAAI+T,IAAJ,GAAWd,OAAX,EAAhB,MAAV;AACH,aAHD,MAGO,IAAI,qBAAShV,GAAT,CAAJ,EAAmB;AACtB,sBAAK+B,EAAL,GAAU/B,GAAV;AACA,sBAAKic,GAAL,GAAW,cAAIjc,GAAJ,CAAX;AACH,aAHM,MAGA,IAAI,qBAASA,GAAT,CAAJ,EAAmB;AACtBgrB,2BAAWhrB,GAAX;AACH,aAFM,MAEA,IAAI,kBAAMA,GAAN,CAAJ,EAAgB;AACnB,sBAAKo0B,GAAL,GAAWp0B,GAAX;AACH;AACJ,SAZD;;AAcA,YAAI,CAAC,KAAKic,GAAN,IAAa,KAAKA,GAAL,CAASlK,QAAT,KAAsB,OAAvC,EAAgD;AAC5C,kBAAM,IAAI1O,KAAJ,yFAAN;AAEH;;AAED,YAAI,KAAKgL,SAAL,OAAqB,CAAzB,EAA4B;AACxB,kBAAM,IAAIhL,KAAJ,2FAAN;AAEH;;AAED;AACA,YAAI6F,IAAI,KAAKkrB,GAAb;;AAEA;;;;AAIA,aAAKnxB,OAAL,GAAe,sBAAf;;AAEA;AACA,aAAK+L,MAAL,GAAc,oBAAQgc,QAAR,IAAoB,CAApB,GAAyBA,WAAW,CAAlD;;AAEA;;;;AAIA,aAAK6O,QAAL,GAAgB3wB,EAAE4wB,SAAF,IAAe,cAA/B;;AAEA;;AAEA;;;;AAIA,aAAK9d,OAAL,GAAe9S,EAAE6wB,IAAF,KAAW,KAAX,GAAmB,KAAnB,GAA2B,IAA1C;;AAEA;;;;AAIA,aAAK70B,UAAL,GAAkB,kBAAMgE,EAAEgR,WAAR,KAAwBnR,QAAQG,EAAEgR,WAAV,CAA1C;;AAEA;;;;AAIA,aAAKiD,eAAL,GAAuBzU,MAAMQ,EAAE8wB,iBAAR,IACnB,CADmB,GACf9wB,EAAE8wB,iBADV;;AAGA;;;;AAIA,aAAK/b,UAAL,GAAkBvV,MAAMQ,EAAE4R,iBAAR,IACb,KAAKqC,eAAL,KAAyB,CAAzB,GAA6B,CAA7B,GAAiC,CADpB,GACyBjU,EAAE4R,iBAD7C;;AAGA;;;;AAIA,aAAK8D,UAAL,GAAkB,qBAAS1V,EAAE+wB,gBAAX,IACd/wB,EAAE+wB,gBADY,kBAAlB;;AAGA;;;;;AAKA,aAAKtsB,MAAL,GAAc,EAAd;;AAEA;;;;;AAKA,aAAKyJ,cAAL,GAAsB,EAAtB;;AAEA;;;;;AAKA,aAAK8iB,MAAL,GAAc,IAAd;;AAEA;;;;;AAKA,aAAKvG,IAAL,GAAY,IAAZ;;AAEA;;;;;;AAMA,aAAKhb,IAAL,GAAY,IAAZ;;AAEA;;;;;AAKA,aAAKsU,IAAL,GAAY,IAAZ;;AAEA;;;;AAIA,aAAKtS,cAAL,GAAsBzR,EAAEixB,iBAAF,IAAuB,KAA7C;;AAEA;;;;AAIA,aAAKC,YAAL,GAAoBlxB,EAAEmxB,kBAAF,IAAwB,MAA5C;;AAEA;;;;AAIA,aAAKC,YAAL,GAAoBpxB,EAAEqxB,mBAAF,IAAyB,MAA7C;;AAEA;;;;AAIA,aAAKC,YAAL,GAAoBtxB,EAAEuxB,oBAAF,IAA0B,MAA9C;;AAEA;AACA;;;;AAIA,aAAKC,SAAL,GAAiBxxB,EAAEyxB,UAAF,IAAgB,KAAKd,QAAL,GAAgB,QAAjD;;AAEA;;;;AAIA,aAAKe,UAAL,GAAkB1xB,EAAE0xB,UAAF,IAAgB,KAAKF,SAAL,GAAiB,iBAAnD;;AAEA;;;;;AAKA,aAAKG,YAAL,GAAoB,KAAK94B,EAAL,GAAU,QAA9B;;AAEA;;;;AAIA,aAAK+4B,eAAL,GAAuB5xB,EAAE6xB,kBAAF,IAAwB,QAA/C;;AAEA;;;;AAIA,aAAKziB,WAAL,GAAmBpP,EAAE8xB,YAAF,KAAmB,KAAnB,GAA2B,KAA3B,GAAmC,IAAtD;;AAEA;;;;AAIA,aAAKt1B,aAAL,GAAqBqD,QAAQG,EAAE+xB,cAAV,CAArB;;AAEA;;;;;AAKA,aAAK9c,YAAL,GAAoB,oBAAQjV,EAAEgyB,UAAV,CAApB;;AAEA;;;;AAIA,aAAK1c,SAAL,GAAiB,KAAKL,YAAL,GAAoBjV,EAAEgyB,UAAtB,GAAmC,EAApD;;AAEA;;;;AAIA,aAAK3nB,WAAL,GAAmBrK,EAAEiyB,aAAF,IAAmB,KAAtC;;AAEA;;;;AAIA,aAAK3nB,gBAAL,GAAwBtK,EAAEkyB,mBAAF,IAAyB,WAAjD;;AAEA;;;;AAIA,aAAKC,gBAAL,GAAwBnyB,EAAEoyB,mBAAF,IAAyB,OAAjD;;AAEA;;;;AAIA,aAAKC,iBAAL,GAAyBryB,EAAEsyB,oBAAF,IAA0B,YAAnD;;AAEA;;AAEA;;;;AAIA,aAAKC,QAAL,GAAgBvyB,EAAEwyB,SAAF,KAAgB,KAAhB,GAAwB,KAAxB,GAAgC,IAAhD;;AAEA;;;;AAIA,aAAKC,cAAL,GAAsB,iBAAKzyB,EAAE0yB,gBAAP,IAClB1yB,EAAE0yB,gBADgB,kBAAtB;;AAGA;;;;AAIA,aAAKC,aAAL,GAAqB,iBAAK3yB,EAAE4yB,eAAP,IACjB5yB,EAAE4yB,eADe,kBAArB;;AAGA;;;;AAIA,aAAKj0B,aAAL,GAAqBkB,QAAQG,EAAE6yB,cAAV,CAArB;;AAEA;;;;;;AAMA,aAAKC,kBAAL,GAA0B,oBAAQ9yB,EAAE+yB,mBAAV,CAA1B;;AAEA;;;;AAIA,aAAKC,eAAL,GAAuB,KAAKF,kBAAL,GACnB9yB,EAAE+yB,mBADiB,GACK,EAD5B;;AAGA;;;;AAIA,aAAKj0B,UAAL,GAAkBe,QAAQG,EAAEizB,WAAV,CAAlB;;AAEA;;;;AAIA,aAAKl0B,gBAAL,GAAwBiB,EAAEkzB,iBAA1B;;AAEA;;;;AAIA,aAAKrxB,aAAL,GAAqBhC,QAAQG,EAAEmzB,cAAV,CAArB;;AAEA;;;;;AAKA,aAAKxtB,sBAAL,GAA8B9F,QAAQG,EAAEozB,wBAAV,CAA9B;;AAEA;;;;;AAKA,aAAK7tB,cAAL,GAAsB,IAAtB;;AAEA;;;;AAIA,aAAKQ,cAAL,GAAsBlG,QAAQG,EAAEqzB,mBAAV,CAAtB;;AAEA;;;;AAIA,aAAKrtB,WAAL,GAAmB,KAAKD,cAAL,GAAsB/F,EAAEqzB,mBAAxB,GAA8C,EAAjE;;AAEA;;;;AAIA,aAAKre,aAAL,GAAqBnV,QAAQG,EAAEszB,iBAAV,CAArB;;AAEA;;;;AAIA,aAAK/uB,iBAAL,GAAyBvE,EAAEuzB,qBAAF,IAA2B,EAApD;;AAEA;;;;AAIA,aAAKC,eAAL,GAAuB,iBAAKxzB,EAAEyzB,iBAAP,IACnBzzB,EAAEyzB,iBADiB,kBAAvB;;AAGA;;;;AAIA,aAAKC,eAAL,GAAuB7zB,QAAQG,EAAE2zB,aAAV,CAAvB;;AAEA;;;;AAIA,aAAKC,cAAL,GAAsB,iBAAK5zB,EAAE6zB,gBAAP,IAClB7zB,EAAE6zB,gBADgB,kBAAtB;;AAGA;;;;;;;;;;;;AAYA,aAAKC,UAAL,GAAkB,kBAAM9zB,EAAE+zB,WAAR,KAAwB,iBAAK/zB,EAAE+zB,WAAF,CAAc50B,KAAnB,CAAxB,IACd,oBAAQa,EAAE+zB,WAAF,CAAcpe,IAAtB,CADc,GAEd3V,EAAE+zB,WAFY,GAEE,EAAEpe,MAAM,EAAR,EAAYxW,sBAAZ,EAFpB;;AAIA;;;;;AAKA,aAAK60B,SAAL,GAAiBh0B,EAAEg0B,SAAF,IAAe,EAAhC;;AAEA;;;;;AAKA,aAAKC,gBAAL,GAAwB,oBAAQ,KAAKD,SAAb,CAAxB;;AAEA;;;;AAIA,aAAKE,YAAL,GAAoBl0B,EAAEm0B,iBAAF,IAAuB,IAA3C;;AAEA;;;;AAIA,aAAKv4B,IAAL,GAAY,oBAAQoE,EAAEmX,iBAAV,IAA+B9V,SAA/B,GACP,kBAAMrB,EAAEmX,iBAAR,KAA8BtX,QAAQG,EAAEmX,iBAAV,CADnC;;AAGA;;;;AAIA,aAAKvC,YAAL,GAAoB,kBAAM5U,EAAE2mB,aAAR,KAA0B9mB,QAAQG,EAAE2mB,aAAV,CAA9C;;AAEA;;;;AAIA,aAAK5qB,iBAAL,GAAyB,kBAAMiE,EAAEoc,mBAAR,KACrBvc,QAAQG,EAAEoc,mBAAV,CADJ;;AAGA;AACA;;;;AAIA,aAAKgY,eAAL,GAAuBp0B,EAAEq0B,iBAAF,IAAuB,OAA9C;;AAEA;;;;AAIA,aAAK5sB,iBAAL,GAAyB5H,QAAQG,EAAEs0B,mBAAV,CAAzB;;AAEA;;;;AAIA,aAAK1sB,SAAL,GAAiB5H,EAAEu0B,UAAF,IAAgB,SAAjC;;AAEA;;;;;AAKA,aAAK1sB,oBAAL,GAA4BhI,QAAQG,EAAEw0B,uBAAV,CAA5B;;AAEA;;;;AAIA,aAAKxsB,YAAL,GAAoBhI,EAAE0J,cAAF,IAAoB,aAAxC;;AAEA;;;;;AAKA,aAAKI,WAAL,GAAmB9J,EAAEy0B,SAAF,KAAgB,KAAhB,GAAwB,KAAxB,GAAgC,IAAnD;;AAEA;;;;;AAKA,aAAK7zB,OAAL,GAAe,oBAAQZ,EAAE00B,WAAV,IAAyB,IAAzB,GACX,oBAAQ10B,EAAE00B,WAAV,IAAyB10B,EAAE00B,WAA3B,GAAyC70B,QAAQG,EAAE00B,WAAV,CAD7C;;AAGA;;;;;;AAMA,aAAKC,YAAL,GAAoB90B,QAAQG,EAAE40B,YAAV,CAApB;;AAEA;;;;;AAKA,aAAKC,UAAL,GAAkB,KAAKF,YAAL,GAAoB30B,EAAE40B,YAAtB,GAAqC,EAAvD;;AAEA;;;;;;AAMA,aAAKE,aAAL,GAAqBj1B,QAAQG,EAAE+0B,aAAV,CAArB;;AAEA;;;;;AAKA,aAAKj0B,WAAL,GAAmB,KAAKg0B,aAAL,GAAqB90B,EAAE+0B,aAAvB,GAAuC,EAA1D;;AAEA;;;;;AAKA,aAAKnxB,eAAL,GAAuB/D,QAAQG,EAAEg1B,sBAAV,CAAvB;;AAEA;;;;AAIA,aAAKC,gBAAL,GAAwB,kBAAMj1B,EAAEk1B,cAAR,CAAxB;;AAEA;;;;;;;;;;;;;;;;;AAiBA,aAAKC,aAAL,GAAqBn1B,EAAEk1B,cAAvB;;AAEA;AACA;;;;AAIA,aAAKE,WAAL,GAAmBp1B,EAAEq1B,eAAF,IAAqB,MAAxC;;AAEA;;;;AAIA,aAAK1tB,UAAL,GAAkB3H,EAAEs1B,cAAF,IAAoB,SAAtC;;AAEA;;;;AAIA,aAAKvtB,UAAL,GAAkB/H,EAAEu1B,iBAAF,IAAuB,YAAzC;;AAEA;;;;AAIA,aAAK3sB,UAAL,GAAkB5I,EAAEw1B,WAAF,IAAiB,IAAnC;;AAEA;;;;AAIA,aAAKC,UAAL,GAAkBz1B,EAAE01B,YAAF,IAAkB,IAApC;;AAEA;;;;AAIA,aAAKva,UAAL,GAAkBnb,EAAE21B,gBAAF,IAAsB,GAAxC;;AAEA;;;;AAIA,aAAK1a,UAAL,GAAkBjb,EAAE41B,cAAF,IAAoB,GAAtC;;AAEA;;;;AAIA,aAAK/a,UAAL,GAAkB7a,EAAE61B,oBAAF,IAA0B,IAA5C;;AAEA;;;;AAIA,aAAK9a,UAAL,GAAkB/a,EAAE81B,sBAAF,IAA4B,IAA9C;;AAEA;;;;AAIA,aAAKza,UAAL,GAAkBrb,EAAE+1B,kBAAF,IAAwB,GAA1C;;AAEA;;;;AAIA,aAAK1b,UAAL,GAAkBra,EAAEg2B,aAAF,IAAmB,GAArC;;AAEA;;;;AAIA,aAAKzb,UAAL,GAAkBva,EAAEi2B,cAAF,IAAoB,GAAtC;;AAEA;;;;AAIA,aAAKxb,UAAL,GAAkBza,EAAEk2B,mBAAF,IAAyB,GAA3C;;AAEA;;;;AAIA,aAAKvb,UAAL,GAAkB3a,EAAEm2B,iBAAF,IAAuB,GAAzC;;AAEA;;AAEA;;;;AAIA,aAAK1tB,SAAL,GAAiBzI,EAAEyI,SAAF,IAAe,GAAhC;;AAEA;;;;AAIA,aAAKpM,WAAL,GAAmB,kBAAM2D,EAAE8pB,YAAR,KAAyBjqB,QAAQG,EAAE8pB,YAAV,CAA5C;;AAEA;;;;AAIA,aAAKxtB,SAAL,GAAiB,kBAAM0D,EAAE8tB,UAAR,KAAuBjuB,QAAQG,EAAE8tB,UAAV,CAAxC;;AAEA;;;;AAIA,aAAK7xB,MAAL,GAAc,kBAAM+D,EAAE/D,MAAR,KAAmB4D,QAAQG,EAAE/D,MAAV,CAAjC;;AAEA;AACA;;;;AAIA,aAAKm6B,UAAL,GAAkBv2B,QAAQG,EAAEiY,GAAV,CAAlB;;AAEA;;;;AAIA,aAAKP,OAAL,GAAe1X,EAAE2X,QAAF,KAAe,CAAC,KAAKvI,WAAN,GAAoB,IAApB,GAA2B,EAA1C,CAAf;;AAEA;;;;AAIA,aAAK0I,WAAL,GAAmB9X,EAAE+X,aAAF,KACd,CAAC,KAAK3I,WAAN,GAAoB,QAApB,GAA+B,aADjB,CAAnB;;AAGA;;;;AAIA,aAAKinB,QAAL,GAAgBx2B,QAAQG,EAAEs2B,SAAV,CAAhB;;AAEA;;;;AAIA,aAAKC,aAAL,GAAqB,iBAAKv2B,EAAEw2B,eAAP,IACjBx2B,EAAEw2B,eADe,kBAArB;;AAGA;;;;AAIA,aAAKC,YAAL,GAAoB,iBAAKz2B,EAAE02B,cAAP,IAChB12B,EAAE02B,cADc,kBAApB;;AAGA;;;;AAIA,aAAKh6B,MAAL,GAAc,kBAAMsD,EAAEtD,MAAR,KAAmBmD,QAAQG,EAAEtD,MAAV,CAAjC;;AAEA;;;;;AAKA,aAAKmuB,YAAL,GAAoB,CAApB;;AAEA;;;;;AAKA,aAAK8L,UAAL,GAAkB92B,QAAQG,EAAE42B,WAAV,CAAlB;;AAEA;;;;AAIA,aAAKC,eAAL,GAAuB,CAACr3B,MAAMQ,EAAE82B,iBAAR,CAAD,GACnB92B,EAAE82B,iBADiB,2BAAvB;;AAGA;;;;;AAKA,aAAKC,YAAL,GAAoB,IAApB;;AAEA;;;;;AAKA,aAAKC,eAAL,GAAuB,IAAvB;;AAEA;;;;AAIA,aAAKhd,iBAAL,GAAyBna,QAAQG,EAAEi3B,kBAAV,CAAzB;;AAEA;;;;AAIA,aAAKx6B,SAAL,GAAiB,kBAAMuD,EAAEgd,kBAAR,KACbnd,QAAQG,EAAEgd,kBAAV,CADJ;;AAGA;;;;AAIA,aAAKlhB,KAAL,GAAa,kBAAMkE,EAAElE,KAAR,KAAkB+D,QAAQG,EAAElE,KAAV,CAA/B;;AAEA;;AAEA;;;;;AAKA,aAAKL,QAAL,GAAgB,IAAhB;;AAEA;;;;;AAKA,aAAK0F,MAAL,GAAcnB,EAAEmB,MAAF,IAAY,IAA1B;;AAEA;;;;AAIA,aAAK+1B,kBAAL,GAA0Bl3B,EAAEm3B,mBAAF,IAAyB,GAAnD;;AAEA;;;;AAIA,aAAKC,gBAAL,GAAwBp3B,EAAEq3B,iBAAF,IAAuB,GAA/C;;AAEA;;;;;;;;;;;;;;AAcA,aAAKnnB,QAAL,GAAgB,oBAAQlQ,EAAEs3B,SAAV,IAAuBt3B,EAAEs3B,SAAzB,GAAqC,EAArD;;AAEA;AACA;;;;AAIA,aAAKhH,MAAL,GAAc,IAAd;;AAEA;;;;AAIA,aAAK9a,OAAL,GAAe,KAAf;;AAEA;;;;AAIA,aAAK+hB,aAAL,GAAqB,KAArB;;AAEA;;;;AAIA,aAAKC,UAAL,GAAkB,MAAlB;;AAEA;;;;AAIA,aAAKC,QAAL,GAAgB,OAAhB;;AAEA;;;;AAIA,aAAKC,QAAL,GAAgB,OAAhB;;AAEA;;;;AAIA,aAAKC,QAAL,GAAgB,OAAhB;;AAEA;;;;AAIA,aAAKC,cAAL,GAAsB,MAAtB;;AAEA;AACA;;;;;AAKA,aAAKC,UAAL,GAAkB73B,EAAE63B,UAApB;;AAEA;;;;;AAKA,aAAKC,aAAL,GAAqB,oBAAQ,KAAKD,UAAb,CAArB;;AAEA;AACA;;;;AAIA,aAAKE,kBAAL,GAA0Bl4B,QAAQG,EAAEg4B,oBAAV,CAA1B;;AAEA;;;;;AAKA,aAAKC,SAAL,GAAkB,KAAKF,kBAAL,IAA2B,oBAAQ/3B,EAAEk4B,MAAV,CAA7C;;AAEA;;;;;AAKA,aAAKA,MAAL,GAAcl4B,EAAEk4B,MAAF,IAAY,EAA1B;;AAEA;;;;;;AAMA,aAAKlR,UAAL,GAAkBhnB,EAAEm4B,WAAF,IAAiB,KAAK3G,SAAL,GAAiB,SAApD;;AAEA;;;;AAIA,aAAK4G,UAAL,GAAkBv4B,QAAQG,EAAEo4B,UAAV,CAAlB;;AAEA;;;;AAIA,aAAKC,GAAL,GAAW,EAAX;;AAEA;;;;AAIA,aAAKC,WAAL,GAAmB,EAAnB;;AAEA;AACA,aAAKC,mBAAL,CACItjC,OAAOq4B,IAAP,kBAAsBkL,GAAtB,CAA0B,UAACte,IAAD;AAAA,mBAAU,gBAASA,IAAT,CAAV;AAAA,SAA1B,CADJ;;AAIA;AACA,aAAKue,MAAL,CAAY,KAAK9G,YAAjB,EAA+B,KAAKD,UAApC,EAAgD,IAAhD,EAAsD,MAAtD;AACH;;AAED;;;;;;;+BAGO;AAAA;;AACH,gBAAI,KAAK13B,WAAT,EAAsB;AAClB;AACH;;AAED,iBAAKmM,OAAL,GAAe,KAAKgP,UAAL,CAAgB,KAAKrP,MAArB,CAAf;AACA,gBAAIuyB,MAAM,KAAKA,GAAf;AACA,gBAAI/hC,IAAI,KAAKo9B,eAAL,GAAuB,CAAvB,GAA2B,KAAKvtB,OAAxC;AACA,gBAAIuyB,iBAAJ;;AAEA;AACA,iBAAKC,UAAL;;AAXG,gBAaKl9B,QAbL,mBAaKA,QAbL;AAAA,gBAaeG,IAbf,mBAaeA,IAbf;AAAA,gBAaqBE,KAbrB,mBAaqBA,KAbrB;AAAA,gBAa4BC,iBAb5B,mBAa4BA,iBAb5B;AAAA,gBAa+CC,UAb/C,mBAa+CA,UAb/C;AAAA,gBAa2DC,MAb3D,mBAa2DA,MAb3D;AAAA,gBAcCC,gBAdD,mBAcCA,gBAdD;AAAA,gBAcmBE,WAdnB,mBAcmBA,WAdnB;AAAA,gBAcgCC,WAdhC,mBAcgCA,WAdhC;AAAA,gBAc6CC,SAd7C,mBAc6CA,SAd7C;AAAA,gBAcwDC,WAdxD,mBAcwDA,WAdxD;AAAA,gBAeCC,aAfD,mBAeCA,aAfD;AAAA,gBAegBC,SAfhB,mBAegBA,SAfhB;AAAA,gBAe2BC,MAf3B,mBAe2BA,MAf3B;;AAiBH;;AACA,iBAAKk8B,YAAL,CAAkB,CACdn9B,QADc,EAEdG,IAFc,EAGdE,KAHc,EAIdC,iBAJc,EAKdC,UALc,EAMdC,MANc,EAOdC,gBAPc,EAQdE,WARc,CAAlB;;AAWA;AACA,gBAAI,CAAC,KAAK0W,OAAV,EAAmB;AACf,qBAAK+lB,cAAL;AACH,aAFD,MAEO;AACH,oBAAIC,SAAS,KAAKC,iBAAL,EAAb;;AAEA,qBAAK5S,gBAAL,GAAwB,KAAKhhB,SAAL,EAAxB;;AAEA;AACA,qBAAK,IAAI/O,IAAI,CAAb,EAAgBA,IAAIE,CAApB,EAAuBF,GAAvB,EAA4B;AACxB,yBAAK2D,OAAL,CAAa0J,IAAb,CAAkB,oBAAlB,EAAwC,IAAxC,EAA8CrN,CAA9C;;AAEA,wBAAI4iC,UAAU,oBAAU,KAAKtjB,UAAf,CAAd;AAAA,wBACIvV,MAAM,KAAK6I,aAAL,CAAmB5S,CAAnB,CADV;;AAGA,wBAAI,KAAKs9B,eAAT,EAA0B;AACtBsF,gCAAQC,OAAR,GAAkB,KAAK9yB,OAAvB;AACH;AACD,wBAAI,CAAC,KAAKnK,UAAV,EAAsB;AAClB88B,+BAAOngC,WAAP,CAAmBqgC,OAAnB;AACH;AACDN,+BAAYtiC,MAAME,IAAI,CAAV,IAAe,KAAK8/B,UAArB,GACP,KAAKjE,gBADE,GACiB,KAAK9nB,WADjC;;AAGA;AACA,wBAAI,KAAKqpB,eAAT,EAA0B;AACtBvzB;AACAu4B,mCAAW,KAAKrG,iBAAhB;AACH;;AAED;AACA,wBAAIlyB,yBAAkBA,uBAAtB,EAAwC;AACpCk4B,4BAAIa,QAAJ,GAAeb,IAAIa,QAAJ,IAAgB,uBAAa,IAAb,CAA/B;AACAb,4BAAIa,QAAJ,CAAa7+B,IAAb,CAAkBjE,CAAlB,EAAqB,KAAK4e,aAA1B,EAAyCgkB,OAAzC;AACH;AACD;AAJA,yBAKK,IAAI74B,wBAAJ,EAAuB;AACxBk4B,gCAAIc,SAAJ,GAAgBd,IAAIc,SAAJ,IAAiB,yBAAc,IAAd,CAAjC;AACAd,gCAAIc,SAAJ,CAAc9+B,IAAd,CAAmBjE,CAAnB,EAAsB,KAAK4e,aAA3B,EAA0CgkB,OAA1C;AACH,yBAHI,MAGE;AACH,iCAAKI,iBAAL,CAAuBhjC,CAAvB,EAA0BsiC,QAA1B,EAAoCM,OAApC;AACH;;AAED;AACA,wBAAI5iC,MAAME,IAAI,CAAV,IAAe,KAAK8/B,UAAxB,EAAoC;AAChC,6BAAKiD,kBAAL,CAAwBjjC,CAAxB,EAA2B4iC,OAA3B;AACH;;AAED,yBAAKj/B,OAAL,CAAa0J,IAAb,CAAkB,mBAAlB,EAAuC,IAAvC,EAA6CrN,CAA7C;AACH;;AAED,qBAAK2D,OAAL,CAAaE,EAAb,CAAgB,CAAC,cAAD,CAAhB,EACI,UAACN,EAAD,EAAKgK,MAAL;AAAA,2BAAgB,OAAK21B,iBAAL,CAAuB31B,OAAO9K,EAA9B,CAAhB;AAAA,iBADJ;AAGH,aAnFE,CAmFF;;AAED;AACA,gBAAI,KAAKkN,cAAT,EAAyB;AACrB,qBAAKhM,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EACI;AAAA,2BAAM,OAAKs/B,iBAAL,EAAN;AAAA,iBADJ;AAEA,qBAAKA,iBAAL;AACH;;AAED,iBAAKX,YAAL,CAAkB,CACdv8B,WADc,EAEdC,SAFc,EAGdC,WAHc,EAIdC,aAJc,EAKdC,SALc,EAMdC,MANc,CAAlB;;AASA,gBAAI,KAAKuY,YAAL,IAAqB,CAAC,KAAKjZ,UAA/B,EAA2C;AACvC,qBAAKsY,YAAL;AACH;;AAED;AACA,gBAAI,CAAC,KAAKtY,UAAV,EAAsB;AAClB,mCAAS,KAAKiJ,GAAL,EAAT,EAAqB,KAAKqrB,MAA1B;AACA,oBAAI,KAAK8H,UAAT,EAAqB;AACjB,uCAAS,KAAKnzB,GAAL,EAAT,EAAqB,KAAK2yB,cAA1B;AACH;AACJ;;AAED;AACA,iBAAK4B,cAAL;;AAEA;AACA,gBAAI,KAAK33B,aAAT,EAAwB;AACpB,qBAAK9H,OAAL,CAAaE,EAAb,CAAgB,CAAC,iBAAD,CAAhB,EAAqC;AAAA,2BAAM,OAAKw/B,WAAL,EAAN;AAAA,iBAArC;AACH;;AAED,iBAAKz/B,WAAL,GAAmB,IAAnB;;AAEA,iBAAKw5B,eAAL,CAAqB,IAArB;;AAEA,iBAAKz5B,OAAL,CAAa0J,IAAb,CAAkB,aAAlB,EAAiC,IAAjC;AACH;;AAED;;;;;;;kCAIUjG,G,EAAK;AACX,gBAAI,CAAC,KAAK+0B,QAAV,EAAoB;AAChB;AACH;AACD,gBAAI/0B,GAAJ,EAAS;AACL,oBAAIqlB,MAAM,oBAAQrlB,GAAR,CAAV;AACA,oBAAIqlB,wBAAJ,EAAuB;AACnB,yBAAKlf,MAAL;AACA,0CAAUnG,GAAV;AACA,wCAAQA,GAAR;AACH,iBAJD,MAIO;AACH,yBAAKu5B,YAAL,GAAoB,IAApB;AACA,+BAAK2C,aAAL,CAAmB,KAAK1C,eAAxB;AACA,yBAAKA,eAAL,GAAuB,IAAvB;AACH;AACJ;AACJ;;AAED;;;;;;;;gCAKQx5B,G,EAAK;AACT,gBAAI,CAAC,KAAKm5B,UAAV,EAAsB;AAClB;AACH;AACD,gBAAI9T,MAAM,oBAAQrlB,GAAR,CAAV;AACA,iBAAKu5B,YAAL,GAAoB,KAApB;;AAEA,qBAASpzB,MAAT,GAAkB;AACd,2BAAK+1B,aAAL,CAAmB,KAAK1C,eAAxB;AACA,qBAAKA,eAAL,GAAuB,IAAvB;AACA,oBAAI,CAAC,KAAKD,YAAV,EAAwB;AACpB,yBAAKpzB,MAAL;AACA,yBAAKozB,YAAL,GAAoB,IAApB;AACH;AACJ;;AAED,gBAAIlU,4BAAqBA,sBAArB,IAAwCA,sBAAxC,IACAA,2BADA,IACwBA,6BAD5B,EACoD;AAChD,oBAAI,KAAKmU,eAAL,KAAyB,IAA7B,EAAmC;AAC/B,yBAAKA,eAAL,GAAuB,WAAK2C,WAAL,CAAiBh2B,OAAOiT,IAAP,CAAY,IAAZ,CAAjB,EACnB,KAAKigB,eADc,CAAvB;AAEH;AACJ,aAND,MAMO;AACH,2BAAK6C,aAAL,CAAmB,KAAK1C,eAAxB;AACA,qBAAKA,eAAL,GAAuB,IAAvB;AACH;AACJ;;AAED;;;;;;oCAGY;AACR,gBAAI,KAAKL,UAAT,EAAqB;AACjB,qBAAKI,YAAL,GAAoB,IAApB;AACH;AACJ;;AAED;;;;;;;mCAIWv5B,G,EAAK;AACZ,gBAAIrE,MAAM,sBAAUqE,GAAV,CAAV;AACA,iBAAKzD,OAAL,CAAa0J,IAAb,CAAkB,cAAlB,EAAkC,IAAlC,EAAwCtK,GAAxC;AACH;;AAED;;;;;;oCAGY;AACR,gBAAI,KAAKw9B,UAAT,EAAqB;AACjB,qBAAKI,YAAL,GAAoB,KAApB;AACA,2BAAK2C,aAAL,CAAmB,KAAK1C,eAAxB;AACH;AACD,iBAAKj9B,OAAL,CAAa0J,IAAb,CAAkB,aAAlB,EAAiC,IAAjC;AACH;;AAED;;;;;;4CAGoB;AAChB;AACA;AACA;AACA,gBAAI,KAAKzH,UAAT,EAAqB;AACjB;AACH;AACD,gBAAI88B,eAAJ;;AAEA,gBAAI5kB,QAAQ,cAAI,KAAKjP,GAAL,EAAJ,EAAgB,OAAhB,CAAZ;AACA,gBAAIiP,MAAMte,MAAN,GAAe,CAAnB,EAAsB;AAClBkjC,yBAAS5kB,MAAM,CAAN,EAAS0lB,SAAT,CAAmB,KAAK3lB,eAAxB,CAAT;AACH,aAFD,MAEO;AACH6kB,yBAAS,KAAK7zB,GAAL,GAAW20B,SAAX,CAAqB,KAAK3lB,eAA1B,CAAT;AACH;;AAED6kB,mBAAOlhC,SAAP,GAAmB,KAAKg6B,eAAxB;;AAEA,gBAAI,KAAK5c,aAAT,EAAwB;AACpB8jB,uBAAOzxB,KAAP,CAAaC,OAAb;AACH;;AAED,iBAAKvN,OAAL,CAAa0J,IAAb,CAAkB,sBAAlB,EAA0C,IAA1C,EAAgDq1B,MAAhD;AACA,mBAAOA,MAAP;AACH;;AAED;;;;;;yCAGiB;AACb,gBAAI,KAAKhmB,OAAT,EAAkB;AACd;AACH;AACD,iBAAKhN,MAAL,GAAc,KAAKA,MAAL,GAAc,CAAd,GAAkB,KAAKA,MAAL,GAAc,CAAhC,GAAoC,CAAlD;AACA,iBAAKqgB,gBAAL,GAAwB,KAAKhhB,SAAL,EAAxB;AACH;;AAED;;;;;;;;;0CAMkB1E,Q,EAAUqO,Q,EAAUzK,S,EAAW;AAAA;;AAC7C,gBAAIlE,MAAM,KAAK6I,aAAL,CAAmBvI,QAAnB,CAAV;AACA,gBAAI6D,mBAAmB,KAAK0Q,aAAL,GACnB,KAAKzQ,iBAAL,CAAuB9D,QAAvB,CADmB,GACgB,IADvC;AAEA,gBAAIo5B,UAAU15B,uBAAgB,MAAhB,GAAyB,QAAvC;AACA,gBAAI25B,MAAM,kCACN,CAAC,IAAD,EAAO,KAAKp1B,aAAL,CAAmBjE,QAAnB,CAAP,CADM,EAEN,CAAC,MAAD,EAASo5B,OAAT,CAFM,EAEa,CAAC,IAAD,EAAOp5B,QAAP,CAFb,CAAV;;AAIA,gBAAIo5B,YAAY,QAAZ,IAAwB,KAAK7F,SAAjC,EAA4C;AACxC8F,oBAAI/iC,YAAJ,CAAiB,aAAjB,EACI,KAAKk9B,gBAAL,GAAyB,KAAKD,SAAL,CAAevzB,QAAf,KAA4B,EAArD,GACI,KAAKuzB,SAFb;AAIH;AACD8F,gBAAIliC,SAAJ,GAAgBkX,YAAY,KAAKzE,WAAjC;AACA,+BAAOyvB,GAAP,EAAY,OAAZ,EAAqB,UAACt8B,GAAD;AAAA,uBAAS,OAAKu8B,UAAL,CAAgBv8B,GAAhB,CAAT;AAAA,aAArB;;AAEA;AACA,gBAAI8G,gBAAJ,EAAsB;AAClB,8BAAIA,gBAAJ,EAAsB3L,WAAtB,CAAkCmhC,GAAlC;AACH,aAFD,MAEO;AACHz1B,0BAAU1L,WAAV,CAAsBmhC,GAAtB;AACH;;AAED,iBAAKr1B,MAAL,CAAYtC,IAAZ,CAAiB23B,IAAIjhC,EAArB;;AAEA,+BAAOihC,GAAP,EAAY,UAAZ,EAAwB,UAACt8B,GAAD;AAAA,uBAAS,OAAKw8B,SAAL,CAAex8B,GAAf,CAAT;AAAA,aAAxB;AACA,+BAAOs8B,GAAP,EAAY,SAAZ,EAAuB;AAAA,uBAAM,OAAKG,SAAL,EAAN;AAAA,aAAvB;AACA,+BAAOH,GAAP,EAAY,OAAZ,EAAqB,UAACt8B,GAAD;AAAA,uBAAS,OAAK08B,OAAL,CAAa18B,GAAb,CAAT;AAAA,aAArB;AACA,+BAAOs8B,GAAP,EAAY,MAAZ,EAAoB;AAAA,uBAAM,OAAKK,SAAL,EAAN;AAAA,aAApB;AACH;;AAED;;;;;;;;2CAKmB15B,Q,EAAU4D,S,EAAW;AAAA;;AACpC,gBAAIC,mBAAmB,KAAK0Q,aAAL,GACnB,KAAKzQ,iBAAL,CAAuB9D,QAAvB,CADmB,GACgB,IADvC;AAEA,gBAAIwX,MAAM,kCACN,CAAC,MAAD,EAAS,QAAT,CADM,EAEN,CAAC,OAAD,EAAU,KAAKP,OAAf,CAFM,CAAV;AAIAO,gBAAIrgB,SAAJ,GAAgB,KAAKkgB,WAArB;;AAEA;AACA,gBAAIxT,gBAAJ,EAAsB;AAClB,8BAAIA,gBAAJ,EAAsB3L,WAAtB,CAAkCsf,GAAlC;AACH,aAFD,MAEO;AACH5T,0BAAU1L,WAAV,CAAsBsf,GAAtB;AACH;;AAED,+BAAOA,GAAP,EAAY,OAAZ,EAAqB;AAAA,uBAAM,OAAKtU,MAAL,EAAN;AAAA,aAArB;AACH;;AAED;;;;;;;;;;;;;;;8CAYmC;AAAA;;AAAA,gBAAfy2B,QAAe,uEAAJ,EAAI;;AAC/BA,qBAAS54B,OAAT,CAAiB,UAAC5H,OAAD,EAAa;AAC1B;AACA;AACA;AACA;AACAA,wBAAQuC,QAAR,GAAmBvC,QAAQuC,QAAR,IAAoBvC,QAAQ+B,IAA/C;AACA,oBAAI,OAAK/B,QAAQuC,QAAb,MAA2B,IAA3B,IAAmCvC,QAAQiC,OAAR,KAAoB,IAA3D,EAAiE;AAAA,wBACjDw+B,GADiD,GACpCzgC,OADoC,CACxD8B,KADwD;AAAA,wBAC5CC,IAD4C,GACpC/B,OADoC,CAC5C+B,IAD4C;;;AAG7D,2BAAK08B,GAAL,CAAS18B,IAAT,IAAiB,OAAK08B,GAAL,CAAS18B,IAAT,KAAkB,IAAI0+B,GAAJ,QAAnC;AACH;AACJ,aAXD;AAYH;;AAED;;;;;;;;;;;;;uCAU4B;AAAA;;AAAA,gBAAfD,QAAe,uEAAJ,EAAI;;AACxBA,qBAAS54B,OAAT,CAAiB,UAAC5H,OAAD,EAAa;AAAA,oBACrBuC,QADqB,GACHvC,OADG,CACrBuC,QADqB;AAAA,oBACXR,IADW,GACH/B,OADG,CACX+B,IADW;;AAE1B,oBAAI,OAAKQ,QAAL,MAAmB,IAAnB,IAA2B,OAAKk8B,GAAL,CAAS18B,IAAT,CAA/B,EAA+C;AAC3C,2BAAK08B,GAAL,CAAS18B,IAAT,EAAetB,IAAf;AACH;AACJ,aALD;AAMH;;AAED;;;;;;;;gCAKQsB,I,EAAM;AACV,mBAAO,KAAK08B,GAAL,CAAS18B,IAAT,CAAP;AACH;;AAED;;;;;;yCAGiB;AACb,gBAAI,CAAC,KAAKm8B,aAAV,EAAyB;AACrB;AACH;;AAED,gBAAIwC,OAAO,KAAKzC,UAAhB;AACA;AACA0C,YAAA,qBAAAA,GAA0B,KAAK5J,QAA/B;;AAEA,iBAAK52B,OAAL,CAAa0J,IAAb,CAAkB,2BAAlB,EAA+C,IAA/C;AACA,iBAAK,IAAIrN,IAAI,CAAR,EAAW8e,MAAMolB,KAAK1kC,MAA3B,EAAmCQ,IAAI8e,GAAvC,EAA4C9e,GAA5C,EAAiD;AAC7C,oBAAIokC,MAAMF,KAAKlkC,CAAL,CAAV;AACA,qBAAKqkC,aAAL,CAAmBD,GAAnB;AACH;AACD,iBAAKzgC,OAAL,CAAa0J,IAAb,CAAkB,0BAAlB,EAA8C,IAA9C;AACH;;AAED;;;;;;;sCAIc+2B,G,EAAK;AAAA;;AACf,gBAAI,CAACA,GAAD,IAAQ,CAACA,IAAI7+B,IAAb,IAAqB,KAAK++B,YAAL,CAAkBF,IAAI7+B,IAAtB,CAAzB,EAAsD;AAClD;AACH;;AAED,gBAAIA,OAAO6+B,IAAI7+B,IAAf;AACA,gBAAI40B,OAAOiK,IAAIjK,IAAf;AACA,gBAAIoK,mBAAJ;;AAEA,gBAAIh/B,QAAQ40B,IAAZ,EAAkB;AACdoK,6BAAaH,IAAIjK,IAAJ,GAAW50B,IAAxB;AACH,aAFD,MAEO;AACHA,uBAAOA,KAAKvD,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;AACAuiC,6BAAa,mBAAmBviC,OAAnB,CAA2B,KAA3B,EAAkCuD,IAAlC,CAAb;AACH;;AAED;AACAi/B,YAAA,wDAAQ,qCAAC,gCAAOD,UAAR,EAAR,GAA6B,UAACE,GAAD,EAAS;AAClC;AACA,oBAAIC,OAAO,IAAID,IAAIE,OAAR,SAAsBP,GAAtB,CAAX;AACA;AACAM,qBAAKzgC,IAAL;AACA,uBAAKi+B,WAAL,CAAiB38B,IAAjB,IAAyBm/B,IAAzB;AACH,a,6CAND;AAOH;;AAED;;;;;;;;kCAKUn/B,I,EAAM;AACZ,mBAAO,KAAK28B,WAAL,CAAiB38B,IAAjB,CAAP;AACH;;AAED;;;;;;;;qCAKaA,I,EAAM;AACf,mBAAO,CAAC,oBAAQ,KAAK28B,WAAL,CAAiB38B,IAAjB,CAAR,CAAR;AACH;;AAED;;;;;;;;0CAKkBm/B,I,EAAMn/B,I,EAAM;AAC1B,iBAAK28B,WAAL,CAAiB38B,IAAjB,IAAyBm/B,IAAzB;AACH;;AAED;;;;;;4CAGoB;AAChB,gBAAI3iC,MAAM,KAAKmgC,WAAf;;AAEArjC,mBAAOq4B,IAAP,CAAYn1B,GAAZ,EAAiBqJ,OAAjB,CAAyB,UAACqhB,GAAD,EAAS;AAC9B1qB,oBAAI0qB,GAAJ,EAAS3oB,OAAT;AACA/B,oBAAI0qB,GAAJ,IAAWxhB,SAAX;AACH,aAHD;AAIH;;AAED;;;;;;qCAGa;AACT,gBAAI,CAAC,KAAK42B,SAAV,EAAqB;AACjB;AACH;;AAED,gBAAIC,SAAS,KAAKA,MAAlB;AACA,iBAAKn+B,OAAL,CAAa0J,IAAb,CAAkB,uBAAlB,EAA2C,IAA3C;;AAEA;AACA,gBAAI,KAAKs0B,kBAAT,EAA6B;AACzB,oBAAIiD,eAAe,EAAEr/B,MAAM,SAAR,EAAnB;AACA,qBAAKu8B,MAAL,CAAY/1B,IAAZ,CAAiB64B,YAAjB;AACH;AACD,gBAAI,oBAAQ9C,MAAR,CAAJ,EAAqB;AACjB,qBAAK,IAAI9hC,IAAI,CAAR,EAAW8e,MAAMgjB,OAAOtiC,MAA7B,EAAqCQ,IAAI8e,GAAzC,EAA8C9e,GAA9C,EAAmD;AAC/C,wBAAI6kC,QAAQ/C,OAAO9hC,CAAP,CAAZ;AACA,wBAAIuF,OAAOs/B,MAAMt/B,IAAjB;AACA,wBAAI40B,OAAO0K,MAAM1K,IAAjB;AACA,wBAAI2K,UAAU,KAAK5K,MAAL,GAAc30B,IAA5B;AACA,wBAAIA,QAAQ,CAAC40B,IAAb,EAAmB;AACfA,+BAAO,KAAKvJ,UAAL,GAAkBrrB,IAAlB,GAAyB,GAAzB,GAA+BA,IAA/B,GAAsC,MAA7C;AACH,qBAFD,MAGK,IAAI,CAACA,IAAD,IAASs/B,MAAM1K,IAAnB,EAAyB;AAC1B50B,+BAAO,WAAWvD,OAAX,CAAmB,KAAnB,EAA0BhC,CAA1B,CAAP;AACH;;AAED,wBAAI,CAAC,KAAK+kC,UAAL,CAAgB5K,IAAhB,EAAsB,MAAtB,CAAL,EAAoC;AAChC,6BAAKkI,MAAL,CAAYyC,OAAZ,EAAqB3K,IAArB,EAA2B,IAA3B,EAAiC,MAAjC;AACH;AACJ;AACJ;;AAED;AACA,iBAAKt0B,MAAL,GAAc,IAAd;;AAEA,iBAAKlC,OAAL,CAAa0J,IAAb,CAAkB,sBAAlB,EAA0C,IAA1C;AACH;;AAED;;;;;;;wCAIgC;AAAA,gBAAlB9H,IAAkB,uEAAX,SAAW;;AAC5B,mBAAO,cAAI,KAAK20B,MAAL,GAAc30B,IAAlB,CAAP;AACH;;AAED;;;;;;kCAGU;AAAA;;AACN,gBAAI,CAAC,KAAK3B,WAAV,EAAuB;AACnB;AACH;;AAED,gBAAID,UAAU,KAAKA,OAAnB;;AAEA,gBAAI,KAAKib,aAAL,IAAsB,CAAC,KAAKJ,YAAhC,EAA8C;AAC1C,qBAAKwmB,kBAAL;AACH;;AAED,iBAAKC,aAAL;;AAEA,gBAAI,KAAKvD,aAAT,EAAwB;AACpB,qBAAKwD,iBAAL;AACH;;AAED,iBAAKlX,eAAL;;AAEA;AACArqB,oBAAQ0J,IAAR,CAAa,SAAb,EAAwB,IAAxB;;AAEA,gBAAI,KAAKqP,OAAL,IAAgB,CAAC,KAAK9W,UAA1B,EAAsC;AAClC,qBAAKiJ,GAAL,GAAWs2B,SAAX,CAAqB,KAAKtnB,eAA1B;AACH;;AAED;AACA,gBAAI,KAAKlO,cAAT,EAAyB;AACrBhM,wBAAQuP,GAAR,CAAY,CAAC,iBAAD,CAAZ,EAAiC;AAAA,2BAAM,OAAKiwB,iBAAL,EAAN;AAAA,iBAAjC;AACH;AACD,gBAAI,KAAK13B,aAAT,EAAwB;AACpB9H,wBAAQuP,GAAR,CAAY,CAAC,iBAAD,CAAZ,EAAiC;AAAA,2BAAM,OAAKmwB,WAAL,EAAN;AAAA,iBAAjC;AACH;AACD,iBAAK1/B,OAAL,CAAauP,GAAb,CAAiB,CAAC,cAAD,CAAjB,EACI,UAAC3P,EAAD,EAAKgK,MAAL;AAAA,uBAAgB,OAAK21B,iBAAL,CAAuB31B,OAAO9K,EAA9B,CAAhB;AAAA,aADJ;;AAGA,kCAAY,KAAKoM,GAAL,EAAZ,EAAwB,KAAKqrB,MAA7B;AACA,kCAAY,KAAKrrB,GAAL,EAAZ,EAAwB,KAAK2yB,cAA7B;;AAEA,iBAAK/M,YAAL,GAAoB,CAApB;AACA,iBAAK3c,cAAL,GAAsB,EAAtB;AACA,iBAAKzJ,MAAL,GAAc,EAAd;AACA,iBAAKzK,WAAL,GAAmB,KAAnB;AACH;;AAED;;;;;;qCAGa;AACT,gBAAI,KAAKg3B,MAAT,EAAiB;AACb;AACH;;AAED;AACA,gBAAIA,SAAS,oBAAU,KAAV,CAAb;AACAA,mBAAOp5B,SAAP,GAAmB,KAAK6Z,cAAxB;;AAEA;AACA,gBAAI,KAAKyiB,YAAT,EAAuB;AACnB,8BAAI,KAAKA,YAAT,EAAuBv7B,WAAvB,CAAmCq4B,MAAnC;AACH;AACD;AAHA,iBAIK,IAAI,KAAKh1B,UAAT,EAAqB;AACtB,wBAAIA,aAAa,KAAKq8B,GAAL,CAASr8B,UAA1B;AACAA,+BAAW0W,WAAX,CAAuB/Z,WAAvB,CAAmCq4B,MAAnC;AACAA,2BAAOp5B,SAAP,GAAmBoE,WAAWyV,cAA9B;AACH;AACD;AALK,qBAMA;AACD,4BAAInC,OAAO,oBAAU,SAAV,CAAX;AACAA,6BAAK3W,WAAL,CAAiBq4B,MAAjB;AACA,6BAAK/rB,GAAL,GAAWoO,YAAX,CAAwB/D,IAAxB,EAA8B,KAAKrK,GAAL,GAAW4K,UAAzC;AACH;AACD,iBAAKmhB,MAAL,GAAcA,MAAd;;AAEA;AACA,gBAAIvG,OAAO,oBAAU,KAAV,CAAX;AACAA,iBAAK7yB,SAAL,GAAiB,KAAKs5B,YAAtB;AACAF,mBAAOr4B,WAAP,CAAmB8xB,IAAnB;AACA,iBAAKA,IAAL,GAAYA,IAAZ;;AAEA;;AAEA,gBAAIhb,OAAO,oBAAU,KAAV,CAAX;AACAA,iBAAK7X,SAAL,GAAiB,KAAKw5B,YAAtB;AACAJ,mBAAOr4B,WAAP,CAAmB8W,IAAnB;AACA,iBAAKA,IAAL,GAAYA,IAAZ;;AAEA;AACA,gBAAIsU,OAAO,oBAAU,KAAV,CAAX;AACAA,iBAAKnsB,SAAL,GAAiB,KAAK05B,YAAtB;AACAN,mBAAOr4B,WAAP,CAAmBorB,IAAnB;AACA,iBAAKA,IAAL,GAAYA,IAAZ;;AAEA;AACA,gBAAI,oBAAQ,KAAKnoB,IAAb,CAAJ,EAAwB;AACpB;AACA;AACA,qBAAKy8B,GAAL,CAASz8B,IAAT,CAAcxB,MAAd;AACA,qBAAKL,OAAL,CAAa0J,IAAb,CAAkB,WAAlB,EAA+B,IAA/B;AACH;AACJ;;AAED;;;;;;wCAGgB;AACZ,gBAAI,CAAC,KAAKutB,MAAV,EAAkB;AACd;AACH;AACD,gCAAU,KAAKA,MAAf;AACA,iBAAKA,MAAL,GAAc,IAAd;;AAEA,gBAAIje,MAAM,KAAK9N,GAAL,EAAV;AACA,gBAAIu2B,WAAW,cAAIzoB,GAAJ,EAAS,SAAT,CAAf;AACA,eAAGvR,OAAH,CAAWpM,IAAX,CAAgBomC,QAAhB,EAA0B,UAACriC,GAAD;AAAA,uBAAS,oBAAUA,GAAV,CAAT;AAAA,aAA1B;AACH;;AAED;;;;;;6CAGqB;AACjB,gBAAI,CAAC,KAAK6b,aAAV,EAAyB;AACrB;AACH;AACD,gBAAIymB,MAAM,KAAKl3B,iBAAf;AAAA,gBACI2Q,MAAMumB,IAAI7lC,MADd;AAEA,iBAAK,IAAIkO,KAAK,CAAd,EAAiBA,KAAKoR,GAAtB,EAA2BpR,IAA3B,EAAiC;AAC7B,oBAAIQ,mBAAmBm3B,IAAI33B,EAAJ,CAAvB;AAAA,oBACI43B,cAAc,cAAIp3B,gBAAJ,CADlB;AAEA,oBAAIo3B,WAAJ,EAAiB;AACbA,gCAAY91B,SAAZ,GAAwB,EAAxB;AACH;AACJ;AACJ;;AAED;;;;;;;;wCAKgBnF,Q,EAAU;AACtB,mBAAO,KAAKw0B,gBAAL,IACH,KAAKE,aAAL,CAAmBxf,IAAnB,CAAwB9U,OAAxB,CAAgCJ,QAAhC,MAA8C,CAAC,CADnD;AAEH;;AAED;;;;;;;;;yCAMiBA,Q,EAAU;AACvB,gBAAI,oBAAQA,QAAR,KAAqB,CAAC,KAAKE,eAAL,CAAqBF,QAArB,CAA1B,EAA0D;AACtD;AACH;;AAED,gBAAI00B,gBAAgB,KAAKA,aAAzB;AACA,gBAAIxf,OAAOwf,cAAcxf,IAAzB;AACA,gBAAIgmB,SAAS,EAAb;AAAA,gBAAiBC,WAAW,EAA5B;AACA,gBAAI3V,QAAQtQ,KAAK9U,OAAL,CAAaJ,QAAb,CAAZ;AACA,gBAAIo7B,YAAY1G,cAAczzB,MAAd,CAAqBukB,KAArB,CAAhB;AACA,gBAAI6V,WAAW3G,cAAc4G,KAAd,CAAoB9V,KAApB,CAAf;AACA,gBAAI+V,UAAU7G,cAAc8G,KAAd,CAAoBhW,KAApB,CAAd;;AAEA,iBAAK,IAAIf,IAAI,CAAR,EAAWhQ,MAAM2mB,UAAUjmC,MAAhC,EAAwCsvB,IAAIhQ,GAA5C,EAAiDgQ,GAAjD,EAAsD;AAClD0W,yBAASz5B,IAAT,CAAc05B,UAAU3W,CAAV,CAAd;AACA,oBAAI4W,SAAS5W,CAAT,CAAJ,EAAiB;AACbyW,2BAAOx5B,IAAP,CAAY25B,SAAS5W,CAAT,CAAZ;AACH,iBAFD,MAEO;AACHyW,2BAAOx5B,IAAP,CAAY05B,UAAU3W,CAAV,CAAZ;AACH;AACJ;AACD,gBAAI8W,OAAJ,EAAa;AACTJ,yBAASt6B,IAAT;AACAq6B,uBAAOr6B,IAAP;AACH;AACD,mBAAO,CAACs6B,QAAD,EAAWD,MAAX,CAAP;AACH;;AAED;;;;;;;;iCAKS;AACL,gBAAI,CAAC,KAAK7oB,OAAN,IAAiB,CAAC,KAAK9Y,WAA3B,EAAwC;AACpC;AACH;AACD;AACA,iBAAKy4B,cAAL,CAAoB,IAApB;AACA,iBAAK14B,OAAL,CAAa0J,IAAb,CAAkB,kBAAlB,EAAsC,IAAtC;;AAEA,gBAAIoS,MAAM,KAAK5Q,GAAL,GAAWD,IAArB;AAAA,gBACIE,SAAS,KAAKC,SAAL,CAAe,IAAf,CADb;AAAA,gBAEI+2B,aAAa,CAFjB;;AAIA,iBAAKhuB,cAAL,GAAsB,EAAtB;AACA;AACA,gBAAIiuB,aAAa,KAAKliB,eAAL,EAAjB;;AAEA,iBAAK,IAAIpU,IAAI,KAAKC,MAAlB,EAA0BD,IAAIX,MAA9B,EAAsCW,GAAtC,EAA2C;AACvC;AACAgQ,oBAAIhQ,CAAJ,EAAOwB,KAAP,CAAaC,OAAb,GAAuB,EAAvB;;AAEA,oBAAIrB,QAAQ4P,IAAIhQ,CAAJ,EAAOI,KAAnB;AACA,oBAAI0E,UAAU1E,MAAMrQ,MAApB;;AAEA;AACA,oBAAI+U,YAAY,KAAKxE,OAArB,EAA8B;AAC1B;AACH;;AAED,oBAAIi2B,YAAY,EAAhB;AAAA,oBACI91B,aAAa,IADjB;;AAEI;AACA+1B,oCAAoB,KAHxB;;AAKA;AACA,qBAAK,IAAIj2B,IAAI,CAAb,EAAgBA,IAAIuE,OAApB,EAA6BvE,GAA7B,EAAkC;AAC9B;AACA,wBAAIk2B,KAAKH,WAAW,KAAKzI,eAAL,GAAuB,CAAvB,GAA2BttB,CAAtC,CAAT;;AAEA,wBAAIk2B,OAAO,EAAX,EAAe;AACX;AACH;;AAED,wBAAI/1B,YAAY,uBAAU,KAAKC,YAAL,CAAkBP,MAAMG,CAAN,CAAlB,CAAV,EACZ,KAAKzH,aADO,CAAhB;;AAGA;AACA,wBAAI49B,YAAYD,GAAGnnC,QAAH,GAAc+S,KAAd,CAAoB,KAAKU,UAAzB,CAAhB;;AACI;AACA4zB,mCAAeD,UAAU3mC,MAAV,GAAmB,CAFtC;;AAGI;AACA6mC,iCAAaH,GAAGnnC,QAAH,GAAc+S,KAAd,CAAoB,KAAKutB,UAAzB,CAJjB;;AAKI;AACAiH,oCAAgBD,WAAW7mC,MAAX,GAAoB,CANxC;;AAQA;AACA,wBAAI,oBAAQ0mC,EAAR,KAAeE,YAAf,IAA+BE,aAAnC,EAAkD;AAC9C,4BAAIC,WAAJ;AAAA,4BACIC,UADJ;AAAA,4BAEIC,QAAQ,KAFZ;AAGA,4BAAI,oBAAQP,EAAR,CAAJ,EAAiB;AACbM,gCAAIN,EAAJ;AACH,yBAFD,MAEO;AACHM,gCAAIJ,eAAeD,SAAf,GAA2BE,UAA/B;AACH;AACD;AACA,6BAAK,IAAIK,IAAI,CAAR,EAAW5nB,MAAM0nB,EAAEhnC,MAAxB,EAAgCknC,IAAI5nB,GAApC,EAAyC4nB,GAAzC,EAA8C;AAC1CH,iCAAK,kBAAKC,EAAEE,CAAF,CAAL,CAAL;AACAD,oCAAQ,KAAKE,SAAL,CAAeJ,EAAf,EAAmBp2B,SAAnB,EAA8BH,CAA9B,CAAR;;AAEA,gCAAIy2B,KAAJ,EAAW;AACP,qCAAK9iC,OAAL,CAAa0J,IAAb,CAAkB,mBAAlB,EAAuC,IAAvC,EACIwC,MAAMG,CAAN,CADJ,EACcu2B,EADd;AAEH;AACD,gCAAKH,gBAAgBK,KAAjB,IACCH,iBAAiB,CAACG,KADvB,EAC+B;AAC3B;AACH;AACD,gCAAI,oBAAQP,EAAR,KAAeO,KAAnB,EAA0B;AACtB;AACH;AACJ;AACDT,kCAAUh2B,CAAV,IAAey2B,KAAf;AAEH;AACD;AA7BA,yBA8BK;AACDT,sCAAUh2B,CAAV,IAAe,KAAK22B,SAAL,CAAe,kBAAKT,EAAL,CAAf,EAAyB/1B,SAAzB,EAAoCH,CAApC,CAAf;AACA,gCAAIg2B,UAAUh2B,CAAV,CAAJ,EAAkB;AACd,qCAAKrM,OAAL,CAAa0J,IAAb,CAAkB,mBAAlB,EAAuC,IAAvC,EAA6CwC,MAAMG,CAAN,CAA7C,EACIk2B,EADJ;AAEH;AACJ,yBAzD6B,CAyD7B;;AAED,wBAAI,CAACF,UAAUh2B,CAAV,CAAL,EAAmB;AACfE,qCAAa,KAAb;AACH;AACD,wBAAI,KAAKotB,eAAL,IAAwB0I,UAAUh2B,CAAV,CAA5B,EAA0C;AACtCi2B,4CAAoB,IAApB;AACH;;AAED,yBAAKtiC,OAAL,CAAa0J,IAAb,CAAkB,gBAAlB,EAAoC,IAApC,EAA0C2C,CAA1C,EAA6CH,MAAMG,CAAN,CAA7C;AACH,iBArFsC,CAqFtC;;AAED,oBAAI,KAAKstB,eAAL,IAAwB2I,iBAA5B,EAA+C;AAC3C/1B,iCAAa,IAAb;AACH;;AAED,qBAAK02B,WAAL,CAAiBn3B,CAAjB,EAAoBS,UAApB;AACA,oBAAI,CAACA,UAAL,EAAiB;AACb41B;AACH;;AAED,qBAAKniC,OAAL,CAAa0J,IAAb,CAAkB,eAAlB,EAAmC,IAAnC,EAAyCoC,CAAzC,EACI,KAAKqI,cAAL,CAAoBtY,MADxB,EACgC0Q,UADhC;AAEH,aAlHI,CAkHJ;;AAED,iBAAKukB,YAAL,GAAoBqR,UAApB;;AAEA;AACA,iBAAKvJ,aAAL,CAAmB,IAAnB;;AAEA,iBAAK54B,OAAL,CAAa0J,IAAb,CAAkB,iBAAlB,EAAqC,IAArC,EAA2C04B,UAA3C;AACH;;AAED;;;;;;;;;;kCAOUt9B,I,EAAM0H,S,EAAW9E,M,EAAQ;AAC/B,gBAAIw7B,gBAAJ;AACA,gBAAI79B,UAAU,KAAK8B,UAAL,CAAgBO,MAAhB,CAAd;AACA,gBAAImZ,OAAO,IAAI9iB,MAAJ,CAAW,KAAK+iB,UAAhB,CAAX;AAAA,gBACIC,OAAO,IAAIhjB,MAAJ,CAAW,KAAKijB,UAAhB,CADX;AAAA,gBAEIC,MAAM,IAAIljB,MAAJ,CAAW,KAAKmjB,UAAhB,CAFV;AAAA,gBAGIC,MAAM,IAAIpjB,MAAJ,CAAW,KAAKqjB,UAAhB,CAHV;AAAA,gBAIIC,MAAM,IAAItjB,MAAJ,CAAW,KAAKujB,UAAhB,CAJV;AAAA,gBAKIjB,OAAO,IAAItiB,MAAJ,CAAW,oBAAO,KAAKuiB,UAAZ,CAAX,CALX;AAAA,gBAMIC,OAAO,IAAIxiB,MAAJ,CAAW,KAAKyiB,UAAhB,CANX;AAAA,gBAOIC,OAAO,IAAI1iB,MAAJ,CAAW,KAAK2iB,UAAhB,CAPX;AAAA,gBAQIC,OAAO,IAAI5iB,MAAJ,CAAW,KAAK6iB,UAAhB,CARX;;AASI;AACA;AACAuiB,mBAAO,KAAKv1B,UAXhB;AAAA,gBAYIw1B,OAAO,KAAKp1B,UAZhB;AAAA,gBAaIq1B,OAAO,IAAItlC,MAAJ,CAAW,oBAAO,KAAKs9B,WAAZ,CAAX,CAbX;;AAeAv2B,mBAAO,uBAAUA,IAAV,EAAgB,KAAKF,aAArB,CAAP;;AAEA,gBAAIy9B,YAAY,KAAhB;;AAEA;AACA,gBAAIiB,QAAQriB,IAAI9b,IAAJ,CAASL,IAAT,CAAZ;AAAA,gBACIy+B,QAAQ1iB,KAAK1b,IAAL,CAAUL,IAAV,CADZ;AAAA,gBAEI0+B,QAAQriB,IAAIhc,IAAJ,CAASL,IAAT,CAFZ;AAAA,gBAGI2+B,QAAQ1iB,KAAK5b,IAAL,CAAUL,IAAV,CAHZ;AAAA,gBAII4+B,QAAQriB,IAAIlc,IAAJ,CAASL,IAAT,CAJZ;AAAA,gBAKI6+B,QAAQpjB,KAAKpb,IAAL,CAAUL,IAAV,CALZ;AAAA,gBAMI8+B,QAAQvjB,KAAKlb,IAAL,CAAUL,IAAV,CANZ;;AAOI;AACA++B,oBAAQpjB,KAAKtb,IAAL,CAAUL,IAAV,CARZ;AAAA,gBASIg/B,QAAQnjB,KAAKxb,IAAL,CAAUL,IAAV,CATZ;AAAA,gBAUIi/B,QAASZ,SAASr+B,IAVtB;AAAA,gBAWIk/B,QAASZ,SAASt+B,IAXtB;AAAA,gBAYIm/B,QAAQZ,KAAKl+B,IAAL,CAAUL,IAAV,CAZZ;;AAcA;AACA,gBAAI,KAAKoC,OAAL,CAAaQ,MAAb,EAAqB,aAArB,CAAJ,EAAkC;AAC9B,oBAAIw8B,aAAJ;AAAA,oBAAUC,aAAV;;AAEA,oBAAIziC,WAAW,KAAK48B,GAAL,CAAS58B,QAAxB;AACA,oBAAI0iC,cAAc1iC,SAASsS,OAAT,CAAiB6I,IAAjB,CAAsBnb,QAAtB,CAAlB;AACA,oBAAI2iC,YAAY3iC,SAAS0D,KAAT,CAAeyX,IAAf,CAAoBnb,QAApB,CAAhB;AACA,oBAAI0F,SAAS1F,SAAS2F,SAAT,CAAmBK,MAAnB,CAAb;;AAEA;AACA,oBAAI48B,UAAUhB,SACVc,YAAYt/B,KAAKzG,OAAL,CAAa4iB,GAAb,EAAkB,EAAlB,CAAZ,EAAmC7Z,MAAnC,CADJ;AAEA,oBAAIm9B,WAAWhB,SACXa,YAAYt/B,KAAKzG,OAAL,CAAawiB,IAAb,EAAmB,EAAnB,CAAZ,EAAoCzZ,MAApC,CADJ;AAEA,oBAAIo9B,UAAUhB,SACVY,YAAYt/B,KAAKzG,OAAL,CAAa8iB,GAAb,EAAkB,EAAlB,CAAZ,EAAmC/Z,MAAnC,CADJ;AAEA,oBAAIq9B,WAAWhB,SACXW,YAAYt/B,KAAKzG,OAAL,CAAa0iB,IAAb,EAAmB,EAAnB,CAAZ,EAAoC3Z,MAApC,CADJ;AAEA,oBAAIs9B,WAAWhB,SACXU,YAAYt/B,KAAKzG,OAAL,CAAagjB,GAAb,EAAkB,EAAlB,CAAZ,EAAmCja,MAAnC,CADJ;AAEA,oBAAIu9B,WAAWhB,SACXS,YAAYt/B,KAAKzG,OAAL,CAAakiB,IAAb,EAAmB,EAAnB,CAAZ,EAAoCnZ,MAApC,CADJ;;AAGA88B,uBAAOG,UAAU73B,SAAV,EAAqBpF,MAArB,CAAP;;AAEA;AACA,oBAAIm9B,QAAJ,EAAc;AACVJ,2BAAOE,UAAUv/B,KAAKzG,OAAL,CAAawiB,IAAb,EAAmB,EAAnB,CAAV,EAAkCzZ,MAAlC,CAAP;AACAi7B,gCAAY6B,QAAQC,IAApB;AACH;AACD;AAJA,qBAKK,IAAIG,OAAJ,EAAa;AACdH,+BAAOE,UAAUv/B,KAAKzG,OAAL,CAAa4iB,GAAb,EAAkB,EAAlB,CAAV,EAAiC7Z,MAAjC,CAAP;AACAi7B,oCAAY6B,OAAOC,IAAnB;AACH;AACD;AAJK,yBAKA,IAAIM,QAAJ,EAAc;AACfN,mCAAOE,UAAUv/B,KAAKzG,OAAL,CAAa0iB,IAAb,EAAmB,EAAnB,CAAV,EAAkC3Z,MAAlC,CAAP;AACAi7B,wCAAY6B,QAAQC,IAApB;AACH;AACD;AAJK,6BAKA,IAAIK,OAAJ,EAAa;AACdL,uCAAOE,UAAUv/B,KAAKzG,OAAL,CAAa8iB,GAAb,EAAkB,EAAlB,CAAV,EAAiC/Z,MAAjC,CAAP;AACAi7B,4CAAY6B,OAAOC,IAAnB;AACH;AACD;AAJK,iCAKA,IAAIO,QAAJ,EAAc;AACfP,2CAAOE,UAAUv/B,KAAKzG,OAAL,CAAagjB,GAAb,EAAkB,EAAlB,CAAV,EAAiCja,MAAjC,CAAP;AACAi7B,gDAAY6B,KAAK9oC,QAAL,OAAoB+oC,KAAK/oC,QAAL,EAAhC;AACH;AACD;AAJK,qCAKA,IAAIupC,QAAJ,EAAc;AACfR,+CAAOE,UAAUv/B,KAAKzG,OAAL,CAAakiB,IAAb,EAAmB,EAAnB,CAAV,EAAkCnZ,MAAlC,CAAP;AACAi7B,oDAAY6B,KAAK9oC,QAAL,OAAoB+oC,KAAK/oC,QAAL,EAAhC;AACH;AACD;AAJK,yCAKA,IAAIilB,KAAKlb,IAAL,CAAUL,IAAV,CAAJ,EAAqB;AAAC;AACvBu9B,wDAAY,sBAASv9B,KAAKzG,OAAL,CAAagiB,IAAb,EAAmB,EAAnB,CAAT,EAAiC7T,SAAjC,EACR,KADQ,EACD,KAAK5H,aADJ,CAAZ;AAEH,yCAHI,MAIA,IAAIw/B,YAAYt/B,IAAZ,CAAJ,EAAuB;AACxBq/B,mDAAOE,UAAUv/B,IAAV,EAAgBsC,MAAhB,CAAP;AACAi7B,wDAAY6B,KAAK9oC,QAAL,OAAoB+oC,KAAK/oC,QAAL,EAAhC;AACH;AACD;AAJK,6CAKA,IAAI2oC,KAAJ,EAAW;AACZ1B,4DAAY,qBAAc71B,SAAd,CAAZ;AACH;AACD;AAHK,iDAIA,IAAIw3B,KAAJ,EAAW;AACZ3B,gEAAY,CAAC,qBAAc71B,SAAd,CAAb;AACH,iDAFI,MAEE;AACH61B,gEAAY,sBAASv9B,IAAT,EAAe0H,SAAf,EACR,KAAKo4B,YAAL,CAAkBl9B,MAAlB,CADQ,EACmB,KAAK9C,aADxB,CAAZ;AAEH;AACJ,aA1ED,MA4EK;AACD;AACA;AACAs+B,0BAAU2B,OAAOr4B,SAAP,KAAqB,mBAAQA,SAAR,EAAmBnH,OAAnB,CAA/B;;AAEA;AACA;AACA;AACA,oBAAIk+B,KAAJ,EAAW;AACPlB,gCAAYa,WAAW,mBACnBp+B,KAAKzG,OAAL,CAAawiB,IAAb,EAAmB,EAAnB,CADmB,EAEnBxb,OAFmB,CAAvB;AAIH;AACD;AANA,qBAOK,IAAIo+B,KAAJ,EAAW;AACZpB,oCAAYa,WAAW,mBACnBp+B,KAAKzG,OAAL,CAAa0iB,IAAb,EAAmB,EAAnB,CADmB,EAEnB1b,OAFmB,CAAvB;AAIH;AACD;AANK,yBAOA,IAAIi+B,KAAJ,EAAW;AACZjB,wCAAYa,UAAU,mBAClBp+B,KAAKzG,OAAL,CAAa4iB,GAAb,EAAkB,EAAlB,CADkB,EAElB5b,OAFkB,CAAtB;AAIH;AACD;AANK,6BAOA,IAAIm+B,KAAJ,EAAW;AACZnB,4CAAYa,UAAU,mBAClBp+B,KAAKzG,OAAL,CAAa8iB,GAAb,EAAkB,EAAlB,CADkB,EAElB9b,OAFkB,CAAtB;AAIH;AACD;AANK,iCAOA,IAAIq+B,KAAJ,EAAW;AACZrB,gDAAY,sBAASv9B,KAAKzG,OAAL,CAAagjB,GAAb,EAAkB,EAAlB,CAAT,EAAgC7U,SAAhC,EACR,KADQ,EACD,KAAK5H,aADJ,IACqB,KADrB,GAC6B,IADzC;AAEH;AACD;AAJK,qCAKA,IAAIg/B,KAAJ,EAAW;AACZvB,oDAAY,sBAASv9B,KAAKzG,OAAL,CAAagiB,IAAb,EAAmB,EAAnB,CAAT,EAAiC7T,SAAjC,EACR,KADQ,EACD,KAAK5H,aADJ,CAAZ;AAEH;AACD;AAJK,yCAKA,IAAI++B,KAAJ,EAAW;AACZtB,wDAAY,sBAASv9B,KAAKzG,OAAL,CAAakiB,IAAb,EAAmB,EAAnB,CAAT,EAAiC/T,SAAjC,EACR,IADQ,EACF,KAAK5H,aADH,CAAZ;AAEH;AACD;AAJK,6CAKA,IAAIi/B,KAAJ,EAAW;AACZxB,4DAAY71B,UAAU1F,OAAV,CAAkBhC,KAAKzG,OAAL,CAAaoiB,IAAb,EAAmB,EAAnB,CAAlB,MAA8C,CAA9C,GACR,IADQ,GACD,KADX;AAEH;AACD;AAJK,iDAKA,IAAIqjB,KAAJ,EAAW;AACZ,wDAAIgB,YAAYhgC,KAAKzG,OAAL,CAAasiB,IAAb,EAAmB,EAAnB,CAAhB;AACA0hB,gEACI71B,UAAUu4B,WAAV,CAAsBD,SAAtB,EAAiCt4B,UAAU3Q,MAAV,GAAmB,CAApD,MACK2Q,UAAU3Q,MAAV,GAAmB,CAApB,IAA0BipC,UAAUjpC,MAAV,GAAmB,CAA7C,CADJ,IAEI2Q,UAAUu4B,WAAV,CAAsBD,SAAtB,EAAiCt4B,UAAU3Q,MAAV,GAAmB,CAApD,IACE,CAAC,CAHP,GAGW,IAHX,GAGkB,KAJtB;AAKH;AACD;AARK,qDASA,IAAIkoC,KAAJ,EAAW;AACZ1B,oEAAY,qBAAc71B,SAAd,CAAZ;AACH;AACD;AAHK,yDAIA,IAAIw3B,KAAJ,EAAW;AACZ3B,wEAAY,CAAC,qBAAc71B,SAAd,CAAb;AACH;AACD;AAHK,6DAIA,IAAIy3B,KAAJ,EAAW;AACZ;AACA,oEAAI;AACA;AACA,wEAAIe,UAAUlgC,KAAKzG,OAAL,CAAaglC,IAAb,EAAmB,EAAnB,CAAd;AACA,wEAAI4B,MAAM,IAAIlnC,MAAJ,CAAWinC,OAAX,CAAV;AACA3C,gFAAY4C,IAAI9/B,IAAJ,CAASqH,SAAT,CAAZ;AACH,iEALD,CAKE,OAAOqK,EAAP,EAAW;AACTwrB,gFAAY,KAAZ;AACH;AACJ,6DAVI,MAUE;AACH;AACA;AACA,oEAAIa,WACA,KAAKh8B,OAAL,CAAaQ,MAAb,EAAqB,wCAArB,CADA,IAEA,CAAC,KAAKiyB,eAFV,EAE2B;AACvB;AACA;AACA;AACA70B,2EAAO,mBAAQA,IAAR,EAAcO,OAAd,KAA0BP,IAAjC;AACAu9B,gFAAYa,YAAYp+B,IAAZ,IACR,sBAASA,KAAK1J,QAAL,EAAT,EAA0B8nC,QAAQ9nC,QAAR,EAA1B,EACI,KAAKwpC,YAAL,CAAkBl9B,MAAlB,CADJ,EAC+B,KAAK9C,aADpC,CADJ;AAGH,iEAVD,MAUO;AACH;AACAy9B,gFAAY,sBACRv9B,IADQ,EAER0H,SAFQ,EAGR,KAAKo4B,YAAL,CAAkBl9B,MAAlB,CAHQ,EAIR,KAAK9C,aAJG,EAKR,KAAKsgC,iBAAL,CAAuBx9B,MAAvB,CALQ,CAAZ;AAOH;AACJ;AAEJ,aA9N8B,CA8N9B;;AAED,mBAAO26B,SAAP;AACH;;AAED;;;;;;;;;;sCAOc37B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AAC1D,mBAAO,KAAKC,YAAL,CAAkB3+B,QAAlB,EAA4By+B,cAA5B,EAA4C,IAA5C,EAAkDC,OAAlD,CAAP;AACH;;AAED;;;;;;;;;;wCAOgB1+B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AAC5D,mBAAO,KAAKC,YAAL,CAAkB3+B,QAAlB,EAA4By+B,cAA5B,EAA4C,KAA5C,EAAmDC,OAAnD,CAAP;AACH;;AAED;;;;;;;;;;;;qCAUI1+B,Q,EAIF;AAAA,gBAHEy+B,cAGF,uEAHmB,KAGnB;AAAA,gBAFEG,KAEF,uEAFU,KAEV;AAAA,gBADEF,OACF,uEADY,EACZ;;AACE,gBAAItpB,MAAM,KAAK5Q,GAAL,GAAWD,IAArB;AACA,gBAAIE,SAAS,KAAKC,SAAL,CAAe,IAAf,CAAb;AACA,gBAAIm6B,YAAY,EAAhB;AACA,gBAAIC,aAAaF,QAAQ,KAAKG,WAAL,CAAiB5oB,IAAjB,CAAsB,IAAtB,CAAR,GACb,KAAKpQ,YAAL,CAAkBoQ,IAAlB,CAAuB,IAAvB,CADJ;;AAGA,gBAAIsoB,cAAJ,EAAoB;AAChBI,0BAAUn9B,IAAV,CAAe,KAAKs9B,cAAL,GAAsBh/B,QAAtB,CAAf;AACH;;AAED,iBAAK,IAAIrK,IAAI,KAAK0P,MAAlB,EAA0B1P,IAAI8O,MAA9B,EAAsC9O,GAAtC,EAA2C;AACvC,oBAAIspC,eAAe,KAAnB;AACA;AACA,oBAAIP,QAAQvpC,MAAR,GAAiB,CAArB,EAAwB;AACpB8pC,mCAAeP,QAAQt+B,OAAR,CAAgBzK,CAAhB,MAAuB,CAAC,CAAvC;AACH;AACD,oBAAIsU,OAAOmL,IAAIzf,CAAJ,EAAO6P,KAAlB;AAAA,oBACI0E,UAAUD,KAAK9U,MADnB;;AAGA;AACA,oBAAI+U,YAAY,KAAKxE,OAAjB,IAA4B,CAACu5B,YAAjC,EAA+C;AAC3C;AACA,yBAAK,IAAIt5B,IAAI,CAAb,EAAgBA,IAAIuE,OAApB,EAA6BvE,GAA7B,EAAkC;AAC9B,4BAAIA,MAAM3F,QAAV,EAAoB;AAChB;AACH;AACD,4BAAIjK,OAAO+oC,WAAW70B,KAAKtE,CAAL,CAAX,CAAX;AACAk5B,kCAAUn9B,IAAV,CAAe3L,IAAf;AACH;AACJ;AACJ;AACD,mBAAO8oC,SAAP;AACH;;AAED;;;;;;;;uCAKerZ,K,EAAO;AAClB,gBAAI,CAAC,KAAKnT,OAAV,EAAmB;AACf;AACH;AACD,gBAAIzK,WAAW,EAAf;AACA,gBAAIvD,MAAM,KAAKsD,gBAAL,CAAsB6d,KAAtB,CAAV;AACA,gBAAI,CAACnhB,GAAL,EAAU;AACN,uBAAOuD,QAAP;AACH;;AAED,gBAAIs3B,aAAa,KAAK32B,aAAL,CAAmBid,KAAnB,CAAjB;AACA,gBAAI0Z,kCAA2BA,+BAA/B,EAAyD;AACrDt3B,2BAAWvD,IAAIvM,KAAf;AACH;AACD;AAHA,iBAIK,IAAIonC,8BAAJ,EAA6B;AAC9Bt3B,+BAAW,KAAKzO,OAAL,CAAa,UAAb,EAAyB+H,SAAzB,CAAmCskB,KAAnC,CAAX;AACH;AACD;AAHK,qBAIA,IAAI0Z,+BAAJ,EAA8B;AAC/Bt3B,mCAAW,KAAKzO,OAAL,CAAa,WAAb,EAA0B+H,SAA1B,CAAoCskB,KAApC,CAAX;AACH;AACD;AACA;AACA,gBAAI,oBAAQ5d,QAAR,KAAqBA,SAASzS,MAAT,KAAoB,CAAzC,IACCyS,SAASzS,MAAT,KAAoB,CAApB,IAAyByS,SAAS,CAAT,MAAgB,EAD9C,EACmD;AAC/CA,2BAAW,EAAX;AACH;;AAED,mBAAOA,QAAP;AACH;;AAED;;;;;;;0CAIkB;AACd,gBAAI,CAAC,KAAKyK,OAAV,EAAmB;AACf;AACH;AACD,gBAAIqpB,aAAa,EAAjB;AACA,iBAAK,IAAI/lC,IAAI,CAAR,EAAW8e,MAAM,KAAKzQ,MAAL,CAAY7O,MAAlC,EAA0CQ,IAAI8e,GAA9C,EAAmD9e,GAAnD,EAAwD;AACpD,oBAAIiS,WAAW,KAAKu3B,cAAL,CAAoBxpC,CAApB,CAAf;AACA,oBAAI,oBAAQiS,QAAR,CAAJ,EAAuB;AACnB8zB,+BAAWh6B,IAAX,CAAgBkG,QAAhB;AACH,iBAFD,MAEO;AACH8zB,+BAAWh6B,IAAX,CAAgB,kBAAKkG,QAAL,CAAhB;AACH;AACJ;AACD,mBAAO8zB,UAAP;AACH;;AAED;;;;;;;;oCAKYlW,K,EAAO;AACf,gBAAI,CAAC,KAAKnT,OAAV,EAAmB;AACf;AACH;AACD,mBAAO,KAAKrO,MAAL,CAAYwhB,KAAZ,CAAP;AACH;;AAED;;;;;;;;;;;;yCASiBlpB,I,EAAM8iC,I,EAAM;AACzB,gBAAI,CAAC,KAAK/sB,OAAV,EAAmB;AACf;AACH;AACD,gBAAIpT,MAAM,EAAV;AACA,iBAAK,IAAItJ,IAAI,CAAR,EAAW8e,MAAM,KAAKzQ,MAAL,CAAY7O,MAAlC,EAA0CQ,IAAI8e,GAA9C,EAAmD9e,GAAnD,EAAwD;AACpD,oBAAIozB,UAAU,KAAKxgB,aAAL,CAAmB5S,CAAnB,CAAd;AACA,oBAAIozB,YAAYzsB,KAAK6B,WAAL,EAAhB,EAAoC;AAChC,wBAAI0M,IAAIu0B,OAAOzpC,CAAP,GAAW,KAAKqO,MAAL,CAAYrO,CAAZ,CAAnB;AACAsJ,wBAAIyC,IAAJ,CAASmJ,CAAT;AACH;AACJ;AACD,mBAAO5L,GAAP;AACH;;AAED;;;;;;;;yCAKiBumB,K,EAAO;AACpB,gBAAI/e,QAAQ,KAAKzC,MAAL,CAAYwhB,KAAZ,CAAZ;AACA,mBAAO,cAAI/e,KAAJ,CAAP;AACH;;AAED;;;;;;;;qCAKyB;AAAA,gBAAd2G,QAAc,uEAAH,CAAG;;AACrB,gBAAIiyB,KAAK,KAAK76B,GAAL,GAAWD,IAAX,CAAgB6I,YAAY,CAAZ,GAAgBA,QAAhB,GAA2B,CAA3C,CAAT;AACA,mBAAOiyB,KAAKA,GAAG75B,KAAH,CAASrQ,MAAd,GAAuB,CAA9B;AACH;;AAED;;;;;;;;;kCAMUspC,c,EAAgB;AACtB,gBAAItC,IAAI,oBAAQ,KAAK92B,MAAb,IAAuB,CAAvB,GAA2B,KAAKA,MAAxC;AACA,gBAAIi6B,OAAO,KAAK96B,GAAL,GAAWD,IAAX,CAAgBpP,MAA3B;AACA,gBAAIspC,cAAJ,EAAoB;AAChBtC,oBAAI,CAAJ;AACH;AACD,mBAAO/3B,SAASk7B,OAAOnD,CAAhB,EAAmB,EAAnB,CAAP;AACH;;AAGD;;;;;;;;qCAKalyB,I,EAAM;AACf,gBAAI1J,MAAM0J,KAAKqe,SAAf;AACA,gBAAI+K,aAAa,KAAKA,UAAtB;AACA;AACA,gBAAIA,WAAWne,IAAX,CAAgB9U,OAAhB,CAAwBG,GAAxB,MAAiC,CAAC,CAAtC,EAAyC;AACrC,uBAAO8yB,WAAW30B,KAAX,CAAiB,IAAjB,EAAuBuL,IAAvB,EAA6B1J,GAA7B,CAAP;AACH,aAFD,MAEO;AACH,uBAAO,kBAAQ0J,IAAR,CAAP;AACH;AACJ;;AAED;;;;;;;;oCAKYA,I,EAAM;AACd,gBAAIjK,WAAWiK,KAAKqe,SAApB;AACA,gBAAIxwB,QAAQ,KAAKiO,YAAL,CAAkBkE,IAAlB,CAAZ;;AAEA,gBAAI,KAAKzJ,OAAL,CAAaR,QAAb,EAAuB,yBAAvB,CAAJ,EAAgD;AAC5C,uBAAO,mBAAQlI,KAAR,EAAe,KAAK2I,UAAL,CAAgBT,QAAhB,CAAf,CAAP;AACH,aAFD,MAGK,IAAI,KAAKQ,OAAL,CAAaR,QAAb,EAAuB,eAAvB,CAAJ,EAAsC;AACvC,uBAAOm+B,OAAOrmC,KAAP,KAAiB,mBAAQA,KAAR,CAAxB;AACH,aAFI,MAGA,IAAI,KAAK0I,OAAL,CAAaR,QAAb,EAAuB,aAAvB,CAAJ,EAAmC;AACpC,oBAAIhF,WAAW,KAAK48B,GAAL,CAAS58B,QAAxB;AACA,uBAAOA,SAAS0D,KAAT,CAAe5G,KAAf,EAAsBkD,SAAS2F,SAAT,CAAmBX,QAAnB,CAAtB,CAAP;AACH;;AAED,mBAAOlI,KAAP;AACH;;AAED;;;;;;;;;;;;;;kCAW2D;AAAA,gBAAnD2mC,cAAmD,uEAAlC,KAAkC;AAAA,gBAA3Bc,iBAA2B,uEAAP,KAAO;;AACvD,mBAAO,KAAKC,YAAL,CAAkBf,cAAlB,EAAkCc,iBAAlC,EAAqD,IAArD,CAAP;AACH;;AAED;;;;;;;;;;;;;oCAU6D;AAAA,gBAAnDd,cAAmD,uEAAlC,KAAkC;AAAA,gBAA3Bc,iBAA2B,uEAAP,KAAO;;AACzD,mBAAO,KAAKC,YAAL,CAAkBf,cAAlB,EAAkCc,iBAAlC,EAAqD,KAArD,CAAP;AACH;;AAED;;;;;;;;;;;;;;;;;uCAkBE;AAAA,gBAHEd,cAGF,uEAHmB,KAGnB;AAAA,gBAFEc,iBAEF,uEAFsB,KAEtB;AAAA,gBADEX,KACF,uEADU,KACV;;AACE,gBAAIr6B,OAAO,KAAKC,GAAL,GAAWD,IAAtB;AACA,gBAAIE,SAAS,KAAKC,SAAL,CAAe,IAAf,CAAb;AACA,gBAAI+6B,UAAU,EAAd;AACA,gBAAIX,aAAaF,QAAQ,KAAKG,WAAL,CAAiB5oB,IAAjB,CAAsB,IAAtB,CAAR,GACb,KAAKpQ,YAAL,CAAkBoQ,IAAlB,CAAuB,IAAvB,CADJ;;AAGA,gBAAIsoB,cAAJ,EAAoB;AAChB,oBAAIiB,UAAU,KAAKV,cAAL,CAAoBO,iBAApB,CAAd;AACAE,wBAAQ/9B,IAAR,CAAa,CAAC,KAAKkT,kBAAL,EAAD,EAA4B8qB,OAA5B,CAAb;AACH;AACD,iBAAK,IAAIt6B,IAAI,KAAKC,MAAlB,EAA0BD,IAAIX,MAA9B,EAAsCW,GAAtC,EAA2C;AACvC,oBAAIu6B,UAAU,CAACv6B,CAAD,EAAI,EAAJ,CAAd;AACA,oBAAII,QAAQjB,KAAKa,CAAL,EAAQI,KAApB;AACA,qBAAK,IAAIG,IAAI,CAAR,EAAW8O,MAAMjP,MAAMrQ,MAA5B,EAAoCwQ,IAAI8O,GAAxC,EAA6C9O,GAA7C,EAAkD;AAC9C,wBAAI45B,qBAAqB,KAAKtF,YAAL,CAAkB,gBAAlB,CAAzB,EAA8D;AAC1D,4BAAI,KAAKlmB,SAAL,CAAe,gBAAf,EAAiC6rB,WAAjC,CAA6Cj6B,CAA7C,CAAJ,EAAqD;AACjD;AACH;AACJ;AACD,wBAAIG,YAAYg5B,WAAWt5B,MAAMG,CAAN,CAAX,CAAhB;AACAg6B,4BAAQ,CAAR,EAAWj+B,IAAX,CAAgBoE,SAAhB;AACH;AACD25B,wBAAQ/9B,IAAR,CAAai+B,OAAb;AACH;AACD,mBAAOF,OAAP;AACH;;AAED;;;;;;;;;;;;;;;;0CAamE;AAAA,gBAAnDhB,cAAmD,uEAAlC,KAAkC;AAAA,gBAA3Bc,iBAA2B,uEAAP,KAAO;;AAC/D,mBAAO,KAAKM,YAAL,CAAkBpB,cAAlB,EAAkCc,iBAAlC,EAAqD,IAArD,CAAP;AACH;;AAED;;;;;;;;;;;;;;;4CAYqE;AAAA,gBAAnDd,cAAmD,uEAAlC,KAAkC;AAAA,gBAA3Bc,iBAA2B,uEAAP,KAAO;;AACjE,mBAAO,KAAKM,YAAL,CAAkBpB,cAAlB,EAAkCc,iBAAlC,EAAqD,KAArD,CAAP;AACH;;AAED;;;;;;;;;;;;;;;;;uCAkBE;AAAA,gBAHEd,cAGF,uEAHmB,KAGnB;AAAA,gBAFEc,iBAEF,uEAFsB,KAEtB;AAAA,gBADEX,KACF,uEADU,KACV;;AACE,gBAAI,KAAKnxB,cAAL,CAAoBtY,MAApB,KAA+B,CAAnC,EAAsC;AAClC,uBAAO,EAAP;AACH;AACD,gBAAIoP,OAAO,KAAKC,GAAL,GAAWD,IAAtB;AAAA,gBACIs7B,eAAe,EADnB;AAEA,gBAAIf,aAAaF,QAAQ,KAAKG,WAAL,CAAiB5oB,IAAjB,CAAsB,IAAtB,CAAR,GACb,KAAKpQ,YAAL,CAAkBoQ,IAAlB,CAAuB,IAAvB,CADJ;;AAGA,gBAAIsoB,cAAJ,EAAoB;AAChB,oBAAIiB,UAAU,KAAKV,cAAL,CAAoBO,iBAApB,CAAd;AACAM,6BAAan+B,IAAb,CAAkB,CAAC,KAAKkT,kBAAL,EAAD,EAA4B8qB,OAA5B,CAAlB;AACH;;AAED,gBAAIzb,YAAY,KAAKvW,YAAL,CAAkB,IAAlB,CAAhB;AACA,iBAAK,IAAI/X,IAAI,CAAb,EAAgBA,IAAIsuB,UAAU9uB,MAA9B,EAAsCQ,GAAtC,EAA2C;AACvC,oBAAImqC,QAAQ,CAAC,KAAKryB,cAAL,CAAoB9X,CAApB,CAAD,EAAyB,EAAzB,CAAZ;AAAA,oBACI6P,QAAQjB,KAAK,KAAKkJ,cAAL,CAAoB9X,CAApB,CAAL,EAA6B6P,KADzC;AAEA,qBAAK,IAAIJ,IAAI,CAAb,EAAgBA,IAAII,MAAMrQ,MAA1B,EAAkCiQ,GAAlC,EAAuC;AACnC,wBAAIm6B,qBAAqB,KAAKtF,YAAL,CAAkB,gBAAlB,CAAzB,EAA8D;AAC1D,4BAAI,KAAKlmB,SAAL,CAAe,gBAAf,EAAiC6rB,WAAjC,CAA6Cx6B,CAA7C,CAAJ,EAAqD;AACjD;AACH;AACJ;AACD,wBAAIU,YAAYg5B,WAAWt5B,MAAMJ,CAAN,CAAX,CAAhB;AACA06B,0BAAM,CAAN,EAASp+B,IAAT,CAAcoE,SAAd;AACH;AACD+5B,6BAAan+B,IAAb,CAAkBo+B,KAAlB;AACH;AACD,mBAAOD,YAAP;AACH;;AAED;;;;;;;;;;;;8CASsB7/B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AAClE,mBAAO,KAAKqB,kBAAL,CACH//B,QADG,EACOy+B,cADP,EACuB,IADvB,EAC6BC,OAD7B,EACsC,KADtC,CAAP;AAEH;;AAED;;;;;;;;;;;;6CASqB1+B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AACjE,mBAAO,KAAKqB,kBAAL,CACH//B,QADG,EACOy+B,cADP,EACuB,IADvB,EAC6BC,OAD7B,EACsC,IADtC,CAAP;AAEH;;AAED;;;;;;;;;;;;gDASwB1+B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AACpE,mBAAO,KAAKqB,kBAAL,CACH//B,QADG,EACOy+B,cADP,EACuB,KADvB,EAC8BC,OAD9B,EACuC,KADvC,CAAP;AAEH;;AAED;;;;;;;;;;;;+CASuB1+B,Q,EAAgD;AAAA,gBAAtCy+B,cAAsC,uEAArB,KAAqB;AAAA,gBAAdC,OAAc,uEAAJ,EAAI;;AACnE,mBAAO,KAAKqB,kBAAL,CACH//B,QADG,EACOy+B,cADP,EACuB,KADvB,EAC8BC,OAD9B,EACuC,IADvC,CAAP;AAEH;;AAED;;;;;;;;;;;;;;;;2CAcI1+B,Q,EAKF;AAAA,gBAJEy+B,cAIF,uEAJmB,KAInB;AAAA,gBAHEG,KAGF,uEAHU,KAGV;;AAAA;;AAAA,gBAFEF,OAEF,uEAFY,EAEZ;AAAA,gBADEhS,OACF,uEADY,IACZ;;AACE,gBAAI,oBAAQ1sB,QAAR,CAAJ,EAAuB;AACnB,uBAAO,EAAP;AACH;;AAED,gBAAIuE,OAAO,KAAKC,GAAL,GAAWD,IAAtB;AACA,gBAAIu6B,aAAaF,QAAQ,KAAKG,WAAL,CAAiB5oB,IAAjB,CAAsB,IAAtB,CAAR,GACb,KAAKpQ,YAAL,CAAkBoQ,IAAlB,CAAuB,IAAvB,CADJ;;AAGA;AACA;AACA,gBAAI8N,YAAY,KAAKvW,YAAL,CAAkB,IAAlB,EAAwBxK,MAAxB,CAA+B,UAAC0K,MAAD,EAAY;AACvD,uBAAO8wB,QAAQt+B,OAAR,CAAgBwN,MAAhB,MAA4B,CAAC,CAA7B,KACF8e,UACG,OAAKsT,aAAL,CAAmBz7B,KAAKqJ,MAAL,CAAnB,MAAqC,MADxC,GAEG,IAHD,CAAP;AAIH,aALe,CAAhB;;AAOA;AACA,gBAAIqyB,iBAAiBhc,UAAU8T,GAAV,CAAc,UAACnqB,MAAD,EAAY;AAC3C,uBAAOkxB,WAAWv6B,KAAKqJ,MAAL,EAAapI,KAAb,CAAmBxF,QAAnB,CAAX,CAAP;AACH,aAFoB,CAArB;;AAIA,gBAAIy+B,cAAJ,EAAoB;AAChBwB,+BAAeC,OAAf,CAAuB,KAAKlB,cAAL,GAAsBh/B,QAAtB,CAAvB;AACH;;AAED,mBAAOigC,cAAP;AACH;;AAED;;;;;;;;sCAKc7qB,G,EAAK;AACf,mBAAOA,IAAIxO,KAAJ,CAAUC,OAAjB;AACH;;AAED;;;;;;;;oCAKYuG,Q,EAAUE,O,EAAS;AAC3B,gBAAI8H,MAAM,KAAK5Q,GAAL,GAAWD,IAAX,CAAgB6I,QAAhB,CAAV;AACA,gBAAI,CAACgI,GAAD,IAAQ,OAAO9H,OAAP,KAAmB,SAA/B,EAA0C;AACtC;AACH;;AAED;AACA,gBAAI,KAAKhI,cAAL,IAAuB,KAAKC,WAAL,CAAiBnF,OAAjB,CAAyBgN,QAAzB,MAAuC,CAAC,CAAnE,EAAsE;AAClEE,0BAAU,IAAV;AACH;;AAED,gBAAI6yB,cAAc7yB,UAAU,EAAV,cAAlB;AAAA,gBACI8yB,YAAY9yB,UAAU,MAAV,GAAmB,OADnC;AAEA8H,gBAAIxO,KAAJ,CAAUC,OAAV,GAAoBs5B,WAApB;;AAEA,gBAAI,KAAKlkC,MAAT,EAAiB;AACbmZ,oBAAI9e,YAAJ,CAAiB,UAAjB,EAA6B8pC,SAA7B;AACH;;AAED,gBAAI9yB,OAAJ,EAAa;AACT,oBAAI,KAAKG,cAAL,CAAoBrN,OAApB,CAA4BgN,QAA5B,MAA0C,CAAC,CAA/C,EAAkD;AAC9C,yBAAKK,cAAL,CAAoB/L,IAApB,CAAyB0L,QAAzB;AACH;;AAED,qBAAK+lB,cAAL,CAAoB,IAApB,EAA0B/lB,QAA1B;;AAEA,qBAAK9T,OAAL,CAAa0J,IAAb,CAAkB,eAAlB,EAAmC,IAAnC,EAAyCoK,QAAzC;AACH;AACJ;;AAED;;;;;;0CAGkB;AACd,gBAAI,CAAC,KAAK7T,WAAV,EAAuB;AACnB;AACH;AACD,iBAAKkU,cAAL,GAAsB,EAAtB;AACA,iBAAK,IAAIrI,IAAI,KAAKC,MAAlB,EAA0BD,IAAI,KAAKsgB,gBAAnC,EAAqDtgB,GAArD,EAA0D;AACtD,qBAAKm3B,WAAL,CAAiBn3B,CAAjB,EAAoB,IAApB;AACH;AACJ;;AAED;;;;;;;;uCAKeogB,K,EAAmB;AAAA,gBAAZ6a,KAAY,uEAAJ,EAAI;;AAC9B,gBAAI,CAAC,KAAKhuB,OAAV,EAAmB;AACf;AACH;AACD,gBAAI5I,MAAM,KAAK9B,gBAAL,CAAsB6d,KAAtB,CAAV;AAAA,gBACI0Z,aAAa,KAAK32B,aAAL,CAAmBid,KAAnB,CADjB;;AAGA,gBAAI0Z,kCAA2BA,+BAA/B,EAAyD;AACrD,oBAAI,KAAK/7B,eAAL,IAAwB,CAAC,KAAK5J,WAAlC,EAA+C;AAC3C,yBAAKD,OAAL,CAAa0J,IAAb,CAAkB,qBAAlB,EAAyC,IAAzC,EAA+CwiB,KAA/C,EACI,KAAKpkB,aADT,EACwB,KAAKmT,aAD7B;AAEH;AACD9K,oBAAI3R,KAAJ,GAAYuoC,KAAZ;AACH;AACD;AAPA,iBAQK,IAAInB,8BAAJ,EAA6B;AAC9B,wBAAIj+B,SAAS,oBAAQo/B,KAAR,IAAiBA,KAAjB,GACTA,MAAM54B,KAAN,CAAY,MAAM,KAAKU,UAAX,GAAwB,GAApC,CADJ;;AAGA,wBAAI,KAAKhF,eAAL,IAAwB,CAAC,KAAK5J,WAAlC,EAA+C;AAC3C,6BAAKD,OAAL,CAAa0J,IAAb,CAAkB,qBAAlB,EAAyC,IAAzC,EAA+CwiB,KAA/C,EACI,KAAKpkB,aADT,EACwB,KAAKmT,aAD7B;AAEH;;AAED,yBAAKjb,OAAL,CAAa0J,IAAb,CAAkB,gBAAlB,EAAoC,IAApC,EAA0CwiB,KAA1C,EAAiDvkB,MAAjD;AACH;AACD;AAXK,qBAYA,IAAIi+B,+BAAJ,EAA8B;AAC/B,4BAAIj+B,UAAS,EAAb;AACA,4BAAI,KAAKkC,eAAL,IAAwB,CAAC,KAAK5J,WAAlC,EAA+C;AAC3C,iCAAKD,OAAL,CAAa0J,IAAb,CAAkB,wBAAlB,EAA4C,IAA5C,EAAkDwiB,KAAlD,EACI,KAAKpkB,aADT;AAEH;AACD,4BAAI,oBAAQi/B,KAAR,CAAJ,EAAoB;AAChBp/B,sCAASo/B,KAAT;AACH,yBAFD,MAEO;AACHA,oCAAQ,uBAAUA,KAAV,EAAiB,KAAKniC,aAAtB,CAAR;AACA+C,sCAASo/B,MAAM54B,KAAN,CAAY,MAAM,KAAKU,UAAX,GAAwB,GAApC,CAAT;AACH;;AAED,6BAAK7O,OAAL,CAAa0J,IAAb,CAAkB,0BAAlB,EAA8C,IAA9C,EAAoDwiB,KAApD,EAA2DvkB,OAA3D;AACH;AACJ;;AAED;;;;;;;qCAIaqR,G,EAAK;AACd,gBAAI,CAAC,KAAKkC,YAAV,EAAwB;AACpB;AACH;AACDlC,kBAAMA,OAAO,KAAK9N,GAAL,EAAb;;AAEA,gBAAI87B,SAAS,KAAK56B,OAAlB;AACA,gBAAImP,YAAY,KAAKA,SAArB;AACA,gBAAI0rB,UAAU,cAAIjuB,GAAJ,EAAS,KAAT,CAAd;AACA,gBAAIN,eAAeuuB,QAAQprC,MAAR,GAAiB,CAApC;AACA,gBAAIqrC,OAAO,CAACxuB,YAAD,GAAgB5c,IAAIqrC,sBAAJ,EAAhB,GAA+C,IAA1D;AACA,iBAAK,IAAIr7B,IAAI,CAAb,EAAgBA,IAAIk7B,MAApB,EAA4Bl7B,GAA5B,EAAiC;AAC7B,oBAAI1F,YAAJ;AACA,oBAAIsS,YAAJ,EAAkB;AACdtS,0BAAM6gC,QAAQn7B,CAAR,CAAN;AACH,iBAFD,MAEO;AACH1F,0BAAM,oBAAU,KAAV,CAAN;AACA8gC,yBAAKtoC,WAAL,CAAiBwH,GAAjB;AACH;AACDA,oBAAIkH,KAAJ,CAAU4J,KAAV,GAAkBqE,UAAUzP,CAAV,CAAlB;AACH;AACD,gBAAI,CAAC4M,YAAL,EAAmB;AACfM,oBAAIM,YAAJ,CAAiB4tB,IAAjB,EAAuBluB,IAAIlD,UAA3B;AACH;AACJ;;AAED;;;;;;4CAGoB;AAChB,gBAAI,CAAC,KAAK9J,cAAV,EAA0B;AACtB;AACH;AACD,gBAAIb,SAAS,KAAKC,SAAL,CAAe,IAAf,CAAb;AACA,iBAAK,IAAI/O,IAAI,CAAR,EAAW8e,MAAM,KAAKlP,WAAL,CAAiBpQ,MAAvC,EAA+CQ,IAAI8e,GAAnD,EAAwD9e,GAAxD,EAA6D;AACzD,oBAAIyf,MAAM,KAAK7P,WAAL,CAAiB5P,CAAjB,CAAV;AACA;AACA,oBAAIyf,OAAO3Q,MAAX,EAAmB;AACf,yBAAK83B,WAAL,CAAiBnnB,GAAjB,EAAsB,IAAtB;AACH;AACJ;AACJ;;AAED;;;;;;uCAGe;AACX,gBAAI,CAAC,KAAK/C,OAAV,EAAmB;AACf;AACH;;AAED,iBAAK/Y,OAAL,CAAa0J,IAAb,CAAkB,yBAAlB,EAA6C,IAA7C;AACA,iBAAK8yB,aAAL,CAAmB,IAAnB,EAAyB,KAAKtc,eAAL,EAAzB;;AAEA,iBAAK,IAAI7jB,IAAI,CAAR,EAAW8e,MAAM,KAAKzQ,MAAL,CAAY7O,MAAlC,EAA0CQ,IAAI8e,GAA9C,EAAmD9e,GAAnD,EAAwD;AACpD,qBAAKw3B,cAAL,CAAoBx3B,CAApB,EAAuB,EAAvB;AACH;;AAED,iBAAKuN,MAAL;;AAEA,iBAAK8yB,YAAL,CAAkB,IAAlB;AACA,iBAAK18B,OAAL,CAAa0J,IAAb,CAAkB,wBAAlB,EAA4C,IAA5C;AACH;;AAED;;;;;;;4CAIoB;AAChB,mBAAO,KAAK8B,cAAZ;AACH;;AAED;;;;;;;0CAIkB47B,Q,EAAU;AACxB,iBAAK57B,cAAL,GAAsB47B,QAAtB;AACH;;AAED;;;;;;;;qDAK0C;AAAA,gBAAfA,QAAe,uEAAJ,EAAI;;AACtC,gBAAIngC,MAAMmgC,SAASj5B,KAAT,CAAe,GAAf,EAAoB,CAApB,CAAV;AACAlH,kBAAMA,IAAIkH,KAAJ,CAAU,KAAKsN,OAAf,EAAwB,CAAxB,CAAN;AACA,mBAAO3Q,SAAS7D,GAAT,EAAc,EAAd,CAAP;AACH;;AAED;;;;;;;;;sCAMcP,Q,EAAU;AACpB,wBAAU,KAAK+U,OAAf,GAAyB/U,QAAzB,SAAqC,KAAK5H,EAA1C;AACH;;AAED;;;;;;;uCAIe4H,Q,EAAU;AACrB,gBAAI,oBAAQA,QAAR,CAAJ,EAAuB;AACnB;AACH;AACD,iBAAK64B,iBAAL,CAAuB,KAAK8H,WAAL,CAAiB3gC,QAAjB,CAAvB;AACH;;AAED;;;;;;;sCAIc;AACV,gBAAI,CAAC,KAAKoB,aAAN,IAAuB,CAAC,KAAK0D,cAAjC,EAAiD;AAC7C;AACH;AACD,gBAAI87B,QAAQ,KAAKn9B,gBAAL,gBAA8B,IAA9B,CAAZ;AAAA,gBACIo9B,QAAQ,KAAKp9B,gBAAL,kBAAgC,IAAhC,CADZ;AAAA,gBAEIq9B,QAAQ,KAAKr9B,gBAAL,mBAAiC,IAAjC,CAFZ;AAAA,gBAGIge,WAAWmf,MAAMp3B,MAAN,CAAaq3B,KAAb,CAHf;AAIApf,uBAAWA,SAASjY,MAAT,CAAgBs3B,KAAhB,CAAX;;AAEA,gBAAIj8B,YAAY,KAAKG,0BAAL,CAAgC,KAAKF,cAArC,CAAhB;;AAEA,iBAAK,IAAInP,IAAI,CAAR,EAAW8e,MAAMgN,SAAStsB,MAA/B,EAAuCQ,IAAI8e,GAA3C,EAAgD9e,GAAhD,EAAqD;AACjD,oBAAIqL,SAASygB,SAAS9rB,CAAT,CAAb;AACA,oBAAIorC,SAAS,cAAI,KAAK/8B,MAAL,CAAYhD,MAAZ,CAAJ,CAAb;AACA,oBAAIggC,mBAAmB,KAAK7B,cAAL,CAAoBn+B,MAApB,CAAvB;;AAEA;AACA;AACA,oBAAI6D,cAAc7D,MAAd,IACC,KAAK/E,MAAL,IAAe2kC,MAAMxgC,OAAN,CAAcY,MAAd,MAA0B,CAAC,CAA1C,IACG6D,cAAc7D,MAFlB,IAGC,CAAC,KAAK/E,MAAN,KAAiB6kC,MAAM1gC,OAAN,CAAcY,MAAd,MAA0B,CAAC,CAA3B,IACd6/B,MAAMzgC,OAAN,CAAcY,MAAd,MAA0B,CAAC,CAD9B,CAHD,IAKAggC,qBAAqB,KAAKj6B,kBAAL,CAAwB/F,MAAxB,CALzB,EAK0D;;AAEtD;AACA,wBAAI,KAAKmC,eAAT,EAA0B;AACtB,4BAAI2G,OAAO,oBAAU,KAAK/C,kBAAL,CAAwB/F,MAAxB,CAAV,EAA2C,EAA3C,CAAX;AACA+/B,+BAAO57B,SAAP,GAAmB,EAAnB;AACA47B,+BAAO7oC,WAAP,CAAmB4R,IAAnB;AACH;;AAED,wBAAIg3B,MAAM1gC,OAAN,CAAcY,MAAd,MAA0B,CAAC,CAA/B,EAAkC;AAC9B,6BAAK1H,OAAL,CAAa0J,IAAb,CAAkB,wBAAlB,EAA4C,IAA5C,EAAkDhC,MAAlD,EACI,IADJ;AAEH,qBAHD,MAGO;AACH,6BAAK1H,OAAL,CAAa0J,IAAb,CAAkB,qBAAlB,EAAyC,IAAzC,EAA+ChC,MAA/C,EACI,IADJ;AAEH;;AAED,yBAAKmsB,cAAL,CAAoBnsB,MAApB,EAA4BggC,gBAA5B;AACH;AACJ;AACJ;;AAED;;;;;;;;qCAKahhC,Q,EAAU;AACnB,gBAAI+oB,UAAU,KAAKxgB,aAAL,CAAmBvI,QAAnB,CAAd;AACA,mBAAO,KAAKuyB,eAAL,CAAqBvyB,QAArB,KAAkC,KAAK3B,UAAvC,IACH0qB,wBADJ;AAEH;;AAED;;;;;;;;mCAKW3b,Q,EAAU;AACjB,mBAAO,KAAKM,YAAL,GAAoBtN,OAApB,CAA4BgN,QAA5B,MAA0C,CAAC,CAAlD;AACH;;AAED;;;;;;;;uCAKeA,Q,EAAU;AACrB,gBAAIgI,MAAM,KAAK5Q,GAAL,GAAWD,IAAX,CAAgB6I,QAAhB,CAAV;AACA,mBAAO,KAAK4yB,aAAL,CAAmB5qB,GAAnB,MAA4B,EAAnC;AACH;;AAED;;;;;;;;;0CAMkBpV,Q,EAAU;AACxB,gBAAIihC,aAAa,KAAK3iC,gBAAtB;AACA,gBAAI,oBAAQ2iC,UAAR,CAAJ,EAAyB;AACrB,uBAAOA,WAAWjhC,QAAX,CAAP;AACH;AACD,mBAAOZ,QAAQ6hC,UAAR,CAAP;AACH;;AAED;;;;;;;;2CAKmBjhC,Q,EAAU;AACzB,gBAAIkhC,YAAY,KAAKvN,eAArB;AACA,gBAAI,oBAAQuN,SAAR,CAAJ,EAAwB;AACpB,uBAAOA,UAAUlhC,QAAV,CAAP;AACH;AACD,mBAAOkhC,SAAP;AACH;;AAED;;;;;;;;;mCAMWC,Q,EAA2B;AAAA,gBAAjB7kC,IAAiB,uEAAV,QAAU;;AAClC,gBAAI8kC,WAAW,KAAf;AAAA,gBACIC,OAAO/kC,SAAS,QAAT,GAAoB,KAApB,GAA4B,MADvC;AAAA,gBAEIglC,QAAQ,cAAIlsC,GAAJ,EAASkH,IAAT,CAFZ;AAGA,iBAAK,IAAI3G,IAAI,CAAR,EAAW8e,MAAM6sB,MAAMnsC,MAA5B,EAAoCQ,IAAI8e,GAAxC,EAA6C9e,GAA7C,EAAkD;AAC9C,oBAAI,oBAAQ2rC,MAAM3rC,CAAN,EAAS0rC,IAAT,CAAR,CAAJ,EAA6B;AACzB;AACH;AACD,oBAAIC,MAAM3rC,CAAN,EAAS0rC,IAAT,EAAejqC,KAAf,CAAqB+pC,QAArB,CAAJ,EAAoC;AAChCC,+BAAW,IAAX;AACA;AACH;AACJ;AACD,mBAAOA,QAAP;AACH;;AAED;;;;;;;;;;gCAOOG,M,EAAQJ,Q,EAAUK,Q,EAA2B;AAAA;;AAAA,gBAAjBllC,IAAiB,uEAAV,QAAU;;AAChD,gBAAI,KAAKo+B,UAAL,CAAgByG,QAAhB,EAA0B7kC,IAA1B,CAAJ,EAAqC;AACjC;AACH;AACD,gBAAI1D,IAAI,IAAR;AAAA,gBACI6oC,WAAW,KADf;AAAA,gBAEIC,aAFJ;AAAA,gBAGIC,OAAO,cAAIvsC,GAAJ,EAAS,MAAT,EAAiB,CAAjB,CAHX;;AAKA,gBAAIkH,KAAK6B,WAAL,OAAuB,MAA3B,EAAmC;AAC/BujC,uBAAO,oBAAU,MAAV,EACH,CAAC,IAAD,EAAOH,MAAP,CADG,EACa,CAAC,MAAD,EAAS,UAAT,CADb,EAEH,CAAC,KAAD,EAAQ,YAAR,CAFG,EAEoB,CAAC,MAAD,EAASJ,QAAT,CAFpB,CAAP;AAIH,aALD,MAKO;AACHO,uBAAO,oBAAU,QAAV,EACH,CAAC,IAAD,EAAOH,MAAP,CADG,EAEH,CAAC,MAAD,EAAS,iBAAT,CAFG,EAE0B,CAAC,KAAD,EAAQJ,QAAR,CAF1B,CAAP;AAIH;;AAED;AACAO,iBAAKE,MAAL,GAAcF,KAAKG,kBAAL,GAA0B,YAAM;AAC1C,oBAAI,CAACJ,QAAD,KACC,CAAC,QAAKK,UAAN,IAAoB,QAAKA,UAAL,KAAoB,QAAxC,IACG,QAAKA,UAAL,KAAoB,UAFxB,CAAJ,EAEyC;AACrCL,+BAAW,IAAX;AACA,wBAAI,OAAOD,QAAP,KAAoB,UAAxB,EAAoC;AAChCA,iCAAS7sC,IAAT,CAAc,IAAd,EAAoBiE,CAApB;AACH;AACJ;AACJ,aATD;AAUA8oC,iBAAKK,OAAL,GAAe,YAAY;AACvB,sBAAM,IAAIroC,KAAJ,kCAAyCynC,QAAzC,CAAN;AACH,aAFD;AAGAQ,iBAAKzpC,WAAL,CAAiBwpC,IAAjB;AACH;;AAED;;;;;;;wCAIgB;AACZ,mBAAO,KAAKnoC,WAAZ;AACH;;AAED;;;;;;;uCAIe;AACX,mBAAO,KAAKyK,MAAL,IAAe,EAAtB;AACH;;AAED;;;;;;;;qCAKag+B,M,EAAQ;AACjB,gBAAI,CAACA,MAAL,EAAa;AACT,uBAAO,KAAKv0B,cAAZ;AACH;;AAED,gBAAIhJ,SAAS,KAAKC,SAAL,CAAe,IAAf,CAAb;AACA,iBAAK+I,cAAL,GAAsB,EAAtB;AACA,iBAAK,IAAIrI,IAAI,KAAKC,MAAlB,EAA0BD,IAAIX,MAA9B,EAAsCW,GAAtC,EAA2C;AACvC,oBAAIqf,IAAI,KAAKjgB,GAAL,GAAWD,IAAX,CAAgBa,CAAhB,CAAR;AACA,oBAAI,CAAC,KAAKnJ,MAAV,EAAkB;AACd,wBAAI,KAAK+jC,aAAL,CAAmBvb,CAAnB,iBAAJ,EAAoC;AAChC,6BAAKhX,cAAL,CAAoB/L,IAApB,CAAyB+iB,EAAErX,QAA3B;AACH;AACJ,iBAJD,MAIO;AACH,wBAAIqX,EAAErhB,YAAF,CAAe,UAAf,MAA+B,MAA/B,IACAqhB,EAAErhB,YAAF,CAAe,UAAf,MAA+B,IADnC,EACyC;AACrC,6BAAKqK,cAAL,CAAoB/L,IAApB,CAAyB+iB,EAAErX,QAA3B;AACH;AACJ;AACJ;AACD,mBAAO,KAAKK,cAAZ;AACH;;AAED;;;;;;;6CAIqB;AACjB,mBAAO,KAAK+F,eAAZ;AACH;;AAED;;;;;;;6CAIqB;AACjB,mBAAO,KAAKc,UAAZ;AACH;;AAED;;;;;;;;2CAKmB;AACf,mBAAO,KAAKjP,MAAZ;AACH;;AAED;;;;;;;0CAIkB;AACd,gBAAIZ,SAAS,KAAKC,SAAL,CAAe,IAAf,CAAb;AACA,mBAAQD,SAAS,CAAjB;AACH;;AAED;;;;;;;;;gCAMQzE,Q,EAAsB;AAAA,gBAAZ0P,KAAY,uEAAJ,EAAI;;AAC1B,gBAAI,KAAKD,QAAL,CAActa,MAAd,KAAyB,CAA7B,EAAgC;AAC5B,uBAAO,KAAP;AACH;AACD,gBAAI0a,UAAU,KAAKJ,QAAL,CAAczP,QAAd,CAAd;AACA,gBAAI,kBAAM6P,OAAN,CAAJ,EAAoB;AAChBA,0BAAUA,QAAQvT,IAAlB;AACH;AACD,mBAAOoT,MAAMtP,OAAN,CAAcyP,OAAd,MAA2B,CAAC,CAAnC;AACH;;AAED;;;;;;;;yCAKiB7P,Q,EAAU;AACvB,gBAAIiiC,QAAQ,KAAK1mC,UAAL,GAAkB,KAAKq8B,GAAL,CAASr8B,UAAT,CAAoB6W,OAAtC,GAAgD,KAAK5N,GAAL,EAA5D;AACA,gBAAIiZ,QAAQ,cAAIwkB,KAAJ,EAAW,OAAX,CAAZ;AACA,gBAAIr0B,SAAS,KAAKgH,kBAAL,EAAb;AACA,gBAAIyH,eAAJ;AACA,gBAAIoB,MAAMtoB,MAAN,KAAiB,CAArB,EAAwB;AACpBknB,yBAAS4lB,MAAM19B,IAAN,CAAWqJ,MAAX,EAAmBpI,KAAnB,CAAyBxF,QAAzB,CAAT;AACH;AACD,gBAAIyd,MAAMtoB,MAAN,KAAiB,CAArB,EAAwB;AACpBknB,yBAASoB,MAAM,CAAN,EAASlZ,IAAT,CAAcqJ,MAAd,EAAsBpI,KAAtB,CAA4BxF,QAA5B,CAAT;AACH;AACD,mBAAOqc,MAAP;AACH;;AAED;;;;;;;;yCAK0C;AAAA,gBAA3BkjB,iBAA2B,uEAAP,KAAO;;AACtC,gBAAIG,UAAU,EAAd;AACA,iBAAK,IAAI/5B,IAAI,CAAb,EAAgBA,IAAI,KAAKD,OAAzB,EAAkCC,GAAlC,EAAuC;AACnC,oBAAI45B,qBAAqB,KAAKtF,YAAL,CAAkB,gBAAlB,CAAzB,EAA8D;AAC1D,wBAAI,KAAKlmB,SAAL,CAAe,gBAAf,EAAiC6rB,WAAjC,CAA6Cj6B,CAA7C,CAAJ,EAAqD;AACjD;AACH;AACJ;AACD,oBAAI0W,SAAS,KAAKD,gBAAL,CAAsBzW,CAAtB,CAAb;AACA,oBAAIu8B,aAAa,2BAAiB7lB,MAAjB,CAAjB;AACAqjB,wBAAQh+B,IAAR,CAAawgC,UAAb;AACH;AACD,mBAAOxC,OAAP;AACH;;AAED;;;;;;;;sCAKc1/B,Q,EAAU;AACpB,gBAAI6P,UAAU,KAAK4a,GAAL,CAAS,SAASzqB,QAAlB,CAAd;AACA,mBAAO,CAAC6P,OAAD,kBAAmBA,QAAQ1R,WAAR,EAA1B;AACH;;AAED;;;;;;;8CAIsB;AAClB,mBAAO,KAAKuG,SAAL,CAAe,KAAf,CAAP;AACH;;AAED;;;;;;;;yCAK+B;AAAA,gBAAhBs9B,MAAgB,uEAAP,KAAO;;AAC3B,mBAAO,KAAKt0B,YAAL,CAAkBs0B,MAAlB,EAA0B7sC,MAAjC;AACH;;AAED;;;;;;;8BAIM;AACF,mBAAO,KAAKmd,GAAZ;AACH;;AAED;;;;;;;;;mCAMWtS,Q,EAAU;AACjB,gBAAIrB,UAAU,KAAKg4B,gBAAnB;AACA,gBAAI,KAAKn2B,OAAL,CAAaR,QAAb,EAAuB,yBAAvB,CAAJ,EAAgD;AAC5C,oBAAI6P,UAAU,KAAKJ,QAAL,CAAczP,QAAd,CAAd;AACA,oBAAI6P,QAAQE,cAAR,CAAuB,SAAvB,CAAJ,EAAuC;AACnCpR,8BAAUkR,QAAQlR,OAAlB;AACH;AACJ;AACD,mBAAOA,OAAP;AACH;;AAED;;;;;;;iCAIS;AACL,mBAAO,KAAK8rB,GAAZ;AACH;;;;;;;;;;AChkGL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,eAAe,4BAA4B;AAC3C;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;;;;;;;AC3TA;;AAEA;AACA;AACA;;AAEA,6B;;;;;;;ACNA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,uC;;;;;;;ACnBA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,4B;;;;;;;ACVA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;ACzFA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,gC;;;;;;;ACVA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,uC;;;;;;;ACpCA;;AAEA;;AAEA;;AAEA;AACA;AACA,0CAA0C;AAC1C;;AAEA,8B;;;;;;;ACXA;;AAEA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wB;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;ACNA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kC;;;;;;;ACfA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;;ACZA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,uC;;;;;;;ACtBA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4C;;;;;;;ACrBA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8C;;;;;;;ACtBA;;AAEA;AACA;AACA;;AAEA,8B;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACdA;;AAEA;;AAEA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACvBA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,6B;;;;;;;ACVA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;;ACRA;;AAEA;AACA;AACA;;AAEA,sB;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACRA;;AAEA,sB;;;;;;;ACFA;;AAEA,kF;;;;;;;ACFA;;AAEA,2B;;;;;;;ACFA;;AAEA,sBAAsB,OAAO,IAAI,KAAK,iB;;;;;;;ACFtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,E;;;;;;;ACrCA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACZA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,oC;;;;;;;ACbA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+C;;;;;;;ACtBA;;AAEA;;AAEA;;AAEA,6C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA,8B;;;;;;;ACJA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,kC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,mC;;;;;;;ACfA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,wC;;;;;;;ACbA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,yC;;;;;;;ACrBA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,mC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,gC;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,8C;;;;;;;AChBA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,0C;;;;;;;ACfA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,uC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,sC;;;;;;;ACfA;;AAEA;AACA;;AAEA,sC;;;;;;;ACLA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,yC;;;;;;;ACbA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,0C;;;;;;;ACZA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,uC;;;;;;;ACbA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wC;;;;;;;ACpMA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sC;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oEAAoE,eAAe;AACnF;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;;AAEA,sC;;;;;;;AC1DA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,wC;;;;;;;ACrCA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,sC;;;;;;;ACvBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,qC;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,gD;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4B;;;;;;;AClBA;;AAEA;AACA;AACA;;AAEA,gC;;;;;;;ACNA;;AAEA;;AAEA;AACA;AACA;;AAEA,iC;;;;;;;ACRA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,wC;;;;;;;AC9BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA,0C;;;;;;;ACZA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;;ACVA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,8B;;;;;;;ACXA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,8B;;;;;;;ACZA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oC;;;;;;;ACXA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,kC;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA,wBAAwB,MAAM,KAAK,OAAO;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM,EAAE,KAAK,KAAK,OAAO,OAAO,OAAO;AACzD,SAAS;AACT,kBAAkB,KAAK,QAAQ,OAAO,QAAQ,OAAO,IAAI,MAAM,GAAG,KAAK;AACvE,SAAS;AACT,kBAAkB,KAAK,QAAQ,OAAO,QAAQ,OAAO;AACrD;AACA;AACA;;AAEA;AACA,oBAAoB,EAAE,EAAE,KAAK,IAAI,QAAQ,OAAO,MAAM,SAAS;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,wBAAwB,KAAK;AAC7B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,KAAK;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,KAAK;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,8B;;;;;;;ACtgBA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sC;;;;;;;ACnBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,2C;;;;;;;ACjBA;;AAEA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,0C;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,6B;;;;;;;AC7BA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;;ACtBA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,uB;;;;;;;ACTA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,6C;;;;;;;ACZA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iC;;;;;;;ACTA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,6C;;;;;;;ACZA;;AAEA;;AAEA;AACA;AACA;;AAEA,0B;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;ACRA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,+B;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,oC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,qC;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,sC;;;;;;;ACvBA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uC;;;;;;;ACdA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,mC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,kC;;;;;;;ACbA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,oC;;;;;;;ACbA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,gC;;;;;;;ACZA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,gD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,8C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,8C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED,kC;;;;;;;ACXA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,qC;;;;;;;ACbA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,uC;;;;;;;ACdA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,yC;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kC;;;;;;;ACnBA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;A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;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa,MAAM;AACnB,GAAG;AACH;AACA;AACA,aAAa,KAAK;AAClB,GAAG;AACH;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA,kC;;;;;;;ACtUA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;ACRA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mC;;;;;;;ACbA;;AAEA,sBAAsB,EAAE,a;;;;;;;ACFxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,E;;;;;;;AChKA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;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EA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED,uC;;;;;;;ACfA;;AAEA;;AAEA;;AAEA,mC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,+C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,6C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,gD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,iD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,gD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,8C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,iD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,kD;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,6C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,qC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,4C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,6C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,mC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,mC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,wC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,sC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,yC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,uC;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,0C;;;;;;;ACNA;;AAEA;;AAEA;;AAEA,2C;;;;;;;ACNA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,8C;;;;;;;ACfA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,8C;;;;;;;ACdA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED;AACA,iD;;;;;;;ACpBA;;AAEA;;AAEA;AACA,6C;;;;;;;ACLA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,8C;;;;;;;ACfA;;AAEA;;AAEA;AACA,8C;;;;;;;ACLA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;ACzBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,qC;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,2C;;;;;;;ACvCA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,qC;;;;;;;ACXA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,8B;;;;;;;ACTA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,4C;;;;;;;ACVA;;AAEA;;AAEA;AACA;AACA;;AAEA,iC;;;;;;;ACRA;;AAEA;;AAEA;AACA;AACA;;AAEA,iC;;;;;;;ACRA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oC;;;;;;;ACVA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,4B;;;;;;;ACpBA;;AAEA;AACA;AACA;;AAEA,oC;;;;;;;ACNA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,kD;;;;;;;ACpBA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,gD;;;;;;;ACfA;;AAEA;;AAEA;AACA,qD;;;;;;;ACLA;;AAEA;;AAEA;AACA,gD;;;;;;;ACLA;;AAEA;;AAEA;AACA,+C;;;;;;;ACLA;;AAEA;;AAEA;AACA,gD;;;;;;;ACLA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,6C;;;;;;;ACpBA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,gD;;;;;;;ACfA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,iD;;;;;;;ACfA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,8C;;;;;;;ACjBA;;AAEA;;AAEA,oE;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sC;;;;;;;AChBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,E;;;;;;;ACRA;;AAEA;;AAEA,+D;;;;;;;ACJA;;AAEA;;AAEA;AACA,8C;;;;;;;ACLA;;AAEA;;AAEA;AACA,8C","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"0a3b38dd0c16526dcd8b\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 126);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8da88e076165adc2edf1","/*\n * Sugar v2.0.4\n *\n * Freely distributable and licensed under the MIT-style license.\n * Copyright (c) Andrew Plummer\n * https://sugarjs.com/\n *\n * ---------------------------- */\n(function() {\n 'use strict';\n\n /***\n * @module Core\n * @description Core functionality including the ability to define methods and\n * extend onto natives.\n *\n ***/\n\n // The global to export.\n var Sugar;\n\n // The name of Sugar in the global namespace.\n var SUGAR_GLOBAL = 'Sugar';\n\n // Natives available on initialization. Letting Object go first to ensure its\n // global is set by the time the rest are checking for chainable Object methods.\n var NATIVE_NAMES = 'Object Number String Array Date RegExp Function';\n\n // Static method flag\n var STATIC = 0x1;\n\n // Instance method flag\n var INSTANCE = 0x2;\n\n // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch.\n var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties);\n\n // The global context. Rhino uses a different \"global\" keyword so\n // do an extra check to be sure that it's actually the global context.\n var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this;\n\n // Is the environment node?\n var hasExports = typeof module !== 'undefined' && module.exports;\n\n // Whether object instance methods can be mapped to the prototype.\n var allowObjectPrototype = false;\n\n // A map from Array to SugarArray.\n var namespacesByName = {};\n\n // A map from [object Object] to namespace.\n var namespacesByClassString = {};\n\n // Defining properties.\n var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim;\n\n // A default chainable class for unknown types.\n var DefaultChainable = getNewChainableClass('Chainable');\n\n\n // Global methods\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n if (Sugar) {\n // Reuse already defined Sugar global object.\n return;\n }\n Sugar = function(arg) {\n forEachProperty(Sugar, function(sugarNamespace, name) {\n // Although only the only enumerable properties on the global\n // object are Sugar namespaces, environments that can't set\n // non-enumerable properties will step through the utility methods\n // as well here, so use this check to only allow true namespaces.\n if (hasOwn(namespacesByName, name)) {\n sugarNamespace.extend(arg);\n }\n });\n return Sugar;\n };\n if (hasExports) {\n module.exports = Sugar;\n } else {\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments.\n *\n * @example\n *\n * Sugar.Object.defineStaticPolyfill({\n * keys: function (obj) {\n * // get keys!\n * }\n * });\n *\n * @signature defineStaticPolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name], opts.methods, true, opts.last);\n return sugarNamespace;\n });\n\n /***\n * @method defineInstancePolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that are mapped onto the native prototype\n * if they do not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. This method differs from\n * `defineInstance` as there is no static signature (as the method\n * is mapped as-is to the native), so it should refer to its `this`\n * object.\n *\n * @example\n *\n * Sugar.Array.defineInstancePolyfill({\n * indexOf: function (arr, el) {\n * // index finding code here!\n * }\n * });\n *\n * @signature defineInstancePolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name].prototype, opts.methods, true, opts.last);\n // Map instance polyfills to chainable as well.\n forEachProperty(opts.methods, function(fn, methodName) {\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n return sugarNamespace;\n });\n\n /***\n * @method alias(toName, from)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Aliases one Sugar method to another.\n *\n * @example\n *\n * Sugar.Array.alias('all', 'every');\n *\n * @signature alias(toName, fn)\n * @param {string} toName - Name for new method.\n * @param {string|Function} from - Method to alias, or string shortcut.\n ***/\n setProperty(sugarNamespace, 'alias', function(name, source) {\n var method = typeof source === 'string' ? sugarNamespace[source] : source;\n setMethod(sugarNamespace, name, method);\n return sugarNamespace;\n });\n\n // Each namespace can extend only itself through its .extend method.\n setProperty(sugarNamespace, 'extend', extend);\n\n // Cache the class to namespace relationship for later use.\n namespacesByName[name] = sugarNamespace;\n namespacesByClassString['[object ' + name + ']'] = sugarNamespace;\n\n mapNativeToChainable(name);\n mapObjectChainablesToNamespace(sugarNamespace);\n\n\n // Export\n return Sugar[name] = sugarNamespace;\n }\n\n function setGlobalProperties() {\n setProperty(Sugar, 'extend', Sugar);\n setProperty(Sugar, 'toString', toString);\n setProperty(Sugar, 'createNamespace', createNamespace);\n\n setProperty(Sugar, 'util', {\n 'hasOwn': hasOwn,\n 'getOwn': getOwn,\n 'setProperty': setProperty,\n 'classToString': classToString,\n 'defineProperty': defineProperty,\n 'forEachProperty': forEachProperty,\n 'mapNativeToChainable': mapNativeToChainable\n });\n }\n\n function toString() {\n return SUGAR_GLOBAL;\n }\n\n\n // Defining Methods\n\n function defineMethods(sugarNamespace, methods, type, args, flags) {\n forEachProperty(methods, function(method, methodName) {\n var instanceMethod, staticMethod = method;\n if (args) {\n staticMethod = wrapMethodWithArguments(method);\n }\n if (flags) {\n staticMethod.flags = flags;\n }\n\n // A method may define its own custom implementation, so\n // make sure that's not the case before creating one.\n if (type & INSTANCE && !method.instance) {\n instanceMethod = wrapInstanceMethod(method, args);\n setProperty(staticMethod, 'instance', instanceMethod);\n }\n\n if (type & STATIC) {\n setProperty(staticMethod, 'static', true);\n }\n\n setMethod(sugarNamespace, methodName, staticMethod);\n\n if (sugarNamespace.active) {\n // If the namespace has been activated (.extend has been called),\n // then map this method as well.\n sugarNamespace.extend(methodName);\n }\n });\n }\n\n function collectDefineOptions(arg1, arg2, arg3) {\n var methods, last;\n if (typeof arg1 === 'string') {\n methods = {};\n methods[arg1] = arg2;\n last = arg3;\n } else {\n methods = arg1;\n last = arg2;\n }\n return {\n last: last,\n methods: methods\n };\n }\n\n function wrapInstanceMethod(fn, args) {\n return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn);\n }\n\n function wrapMethodWithArguments(fn, instance) {\n // Functions accepting enumerated arguments will always have \"args\" as the\n // last argument, so subtract one from the function length to get the point\n // at which to start collecting arguments. If this is an instance method on\n // a prototype, then \"this\" will be pushed into the arguments array so start\n // collecting 1 argument earlier.\n var startCollect = fn.length - 1 - (instance ? 1 : 0);\n return function() {\n var args = [], collectedArgs = [], len;\n if (instance) {\n args.push(this);\n }\n len = Math.max(arguments.length, startCollect);\n // Optimized: no leaking arguments\n for (var i = 0; i < len; i++) {\n if (i < startCollect) {\n args.push(arguments[i]);\n } else {\n collectedArgs.push(arguments[i]);\n }\n }\n args.push(collectedArgs);\n return fn.apply(this, args);\n };\n }\n\n function wrapInstanceMethodFixed(fn) {\n switch(fn.length) {\n // Wrapped instance methods will always be passed the instance\n // as the first argument, but requiring the argument to be defined\n // may cause confusion here, so return the same wrapped function regardless.\n case 0:\n case 1:\n return function() {\n return fn(this);\n };\n case 2:\n return function(a) {\n return fn(this, a);\n };\n case 3:\n return function(a, b) {\n return fn(this, a, b);\n };\n case 4:\n return function(a, b, c) {\n return fn(this, a, b, c);\n };\n case 5:\n return function(a, b, c, d) {\n return fn(this, a, b, c, d);\n };\n }\n }\n\n // Method helpers\n\n function extendNative(target, source, polyfill, override) {\n forEachProperty(source, function(method, name) {\n if (polyfill && !override && target[name]) {\n // Method exists, so bail.\n return;\n }\n setProperty(target, name, method);\n });\n }\n\n function setMethod(sugarNamespace, methodName, method) {\n sugarNamespace[methodName] = method;\n if (method.instance) {\n defineChainableMethod(sugarNamespace, methodName, method.instance, true);\n }\n }\n\n\n // Chainables\n\n function getNewChainableClass(name) {\n var fn = function SugarChainable(obj, arg) {\n if (!(this instanceof fn)) {\n return new fn(obj, arg);\n }\n if (this.constructor !== fn) {\n // Allow modules to define their own constructors.\n obj = this.constructor.apply(obj, arguments);\n }\n this.raw = obj;\n };\n setProperty(fn, 'toString', function() {\n return SUGAR_GLOBAL + name;\n });\n setProperty(fn.prototype, 'valueOf', function() {\n return this.raw;\n });\n return fn;\n }\n\n function defineChainableMethod(sugarNamespace, methodName, fn) {\n var wrapped = wrapWithChainableResult(fn), existing, collision, dcp;\n dcp = DefaultChainable.prototype;\n existing = dcp[methodName];\n\n // If the method was previously defined on the default chainable, then a\n // collision exists, so set the method to a disambiguation function that will\n // lazily evaluate the object and find it's associated chainable. An extra\n // check is required to avoid false positives from Object inherited methods.\n collision = existing && existing !== Object.prototype[methodName];\n\n // The disambiguation function is only required once.\n if (!existing || !existing.disambiguate) {\n dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped;\n }\n\n // The target chainable always receives the wrapped method. Additionally,\n // if the target chainable is Sugar.Object, then map the wrapped method\n // to all other namespaces as well if they do not define their own method\n // of the same name. This way, a Sugar.Number will have methods like\n // isEqual that can be called on any object without having to traverse up\n // the prototype chain and perform disambiguation, which costs cycles.\n // Note that the \"if\" block below actually does nothing on init as Object\n // goes first and no other namespaces exist yet. However it needs to be\n // here as Object instance methods defined later also need to be mapped\n // back onto existing namespaces.\n sugarNamespace.prototype[methodName] = wrapped;\n if (sugarNamespace === Sugar.Object) {\n mapObjectChainableToAllNamespaces(methodName, wrapped);\n }\n }\n\n function mapObjectChainablesToNamespace(sugarNamespace) {\n forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) {\n if (typeof val === 'function') {\n setObjectChainableOnNamespace(sugarNamespace, methodName, val);\n }\n });\n }\n\n function mapObjectChainableToAllNamespaces(methodName, fn) {\n forEachProperty(namespacesByName, function(sugarNamespace) {\n setObjectChainableOnNamespace(sugarNamespace, methodName, fn);\n });\n }\n\n function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) {\n var proto = sugarNamespace.prototype;\n if (!hasOwn(proto, methodName)) {\n proto[methodName] = fn;\n }\n }\n\n function wrapWithChainableResult(fn) {\n return function() {\n return new DefaultChainable(fn.apply(this.raw, arguments));\n };\n }\n\n function disambiguateMethod(methodName) {\n var fn = function() {\n var raw = this.raw, sugarNamespace, fn;\n if (raw != null) {\n // Find the Sugar namespace for this unknown.\n sugarNamespace = namespacesByClassString[classToString(raw)];\n }\n if (!sugarNamespace) {\n // If no sugarNamespace can be resolved, then default\n // back to Sugar.Object so that undefined and other\n // non-supported types can still have basic object\n // methods called on them, such as type checks.\n sugarNamespace = Sugar.Object;\n }\n\n fn = new sugarNamespace(raw)[methodName];\n\n if (fn.disambiguate) {\n // If the method about to be called on this chainable is\n // itself a disambiguation method, then throw an error to\n // prevent infinite recursion.\n throw new TypeError('Cannot resolve namespace for ' + raw);\n }\n\n return fn.apply(this, arguments);\n };\n fn.disambiguate = true;\n return fn;\n }\n\n function mapNativeToChainable(name, methodNames) {\n var sugarNamespace = namespacesByName[name],\n nativeProto = globalContext[name].prototype;\n\n if (!methodNames && ownPropertyNames) {\n methodNames = ownPropertyNames(nativeProto);\n }\n\n forEachProperty(methodNames, function(methodName) {\n if (nativeMethodProhibited(methodName)) {\n // Sugar chainables have their own constructors as well as \"valueOf\"\n // methods, so exclude them here. The __proto__ argument should be trapped\n // by the function check below, however simply accessing this property on\n // Object.prototype causes QML to segfault, so pre-emptively excluding it.\n return;\n }\n try {\n var fn = nativeProto[methodName];\n if (typeof fn !== 'function') {\n // Bail on anything not a function.\n return;\n }\n } catch (e) {\n // Function.prototype has properties that\n // will throw errors when accessed.\n return;\n }\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n }\n\n function nativeMethodProhibited(methodName) {\n return methodName === 'constructor' ||\n methodName === 'valueOf' ||\n methodName === '__proto__';\n }\n\n\n // Util\n\n // Internal references\n var ownPropertyNames = Object.getOwnPropertyNames,\n internalToString = Object.prototype.toString,\n internalHasOwnProperty = Object.prototype.hasOwnProperty;\n\n // Defining this as a variable here as the ES5 module\n // overwrites it to patch DONTENUM.\n var forEachProperty = function (obj, fn) {\n for(var key in obj) {\n if (!hasOwn(obj, key)) continue;\n if (fn.call(obj, obj[key], key, obj) === false) break;\n }\n };\n\n function definePropertyShim(obj, prop, descriptor) {\n obj[prop] = descriptor.value;\n }\n\n function setProperty(target, name, value, enumerable) {\n defineProperty(target, name, {\n value: value,\n enumerable: !!enumerable,\n configurable: true,\n writable: true\n });\n }\n\n // PERF: Attempts to speed this method up get very Heisenbergy. Quickly\n // returning based on typeof works for primitives, but slows down object\n // types. Even === checks on null and undefined (no typeof) will end up\n // basically breaking even. This seems to be as fast as it can go.\n function classToString(obj) {\n return internalToString.call(obj);\n }\n\n function hasOwn(obj, prop) {\n return !!obj && internalHasOwnProperty.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n if (hasOwn(obj, prop)) {\n return obj[prop];\n }\n }\n\n setupGlobal();\n\n}).call(this);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-core/sugar-core.js\n// module id = 0\n// module chunks = 1","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildNumberUnitMethodsCall.js\n// module id = 1\n// module chunks = 1","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildDateUnitMethodsCall.js\n// module id = 2\n// module chunks = 1","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject'),\n coreUtilityAliases = require('./coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nvar isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\nfunction buildClassChecks() {\n\n var knownTypes = {};\n\n function addCoreTypes() {\n\n var names = spaceSplit(NATIVE_TYPES);\n\n isBoolean = buildPrimitiveClassCheck(names[0]);\n isNumber = buildPrimitiveClassCheck(names[1]);\n isString = buildPrimitiveClassCheck(names[2]);\n\n isDate = buildClassCheck(names[3]);\n isRegExp = buildClassCheck(names[4]);\n\n // Wanted to enhance performance here by using simply \"typeof\"\n // but Firefox has two major issues that make this impossible,\n // one fixed, the other not, so perform a full class check here.\n //\n // 1. Regexes can be typeof \"function\" in FF < 3\n // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed)\n //\n // 2. HTMLEmbedElement and HTMLObjectElement are be typeof \"function\"\n // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix)\n isFunction = buildClassCheck(names[5]);\n\n\n isArray = Array.isArray || buildClassCheck(names[6]);\n isError = buildClassCheck(names[7]);\n\n isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set);\n isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map);\n\n // Add core types as known so that they can be checked by value below,\n // notably excluding Functions and adding Arguments and Error.\n addKnownType('Arguments');\n addKnownType(names[0]);\n addKnownType(names[1]);\n addKnownType(names[2]);\n addKnownType(names[3]);\n addKnownType(names[4]);\n addKnownType(names[6]);\n\n }\n\n function addArrayTypes() {\n var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64';\n forEach(spaceSplit(types), function(str) {\n addKnownType(str + 'Array');\n });\n }\n\n function addKnownType(className) {\n var str = '[object '+ className +']';\n knownTypes[str] = true;\n }\n\n function isKnownType(className) {\n return knownTypes[className];\n }\n\n function buildClassCheck(className, globalObject) {\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n function getConstructorClassCheck(obj) {\n var ctorStr = String(obj);\n return function(obj) {\n return String(obj.constructor) === ctorStr;\n };\n }\n\n function getToStringClassCheck(className) {\n return function(obj, str) {\n // perf: Returning up front on instanceof appears to be slower.\n return isClass(obj, className, str);\n };\n }\n\n function buildPrimitiveClassCheck(className) {\n var type = className.toLowerCase();\n return function(obj) {\n var t = typeof obj;\n return t === type || t === 'object' && isClass(obj, className);\n };\n }\n\n addCoreTypes();\n addArrayTypes();\n\n isSerializable = function(obj, className) {\n // Only known objects can be serialized. This notably excludes functions,\n // host objects, Symbols (which are matched by reference), and instances\n // of classes. The latter can arguably be matched by value, but\n // distinguishing between these and host objects -- which should never be\n // compared by value -- is very tricky so not dealing with it here.\n className = className || classToString(obj);\n return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/classChecks.js\n// module id = 3\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addLocale.js\n// module id = 4\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DateUnitIndexes.js\n// module id = 5\n// module chunks = 1","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj objue\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/types.js","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/mathAliases.js\n// module id = 7\n// module chunks = 1","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LocaleHelpers.js\n// module id = 8\n// module chunks = 1","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue]\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/dom.js","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n hasOwn: Sugar.util.hasOwn,\n getOwn: Sugar.util.getOwn,\n setProperty: Sugar.util.setProperty,\n classToString: Sugar.util.classToString,\n defineProperty: Sugar.util.defineProperty,\n forEachProperty: Sugar.util.forEachProperty,\n mapNativeToChainable: Sugar.util.mapNativeToChainable\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/coreUtilityAliases.js\n// module id = 10\n// module chunks = 1","\r\nconst NOTIMPLEMENTED = 'Not implemented.';\r\n\r\n/**\r\n * Base class defining the interface of a TableFilter feature\r\n */\r\nexport class Feature {\r\n /**\r\n * Creates an instance of Feature\r\n * @param {Object} tf TableFilter instance\r\n * @param {String} feature Feature name known by TableFilter\r\n */\r\n constructor(tf, feature) {\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * Feature name\r\n * @type {String}\r\n */\r\n this.feature = feature;\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOTIMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOTIMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/feature.js","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/buildRelativeAliasesCall.js\n// module id = 12\n// module chunks = 1","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction Range(start, end) {\n this.start = cloneRangeMember(start);\n this.end = cloneRangeMember(end);\n}\n\nmodule.exports = Range;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/Range.js\n// module id = 13\n// module chunks = 1","import {DateType} from './modules/dateType';\r\nimport {Help} from './modules/help';\r\nimport {State} from './modules/state';\r\nimport {GridLayout} from './modules/gridLayout';\r\nimport {Loader} from './modules/loader';\r\nimport {HighlightKeyword} from './modules/highlightKeywords';\r\nimport {PopupFilter} from './modules/popupFilter';\r\nimport {MarkActiveColumns} from './modules/markActiveColumns';\r\nimport {RowsCounter} from './modules/rowsCounter';\r\nimport {StatusBar} from './modules/statusBar';\r\nimport {ClearButton} from './modules/clearButton';\r\nimport {AlternateRows} from './modules/alternateRows';\r\nimport {NoResults} from './modules/noResults';\r\nimport {Paging} from './modules/paging';\r\n\r\n/**\r\n * Filter types\r\n */\r\n\r\n/**\r\n * Input filter type\r\n * @type {String}\r\n */\r\nexport const INPUT = 'input';\r\n/**\r\n * Select filter type\r\n * @type {String}\r\n */\r\nexport const SELECT = 'select';\r\n/**\r\n * Multiple select filter type\r\n * @type {String}\r\n */\r\nexport const MULTIPLE = 'multiple';\r\n/**\r\n * Checklist filter type\r\n * @type {String}\r\n */\r\nexport const CHECKLIST = 'checklist';\r\n/**\r\n * None filter type\r\n * @type {String}\r\n */\r\nexport const NONE = 'none';\r\n\r\n/**\r\n * Key codes\r\n */\r\n\r\n/**\r\n * Enter key code\r\n * @type {Number}\r\n */\r\nexport const ENTER_KEY = 13;\r\n/**\r\n * Tab key code\r\n * @type {Number}\r\n */\r\nexport const TAB_KEY = 9;\r\n/**\r\n * Escape key code\r\n * @type {Number}\r\n */\r\nexport const ESC_KEY = 27;\r\n/**\r\n * Up arrow key code\r\n * @type {Number}\r\n */\r\nexport const UP_ARROW_KEY = 38;\r\n/**\r\n * Down arrow key code\r\n * @type {Number}\r\n */\r\nexport const DOWN_ARROW_KEY = 40;\r\n\r\n/**\r\n * HTML tags\r\n */\r\n\r\n/**\r\n * Header cell tag\r\n * @type {String}\r\n */\r\nexport const HEADER_TAG = 'TH';\r\n/**\r\n * Cell tag\r\n * @type {String}\r\n */\r\nexport const CELL_TAG = 'TD';\r\n\r\n/**\r\n * Data types\r\n */\r\n\r\n/**\r\n * String\r\n * @type {String}\r\n */\r\nexport const STRING = 'string';\r\n\r\n/**\r\n * Number\r\n * @type {String}\r\n */\r\nexport const NUMBER = 'number';\r\n\r\n/**\r\n * Formatted number\r\n * @type {String}\r\n */\r\nexport const FORMATTED_NUMBER = 'formatted-number';\r\n\r\n/**\r\n * Date\r\n * @type {String}\r\n */\r\nexport const DATE = 'date';\r\n\r\n/**\r\n * IP address\r\n * @type {String}\r\n */\r\nexport const IP_ADDRESS = 'ipaddress';\r\n\r\n/**\r\n * Default values\r\n */\r\n\r\n/**\r\n * Auto filter delay in milliseconds\r\n * @type {Number}\r\n */\r\nexport const AUTO_FILTER_DELAY = 750;\r\n\r\n/**\r\n * TableFilter features definitions\r\n * @type {Object}\r\n */\r\nexport const FEATURES = {\r\n dateType: {\r\n class: DateType,\r\n name: 'dateType'\r\n },\r\n help: {\r\n class: Help,\r\n name: 'help',\r\n enforce: true\r\n },\r\n state: {\r\n class: State,\r\n name: 'state'\r\n },\r\n markActiveColumns: {\r\n class: MarkActiveColumns,\r\n name: 'markActiveColumns'\r\n },\r\n gridLayout: {\r\n class: GridLayout,\r\n name: 'gridLayout'\r\n },\r\n loader: {\r\n class: Loader,\r\n name: 'loader'\r\n },\r\n highlightKeyword: {\r\n class: HighlightKeyword,\r\n name: 'highlightKeyword',\r\n property: 'highlightKeywords'\r\n },\r\n popupFilter: {\r\n class: PopupFilter,\r\n name: 'popupFilter',\r\n property: 'popupFilters'\r\n },\r\n rowsCounter: {\r\n class: RowsCounter,\r\n name: 'rowsCounter'\r\n },\r\n statusBar: {\r\n class: StatusBar,\r\n name: 'statusBar'\r\n },\r\n clearButton: {\r\n class: ClearButton,\r\n name: 'clearButton',\r\n property: 'btnReset'\r\n },\r\n alternateRows: {\r\n class: AlternateRows,\r\n name: 'alternateRows'\r\n },\r\n noResults: {\r\n class: NoResults,\r\n name: 'noResults'\r\n },\r\n paging: {\r\n class: Paging,\r\n name: 'paging'\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/const.js","/**\r\n * Export window or global object depending on the environment\r\n */\r\nexport const root = (typeof self === 'object' && self.self === self && self) ||\r\n (typeof global === 'object' && global.global === global && global) ||\r\n this;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/root.js","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineOnPrototype.js\n// module id = 16\n// module chunks = 1","import {root} from './root';\r\n\r\n/**\r\n * DOM event utilities\r\n */\r\n\r\n/**\r\n * Add event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const addEvt = (obj, type, func, capture) => {\r\n if (obj.addEventListener) {\r\n obj.addEventListener(type, func, capture);\r\n }\r\n else if (obj.attachEvent) {\r\n obj.attachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = func;\r\n }\r\n};\r\n\r\n/**\r\n * Remove event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const removeEvt = (obj, type, func, capture) => {\r\n if (obj.removeEventListener) {\r\n obj.removeEventListener(type, func, capture);\r\n } else if (obj.detachEvent) {\r\n obj.detachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Prevents further propagation of the current event in the bubbling phase\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const stopEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n};\r\n\r\n/**\r\n * Cancels the event if it is cancelable, without stopping further\r\n * propagation of the event.\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const cancelEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.preventDefault) {\r\n evt.preventDefault();\r\n } else {\r\n evt.returnValue = false;\r\n }\r\n};\r\n\r\n/**\r\n * Reference to the object that dispatched the event\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {DOMElement}\r\n */\r\nexport const targetEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n return evt.target || evt.srcElement;\r\n};\r\n\r\n/**\r\n * Returns the Unicode value of pressed key\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {Number}\r\n */\r\nexport const keyCode = (evt) => {\r\n return evt.charCode ? evt.charCode :\r\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/event.js","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/callDateGet.js\n// module id = 18\n// module chunks = 1","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/string.js","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekday.js\n// module id = 20\n// module chunks = 1","'use strict';\n\nvar privatePropertyAccessor = require('../internal/privatePropertyAccessor');\n\nmodule.exports = privatePropertyAccessor('utc');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/_utc.js\n// module id = 21\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n sugarObject: Sugar.Object,\n sugarArray: Sugar.Array,\n sugarDate: Sugar.Date,\n sugarString: Sugar.String,\n sugarNumber: Sugar.Number,\n sugarFunction: Sugar.Function,\n sugarRegExp: Sugar.RegExp\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/namespaceAliases.js\n// module id = 22\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('./mathAliases');\n\nvar ceil = mathAliases.ceil,\n floor = mathAliases.floor;\n\nvar trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n};\n\nmodule.exports = trunc;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/trunc.js\n// module id = 23\n// module chunks = 1","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getWeekday = require('./getWeekday'),\n classChecks = require('../../common/var/classChecks'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar isNumber = classChecks.isNumber,\n abs = mathAliases.abs;\n\nfunction setWeekday(d, dow, dir) {\n if (!isNumber(dow)) return;\n var currentWeekday = getWeekday(d);\n if (dir) {\n // Allow a \"direction\" parameter to determine whether a weekday can\n // be set beyond the current weekday in either direction.\n var ndir = dir > 0 ? 1 : -1;\n var offset = dow % 7 - currentWeekday;\n if (offset && offset / abs(offset) !== ndir) {\n dow += 7 * ndir;\n }\n }\n setDate(d, getDate(d) + dow - currentWeekday);\n return d.getTime();\n}\n\nmodule.exports = setWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setWeekday.js\n// module id = 24\n// module chunks = 1","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/build/buildDateRangeUnitsCall.js\n// module id = 25\n// module chunks = 1","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/forEach.js\n// module id = 26\n// module chunks = 1","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isDefined.js\n// module id = 27\n// module chunks = 1","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDate(d, options, forceClone) {\n return getExtendedDate(null, d, options, forceClone).date;\n}\n\nmodule.exports = createDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/createDate.js\n// module id = 28\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getMonth.js\n// module id = 29\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getYear.js\n// module id = 30\n// module chunks = 1","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DateUnits.js\n// module id = 31\n// module chunks = 1","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/callDateSet.js\n// module id = 32\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/cloneDate.js\n// module id = 33\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDate.js\n// module id = 34\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setDate.js\n// module id = 35\n// module chunks = 1","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setUnitAndLowerToEdge.js\n// module id = 36\n// module chunks = 1","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isUndefined.js\n// module id = 37\n// module chunks = 1","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/advanceDate.js\n// module id = 38\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getLowerUnitIndex.js\n// module id = 39\n// module chunks = 1","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getNewDate.js\n// module id = 40\n// module chunks = 1","'use strict';\n\nvar methodDefineAliases = require('../var/methodDefineAliases'),\n collectSimilarMethods = require('./collectSimilarMethods');\n\nvar defineInstance = methodDefineAliases.defineInstance;\n\nfunction defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n}\n\nmodule.exports = defineInstanceSimilar;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineInstanceSimilar.js\n// module id = 41\n// module chunks = 1","'use strict';\n\nvar simpleMerge = require('./simpleMerge');\n\nfunction simpleClone(obj) {\n return simpleMerge({}, obj);\n}\n\nmodule.exports = simpleClone;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleClone.js\n// module id = 42\n// module chunks = 1","'use strict';\n\nfunction spaceSplit(str) {\n return str.split(' ');\n}\n\nmodule.exports = spaceSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/spaceSplit.js\n// module id = 43\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n HALF_WIDTH_ZERO: 0x30,\n FULL_WIDTH_ZERO: 0xff10,\n HALF_WIDTH_PERIOD: '.',\n FULL_WIDTH_PERIOD: '.',\n HALF_WIDTH_COMMA: ',',\n OPEN_BRACE: '{',\n CLOSE_BRACE: '}'\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/CommonChars.js\n// module id = 44\n// module chunks = 1","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateIsValid.js\n// module id = 45\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n getDateParam = require('./getDateParam'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction iterateOverDateParams(params, fn, startIndex, endIndex) {\n\n function run(name, unit, i) {\n var val = getDateParam(params, name);\n if (isDefined(val)) {\n fn(name, val, unit, i);\n }\n }\n\n iterateOverDateUnits(function (unit, i) {\n var result = run(unit.name, unit, i);\n if (result !== false && i === DAY_INDEX) {\n // Check for \"weekday\", which has a distinct meaning\n // in the context of setting a date, but has the same\n // meaning as \"day\" as a unit of time.\n result = run('weekday', unit, i);\n }\n return result;\n }, startIndex, endIndex);\n\n}\n\nmodule.exports = iterateOverDateParams;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverDateParams.js\n// module id = 46\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToBeginningOfUnit(d, unitIndex, localeCode) {\n if (unitIndex === WEEK_INDEX) {\n moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = moveToBeginningOfUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToBeginningOfUnit.js\n// module id = 47\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) {\n if (unitIndex === WEEK_INDEX) {\n moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true);\n}\n\nmodule.exports = moveToEndOfUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToEndOfUnit.js\n// module id = 48\n// module chunks = 1","'use strict';\n\nfunction tzOffset(d) {\n return d.getTimezoneOffset();\n}\n\nmodule.exports = tzOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/tzOffset.js\n// module id = 49\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate'),\n setWeekday = require('./setWeekday'),\n mathAliases = require('../../common/var/mathAliases'),\n callDateGet = require('../../common/internal/callDateGet'),\n classChecks = require('../../common/var/classChecks'),\n resetLowerUnits = require('./resetLowerUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n getHigherUnitIndex = require('./getHigherUnitIndex'),\n callDateSetWithWeek = require('./callDateSetWithWeek'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX,\n round = mathAliases.round,\n isNumber = classChecks.isNumber;\n\nfunction updateDate(d, params, reset, advance, prefer, weekdayDir) {\n var upperUnitIndex;\n\n function setUpperUnit(unitName, unitIndex) {\n if (prefer && !upperUnitIndex) {\n if (unitName === 'weekday') {\n upperUnitIndex = WEEK_INDEX;\n } else {\n upperUnitIndex = getHigherUnitIndex(unitIndex);\n }\n }\n }\n\n function setSpecificity(unitIndex) {\n // Other functions may preemptively set the specificity before arriving\n // here so concede to them if they have already set more specific units.\n if (unitIndex > params.specificity) {\n return;\n }\n params.specificity = unitIndex;\n }\n\n function canDisambiguate() {\n if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) {\n return;\n }\n switch(prefer) {\n case -1: return d > getNewDate();\n case 1: return d < getNewDate();\n }\n }\n\n function disambiguateHigherUnit() {\n var unit = DateUnits[upperUnitIndex];\n advance = prefer;\n setUnit(unit.name, 1, unit, upperUnitIndex);\n }\n\n function handleFraction(unit, unitIndex, fraction) {\n if (unitIndex) {\n var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)];\n var val = round(unit.multiplier / lowerUnit.multiplier * fraction);\n params[lowerUnit.name] = val;\n }\n }\n\n function monthHasShifted(d, targetMonth) {\n if (targetMonth < 0) {\n targetMonth = targetMonth % 12 + 12;\n }\n return targetMonth % 12 !== getMonth(d);\n }\n\n function setUnit(unitName, value, unit, unitIndex) {\n var method = unit.method, checkMonth, fraction;\n\n setUpperUnit(unitName, unitIndex);\n setSpecificity(unitIndex);\n\n fraction = value % 1;\n if (fraction) {\n handleFraction(unit, unitIndex, fraction);\n value = trunc(value);\n }\n\n if (unitName === 'weekday') {\n if (!advance) {\n // Weekdays are always considered absolute units so simply set them\n // here even if it is an \"advance\" operation. This is to help avoid\n // ambiguous meanings in \"advance\" as well as to neatly allow formats\n // like \"Wednesday of next week\" without more complex logic.\n setWeekday(d, value, weekdayDir);\n }\n return;\n }\n checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28;\n\n // If we are advancing or rewinding, then we need we need to set the\n // absolute time if the unit is \"hours\" or less. This is due to the fact\n // that setting by method is ambiguous during DST shifts. For example,\n // 1:00am on November 1st 2015 occurs twice in North American timezones\n // with DST, the second time being after the clocks are rolled back at\n // 2:00am. When springing forward this is automatically handled as there\n // is no 2:00am so the date automatically jumps to 3:00am. However, when\n // rolling back, setHours(2) will always choose the first \"2am\" even if\n // the date is currently set to the second, causing unintended jumps.\n // This ambiguity is unavoidable when setting dates as the notation is\n // ambiguous. However when advancing, we clearly want the resulting date\n // to be an acutal hour ahead, which can only be accomplished by setting\n // the absolute time. Conversely, any unit higher than \"hours\" MUST use\n // the internal set methods, as they are ambiguous as absolute units of\n // time. Years may be 365 or 366 days depending on leap years, months are\n // all over the place, and even days may be 23-25 hours depending on DST\n // shifts. Finally, note that the kind of jumping described above will\n // occur when calling ANY \"set\" method on the date and will occur even if\n // the value being set is identical to the one currently set (i.e.\n // setHours(2) on a date at 2am may not be a noop). This is precarious,\n // so avoiding this situation in callDateSet by checking up front that\n // the value is not the same before setting.\n if (advance && !unit.ambiguous) {\n d.setTime(d.getTime() + (value * advance * unit.multiplier));\n return;\n } else if (advance) {\n if (unitIndex === WEEK_INDEX) {\n value *= 7;\n method = DateUnits[DAY_INDEX].method;\n }\n value = (value * advance) + callDateGet(d, method);\n }\n callDateSetWithWeek(d, method, value, advance);\n if (checkMonth && monthHasShifted(d, value)) {\n // As we are setting the units in reverse order, there is a chance that\n // our date may accidentally traverse into a new month, such as setting\n // { month: 1, date 15 } on January 31st. Check for this here and reset\n // the date to the last day of the previous month if this has happened.\n setDate(d, 0);\n }\n }\n\n if (isNumber(params) && advance) {\n // If param is a number and advancing, the number is in milliseconds.\n params = { millisecond: params };\n } else if (isNumber(params)) {\n // Otherwise just set the timestamp and return.\n d.setTime(params);\n return d;\n }\n\n iterateOverDateParams(params, setUnit);\n\n if (reset && params.specificity) {\n resetLowerUnits(d, params.specificity);\n }\n\n // If past or future is preferred, then the process of \"disambiguation\" will\n // ensure that an ambiguous time/date (\"4pm\", \"thursday\", \"June\", etc.) will\n // be in the past or future. Weeks are only considered ambiguous if there is\n // a weekday, i.e. \"thursday\" is an ambiguous week, but \"the 4th\" is an\n // ambiguous month.\n if (canDisambiguate()) {\n disambiguateHigherUnit();\n }\n return d;\n}\n\nmodule.exports = updateDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/updateDate.js\n// module id = 50\n// module chunks = 1","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeIsValid.js\n// module id = 51\n// module chunks = 1","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n .replace(/\\((.*)\\)/, '-$1') // replace bracketed values with negatives\r\n .replace(regex, '') // strip out any cruft\r\n .replace(decimal, '.') // make sure decimal point is standard\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/number.js","'use strict';\n\nfunction isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n}\n\nmodule.exports = isObjectType;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isObjectType.js\n// module id = 53\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../var/mathAliases'),\n repeatString = require('./repeatString');\n\nvar abs = mathAliases.abs;\n\nfunction padNumber(num, place, sign, base, replacement) {\n var str = abs(num).toString(base || 10);\n str = repeatString(replacement || '0', place - str.replace(/\\.\\d+/, '').length) + str;\n if (sign || num < 0) {\n str = (num < 0 ? '-' : '+') + str;\n }\n return str;\n}\n\nmodule.exports = padNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/padNumber.js\n// module id = 54\n// module chunks = 1","'use strict';\n\nfunction simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = simpleCapitalize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleCapitalize.js\n// module id = 55\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n}\n\nmodule.exports = simpleMerge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/simpleMerge.js\n// module id = 56\n// module chunks = 1","'use strict';\n\nvar EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getEnglishVariant.js\n// module id = 57\n// module chunks = 1","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n ParsingTokens = require('../var/ParsingTokens'),\n LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n tzOffset = require('./tzOffset'),\n resetTime = require('./resetTime'),\n isDefined = require('../../common/internal/isDefined'),\n setWeekday = require('./setWeekday'),\n updateDate = require('./updateDate'),\n getNewDate = require('./getNewDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n advanceDate = require('./advanceDate'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n deleteDateParam = require('./deleteDateParam'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getParsingTokenValue = require('./getParsingTokenValue'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n iterateOverDateParams = require('./iterateOverDateParams'),\n getYearFromAbbreviation = require('./getYearFromAbbreviation'),\n iterateOverHigherDateParams = require('./iterateOverHigherDateParams');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n English = LocaleHelpers.English,\n localeManager = LocaleHelpers.localeManager,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction getExtendedDate(contextDate, d, opt, forceClone) {\n\n var date, set, loc, options, afterCallbacks, relative, weekdayDir;\n\n afterCallbacks = [];\n options = getDateOptions(opt);\n\n function getDateOptions(opt) {\n var options = isString(opt) ? { locale: opt } : opt || {};\n options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past');\n return options;\n }\n\n function getFormatParams(match, dif) {\n var set = getOwn(options, 'params') || {};\n forEach(dif.to, function(field, i) {\n var str = match[i + 1], token, val;\n if (!str) return;\n if (field === 'yy' || field === 'y') {\n field = 'year';\n val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer'));\n } else if (token = getOwn(ParsingTokens, field)) {\n field = token.param || field;\n val = getParsingTokenValue(token, str);\n } else {\n val = loc.getTokenValue(field, str);\n }\n set[field] = val;\n });\n return set;\n }\n\n // Clone date will set the utc flag, but it will\n // be overriden later, so set option flags instead.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) {\n options.fromUTC = true;\n }\n if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) {\n options.setUTC = true;\n }\n if (clone) {\n d = new Date(d.getTime());\n }\n return d;\n }\n\n function afterDateSet(fn) {\n afterCallbacks.push(fn);\n }\n\n function fireCallbacks() {\n forEach(afterCallbacks, function(fn) {\n fn.call();\n });\n }\n\n function parseStringDate(str) {\n\n str = str.toLowerCase();\n\n // The act of getting the locale will initialize\n // if it is missing and add the required formats.\n loc = localeManager.get(getOwn(options, 'locale'));\n\n for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) {\n match = str.match(dif.reg);\n if (match) {\n\n // Note that caching the format will modify the compiledFormats array\n // which is not a good idea to do inside its for loop, however we\n // know at this point that we have a matched format and that we will\n // break out below, so simpler to do it here.\n loc.cacheFormat(dif, i);\n\n set = getFormatParams(match, dif);\n\n if (isDefined(set.timestamp)) {\n str = set.timestamp;\n set = null;\n break;\n }\n\n if (isDefined(set.ampm)) {\n handleAmpm(set.ampm);\n }\n\n if (set.utc || isDefined(set.tzHour)) {\n handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign);\n }\n\n if (isDefined(set.shift) && isUndefined(set.unit)) {\n // \"next january\", \"next monday\", etc\n handleUnitlessShift();\n }\n\n if (isDefined(set.num) && isUndefined(set.unit)) {\n // \"the second of January\", etc\n handleUnitlessNum(set.num);\n }\n\n if (set.midday) {\n // \"noon\" and \"midnight\"\n handleMidday(set.midday);\n }\n\n if (isDefined(set.day)) {\n // Relative day localizations such as \"today\" and \"tomorrow\".\n handleRelativeDay(set.day);\n }\n\n if (isDefined(set.unit)) {\n // \"3 days ago\", etc\n handleRelativeUnit(set.unit);\n }\n\n if (set.edge) {\n // \"the end of January\", etc\n handleEdge(set.edge, set);\n }\n\n if (set.yearSign) {\n set.year *= set.yearSign;\n }\n\n break;\n }\n }\n\n if (!set) {\n // Fall back to native parsing\n date = new Date(str);\n if (getOwn(options, 'fromUTC')) {\n // Falling back to system date here which cannot be parsed as UTC,\n // so if we're forcing UTC then simply add the offset.\n date.setTime(date.getTime() + (tzOffset(date) * MINUTES));\n }\n } else if (relative) {\n updateDate(date, set, false, 1);\n } else {\n if (_utc(date)) {\n // UTC times can traverse into other days or even months,\n // so preemtively reset the time here to prevent this.\n resetTime(date);\n }\n updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir);\n }\n fireCallbacks();\n return date;\n }\n\n function handleAmpm(ampm) {\n if (ampm === 1 && set.hour < 12) {\n // If the time is 1pm-11pm advance the time by 12 hours.\n set.hour += 12;\n } else if (ampm === 0 && set.hour === 12) {\n // If it is 12:00am then set the hour to 0.\n set.hour = 0;\n }\n }\n\n function handleTimezoneOffset(tzHour, tzMinute, tzSign) {\n // Adjust for timezone offset\n _utc(date, true);\n var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0));\n if (offset) {\n set.minute = (set.minute || 0) - offset;\n }\n }\n\n function handleUnitlessShift() {\n if (isDefined(set.month)) {\n // \"next January\"\n set.unit = YEAR_INDEX;\n } else if (isDefined(set.weekday)) {\n // \"next Monday\"\n set.unit = WEEK_INDEX;\n }\n }\n\n function handleUnitlessNum(num) {\n if (isDefined(set.weekday)) {\n // \"The second Tuesday of March\"\n setOrdinalWeekday(num);\n } else if (isDefined(set.month)) {\n // \"The second of March\"\n set.date = set.num;\n }\n }\n\n function handleMidday(hour) {\n set.hour = hour % 24;\n if (hour > 23) {\n // If the date has hours past 24, we need to prevent it from traversing\n // into a new day as that would make it being part of a new week in\n // ambiguous dates such as \"Monday\".\n afterDateSet(function() {\n advanceDate(date, 'date', trunc(hour / 24));\n });\n }\n }\n\n function handleRelativeDay() {\n resetTime(date);\n if (isUndefined(set.unit)) {\n set.unit = DAY_INDEX;\n set.num = set.day;\n delete set.day;\n }\n }\n\n function handleRelativeUnit(unitIndex) {\n var num = isDefined(set.num) ? set.num : 1;\n\n // If a weekday is defined, there are 3 possible formats being applied:\n //\n // 1. \"the day after monday\": unit is days\n // 2. \"next monday\": short for \"next week monday\", unit is weeks\n // 3. \"the 2nd monday of next month\": unit is months\n //\n // In the first case, we need to set the weekday up front, as the day is\n // relative to it. The second case also needs to be handled up front for\n // formats like \"next monday at midnight\" which will have its weekday reset\n // if not set up front. The last case will set up the params necessary to\n // shift the weekday and allow separateAbsoluteUnits below to handle setting\n // it after the date has been shifted.\n if(isDefined(set.weekday)) {\n if(unitIndex === MONTH_INDEX) {\n setOrdinalWeekday(num);\n num = 1;\n } else {\n updateDate(date, { weekday: set.weekday }, true);\n delete set.weekday;\n }\n }\n\n if (set.half) {\n // Allow localized \"half\" as a standalone colloquialism. Purposely avoiding\n // the locale number system to reduce complexity. The units \"month\" and\n // \"week\" are purposely excluded in the English date formats below, as\n // \"half a week\" and \"half a month\" are meaningless as exact dates.\n num *= set.half;\n }\n\n if (isDefined(set.shift)) {\n // Shift and unit, ie \"next month\", \"last week\", etc.\n num *= set.shift;\n } else if (set.sign) {\n // Unit and sign, ie \"months ago\", \"weeks from now\", etc.\n num *= set.sign;\n }\n\n if (isDefined(set.day)) {\n // \"the day after tomorrow\"\n num += set.day;\n delete set.day;\n }\n\n // Formats like \"the 15th of last month\" or \"6:30pm of next week\"\n // contain absolute units in addition to relative ones, so separate\n // them here, remove them from the params, and set up a callback to\n // set them after the relative ones have been set.\n separateAbsoluteUnits(unitIndex);\n\n // Finally shift the unit.\n set[English.units[unitIndex]] = num;\n relative = true;\n }\n\n function handleEdge(edge, params) {\n var edgeIndex = params.unit, weekdayOfMonth;\n if (!edgeIndex) {\n // If we have \"the end of January\", then we need to find the unit index.\n iterateOverHigherDateParams(params, function(unitName, val, unit, i) {\n if (unitName === 'weekday' && isDefined(params.month)) {\n // If both a month and weekday exist, then we have a format like\n // \"the last tuesday in November, 2012\", where the \"last\" is still\n // relative to the end of the month, so prevent the unit \"weekday\"\n // from taking over.\n return;\n }\n edgeIndex = i;\n });\n }\n if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) {\n // If a weekday in a month exists (as described above),\n // then set it up to be set after the date has been shifted.\n weekdayOfMonth = params.weekday;\n delete params.weekday;\n }\n afterDateSet(function() {\n var stopIndex;\n // \"edge\" values that are at the very edge are \"2\" so the beginning of the\n // year is -2 and the end of the year is 2. Conversely, the \"last day\" is\n // actually 00:00am so it is 1. -1 is reserved but unused for now.\n if (edge < 0) {\n moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale'));\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex);\n }\n if (isDefined(weekdayOfMonth)) {\n setWeekday(date, weekdayOfMonth, -edge);\n resetTime(date);\n }\n });\n if (edgeIndex === MONTH_INDEX) {\n params.specificity = DAY_INDEX;\n } else {\n params.specificity = edgeIndex - 1;\n }\n }\n\n function setOrdinalWeekday(num) {\n // If we have \"the 2nd Tuesday of June\", then pass the \"weekdayDir\"\n // flag along to updateDate so that the date does not accidentally traverse\n // into the previous month. This needs to be independent of the \"prefer\"\n // flag because we are only ensuring that the weekday is in the future, not\n // the entire date.\n set.weekday = 7 * (num - 1) + set.weekday;\n set.date = 1;\n weekdayDir = 1;\n }\n\n function separateAbsoluteUnits(unitIndex) {\n var params;\n\n iterateOverDateParams(set, function(name, val, unit, i) {\n // If there is a time unit set that is more specific than\n // the matched unit we have a string like \"5:30am in 2 minutes\",\n // which is meaningless, so invalidate the date...\n if (i >= unitIndex) {\n date.setTime(NaN);\n return false;\n } else if (i < unitIndex) {\n // ...otherwise set the params to set the absolute date\n // as a callback after the relative date has been set.\n params = params || {};\n params[name] = val;\n deleteDateParam(set, name);\n }\n });\n if (params) {\n afterDateSet(function() {\n updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir);\n });\n if (set.edge) {\n // \"the end of March of next year\"\n handleEdge(set.edge, params);\n delete set.edge;\n }\n }\n }\n\n if (contextDate && d) {\n // If a context date is passed (\"get\" and \"unitsFromNow\"),\n // then use it as the starting point.\n date = cloneDateByFlag(contextDate, true);\n } else {\n date = getNewDate();\n }\n\n _utc(date, getOwn(options, 'fromUTC'));\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone);\n } else if (isObjectType(d)) {\n set = simpleClone(d);\n updateDate(date, set, true);\n } else if (isNumber(d) || d === null) {\n date.setTime(d);\n }\n // A date created by parsing a string presumes that the format *itself* is\n // UTC, but not that the date, once created, should be manipulated as such. In\n // other words, if you are creating a date object from a server time\n // \"2012-11-15T12:00:00Z\", in the majority of cases you are using it to create\n // a date that will, after creation, be manipulated as local, so reset the utc\n // flag here unless \"setUTC\" is also set.\n _utc(date, !!getOwn(options, 'setUTC'));\n return {\n set: set,\n date: date\n };\n}\n\nmodule.exports = getExtendedDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getExtendedDate.js\n// module id = 58\n// module chunks = 1","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n cloneDate = require('./cloneDate'),\n advanceDate = require('./advanceDate');\n\nfunction getTimeDistanceForUnit(d1, d2, unit) {\n var fwd = d2 > d1, num, tmp;\n if (!fwd) {\n tmp = d2;\n d2 = d1;\n d1 = tmp;\n }\n num = d2 - d1;\n if (unit.multiplier > 1) {\n num = trunc(num / unit.multiplier);\n }\n // For higher order with potential ambiguity, use the numeric calculation\n // as a starting point, then iterate until we pass the target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n advanceDate(d1, unit.name, num);\n }\n while (d1 < d2) {\n advanceDate(d1, unit.name, 1);\n if (d1 > d2) {\n break;\n }\n num += 1;\n }\n }\n return fwd ? -num : num;\n}\n\nmodule.exports = getTimeDistanceForUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getTimeDistanceForUnit.js\n// module id = 59\n// module chunks = 1","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n cloneDate = require('./cloneDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) {\n var isoWeek, n = 0;\n if (isUndefined(firstDayOfWeek)) {\n firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK;\n }\n if (isUndefined(firstDayOfWeekYear)) {\n firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR;\n }\n // Moving to the end of the week allows for forward year traversal, ie\n // Dec 29 2014 is actually week 01 of 2015.\n isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n if (allowPrevious && d < isoWeek) {\n // If the date is still before the start of the year, then it should be\n // the last week of the previous year, ie Jan 1 2016 is actually week 53\n // of 2015, so move to the beginning of the week to traverse the year.\n isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n }\n while (isoWeek <= d) {\n // Doing a very simple walk to get the week number.\n setDate(isoWeek, getDate(isoWeek) + 7);\n n++;\n }\n return n;\n}\n\nmodule.exports = getWeekNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekNumber.js\n// module id = 60\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n isUndefined = require('../../common/internal/isUndefined');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverDateUnits(fn, startIndex, endIndex) {\n endIndex = endIndex || 0;\n if (isUndefined(startIndex)) {\n startIndex = YEAR_INDEX;\n }\n for (var index = startIndex; index >= endIndex; index--) {\n if (fn(DateUnits[index], index) === false) {\n break;\n }\n }\n}\n\nmodule.exports = iterateOverDateUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverDateUnits.js\n// module id = 61\n// module chunks = 1","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar floor = mathAliases.floor;\n\nfunction moveToBeginningOfWeek(d, firstDayOfWeek) {\n setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek);\n return d;\n}\n\nmodule.exports = moveToBeginningOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToBeginningOfWeek.js\n// module id = 62\n// module chunks = 1","'use strict';\n\nmodule.exports = {\n ISO_FIRST_DAY_OF_WEEK: 1,\n ISO_FIRST_DAY_OF_WEEK_YEAR: 4\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/ISODefaults.js\n// module id = 63\n// module chunks = 1","'use strict';\n\nvar DATE_OPTIONS = require('./DATE_OPTIONS'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineOptionsAccessor = require('../../common/internal/defineOptionsAccessor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nmodule.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/_dateOptions.js\n// module id = 64\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n rangeIsValid = require('./rangeIsValid'),\n incrementDate = require('./incrementDate'),\n incrementNumber = require('./incrementNumber'),\n incrementString = require('./incrementString'),\n getGreaterPrecision = require('./getGreaterPrecision'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n isFunction = classChecks.isFunction;\n\nfunction rangeEvery(range, step, countOnly, fn) {\n var increment,\n precision,\n dio,\n unit,\n start = range.start,\n end = range.end,\n inverse = end < start,\n current = start,\n index = 0,\n result = [];\n\n if (!rangeIsValid(range)) {\n return countOnly ? NaN : [];\n }\n if (isFunction(step)) {\n fn = step;\n step = null;\n }\n step = step || 1;\n if (isNumber(start)) {\n precision = getGreaterPrecision(start, step);\n increment = function() {\n return incrementNumber(current, step, precision);\n };\n } else if (isString(start)) {\n increment = function() {\n return incrementString(current, step);\n };\n } else if (isDate(start)) {\n dio = getDateIncrementObject(step);\n step = dio[0];\n unit = dio[1];\n increment = function() {\n return incrementDate(current, step, unit);\n };\n }\n // Avoiding infinite loops\n if (inverse && step > 0) {\n step *= -1;\n }\n while(inverse ? current >= end : current <= end) {\n if (!countOnly) {\n result.push(current);\n }\n if (fn) {\n fn(current, index, range);\n }\n current = increment();\n index++;\n }\n return countOnly ? index - 1 : result;\n}\n\nmodule.exports = rangeEvery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeEvery.js\n// module id = 65\n// module chunks = 1","'use strict';\n\nmodule.exports = 'year|month|week|day|hour|minute|second|millisecond';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DURATION_UNITS.js\n// module id = 66\n// module chunks = 1","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/array.js","import {Feature} from '../feature';\r\nimport {\r\n ignoreCase, numSortAsc, numSortDesc,\r\n dateSortAsc, sortNumberStr, sortDateStr\r\n} from '../sort';\r\nimport {isArray, isObj} from '../types';\r\nimport {NUMBER, FORMATTED_NUMBER, DATE} from '../const';\r\n\r\n/**\r\n * Base class for Dropdown and CheckList UI components\r\n * @export\r\n * @class BaseDropdown\r\n * @extends {Feature}\r\n */\r\nexport class BaseDropdown extends Feature {\r\n\r\n /**\r\n * Creates an instance of BaseDropdown\r\n * @param {TableFilter} tf\r\n */\r\n constructor(tf) {\r\n super(tf, 'baseDropdown');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Filter options custom sorter on a column basis\r\n * @type {Object}\r\n */\r\n this.customSorter = isObj(f.filter_options_sorter) &&\r\n isArray(f.filter_options_sorter.col) &&\r\n isArray(f.filter_options_sorter.comparer) ?\r\n f.filter_options_sorter :\r\n null;\r\n\r\n // TODO: move here all properties shared by Dropdown CheckList\r\n\r\n /**\r\n * Has custom options\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isCustom = false;\r\n\r\n /**\r\n * List of options values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.opts = [];\r\n\r\n /**\r\n * List of options texts for custom values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.optsTxt = [];\r\n\r\n /**\r\n * List of options to be excluded from the checklist filter\r\n * @type {Array}\r\n * @private\r\n */\r\n this.excludedOpts = [];\r\n }\r\n\r\n /**\r\n * Sort passed options based on the type of the specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [options=[]] Collection of values\r\n * @return {Array} Sorted values\r\n * @private\r\n */\r\n sortOptions(colIndex, options = []) {\r\n let tf = this.tf;\r\n\r\n if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||\r\n (isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {\r\n return options;\r\n }\r\n\r\n let { caseSensitive, sortNumDesc } = tf;\r\n let compareFn;\r\n\r\n if (this.customSorter &&\r\n this.customSorter.col.indexOf(colIndex) !== -1) {\r\n var idx = this.customSorter.col.indexOf(colIndex);\r\n compareFn = this.customSorter.comparer[idx];\r\n }\r\n else if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {\r\n let decimal = tf.getDecimal(colIndex);\r\n let comparer = numSortAsc;\r\n if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {\r\n comparer = numSortDesc;\r\n }\r\n compareFn = sortNumberStr(comparer, decimal);\r\n }\r\n else if (tf.hasType(colIndex, [DATE])) {\r\n let locale = tf.feature('dateType').getLocale(colIndex);\r\n let comparer = dateSortAsc;\r\n compareFn = sortDateStr(comparer, locale);\r\n } else { // string\r\n compareFn = caseSensitive ? undefined : ignoreCase;\r\n }\r\n\r\n return options.sort(compareFn);\r\n }\r\n\r\n /**\r\n * Regenerate filters of specified columns and maintain selection if any\r\n * @param {Array} colIndexes Collection of column indexes\r\n * @private\r\n */\r\n refreshFilters(colIndexes) {\r\n colIndexes.forEach((colIdx) => {\r\n let values = this.getValues(colIdx);\r\n this.build(colIdx, this.tf.linkedFilters);\r\n this.selectOptions(colIdx, values);\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/baseDropdown.js","/**\r\n * Event emitter class\r\n */\r\nexport class Emitter {\r\n /**\r\n * Creates an instance of Emitter.\r\n */\r\n constructor() {\r\n /**\r\n * Events object\r\n * @type {Object}\r\n */\r\n this.events = {};\r\n }\r\n\r\n /**\r\n * Subscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n on(evts, fn) {\r\n evts.forEach((evt) => {\r\n this.events[evt] = this.events[evt] || [];\r\n this.events[evt].push(fn);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n off(evts, fn) {\r\n evts.forEach((evt) => {\r\n if (evt in this.events) {\r\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Emit an event\r\n * @param {String} evt Event name followed by any other argument passed to\r\n * the invoked function\r\n */\r\n emit(evt /*, args...*/) {\r\n if (evt in this.events) {\r\n for (let i = 0; i < this.events[evt].length; i++) {\r\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\r\n }\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/emitter.js","import {BaseDropdown} from './baseDropdown';\r\nimport {\r\n addClass, createCheckItem, createText, createElm, elm, getText,\r\n removeClass, tag\r\n} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase, trim, rgxEsc} from '../string';\r\nimport {addEvt, removeEvt, targetEvt} from '../event';\r\nimport {isEmpty} from '../types';\r\nimport {CHECKLIST, NONE} from '../const';\r\n\r\n/**\r\n * Checklist filter UI component\r\n * @export\r\n * @class CheckList\r\n * @extends {BaseDropdown}\r\n */\r\nexport class CheckList extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of CheckList\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'checkList');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * List of container DOM elements\r\n * @type {Array}\r\n */\r\n this.containers = [];\r\n\r\n /**\r\n * Css class for the container of the checklist filter (div)\r\n * @type {String}\r\n */\r\n this.containerCssClass = f.div_checklist_css_class || 'div_checklist';\r\n\r\n /**\r\n * Css class for the checklist filter element (ul)\r\n * @type {String}\r\n */\r\n this.filterCssClass = f.checklist_css_class || 'flt_checklist';\r\n\r\n /**\r\n * Css class for the item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.itemCssClass = f.checklist_item_css_class || 'flt_checklist_item';\r\n\r\n /**\r\n * Css class for a selected item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.selectedItemCssClass =\r\n f.checklist_selected_item_css_class || 'flt_checklist_slc_item';\r\n\r\n /**\r\n * Text placed in the filter's container when load filter on demand\r\n * feature is enabled\r\n * @type {String}\r\n */\r\n this.activateText =\r\n f.activate_checklist_text || 'Click to load filter data';\r\n\r\n /**\r\n * Css class for a disabled item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.disabledItemCssClass = f.checklist_item_disabled_css_class ||\r\n 'flt_checklist_item_disabled';\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableResetOption = f.enable_checklist_reset_filter === false ?\r\n false : true;\r\n\r\n /**\r\n * Prefix for container element ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfx = 'chkdiv_';\r\n }\r\n\r\n /**\r\n * Checklist option click event handler\r\n * @param {Event} evt\r\n * @private\r\n */\r\n optionClick(evt) {\r\n let elm = targetEvt(evt);\r\n let tf = this.tf;\r\n\r\n this.emitter.emit('filter-focus', tf, elm);\r\n this.setCheckListValues(elm);\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Checklist container click event handler for load-on-demand feature\r\n * @param {Event} evt\r\n * @private\r\n */\r\n onCheckListClick(evt) {\r\n let elm = targetEvt(evt);\r\n if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n let div = this.containers[ct];\r\n this.build(ct);\r\n removeEvt(div, 'click', (evt) => this.onCheckListClick(evt));\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all checklist filters\r\n */\r\n refreshAll() {\r\n let colIdxs = this.tf.getFiltersByType(CHECKLIST, true);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize checklist filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltTgtIds[colIndex] : null;\r\n\r\n let divCont = createElm('div',\r\n ['id', `${this.prfx}${colIndex}_${tf.id}`],\r\n ['ct', colIndex], ['filled', '0']);\r\n divCont.className = this.containerCssClass;\r\n\r\n //filter is appended in desired element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(divCont);\r\n } else {\r\n container.appendChild(divCont);\r\n }\r\n\r\n this.containers[colIndex] = divCont;\r\n tf.fltIds.push(tf.buildFilterId(colIndex));\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n addEvt(divCont, 'click', (evt) => this.onCheckListClick(evt));\r\n divCont.appendChild(createText(this.activateText));\r\n }\r\n\r\n this.emitter.on(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n\r\n this.emitter.on(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build checklist UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = parseInt(colIndex, 10);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let flt = this.containers[colIndex];\r\n let ul = createElm('ul',\r\n ['id', tf.fltIds[colIndex]],\r\n ['colIndex', colIndex]);\r\n ul.className = this.filterCssClass;\r\n\r\n let rows = tf.dom().rows;\r\n let nbRows = tf.getRowsNb(true);\r\n let caseSensitive = tf.caseSensitive;\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let filteredDataCol = [];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n /** @inherited */\r\n this.excludedOpts = [];\r\n }\r\n\r\n flt.innerHTML = '';\r\n\r\n for (let k = tf.refRow; k < nbRows; k++) {\r\n // always visible rows don't need to appear on selects as always\r\n // valid\r\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\r\n continue;\r\n }\r\n\r\n let cells = rows[k].cells;\r\n let ncells = cells.length;\r\n\r\n // checks if row has exact cell #\r\n if (ncells !== tf.nbCells || this.isCustom) {\r\n continue;\r\n }\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < ncells; j++) {\r\n if (colIndex !== j) {\r\n continue;\r\n }\r\n if (isLinked && !tf.disableExcludedOptions &&\r\n (!tf.paging && !tf.isRowDisplayed(k)) ||\r\n (tf.paging && activeIdx && !tf.isRowValid(k))) {\r\n continue;\r\n }\r\n\r\n let cellValue = tf.getCellValue(cells[j]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, caseSensitive);\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n let filteredCol = filteredDataCol[j];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(j);\r\n }\r\n if (!has(filteredCol, cellString, caseSensitive) &&\r\n !has(this.excludedOpts, cellString,\r\n caseSensitive)) {\r\n this.excludedOpts.push(cellValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (this.excludedOpts) {\r\n this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);\r\n }\r\n\r\n this.addChecks(colIndex, ul);\r\n\r\n if (tf.loadFltOnDemand) {\r\n flt.innerHTML = '';\r\n }\r\n flt.appendChild(ul);\r\n flt.setAttribute('filled', '1');\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, flt);\r\n }\r\n\r\n /**\r\n * Add checklist options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = this.addTChecks(colIndex, ul);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n let val = this.opts[y]; //item value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //item text\r\n let fltId = tf.fltIds[colIndex];\r\n let li = createCheckItem(`${fltId}_${(y + chkCt)}`, val, lbl);\r\n li.className = this.itemCssClass;\r\n\r\n if (tf.linkedFilters && tf.disableExcludedOptions &&\r\n has(this.excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n addClass(li, this.disabledItemCssClass);\r\n li.check.disabled = true;\r\n li.disabled = true;\r\n } else {\r\n addEvt(li.check, 'click', evt => this.optionClick(evt));\r\n }\r\n ul.appendChild(li);\r\n\r\n if (val === '') {\r\n //item is hidden\r\n li.style.display = NONE;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add checklist header option\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addTChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = 1;\r\n let fltId = tf.fltIds[colIndex];\r\n let li0 = createCheckItem(`${fltId}_0`, '',\r\n tf.getClearFilterText(colIndex));\r\n li0.className = this.itemCssClass;\r\n ul.appendChild(li0);\r\n\r\n addEvt(li0.check, 'click', evt => this.optionClick(evt));\r\n\r\n if (!this.enableResetOption) {\r\n li0.style.display = NONE;\r\n }\r\n\r\n if (tf.enableEmptyOption) {\r\n let li1 = createCheckItem(`${fltId}_1`, tf.emOperator,\r\n tf.emptyText);\r\n li1.className = this.itemCssClass;\r\n ul.appendChild(li1);\r\n addEvt(li1.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n\r\n if (tf.enableNonEmptyOption) {\r\n let li2 = createCheckItem(`${fltId}_2`, tf.nmOperator,\r\n tf.nonEmptyText);\r\n li2.className = this.itemCssClass;\r\n ul.appendChild(li2);\r\n addEvt(li2.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n return chkCt;\r\n }\r\n\r\n /**\r\n * Store checked options in DOM element attribute\r\n * @param {Object} o checklist option DOM element\r\n * @private\r\n */\r\n setCheckListValues(o) {\r\n if (!o) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let chkValue = o.value; //checked item value\r\n // TODO: provide helper to extract column index, ugly!\r\n let chkIndex = parseInt(o.id.split('_')[2], 10);\r\n let colIdx = tf.getColumnIndexFromFilterId(o.id);\r\n let itemTag = 'LI';\r\n\r\n let n = tf.getFilterElement(parseInt(colIdx, 10));\r\n let li = n.childNodes[chkIndex];\r\n let colIndex = n.getAttribute('colIndex');\r\n let fltValue = n.getAttribute('value'); //filter value (ul tag)\r\n let fltIndexes = n.getAttribute('indexes'); //selected items (ul tag)\r\n\r\n if (o.checked) {\r\n //show all item\r\n if (chkValue === '') {\r\n if ((fltIndexes && fltIndexes !== '')) {\r\n //items indexes\r\n let indSplit = fltIndexes.split(tf.separator);\r\n //checked items loop\r\n for (let u = 0; u < indSplit.length; u++) {\r\n //checked item\r\n let cChk = elm(tf.fltIds[colIndex] + '_' +\r\n indSplit[u]);\r\n if (cChk) {\r\n cChk.checked = false;\r\n removeClass(n.childNodes[indSplit[u]],\r\n this.selectedItemCssClass);\r\n }\r\n }\r\n }\r\n n.setAttribute('value', '');\r\n n.setAttribute('indexes', '');\r\n\r\n } else {\r\n fltValue = (fltValue) ? fltValue : '';\r\n chkValue = trim(fltValue + ' ' + chkValue + ' ' +\r\n tf.orOperator);\r\n chkIndex = fltIndexes + chkIndex + tf.separator;\r\n n.setAttribute('value', chkValue);\r\n n.setAttribute('indexes', chkIndex);\r\n //1st option unchecked\r\n if (elm(tf.fltIds[colIndex] + '_0')) {\r\n elm(tf.fltIds[colIndex] + '_0').checked = false;\r\n }\r\n }\r\n\r\n if (li.nodeName === itemTag) {\r\n removeClass(n.childNodes[0], this.selectedItemCssClass);\r\n addClass(li, this.selectedItemCssClass);\r\n }\r\n } else { //removes values and indexes\r\n if (chkValue !== '') {\r\n let replaceValue = new RegExp(\r\n rgxEsc(chkValue + ' ' + tf.orOperator));\r\n fltValue = fltValue.replace(replaceValue, '');\r\n n.setAttribute('value', trim(fltValue));\r\n\r\n let replaceIndex = new RegExp(\r\n rgxEsc(chkIndex + tf.separator));\r\n fltIndexes = fltIndexes.replace(replaceIndex, '');\r\n n.setAttribute('indexes', fltIndexes);\r\n }\r\n if (li.nodeName === itemTag) {\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n if (tf.getFilterType(colIndex) !== CHECKLIST || !flt ||\r\n values.length === 0) {\r\n return;\r\n }\r\n\r\n let lisNb = tag(flt, 'li').length;\r\n\r\n flt.setAttribute('value', '');\r\n flt.setAttribute('indexes', '');\r\n\r\n for (let k = 0; k < lisNb; k++) {\r\n let li = tag(flt, 'li')[k];\r\n let lbl = tag(li, 'label')[0];\r\n let chk = tag(li, 'input')[0];\r\n let lblTxt = matchCase(getText(lbl), tf.caseSensitive);\r\n\r\n if (lblTxt !== '' && has(values, lblTxt, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n // Check non-empty-text or empty-text option\r\n if (values.indexOf(tf.nmOperator) !== -1 &&\r\n lblTxt === matchCase(tf.nonEmptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n }\r\n else if (values.indexOf(tf.emOperator) !== -1 &&\r\n lblTxt === matchCase(tf.emptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n chk.checked = false;\r\n }\r\n }\r\n this.setCheckListValues(chk);\r\n }\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Collection of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n let fltAttr = flt.getAttribute('value');\r\n let values = isEmpty(fltAttr) ? '' : fltAttr;\r\n //removes last operator ||\r\n values = values.substr(0, values.length - 3);\r\n //turn || separated values into array\r\n values = values.split(' ' + tf.orOperator + ' ');\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy CheckList instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n this.emitter.off(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/checkList.js","import {BaseDropdown} from './baseDropdown';\r\nimport {createElm, createOpt, elm} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase} from '../string';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {SELECT, MULTIPLE, NONE} from '../const';\r\n\r\n/**\r\n * Dropdown filter UI component\r\n * @export\r\n * @class Dropdown\r\n * @extends {BaseDropdown}\r\n */\r\nexport class Dropdown extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of Dropdown\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dropdown');\r\n\r\n // Configuration object\r\n let f = this.config;\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableSlcResetFilter = f.enable_slc_reset_filter === false ?\r\n false : true;\r\n\r\n /**\r\n * Non empty option text\r\n * @type {String}\r\n */\r\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\r\n\r\n /**\r\n * Tooltip text appearing on multiple select\r\n * @type {String}\r\n */\r\n this.multipleSlcTooltip = f.multiple_slc_tooltip ||\r\n 'Use Ctrl/Cmd key for multiple selections';\r\n }\r\n\r\n\r\n /**\r\n * Drop-down filter focus event handler\r\n * @param {Event} e DOM Event\r\n * @private\r\n */\r\n onSlcFocus(e) {\r\n let elm = targetEvt(e);\r\n let tf = this.tf;\r\n // select is populated when element has focus\r\n if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n this.build(ct);\r\n }\r\n this.emitter.emit('filter-focus', tf, elm);\r\n }\r\n\r\n /**\r\n * Drop-down filter change event handler\r\n * @private\r\n */\r\n onSlcChange() {\r\n if (this.tf.onSlcChange) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all drop-down filters\r\n */\r\n refreshAll() {\r\n let selectFlts = this.tf.getFiltersByType(SELECT, true);\r\n let multipleFlts = this.tf.getFiltersByType(MULTIPLE, true);\r\n let colIdxs = selectFlts.concat(multipleFlts);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize drop-down filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let col = tf.getFilterType(colIndex);\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltTgtIds[colIndex] : null;\r\n\r\n let slc = createElm(SELECT,\r\n ['id', tf.buildFilterId(colIndex)],\r\n ['ct', colIndex], ['filled', '0']\r\n );\r\n\r\n if (col === MULTIPLE) {\r\n slc.multiple = MULTIPLE;\r\n slc.title = this.multipleSlcTooltip;\r\n }\r\n slc.className = col.toLowerCase() === SELECT ?\r\n tf.fltCssClass : tf.fltMultiCssClass;\r\n\r\n //filter is appended in container element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(slc);\r\n } else {\r\n container.appendChild(slc);\r\n }\r\n\r\n tf.fltIds.push(slc.id);\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n //1st option is created here since build isn't invoked\r\n let opt0 = createOpt(tf.getClearFilterText(colIndex), '');\r\n slc.appendChild(opt0);\r\n }\r\n\r\n addEvt(slc, 'change', () => this.onSlcChange());\r\n addEvt(slc, 'focus', (e) => this.onSlcFocus(e));\r\n\r\n this.emitter.on(\r\n ['build-select-filter'],\r\n (tf, colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.on(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build drop-down filter UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = parseInt(colIndex, 10);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let slcId = tf.fltIds[colIndex];\r\n let slc = elm(slcId);\r\n let rows = tf.dom().rows;\r\n let nbRows = tf.getRowsNb(true);\r\n\r\n //custom select test\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n //custom selects text\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let excludedOpts = null,\r\n filteredDataCol = null;\r\n if (isLinked && tf.disableExcludedOptions) {\r\n excludedOpts = [];\r\n filteredDataCol = [];\r\n }\r\n\r\n for (let k = tf.refRow; k < nbRows; k++) {\r\n // always visible rows don't need to appear on selects as always\r\n // valid\r\n if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {\r\n continue;\r\n }\r\n\r\n let cell = rows[k].cells,\r\n nchilds = cell.length;\r\n\r\n // checks if row has exact cell #\r\n if (nchilds !== tf.nbCells || this.isCustom) {\r\n continue;\r\n }\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n if (colIndex !== j) {\r\n continue;\r\n }\r\n if (isLinked && !tf.disableExcludedOptions &&\r\n (!tf.paging && !tf.isRowDisplayed(k)) ||\r\n (tf.paging && activeIdx && !tf.isRowValid(k))) {\r\n continue;\r\n }\r\n\r\n let cellValue = tf.getCellValue(cell[j]),\r\n //Vary Peter's patch\r\n cellString = matchCase(cellValue, tf.caseSensitive);\r\n\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, tf.caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n\r\n if (isLinked && tf.disableExcludedOptions) {\r\n let filteredCol = filteredDataCol[j];\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(j);\r\n }\r\n if (!has(filteredCol, cellString, tf.caseSensitive) &&\r\n !has(excludedOpts, cellString, tf.caseSensitive)) {\r\n excludedOpts.push(cellValue);\r\n }\r\n }\r\n }//for j\r\n }//for k\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (excludedOpts) {\r\n excludedOpts = this.sortOptions(colIndex, excludedOpts);\r\n }\r\n\r\n //populates drop-down\r\n this.addOptions(colIndex, slc, isLinked, excludedOpts);\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, slc);\r\n }\r\n\r\n /**\r\n * Add drop-down options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} slc Select Dom element\r\n * @param {Boolean} isLinked Enable linked refresh behaviour\r\n * @param {Array} excludedOpts Array of excluded options\r\n */\r\n addOptions(colIndex, slc, isLinked, excludedOpts) {\r\n let tf = this.tf,\r\n slcValue = slc.value;\r\n\r\n slc.innerHTML = '';\r\n slc = this.addFirstOption(slc);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n if (this.opts[y] === '') {\r\n continue;\r\n }\r\n let val = this.opts[y]; //option value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //option text\r\n let isDisabled = false;\r\n if (isLinked && tf.disableExcludedOptions &&\r\n has(excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n isDisabled = true;\r\n }\r\n\r\n let opt;\r\n //fill select on demand\r\n if (tf.loadFltOnDemand && slcValue === this.opts[y] &&\r\n tf.getFilterType(colIndex) === SELECT) {\r\n opt = createOpt(lbl, val, true);\r\n } else {\r\n opt = createOpt(lbl, val, false);\r\n }\r\n if (isDisabled) {\r\n opt.disabled = true;\r\n }\r\n slc.appendChild(opt);\r\n }// for y\r\n\r\n slc.setAttribute('filled', '1');\r\n }\r\n\r\n /**\r\n * Add drop-down header option\r\n * @param {Object} slc Select DOM element\r\n */\r\n addFirstOption(slc) {\r\n let tf = this.tf;\r\n let colIdx = tf.getColumnIndexFromFilterId(slc.id);\r\n let opt0 = createOpt((!this.enableSlcResetFilter ?\r\n '' : tf.getClearFilterText(colIdx)), '');\r\n if (!this.enableSlcResetFilter) {\r\n opt0.style.display = NONE;\r\n }\r\n slc.appendChild(opt0);\r\n if (tf.enableEmptyOption) {\r\n let opt1 = createOpt(tf.emptyText, tf.emOperator);\r\n slc.appendChild(opt1);\r\n }\r\n if (tf.enableNonEmptyOption) {\r\n let opt2 = createOpt(tf.nonEmptyText, tf.nmOperator);\r\n slc.appendChild(opt2);\r\n }\r\n return slc;\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n if (values.length === 0) {\r\n return;\r\n }\r\n let slc = tf.getFilterElement(colIndex);\r\n [].forEach.call(slc.options, (option) => {\r\n // Empty value means clear all selections and first option is the\r\n // clear all option\r\n if (values[0] === '' || option.value === '') {\r\n option.selected = false;\r\n }\r\n\r\n if (option.value !== '' && has(values, option.value, true)) {\r\n option.selected = true;\r\n }//if\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Array of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let slc = tf.getFilterElement(colIndex);\r\n let values = [];\r\n\r\n // IE >= 9 does not support the selectedOptions property :(\r\n if (slc.selectedOptions) {\r\n [].forEach.call(slc.selectedOptions,\r\n option => values.push(option.value));\r\n } else {\r\n [].forEach.call(slc.options, (option) => {\r\n if (option.selected) {\r\n values.push(option.value);\r\n }\r\n });\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy Dropdown instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-select-filter'],\r\n (colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.off(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/dropdown.js","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nfunction isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n}\n\nmodule.exports = isClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isClass.js\n// module id = 72\n// module chunks = 1","'use strict';\n\nfunction map(arr, fn) {\n // perf: Not using fixed array len here as it may be sparse.\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr) {\n result.push(fn(arr[i], i));\n }\n }\n return result;\n}\n\nmodule.exports = map;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/map.js\n// module id = 73\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../var/mathAliases');\n\nvar abs = mathAliases.abs,\n pow = mathAliases.pow,\n round = mathAliases.round;\n\nfunction withPrecision(val, precision, fn) {\n var multiplier = pow(10, abs(precision || 0));\n fn = fn || round;\n if (precision < 0) multiplier = 1 / multiplier;\n return fn(val * multiplier) / multiplier;\n}\n\nmodule.exports = withPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/withPrecision.js\n// module id = 74\n// module chunks = 1","'use strict';\n\nmodule.exports = String.fromCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/chr.js\n// module id = 75\n// module chunks = 1","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectDateArguments = require('./collectDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/advanceDateWithArgs.js\n// module id = 76\n// module chunks = 1","'use strict';\n\nvar dateIsValid = require('./dateIsValid');\n\nfunction assertDateIsValid(d) {\n if (!dateIsValid(d)) {\n throw new TypeError('Date is not valid');\n }\n}\n\nmodule.exports = assertDateIsValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/assertDateIsValid.js\n// module id = 77\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n getDateParamsFromString = require('./getDateParamsFromString'),\n collectDateParamsFromArguments = require('./collectDateParamsFromArguments');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString;\n\nfunction collectDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1];\n if (allowDuration && isString(arg1)) {\n arg1 = getDateParamsFromString(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n arg1 = collectDateParamsFromArguments(args);\n arg2 = null;\n } else {\n if (isObjectType(arg1)) {\n arg1 = simpleClone(arg1);\n }\n }\n return [arg1, arg2];\n}\n\nmodule.exports = collectDateArguments;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/collectDateArguments.js\n// module id = 78\n// module chunks = 1","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset'),\n cloneDate = require('./cloneDate'),\n isDefined = require('../../common/internal/isDefined'),\n advanceDate = require('./advanceDate'),\n dateIsValid = require('./dateIsValid'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n getExtendedDate = require('./getExtendedDate'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction compareDate(date, d, margin, localeCode, options) {\n var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t;\n\n function getTimezoneShift() {\n // If there is any specificity in the date then we're implicitly not\n // checking absolute time, so ignore timezone shifts.\n if (p.set && p.set.specificity) {\n return 0;\n }\n return (tzOffset(p.date) - tzOffset(date)) * MINUTES;\n }\n\n function addSpecificUnit() {\n var unit = DateUnits[p.set.specificity];\n return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1;\n }\n\n if (_utc(date)) {\n options = options || {};\n options.fromUTC = true;\n options.setUTC = true;\n }\n\n p = getExtendedDate(null, d, options, true);\n\n if (margin > 0) {\n loMargin = hiMargin = margin;\n override = true;\n }\n if (!dateIsValid(p.date)) return false;\n if (p.set && p.set.specificity) {\n if (isDefined(p.set.edge) || isDefined(p.set.shift)) {\n compareEdges = true;\n moveToBeginningOfUnit(p.date, p.set.specificity, localeCode);\n }\n if (compareEdges || p.set.specificity === MONTH_INDEX) {\n max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime();\n } else {\n max = addSpecificUnit();\n }\n if (!override && isDefined(p.set.sign) && p.set.specificity) {\n // If the time is relative, there can occasionally be an disparity between\n // the relative date and \"now\", which it is being compared to, so set an\n // extra margin to account for this.\n loMargin = 50;\n hiMargin = -50;\n }\n }\n t = date.getTime();\n min = p.date.getTime();\n max = max || min;\n timezoneShift = getTimezoneShift();\n if (timezoneShift) {\n min -= timezoneShift;\n max -= timezoneShift;\n }\n return t >= (min - loMargin) && t <= (max + hiMargin);\n}\n\nmodule.exports = compareDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/compareDate.js\n// module id = 79\n// module chunks = 1","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDateWithContext(contextDate, d, options, forceClone) {\n return getExtendedDate(contextDate, d, options, forceClone).date;\n}\n\nmodule.exports = createDateWithContext;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/createDateWithContext.js\n// module id = 80\n// module chunks = 1","'use strict';\n\nvar CoreOutputFormats = require('../var/CoreOutputFormats'),\n formattingTokens = require('../var/formattingTokens'),\n assertDateIsValid = require('./assertDateIsValid');\n\nvar dateFormatMatcher = formattingTokens.dateFormatMatcher;\n\nfunction dateFormat(d, format, localeCode) {\n assertDateIsValid(d);\n format = CoreOutputFormats[format] || format || '{long}';\n return dateFormatMatcher(format, d, localeCode);\n}\n\nmodule.exports = dateFormat;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateFormat.js\n// module id = 81\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n dateFormat = require('./dateFormat'),\n classChecks = require('../../common/var/classChecks'),\n assertDateIsValid = require('./assertDateIsValid'),\n getAdjustedUnitForDate = require('./getAdjustedUnitForDate');\n\nvar isFunction = classChecks.isFunction,\n localeManager = LocaleHelpers.localeManager;\n\nfunction dateRelative(d, dRelative, arg1, arg2) {\n var adu, format, type, localeCode, fn;\n assertDateIsValid(d);\n if (isFunction(arg1)) {\n fn = arg1;\n } else {\n localeCode = arg1;\n fn = arg2;\n }\n adu = getAdjustedUnitForDate(d, dRelative);\n if (fn) {\n format = fn.apply(d, adu.concat(localeManager.get(localeCode)));\n if (format) {\n return dateFormat(d, format, localeCode);\n }\n }\n // Adjust up if time is in ms, as this doesn't\n // look very good for a standard relative date.\n if (adu[1] === 0) {\n adu[1] = 1;\n adu[0] = 1;\n }\n if (dRelative) {\n type = 'duration';\n } else if (adu[2] > 0) {\n type = 'future';\n } else {\n type = 'past';\n }\n return localeManager.get(localeCode).getRelativeFormat(adu, type);\n}\n\nmodule.exports = dateRelative;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/dateRelative.js\n// module id = 82\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trim = require('../../common/internal/trim'),\n getMonth = require('./getMonth'),\n isDefined = require('../../common/internal/isDefined'),\n getNewDate = require('./getNewDate'),\n compareDay = require('./compareDay'),\n getWeekday = require('./getWeekday'),\n dateIsValid = require('./dateIsValid'),\n classChecks = require('../../common/var/classChecks'),\n compareDate = require('./compareDate');\n\nvar isString = classChecks.isString,\n English = LocaleHelpers.English;\n\nfunction fullCompareDate(date, d, margin) {\n var tmp;\n if (!dateIsValid(date)) return;\n if (isString(d)) {\n d = trim(d).toLowerCase();\n switch(true) {\n case d === 'future': return date.getTime() > getNewDate().getTime();\n case d === 'past': return date.getTime() < getNewDate().getTime();\n case d === 'today': return compareDay(date);\n case d === 'tomorrow': return compareDay(date, 1);\n case d === 'yesterday': return compareDay(date, -1);\n case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;\n case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;\n\n case (isDefined(tmp = English.weekdayMap[d])):\n return getWeekday(date) === tmp;\n case (isDefined(tmp = English.monthMap[d])):\n return getMonth(date) === tmp;\n }\n }\n return compareDate(date, d, margin);\n}\n\nmodule.exports = fullCompareDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/fullCompareDate.js\n// module id = 83\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnit(ms, fn) {\n var unitIndex = 0, value = 0;\n iterateOverDateUnits(function(unit, i) {\n value = abs(fn(unit));\n if (value >= 1) {\n unitIndex = i;\n return false;\n }\n });\n return [value, unitIndex, ms];\n}\n\nmodule.exports = getAdjustedUnit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnit.js\n// module id = 84\n// module chunks = 1","'use strict';\n\nvar getOwnKey = require('../../common/internal/getOwnKey');\n\nfunction getDateParamKey(params, key) {\n return getOwnKey(params, key) ||\n getOwnKey(params, key + 's') ||\n (key === 'day' && getOwnKey(params, 'date'));\n}\n\nmodule.exports = getDateParamKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParamKey.js\n// module id = 85\n// module chunks = 1","'use strict';\n\nvar getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDaysInMonth(d) {\n return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date');\n}\n\nmodule.exports = getDaysInMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDaysInMonth.js\n// module id = 86\n// module chunks = 1","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getHours(d) {\n return callDateGet(d, 'Hours');\n}\n\nmodule.exports = getHours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getHours.js\n// module id = 87\n// module chunks = 1","'use strict';\n\nfunction getRegNonCapturing(src, opt) {\n if (src.length > 1) {\n src = '(?:' + src + ')';\n }\n if (opt) {\n src += '?';\n }\n return src;\n}\n\nmodule.exports = getRegNonCapturing;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getRegNonCapturing.js\n// module id = 88\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n tzOffset = require('./tzOffset'),\n padNumber = require('../../common/internal/padNumber'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getUTCOffset(d, iso) {\n var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon;\n colon = iso === true ? ':' : '';\n if (!offset && iso) return 'Z';\n hours = padNumber(trunc(-offset / 60), 2, true);\n mins = padNumber(abs(offset % 60), 2);\n return hours + colon + mins;\n}\n\nmodule.exports = getUTCOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getUTCOffset.js\n// module id = 89\n// module chunks = 1","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar ceil = mathAliases.ceil;\n\nfunction moveToEndOfWeek(d, firstDayOfWeek) {\n var target = firstDayOfWeek - 1;\n setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target);\n return d;\n}\n\nmodule.exports = moveToEndOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToEndOfWeek.js\n// module id = 90\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setDate = require('./setDate'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) {\n setUnitAndLowerToEdge(d, MONTH_INDEX);\n setDate(d, firstDayOfWeekYear);\n moveToBeginningOfWeek(d, firstDayOfWeek);\n}\n\nmodule.exports = moveToFirstDayOfWeekYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/moveToFirstDayOfWeekYear.js\n// module id = 91\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX;\n\nfunction resetTime(d) {\n return setUnitAndLowerToEdge(d, HOURS_INDEX);\n}\n\nmodule.exports = resetTime;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/resetTime.js\n// module id = 92\n// module chunks = 1","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n getDate = require('./getDate'),\n setDate = require('./setDate'),\n setYear = require('./setYear'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n setMonth = require('./setMonth'),\n cloneDate = require('./cloneDate'),\n getWeekday = require('./getWeekday'),\n setWeekday = require('./setWeekday'),\n classChecks = require('../../common/var/classChecks'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar isNumber = classChecks.isNumber,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction setISOWeekNumber(d, num) {\n if (isNumber(num)) {\n // Intentionally avoiding updateDate here to prevent circular dependencies.\n var isoWeek = cloneDate(d), dow = getWeekday(d);\n moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR);\n setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1));\n setYear(d, getYear(isoWeek));\n setMonth(d, getMonth(isoWeek));\n setDate(d, getDate(isoWeek));\n setWeekday(d, dow || 7);\n }\n return d.getTime();\n}\n\nmodule.exports = setISOWeekNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setISOWeekNumber.js\n// module id = 93\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex');\n\nfunction walkUnitDown(unitIndex, fn) {\n while (unitIndex >= 0) {\n if (fn(DateUnits[unitIndex], unitIndex) === false) {\n break;\n }\n unitIndex = getLowerUnitIndex(unitIndex);\n }\n}\n\nmodule.exports = walkUnitDown;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/walkUnitDown.js\n// module id = 94\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/AmericanEnglishDefinition.js\n// module id = 95\n// module chunks = 1","'use strict';\n\nvar CoreOutputFormats = {\n 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}',\n 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}',\n 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}'\n};\n\nmodule.exports = CoreOutputFormats;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CoreOutputFormats.js\n// module id = 96\n// module chunks = 1","'use strict';\n\nvar LocalizedParsingTokens = {\n 'year': {\n base: 'yyyy',\n requiresSuffix: true\n },\n 'month': {\n base: 'MM',\n requiresSuffix: true\n },\n 'date': {\n base: 'dd',\n requiresSuffix: true\n },\n 'hour': {\n base: 'hh',\n requiresSuffixOr: ':'\n },\n 'minute': {\n base: 'mm'\n },\n 'second': {\n base: 'ss'\n },\n 'num': {\n src: '\\\\d+',\n requiresNumerals: true\n }\n};\n\nmodule.exports = LocalizedParsingTokens;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LocalizedParsingTokens.js\n// module id = 97\n// module chunks = 1","'use strict';\n\nmodule.exports = 60 * 1000;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/MINUTES.js\n// module id = 98\n// module chunks = 1","'use strict';\n\nvar ParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '\\\\d{4}'\n },\n 'MM': {\n param: 'month',\n src: '[01]?\\\\d'\n },\n 'dd': {\n param: 'date',\n src: '[0123]?\\\\d'\n },\n 'hh': {\n param: 'hour',\n src: '[0-2]?\\\\d'\n },\n 'mm': {\n param: 'minute',\n src: '[0-5]\\\\d'\n },\n 'ss': {\n param: 'second',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'yearSign': {\n src: '[+-]',\n sign: true\n },\n 'tzHour': {\n src: '[0-1]\\\\d'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'tzSign': {\n src: '[+−-]',\n sign: true\n },\n 'ihh': {\n param: 'hour',\n src: '[0-2]?\\\\d(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT',\n val: 1\n },\n 'Z': {\n param: 'utc',\n src: 'Z',\n val: 1\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = ParsingTokens;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/ParsingTokens.js\n// module id = 99\n// module chunks = 1","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/index.js\n// module id = 100\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nvar isDate = classChecks.isDate;\n\nfunction cloneRangeMember(m) {\n if (isDate(m)) {\n return new Date(m.getTime());\n } else {\n return getRangeMemberPrimitiveValue(m);\n }\n}\n\nmodule.exports = cloneRangeMember;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/cloneRangeMember.js\n// module id = 101\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n namespaceAliases = require('../../common/var/namespaceAliases');\n\nvar isDate = classChecks.isDate,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction getDateForRange(d) {\n if (isDate(d)) {\n return d;\n } else if (d == null) {\n return new Date();\n } else if (sugarDate.create) {\n return sugarDate.create(d);\n }\n return new Date(d);\n}\n\nmodule.exports = getDateForRange;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getDateForRange.js\n// module id = 102\n// module chunks = 1","'use strict';\n\nvar DURATION_REG = require('../var/DURATION_REG'),\n classChecks = require('../../common/var/classChecks'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize');\n\nvar isNumber = classChecks.isNumber;\n\nfunction getDateIncrementObject(amt) {\n var match, val, unit;\n if (isNumber(amt)) {\n return [amt, 'Milliseconds'];\n }\n match = amt.match(DURATION_REG);\n val = +match[1] || 1;\n unit = simpleCapitalize(match[2].toLowerCase());\n if (unit.match(/hour|minute|second/i)) {\n unit += 's';\n } else if (unit === 'Year') {\n unit = 'FullYear';\n } else if (unit === 'Week') {\n unit = 'Date';\n val *= 7;\n } else if (unit === 'Day') {\n unit = 'Date';\n }\n return [val, unit];\n}\n\nmodule.exports = getDateIncrementObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getDateIncrementObject.js\n// module id = 103\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isDate = classChecks.isDate;\n\nfunction getRangeMemberPrimitiveValue(m) {\n if (m == null) return m;\n return isDate(m) ? m.getTime() : m.valueOf();\n}\n\nmodule.exports = getRangeMemberPrimitiveValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getRangeMemberPrimitiveValue.js\n// module id = 104\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n callDateSet = require('../../common/internal/callDateSet'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction incrementDate(src, amount, unit) {\n var mult = MULTIPLIERS[unit], d;\n if (mult) {\n d = new Date(src.getTime() + (amount * mult));\n } else {\n d = new Date(src);\n callDateSet(d, unit, callDateGet(src, unit) + amount);\n }\n return d;\n}\n\nmodule.exports = incrementDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementDate.js\n// module id = 105\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = {\n 'Hours': 60 * 60 * 1000,\n 'Minutes': 60 * 1000,\n 'Seconds': 1000,\n 'Milliseconds': 1\n};\n\nmodule.exports = MULTIPLIERS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/MULTIPLIERS.js\n// module id = 106\n// module chunks = 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 107\n// module chunks = 1","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/sort.js","import {root} from './root';\r\n\r\n/**\r\n * Cookie utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\nexport default {\r\n\r\n /**\r\n * Write a cookie\r\n * @param {String} name Name of the cookie\r\n * @param {String} value Value of the cookie\r\n * @param {Number} hours Cookie duration in hours\r\n */\r\n write(name, value, hours) {\r\n let expire = '';\r\n if (hours) {\r\n expire = new Date((new Date()).getTime() + hours * 3600000);\r\n expire = '; expires=' + expire.toGMTString();\r\n }\r\n doc.cookie = name + '=' + escape(value) + expire;\r\n },\r\n\r\n /**\r\n * Read a cookie\r\n * @param {String} name Name of the cookie\r\n * @returns {String} Value of the cookie\r\n */\r\n read(name) {\r\n let cookieValue = '',\r\n search = name + '=';\r\n if (doc.cookie.length > 0) {\r\n let cookie = doc.cookie,\r\n offset = cookie.indexOf(search);\r\n if (offset !== -1) {\r\n offset += search.length;\r\n let end = cookie.indexOf(';', offset);\r\n if (end === -1) {\r\n end = cookie.length;\r\n }\r\n cookieValue = unescape(cookie.substring(offset, end));\r\n }\r\n }\r\n return cookieValue;\r\n },\r\n\r\n /**\r\n * Remove a cookie\r\n * @param {String} name Name of the cookie\r\n */\r\n remove(name) {\r\n this.write(name, '', -1);\r\n }\r\n\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/cookie.js","import {Feature} from '../feature';\r\nimport {addClass, removeClass} from '../dom';\r\n\r\n/**\r\n * Rows with alternating background color for improved readability\r\n */\r\nexport class AlternateRows extends Feature {\r\n\r\n /**\r\n * Creates an instance of AlternateRows.\r\n *\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'alternateRows');\r\n\r\n let config = this.config;\r\n /**\r\n * Css class for even rows (default: 'even')\r\n * @type {String}\r\n */\r\n this.evenCss = config.even_row_css_class || 'even';\r\n\r\n /**\r\n * Css class for odd rows (default: 'odd')\r\n * @type {String}\r\n */\r\n this.oddCss = config.odd_row_css_class || 'odd';\r\n }\r\n\r\n /**\r\n * Sets alternating rows color\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.processAll();\r\n\r\n // Subscribe to events\r\n this.emitter.on(['row-processed', 'row-paged'],\r\n (tf, rowIndex, arrIndex, isValid) =>\r\n this.processRow(rowIndex, arrIndex, isValid));\r\n this.emitter.on(['column-sorted'], () => this.processAll());\r\n this.emitter.on(['rows-changed'], () => this.processAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Apply background to all valid rows\r\n */\r\n processAll() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let validRowsIndex = tf.getValidRows(true);\r\n let indexLen = validRowsIndex.length;\r\n let idx = 0;\r\n\r\n //alternates bg color\r\n for (let j = 0; j < indexLen; j++) {\r\n let rowIdx = validRowsIndex[j];\r\n this.setRowBg(rowIdx, idx);\r\n idx++;\r\n }\r\n }\r\n\r\n /**\r\n * Set/remove row background based on row validation\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} arrIdx Array index\r\n * @param {Boolean} isValid Valid row flag\r\n */\r\n processRow(rowIdx, arrIdx, isValid) {\r\n if (isValid) {\r\n this.setRowBg(rowIdx, arrIdx);\r\n } else {\r\n this.removeRowBg(rowIdx);\r\n }\r\n }\r\n\r\n /**\r\n * Sets row background color\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} idx Valid rows collection index needed to calculate bg\r\n * color\r\n * @private\r\n */\r\n setRowBg(rowIdx, idx) {\r\n if (!this.isEnabled() || isNaN(rowIdx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n let i = isNaN(idx) ? rowIdx : idx;\r\n this.removeRowBg(rowIdx);\r\n\r\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\r\n }\r\n\r\n /**\r\n * Removes row background color\r\n * @param {Number} idx Row index\r\n * @private\r\n */\r\n removeRowBg(idx) {\r\n if (isNaN(idx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n removeClass(rows[idx], this.oddCss);\r\n removeClass(rows[idx], this.evenCss);\r\n }\r\n\r\n /**\r\n * Removes all alternating backgrounds\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let nbRows = this.tf.getRowsNb(true);\r\n for (let i = 0; i < nbRows; i++) {\r\n this.removeRowBg(i);\r\n }\r\n\r\n // Unsubscribe to events\r\n this.emitter.off(['row-processed', 'row-paged'],\r\n (tf, rowIndex, arrIndex, isValid) =>\r\n this.processRow(rowIndex, arrIndex, isValid));\r\n this.emitter.off(['column-sorted'], () => this.processAll());\r\n this.emitter.off(['rows-changed'], () => this.processAll());\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/alternateRows.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt} from '../event';\r\n\r\n/**\r\n * Clear button UI component\r\n */\r\nexport class ClearButton extends Feature {\r\n\r\n /**\r\n * Creates an instance of ClearButton\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'btnReset');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = f.btn_reset_target_id || null;\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = f.btn_reset_text || 'Reset';\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = f.btn_reset_css_class || 'reset';\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.btn_reset_tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = f.btn_reset_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let cont = createElm('span');\r\n\r\n // reset button is added to defined element\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.targetId ? tf.rDiv : elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/clearButton.js","import {Date as SugarDate} from 'sugar-date';\r\nimport 'sugar-date/locales';\r\nimport {Feature} from '../feature';\r\nimport {isObj, isArray} from '../types';\r\nimport {DATE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Wrapper for Sugar Date module providing datetime helpers and locales\r\n * @export\r\n * @class DateType\r\n */\r\nexport class DateType extends Feature {\r\n\r\n /**\r\n * Creates an instance of DateType\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dateType');\r\n\r\n /**\r\n * Global locale\r\n * @type {String}\r\n */\r\n this.locale = tf.locale;\r\n\r\n /**\r\n * Sugar Date instance\r\n * @type {Object}\r\n */\r\n this.datetime = SugarDate;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialize DateType instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Set global locale\r\n this.datetime.setLocale(this.locale);\r\n\r\n // Add formats from column types configuration if any\r\n this.addConfigFormats(this.tf.colTypes);\r\n\r\n this.emitter.on(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n // Broadcast date-type initialization\r\n this.emitter.emit('date-type-initialized', this.tf, this);\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Parse a string representation of a date for a specified locale and return\r\n * a date object\r\n * @param {String} dateStr String representation of a date\r\n * @param {String} localeCode Locale code (ie 'en-us')\r\n * @returns {Date}\r\n */\r\n parse(dateStr, localeCode) {\r\n return this.datetime.create(dateStr, localeCode);\r\n }\r\n\r\n /**\r\n * Check string representation of a date for a specified locale is valid\r\n * @param {any} dateStr String representation of a date\r\n * @param {any} localeCode Locale code (ie 'en-us')\r\n * @returns {Boolean}\r\n */\r\n isValid(dateStr, localeCode) {\r\n return this.datetime.isValid(this.parse(dateStr, localeCode));\r\n }\r\n\r\n /**\r\n * Return the type object of a specified column as per configuration or\r\n * passed collection\r\n * @param {Number} colIndex Column index\r\n * @param {Array} types Collection of column types, optional\r\n * @returns {Object}\r\n */\r\n getOptions(colIndex, types) {\r\n types = types || this.tf.colTypes;\r\n let colType = types[colIndex];\r\n return isObj(colType) ? colType : {};\r\n }\r\n\r\n /**\r\n * Return the locale code for supplied column index as per configuration\r\n * or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} Locale code (ie: 'en-us')\r\n */\r\n getLocale(colIndex) {\r\n return this.getOptions(colIndex).locale || this.locale;\r\n }\r\n\r\n /**\r\n * Add date time format(s) to a locale as specified by the passed\r\n * collection of column types, ie:\r\n * [\r\n * 'string',\r\n * 'number',\r\n * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']}\r\n * ]\r\n *\r\n * @param {Array} [types=[]] Collection of column types\r\n */\r\n addConfigFormats(types=[]) {\r\n types.forEach((type, idx) => {\r\n let options = this.getOptions(idx, types);\r\n if (options.type === DATE && options.hasOwnProperty('format')) {\r\n let locale = this.datetime.getLocale(\r\n options.locale || this.locale\r\n );\r\n let formats = isArray(options.format) ?\r\n options.format : [options.format];\r\n\r\n // Sugar date module throws exceptions with locale.addFormat\r\n try {\r\n formats.forEach((format) => {\r\n locale.addFormat(format);\r\n });\r\n } catch (ex) {\r\n root.console.error(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove DateType instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n // TODO: remove added formats\r\n\r\n this.emitter.off(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/dateType.js","import {Feature} from '../feature';\nimport {createElm, removeElm, elm, tag} from '../dom';\nimport {addEvt, targetEvt} from '../event';\nimport {contains} from '../string';\nimport {NONE} from '../const';\n\n/**\n * Grid layout, table with fixed headers\n */\nexport class GridLayout extends Feature {\n\n /**\n * Creates an instance of GridLayout\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'gridLayout');\n\n let f = this.config.grid_layout || {};\n\n /**\n * Grid-layout container width as CSS string\n * @type {String}\n */\n this.width = f.width || null;\n\n /**\n * Grid-layout container height as CSS string\n * @type {String}\n */\n this.height = f.height || null;\n\n /**\n * Css class for main container element\n * @type {String}\n */\n this.mainContCssClass = f.cont_css_class || 'grd_Cont';\n\n /**\n * Css class for body table container element\n * @type {String}\n */\n this.contCssClass = f.tbl_cont_css_class || 'grd_tblCont';\n\n /**\n * Css class for headers table container element\n * @type {String}\n */\n this.headContCssClass = f.tbl_head_css_class || 'grd_headTblCont';\n\n /**\n * Css class for toolbar container element (rows counter, paging etc.)\n * @type {String}\n */\n this.infDivCssClass = f.inf_grid_css_class || 'grd_inf';\n\n /**\n * Index of the headers row, default: 0\n * @type {Number}\n */\n this.headRowIndex = f.headers_row_index || 0;\n\n /**\n * Collection of the header row indexes to be moved into headers table\n * @type {Array}\n */\n this.headRows = f.headers_rows || [0];\n\n /**\n * Enable or disable column filters generation, default: true\n * @type {Boolean}\n */\n this.filters = f.filters === false ? false : true;\n\n /**\n * Enable or disable column headers, default: false\n * @type {Boolean}\n */\n this.noHeaders = Boolean(f.no_headers);\n\n /**\n * Grid-layout default column widht as CSS string\n * @type {String}\n */\n this.defaultColWidth = f.default_col_width || '100px';\n\n /**\n * List of column elements\n * @type {Array}\n * @private\n */\n this.colElms = [];\n\n /**\n * Prefix for grid-layout filter's cell ID\n * @type {String}\n * @private\n */\n this.prfxGridFltTd = '_td_';\n\n /**\n * Prefix for grid-layout header's cell ID\n * @type {String}\n * @private\n */\n this.prfxGridTh = 'tblHeadTh_';\n\n /**\n * Mark-up of original HTML table\n * @type {String}\n * @private\n */\n this.sourceTblHtml = tf.dom().outerHTML;\n\n /**\n * Indicates if working table has column elements\n * @type {Boolean}\n * @private\n */\n this.tblHasColTag = tag(tf.dom(), 'col').length > 0 ? true : false;\n\n /**\n * Main container element\n * @private\n */\n this.tblMainCont = null;\n\n /**\n * Table container element\n * @private\n */\n this.tblCont = null;\n\n /**\n * Headers' table container element\n * @private\n */\n this.headTblCont = null;\n\n /**\n * Headers' table element\n * @private\n */\n this.headTbl = null;\n\n // filters flag at TF level\n tf.fltGrid = this.filters;\n }\n\n /**\n * Generates a grid with fixed headers\n * TODO: reduce size of init by extracting single purposed methods\n */\n init() {\n let tf = this.tf;\n let tbl = tf.dom();\n\n if (this.initialized) {\n return;\n }\n\n // Override relevant TableFilter properties\n this.setOverrides();\n\n // Assign default column widths\n this.setDefaultColWidths();\n\n // Initial table width\n let tblW = this.initialTableWidth();\n\n //Main container: it will contain all the elements\n this.tblMainCont = this.createContainer(\n 'div', this.mainContCssClass);\n if (this.width) {\n this.tblMainCont.style.width = this.width;\n }\n tbl.parentNode.insertBefore(this.tblMainCont, tbl);\n\n //Table container: div wrapping content table\n this.tblCont = this.createContainer('div', this.contCssClass);\n this.setConfigWidth(this.tblCont);\n if (this.height) {\n this.tblCont.style.height = this.height;\n }\n tbl.parentNode.insertBefore(this.tblCont, tbl);\n let t = removeElm(tbl);\n this.tblCont.appendChild(t);\n\n //In case table width is expressed in %\n if (tbl.style.width === '') {\n tbl.style.width = (contains('%', tblW) ?\n tbl.clientWidth : tblW) + 'px';\n }\n\n let d = removeElm(this.tblCont);\n this.tblMainCont.appendChild(d);\n\n //Headers table container: div wrapping headers table\n this.headTblCont = this.createContainer(\n 'div', this.headContCssClass);\n\n //Headers table\n this.headTbl = createElm('table');\n let tH = createElm('tHead');\n\n //1st row should be headers row, ids are added if not set\n //Those ids are used by the sort feature\n let hRow = tbl.rows[this.headRowIndex];\n let sortTriggers = this.getSortTriggerIds(hRow);\n\n //Filters row is created\n let filtersRow = this.createFiltersRow();\n\n //Headers row are moved from content table to headers table\n this.setHeadersRow(tH);\n\n this.headTbl.appendChild(tH);\n if (tf.filtersRowIndex === 0) {\n tH.insertBefore(filtersRow, hRow);\n } else {\n tH.appendChild(filtersRow);\n }\n\n this.headTblCont.appendChild(this.headTbl);\n this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont);\n\n //THead needs to be removed in content table for sort feature\n let thead = tag(tbl, 'thead');\n if (thead.length > 0) {\n tbl.removeChild(thead[0]);\n }\n\n //Headers table style\n this.headTbl.style.tableLayout = 'fixed';\n tbl.style.tableLayout = 'fixed';\n this.headTbl.cellPadding = tbl.cellPadding;\n this.headTbl.cellSpacing = tbl.cellSpacing;\n\n //content table without headers needs col widths to be reset\n tf.setColWidths(this.headTbl);\n\n //Headers container width\n // this.headTblCont.style.width = this.tblCont.clientWidth+'px';\n\n tbl.style.width = '';\n //\n this.headTbl.style.width = tbl.clientWidth + 'px';\n //\n\n //scroll synchronisation\n addEvt(this.tblCont, 'scroll', (evt) => {\n let elm = targetEvt(evt);\n let scrollLeft = elm.scrollLeft;\n this.headTblCont.scrollLeft = scrollLeft;\n //New pointerX calc taking into account scrollLeft\n // if(!o.isPointerXOverwritten){\n // try{\n // o.Evt.pointerX = function(evt){\n // let e = evt || global.event;\n // let bdScrollLeft = tf_StandardBody().scrollLeft +\n // scrollLeft;\n // return (e.pageX + scrollLeft) ||\n // (e.clientX + bdScrollLeft);\n // };\n // o.isPointerXOverwritten = true;\n // } catch(err) {\n // o.isPointerXOverwritten = false;\n // }\n // }\n });\n\n // TODO: Trigger a custom event handled by sort extension\n let sort = tf.extension('sort');\n if (sort) {\n sort.asyncSort = true;\n sort.triggerIds = sortTriggers;\n }\n\n //Col elements are enough to keep column widths after sorting and\n //filtering\n this.setColumnElements();\n\n if (tf.popupFilters) {\n filtersRow.style.display = NONE;\n }\n\n if (tbl.clientWidth !== this.headTbl.clientWidth) {\n tbl.style.width = this.headTbl.clientWidth + 'px';\n }\n\n this.emitter.on(['column-hidden'],\n (tf, extension, colIndex/*, hiddenCols*/) => {\n // let hiddenWidth = parseInt(\n // this.colElms[colIndex].style.width, 10);\n // let headCols = tag(this.headTbl, 'col');\n // headCols[colIndex].style.width = '0';\n // this.colElms[colIndex].style.width = '0';\n let headTblW = parseInt(this.headTbl.style.width, 10);\n let hiddenWidth = parseInt(\n this.colElms[colIndex].style.width, 10);\n this.headTbl.style.width = (headTblW - hiddenWidth) + 'px';\n tbl.style.width = this.headTbl.style.width;\n });\n\n this.emitter.on(['column-shown'],\n (tf, extension, colIndex/*, hiddenCols*/) => {\n let width = parseInt(this.colElms[colIndex].style.width, 10);\n // let headCols = tag(this.headTbl, 'col');\n // headCols[colIndex].style.width = tf.colWidths[colIndex];\n // this.colElms[colIndex].style.width = tf.colWidths[colIndex];\n let headTblW = parseInt(this.headTbl.style.width, 10);\n // console.log('show',headTblW);\n this.headTbl.style.width = (headTblW + width) + 'px';\n tbl.style.width = this.headTbl.style.width;\n });\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Overrides TableFilter instance properties to adjust to grid layout mode\n * @private\n */\n setOverrides() {\n let tf = this.tf;\n tf.refRow = 0;\n tf.headersRow = 0;\n tf.filtersRowIndex = 1;\n tf.isExternalFlt = true;\n }\n\n /**\n * Set grid-layout default column widths if column widths are not defined\n * @private\n */\n setDefaultColWidths() {\n let tf = this.tf;\n if (tf.hasColWidths) {\n return;\n }\n for (let k = 0, len = tf.getCellsNb(); k < len; k++) {\n let colW;\n let cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k];\n if (cell.width !== '') {\n colW = cell.width;\n } else if (cell.style.width !== '') {\n colW = parseInt(cell.style.width, 10);\n } else {\n colW = this.defaultColWidth;\n }\n tf.colWidths[k] = colW;\n }\n tf.hasColWidths = true;\n tf.setColWidths();\n }\n\n /**\n * Initial table width\n * @returns {Number}\n * @private\n */\n initialTableWidth() {\n let tbl = this.tf.dom();\n let width; //initial table width\n\n if (tbl.width !== '') {\n width = tbl.width;\n }\n else if (tbl.style.width !== '') {\n width = tbl.style.width;\n } else {\n width = tbl.clientWidth;\n }\n return parseInt(width, 10);\n }\n\n /**\n * Creates container element\n * @param {String} tag Tag name\n * @param {String} className Css class to assign to element\n * @returns {DOMElement}\n * @private\n */\n createContainer(tag, className) {\n let element = createElm(tag);\n element.className = className;\n return element;\n }\n\n /**\n * Creates filters row with cells\n * @returns {HTMLTableRowElement}\n * @private\n */\n createFiltersRow() {\n let tf = this.tf;\n let filtersRow = createElm('tr');\n if (this.filters && tf.fltGrid) {\n tf.externalFltTgtIds = [];\n for (let j = 0; j < tf.getCellsNb(); j++) {\n let fltTdId = `${tf.prfxFlt + j + this.prfxGridFltTd + tf.id}`;\n let cl = createElm(tf.fltCellTag, ['id', fltTdId]);\n filtersRow.appendChild(cl);\n tf.externalFltTgtIds[j] = fltTdId;\n }\n }\n return filtersRow;\n }\n\n /**\n * Generates column elements if necessary and assigns their widths\n * @private\n */\n setColumnElements() {\n let tf = this.tf;\n let cols = tag(tf.dom(), 'col');\n this.tblHasColTag = cols.length > 0;\n\n for (let k = (tf.nbCells - 1); k >= 0; k--) {\n let col;\n\n if (!this.tblHasColTag) {\n col = createElm('col');\n tf.dom().insertBefore(col, tf.dom().firstChild);\n } else {\n col = cols[k];\n }\n col.style.width = tf.colWidths[k];\n this.colElms[k] = col;\n }\n this.tblHasColTag = true;\n }\n\n /**\n * Sets headers row in headers table\n * @param {HTMLHeadElement} tableHead Table head element\n * @private\n */\n setHeadersRow(tableHead) {\n if (this.noHeaders) {\n // Handle table with no headers, assuming here headers do not\n // exist\n tableHead.appendChild(createElm('tr'));\n } else {\n // Headers row are moved from content table to headers table\n for (let i = 0; i < this.headRows.length; i++) {\n let row = this.tf.dom().rows[this.headRows[i]];\n tableHead.appendChild(row);\n }\n }\n }\n\n /**\n * Sets width defined in configuration to passed element\n * @param {DOMElement} element DOM element\n * @private\n */\n setConfigWidth(element) {\n if (!this.width) {\n return;\n }\n if (this.width.indexOf('%') !== -1) {\n element.style.width = '100%';\n } else {\n element.style.width = this.width;\n }\n }\n\n /**\n * Returns a list of header IDs used for specifing external sort triggers\n * @param {HTMLTableRowElement} row DOM row element\n * @returns {Array} List of IDs\n * @private\n */\n getSortTriggerIds(row) {\n let tf = this.tf;\n let sortTriggers = [];\n for (let n = 0; n < tf.getCellsNb(); n++) {\n let c = row.cells[n];\n let thId = c.getAttribute('id');\n if (!thId || thId === '') {\n thId = `${this.prfxGridTh + n}_${tf.id}`;\n c.setAttribute('id', thId);\n }\n sortTriggers.push(thId);\n }\n return sortTriggers;\n }\n\n /**\n * Removes the grid layout\n */\n destroy() {\n let tf = this.tf;\n let tbl = tf.dom();\n\n if (!this.initialized) {\n return;\n }\n let t = removeElm(tbl);\n this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont);\n removeElm(this.tblMainCont);\n\n this.tblMainCont = null;\n this.headTblCont = null;\n this.headTbl = null;\n this.tblCont = null;\n\n tbl.outerHTML = this.sourceTblHtml;\n //needed to keep reference of table element for future usage\n this.tf.tbl = elm(tf.id);\n\n this.initialized = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/gridLayout.js","import {addEvt, removeEvt} from '../event';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst location = root.location;\r\nconst decodeURIComponent = root.decodeURIComponent;\r\nconst encodeURIComponent = root.encodeURIComponent;\r\n\r\n/**\r\n * Checks if browser has onhashchange event\r\n */\r\nexport const hasHashChange = () => {\r\n let docMode = root.documentMode;\r\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\r\n};\r\n\r\n/**\r\n * Manages state via URL hash changes\r\n *\r\n * @export\r\n * @class Hash\r\n */\r\nexport class Hash {\r\n\r\n /**\r\n * Creates an instance of Hash\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n /**\r\n * State object\r\n * @type {State}\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * Cached URL hash\r\n * @type {String} Hash string\r\n * @private\r\n */\r\n this.lastHash = null;\r\n\r\n /**\r\n * Application event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Bound sync wrapper for future use\r\n * @private\r\n */\r\n this.boundSync = null;\r\n }\r\n\r\n /**\r\n * Initializes the Hash object\r\n */\r\n init() {\r\n if (!hasHashChange()) {\r\n return;\r\n }\r\n\r\n this.lastHash = location.hash;\r\n //Store a bound sync wrapper\r\n this.boundSync = this.sync.bind(this);\r\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.on(['initialized'], this.boundSync);\r\n addEvt(root, 'hashchange', this.boundSync);\r\n }\r\n\r\n /**\r\n * Updates the URL hash based on a state change\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n update(state) {\r\n let hash = `#${encodeURIComponent(JSON.stringify(state))}`;\r\n if (this.lastHash === hash) {\r\n return;\r\n }\r\n\r\n location.hash = hash;\r\n this.lastHash = hash;\r\n }\r\n\r\n /**\r\n * Converts a URL hash into a state JSON object\r\n *\r\n * @param {String} hash URL hash fragment\r\n * @returns {Object} JSON object\r\n */\r\n parse(hash) {\r\n if (hash.indexOf('#') === -1) {\r\n return null;\r\n }\r\n hash = hash.substr(1);\r\n return JSON.parse(decodeURIComponent(hash));\r\n }\r\n\r\n /**\r\n * Applies current hash state to features\r\n */\r\n sync() {\r\n let state = this.parse(location.hash);\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Release Hash event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.off(['initialized'], this.boundSync);\r\n removeEvt(root, 'hashchange', this.boundSync);\r\n\r\n this.state = null;\r\n this.lastHash = null;\r\n this.emitter = null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/hash.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt, targetEvt, removeEvt} from '../event';\r\nimport {NONE} from '../const';\r\nimport {root} from '../root';\r\nimport {isEmpty} from '../types';\r\n\r\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\r\n '4.-Filter-operators';\r\nconst WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/';\r\n\r\n/**\r\n * Help UI component\r\n */\r\nexport class Help extends Feature {\r\n\r\n /**\r\n * Creates an instance of Help\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'help');\r\n\r\n let f = this.config.help_instructions || {};\r\n\r\n /**\r\n * ID of main custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = f.target_id || null;\r\n\r\n /**\r\n * ID of custom container element for instructions\r\n * @type {String}\r\n */\r\n this.contTgtId = f.container_target_id || null;\r\n\r\n /**\r\n * Instructions text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.instrText = !isEmpty(f.text) ? f.text :\r\n 'Use the filters above each column to filter and limit table ' +\r\n 'data. Advanced searches can be performed by using the following ' +\r\n 'operators:
<, <=, >, ' +\r\n '>=, =, *, !, {, }, ' +\r\n '||,&&, [empty], [nonempty], ' +\r\n 'rgx:
' +\r\n 'Learn more
';\r\n\r\n /**\r\n * Instructions HTML\r\n * @type {String}\r\n */\r\n this.instrHtml = f.html || null;\r\n\r\n /**\r\n * Help button text ('?')\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || '?';\r\n\r\n /**\r\n * Custom help button HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = f.btn_html || null;\r\n\r\n /**\r\n * Css class for help button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'helpBtn';\r\n\r\n /**\r\n * Css class for help container element\r\n * @type {String}\r\n */\r\n this.contCssClass = f.container_css_class || 'helpCont';\r\n\r\n /**\r\n * Button DOM element\r\n * @type {DOMElement}\r\n */\r\n this.btn = null;\r\n\r\n /**\r\n * Help container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Default HTML appended to instructions text\r\n * @type {String}\r\n */\r\n this.defaultHtml = '

TableFilter ' +\r\n 'v' + tf.version + '

' + '' + WEBSITE_URL + '' +\r\n '
©2015-' + tf.year + ' Max Guglielmi' +\r\n '
' +\r\n 'Close
';\r\n\r\n this.emitter.on(['init-help'], () => this.init());\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.cont && targetElm !== this.btn) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialise Help instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n let btn = createElm('span');\r\n let cont = createElm('div');\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n //help button is added to defined element\r\n if (!this.tgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.tgtId ? tf.rDiv : elm(this.tgtId);\r\n targetEl.appendChild(btn);\r\n\r\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\r\n\r\n if (!this.btnHtml) {\r\n divContainer.appendChild(cont);\r\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\r\n helplink.className = this.btnCssClass;\r\n helplink.appendChild(createText(this.btnText));\r\n btn.appendChild(helplink);\r\n addEvt(helplink, 'click', () => this.toggle());\r\n } else {\r\n btn.innerHTML = this.btnHtml;\r\n let helpEl = btn.firstChild;\r\n addEvt(helpEl, 'click', () => this.toggle());\r\n divContainer.appendChild(cont);\r\n }\r\n\r\n if (!this.instrHtml) {\r\n cont.innerHTML = this.instrText;\r\n cont.className = this.contCssClass;\r\n } else {\r\n if (this.contTgtId) {\r\n divContainer.appendChild(cont);\r\n }\r\n cont.innerHTML = this.instrHtml;\r\n if (!this.contTgtId) {\r\n cont.className = this.contCssClass;\r\n }\r\n }\r\n cont.innerHTML += this.defaultHtml;\r\n addEvt(cont, 'click', () => this.toggle());\r\n\r\n this.cont = cont;\r\n this.btn = btn;\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle help pop-up\r\n */\r\n toggle() {\r\n // check only if explicitily disabled as in this case undefined\r\n // signifies the help feature is enabled by default\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let divDisplay = this.cont.style.display;\r\n if (divDisplay === '' || divDisplay === NONE) {\r\n this.cont.style.display = 'inline';\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n } else {\r\n this.cont.style.display = NONE;\r\n }\r\n }\r\n\r\n /**\r\n * Remove help UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.btn);\r\n this.btn = null;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n this.boundMouseup = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/help.js","import {createText, createElm, getText} from '../dom';\r\nimport {isArray} from '../types';\r\nimport {rgxEsc} from '../string';\r\n\r\n/**\r\n * Highlight matched keywords upon filtering\r\n *\r\n * @export\r\n * @class HighlightKeyword\r\n */\r\nexport class HighlightKeyword {\r\n\r\n /**\r\n * Creates an instance of HighlightKeyword\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n let f = tf.config();\r\n\r\n /**\r\n * Css class for highlighted term\r\n * @type {String}\r\n */\r\n this.highlightCssClass = f.highlight_css_class || 'keyword';\r\n\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * TableFilter's emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n }\r\n\r\n /**\r\n * Initializes HighlightKeyword instance\r\n */\r\n init() {\r\n this.emitter.on(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.on(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} term Searched term\r\n * @param {String} cssClass Css class name\r\n *\r\n * TODO: refactor this method\r\n */\r\n highlight(node, term, cssClass) {\r\n // Iterate into this nodes childNodes\r\n if (node.hasChildNodes) {\r\n let children = node.childNodes;\r\n for (let i = 0; i < children.length; i++) {\r\n this.highlight(children[i], term, cssClass);\r\n }\r\n }\r\n\r\n if (node.nodeType === 3) {\r\n let nodeVal = node.nodeValue.toLowerCase();\r\n let termIdx = nodeVal.indexOf(term.toLowerCase());\r\n\r\n if (termIdx !== -1) {\r\n let pn = node.parentNode;\r\n if (pn && pn.className !== cssClass) {\r\n // term not highlighted yet\r\n let nv = node.nodeValue,\r\n // Create a load of replacement nodes\r\n before = createText(nv.substr(0, termIdx)),\r\n value = nv.substr(termIdx, term.length),\r\n after = createText(nv.substr(termIdx + term.length)),\r\n text = createText(value),\r\n container = createElm('span');\r\n container.className = cssClass;\r\n container.appendChild(text);\r\n pn.insertBefore(before, node);\r\n pn.insertBefore(container, node);\r\n pn.insertBefore(after, node);\r\n pn.removeChild(node);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} term\r\n * @param {String} cssClass Css class to remove\r\n */\r\n unhighlight(term, cssClass) {\r\n let highlightedNodes = this.tf.dom().querySelectorAll(`.${cssClass}`);\r\n for (let i = 0; i < highlightedNodes.length; i++) {\r\n let n = highlightedNodes[i];\r\n let nodeVal = getText(n);\r\n\r\n if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) {\r\n let parentNode = n.parentNode;\r\n parentNode.replaceChild(createText(nodeVal), n);\r\n parentNode.normalize();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\r\n unhighlightAll() {\r\n if (!this.tf.highlightKeywords) {\r\n return;\r\n }\r\n // iterate filters values to unhighlight all values\r\n this.tf.getFiltersValue().forEach((val) => {\r\n if (isArray(val)) {\r\n val.forEach((item) =>\r\n this.unhighlight(item, this.highlightCssClass));\r\n } else {\r\n this.unhighlight(val, this.highlightCssClass);\r\n }\r\n });\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n this.emitter.off(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.off(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Ensure filtering operators are handled before highlighting any match\r\n * @param {any} Table cell to look searched term into\r\n * @param {any} Searched termIdx\r\n */\r\n _processTerm(cell, term) {\r\n let tf = this.tf;\r\n let reLk = new RegExp(rgxEsc(tf.lkOperator));\r\n let reEq = new RegExp(tf.eqOperator);\r\n let reSt = new RegExp(tf.stOperator);\r\n let reEn = new RegExp(tf.enOperator);\r\n let reLe = new RegExp(tf.leOperator);\r\n let reGe = new RegExp(tf.geOperator);\r\n let reL = new RegExp(tf.lwOperator);\r\n let reG = new RegExp(tf.grOperator);\r\n let reD = new RegExp(tf.dfOperator);\r\n\r\n term = term\r\n .replace(reLk, '')\r\n .replace(reEq, '')\r\n .replace(reSt, '')\r\n .replace(reEn, '');\r\n\r\n if (reLe.test(term) || reGe.test(term) || reL.test(term) ||\r\n reG.test(term) || reD.test(term)) {\r\n term = getText(cell);\r\n }\r\n\r\n if (term === '') {\r\n return;\r\n }\r\n\r\n this.highlight(cell, term, this.highlightCssClass);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/highlightKeywords.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\nimport {root} from '../root';\r\nimport {NONE} from '../const';\r\n\r\nconst EVENTS = [\r\n 'before-filtering',\r\n 'before-populating-filter',\r\n 'before-page-change',\r\n 'before-clearing-filters',\r\n 'before-page-length-change',\r\n 'before-reset-page',\r\n 'before-reset-page-length',\r\n 'before-loading-extensions',\r\n 'before-loading-themes'\r\n];\r\n\r\n/**\r\n * Activity indicator\r\n *\r\n * @export\r\n * @class Loader\r\n * @extends {Feature}\r\n */\r\nexport class Loader extends Feature {\r\n\r\n /**\r\n * Creates an instance of Loader.\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'loader');\r\n\r\n let f = this.config.loader || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Loader container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Text displayed when indicator is visible\r\n * @type {String}\r\n */\r\n this.text = f.text || 'Loading...';\r\n\r\n /**\r\n * Custom HTML injected in Loader's container element\r\n * @type {String}\r\n */\r\n this.html = f.html || null;\r\n\r\n /**\r\n * Css class for Loader's container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'loader';\r\n\r\n /**\r\n * Close delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.closeDelay = 250;\r\n\r\n /**\r\n * Callback fired when loader is displayed\r\n * @type {Function}\r\n */\r\n this.onShow = isFn(f.on_show_loader) ?\r\n f.on_show_loader : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired when loader is closed\r\n * @type {Function}\r\n */\r\n this.onHide = isFn(f.on_hide_loader) ? f.on_hide_loader : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes Loader instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n let containerDiv = createElm('div');\r\n containerDiv.className = this.cssClass;\r\n\r\n let targetEl = !this.targetId ?\r\n tf.dom().parentNode : elm(this.targetId);\r\n if (!this.targetId) {\r\n targetEl.insertBefore(containerDiv, tf.dom());\r\n } else {\r\n targetEl.appendChild(containerDiv);\r\n }\r\n this.cont = containerDiv;\r\n if (!this.html) {\r\n this.cont.appendChild(createText(this.text));\r\n } else {\r\n this.cont.innerHTML = this.html;\r\n }\r\n\r\n this.show(NONE);\r\n\r\n // Subscribe to events\r\n emitter.on(EVENTS, () => this.show(''));\r\n emitter.on(EVENTS, () => this.show(NONE));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Shows or hides activity indicator\r\n * @param {String} Two possible values: '' or 'none'\r\n */\r\n show(p) {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let displayLoader = () => {\r\n if (!this.cont) {\r\n return;\r\n }\r\n if (p !== NONE) {\r\n this.onShow(this);\r\n }\r\n this.cont.style.display = p;\r\n if (p === NONE) {\r\n this.onHide(this);\r\n }\r\n };\r\n\r\n let t = p === NONE ? this.closeDelay : 1;\r\n root.setTimeout(displayLoader, t);\r\n }\r\n\r\n /**\r\n * Removes feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(EVENTS, () => this.show(''));\r\n emitter.off(EVENTS, () => this.show(NONE));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/loader.js","import {Feature} from '../feature';\r\nimport {addClass, removeClass, hasClass} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\n/**\r\n * Visual indicator for filtered columns\r\n * @export\r\n * @class MarkActiveColumns\r\n * @extends {Feature}\r\n */\r\nexport class MarkActiveColumns extends Feature {\r\n\r\n /**\r\n * Create an instance of MarkActiveColumns\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'markActiveColumns');\r\n\r\n let config = this.config.mark_active_columns || {};\r\n\r\n /**\r\n * Css class for filtered (active) columns\r\n * @type {String}\r\n */\r\n this.headerCssClass = config.header_css_class || 'activeHeader';\r\n\r\n /**\r\n * Callback fired before a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onBeforeActiveColumn = isFn(config.on_before_active_column) ?\r\n config.on_before_active_column : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onAfterActiveColumn = isFn(config.on_after_active_column) ?\r\n config.on_after_active_column : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initialise MarkActiveColumns instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.on(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Clear filtered columns visual indicator (background color)\r\n */\r\n clearActiveColumns() {\r\n let tf = this.tf;\r\n let len = tf.getCellsNb();\r\n for (let i = 0; i < len; i++) {\r\n removeClass(tf.getHeaderElement(i), this.headerCssClass);\r\n }\r\n }\r\n\r\n /**\r\n * Mark currently filtered column\r\n * @param {Number} colIndex Column index\r\n */\r\n markActiveColumn(colIndex) {\r\n let header = this.tf.getHeaderElement(colIndex);\r\n if (hasClass(header, this.headerCssClass)) {\r\n return;\r\n }\r\n this.onBeforeActiveColumn(this, colIndex);\r\n\r\n addClass(header, this.headerCssClass);\r\n\r\n this.onAfterActiveColumn(this, colIndex);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.clearActiveColumns();\r\n this.emitter.off(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.off(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/markActiveColumns.js","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, isFn, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'noResults');\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = f.content || 'No results';\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = f.custom_container || null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = f.custom_container_id || null;\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'no-results';\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = isFn(f.on_before_show_msg) ?\r\n f.on_before_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = isFn(f.on_after_show_msg) ?\r\n f.on_after_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = isFn(f.on_before_hide_msg) ?\r\n f.on_before_hide_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = isFn(f.on_after_hide_msg) ?\r\n f.on_after_hide_msg : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(['after-filtering'], () => this.toggle());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.hide();\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.tblCont.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/noResults.js","import {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isFn, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, keyCode, removeEvt} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'paging');\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'pgInp';\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = f.target_id || null;\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = !isNaN(f.length) ? f.length : 10;\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = f.results_per_page_target_id || null;\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = f.slc_css_class || 'pgSlc';\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = f.inp_css_class || 'pgNbInp';\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = f.results_per_page || null;\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = f.results_slc_css_class || 'rspg';\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = f.results_span_css_class || 'rspgSpan';\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = f.btn_next_page_text || '>';\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = f.btn_prev_page_text || '<';\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = f.btn_last_page_text || '>|';\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = f.btn_first_page_text || '|<';\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = f.btn_next_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = f.btn_prev_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = f.btn_first_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = f.btn_last_page_html ||\r\n (!tf.enableIcons ? null :\r\n '');\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = f.page_text || ' Page ';\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = f.of_text || ' of ';\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = f.nb_pages_css_class || 'nbpg';\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = f.btns === false ? false : true;\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = f.page_selector_type || SELECT;\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = isFn(f.on_before_change_page) ?\r\n f.on_before_change_page : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = isFn(f.on_after_change_page) ?\r\n f.on_after_change_page : EMPTY_FN;\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n let key = keyCode(e);\r\n if (key === ENTER_KEY) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n if (!this.tgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.tgtId ? tf.mDiv : elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], () => this.resetPagingInfo());\r\n this.emitter.on(['change-page'],\r\n (tf, pageNumber) => this.setPage(pageNumber));\r\n this.emitter.on(['change-page-results'],\r\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let mdiv = !this.tgtId ? tf.mDiv : elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n mdiv.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n mdiv.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n if (!this.pageLengthTgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.rDiv : elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx =\r\n (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) : slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'], () => this.resetPagingInfo());\r\n this.emitter.off(['change-page'],\r\n (tf, pageNumber) => this.setPage(pageNumber));\r\n this.emitter.off(['change-page-results'],\r\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/paging.js","import {Feature} from '../feature';\r\nimport {isFn, isUndef, EMPTY_FN} from '../types';\r\nimport {createElm, removeElm} from '../dom';\r\nimport {addEvt, cancelEvt, stopEvt, targetEvt, removeEvt} from '../event';\r\nimport {INPUT, NONE, CHECKLIST, MULTIPLE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Pop-up filter component\r\n * @export\r\n * @class PopupFilter\r\n * @extends {Feature}\r\n */\r\nexport class PopupFilter extends Feature {\r\n\r\n /**\r\n * Creates an instance of PopupFilter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'popupFilters');\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n // Enable external filters\r\n tf.isExternalFlt = true;\r\n tf.externalFltTgtIds = [];\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = f.close_on_filtering === false ? false : true;\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = f.image || tf.themesPath + 'icn_filter.gif';\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = f.image_active ||\r\n tf.themesPath + 'icn_filterActive.gif';\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = f.image_html ||\r\n '\"Column';\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = f.placeholder_css_class ||\r\n 'popUpPlaceholder';\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = f.div_css_class || 'popUpFilter';\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = f.adjust_to_container === false ? false : true;\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = isFn(f.on_before_popup_filter_open) ?\r\n f.on_before_popup_filter_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = isFn(f.on_after_popup_filter_open) ?\r\n f.on_after_popup_filter_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = isFn(f.on_before_popup_filter_close) ?\r\n f.on_before_popup_filter_close : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = isFn(f.on_after_popup_filter_close) ?\r\n f.on_after_popup_filter_close : EMPTY_FN;\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = this.filtersCache || [];\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n for (let i = 0; i < tf.nbCells; i++) {\r\n if (tf.getFilterType(i) === NONE) {\r\n continue;\r\n }\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n }\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltTgtIds.push(cont.id);\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltTgtIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/popupFilter.js","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\n/**\r\n * Rows counter UI component\r\n * @export\r\n * @class RowsCounter\r\n * @extends {Feature}\r\n */\r\nexport class RowsCounter extends Feature {\r\n\r\n /**\r\n * Creates an instance of RowsCounter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'rowsCounter');\r\n\r\n // TableFilter configuration\r\n let f = this.config.rows_counter || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Container DOM element for label displaying the total number of rows\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Text preceding the total number of rows\r\n * @type {String}\r\n */\r\n this.text = f.text || 'Rows: ';\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page when paging is enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.fromToTextSeparator = f.separator || '-';\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page and the total number of filterable rows when paging is\r\n * enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.overText = f.over_text || ' / ';\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'tot';\r\n\r\n /**\r\n * Callback fired before the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onBeforeRefreshCounter = isFn(f.on_before_refresh_counter) ?\r\n f.on_before_refresh_counter : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onAfterRefreshCounter = isFn(f.on_after_refresh_counter) ?\r\n f.on_after_refresh_counter : EMPTY_FN;\r\n }\r\n\r\n /**\r\n * Initializes RowsCounter instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n //rows counter container\r\n let countDiv = createElm('div');\r\n countDiv.className = this.cssClass;\r\n //rows counter label\r\n let countSpan = createElm('span');\r\n let countText = createElm('span');\r\n countText.appendChild(createText(this.text));\r\n\r\n // counter is added to defined element\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.targetId ? tf.lDiv : elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n countDiv.appendChild(countText);\r\n countDiv.appendChild(countSpan);\r\n targetEl.appendChild(countDiv);\r\n } else {\r\n //custom container, no need to append statusDiv\r\n targetEl.appendChild(countText);\r\n targetEl.appendChild(countSpan);\r\n }\r\n this.container = countDiv;\r\n this.label = countSpan;\r\n\r\n // subscribe to events\r\n this.emitter.on(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.on(['rows-changed'], () => this.refresh());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n this.refresh();\r\n }\r\n\r\n /**\r\n * Refreshes the rows counter\r\n * @param {Number} p Optional parameter the total number of rows to display\r\n */\r\n refresh(p) {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n this.onBeforeRefreshCounter(tf, this.label);\r\n\r\n let totTxt;\r\n if (!tf.paging) {\r\n if (p && p !== '') {\r\n totTxt = p;\r\n } else {\r\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\r\n }\r\n } else {\r\n let paging = tf.feature('paging');\r\n if (paging) {\r\n let nbValidRows = tf.getValidRowsNb();\r\n //paging start row\r\n let pagingStartRow = parseInt(paging.startPagingRow, 10) +\r\n ((nbValidRows > 0) ? 1 : 0);\r\n let pagingEndRow =\r\n (pagingStartRow + paging.pageLength) - 1 <=\r\n nbValidRows ?\r\n pagingStartRow + paging.pageLength - 1 :\r\n nbValidRows;\r\n totTxt = pagingStartRow + this.fromToTextSeparator +\r\n pagingEndRow + this.overText + nbValidRows;\r\n }\r\n }\r\n\r\n this.label.innerHTML = totTxt;\r\n this.onAfterRefreshCounter(tf, this.label, totTxt);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n if (!this.targetId && this.container) {\r\n removeElm(this.container);\r\n } else {\r\n elm(this.targetId).innerHTML = '';\r\n }\r\n this.label = null;\r\n this.container = null;\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.off(['rows-changed'], () => this.refresh());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/rowsCounter.js","import {Feature} from '../feature';\nimport {Hash} from './hash';\nimport {Storage} from './storage';\nimport {isEmpty} from '../string';\nimport {isArray, isNull, isString, isUndef} from '../types';\n\n/**\n * Features state object persistable with localStorage, cookie or URL hash\n *\n * @export\n * @class State\n * @extends {Feature}\n */\nexport class State extends Feature {\n\n /**\n * Creates an instance of State\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'state');\n\n let cfg = this.config.state;\n\n /**\n * Determines whether state is persisted with URL hash\n * @type {Boolean}\n */\n this.enableHash = cfg === true ||\n (isArray(cfg.types) && cfg.types.indexOf('hash') !== -1);\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableLocalStorage = isArray(cfg.types) &&\n cfg.types.indexOf('local_storage') !== -1;\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableCookie = isArray(cfg.types) &&\n cfg.types.indexOf('cookie') !== -1;\n\n /**\n * Persist filters values, enabled by default\n * @type {Boolean}\n */\n this.persistFilters = cfg.filters === false ? false : true;\n\n /**\n * Persist current page number when paging is enabled\n * @type {Boolean}\n */\n this.persistPageNumber = Boolean(cfg.page_number);\n\n /**\n * Persist page length when paging is enabled\n * @type {Boolean}\n */\n this.persistPageLength = Boolean(cfg.page_length);\n\n /**\n * Persist column sorting\n * @type {Boolean}\n */\n this.persistSort = Boolean(cfg.sort);\n\n /**\n * Persist columns visibility\n * @type {Boolean}\n */\n this.persistColsVisibility = Boolean(cfg.columns_visibility);\n\n /**\n * Persist filters row visibility\n * @type {Boolean}\n */\n this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\n\n /**\n * Cookie duration in hours\n * @type {Boolean}\n */\n this.cookieDuration = !isNaN(cfg.cookie_duration) ?\n parseInt(cfg.cookie_duration, 10) : 87600;\n\n /**\n * Enable Storage if localStorage or cookie is required\n * @type {Boolean}\n * @private\n */\n this.enableStorage = this.enableLocalStorage || this.enableCookie;\n\n /**\n * Storage instance if storage is required\n * @type {Storage}\n * @private\n */\n this.storage = null;\n\n /**\n * Hash instance if URL hash is required\n * @type {Boolean}\n * @private\n */\n this.hash = null;\n\n /**\n * Current page number\n * @type {Number}\n * @private\n */\n this.pageNb = null;\n\n /**\n * Current page length\n * @type {Number}\n * @private\n */\n this.pageLength = null;\n\n /**\n * Current column sorting\n * @type {Object}\n * @private\n */\n this.sort = null;\n\n /**\n * Current hidden columns\n * @type {Object}\n * @private\n */\n this.hiddenCols = null;\n\n /**\n * Filters row visibility\n * @type {Boolean}\n * @private\n */\n this.filtersVisibility = null;\n\n /**\n * State object\n * @type {Object}\n * @private\n */\n this.state = {};\n\n /**\n * Prefix for column ID\n * @type {String}\n * @private\n */\n this.prfxCol = 'col_';\n\n /**\n * Prefix for page number ID\n * @type {String}\n * @private\n */\n this.pageNbKey = 'page';\n\n /**\n * Prefix for page length ID\n * @type {String}\n * @private\n */\n this.pageLengthKey = 'page_length';\n\n /**\n * Prefix for filters visibility ID\n * @type {String}\n * @private\n */\n this.filtersVisKey = 'filters_visibility';\n }\n\n /**\n * Initializes State instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.on(['after-filtering'], () => this.update());\n this.emitter.on(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.on(['after-page-length-change'],\n (tf, pageLength) => this.updatePageLength(pageLength));\n this.emitter.on(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.on(['sort-initialized'], () => this._syncSort());\n this.emitter.on(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.on(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.on(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.on(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash = new Hash(this);\n this.hash.init();\n }\n if (this.enableStorage) {\n this.storage = new Storage(this);\n this.storage.init();\n }\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n\n /**\n * Update state object based on current features state\n */\n update() {\n if (!this.isEnabled()) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n if (this.persistFilters) {\n let filterValues = tf.getFiltersValue();\n\n filterValues.forEach((val, idx) => {\n let key = `${this.prfxCol}${idx}`;\n\n if (isString(val) && isEmpty(val)) {\n if (state.hasOwnProperty(key)) {\n state[key].flt = undefined;\n }\n } else {\n state[key] = state[key] || {};\n state[key].flt = val;\n }\n });\n }\n\n if (this.persistPageNumber) {\n if (isNull(this.pageNb)) {\n state[this.pageNbKey] = undefined;\n } else {\n state[this.pageNbKey] = this.pageNb;\n }\n }\n\n if (this.persistPageLength) {\n if (isNull(this.pageLength)) {\n state[this.pageLengthKey] = undefined;\n } else {\n state[this.pageLengthKey] = this.pageLength;\n }\n }\n\n if (this.persistSort) {\n if (!isNull(this.sort)) {\n // Remove previuosly sorted column\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].sort = undefined;\n }\n });\n\n let key = `${this.prfxCol}${this.sort.column}`;\n state[key] = state[key] || {};\n state[key].sort = { descending: this.sort.descending };\n }\n }\n\n if (this.persistColsVisibility) {\n if (!isNull(this.hiddenCols)) {\n // Clear previuosly hidden columns\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].hidden = undefined;\n }\n });\n\n this.hiddenCols.forEach((colIdx) => {\n let key = `${this.prfxCol}${colIdx}`;\n state[key] = state[key] || {};\n state[key].hidden = true;\n });\n }\n }\n\n if (this.persistFiltersVisibility) {\n if (isNull(this.filtersVisibility)) {\n state[this.filtersVisKey] = undefined;\n } else {\n state[this.filtersVisKey] = this.filtersVisibility;\n }\n }\n\n this.emitter.emit('state-changed', tf, state);\n }\n\n /**\n * Refresh page number field on page number changes\n *\n * @param {Number} pageNb Current page number\n */\n updatePage(pageNb) {\n this.pageNb = pageNb;\n this.update();\n }\n\n /**\n * Refresh page length field on page length changes\n *\n * @param {Number} pageLength Current page length value\n */\n updatePageLength(pageLength) {\n this.pageLength = pageLength;\n this.update();\n }\n\n /**\n * Refresh column sorting information on sort changes\n *\n * @param index {Number} Column index\n * @param {Boolean} descending Descending manner\n */\n updateSort(index, descending) {\n this.sort = {\n column: index,\n descending: descending\n };\n this.update();\n }\n\n /**\n * Refresh hidden columns information on columns visibility changes\n *\n * @param {Array} hiddenCols Columns indexes\n */\n updateColsVisibility(hiddenCols) {\n this.hiddenCols = hiddenCols;\n this.update();\n }\n\n /**\n * Refresh filters visibility on filters visibility change\n *\n * @param {Boolean} visible Visibility flad\n */\n updateFiltersVisibility(visible) {\n this.filtersVisibility = visible;\n this.update();\n }\n\n /**\n * Override state field\n *\n * @param state State object\n */\n override(state) {\n this.state = state;\n }\n\n /**\n * Sync stored features state\n */\n sync() {\n let state = this.state;\n let tf = this.tf;\n\n this._syncFilters();\n\n if (this.persistPageNumber) {\n let pageNumber = state[this.pageNbKey];\n this.emitter.emit('change-page', tf, pageNumber);\n }\n\n if (this.persistPageLength) {\n let pageLength = state[this.pageLengthKey];\n this.emitter.emit('change-page-results', tf, pageLength);\n }\n\n this._syncSort();\n this._syncColsVisibility();\n this._syncFiltersVisibility();\n }\n\n /**\n * Override current state with passed one and sync features\n *\n * @param {Object} state State object\n */\n overrideAndSync(state) {\n // To prevent state to react to features changes, state is temporarily\n // disabled\n this.disable();\n // State is overriden with passed state object\n this.override(state);\n // New hash state is applied to features\n this.sync();\n // State is re-enabled\n this.enable();\n }\n\n /**\n * Sync filters with stored values and filter table\n *\n * @private\n */\n _syncFilters() {\n if (!this.persistFilters) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n let val = state[key].flt;\n tf.setFilterValue(colIdx, val);\n }\n });\n\n tf.filter();\n }\n\n /**\n * Sync sorted column with stored sorting information and sort table\n *\n * @private\n */\n _syncSort() {\n if (!this.persistSort) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].sort)) {\n let sort = state[key].sort;\n this.emitter.emit('sort', tf, colIdx, sort.descending);\n }\n }\n });\n }\n\n /**\n * Sync hidden columns with stored information\n *\n * @private\n */\n _syncColsVisibility() {\n if (!this.persistColsVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let hiddenCols = [];\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].hidden)) {\n hiddenCols.push(colIdx);\n }\n }\n });\n\n hiddenCols.forEach((colIdx) => {\n this.emitter.emit('hide-column', tf, colIdx);\n });\n }\n\n /**\n * Sync filters visibility with stored information\n *\n * @private\n */\n _syncFiltersVisibility() {\n if (!this.persistFiltersVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let filtersVisibility = state[this.filtersVisKey];\n\n this.filtersVisibility = filtersVisibility;\n this.emitter.emit('show-filters', tf, filtersVisibility);\n }\n\n /**\n * Destroy State instance\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n this.state = {};\n\n this.emitter.off(['after-filtering'], () => this.update());\n this.emitter.off(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.off(['after-page-length-change'],\n (tf, index) => this.updatePageLength(index));\n this.emitter.off(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.off(['sort-initialized'], () => this._syncSort());\n this.emitter.off(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.off(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.off(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.off(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash.destroy();\n this.hash = null;\n }\n\n if (this.enableStorage) {\n this.storage.destroy();\n this.storage = null;\n }\n\n this.initialized = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/state.js","import {Feature} from '../feature';\r\nimport {root} from '../root';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {isFn, EMPTY_FN} from '../types';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-populating-filter',\r\n 'after-page-change',\r\n 'after-clearing-filters',\r\n 'after-page-length-change',\r\n 'after-reset-page',\r\n 'after-reset-page-length',\r\n 'after-loading-extensions',\r\n 'after-loading-themes'\r\n];\r\n\r\n/**\r\n * Status bar UI component\r\n * @export\r\n * @class StatusBar\r\n * @extends {Feature}\r\n */\r\nexport class StatusBar extends Feature {\r\n\r\n /**\r\n * Creates an instance of StatusBar\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'statusBar');\r\n\r\n // Configuration object\r\n let f = this.config.status_bar || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Message container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.msgContainer = null;\r\n\r\n /**\r\n * Label container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.labelContainer = null;\r\n\r\n /**\r\n * Text preceding status message\r\n * @type {String}\r\n */\r\n this.text = f.text || '';\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = f.css_class || 'status';\r\n\r\n /**\r\n * Message visibility duration in milliseconds\r\n * @type {Number}\r\n * @private\r\n */\r\n this.delay = 250;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShowMsg = isFn(f.on_before_show_msg) ?\r\n f.on_before_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShowMsg = isFn(f.on_after_show_msg) ?\r\n f.on_after_show_msg : EMPTY_FN;\r\n\r\n /**\r\n * Message appearing upon filtering\r\n * @type {String}\r\n */\r\n this.msgFilter = f.msg_filter || 'Filtering data...';\r\n\r\n /**\r\n * Message appearing when a drop-down filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulate = f.msg_populate || 'Populating filter...';\r\n\r\n /**\r\n * Message appearing when a checklist filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulateCheckList = f.msg_populate_checklist ||\r\n 'Populating list...';\r\n\r\n /**\r\n * Message appearing when a pagination page is changed\r\n * @type {String}\r\n */\r\n this.msgChangePage = f.msg_change_page || 'Collecting paging data...';\r\n\r\n /**\r\n * Message appearing when filters are cleared\r\n * @type {String}\r\n */\r\n this.msgClear = f.msg_clear || 'Clearing filters...';\r\n\r\n /**\r\n * Message appearing when the page length is changed\r\n * @type {String}\r\n */\r\n this.msgChangeResults = f.msg_change_results ||\r\n 'Changing results per page...';\r\n\r\n /**\r\n * Message appearing when the page is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPage = f.msg_reset_page || 'Re-setting page...';\r\n\r\n /**\r\n * Message appearing when the page length is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPageLength = f.msg_reset_page_length ||\r\n 'Re-setting page length...';\r\n\r\n /**\r\n * Message appearing upon column sorting\r\n * @type {String}\r\n */\r\n this.msgSort = f.msg_sort || 'Sorting data...';\r\n\r\n /**\r\n * Message appearing when extensions are loading\r\n * @type {String}\r\n */\r\n this.msgLoadExtensions = f.msg_load_extensions ||\r\n 'Loading extensions...';\r\n\r\n /**\r\n * Message appearing when themes are loading\r\n * @type {String}\r\n */\r\n this.msgLoadThemes = f.msg_load_themes || 'Loading theme(s)...';\r\n }\r\n\r\n /**\r\n * Initializes StatusBar instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n //status bar container\r\n let statusDiv = createElm('div');\r\n statusDiv.className = this.cssClass;\r\n\r\n //status bar label\r\n let statusSpan = createElm('span');\r\n //preceding text\r\n let statusSpanText = createElm('span');\r\n statusSpanText.appendChild(createText(this.text));\r\n\r\n // target element container\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = (!this.targetId) ? tf.lDiv : elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n statusDiv.appendChild(statusSpanText);\r\n statusDiv.appendChild(statusSpan);\r\n targetEl.appendChild(statusDiv);\r\n } else {\r\n // custom container, no need to append statusDiv\r\n targetEl.appendChild(statusSpanText);\r\n targetEl.appendChild(statusSpan);\r\n }\r\n\r\n this.container = statusDiv;\r\n this.msgContainer = statusSpan;\r\n this.labelContainer = statusSpanText;\r\n\r\n // Subscribe to events\r\n emitter.on(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.on(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.on(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.on(['before-clearing-filters'], () =>\r\n this.message(this.msgClear));\r\n emitter.on(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.on(['before-reset-page'],\r\n () => this.message(this.msgResetPage));\r\n emitter.on(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.on(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.on(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.on(EVENTS, () => this.message(''));\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Display status message\r\n * @param {String} [t=''] Message to be displayed\r\n */\r\n message(t = '') {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.onBeforeShowMsg(this.tf, t);\r\n\r\n let d = t === '' ? this.delay : 1;\r\n root.setTimeout(() => {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.msgContainer.innerHTML = t;\r\n\r\n this.onAfterShowMsg(this.tf, t);\r\n }, d);\r\n }\r\n\r\n /**\r\n * Destroy StatusBar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n this.container.innerHTML = '';\r\n if (!this.targetId) {\r\n removeElm(this.container);\r\n }\r\n this.labelContainer = null;\r\n this.msgContainer = null;\r\n this.container = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.off(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.off(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.off(['before-clearing-filters'],\r\n () => this.message(this.msgClear));\r\n emitter.off(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.off(['before-reset-page'], () =>\r\n this.message(this.msgResetPage));\r\n emitter.off(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.off(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.off(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.off(EVENTS, () => this.message(''));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/statusBar.js","\r\nimport Cookie from '../cookie';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst localStorage = root.localStorage;\r\nconst location = root.location;\r\n\r\n/**\r\n * Checks if browser has Storage feature\r\n */\r\nexport const hasStorage = () => {\r\n return 'Storage' in root;\r\n};\r\n\r\n/**\r\n * Stores the features state in browser's local storage or cookie\r\n *\r\n * @export\r\n * @class Storage\r\n */\r\nexport class Storage {\r\n\r\n /**\r\n * Creates an instance of Storage\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n\r\n /**\r\n * State object\r\n * @type {State}\r\n * @private\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * TableFilter object\r\n * @type {TableFilter}\r\n * @private\r\n */\r\n this.tf = state.tf;\r\n\r\n /**\r\n * Persist with local storage\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\r\n\r\n /**\r\n * Persist with cookie\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\r\n\r\n /**\r\n * Emitter object\r\n * @type {Emitter}\r\n * @private\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Cookie duration in hours from state object\r\n * @type {Number}\r\n * @private\r\n */\r\n this.duration = state.cookieDuration;\r\n }\r\n\r\n\r\n /**\r\n * Initializes the Storage object\r\n */\r\n init() {\r\n this.emitter.on(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.on(['initialized'], () => this.sync());\r\n }\r\n\r\n /**\r\n * Persists the features state on state changes\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n save(state) {\r\n if (this.enableLocalStorage) {\r\n localStorage[this.getKey()] = JSON.stringify(state);\r\n } else {\r\n Cookie.write(this.getKey(), JSON.stringify(state), this.duration);\r\n }\r\n }\r\n\r\n /**\r\n * Turns stored string into a State JSON object\r\n *\r\n * @returns {Object} JSON object\r\n */\r\n retrieve() {\r\n let state = null;\r\n if (this.enableLocalStorage) {\r\n state = localStorage[this.getKey()];\r\n } else {\r\n state = Cookie.read(this.getKey());\r\n }\r\n\r\n if (!state) {\r\n return null;\r\n }\r\n return JSON.parse(state);\r\n }\r\n\r\n /**\r\n * Removes persisted state from storage\r\n */\r\n remove() {\r\n if (this.enableLocalStorage) {\r\n localStorage.removeItem(this.getKey());\r\n } else {\r\n Cookie.remove(this.getKey());\r\n }\r\n }\r\n\r\n /**\r\n * Applies persisted state to features\r\n */\r\n sync() {\r\n let state = this.retrieve();\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Returns the storage key\r\n *\r\n * @returns {String} Key\r\n */\r\n getKey() {\r\n return JSON.stringify({\r\n key: `${this.tf.prfxTf}_${this.tf.id}`,\r\n path: location.pathname\r\n });\r\n }\r\n\r\n /**\r\n * Release Storage event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.off(['initialized'], () => this.sync());\r\n\r\n this.remove();\r\n\r\n this.state = null;\r\n this.emitter = null;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/storage.js","import {addEvt, cancelEvt, stopEvt, targetEvt, keyCode} from './event';\r\nimport {\r\n addClass, createElm, createOpt, elm, getText, getFirstTextNode,\r\n removeClass, removeElm, tag\r\n} from './dom';\r\nimport {contains, matchCase, rgxEsc, trim} from './string';\r\nimport {isEmpty as isEmptyString} from './string';\r\nimport {\r\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN\r\n} from './types';\r\nimport {parse as parseNb} from './number';\r\n\r\nimport {root} from './root';\r\nimport {Emitter} from './emitter';\r\nimport {Dropdown} from './modules/dropdown';\r\nimport {CheckList} from './modules/checkList';\r\n\r\nimport {\r\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\r\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\r\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER,\r\n FEATURES\r\n} from './const';\r\n\r\nlet doc = root.document;\r\n\r\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\r\nexport class TableFilter {\r\n\r\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\r\n constructor(...args) {\r\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Current version\r\n * @type {String}\r\n */\r\n this.version = '0.5.24';\r\n\r\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\r\n this.year = new Date().getFullYear();\r\n\r\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.tbl = null;\r\n\r\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\r\n this.refRow = null;\r\n\r\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.headersRow = null;\r\n\r\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.cfg = {};\r\n\r\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbFilterableRows = 0;\r\n\r\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbCells = null;\r\n\r\n /** @private */\r\n this.initialized = false;\r\n\r\n let startRow;\r\n\r\n // TODO: use for-of\r\n args.forEach((arg) => {\r\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\r\n this.tbl = arg;\r\n this.id = arg.id || `tf_${new Date().getTime()}_`;\r\n } else if (isString(arg)) {\r\n this.id = arg;\r\n this.tbl = elm(arg);\r\n } else if (isNumber(arg)) {\r\n startRow = arg;\r\n } else if (isObj(arg)) {\r\n this.cfg = arg;\r\n }\r\n });\r\n\r\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n DOM element not found.`);\r\n }\r\n\r\n if (this.getRowsNb() === 0) {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n requires at least 1 row.`);\r\n }\r\n\r\n // configuration object\r\n let f = this.cfg;\r\n\r\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = new Emitter();\r\n\r\n //Start row et cols nb\r\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\r\n\r\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\r\n this.basePath = f.base_path || 'tablefilter/';\r\n\r\n /*** filters' grid properties ***/\r\n\r\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\r\n this.fltGrid = f.grid === false ? false : true;\r\n\r\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\r\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = isNaN(f.filters_row_index) ?\r\n 0 : f.filters_row_index;\r\n\r\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\r\n this.headersRow = isNaN(f.headers_row_index) ?\r\n (this.filtersRowIndex === 0 ? 1 : 0) : f.headers_row_index;\r\n\r\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\r\n this.fltCellTag = isString(f.filters_cell_tag) ?\r\n f.filters_cell_tag : CELL_TAG;\r\n\r\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIds = [];\r\n\r\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\r\n this.validRowsIndex = [];\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.infDiv = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lDiv = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rDiv = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.mDiv = null;\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.infDivCssClass = f.inf_div_css_class || 'inf';\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lDivCssClass = f.left_div_css_class || 'ldiv';\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rDivCssClass = f.right_div_css_class || 'rdiv';\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.mDivCssClass = f.middle_div_css_class || 'mdiv';\r\n\r\n /*** filters' grid appearance ***/\r\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\r\n this.stylePath = f.style_path || this.basePath + 'style/';\r\n\r\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\r\n this.stylesheet = f.stylesheet || this.stylePath + 'tablefilter.css';\r\n\r\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.stylesheetId = this.id + '_style';\r\n\r\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\r\n this.fltsRowCssClass = f.flts_row_css_class || 'fltrow';\r\n\r\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\r\n this.enableIcons = f.enable_icons === false ? false : true;\r\n\r\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\r\n this.alternateRows = Boolean(f.alternate_rows);\r\n\r\n /**\r\n * Indicate whether columns widths are set\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasColWidths = isArray(f.col_widths);\r\n\r\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\r\n this.colWidths = this.hasColWidths ? f.col_widths : [];\r\n\r\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\r\n this.fltCssClass = f.flt_css_class || 'flt';\r\n\r\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\r\n this.fltMultiCssClass = f.flt_multi_css_class || 'flt_multi';\r\n\r\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\r\n this.fltSmallCssClass = f.flt_small_css_class || 'flt_s';\r\n\r\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\r\n this.singleFltCssClass = f.single_flt_css_class || 'single_flt';\r\n\r\n /*** filters' grid behaviours ***/\r\n\r\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\r\n this.enterKey = f.enter_key === false ? false : true;\r\n\r\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\r\n this.onBeforeFilter = isFn(f.on_before_filter) ?\r\n f.on_before_filter : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\r\n this.onAfterFilter = isFn(f.on_after_filter) ?\r\n f.on_after_filter : EMPTY_FN;\r\n\r\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\r\n this.caseSensitive = Boolean(f.case_sensitive);\r\n\r\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\r\n\r\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\r\n this.exactMatchByCol = this.hasExactMatchByCol ?\r\n f.columns_exact_match : [];\r\n\r\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\r\n this.exactMatch = Boolean(f.exact_match);\r\n\r\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.ignoreDiacritics = f.ignore_diacritics;\r\n\r\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\r\n this.linkedFilters = Boolean(f.linked_filters);\r\n\r\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\r\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\r\n\r\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.activeFilterId = null;\r\n\r\n /**\r\n * Enable/disable always visible rows, excluded from filtering\r\n * @type {Boolean}\r\n */\r\n this.hasVisibleRows = Boolean(f.rows_always_visible);\r\n\r\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\r\n this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : [];\r\n\r\n /**\r\n * Enable/disable external filters generation\r\n * @type {Boolean}\r\n */\r\n this.isExternalFlt = Boolean(f.external_flt_grid);\r\n\r\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\r\n this.externalFltTgtIds = f.external_flt_grid_ids || [];\r\n\r\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\r\n this.onFiltersLoaded = isFn(f.on_filters_loaded) ?\r\n f.on_filters_loaded : EMPTY_FN;\r\n\r\n /**\r\n * Enable/disable single filter filtering all columns\r\n * @type {Boolean}\r\n */\r\n this.singleSearchFlt = Boolean(f.single_filter);\r\n\r\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\r\n this.onRowValidated = isFn(f.on_row_validated) ?\r\n f.on_row_validated : EMPTY_FN;\r\n\r\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\r\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\r\n isArray(f.cell_parser.cols) ?\r\n f.cell_parser : { cols: [], parse: EMPTY_FN };\r\n\r\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\r\n this.watermark = f.watermark || '';\r\n\r\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isWatermarkArray = isArray(this.watermark);\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.toolBarTgtId = f.toolbar_target_id || null;\r\n\r\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\r\n this.help = isUndef(f.help_instructions) ? undefined :\r\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\r\n\r\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean}\r\n */\r\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\r\n\r\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\r\n this.markActiveColumns = isObj(f.mark_active_columns) ||\r\n Boolean(f.mark_active_columns);\r\n\r\n /*** select filter's customisation and behaviours ***/\r\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\r\n this.clearFilterText = f.clear_filter_text || 'Clear';\r\n\r\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\r\n this.enableEmptyOption = Boolean(f.enable_empty_option);\r\n\r\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.emptyText = f.empty_text || '(Empty)';\r\n\r\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\r\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\r\n\r\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\r\n\r\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\r\n this.onSlcChange = f.on_change === false ? false : true;\r\n\r\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.sortSlc = isUndef(f.sort_select) ? true :\r\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumAsc = Boolean(f.sort_num_asc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumDesc = Boolean(f.sort_num_desc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\r\n\r\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\r\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\r\n\r\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\r\n this.hasCustomOptions = isObj(f.custom_options);\r\n\r\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\r\n this.customOptions = f.custom_options;\r\n\r\n /*** Filter operators ***/\r\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\r\n this.rgxOperator = f.regexp_operator || 'rgx:';\r\n\r\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\r\n this.emOperator = f.empty_operator || '[empty]';\r\n\r\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\r\n this.nmOperator = f.nonempty_operator || '[nonempty]';\r\n\r\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\r\n this.orOperator = f.or_operator || '||';\r\n\r\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\r\n this.anOperator = f.and_operator || '&&';\r\n\r\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\r\n this.grOperator = f.greater_operator || '>';\r\n\r\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\r\n this.lwOperator = f.lower_operator || '<';\r\n\r\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\r\n this.leOperator = f.lower_equal_operator || '<=';\r\n\r\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\r\n this.geOperator = f.greater_equal_operator || '>=';\r\n\r\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.dfOperator = f.different_operator || '!';\r\n\r\n /**\r\n * Like operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.lkOperator = f.like_operator || '*';\r\n\r\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.eqOperator = f.equal_operator || '=';\r\n\r\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.stOperator = f.start_with_operator || '{';\r\n\r\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.enOperator = f.end_with_operator || '}';\r\n\r\n // this.curExp = f.cur_exp || '^[¥£€$]';\r\n\r\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\r\n this.separator = f.separator || ',';\r\n\r\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\r\n\r\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\r\n\r\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.loader = isObj(f.loader) || Boolean(f.loader);\r\n\r\n /*** validation - reset buttons/links ***/\r\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\r\n this.displayBtn = Boolean(f.btn);\r\n\r\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || (!this.enableIcons ? 'Go' : '');\r\n\r\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class ||\r\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon');\r\n\r\n /**\r\n * Enable clear button\r\n * @type {Boolean}\r\n */\r\n this.btnReset = Boolean(f.btn_reset);\r\n\r\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\r\n this.onBeforeReset = isFn(f.on_before_reset) ?\r\n f.on_before_reset : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\r\n this.onAfterReset = isFn(f.on_after_reset) ?\r\n f.on_after_reset : EMPTY_FN;\r\n\r\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\r\n this.paging = isObj(f.paging) || Boolean(f.paging);\r\n\r\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbHiddenRows = 0;\r\n\r\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Boolean}\r\n */\r\n this.autoFilter = Boolean(f.auto_filter);\r\n\r\n /**\r\n * Auto-filter delay in msecs\r\n * @type {Number}\r\n */\r\n this.autoFilterDelay = !isNaN(f.auto_filter_delay) ?\r\n f.auto_filter_delay : AUTO_FILTER_DELAY;\r\n\r\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isUserTyping = null;\r\n\r\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.autoFilterTimer = null;\r\n\r\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\r\n this.highlightKeywords = Boolean(f.highlight_keywords);\r\n\r\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\r\n this.noResults = isObj(f.no_results_message) ||\r\n Boolean(f.no_results_message);\r\n\r\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\r\n this.state = isObj(f.state) || Boolean(f.state);\r\n\r\n /*** data types ***/\r\n\r\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.dateType = true;\r\n\r\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\r\n this.locale = f.locale || 'en';\r\n\r\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\r\n this.thousandsSeparator = f.thousands_separator || ',';\r\n\r\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\r\n this.decimalSeparator = f.decimal_separator || '.';\r\n\r\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\r\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\r\n\r\n /*** ids prefixes ***/\r\n /**\r\n * Main prefix\r\n * @private\r\n */\r\n this.prfxTf = 'TF';\r\n\r\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\r\n this.prfxFlt = 'flt';\r\n\r\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\r\n this.prfxValButton = 'btn';\r\n\r\n /**\r\n * Toolbar container ID prefix\r\n * @private\r\n */\r\n this.prfxInfDiv = 'inf_';\r\n\r\n /**\r\n * Toolbar left element ID prefix\r\n * @private\r\n */\r\n this.prfxLDiv = 'ldiv_';\r\n\r\n /**\r\n * Toolbar right element ID prefix\r\n * @private\r\n */\r\n this.prfxRDiv = 'rdiv_';\r\n\r\n /**\r\n * Toolbar middle element ID prefix\r\n * @private\r\n */\r\n this.prfxMDiv = 'mdiv_';\r\n\r\n /**\r\n * Responsive Css class\r\n * @private\r\n */\r\n this.prfxResponsive = 'resp';\r\n\r\n /*** extensions ***/\r\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n * @private\r\n */\r\n this.extensions = f.extensions;\r\n\r\n /**\r\n * Determine whether extensions are loaded\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExtensions = isArray(this.extensions);\r\n\r\n /*** themes ***/\r\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\r\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\r\n\r\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\r\n\r\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themes = f.themes || [];\r\n\r\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themesPath = f.themes_path || this.stylePath + 'themes/';\r\n\r\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\r\n this.responsive = Boolean(f.responsive);\r\n\r\n /**\r\n * Features registry\r\n * @private\r\n */\r\n this.Mod = {};\r\n\r\n /**\r\n * Extensions registry\r\n * @private\r\n */\r\n this.ExtRegistry = {};\r\n\r\n //conditionally instantiate required features\r\n this.instantiateFeatures(\r\n Object.keys(FEATURES).map((item) => FEATURES[item])\r\n );\r\n\r\n //load styles if necessary\r\n this.import(this.stylesheetId, this.stylesheet, null, 'link');\r\n }\r\n\r\n /**\r\n * Initialise features and layout\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.nbCells = this.getCellsNb(this.refRow);\r\n let Mod = this.Mod;\r\n let n = this.singleSearchFlt ? 1 : this.nbCells;\r\n let inpclass;\r\n\r\n //loads theme\r\n this.loadThemes();\r\n\r\n const { dateType, help, state, markActiveColumns, gridLayout, loader,\r\n highlightKeyword, popupFilter, rowsCounter, statusBar, clearButton,\r\n alternateRows, noResults, paging } = FEATURES;\r\n\r\n //explicitly initialise features in given order\r\n this.initFeatures([\r\n dateType,\r\n help,\r\n state,\r\n markActiveColumns,\r\n gridLayout,\r\n loader,\r\n highlightKeyword,\r\n popupFilter\r\n ]);\r\n\r\n //filters grid is not generated\r\n if (!this.fltGrid) {\r\n this._initNoFilters();\r\n } else {\r\n let fltrow = this._insertFiltersRow();\r\n\r\n this.nbFilterableRows = this.getRowsNb();\r\n\r\n // Generate filters\r\n for (let i = 0; i < n; i++) {\r\n this.emitter.emit('before-filter-init', this, i);\r\n\r\n let fltcell = createElm(this.fltCellTag),\r\n col = this.getFilterType(i);\r\n\r\n if (this.singleSearchFlt) {\r\n fltcell.colSpan = this.nbCells;\r\n }\r\n if (!this.gridLayout) {\r\n fltrow.appendChild(fltcell);\r\n }\r\n inpclass = (i === n - 1 && this.displayBtn) ?\r\n this.fltSmallCssClass : this.fltCssClass;\r\n\r\n //only 1 input for single search\r\n if (this.singleSearchFlt) {\r\n col = INPUT;\r\n inpclass = this.singleFltCssClass;\r\n }\r\n\r\n //drop-down filters\r\n if (col === SELECT || col === MULTIPLE) {\r\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\r\n Mod.dropdown.init(i, this.isExternalFlt, fltcell);\r\n }\r\n // checklist\r\n else if (col === CHECKLIST) {\r\n Mod.checkList = Mod.checkList || new CheckList(this);\r\n Mod.checkList.init(i, this.isExternalFlt, fltcell);\r\n } else {\r\n this._buildInputFilter(i, inpclass, fltcell);\r\n }\r\n\r\n // this adds submit button\r\n if (i === n - 1 && this.displayBtn) {\r\n this._buildSubmitButton(i, fltcell);\r\n }\r\n\r\n this.emitter.emit('after-filter-init', this, i);\r\n }\r\n\r\n this.emitter.on(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n }//if this.fltGrid\r\n\r\n /* Features */\r\n if (this.hasVisibleRows) {\r\n this.emitter.on(['after-filtering'],\r\n () => this.enforceVisibility());\r\n this.enforceVisibility();\r\n }\r\n\r\n this.initFeatures([\r\n rowsCounter,\r\n statusBar,\r\n clearButton,\r\n alternateRows,\r\n noResults,\r\n paging\r\n ]);\r\n\r\n if (this.hasColWidths && !this.gridLayout) {\r\n this.setColWidths();\r\n }\r\n\r\n //TF css class is added to table\r\n if (!this.gridLayout) {\r\n addClass(this.dom(), this.prfxTf);\r\n if (this.responsive) {\r\n addClass(this.dom(), this.prfxResponsive);\r\n }\r\n }\r\n\r\n /* Load extensions */\r\n this.initExtensions();\r\n\r\n // Subscribe to events\r\n if (this.linkedFilters) {\r\n this.emitter.on(['after-filtering'], () => this.linkFilters());\r\n }\r\n\r\n this.initialized = true;\r\n\r\n this.onFiltersLoaded(this);\r\n\r\n this.emitter.emit('initialized', this);\r\n }\r\n\r\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\r\n detectKey(evt) {\r\n if (!this.enterKey) {\r\n return;\r\n }\r\n if (evt) {\r\n let key = keyCode(evt);\r\n if (key === ENTER_KEY) {\r\n this.filter();\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n } else {\r\n this.isUserTyping = true;\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\r\n onKeyUp(evt) {\r\n if (!this.autoFilter) {\r\n return;\r\n }\r\n let key = keyCode(evt);\r\n this.isUserTyping = false;\r\n\r\n function filter() {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n if (!this.isUserTyping) {\r\n this.filter();\r\n this.isUserTyping = null;\r\n }\r\n }\r\n\r\n if (key !== ENTER_KEY && key !== TAB_KEY && key !== ESC_KEY &&\r\n key !== UP_ARROW_KEY && key !== DOWN_ARROW_KEY) {\r\n if (this.autoFilterTimer === null) {\r\n this.autoFilterTimer = root.setInterval(filter.bind(this),\r\n this.autoFilterDelay);\r\n }\r\n } else {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\r\n onKeyDown() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = true;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\r\n onInpFocus(evt) {\r\n let elm = targetEvt(evt);\r\n this.emitter.emit('filter-focus', this, elm);\r\n }\r\n\r\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\r\n onInpBlur() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = false;\r\n root.clearInterval(this.autoFilterTimer);\r\n }\r\n this.emitter.emit('filter-blur', this);\r\n }\r\n\r\n /**\r\n * Insert filters row at initialization\r\n */\r\n _insertFiltersRow() {\r\n // TODO: prevent filters row generation for popup filters too,\r\n // to reduce and simplify headers row index adjusting across lib modules\r\n // (GridLayout, PopupFilter etc)\r\n if (this.gridLayout) {\r\n return;\r\n }\r\n let fltrow;\r\n\r\n let thead = tag(this.dom(), 'thead');\r\n if (thead.length > 0) {\r\n fltrow = thead[0].insertRow(this.filtersRowIndex);\r\n } else {\r\n fltrow = this.dom().insertRow(this.filtersRowIndex);\r\n }\r\n\r\n fltrow.className = this.fltsRowCssClass;\r\n\r\n if (this.isExternalFlt) {\r\n fltrow.style.display = NONE;\r\n }\r\n\r\n this.emitter.emit('filters-row-inserted', this, fltrow);\r\n return fltrow;\r\n }\r\n\r\n /**\r\n * Initialize filtersless table\r\n */\r\n _initNoFilters() {\r\n if (this.fltGrid) {\r\n return;\r\n }\r\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\r\n this.nbFilterableRows = this.getRowsNb();\r\n }\r\n\r\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildInputFilter(colIndex, cssClass, container) {\r\n let col = this.getFilterType(colIndex);\r\n let externalFltTgtId = this.isExternalFlt ?\r\n this.externalFltTgtIds[colIndex] : null;\r\n let inpType = col === INPUT ? 'text' : 'hidden';\r\n let inp = createElm(INPUT,\r\n ['id', this.buildFilterId(colIndex)],\r\n ['type', inpType], ['ct', colIndex]);\r\n\r\n if (inpType !== 'hidden' && this.watermark) {\r\n inp.setAttribute('placeholder',\r\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\r\n this.watermark\r\n );\r\n }\r\n inp.className = cssClass || this.fltCssClass;\r\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(inp);\r\n } else {\r\n container.appendChild(inp);\r\n }\r\n\r\n this.fltIds.push(inp.id);\r\n\r\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\r\n addEvt(inp, 'keydown', () => this.onKeyDown());\r\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\r\n addEvt(inp, 'blur', () => this.onInpBlur());\r\n }\r\n\r\n /**\r\n * Build submit button\r\n * @param {Number} colIndex Column index\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildSubmitButton(colIndex, container) {\r\n let externalFltTgtId = this.isExternalFlt ?\r\n this.externalFltTgtIds[colIndex] : null;\r\n let btn = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnText]\r\n );\r\n btn.className = this.btnCssClass;\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(btn);\r\n } else {\r\n container.appendChild(btn);\r\n }\r\n\r\n addEvt(btn, 'click', () => this.filter());\r\n }\r\n\r\n /**\r\n * Istantiate the collection of features required by the\r\n * configuration and add them to the features registry. A feature is\r\n * described by a `class` and `name` fields and and optional `property`\r\n * field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n instantiateFeatures(features = []) {\r\n features.forEach((feature) => {\r\n // TODO: remove the property field.\r\n // Due to naming convention inconsistencies, a `property`\r\n // field is added to allow a conditional instanciation based\r\n // on that property on TableFilter, if supplied.\r\n feature.property = feature.property || feature.name;\r\n if (this[feature.property] === true || feature.enforce === true) {\r\n let {class: Cls, name} = feature;\r\n\r\n this.Mod[name] = this.Mod[name] || new Cls(this);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initialise the passed features collection. A feature is described by a\r\n * `class` and `name` fields and and optional `property` field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n initFeatures(features = []) {\r\n features.forEach((feature) => {\r\n let {property, name} = feature;\r\n if (this[property] === true && this.Mod[name]) {\r\n this.Mod[name].init();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\r\n feature(name) {\r\n return this.Mod[name];\r\n }\r\n\r\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\r\n initExtensions() {\r\n if (!this.hasExtensions) {\r\n return;\r\n }\r\n\r\n let exts = this.extensions;\r\n // Set config's publicPath dynamically for Webpack...\r\n __webpack_public_path__ = this.basePath;\r\n\r\n this.emitter.emit('before-loading-extensions', this);\r\n for (let i = 0, len = exts.length; i < len; i++) {\r\n let ext = exts[i];\r\n this.loadExtension(ext);\r\n }\r\n this.emitter.emit('after-loading-extensions', this);\r\n }\r\n\r\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\r\n loadExtension(ext) {\r\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\r\n return;\r\n }\r\n\r\n let name = ext.name;\r\n let path = ext.path;\r\n let modulePath;\r\n\r\n if (name && path) {\r\n modulePath = ext.path + name;\r\n } else {\r\n name = name.replace('.js', '');\r\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\r\n }\r\n\r\n // Require pattern for Webpack\r\n require(['./' + modulePath], (mod) => {\r\n /* eslint-disable */\r\n let inst = new mod.default(this, ext);\r\n /* eslint-enable */\r\n inst.init();\r\n this.ExtRegistry[name] = inst;\r\n });\r\n }\r\n\r\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\r\n extension(name) {\r\n return this.ExtRegistry[name];\r\n }\r\n\r\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\r\n hasExtension(name) {\r\n return !isEmpty(this.ExtRegistry[name]);\r\n }\r\n\r\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\r\n registerExtension(inst, name) {\r\n this.ExtRegistry[name] = inst;\r\n }\r\n\r\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\r\n destroyExtensions() {\r\n let reg = this.ExtRegistry;\r\n\r\n Object.keys(reg).forEach((key) => {\r\n reg[key].destroy();\r\n reg[key] = undefined;\r\n });\r\n }\r\n\r\n /**\r\n * Load themes defined in the configuration object\r\n */\r\n loadThemes() {\r\n if (!this.hasThemes) {\r\n return;\r\n }\r\n\r\n let themes = this.themes;\r\n this.emitter.emit('before-loading-themes', this);\r\n\r\n //Default theme config\r\n if (this.enableDefaultTheme) {\r\n let defaultTheme = { name: 'default' };\r\n this.themes.push(defaultTheme);\r\n }\r\n if (isArray(themes)) {\r\n for (let i = 0, len = themes.length; i < len; i++) {\r\n let theme = themes[i];\r\n let name = theme.name;\r\n let path = theme.path;\r\n let styleId = this.prfxTf + name;\r\n if (name && !path) {\r\n path = this.themesPath + name + '/' + name + '.css';\r\n }\r\n else if (!name && theme.path) {\r\n name = 'theme{0}'.replace('{0}', i);\r\n }\r\n\r\n if (!this.isImported(path, 'link')) {\r\n this.import(styleId, path, null, 'link');\r\n }\r\n }\r\n }\r\n\r\n // Enable loader indicator\r\n this.loader = true;\r\n\r\n this.emitter.emit('after-loading-themes', this);\r\n }\r\n\r\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\r\n getStylesheet(name = 'default') {\r\n return elm(this.prfxTf + name);\r\n }\r\n\r\n /**\r\n * Destroy filter grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n if (this.isExternalFlt && !this.popupFilters) {\r\n this.removeExternalFlts();\r\n }\r\n\r\n this.removeToolbar();\r\n\r\n if (this.hasExtensions) {\r\n this.destroyExtensions();\r\n }\r\n\r\n this.validateAllRows();\r\n\r\n // broadcast destroy event modules and extensions are subscribed to\r\n emitter.emit('destroy', this);\r\n\r\n if (this.fltGrid && !this.gridLayout) {\r\n this.dom().deleteRow(this.filtersRowIndex);\r\n }\r\n\r\n // unsubscribe to events\r\n if (this.hasVisibleRows) {\r\n emitter.off(['after-filtering'], () => this.enforceVisibility());\r\n }\r\n if (this.linkedFilters) {\r\n emitter.off(['after-filtering'], () => this.linkFilters());\r\n }\r\n this.emitter.off(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n removeClass(this.dom(), this.prfxTf);\r\n removeClass(this.dom(), this.prfxResponsive);\r\n\r\n this.nbHiddenRows = 0;\r\n this.validRowsIndex = [];\r\n this.fltIds = [];\r\n this.initialized = false;\r\n }\r\n\r\n /**\r\n * Generate container element for paging, reset button, rows counter etc.\r\n */\r\n setToolbar() {\r\n if (this.infDiv) {\r\n return;\r\n }\r\n\r\n /*** container div ***/\r\n let infDiv = createElm('div');\r\n infDiv.className = this.infDivCssClass;\r\n\r\n //custom container\r\n if (this.toolBarTgtId) {\r\n elm(this.toolBarTgtId).appendChild(infDiv);\r\n }\r\n //grid-layout\r\n else if (this.gridLayout) {\r\n let gridLayout = this.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(infDiv);\r\n infDiv.className = gridLayout.infDivCssClass;\r\n }\r\n //default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(infDiv);\r\n this.dom().insertBefore(cont, this.dom().firstChild);\r\n }\r\n this.infDiv = infDiv;\r\n\r\n /*** left div containing rows # displayer ***/\r\n let lDiv = createElm('div');\r\n lDiv.className = this.lDivCssClass;\r\n infDiv.appendChild(lDiv);\r\n this.lDiv = lDiv;\r\n\r\n /*** right div containing reset button\r\n + nb results per page select ***/\r\n let rDiv = createElm('div');\r\n rDiv.className = this.rDivCssClass;\r\n infDiv.appendChild(rDiv);\r\n this.rDiv = rDiv;\r\n\r\n /*** mid div containing paging elements ***/\r\n let mDiv = createElm('div');\r\n mDiv.className = this.mDivCssClass;\r\n infDiv.appendChild(mDiv);\r\n this.mDiv = mDiv;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(this.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n this.Mod.help.enable();\r\n this.emitter.emit('init-help', this);\r\n }\r\n }\r\n\r\n /**\r\n * Remove toolbar container element\r\n */\r\n removeToolbar() {\r\n if (!this.infDiv) {\r\n return;\r\n }\r\n removeElm(this.infDiv);\r\n this.infDiv = null;\r\n\r\n let tbl = this.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (elm) => removeElm(elm));\r\n }\r\n\r\n /**\r\n * Remove all the external column filters\r\n */\r\n removeExternalFlts() {\r\n if (!this.isExternalFlt) {\r\n return;\r\n }\r\n let ids = this.externalFltTgtIds,\r\n len = ids.length;\r\n for (let ct = 0; ct < len; ct++) {\r\n let externalFltTgtId = ids[ct],\r\n externalFlt = elm(externalFltTgtId);\r\n if (externalFlt) {\r\n externalFlt.innerHTML = '';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\r\n isCustomOptions(colIndex) {\r\n return this.hasCustomOptions &&\r\n this.customOptions.cols.indexOf(colIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\r\n getCustomOptions(colIndex) {\r\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\r\n return;\r\n }\r\n\r\n let customOptions = this.customOptions;\r\n let cols = customOptions.cols;\r\n let optTxt = [], optArray = [];\r\n let index = cols.indexOf(colIndex);\r\n let slcValues = customOptions.values[index];\r\n let slcTexts = customOptions.texts[index];\r\n let slcSort = customOptions.sorts[index];\r\n\r\n for (let r = 0, len = slcValues.length; r < len; r++) {\r\n optArray.push(slcValues[r]);\r\n if (slcTexts[r]) {\r\n optTxt.push(slcTexts[r]);\r\n } else {\r\n optTxt.push(slcValues[r]);\r\n }\r\n }\r\n if (slcSort) {\r\n optArray.sort();\r\n optTxt.sort();\r\n }\r\n return [optArray, optTxt];\r\n }\r\n\r\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\r\n filter() {\r\n if (!this.fltGrid || !this.initialized) {\r\n return;\r\n }\r\n //fire onbefore callback\r\n this.onBeforeFilter(this);\r\n this.emitter.emit('before-filtering', this);\r\n\r\n let row = this.dom().rows,\r\n nbRows = this.getRowsNb(true),\r\n hiddenRows = 0;\r\n\r\n this.validRowsIndex = [];\r\n // search args re-init\r\n let searchArgs = this.getFiltersValue();\r\n\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n // already filtered rows display re-init\r\n row[k].style.display = '';\r\n\r\n let cells = row[k].cells;\r\n let nchilds = cells.length;\r\n\r\n // checks if row has exact cell #\r\n if (nchilds !== this.nbCells) {\r\n continue;\r\n }\r\n\r\n let occurence = [],\r\n isRowValid = true,\r\n //only for single filter search\r\n singleFltRowValid = false;\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n //searched keyword\r\n let sA = searchArgs[this.singleSearchFlt ? 0 : j];\r\n\r\n if (sA === '') {\r\n continue;\r\n }\r\n\r\n let cellValue = matchCase(this.getCellValue(cells[j]),\r\n this.caseSensitive);\r\n\r\n //multiple search parameter operator ||\r\n let sAOrSplit = sA.toString().split(this.orOperator),\r\n //multiple search || parameter boolean\r\n hasMultiOrSA = sAOrSplit.length > 1,\r\n //multiple search parameter operator &&\r\n sAAndSplit = sA.toString().split(this.anOperator),\r\n //multiple search && parameter boolean\r\n hasMultiAndSA = sAAndSplit.length > 1;\r\n\r\n //detect operators or array query\r\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\r\n let cS,\r\n s,\r\n occur = false;\r\n if (isArray(sA)) {\r\n s = sA;\r\n } else {\r\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\r\n }\r\n // isolate search term and check occurence in cell data\r\n for (let w = 0, len = s.length; w < len; w++) {\r\n cS = trim(s[w]);\r\n occur = this._testTerm(cS, cellValue, j);\r\n\r\n if (occur) {\r\n this.emitter.emit('highlight-keyword', this,\r\n cells[j], cS);\r\n }\r\n if ((hasMultiOrSA && occur) ||\r\n (hasMultiAndSA && !occur)) {\r\n break;\r\n }\r\n if (isArray(sA) && occur) {\r\n break;\r\n }\r\n }\r\n occurence[j] = occur;\r\n\r\n }\r\n //single search parameter\r\n else {\r\n occurence[j] = this._testTerm(trim(sA), cellValue, j);\r\n if (occurence[j]) {\r\n this.emitter.emit('highlight-keyword', this, cells[j],\r\n sA);\r\n }\r\n }//else single param\r\n\r\n if (!occurence[j]) {\r\n isRowValid = false;\r\n }\r\n if (this.singleSearchFlt && occurence[j]) {\r\n singleFltRowValid = true;\r\n }\r\n\r\n this.emitter.emit('cell-processed', this, j, cells[j]);\r\n }//for j\r\n\r\n if (this.singleSearchFlt && singleFltRowValid) {\r\n isRowValid = true;\r\n }\r\n\r\n this.validateRow(k, isRowValid);\r\n if (!isRowValid) {\r\n hiddenRows++;\r\n }\r\n\r\n this.emitter.emit('row-processed', this, k,\r\n this.validRowsIndex.length, isRowValid);\r\n }// for k\r\n\r\n this.nbHiddenRows = hiddenRows;\r\n\r\n //fire onafterfilter callback\r\n this.onAfterFilter(this);\r\n\r\n this.emitter.emit('after-filtering', this, searchArgs);\r\n }\r\n\r\n /**\r\n * Test for a match of search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {Number} colIdx Column index\r\n * @return {Boolean}\r\n */\r\n _testTerm(term, cellValue, colIdx) {\r\n let numData;\r\n let decimal = this.getDecimal(colIdx);\r\n let reLe = new RegExp(this.leOperator),\r\n reGe = new RegExp(this.geOperator),\r\n reL = new RegExp(this.lwOperator),\r\n reG = new RegExp(this.grOperator),\r\n reD = new RegExp(this.dfOperator),\r\n reLk = new RegExp(rgxEsc(this.lkOperator)),\r\n reEq = new RegExp(this.eqOperator),\r\n reSt = new RegExp(this.stOperator),\r\n reEn = new RegExp(this.enOperator),\r\n // re_an = new RegExp(this.anOperator),\r\n // re_cr = new RegExp(this.curExp),\r\n reEm = this.emOperator,\r\n reNm = this.nmOperator,\r\n reRe = new RegExp(rgxEsc(this.rgxOperator));\r\n\r\n term = matchCase(term, this.caseSensitive);\r\n\r\n let occurence = false;\r\n\r\n //Search arg operator tests\r\n let hasLO = reL.test(term),\r\n hasLE = reLe.test(term),\r\n hasGR = reG.test(term),\r\n hasGE = reGe.test(term),\r\n hasDF = reD.test(term),\r\n hasEQ = reEq.test(term),\r\n hasLK = reLk.test(term),\r\n // hatermN = re_an.test(term),\r\n hasST = reSt.test(term),\r\n hasEN = reEn.test(term),\r\n hasEM = (reEm === term),\r\n hasNM = (reNm === term),\r\n hasRE = reRe.test(term);\r\n\r\n // Check for dates or resolve date type\r\n if (this.hasType(colIdx, [DATE])) {\r\n let dte1, dte2;\r\n\r\n let dateType = this.Mod.dateType;\r\n let isValidDate = dateType.isValid.bind(dateType);\r\n let parseDate = dateType.parse.bind(dateType);\r\n let locale = dateType.getLocale(colIdx);\r\n\r\n // Search arg dates tests\r\n let isLDate = hasLO &&\r\n isValidDate(term.replace(reL, ''), locale);\r\n let isLEDate = hasLE &&\r\n isValidDate(term.replace(reLe, ''), locale);\r\n let isGDate = hasGR &&\r\n isValidDate(term.replace(reG, ''), locale);\r\n let isGEDate = hasGE &&\r\n isValidDate(term.replace(reGe, ''), locale);\r\n let isDFDate = hasDF &&\r\n isValidDate(term.replace(reD, ''), locale);\r\n let isEQDate = hasEQ &&\r\n isValidDate(term.replace(reEq, ''), locale);\r\n\r\n dte1 = parseDate(cellValue, locale);\r\n\r\n // lower equal date\r\n if (isLEDate) {\r\n dte2 = parseDate(term.replace(reLe, ''), locale);\r\n occurence = dte1 <= dte2;\r\n }\r\n // lower date\r\n else if (isLDate) {\r\n dte2 = parseDate(term.replace(reL, ''), locale);\r\n occurence = dte1 < dte2;\r\n }\r\n // greater equal date\r\n else if (isGEDate) {\r\n dte2 = parseDate(term.replace(reGe, ''), locale);\r\n occurence = dte1 >= dte2;\r\n }\r\n // greater date\r\n else if (isGDate) {\r\n dte2 = parseDate(term.replace(reG, ''), locale);\r\n occurence = dte1 > dte2;\r\n }\r\n // different date\r\n else if (isDFDate) {\r\n dte2 = parseDate(term.replace(reD, ''), locale);\r\n occurence = dte1.toString() !== dte2.toString();\r\n }\r\n // equal date\r\n else if (isEQDate) {\r\n dte2 = parseDate(term.replace(reEq, ''), locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n // searched keyword with * operator doesn't have to be a date\r\n else if (reLk.test(term)) {// like date\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n else if (isValidDate(term)) {\r\n dte2 = parseDate(term, locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = isEmptyString(cellValue);\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = !isEmptyString(cellValue);\r\n } else {\r\n occurence = contains(term, cellValue,\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n }\r\n }\r\n\r\n else {\r\n // Convert to number anyways to auto-resolve type in case not\r\n // defined by configuration\r\n numData = Number(cellValue) || parseNb(cellValue, decimal);\r\n\r\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\r\n // rgx:)\r\n // lower equal\r\n if (hasLE) {\r\n occurence = numData <= parseNb(\r\n term.replace(reLe, ''),\r\n decimal\r\n );\r\n }\r\n //greater equal\r\n else if (hasGE) {\r\n occurence = numData >= parseNb(\r\n term.replace(reGe, ''),\r\n decimal\r\n );\r\n }\r\n //lower\r\n else if (hasLO) {\r\n occurence = numData < parseNb(\r\n term.replace(reL, ''),\r\n decimal\r\n );\r\n }\r\n //greater\r\n else if (hasGR) {\r\n occurence = numData > parseNb(\r\n term.replace(reG, ''),\r\n decimal\r\n );\r\n }\r\n //different\r\n else if (hasDF) {\r\n occurence = contains(term.replace(reD, ''), cellValue,\r\n false, this.caseSensitive) ? false : true;\r\n }\r\n //like\r\n else if (hasLK) {\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n //equal\r\n else if (hasEQ) {\r\n occurence = contains(term.replace(reEq, ''), cellValue,\r\n true, this.caseSensitive);\r\n }\r\n //starts with\r\n else if (hasST) {\r\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\r\n true : false;\r\n }\r\n //ends with\r\n else if (hasEN) {\r\n let searchArg = term.replace(reEn, '');\r\n occurence =\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\r\n (cellValue.length - 1) - (searchArg.length - 1) &&\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\r\n > -1 ? true : false;\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = isEmptyString(cellValue);\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = !isEmptyString(cellValue);\r\n }\r\n //regexp\r\n else if (hasRE) {\r\n //in case regexp throws\r\n try {\r\n //operator is removed\r\n let srchArg = term.replace(reRe, '');\r\n let rgx = new RegExp(srchArg);\r\n occurence = rgx.test(cellValue);\r\n } catch (ex) {\r\n occurence = false;\r\n }\r\n } else {\r\n // If numeric type data, perform a strict equality test and\r\n // fallback to unformatted number string comparison\r\n if (numData &&\r\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\r\n !this.singleSearchFlt) {\r\n // parseNb can return 0 for strings which are not\r\n // formatted numbers, in that case return the original\r\n // string. TODO: handle this in parseNb\r\n term = parseNb(term, decimal) || term;\r\n occurence = numData === term ||\r\n contains(term.toString(), numData.toString(),\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n } else {\r\n // Finally test search term is contained in cell data\r\n occurence = contains(\r\n term,\r\n cellValue,\r\n this.isExactMatch(colIdx),\r\n this.caseSensitive,\r\n this.ignoresDiacritics(colIdx)\r\n );\r\n }\r\n }\r\n\r\n }//else\r\n\r\n return occurence;\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\r\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, true, exclude);\r\n }\r\n\r\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Arrat} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\r\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, false, exclude);\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\r\n getColValues(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = []\r\n ) {\r\n let row = this.dom().rows;\r\n let nbRows = this.getRowsNb(true);\r\n let colValues = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n colValues.push(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n for (let i = this.refRow; i < nbRows; i++) {\r\n let isExludedRow = false;\r\n // checks if current row index appears in exclude array\r\n if (exclude.length > 0) {\r\n isExludedRow = exclude.indexOf(i) !== -1;\r\n }\r\n let cell = row[i].cells,\r\n nchilds = cell.length;\r\n\r\n // checks if row has exact cell # and is not excluded\r\n if (nchilds === this.nbCells && !isExludedRow) {\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nchilds; j++) {\r\n if (j !== colIndex) {\r\n continue;\r\n }\r\n let data = getContent(cell[j]);\r\n colValues.push(data);\r\n }\r\n }\r\n }\r\n return colValues;\r\n }\r\n\r\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\r\n getFilterValue(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let fltValue = '';\r\n let flt = this.getFilterElement(index);\r\n if (!flt) {\r\n return fltValue;\r\n }\r\n\r\n let fltColType = this.getFilterType(index);\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n fltValue = flt.value;\r\n }\r\n //mutiple select\r\n else if (fltColType === MULTIPLE) {\r\n fltValue = this.feature('dropdown').getValues(index);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n fltValue = this.feature('checkList').getValues(index);\r\n }\r\n //return an empty string if collection is empty or contains a single\r\n //empty string\r\n if (isArray(fltValue) && fltValue.length === 0 ||\r\n (fltValue.length === 1 && fltValue[0] === '')) {\r\n fltValue = '';\r\n }\r\n\r\n return fltValue;\r\n }\r\n\r\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\r\n getFiltersValue() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let searchArgs = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltValue = this.getFilterValue(i);\r\n if (isArray(fltValue)) {\r\n searchArgs.push(fltValue);\r\n } else {\r\n searchArgs.push(trim(fltValue));\r\n }\r\n }\r\n return searchArgs;\r\n }\r\n\r\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\r\n getFilterId(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n return this.fltIds[index];\r\n }\r\n\r\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\r\n getFiltersByType(type, bool) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let arr = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltType = this.getFilterType(i);\r\n if (fltType === type.toLowerCase()) {\r\n let a = bool ? i : this.fltIds[i];\r\n arr.push(a);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\r\n getFilterElement(index) {\r\n let fltId = this.fltIds[index];\r\n return elm(fltId);\r\n }\r\n\r\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\r\n getCellsNb(rowIndex = 0) {\r\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\r\n return tr ? tr.cells.length : 0;\r\n }\r\n\r\n /**\r\n * Return the number of filterable rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row\r\n * @return {Number} Number of filterable rows\r\n */\r\n getRowsNb(includeHeaders) {\r\n let s = isUndef(this.refRow) ? 0 : this.refRow;\r\n let ntrs = this.dom().rows.length;\r\n if (includeHeaders) {\r\n s = 0;\r\n }\r\n return parseInt(ntrs - s, 10);\r\n }\r\n\r\n\r\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\r\n getCellValue(cell) {\r\n let idx = cell.cellIndex;\r\n let cellParser = this.cellParser;\r\n // Invoke cellParser for this column if any\r\n if (cellParser.cols.indexOf(idx) !== -1) {\r\n return cellParser.parse(this, cell, idx);\r\n } else {\r\n return getText(cell);\r\n }\r\n }\r\n\r\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\r\n getCellData(cell) {\r\n let colIndex = cell.cellIndex;\r\n let value = this.getCellValue(cell);\r\n\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n return parseNb(value, this.getDecimal(colIndex));\r\n }\r\n else if (this.hasType(colIndex, [NUMBER])) {\r\n return Number(value) || parseNb(value);\r\n }\r\n else if (this.hasType(colIndex, [DATE])){\r\n let dateType = this.Mod.dateType;\r\n return dateType.parse(value, dateType.getLocale(colIndex));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getTableData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n let rows = this.dom().rows;\r\n let nbRows = this.getRowsNb(true);\r\n let tblData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n tblData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n let rowData = [k, []];\r\n let cells = rows[k].cells;\r\n for (let j = 0, len = cells.length; j < len; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[j]);\r\n rowData[1].push(cellValue);\r\n }\r\n tblData.push(rowData);\r\n }\r\n return tblData;\r\n }\r\n\r\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n filteredData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n if (this.validRowsIndex.length === 0) {\r\n return [];\r\n }\r\n let rows = this.dom().rows,\r\n filteredData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n filteredData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let validRows = this.getValidRows(true);\r\n for (let i = 0; i < validRows.length; i++) {\r\n let rData = [this.validRowsIndex[i], []],\r\n cells = rows[this.validRowsIndex[i]].cells;\r\n for (let k = 0; k < cells.length; k++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(k)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[k]);\r\n rData[1].push(cellValue);\r\n }\r\n filteredData.push(rData);\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredDataCol(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = [],\r\n visible = true\r\n ) {\r\n if (isUndef(colIndex)) {\r\n return [];\r\n }\r\n\r\n let rows = this.dom().rows;\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n // ensure valid rows index do not contain excluded rows and row is\r\n // displayed\r\n let validRows = this.getValidRows(true).filter((rowIdx) => {\r\n return exclude.indexOf(rowIdx) === -1 &&\r\n (visible ?\r\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\r\n true);\r\n });\r\n\r\n // convert column value to expected type if necessary\r\n let validColValues = validRows.map((rowIdx) => {\r\n return getContent(rows[rowIdx].cells[colIndex]);\r\n });\r\n\r\n if (includeHeaders) {\r\n validColValues.unshift(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n return validColValues;\r\n }\r\n\r\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\r\n getRowDisplay(row) {\r\n return row.style.display;\r\n }\r\n\r\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\r\n validateRow(rowIndex, isValid) {\r\n let row = this.dom().rows[rowIndex];\r\n if (!row || typeof isValid !== 'boolean') {\r\n return;\r\n }\r\n\r\n // always visible rows are valid\r\n if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) {\r\n isValid = true;\r\n }\r\n\r\n let displayFlag = isValid ? '' : NONE,\r\n validFlag = isValid ? 'true' : 'false';\r\n row.style.display = displayFlag;\r\n\r\n if (this.paging) {\r\n row.setAttribute('validRow', validFlag);\r\n }\r\n\r\n if (isValid) {\r\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\r\n this.validRowsIndex.push(rowIndex);\r\n }\r\n\r\n this.onRowValidated(this, rowIndex);\r\n\r\n this.emitter.emit('row-validated', this, rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Validate all filterable rows\r\n */\r\n validateAllRows() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\r\n this.validateRow(k, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\r\n setFilterValue(index, query = '') {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let slc = this.getFilterElement(index),\r\n fltColType = this.getFilterType(index);\r\n\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt);\r\n }\r\n slc.value = query;\r\n }\r\n //multiple selects\r\n else if (fltColType === MULTIPLE) {\r\n let values = isArray(query) ? query :\r\n query.split(' ' + this.orOperator + ' ');\r\n\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt);\r\n }\r\n\r\n this.emitter.emit('select-options', this, index, values);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n let values = [];\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-checklist-filter', this, index,\r\n this.linkedFilters);\r\n }\r\n if (isArray(query)) {\r\n values = query;\r\n } else {\r\n query = matchCase(query, this.caseSensitive);\r\n values = query.split(' ' + this.orOperator + ' ');\r\n }\r\n\r\n this.emitter.emit('select-checklist-options', this, index, values);\r\n }\r\n }\r\n\r\n /**\r\n * Set them columns' widths as per configuration\r\n * @param {Element} tbl DOM element\r\n */\r\n setColWidths(tbl) {\r\n if (!this.hasColWidths) {\r\n return;\r\n }\r\n tbl = tbl || this.dom();\r\n\r\n let nbCols = this.nbCells;\r\n let colWidths = this.colWidths;\r\n let colTags = tag(tbl, 'col');\r\n let tblHasColTag = colTags.length > 0;\r\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\r\n for (let k = 0; k < nbCols; k++) {\r\n let col;\r\n if (tblHasColTag) {\r\n col = colTags[k];\r\n } else {\r\n col = createElm('col');\r\n frag.appendChild(col);\r\n }\r\n col.style.width = colWidths[k];\r\n }\r\n if (!tblHasColTag) {\r\n tbl.insertBefore(frag, tbl.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Make defined rows always visible\r\n */\r\n enforceVisibility() {\r\n if (!this.hasVisibleRows) {\r\n return;\r\n }\r\n let nbRows = this.getRowsNb(true);\r\n for (let i = 0, len = this.visibleRows.length; i < len; i++) {\r\n let row = this.visibleRows[i];\r\n //row index cannot be > nrows\r\n if (row <= nbRows) {\r\n this.validateRow(row, true);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all the filters' values\r\n */\r\n clearFilters() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-clearing-filters', this);\r\n this.onBeforeReset(this, this.getFiltersValue());\r\n\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n this.setFilterValue(i, '');\r\n }\r\n\r\n this.filter();\r\n\r\n this.onAfterReset(this);\r\n this.emitter.emit('after-clearing-filters', this);\r\n }\r\n\r\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\r\n getActiveFilterId() {\r\n return this.activeFilterId;\r\n }\r\n\r\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\r\n setActiveFilterId(filterId) {\r\n this.activeFilterId = filterId;\r\n }\r\n\r\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\r\n getColumnIndexFromFilterId(filterId = '') {\r\n let idx = filterId.split('_')[0];\r\n idx = idx.split(this.prfxFlt)[1];\r\n return parseInt(idx, 10);\r\n }\r\n\r\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\r\n buildFilterId(colIndex) {\r\n return `${this.prfxFlt}${colIndex}_${this.id}`;\r\n }\r\n\r\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\r\n activateFilter(colIndex) {\r\n if (isUndef(colIndex)) {\r\n return;\r\n }\r\n this.setActiveFilterId(this.getFilterId(colIndex));\r\n }\r\n\r\n /**\r\n * Refresh the filters subject to linking ('select', 'multiple',\r\n * 'checklist' type)\r\n */\r\n linkFilters() {\r\n if (!this.linkedFilters || !this.activeFilterId) {\r\n return;\r\n }\r\n let slcA1 = this.getFiltersByType(SELECT, true),\r\n slcA2 = this.getFiltersByType(MULTIPLE, true),\r\n slcA3 = this.getFiltersByType(CHECKLIST, true),\r\n slcIndex = slcA1.concat(slcA2);\r\n slcIndex = slcIndex.concat(slcA3);\r\n\r\n let activeIdx = this.getColumnIndexFromFilterId(this.activeFilterId);\r\n\r\n for (let i = 0, len = slcIndex.length; i < len; i++) {\r\n let colIdx = slcIndex[i];\r\n let curSlc = elm(this.fltIds[colIdx]);\r\n let slcSelectedValue = this.getFilterValue(colIdx);\r\n\r\n // Welcome to cyclomatic complexity hell :)\r\n // TODO: simplify/refactor if statement\r\n if (activeIdx !== colIdx ||\r\n (this.paging && slcA1.indexOf(colIdx) !== -1 &&\r\n activeIdx === colIdx) ||\r\n (!this.paging && (slcA3.indexOf(colIdx) !== -1 ||\r\n slcA2.indexOf(colIdx) !== -1)) ||\r\n slcSelectedValue === this.getClearFilterText(colIdx)) {\r\n\r\n //1st option needs to be inserted\r\n if (this.loadFltOnDemand) {\r\n let opt0 = createOpt(this.getClearFilterText(colIdx), '');\r\n curSlc.innerHTML = '';\r\n curSlc.appendChild(opt0);\r\n }\r\n\r\n if (slcA3.indexOf(colIdx) !== -1) {\r\n this.emitter.emit('build-checklist-filter', this, colIdx,\r\n true);\r\n } else {\r\n this.emitter.emit('build-select-filter', this, colIdx,\r\n true);\r\n }\r\n\r\n this.setFilterValue(colIdx, slcSelectedValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n isExactMatch(colIndex) {\r\n let fltType = this.getFilterType(colIndex);\r\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\r\n fltType !== INPUT;\r\n }\r\n\r\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowValid(rowIndex) {\r\n return this.getValidRows().indexOf(rowIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowDisplayed(rowIndex) {\r\n let row = this.dom().rows[rowIndex];\r\n return this.getRowDisplay(row) === '';\r\n }\r\n\r\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n ignoresDiacritics(colIndex) {\r\n let ignoreDiac = this.ignoreDiacritics;\r\n if (isArray(ignoreDiac)) {\r\n return ignoreDiac[colIndex];\r\n }\r\n return Boolean(ignoreDiac);\r\n }\r\n\r\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\r\n getClearFilterText(colIndex) {\r\n let clearText = this.clearFilterText;\r\n if (isArray(clearText)) {\r\n return clearText[colIndex];\r\n }\r\n return clearText;\r\n }\r\n\r\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\r\n isImported(filePath, type = 'script') {\r\n let imported = false,\r\n attr = type === 'script' ? 'src' : 'href',\r\n files = tag(doc, type);\r\n for (let i = 0, len = files.length; i < len; i++) {\r\n if (isUndef(files[i][attr])) {\r\n continue;\r\n }\r\n if (files[i][attr].match(filePath)) {\r\n imported = true;\r\n break;\r\n }\r\n }\r\n return imported;\r\n }\r\n\r\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\r\n import(fileId, filePath, callback, type = 'script') {\r\n if (this.isImported(filePath, type)) {\r\n return;\r\n }\r\n let o = this,\r\n isLoaded = false,\r\n file,\r\n head = tag(doc, 'head')[0];\r\n\r\n if (type.toLowerCase() === 'link') {\r\n file = createElm('link',\r\n ['id', fileId], ['type', 'text/css'],\r\n ['rel', 'stylesheet'], ['href', filePath]\r\n );\r\n } else {\r\n file = createElm('script',\r\n ['id', fileId],\r\n ['type', 'text/javascript'], ['src', filePath]\r\n );\r\n }\r\n\r\n //Browser <> IE onload event works only for scripts, not for stylesheets\r\n file.onload = file.onreadystatechange = () => {\r\n if (!isLoaded &&\r\n (!this.readyState || this.readyState === 'loaded' ||\r\n this.readyState === 'complete')) {\r\n isLoaded = true;\r\n if (typeof callback === 'function') {\r\n callback.call(null, o);\r\n }\r\n }\r\n };\r\n file.onerror = function () {\r\n throw new Error(`TableFilter could not load: ${filePath}`);\r\n };\r\n head.appendChild(file);\r\n }\r\n\r\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\r\n getFiltersId() {\r\n return this.fltIds || [];\r\n }\r\n\r\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\r\n getValidRows(reCalc) {\r\n if (!reCalc) {\r\n return this.validRowsIndex;\r\n }\r\n\r\n let nbRows = this.getRowsNb(true);\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < nbRows; k++) {\r\n let r = this.dom().rows[k];\r\n if (!this.paging) {\r\n if (this.getRowDisplay(r) !== NONE) {\r\n this.validRowsIndex.push(r.rowIndex);\r\n }\r\n } else {\r\n if (r.getAttribute('validRow') === 'true' ||\r\n r.getAttribute('validRow') === null) {\r\n this.validRowsIndex.push(r.rowIndex);\r\n }\r\n }\r\n }\r\n return this.validRowsIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\r\n getFiltersRowIndex() {\r\n return this.filtersRowIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\r\n getHeadersRowIndex() {\r\n return this.headersRow;\r\n }\r\n\r\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\r\n getStartRowIndex() {\r\n return this.refRow;\r\n }\r\n\r\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\r\n getLastRowIndex() {\r\n let nbRows = this.getRowsNb(true);\r\n return (nbRows - 1);\r\n }\r\n\r\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\r\n hasType(colIndex, types = []) {\r\n if (this.colTypes.length === 0) {\r\n return false;\r\n }\r\n let colType = this.colTypes[colIndex];\r\n if (isObj(colType)) {\r\n colType = colType.type;\r\n }\r\n return types.indexOf(colType) !== -1;\r\n }\r\n\r\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\r\n getHeaderElement(colIndex) {\r\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\r\n let tHead = tag(table, 'thead');\r\n let rowIdx = this.getHeadersRowIndex();\r\n let header;\r\n if (tHead.length === 0) {\r\n header = table.rows[rowIdx].cells[colIndex];\r\n }\r\n if (tHead.length === 1) {\r\n header = tHead[0].rows[rowIdx].cells[colIndex];\r\n }\r\n return header;\r\n }\r\n\r\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\r\n getHeadersText(excludeHiddenCols = false) {\r\n let headers = [];\r\n for (let j = 0; j < this.nbCells; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let header = this.getHeaderElement(j);\r\n let headerText = getFirstTextNode(header);\r\n headers.push(headerText);\r\n }\r\n return headers;\r\n }\r\n\r\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\r\n getFilterType(colIndex) {\r\n let colType = this.cfg['col_' + colIndex];\r\n return !colType ? INPUT : colType.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\r\n getFilterableRowsNb() {\r\n return this.getRowsNb(false);\r\n }\r\n\r\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\r\n getValidRowsNb(reCalc = false) {\r\n return this.getValidRows(reCalc).length;\r\n }\r\n\r\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\r\n dom() {\r\n return this.tbl;\r\n }\r\n\r\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\r\n getDecimal(colIndex) {\r\n let decimal = this.decimalSeparator;\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = this.colTypes[colIndex];\r\n if (colType.hasOwnProperty('decimal')) {\r\n decimal = colType.decimal;\r\n }\r\n }\r\n return decimal;\r\n }\r\n\r\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\r\n config() {\r\n return this.cfg;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/tablefilter.js","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/diacritics/index.js\n// module id = 127\n// module chunks = 1","'use strict';\n\nfunction allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n}\n\nmodule.exports = allCharsReg;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/allCharsReg.js\n// module id = 128\n// module chunks = 1","'use strict';\n\nvar forEach = require('./forEach'),\n spaceSplit = require('./spaceSplit'),\n classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction collectSimilarMethods(set, fn) {\n var methods = {};\n if (isString(set)) {\n set = spaceSplit(set);\n }\n forEach(set, function(el, i) {\n fn(methods, el, i);\n });\n return methods;\n}\n\nmodule.exports = collectSimilarMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/collectSimilarMethods.js\n// module id = 129\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nfunction commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n}\n\nmodule.exports = commaSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/commaSplit.js\n// module id = 130\n// module chunks = 1","'use strict';\n\nvar STRING_FORMAT_REG = require('../var/STRING_FORMAT_REG'),\n CommonChars = require('../var/CommonChars'),\n memoizeFunction = require('./memoizeFunction');\n\nvar OPEN_BRACE = CommonChars.OPEN_BRACE,\n CLOSE_BRACE = CommonChars.CLOSE_BRACE;\n\nfunction createFormatMatcher(bracketMatcher, percentMatcher, precheck) {\n\n var reg = STRING_FORMAT_REG;\n var compileMemoized = memoizeFunction(compile);\n\n function getToken(format, match) {\n var get, token, literal, fn;\n var bKey = match[2];\n var pLit = match[3];\n var pKey = match[5];\n if (match[4] && percentMatcher) {\n token = pKey;\n get = percentMatcher;\n } else if (bKey) {\n token = bKey;\n get = bracketMatcher;\n } else if (pLit && percentMatcher) {\n literal = pLit;\n } else {\n literal = match[1] || match[0];\n }\n if (get) {\n assertPassesPrecheck(precheck, bKey, pKey);\n fn = function(obj, opt) {\n return get(obj, token, opt);\n };\n }\n format.push(fn || getLiteral(literal));\n }\n\n function getSubstring(format, str, start, end) {\n if (end > start) {\n var sub = str.slice(start, end);\n assertNoUnmatched(sub, OPEN_BRACE);\n assertNoUnmatched(sub, CLOSE_BRACE);\n format.push(function() {\n return sub;\n });\n }\n }\n\n function getLiteral(str) {\n return function() {\n return str;\n };\n }\n\n function assertPassesPrecheck(precheck, bt, pt) {\n if (precheck && !precheck(bt, pt)) {\n throw new TypeError('Invalid token '+ (bt || pt) +' in format string');\n }\n }\n\n function assertNoUnmatched(str, chr) {\n if (str.indexOf(chr) !== -1) {\n throw new TypeError('Unmatched '+ chr +' in format string');\n }\n }\n\n function compile(str) {\n var format = [], lastIndex = 0, match;\n reg.lastIndex = 0;\n while(match = reg.exec(str)) {\n getSubstring(format, str, lastIndex, match.index);\n getToken(format, match);\n lastIndex = reg.lastIndex;\n }\n getSubstring(format, str, lastIndex, str.length);\n return format;\n }\n\n return function(str, obj, opt) {\n var format = compileMemoized(str), result = '';\n for (var i = 0; i < format.length; i++) {\n result += format[i](obj, opt);\n }\n return result;\n };\n}\n\nmodule.exports = createFormatMatcher;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/createFormatMatcher.js\n// module id = 131\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n}\n\nmodule.exports = defineAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineAccessor.js\n// module id = 132\n// module chunks = 1","'use strict';\n\nvar simpleClone = require('./simpleClone'),\n defineAccessor = require('./defineAccessor'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOptionsAccessor(namespace, defaults) {\n var obj = simpleClone(defaults);\n\n function getOption(name) {\n return obj[name];\n }\n\n function setOption(arg1, arg2) {\n var options;\n if (arguments.length === 1) {\n options = arg1;\n } else {\n options = {};\n options[arg1] = arg2;\n }\n forEachProperty(options, function(val, name) {\n if (val === null) {\n val = defaults[name];\n }\n obj[name] = val;\n });\n }\n\n defineAccessor(namespace, 'getOption', getOption);\n defineAccessor(namespace, 'setOption', setOption);\n return getOption;\n}\n\nmodule.exports = defineOptionsAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/defineOptionsAccessor.js\n// module id = 133\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\\\/\\'*+?|()\\[\\]{}.^$-])/g,'\\\\$1');\n}\n\nmodule.exports = escapeRegExp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/escapeRegExp.js\n// module id = 134\n// module chunks = 1","'use strict';\n\nfunction filter(arr, fn) {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var el = arr[i];\n if (i in arr && fn(el, i)) {\n result.push(el);\n }\n }\n return result;\n}\n\nmodule.exports = filter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/filter.js\n// module id = 135\n// module chunks = 1","'use strict';\n\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\n\nmodule.exports = getKeys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getKeys.js\n// module id = 136\n// module chunks = 1","'use strict';\n\nfunction getOrdinalSuffix(num) {\n if (num >= 11 && num <= 13) {\n return 'th';\n } else {\n switch(num % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n}\n\nmodule.exports = getOrdinalSuffix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getOrdinalSuffix.js\n// module id = 137\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n}\n\nmodule.exports = getOwnKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getOwnKey.js\n// module id = 138\n// module chunks = 1","'use strict';\n\nvar isArrayIndex = require('./isArrayIndex');\n\nfunction getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) {\n indexes.push(+i);\n }\n }\n indexes.sort(function(a, b) {\n var aLoop = a > fromIndex;\n var bLoop = b > fromIndex;\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n}\n\nmodule.exports = getSparseArrayIndexes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/getSparseArrayIndexes.js\n// module id = 139\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasOwnEnumeratedProperties(obj) {\n // Plain objects are generally defined as having enumerated properties\n // all their own, however in early IE environments without defineProperty,\n // there may also be enumerated methods in the prototype chain, so check\n // for both of these cases.\n var objectProto = Object.prototype;\n for (var key in obj) {\n var val = obj[key];\n if (!hasOwn(obj, key) && val !== objectProto[key]) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = hasOwnEnumeratedProperties;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/hasOwnEnumeratedProperties.js\n// module id = 140\n// module chunks = 1","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasValidPlainObjectPrototype(obj) {\n var hasToString = 'toString' in obj;\n var hasConstructor = 'constructor' in obj;\n // An object created with Object.create(null) has no methods in the\n // prototype chain, so check if any are missing. The additional hasToString\n // check is for false positives on some host objects in old IE which have\n // toString but no constructor. If the object has an inherited constructor,\n // then check if it is Object (the \"isPrototypeOf\" tapdance here is a more\n // robust way of ensuring this if the global has been hijacked). Note that\n // accessing the constructor directly (without \"in\" or \"hasOwnProperty\")\n // will throw a permissions error in IE8 on cross-domain windows.\n return (!hasConstructor && !hasToString) ||\n (hasConstructor && !hasOwn(obj, 'constructor') &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf'));\n}\n\nmodule.exports = hasValidPlainObjectPrototype;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/hasValidPlainObjectPrototype.js\n// module id = 141\n// module chunks = 1","'use strict';\n\nfunction isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n}\n\nmodule.exports = isArrayIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isArrayIndex.js\n// module id = 142\n// module chunks = 1","'use strict';\n\nvar isClass = require('./isClass'),\n isObjectType = require('./isObjectType'),\n hasOwnEnumeratedProperties = require('./hasOwnEnumeratedProperties'),\n hasValidPlainObjectPrototype = require('./hasValidPlainObjectPrototype');\n\nfunction isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n}\n\nmodule.exports = isPlainObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/isPlainObject.js\n// module id = 143\n// module chunks = 1","'use strict';\n\nvar getSparseArrayIndexes = require('./getSparseArrayIndexes');\n\nfunction iterateOverSparseArray(arr, fn, fromIndex, loop) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index;\n for (var i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n fn.call(arr, arr[index], index, arr);\n }\n return arr;\n}\n\nmodule.exports = iterateOverSparseArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/iterateOverSparseArray.js\n// module id = 144\n// module chunks = 1","'use strict';\n\nvar INTERNAL_MEMOIZE_LIMIT = require('../var/INTERNAL_MEMOIZE_LIMIT'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n}\n\nmodule.exports = memoizeFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/memoizeFunction.js\n// module id = 145\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD;\n\nfunction periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n}\n\nmodule.exports = periodSplit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/periodSplit.js\n// module id = 146\n// module chunks = 1","'use strict';\n\nvar PRIVATE_PROP_PREFIX = require('../var/PRIVATE_PROP_PREFIX'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction privatePropertyAccessor(key) {\n var privateKey = PRIVATE_PROP_PREFIX + key;\n return function(obj, val) {\n if (arguments.length > 1) {\n setProperty(obj, privateKey, val);\n return obj;\n }\n return obj[privateKey];\n };\n}\n\nmodule.exports = privatePropertyAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/privatePropertyAccessor.js\n// module id = 147\n// module chunks = 1","'use strict';\n\nfunction repeatString(str, num) {\n var result = '';\n str = str.toString();\n while (num > 0) {\n if (num & 1) {\n result += str;\n }\n if (num >>= 1) {\n str += str;\n }\n }\n return result;\n}\n\nmodule.exports = repeatString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/repeatString.js\n// module id = 148\n// module chunks = 1","'use strict';\n\nfunction setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n}\n\nmodule.exports = setChainableConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/setChainableConstructor.js\n// module id = 149\n// module chunks = 1","'use strict';\n\nfunction trim(str) {\n return str.trim();\n}\n\nmodule.exports = trim;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/trim.js\n// module id = 150\n// module chunks = 1","'use strict';\n\nfunction wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n}\n\nmodule.exports = wrapNamespace;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/internal/wrapNamespace.js\n// module id = 151\n// module chunks = 1","'use strict';\n\nmodule.exports = 1000;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js\n// module id = 152\n// module chunks = 1","'use strict';\n\nmodule.exports = 'Boolean Number String Date RegExp Function Array Error Set Map';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/NATIVE_TYPES.js\n// module id = 153\n// module chunks = 1","'use strict';\n\nmodule.exports = '_sugar_';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/PRIVATE_PROP_PREFIX.js\n// module id = 154\n// module chunks = 1","'use strict';\n\nmodule.exports = /([{}])\\1|\\{([^}]*)\\}|(%)%|(%(\\w*))/g;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/STRING_FORMAT_REG.js\n// module id = 155\n// module chunks = 1","'use strict';\n\nvar CommonChars = require('./CommonChars'),\n chr = require('./chr'),\n allCharsReg = require('../internal/allCharsReg');\n\nvar HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO,\n FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO,\n HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD,\n FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD,\n HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nvar fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\nfunction buildFullWidthNumber() {\n var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = '';\n fullWidthNumberMap = {};\n for (var i = 0, digit; i <= 9; i++) {\n digit = chr(i + FULL_WIDTH_ZERO);\n fwn += digit;\n fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO);\n }\n fullWidthNumberMap[hwc] = '';\n fullWidthNumberMap[fwp] = hwp;\n // Mapping this to itself to capture it easily\n // in stringToNumber to detect decimals later.\n fullWidthNumberMap[hwp] = hwp;\n fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp);\n fullWidthNumbers = fwn;\n}\n\nbuildFullWidthNumber();\n\nmodule.exports = {\n fullWidthNumberReg: fullWidthNumberReg,\n fullWidthNumberMap: fullWidthNumberMap,\n fullWidthNumbers: fullWidthNumbers\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/fullwidthNumberHelpers.js\n// module id = 156\n// module chunks = 1","'use strict';\n\nvar wrapNamespace = require('../internal/wrapNamespace');\n\nmodule.exports = {\n alias: wrapNamespace('alias'),\n defineStatic: wrapNamespace('defineStatic'),\n defineInstance: wrapNamespace('defineInstance'),\n defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'),\n defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'),\n defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'),\n defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/common/var/methodDefineAliases.js\n// module id = 157\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addDays;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addDays.js\n// module id = 158\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addHours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addHours.js\n// module id = 159\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMilliseconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMilliseconds.js\n// module id = 160\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMinutes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMinutes.js\n// module id = 161\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMonths;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addMonths.js\n// module id = 162\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addSeconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addSeconds.js\n// module id = 163\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addWeeks;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addWeeks.js\n// module id = 164\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addYears;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/addYears.js\n// module id = 165\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'advance': function(d, args) {\n return advanceDateWithArgs(d, args, 1);\n }\n\n});\n\nmodule.exports = Sugar.Date.advance;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/advance.js\n// module id = 166\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfDay.js\n// module id = 167\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n resetTime = require('./internal/resetTime'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'beginningOfISOWeek': function(date) {\n var day = getWeekday(date);\n if (day === 0) {\n day = -6;\n } else if (day !== 1) {\n day = 1;\n }\n setWeekday(date, day);\n return resetTime(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.beginningOfISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfISOWeek.js\n// module id = 168\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfMonth.js\n// module id = 169\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfWeek.js\n// module id = 170\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/beginningOfYear.js\n// module id = 171\n// module chunks = 1","'use strict';\n\nvar setDateChainableConstructor = require('../internal/setDateChainableConstructor');\n\nsetDateChainableConstructor();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/build/setDateChainableConstructorCall.js\n// module id = 172\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n cloneDate = require('./internal/cloneDate');\n\nSugar.Date.defineInstance({\n\n 'clone': function(date) {\n return cloneDate(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.clone;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/clone.js\n// module id = 173\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nrequire('./build/setDateChainableConstructorCall');\n\nSugar.Date.defineStatic({\n\n 'create': function(d, options) {\n return createDate(d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.create;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/create.js\n// module id = 174\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysAgo.js\n// module id = 175\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysFromNow.js\n// module id = 176\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getDaysInMonth = require('./internal/getDaysInMonth');\n\nSugar.Date.defineInstance({\n\n 'daysInMonth': function(date) {\n return getDaysInMonth(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.daysInMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysInMonth.js\n// module id = 177\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysSince.js\n// module id = 178\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/daysUntil.js\n// module id = 179\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfDay.js\n// module id = 180\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday'),\n moveToEndOfUnit = require('./internal/moveToEndOfUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'endOfISOWeek': function(date) {\n if (getWeekday(date) !== 0) {\n setWeekday(date, 7);\n }\n return moveToEndOfUnit(date, DAY_INDEX);\n }\n\n});\n\nmodule.exports = Sugar.Date.endOfISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfISOWeek.js\n// module id = 181\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfMonth.js\n// module id = 182\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfWeek.js\n// module id = 183\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/endOfYear.js\n// module id = 184\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateFormat = require('./internal/dateFormat');\n\nSugar.Date.defineInstance({\n\n 'format': function(date, f, localeCode) {\n return dateFormat(date, f, localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.format;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/format.js\n// module id = 185\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDateWithContext = require('./internal/createDateWithContext');\n\nSugar.Date.defineInstance({\n\n 'get': function(date, d, options) {\n return createDateWithContext(date, d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.get;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/get.js\n// module id = 186\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers'),\n getKeys = require('../common/internal/getKeys');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocaleCodes': function() {\n return getKeys(localeManager.getAll());\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocaleCodes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getAllLocaleCodes.js\n// module id = 187\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocales': function() {\n return localeManager.getAll();\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocales;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getAllLocales.js\n// module id = 188\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekNumber = require('./internal/getWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'getISOWeek': function(date) {\n return getWeekNumber(date, true);\n }\n\n});\n\nmodule.exports = Sugar.Date.getISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getISOWeek.js\n// module id = 189\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getLocale': function(code) {\n return localeManager.get(code, !code);\n }\n\n});\n\nmodule.exports = Sugar.Date.getLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getLocale.js\n// module id = 190\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.getOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getOption.js\n// module id = 191\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getUTCOffset = require('./internal/getUTCOffset');\n\nSugar.Date.defineInstance({\n\n 'getUTCOffset': function(date, iso) {\n return getUTCOffset(date, iso);\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getUTCOffset.js\n// module id = 192\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'getUTCWeekday': function(date) {\n return date.getUTCDay();\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getUTCWeekday.js\n// module id = 193\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekday = require('./internal/getWeekday');\n\nSugar.Date.defineInstance({\n\n 'getWeekday': function(date) {\n return getWeekday(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.getWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/getWeekday.js\n// module id = 194\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursAgo.js\n// module id = 195\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursFromNow.js\n// module id = 196\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursSince.js\n// module id = 197\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/hoursUntil.js\n// module id = 198\n// module chunks = 1","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/index.js\n// module id = 199\n// module chunks = 1","'use strict';\n\nvar map = require('../../common/internal/map'),\n escapeRegExp = require('../../common/internal/escapeRegExp');\n\nfunction arrayToRegAlternates(arr) {\n var joined = arr.join('');\n if (!arr || !arr.length) {\n return '';\n }\n if (joined.length === arr.length) {\n return '[' + joined + ']';\n }\n // map handles sparse arrays so no need to compact the array here.\n return map(arr, escapeRegExp).join('|');\n}\n\nmodule.exports = arrayToRegAlternates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/arrayToRegAlternates.js\n// module id = 200\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n forEach = require('../../common/internal/forEach'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n createDateWithContext = require('./createDateWithContext'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar sugarDate = namespaceAliases.sugarDate,\n HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction buildDateUnitMethods() {\n\n defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) {\n var name = unit.name, caps = simpleCapitalize(name);\n\n if (index > DAY_INDEX) {\n forEach(['Last','This','Next'], function(shift) {\n methods['is' + shift + caps] = function(d, localeCode) {\n return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' });\n };\n });\n }\n if (index > HOURS_INDEX) {\n methods['beginningOf' + caps] = function(d, localeCode) {\n return moveToBeginningOfUnit(d, index, localeCode);\n };\n methods['endOf' + caps] = function(d, localeCode) {\n return moveToEndOfUnit(d, index, localeCode);\n };\n }\n\n methods['add' + caps + 's'] = function(d, num, reset) {\n return advanceDate(d, name, num, reset);\n };\n\n var since = function(date, d, options) {\n return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit);\n };\n\n methods[name + 'sAgo'] = methods[name + 'sUntil'] = until;\n methods[name + 'sSince'] = methods[name + 'sFromNow'] = since;\n\n });\n\n}\n\nmodule.exports = buildDateUnitMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildDateUnitMethods.js\n// module id = 201\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n createDate = require('./createDate'),\n mathAliases = require('../../common/var/mathAliases'),\n advanceDate = require('./advanceDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar sugarNumber = namespaceAliases.sugarNumber,\n round = mathAliases.round;\n\nfunction buildNumberUnitMethods() {\n defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {\n var name = unit.name, base, after, before;\n base = function(n) {\n return round(n * unit.multiplier);\n };\n after = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, n);\n };\n before = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, -n);\n };\n methods[name] = base;\n methods[name + 's'] = base;\n methods[name + 'Before'] = before;\n methods[name + 'sBefore'] = before;\n methods[name + 'Ago'] = before;\n methods[name + 'sAgo'] = before;\n methods[name + 'After'] = after;\n methods[name + 'sAfter'] = after;\n methods[name + 'FromNow'] = after;\n methods[name + 'sFromNow'] = after;\n });\n}\n\nmodule.exports = buildNumberUnitMethods;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildNumberUnitMethods.js\n// module id = 202\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n fullCompareDate = require('./fullCompareDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar English = LocaleHelpers.English,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction buildRelativeAliases() {\n var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past');\n var weekdays = English.weekdays.slice(0, 7);\n var months = English.months.slice(0, 12);\n var together = special.concat(weekdays).concat(months);\n defineInstanceSimilar(sugarDate, together, function(methods, name) {\n methods['is'+ name] = function(d) {\n return fullCompareDate(d, name);\n };\n });\n}\n\nmodule.exports = buildRelativeAliases;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/buildRelativeAliases.js\n// module id = 203\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet'),\n setISOWeekNumber = require('./setISOWeekNumber');\n\nfunction callDateSetWithWeek(d, method, value, safe) {\n if (method === 'ISOWeek') {\n setISOWeekNumber(d, value);\n } else {\n callDateSet(d, method, value, safe);\n }\n}\n\nmodule.exports = callDateSetWithWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/callDateSetWithWeek.js\n// module id = 204\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n walkUnitDown = require('./walkUnitDown');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction collectDateParamsFromArguments(args) {\n var params = {}, index = 0;\n walkUnitDown(YEAR_INDEX, function(unit) {\n var arg = args[index++];\n if (isDefined(arg)) {\n params[unit.name] = arg;\n }\n });\n return params;\n}\n\nmodule.exports = collectDateParamsFromArguments;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/collectDateParamsFromArguments.js\n// module id = 205\n// module chunks = 1","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate');\n\nfunction compareDay(d, shift) {\n var comp = getNewDate();\n if (shift) {\n setDate(comp, getDate(comp) + shift);\n }\n return getYear(d) === getYear(comp) &&\n getMonth(d) === getMonth(comp) &&\n getDate(d) === getDate(comp);\n}\n\nmodule.exports = compareDay;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/compareDay.js\n// module id = 206\n// module chunks = 1","'use strict';\n\nfunction defaultNewDate() {\n return new Date;\n}\n\nmodule.exports = defaultNewDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/defaultNewDate.js\n// module id = 207\n// module chunks = 1","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey');\n\nfunction deleteDateParam(params, key) {\n delete params[getDateParamKey(params, key)];\n}\n\nmodule.exports = deleteDateParam;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/deleteDateParam.js\n// module id = 208\n// module chunks = 1","'use strict';\n\nvar getNewDate = require('./getNewDate'),\n mathAliases = require('../../common/var/mathAliases'),\n getAdjustedUnit = require('./getAdjustedUnit'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnitForDate(d, dRelative) {\n var ms;\n if (!dRelative) {\n dRelative = getNewDate();\n if (d > dRelative) {\n // If our date is greater than the one that we got from getNewDate, it\n // means that we are finding the unit for a date that is in the future\n // relative to now. However, often the incoming date was created in\n // the same cycle as our comparison, but our \"now\" date will have been\n // created an instant after it, creating situations where \"5 minutes from\n // now\" becomes \"4 minutes from now\" in the same tick. To prevent this,\n // subtract a buffer of 10ms to compensate.\n dRelative = new Date(dRelative.getTime() - 10);\n }\n }\n ms = d - dRelative;\n return getAdjustedUnit(ms, function(u) {\n return abs(getTimeDistanceForUnit(d, dRelative, u));\n });\n}\n\nmodule.exports = getAdjustedUnitForDate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnitForDate.js\n// module id = 209\n// module chunks = 1","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n withPrecision = require('../../common/internal/withPrecision'),\n getAdjustedUnit = require('./getAdjustedUnit');\n\nfunction getAdjustedUnitForNumber(ms) {\n return getAdjustedUnit(ms, function(unit) {\n return trunc(withPrecision(ms / unit.multiplier, 1));\n });\n}\n\nmodule.exports = getAdjustedUnitForNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getAdjustedUnitForNumber.js\n// module id = 210\n// module chunks = 1","'use strict';\n\nfunction getArrayWithOffset(arr, n, alternate, offset) {\n var val;\n if (alternate > 1) {\n val = arr[n + (alternate - 1) * offset];\n }\n return val || arr[n];\n}\n\nmodule.exports = getArrayWithOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getArrayWithOffset.js\n// module id = 211\n// module chunks = 1","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases');\n\nvar getOwn = coreUtilityAliases.getOwn;\n\nfunction getDateParam(params, key) {\n return getOwn(params, getDateParamKey(params, key));\n}\n\nmodule.exports = getDateParam;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParam.js\n// module id = 212\n// module chunks = 1","'use strict';\n\nvar isUndefined = require('../../common/internal/isUndefined');\n\nfunction getDateParamsFromString(str) {\n var match, num, params = {};\n match = str.match(/^(-?\\d*[\\d.]\\d*)?\\s?(\\w+?)s?$/i);\n if (match) {\n if (isUndefined(num)) {\n num = +match[1];\n if (isNaN(num)) {\n num = 1;\n }\n }\n params[match[2].toLowerCase()] = num;\n }\n return params;\n}\n\nmodule.exports = getDateParamsFromString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDateParamsFromString.js\n// module id = 213\n// module chunks = 1","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction getDaysSince(d1, d2) {\n return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]);\n}\n\nmodule.exports = getDaysSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getDaysSince.js\n// module id = 214\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getHigherUnitIndex(index) {\n return index === DAY_INDEX ? MONTH_INDEX : index + 1;\n}\n\nmodule.exports = getHigherUnitIndex;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getHigherUnitIndex.js\n// module id = 215\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trunc = require('../../common/var/trunc'),\n getHours = require('./getHours');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getMeridiemToken(d, localeCode) {\n var hours = getHours(d);\n return localeManager.get(localeCode).ampm[trunc(hours / 12)] || '';\n}\n\nmodule.exports = getMeridiemToken;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getMeridiemToken.js\n// module id = 216\n// module chunks = 1","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = require('../var/LOCALE_ARRAY_FIELDS'),\n ISODefaults = require('../var/ISODefaults'),\n ParsingTokens = require('../var/ParsingTokens'),\n CoreParsingFormats = require('../var/CoreParsingFormats'),\n LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n map = require('../../common/internal/map'),\n filter = require('../../common/internal/filter'),\n forEach = require('../../common/internal/forEach'),\n isDefined = require('../../common/internal/isDefined'),\n commaSplit = require('../../common/internal/commaSplit'),\n classChecks = require('../../common/var/classChecks'),\n isUndefined = require('../../common/internal/isUndefined'),\n mathAliases = require('../../common/var/mathAliases'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap,\n fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers,\n pow = mathAliases.pow,\n max = mathAliases.max,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR,\n isString = classChecks.isString,\n isFunction = classChecks.isFunction;\n\nfunction getNewLocale(def) {\n\n function Locale(def) {\n this.init(def);\n }\n\n Locale.prototype = {\n\n getMonthName: function(n, alternate) {\n if (this.monthSuffix) {\n return (n + 1) + this.monthSuffix;\n }\n return getArrayWithOffset(this.months, n, alternate, 12);\n },\n\n getWeekdayName: function(n, alternate) {\n return getArrayWithOffset(this.weekdays, n, alternate, 7);\n },\n\n getTokenValue: function(field, str) {\n var map = this[field + 'Map'], val;\n if (map) {\n val = map[str];\n }\n if (isUndefined(val)) {\n val = this.getNumber(str);\n if (field === 'month') {\n // Months are the only numeric date field\n // whose value is not the same as its number.\n val -= 1;\n }\n }\n return val;\n },\n\n getNumber: function(str) {\n var num = this.numeralMap[str];\n if (isDefined(num)) {\n return num;\n }\n // The unary plus operator here show better performance and handles\n // every format that parseFloat does with the exception of trailing\n // characters, which are guaranteed not to be in our string at this point.\n num = +str.replace(/,/, '.');\n if (!isNaN(num)) {\n return num;\n }\n num = this.getNumeralValue(str);\n if (!isNaN(num)) {\n this.numeralMap[str] = num;\n return num;\n }\n return num;\n },\n\n getNumeralValue: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n // Note that \"numerals\" that need to be converted through this method are\n // all considered to be single characters in order to handle CJK. This\n // method is by no means unique to CJK, but the complexity of handling\n // inflections in non-CJK languages adds too much overhead for not enough\n // value, so avoiding for now.\n arr = str.split('');\n for (var i = arr.length - 1; numeral = arr[i]; i--) {\n digit = getOwn(this.numeralMap, numeral);\n if (isUndefined(digit)) {\n digit = getOwn(fullWidthNumberMap, numeral) || 0;\n }\n isPlace = digit > 0 && digit % 10 === 0;\n if (isPlace) {\n if (lastWasPlace) {\n num += place;\n }\n if (i) {\n place = digit;\n } else {\n num += digit;\n }\n } else {\n num += digit * place;\n place *= 10;\n }\n lastWasPlace = isPlace;\n }\n return num;\n },\n\n getOrdinal: function(n) {\n var suffix = this.ordinalSuffix;\n return suffix || getOrdinalSuffix(n);\n },\n\n getRelativeFormat: function(adu, type) {\n return this.convertAdjustedToFormat(adu, type);\n },\n\n getDuration: function(ms) {\n return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration');\n },\n\n getFirstDayOfWeek: function() {\n var val = this.firstDayOfWeek;\n return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK;\n },\n\n getFirstDayOfWeekYear: function() {\n return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR;\n },\n\n convertAdjustedToFormat: function(adu, type) {\n var sign, unit, mult,\n num = adu[0],\n u = adu[1],\n ms = adu[2],\n format = this[type] || this.relative;\n if (isFunction(format)) {\n return format.call(this, num, u, ms, type);\n }\n mult = !this.plural || num === 1 ? 0 : 1;\n unit = this.units[mult * 8 + u] || this.units[u];\n sign = this[ms > 0 ? 'fromNow' : 'ago'];\n return format.replace(/\\{(.*?)\\}/g, function(full, match) {\n switch(match) {\n case 'num': return num;\n case 'unit': return unit;\n case 'sign': return sign;\n }\n });\n },\n\n cacheFormat: function(dif, i) {\n this.compiledFormats.splice(i, 1);\n this.compiledFormats.unshift(dif);\n },\n\n addFormat: function(src, to) {\n var loc = this;\n\n function getTokenSrc(str) {\n var suffix, src, val,\n opt = str.match(/\\?$/),\n nc = str.match(/^(\\d+)\\??$/),\n slice = str.match(/(\\d)(?:-(\\d))?/),\n key = str.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (val = getOwn(loc.parsingAliases, key)) {\n src = replaceParsingTokens(val);\n if (opt) {\n src = getRegNonCapturing(src, true);\n }\n return src;\n }\n\n if (nc) {\n src = loc.tokens[nc[1]];\n } else if (val = getOwn(ParsingTokens, key)) {\n src = val.src;\n } else {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key);\n\n // Both the \"months\" array and the \"month\" parsing token can be accessed\n // by either {month} or {months}, falling back as necessary, however\n // regardless of whether or not a fallback occurs, the final field to\n // be passed to addRawFormat must be normalized as singular.\n key = key.replace(/s$/, '');\n\n if (!val) {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's');\n }\n\n if (isString(val)) {\n src = val;\n suffix = loc[key + 'Suffix'];\n } else {\n if (slice) {\n val = filter(val, function(m, i) {\n var mod = i % (loc.units ? 8 : val.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(val);\n }\n }\n if (!src) {\n return '';\n }\n if (nc) {\n // Non-capturing tokens like {0}\n src = getRegNonCapturing(src);\n } else {\n // Capturing group and add to parsed tokens\n to.push(key);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(key, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function replaceParsingTokens(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n return str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|'), src;\n if (tokens.length > 1) {\n src = getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n src = getTokenSrc(token);\n }\n return src;\n });\n }\n\n if (!to) {\n to = [];\n src = replaceParsingTokens(src);\n }\n\n loc.addRawFormat(src, to);\n },\n\n addRawFormat: function(format, to) {\n this.compiledFormats.unshift({\n reg: RegExp('^ *' + format + ' *$', 'i'),\n to: to\n });\n },\n\n init: function(def) {\n var loc = this;\n\n // -- Initialization helpers\n\n function initFormats() {\n loc.compiledFormats = [];\n loc.parsingAliases = {};\n loc.parsingTokens = {};\n }\n\n function initDefinition() {\n simpleMerge(loc, def);\n }\n\n function initArrayFields() {\n forEach(LOCALE_ARRAY_FIELDS, function(name) {\n var val = loc[name];\n if (isString(val)) {\n loc[name] = commaSplit(val);\n } else if (!val) {\n loc[name] = [];\n }\n });\n }\n\n // -- Value array build helpers\n\n function buildValueArray(name, mod, map, fn) {\n var field = name, all = [], setMap;\n if (!loc[field]) {\n field += 's';\n }\n if (!map) {\n map = {};\n setMap = true;\n }\n forAllAlternates(field, function(alt, j, i) {\n var idx = j * mod + i, val;\n val = fn ? fn(i) : i;\n map[alt] = val;\n map[alt.toLowerCase()] = val;\n all[idx] = alt;\n });\n loc[field] = all;\n if (setMap) {\n loc[name + 'Map'] = map;\n }\n }\n\n function forAllAlternates(field, fn) {\n forEach(loc[field], function(str, i) {\n forEachAlternate(str, function(alt, j) {\n fn(alt, j, i);\n });\n });\n }\n\n function forEachAlternate(str, fn) {\n var arr = map(str.split('+'), function(split) {\n return split.replace(/(.+):(.+)$/, function(full, base, suffixes) {\n return map(suffixes.split('|'), function(suffix) {\n return base + suffix;\n }).join('|');\n });\n }).join('|');\n forEach(arr.split('|'), fn);\n }\n\n function buildNumerals() {\n var map = {};\n buildValueArray('numeral', 10, map);\n buildValueArray('article', 1, map, function() {\n return 1;\n });\n buildValueArray('placeholder', 4, map, function(n) {\n return pow(10, n + 1);\n });\n loc.numeralMap = map;\n }\n\n function buildTimeFormats() {\n loc.parsingAliases['time'] = getTimeFormat();\n loc.parsingAliases['tzOffset'] = getTZOffsetFormat();\n }\n\n function getTimeFormat() {\n var src;\n if (loc.ampmFront) {\n // \"ampmFront\" exists mostly for CJK locales, which also presume that\n // time suffixes exist, allowing this to be a simpler regex.\n src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?';\n } else if(loc.ampm.length) {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)';\n }\n return src;\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src, arr;\n src = token.base ? ParsingTokens[token.base].src : token.src;\n if (token.requiresNumerals || loc.numeralUnits) {\n src += getNumeralSrc();\n }\n arr = loc[name + 's'];\n if (arr && arr.length) {\n src += '|' + arrayToRegAlternates(arr);\n }\n loc.parsingTokens[name] = src;\n });\n }\n\n function getNumeralSrc() {\n var all, src = '';\n all = loc.numerals.concat(loc.placeholders).concat(loc.articles);\n if (loc.allowsFullWidth) {\n all = all.concat(fullWidthNumbers.split(''));\n }\n if (all.length) {\n src = '|(?:' + arrayToRegAlternates(all) + ')+';\n }\n return src;\n }\n\n function buildTimeSuffixes() {\n iterateOverDateUnits(function(unit, i) {\n var token = loc.timeSuffixes[i];\n if (token) {\n loc[(unit.alias || unit.name) + 'Suffix'] = token;\n }\n });\n }\n\n function buildModifiers() {\n forEach(loc.modifiers, function(modifier) {\n var name = modifier.name, mapKey = name + 'Map', map;\n map = loc[mapKey] || {};\n forEachAlternate(modifier.src, function(alt, j) {\n var token = getOwn(loc.parsingTokens, name), val = modifier.value;\n map[alt] = val;\n loc.parsingTokens[name] = token ? token + '|' + alt : alt;\n if (modifier.name === 'sign' && j === 0) {\n // Hooking in here to set the first \"fromNow\" or \"ago\" modifier\n // directly on the locale, so that it can be reused in the\n // relative format.\n loc[val === 1 ? 'fromNow' : 'ago'] = alt;\n }\n });\n loc[mapKey] = map;\n });\n }\n\n // -- Format adding helpers\n\n function addCoreFormats() {\n forEach(CoreParsingFormats, function(df) {\n var src = df.src;\n if (df.mdy && loc.mdy) {\n // Use the mm/dd/yyyy variant if it\n // exists and the locale requires it\n src = df.mdy;\n }\n if (df.time) {\n // Core formats that allow time require the time\n // reg on both sides, so add both versions here.\n loc.addFormat(getFormatWithTime(src, true));\n loc.addFormat(getFormatWithTime(src));\n } else {\n loc.addFormat(src);\n }\n });\n loc.addFormat('{time}');\n }\n\n function addLocaleFormats() {\n addFormatSet('parse');\n addFormatSet('timeParse', true);\n addFormatSet('timeFrontParse', true, true);\n }\n\n function addFormatSet(field, allowTime, timeFront) {\n forEach(loc[field], function(format) {\n if (allowTime) {\n format = getFormatWithTime(format, timeFront);\n }\n loc.addFormat(format);\n });\n }\n\n function getFormatWithTime(baseFormat, timeBefore) {\n if (timeBefore) {\n return getTimeBefore() + baseFormat;\n }\n return baseFormat + getTimeAfter();\n }\n\n function getTimeBefore() {\n return getRegNonCapturing('{time}[,\\\\s\\\\u3000]', true);\n }\n\n function getTimeAfter() {\n var markers = ',?[\\\\s\\\\u3000]', localized;\n localized = arrayToRegAlternates(loc.timeMarkers);\n if (localized) {\n markers += '| (?:' + localized + ') ';\n }\n markers = getRegNonCapturing(markers, loc.timeMarkerOptional);\n return getRegNonCapturing(markers + '{time}', true);\n }\n\n initFormats();\n initDefinition();\n initArrayFields();\n\n buildValueArray('month', 12);\n buildValueArray('weekday', 7);\n buildValueArray('unit', 8);\n buildValueArray('ampm', 2);\n\n buildNumerals();\n buildTimeFormats();\n buildParsingTokens();\n buildTimeSuffixes();\n buildModifiers();\n\n // The order of these formats is important. Order is reversed so formats\n // that are initialized later will take precedence. Generally, this means\n // that more specific formats should come later.\n addCoreFormats();\n addLocaleFormats();\n\n }\n\n };\n\n return new Locale(def);\n}\n\nmodule.exports = getNewLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getNewLocale.js\n// module id = 217\n// module chunks = 1","'use strict';\n\nfunction getParsingTokenValue(token, str) {\n var val;\n if (token.val) {\n val = token.val;\n } else if (token.sign) {\n val = str === '+' ? 1 : -1;\n } else if (token.bool) {\n val = !!val;\n } else {\n val = +str.replace(/,/, '.');\n }\n if (token.param === 'month') {\n val -= 1;\n }\n return val;\n}\n\nmodule.exports = getParsingTokenValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getParsingTokenValue.js\n// module id = 218\n// module chunks = 1","'use strict';\n\nvar LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n getRegNonCapturing = require('./getRegNonCapturing');\n\nfunction getParsingTokenWithSuffix(field, src, suffix) {\n var token = LocalizedParsingTokens[field];\n if (token.requiresSuffix) {\n src = getRegNonCapturing(src + getRegNonCapturing(suffix));\n } else if (token.requiresSuffixOr) {\n src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix);\n } else {\n src += getRegNonCapturing(suffix, true);\n }\n return src;\n}\n\nmodule.exports = getParsingTokenWithSuffix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getParsingTokenWithSuffix.js\n// module id = 219\n// module chunks = 1","'use strict';\n\nvar iterateOverDateParams = require('./iterateOverDateParams');\n\nfunction getUnitIndexForParamName(name) {\n var params = {}, unitIndex;\n params[name] = 1;\n iterateOverDateParams(params, function(name, val, unit, i) {\n unitIndex = i;\n return false;\n });\n return unitIndex;\n}\n\nmodule.exports = getUnitIndexForParamName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getUnitIndexForParamName.js\n// module id = 220\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getWeekNumber = require('./getWeekNumber');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getWeekYear(d, localeCode, iso) {\n var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc;\n year = getYear(d);\n month = getMonth(d);\n if (month === 0 || month === 11) {\n if (!iso) {\n loc = localeManager.get(localeCode);\n firstDayOfWeek = loc.getFirstDayOfWeek(localeCode);\n firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode);\n }\n week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear);\n if (month === 0 && week === 0) {\n year -= 1;\n } else if (month === 11 && week === 1) {\n year += 1;\n }\n }\n return year;\n}\n\nmodule.exports = getWeekYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getWeekYear.js\n// module id = 221\n// module chunks = 1","'use strict';\n\nvar getYear = require('./getYear'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getYearFromAbbreviation(str, d, prefer) {\n // Following IETF here, adding 1900 or 2000 depending on the last two digits.\n // Note that this makes no accordance for what should happen after 2050, but\n // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt\n var val = +str, delta;\n val += val < 50 ? 2000 : 1900;\n if (prefer) {\n delta = val - getYear(d);\n if (delta / abs(delta) !== prefer) {\n val += prefer * 100;\n }\n }\n return val;\n}\n\nmodule.exports = getYearFromAbbreviation;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/getYearFromAbbreviation.js\n// module id = 222\n// module chunks = 1","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset');\n\nfunction isUTC(d) {\n return !!_utc(d) || tzOffset(d) === 0;\n}\n\nmodule.exports = isUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/isUTC.js\n// module id = 223\n// module chunks = 1","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverHigherDateParams(params, fn) {\n iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX);\n}\n\nmodule.exports = iterateOverHigherDateParams;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/iterateOverHigherDateParams.js\n// module id = 224\n// module chunks = 1","'use strict';\n\nvar getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nfunction resetLowerUnits(d, unitIndex) {\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = resetLowerUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/resetLowerUnits.js\n// module id = 225\n// module chunks = 1","'use strict';\n\nvar createDate = require('./createDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n setChainableConstructor = require('../../common/internal/setChainableConstructor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nfunction setDateChainableConstructor() {\n setChainableConstructor(sugarDate, createDate);\n}\n\nmodule.exports = setDateChainableConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setDateChainableConstructor.js\n// module id = 226\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setMonth(d, val) {\n callDateSet(d, 'Month', val);\n}\n\nmodule.exports = setMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setMonth.js\n// module id = 227\n// module chunks = 1","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setYear(d, val) {\n callDateSet(d, 'FullYear', val);\n}\n\nmodule.exports = setYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/internal/setYear.js\n// module id = 228\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n fullCompareDate = require('./internal/fullCompareDate');\n\nSugar.Date.defineInstance({\n\n 'is': function(date, d, margin) {\n return fullCompareDate(date, d, margin);\n }\n\n});\n\nmodule.exports = Sugar.Date.is;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/is.js\n// module id = 229\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isAfter': function(date, d, margin) {\n return date.getTime() > createDate(d).getTime() - (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isAfter.js\n// module id = 230\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isBefore': function(date, d, margin) {\n return date.getTime() < createDate(d).getTime() + (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isBefore.js\n// module id = 231\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n mathAliases = require('../common/var/mathAliases');\n\nvar min = mathAliases.min,\n max = mathAliases.max;\n\nSugar.Date.defineInstance({\n\n 'isBetween': function(date, d1, d2, margin) {\n var t = date.getTime();\n var t1 = createDate(d1).getTime();\n var t2 = createDate(d2).getTime();\n var lo = min(t1, t2);\n var hi = max(t1, t2);\n margin = margin || 0;\n return (lo - margin <= t) && (hi + margin >= t);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBetween;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isBetween.js\n// module id = 232\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFriday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isFriday.js\n// module id = 233\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFuture;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isFuture.js\n// module id = 234\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastMonth.js\n// module id = 235\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastWeek.js\n// module id = 236\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLastYear.js\n// module id = 237\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n getYear = require('./internal/getYear');\n\nSugar.Date.defineInstance({\n\n 'isLeapYear': function(date) {\n var year = getYear(date);\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isLeapYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isLeapYear.js\n// module id = 238\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isMonday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isMonday.js\n// module id = 239\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextMonth.js\n// module id = 240\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextWeek.js\n// module id = 241\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isNextYear.js\n// module id = 242\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isPast;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isPast.js\n// module id = 243\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSaturday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isSaturday.js\n// module id = 244\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSunday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isSunday.js\n// module id = 245\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisMonth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisMonth.js\n// module id = 246\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisWeek.js\n// module id = 247\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisYear;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThisYear.js\n// module id = 248\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isThursday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isThursday.js\n// module id = 249\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isToday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isToday.js\n// module id = 250\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTomorrow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isTomorrow.js\n// module id = 251\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTuesday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isTuesday.js\n// module id = 252\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n isUTC = require('./internal/isUTC');\n\nSugar.Date.defineInstance({\n\n 'isUTC': function(date) {\n return isUTC(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isUTC.js\n// module id = 253\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateIsValid = require('./internal/dateIsValid');\n\nSugar.Date.defineInstance({\n\n 'isValid': function(date) {\n return dateIsValid(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isValid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isValid.js\n// module id = 254\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWednesday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWednesday.js\n// module id = 255\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWeekday.js\n// module id = 256\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekend;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isWeekend.js\n// module id = 257\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isYesterday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/isYesterday.js\n// module id = 258\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'iso': function(date) {\n return date.toISOString();\n }\n\n});\n\nmodule.exports = Sugar.Date.iso;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/iso.js\n// module id = 259\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsAgo.js\n// module id = 260\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsFromNow.js\n// module id = 261\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsSince.js\n// module id = 262\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/millisecondsUntil.js\n// module id = 263\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesAgo.js\n// module id = 264\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesFromNow.js\n// module id = 265\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesSince.js\n// module id = 266\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/minutesUntil.js\n// module id = 267\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsAgo.js\n// module id = 268\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsFromNow.js\n// module id = 269\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsSince.js\n// module id = 270\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/monthsUntil.js\n// module id = 271\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateRangeConstructor = require('../range/var/DateRangeConstructor');\n\nSugar.Date.defineStatic({\n\n 'range': DateRangeConstructor\n\n});\n\nmodule.exports = Sugar.Date.range;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/range.js\n// module id = 272\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relative': function(date, localeCode, fn) {\n return dateRelative(date, null, localeCode, fn);\n }\n\n});\n\nmodule.exports = Sugar.Date.relative;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/relative.js\n// module id = 273\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relativeTo': function(date, d, localeCode) {\n return dateRelative(date, createDate(d), localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.relativeTo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/relativeTo.js\n// module id = 274\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'removeLocale': function(code) {\n return localeManager.remove(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.removeLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/removeLocale.js\n// module id = 275\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n moveToBeginningOfUnit = require('./internal/moveToBeginningOfUnit'),\n getUnitIndexForParamName = require('./internal/getUnitIndexForParamName');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'reset': function(date, unit, localeCode) {\n var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX;\n moveToBeginningOfUnit(date, unitIndex, localeCode);\n return date;\n }\n\n});\n\nmodule.exports = Sugar.Date.reset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/reset.js\n// module id = 276\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'rewind': function(d, args) {\n return advanceDateWithArgs(d, args, -1);\n }\n\n});\n\nmodule.exports = Sugar.Date.rewind;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/rewind.js\n// module id = 277\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsAgo.js\n// module id = 278\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsFromNow.js\n// module id = 279\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsSince.js\n// module id = 280\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/secondsUntil.js\n// module id = 281\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n updateDate = require('./internal/updateDate'),\n collectDateArguments = require('./internal/collectDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectDateArguments(args);\n return updateDate(d, args[0], args[1]);\n }\n\n});\n\nmodule.exports = Sugar.Date.set;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/set.js\n// module id = 282\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n setISOWeekNumber = require('./internal/setISOWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'setISOWeek': function(date, num) {\n return setISOWeekNumber(date, num);\n }\n\n});\n\nmodule.exports = Sugar.Date.setISOWeek;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setISOWeek.js\n// module id = 283\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'setLocale': function(code) {\n return localeManager.set(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.setLocale;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setLocale.js\n// module id = 284\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.setOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setOption.js\n// module id = 285\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n _utc = require('../common/var/_utc');\n\nSugar.Date.defineInstance({\n\n 'setUTC': function(date, on) {\n return _utc(date, on);\n }\n\n});\n\nmodule.exports = Sugar.Date.setUTC;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setUTC.js\n// module id = 286\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'setWeekday': function(date, dow) {\n return setWeekday(date, dow);\n }\n\n});\n\nmodule.exports = Sugar.Date.setWeekday;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/setWeekday.js\n// module id = 287\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/BritishEnglishDefinition.js\n// module id = 288\n// module chunks = 1","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar CanadianEnglishDefinition = getEnglishVariant({\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {Month}, {yyyy}',\n 'long': '{d} {Month}, {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = CanadianEnglishDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CanadianEnglishDefinition.js\n// module id = 289\n// module chunks = 1","'use strict';\n\nvar CoreParsingFormats = [\n {\n // 12-1978\n // 08-1978 (MDY)\n src: '{MM}[-.\\\\/]{yyyy}'\n },\n {\n // 12/08/1978\n // 08/12/1978 (MDY)\n time: true,\n src: '{dd}[-.\\\\/]{MM}(?:[-.\\\\/]{yyyy|yy|y})?',\n mdy: '{MM}[-.\\\\/]{dd}(?:[-.\\\\/]{yyyy|yy|y})?'\n },\n {\n // 1975-08-25\n time: true,\n src: '{yyyy}[-.\\\\/]{MM}(?:[-.\\\\/]{dd})?'\n },\n {\n // .NET JSON\n src: '\\\\\\\\/Date\\\\({timestamp}(?:[+-]\\\\d{4,4})?\\\\)\\\\\\\\/'\n },\n {\n // ISO-8601\n src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/CoreParsingFormats.js\n// module id = 290\n// module chunks = 1","'use strict';\n\nvar defaultNewDate = require('../internal/defaultNewDate');\n\nvar DATE_OPTIONS = {\n 'newDateInternal': defaultNewDate\n};\n\nmodule.exports = DATE_OPTIONS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/DATE_OPTIONS.js\n// module id = 291\n// module chunks = 1","'use strict';\n\nvar EnglishLocaleBaseDefinition = {\n 'code': 'en',\n 'plural': true,\n 'timeMarkers': 'at',\n 'ampm': 'AM|A.M.|a,PM|P.M.|p',\n 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s',\n 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|',\n 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend',\n 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th',\n 'articles': 'a,an,the',\n 'tokens': 'the,st|nd|rd|th,of|in,a|an,on',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'modifiers': [\n { 'name': 'half', 'src': 'half', 'value': .5 },\n { 'name': 'midday', 'src': 'noon', 'value': 12 },\n { 'name': 'midday', 'src': 'midnight', 'value': 24 },\n { 'name': 'day', 'src': 'yesterday', 'value': -1 },\n { 'name': 'day', 'src': 'today|tonight', 'value': 0 },\n { 'name': 'day', 'src': 'tomorrow', 'value': 1 },\n { 'name': 'sign', 'src': 'ago|before', 'value': -1 },\n { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 },\n { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 },\n { 'name': 'edge', 'src': 'last day', 'value': 1 },\n { 'name': 'edge', 'src': 'end|last', 'value': 2 },\n { 'name': 'shift', 'src': 'last', 'value': -1 },\n { 'name': 'shift', 'src': 'the|this', 'value': 0 },\n { 'name': 'shift', 'src': 'next', 'value': 1 }\n ],\n 'parse': [\n '(?:just)? now',\n '{shift} {unit:5-7}',\n \"{months?} (?:{year}|'{yy})\",\n '{midday} {4?} {day|weekday}',\n '{months},?(?:[-.\\\\/\\\\s]{year})?',\n '{edge} of (?:day)? {day|weekday}',\n '{0} {num}{1?} {weekday} {2} {months},? {year?}',\n '{shift?} {day?} {weekday?} {timeMarker?} {midday}',\n '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}',\n '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{0?} {date}{1?} {2?} {months?}',\n '{weekday} {2?} {shift} {unit:5}',\n '{0?} {num} {2?} {months}\\\\.?,? {year?}',\n '{num?} {unit:4-5} {sign} {day|weekday}',\n '{year}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s]{date}',\n '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n \"{date}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s](?:{year}|'?{yy})\",\n \"{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? (?:{year}|'{yy})?\"\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/EnglishLocaleBaseDefinition.js\n// module id = 292\n// module chunks = 1","'use strict';\n\nvar TIMEZONE_ABBREVIATION_REG = require('./TIMEZONE_ABBREVIATION_REG'),\n LocaleHelpers = require('./LocaleHelpers'),\n DateUnitIndexes = require('./DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n getDate = require('../internal/getDate'),\n getYear = require('../internal/getYear'),\n getHours = require('../internal/getHours'),\n getMonth = require('../internal/getMonth'),\n cloneDate = require('../internal/cloneDate'),\n padNumber = require('../../common/internal/padNumber'),\n getWeekday = require('../internal/getWeekday'),\n callDateGet = require('../../common/internal/callDateGet'),\n mathAliases = require('../../common/var/mathAliases'),\n getWeekYear = require('../internal/getWeekYear'),\n getUTCOffset = require('../internal/getUTCOffset'),\n getDaysSince = require('../internal/getDaysSince'),\n getWeekNumber = require('../internal/getWeekNumber'),\n getMeridiemToken = require('../internal/getMeridiemToken'),\n setUnitAndLowerToEdge = require('../internal/setUnitAndLowerToEdge');\n\nvar localeManager = LocaleHelpers.localeManager,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n ceil = mathAliases.ceil;\n\nvar FormatTokensBase = [\n {\n ldml: 'Dow',\n strf: 'a',\n lowerToken: 'dow',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2);\n }\n },\n {\n ldml: 'Weekday',\n strf: 'A',\n lowerToken: 'weekday',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate);\n }\n },\n {\n ldml: 'Mon',\n strf: 'b h',\n lowerToken: 'mon',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), 2);\n }\n },\n {\n ldml: 'Month',\n strf: 'B',\n lowerToken: 'month',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), alternate);\n }\n },\n {\n strf: 'C',\n get: function(d) {\n return getYear(d).toString().slice(0, 2);\n }\n },\n {\n ldml: 'd date day',\n strf: 'd',\n strfPadding: 2,\n ldmlPaddedToken: 'dd',\n ordinalToken: 'do',\n get: function(d) {\n return getDate(d);\n }\n },\n {\n strf: 'e',\n get: function(d) {\n return padNumber(getDate(d), 2, false, 10, ' ');\n }\n },\n {\n ldml: 'H 24hr',\n strf: 'H',\n strfPadding: 2,\n ldmlPaddedToken: 'HH',\n get: function(d) {\n return getHours(d);\n }\n },\n {\n ldml: 'h hours 12hr',\n strf: 'I',\n strfPadding: 2,\n ldmlPaddedToken: 'hh',\n get: function(d) {\n return getHours(d) % 12 || 12;\n }\n },\n {\n ldml: 'D',\n strf: 'j',\n strfPadding: 3,\n ldmlPaddedToken: 'DDD',\n get: function(d) {\n var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX);\n return getDaysSince(d, s) + 1;\n }\n },\n {\n ldml: 'M',\n strf: 'm',\n strfPadding: 2,\n ordinalToken: 'Mo',\n ldmlPaddedToken: 'MM',\n get: function(d) {\n return getMonth(d) + 1;\n }\n },\n {\n ldml: 'm minutes',\n strf: 'M',\n strfPadding: 2,\n ldmlPaddedToken: 'mm',\n get: function(d) {\n return callDateGet(d, 'Minutes');\n }\n },\n {\n ldml: 'Q',\n get: function(d) {\n return ceil((getMonth(d) + 1) / 3);\n }\n },\n {\n ldml: 'TT',\n strf: 'p',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode);\n }\n },\n {\n ldml: 'tt',\n strf: 'P',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).toLowerCase();\n }\n },\n {\n ldml: 'T',\n lowerToken: 't',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).charAt(0);\n }\n },\n {\n ldml: 's seconds',\n strf: 'S',\n strfPadding: 2,\n ldmlPaddedToken: 'ss',\n get: function(d) {\n return callDateGet(d, 'Seconds');\n }\n },\n {\n ldml: 'S ms',\n strfPadding: 3,\n ldmlPaddedToken: 'SSS',\n get: function(d) {\n return callDateGet(d, 'Milliseconds');\n }\n },\n {\n ldml: 'e',\n strf: 'u',\n ordinalToken: 'eo',\n get: function(d) {\n return getWeekday(d) || 7;\n }\n },\n {\n strf: 'U',\n strfPadding: 2,\n get: function(d) {\n // Sunday first, 0-53\n return getWeekNumber(d, false, 0);\n }\n },\n {\n ldml: 'W',\n strf: 'V',\n strfPadding: 2,\n ordinalToken: 'Wo',\n ldmlPaddedToken: 'WW',\n get: function(d) {\n // Monday first, 1-53 (ISO8601)\n return getWeekNumber(d, true);\n }\n },\n {\n strf: 'w',\n get: function(d) {\n return getWeekday(d);\n }\n },\n {\n ldml: 'w',\n ordinalToken: 'wo',\n ldmlPaddedToken: 'ww',\n get: function(d, localeCode) {\n // Locale dependent, 1-53\n var loc = localeManager.get(localeCode),\n dow = loc.getFirstDayOfWeek(localeCode),\n doy = loc.getFirstDayOfWeekYear(localeCode);\n return getWeekNumber(d, true, dow, doy);\n }\n },\n {\n strf: 'W',\n strfPadding: 2,\n get: function(d) {\n // Monday first, 0-53\n return getWeekNumber(d, false);\n }\n },\n {\n ldmlPaddedToken: 'gggg',\n ldmlTwoDigitToken: 'gg',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode);\n }\n },\n {\n strf: 'G',\n strfPadding: 4,\n strfTwoDigitToken: 'g',\n ldmlPaddedToken: 'GGGG',\n ldmlTwoDigitToken: 'GG',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode, true);\n }\n },\n {\n ldml: 'year',\n ldmlPaddedToken: 'yyyy',\n ldmlTwoDigitToken: 'yy',\n strf: 'Y',\n strfPadding: 4,\n strfTwoDigitToken: 'y',\n get: function(d) {\n return getYear(d);\n }\n },\n {\n ldml: 'ZZ',\n strf: 'z',\n get: function(d) {\n return getUTCOffset(d);\n }\n },\n {\n ldml: 'X',\n get: function(d) {\n return trunc(d.getTime() / 1000);\n }\n },\n {\n ldml: 'x',\n get: function(d) {\n return d.getTime();\n }\n },\n {\n ldml: 'Z',\n get: function(d) {\n return getUTCOffset(d, true);\n }\n },\n {\n ldml: 'z',\n strf: 'Z',\n get: function(d) {\n // Note that this is not accurate in all browsing environments!\n // https://github.com/moment/moment/issues/162\n // It will continue to be supported for Node and usage with the\n // understanding that it may be blank.\n var match = d.toString().match(TIMEZONE_ABBREVIATION_REG);\n return match ? match[1]: '';\n }\n },\n {\n strf: 'D',\n alias: '%m/%d/%y'\n },\n {\n strf: 'F',\n alias: '%Y-%m-%d'\n },\n {\n strf: 'r',\n alias: '%I:%M:%S %p'\n },\n {\n strf: 'R',\n alias: '%H:%M'\n },\n {\n strf: 'T',\n alias: '%H:%M:%S'\n },\n {\n strf: 'x',\n alias: '{short}'\n },\n {\n strf: 'X',\n alias: '{time}'\n },\n {\n strf: 'c',\n alias: '{stamp}'\n }\n];\n\nmodule.exports = FormatTokensBase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/FormatTokensBase.js\n// module id = 293\n// module chunks = 1","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = [\n 'months', 'weekdays', 'units', 'numerals', 'placeholders',\n 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes',\n 'parse', 'timeParse', 'timeFrontParse', 'modifiers'\n];\n\nmodule.exports = LOCALE_ARRAY_FIELDS;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js\n// module id = 294\n// module chunks = 1","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/LazyLoadedLocales.js\n// module id = 295\n// module chunks = 1","'use strict';\n\nmodule.exports = /(\\w{3})[()\\s\\d]*$/;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js\n// module id = 296\n// module chunks = 1","'use strict';\n\nvar LocaleHelpers = require('./LocaleHelpers'),\n FormatTokensBase = require('./FormatTokensBase'),\n CoreOutputFormats = require('./CoreOutputFormats'),\n forEach = require('../../common/internal/forEach'),\n padNumber = require('../../common/internal/padNumber'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n createFormatMatcher = require('../../common/internal/createFormatMatcher'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar localeManager = LocaleHelpers.localeManager,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n sugarDate = namespaceAliases.sugarDate;\n\nvar ldmlTokens, strfTokens;\n\nfunction buildDateFormatTokens() {\n\n function addFormats(target, tokens, fn) {\n if (tokens) {\n forEach(spaceSplit(tokens), function(token) {\n target[token] = fn;\n });\n }\n }\n\n function buildLowercase(get) {\n return function(d, localeCode) {\n return get(d, localeCode).toLowerCase();\n };\n }\n\n function buildOrdinal(get) {\n return function(d, localeCode) {\n var n = get(d, localeCode);\n return n + localeManager.get(localeCode).getOrdinal(n);\n };\n }\n\n function buildPadded(get, padding) {\n return function(d, localeCode) {\n return padNumber(get(d, localeCode), padding);\n };\n }\n\n function buildTwoDigits(get) {\n return function(d, localeCode) {\n return get(d, localeCode) % 100;\n };\n }\n\n function buildAlias(alias) {\n return function(d, localeCode) {\n return dateFormatMatcher(alias, d, localeCode);\n };\n }\n\n function buildAlternates(f) {\n for (var n = 1; n <= 5; n++) {\n buildAlternate(f, n);\n }\n }\n\n function buildAlternate(f, n) {\n var alternate = function(d, localeCode) {\n return f.get(d, localeCode, n);\n };\n addFormats(ldmlTokens, f.ldml + n, alternate);\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken + n] = buildLowercase(alternate);\n }\n }\n\n function getIdentityFormat(name) {\n return function(d, localeCode) {\n var loc = localeManager.get(localeCode);\n return dateFormatMatcher(loc[name], d, localeCode);\n };\n }\n\n ldmlTokens = {};\n strfTokens = {};\n\n forEach(FormatTokensBase, function(f) {\n var get = f.get, getPadded;\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken] = buildLowercase(get);\n }\n if (f.ordinalToken) {\n ldmlTokens[f.ordinalToken] = buildOrdinal(get, f);\n }\n if (f.ldmlPaddedToken) {\n ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length);\n }\n if (f.ldmlTwoDigitToken) {\n ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfTwoDigitToken) {\n strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfPadding) {\n getPadded = buildPadded(get, f.strfPadding);\n }\n if (f.alias) {\n get = buildAlias(f.alias);\n }\n if (f.allowAlternates) {\n buildAlternates(f);\n }\n addFormats(ldmlTokens, f.ldml, get);\n addFormats(strfTokens, f.strf, getPadded || get);\n });\n\n forEachProperty(CoreOutputFormats, function(src, name) {\n addFormats(ldmlTokens, name, buildAlias(src));\n });\n\n defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) {\n var fn = getIdentityFormat(name);\n addFormats(ldmlTokens, name, fn);\n methods[name] = fn;\n });\n\n addFormats(ldmlTokens, 'time', getIdentityFormat('time'));\n addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp'));\n}\n\nvar dateFormatMatcher;\n\nfunction buildDateFormatMatcher() {\n\n function getLdml(d, token, localeCode) {\n return getOwn(ldmlTokens, token)(d, localeCode);\n }\n\n function getStrf(d, token, localeCode) {\n return getOwn(strfTokens, token)(d, localeCode);\n }\n\n function checkDateToken(ldml, strf) {\n return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf);\n }\n\n // Format matcher for LDML or STRF tokens.\n dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken);\n}\n\nbuildDateFormatTokens();\n\nbuildDateFormatMatcher();\n\nmodule.exports = {\n ldmlTokens: ldmlTokens,\n strfTokens: strfTokens,\n dateFormatMatcher: dateFormatMatcher\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/var/formattingTokens.js\n// module id = 297\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksAgo.js\n// module id = 298\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksFromNow.js\n// module id = 299\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksSince.js\n// module id = 300\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/weeksUntil.js\n// module id = 301\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsAgo.js\n// module id = 302\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsFromNow.js\n// module id = 303\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsSince;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsSince.js\n// module id = 304\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsUntil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/date/yearsUntil.js\n// module id = 305\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Catalan locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ca')\n *\n */\naddLocale('ca', {\n 'plural': true,\n 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s',\n 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|',\n 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds',\n 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': \"abans d'ahir\", 'value': -2 },\n { 'name': 'day', 'src': 'ahir', 'value': -1 },\n { 'name': 'day', 'src': 'avui', 'value': 0 },\n { 'name': 'day', 'src': 'demà|dema', 'value': 1 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'en', 'value': 1 },\n { 'name': 'shift', 'src': 'passat', 'value': -1 },\n { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 }\n ],\n 'parse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift} {weekday}',\n '{weekday} {shift}',\n '{date?} {2?} {months}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ca\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ca.js\n// module id = 306\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Danish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('da')\n *\n */\naddLocale('da', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|',\n 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} {time}',\n 'full': '{weekday} d. {d}. {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{0?} {weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"da\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/da.js\n// module id = 307\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * German locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('de')\n *\n */\naddLocale('de', {\n 'plural': true,\n 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e',\n 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|',\n 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|',\n 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn',\n 'tokens': 'der',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d}. {Month} {yyyy}',\n 'long': '{d}. {Month} {yyyy} {time}',\n 'full': '{Weekday}, {d}. {Month} {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'um',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'vorgestern', 'value': -2 },\n { 'name': 'day', 'src': 'gestern', 'value': -1 },\n { 'name': 'day', 'src': 'heute', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'vor:|her', 'value': -1 },\n { 'name': 'sign', 'src': 'in', 'value': 1 },\n { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 },\n { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"de\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/de.js\n// module id = 308\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Spanish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('es')\n *\n */\naddLocale('es', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos',\n 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|',\n 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|',\n 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{weekday}, {d} de {month} de {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteayer', 'value': -2 },\n { 'name': 'day', 'src': 'ayer', 'value': -1 },\n { 'name': 'day', 'src': 'hoy', 'value': 0 },\n { 'name': 'day', 'src': 'mañana|manana', 'value': 1 },\n { 'name': 'sign', 'src': 'hace', 'value': -1 },\n { 'name': 'sign', 'src': 'dentro de', 'value': 1 },\n { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {2?} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"es\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/es.js\n// module id = 309\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Finnish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fi')\n *\n */\naddLocale('fi', {\n 'plural': true,\n 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna',\n 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu',\n 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina',\n 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s',\n 'short': '{d}.{M}.{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} klo {time}',\n 'full': '{weekday} {d}. {month} {yyyy} klo {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}.{mm}',\n 'timeMarkers': 'klo,kello',\n 'ordinalSuffix': '.',\n 'relative': function(num, unit, ms, format) {\n var units = this['units'];\n function numberWithUnit(mult) {\n return num + ' ' + units[(8 * mult) + unit];\n }\n function baseUnit() {\n return numberWithUnit(num === 1 ? 0 : 1);\n }\n switch(format) {\n case 'duration': return baseUnit();\n case 'past': return baseUnit() + ' sitten';\n case 'future': return numberWithUnit(2) + ' kuluttua';\n }\n },\n 'modifiers': [\n { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 },\n { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 },\n { 'name': 'day', 'src': 'tänään', 'value': 0 },\n { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 },\n { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 },\n { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 },\n { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 },\n { 'name': 'edge', 'src': 'lopussa', 'value': 2 },\n { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 },\n { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 },\n { 'name': 'shift', 'src': 'viime', 'value': -1 },\n { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 },\n { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{num?} {unit} {sign}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fi\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/fi.js\n// module id = 310\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * French locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fr')\n *\n */\naddLocale('fr', {\n 'plural': true,\n 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee',\n 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|',\n 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|',\n 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix',\n 'tokens': \"l'|la|le,er\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'à',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'hier', 'value': -1 },\n { 'name': 'day', 'src': \"aujourd'hui\", 'value': 0 },\n { 'name': 'day', 'src': 'demain', 'value': 1 },\n { 'name': 'sign', 'src': 'il y a', 'value': -1 },\n { 'name': 'sign', 'src': \"dans|d'ici\", 'value': 1 },\n { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 },\n { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{0?} {weekday} {shift}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fr\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/fr.js\n// module id = 311\n// module chunks = 1","'use strict';\n\nrequire('./ca');\nrequire('./da');\nrequire('./de');\nrequire('./es');\nrequire('./fi');\nrequire('./fr');\nrequire('./it');\nrequire('./ja');\nrequire('./ko');\nrequire('./nl');\nrequire('./no');\nrequire('./pl');\nrequire('./pt');\nrequire('./ru');\nrequire('./sv');\nrequire('./zh-CN');\nrequire('./zh-TW');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/index.js\n// module id = 312\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"it\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/it.js\n// module id = 313\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ja.js\n// module id = 314\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ko.js\n// module id = 315\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/nl.js\n// module id = 316\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/no.js\n// module id = 317\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/pl.js\n// module id = 318\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/pt.js\n// module id = 319\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/ru.js\n// module id = 320\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/sv.js\n// module id = 321\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/zh-CN.js\n// module id = 322\n// module chunks = 1","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/locales/zh-TW.js\n// module id = 323\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.day;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/day.js\n// module id = 324\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayAfter.js\n// module id = 325\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayAgo.js\n// module id = 326\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayBefore.js\n// module id = 327\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/dayFromNow.js\n// module id = 328\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.days;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/days.js\n// module id = 329\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysAfter.js\n// module id = 330\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysAgo.js\n// module id = 331\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysBefore.js\n// module id = 332\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/daysFromNow.js\n// module id = 333\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('../date/var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Number.defineInstance({\n\n 'duration': function(n, localeCode) {\n return localeManager.get(localeCode).getDuration(n);\n }\n\n});\n\nmodule.exports = Sugar.Number.duration;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/duration.js\n// module id = 334\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hour;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hour.js\n// module id = 335\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourAfter.js\n// module id = 336\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourAgo.js\n// module id = 337\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourBefore.js\n// module id = 338\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hourFromNow.js\n// module id = 339\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hours;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hours.js\n// module id = 340\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursAfter.js\n// module id = 341\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursAgo.js\n// module id = 342\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursBefore.js\n// module id = 343\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/hoursFromNow.js\n// module id = 344\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecond;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecond.js\n// module id = 345\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondAfter.js\n// module id = 346\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondAgo.js\n// module id = 347\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondBefore.js\n// module id = 348\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondFromNow.js\n// module id = 349\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.milliseconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/milliseconds.js\n// module id = 350\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsAfter.js\n// module id = 351\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsAgo.js\n// module id = 352\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsBefore.js\n// module id = 353\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/millisecondsFromNow.js\n// module id = 354\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minute;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minute.js\n// module id = 355\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteAfter.js\n// module id = 356\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteAgo.js\n// module id = 357\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteBefore.js\n// module id = 358\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minuteFromNow.js\n// module id = 359\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutes.js\n// module id = 360\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesAfter.js\n// module id = 361\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesAgo.js\n// module id = 362\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesBefore.js\n// module id = 363\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/minutesFromNow.js\n// module id = 364\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.month;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/month.js\n// module id = 365\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthAfter.js\n// module id = 366\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthAgo.js\n// module id = 367\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthBefore.js\n// module id = 368\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthFromNow.js\n// module id = 369\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.months;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/months.js\n// module id = 370\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsAfter.js\n// module id = 371\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsAgo.js\n// module id = 372\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsBefore.js\n// module id = 373\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/monthsFromNow.js\n// module id = 374\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.second;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/second.js\n// module id = 375\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondAfter.js\n// module id = 376\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondAgo.js\n// module id = 377\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondBefore.js\n// module id = 378\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondFromNow.js\n// module id = 379\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.seconds;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/seconds.js\n// module id = 380\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsAfter.js\n// module id = 381\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsAgo.js\n// module id = 382\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsBefore.js\n// module id = 383\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/secondsFromNow.js\n// module id = 384\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.week;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/week.js\n// module id = 385\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekAfter.js\n// module id = 386\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekAgo.js\n// module id = 387\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekBefore.js\n// module id = 388\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weekFromNow.js\n// module id = 389\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeks;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeks.js\n// module id = 390\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksAfter.js\n// module id = 391\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksAgo.js\n// module id = 392\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksBefore.js\n// module id = 393\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/weeksFromNow.js\n// module id = 394\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.year;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/year.js\n// module id = 395\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearAfter.js\n// module id = 396\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearAgo.js\n// module id = 397\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearBefore.js\n// module id = 398\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearFromNow.js\n// module id = 399\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.years;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/years.js\n// module id = 400\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAfter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsAfter.js\n// module id = 401\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAgo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsAgo.js\n// module id = 402\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsBefore;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsBefore.js\n// module id = 403\n// module chunks = 1","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsFromNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/number/yearsFromNow.js\n// module id = 404\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeClamp = require('./internal/rangeClamp'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clamp': function(el) {\n return rangeClamp(this, el);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clamp\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/clamp.js\n// module id = 405\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clone': function() {\n return new Range(this.start, this.end);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clone\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/clone.js\n// module id = 406\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'contains': function(el) {\n if (el == null) return false;\n if (el.start && el.end) {\n return el.start >= this.start && el.start <= this.end &&\n el.end >= this.start && el.end <= this.end;\n } else {\n return el >= this.start && el <= this.end;\n }\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"contains\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/contains.js\n// module id = 407\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"days\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/days.js\n// module id = 408\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'every': function(amount, fn) {\n return rangeEvery(this, amount, false, fn);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"every\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/every.js\n// module id = 409\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"hours\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/hours.js\n// module id = 410\n// module chunks = 1","'use strict';\n\n// Static Methods\nrequire('../date/range');\n\n// Prototype Methods\nrequire('./clamp');\nrequire('./clone');\nrequire('./contains');\nrequire('./days');\nrequire('./every');\nrequire('./hours');\nrequire('./intersect');\nrequire('./isValid');\nrequire('./milliseconds');\nrequire('./minutes');\nrequire('./months');\nrequire('./seconds');\nrequire('./span');\nrequire('./toArray');\nrequire('./toString');\nrequire('./union');\nrequire('./weeks');\nrequire('./years');\n\nmodule.exports = require('sugar-core');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/index.js\n// module id = 411\n// module chunks = 1","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n DURATION_UNITS = require('../var/DURATION_UNITS'),\n Range = require('./Range'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n rangeEvery = require('./rangeEvery'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n defineOnPrototype = require('../../common/internal/defineOnPrototype');\n\nfunction buildDateRangeUnits() {\n var methods = {};\n forEach(DURATION_UNITS.split('|'), function(unit, i) {\n var name = unit + 's', mult, fn;\n if (i < 4) {\n fn = function() {\n return rangeEvery(this, unit, true);\n };\n } else {\n mult = MULTIPLIERS[simpleCapitalize(name)];\n fn = function() {\n return trunc((this.end - this.start) / mult);\n };\n }\n methods[name] = fn;\n });\n defineOnPrototype(Range, methods);\n}\n\nmodule.exports = buildDateRangeUnits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/buildDateRangeUnits.js\n// module id = 412\n// module chunks = 1","'use strict';\n\nvar Range = require('./Range'),\n DurationTextFormats = require('../var/DurationTextFormats'),\n incrementDate = require('./incrementDate'),\n getDateForRange = require('./getDateForRange'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar sugarDate = namespaceAliases.sugarDate,\n RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO,\n RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION,\n RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION;\n\nfunction createDateRangeFromString(str) {\n var match, datetime, duration, dio, start, end;\n if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) {\n start = getDateForRange(match[1].replace('from', 'at'));\n end = sugarDate.get(start, match[2]);\n return new Range(start, end);\n }\n if (match = str.match(RANGE_REG_FRONT_DURATION)) {\n duration = match[1];\n datetime = match[2];\n }\n if (match = str.match(RANGE_REG_REAR_DURATION)) {\n datetime = match[1];\n duration = match[2];\n }\n if (datetime && duration) {\n start = getDateForRange(datetime);\n dio = getDateIncrementObject(duration);\n end = incrementDate(start, dio[0], dio[1]);\n } else {\n start = str;\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n}\n\nmodule.exports = createDateRangeFromString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/createDateRangeFromString.js\n// module id = 413\n// module chunks = 1","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n getPrecision = require('./getPrecision');\n\nvar max = mathAliases.max;\n\nfunction getGreaterPrecision(n1, n2) {\n return max(getPrecision(n1), getPrecision(n2));\n}\n\nmodule.exports = getGreaterPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getGreaterPrecision.js\n// module id = 414\n// module chunks = 1","'use strict';\n\nvar periodSplit = require('../../common/internal/periodSplit');\n\nfunction getPrecision(n) {\n var split = periodSplit(n.toString());\n return split[1] ? split[1].length : 0;\n}\n\nmodule.exports = getPrecision;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getPrecision.js\n// module id = 415\n// module chunks = 1","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction getRangeMemberNumericValue(m) {\n return isString(m) ? m.charCodeAt(0) : m;\n}\n\nmodule.exports = getRangeMemberNumericValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/getRangeMemberNumericValue.js\n// module id = 416\n// module chunks = 1","'use strict';\n\nvar withPrecision = require('../../common/internal/withPrecision');\n\nfunction incrementNumber(current, amount, precision) {\n return withPrecision(current + amount, precision);\n}\n\nmodule.exports = incrementNumber;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementNumber.js\n// module id = 417\n// module chunks = 1","'use strict';\n\nvar chr = require('../../common/var/chr');\n\nfunction incrementString(current, amount) {\n return chr(current.charCodeAt(0) + amount);\n}\n\nmodule.exports = incrementString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/incrementString.js\n// module id = 418\n// module chunks = 1","'use strict';\n\nvar valueIsNotInfinite = require('./valueIsNotInfinite'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nfunction isValidRangeMember(m) {\n var val = getRangeMemberPrimitiveValue(m);\n return (!!val || val === 0) && valueIsNotInfinite(m);\n}\n\nmodule.exports = isValidRangeMember;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/isValidRangeMember.js\n// module id = 419\n// module chunks = 1","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction rangeClamp(range, obj) {\n var clamped,\n start = range.start,\n end = range.end,\n min = end < start ? end : start,\n max = start > end ? start : end;\n if (obj < min) {\n clamped = min;\n } else if (obj > max) {\n clamped = max;\n } else {\n clamped = obj;\n }\n return cloneRangeMember(clamped);\n}\n\nmodule.exports = rangeClamp;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/rangeClamp.js\n// module id = 420\n// module chunks = 1","'use strict';\n\nfunction valueIsNotInfinite(m) {\n return m !== -Infinity && m !== Infinity;\n}\n\nmodule.exports = valueIsNotInfinite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/internal/valueIsNotInfinite.js\n// module id = 421\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'intersect': function(range) {\n if (range.start > this.end || range.end < this.start) {\n return new Range(NaN, NaN);\n }\n return new Range(\n this.start > range.start ? this.start : range.start,\n this.end < range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"intersect\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/intersect.js\n// module id = 422\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'isValid': function() {\n return rangeIsValid(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"isValid\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/isValid.js\n// module id = 423\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"milliseconds\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/milliseconds.js\n// module id = 424\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"minutes\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/minutes.js\n// module id = 425\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"months\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/months.js\n// module id = 426\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"seconds\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/seconds.js\n// module id = 427\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n mathAliases = require('../common/var/mathAliases'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype'),\n getRangeMemberNumericValue = require('./internal/getRangeMemberNumericValue');\n\nvar abs = mathAliases.abs;\n\ndefineOnPrototype(Range, {\n\n 'span': function() {\n var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start);\n return rangeIsValid(this) ? abs(n) + 1 : NaN;\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"span\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/span.js\n// module id = 428\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toArray': function() {\n return rangeEvery(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toArray\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/toArray.js\n// module id = 429\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toString': function() {\n return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range';\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toString\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/toString.js\n// module id = 430\n// module chunks = 1","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'union': function(range) {\n return new Range(\n this.start < range.start ? this.start : range.start,\n this.end > range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"union\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/union.js\n// module id = 431\n// module chunks = 1","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = RegExp('(\\\\d+)?\\\\s*('+ DURATION_UNITS +')s?', 'i');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DURATION_REG.js\n// module id = 432\n// module chunks = 1","'use strict';\n\nvar Range = require('../internal/Range'),\n classChecks = require('../../common/var/classChecks'),\n getDateForRange = require('../internal/getDateForRange'),\n createDateRangeFromString = require('../internal/createDateRangeFromString');\n\nvar isString = classChecks.isString;\n\nvar DateRangeConstructor = function(start, end) {\n if (arguments.length === 1 && isString(start)) {\n return createDateRangeFromString(start);\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n};\n\nmodule.exports = DateRangeConstructor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DateRangeConstructor.js\n// module id = 433\n// module chunks = 1","'use strict';\n\nvar FULL_CAPTURED_DURATION = require('./FULL_CAPTURED_DURATION');\n\nmodule.exports = {\n RANGE_REG_FROM_TO: /(?:from)?\\s*(.+)\\s+(?:to|until)\\s+(.+)$/i,\n RANGE_REG_REAR_DURATION: RegExp('(.+)\\\\s*for\\\\s*' + FULL_CAPTURED_DURATION, 'i'),\n RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\\\s*'+ FULL_CAPTURED_DURATION +'\\\\s*(?:starting)?\\\\s(?:at\\\\s)?(.+)', 'i')\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/DurationTextFormats.js\n// module id = 434\n// module chunks = 1","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = '((?:\\\\d+)?\\\\s*(?:' + DURATION_UNITS + '))s?';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/var/FULL_CAPTURED_DURATION.js\n// module id = 435\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"weeks\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/weeks.js\n// module id = 436\n// module chunks = 1","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"years\" on Range.prototype.\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/sugar-date/range/years.js\n// module id = 437\n// module chunks = 1"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/tablefilter/tf-0-d88702b82ce1d192a674.js b/dist/tablefilter/tf-0-d88702b82ce1d192a674.js deleted file mode 100644 index 6b14e883..00000000 --- a/dist/tablefilter/tf-0-d88702b82ce1d192a674.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * tablefilter v0.5.23 by Max Guglielmi - * build date: 2017-06-24T10:49:00.184Z - * MIT License - */ - -webpackJsonp([0],{438:function(e,t,n){function r(e){return n(i(e))}function i(e){var t=o[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var o={"./array":67,"./array.js":67,"./const":14,"./const.js":14,"./cookie":109,"./cookie.js":109,"./dom":9,"./dom.js":9,"./emitter":69,"./emitter.js":69,"./event":17,"./event.js":17,"./extensions/advancedGrid/adapterEzEditTable":439,"./extensions/advancedGrid/adapterEzEditTable.js":439,"./extensions/advancedGrid/advancedGrid":441,"./extensions/advancedGrid/advancedGrid.js":441,"./extensions/colOps/colOps":442,"./extensions/colOps/colOps.js":442,"./extensions/colsVisibility/colsVisibility":443,"./extensions/colsVisibility/colsVisibility.js":443,"./extensions/filtersVisibility/filtersVisibility":444,"./extensions/filtersVisibility/filtersVisibility.js":444,"./extensions/sort/adapterSortabletable":440,"./extensions/sort/adapterSortabletable.js":440,"./extensions/sort/sort":445,"./extensions/sort/sort.js":445,"./feature":11,"./feature.js":11,"./modules/alternateRows":110,"./modules/alternateRows.js":110,"./modules/baseDropdown":68,"./modules/baseDropdown.js":68,"./modules/checkList":70,"./modules/checkList.js":70,"./modules/clearButton":111,"./modules/clearButton.js":111,"./modules/dateType":112,"./modules/dateType.js":112,"./modules/dropdown":71,"./modules/dropdown.js":71,"./modules/gridLayout":113,"./modules/gridLayout.js":113,"./modules/hash":114,"./modules/hash.js":114,"./modules/help":115,"./modules/help.js":115,"./modules/highlightKeywords":116,"./modules/highlightKeywords.js":116,"./modules/loader":117,"./modules/loader.js":117,"./modules/markActiveColumns":118,"./modules/markActiveColumns.js":118,"./modules/noResults":119,"./modules/noResults.js":119,"./modules/paging":120,"./modules/paging.js":120,"./modules/popupFilter":121,"./modules/popupFilter.js":121,"./modules/rowsCounter":122,"./modules/rowsCounter.js":122,"./modules/state":123,"./modules/state.js":123,"./modules/statusBar":124,"./modules/statusBar.js":124,"./modules/storage":125,"./modules/storage.js":125,"./number":52,"./number.js":52,"./root":15,"./root.js":15,"./sort":108,"./sort.js":108,"./string":19,"./string.js":19,"./tablefilter":126,"./tablefilter.js":126,"./types":6,"./types.js":6};r.keys=function(){return Object.keys(o)},r.resolve=i,e.exports=r,r.id=438},439:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&!n.startRow?void 0:n.startRow||e.refRow,n.base_path=n.base_path||e.basePath+"ezEditTable/";var r=n.editable,i=n.selection;i&&(n.default_selection=n.default_selection||"row"),n.active_cell_css=n.active_cell_css||"ezETSelectedCell";var o=0,s=0;if(i){var a=function(t,n,r){var i=t.Selection,a=function(r){if("row"===t.defaultSelection)i.SelectRowByIndex(r);else{t.ClearSelections();var o=n.cellIndex,s=e.dom().rows[r];"both"===t.defaultSelection&&i.SelectRowByIndex(r),s&&i.SelectCell(s.cells[o])}if(e.validRowsIndex.length!==e.getRowsNb()){var a=e.dom().rows[r];a&&a.scrollIntoView(!1),u&&(u.cellIndex===e.getCellsNb()-1&&e.gridLayout?e.tblCont.scrollLeft=1e8:0===u.cellIndex&&e.gridLayout?e.tblCont.scrollLeft=0:u.scrollIntoView(!1))}};if(e.validRowsIndex){var l=e.validRowsIndex,d=l.length,c="row"!==t.defaultSelection?n.parentNode:n,u="TD"===n.nodeName?n:null,h=void 0!==r?t.Event.GetKey(r):0,f=-1!==l.indexOf(c.rowIndex),p=void 0,b=e.feature("paging"),m=34===h||33===h?b&&b.pageLength||t.nbRowsPerPage:1;if(f)34!==h&&33!==h?(o=l.indexOf(c.rowIndex),s=c.rowIndex):(p=34===h?o+m<=d-1?l[o+m]:[d-1]:o-m<=l[0]?l[0]:l[o-m],s=p,o=l.indexOf(p),a(p));else{if(c.rowIndex>s)if(c.rowIndex>=l[d-1])p=l[d-1];else{var g=o+m;p=g>d-1?l[d-1]:l[g]}else if(c.rowIndex<=l[0])p=l[0];else{var y=l[o-m];p=y||l[0]}s=c.rowIndex,a(p)}}},d=function(t,n){var r="row"!==t.defaultSelection?n.parentNode:n;if(e.paging&&e.feature("paging").nbPages>1){var i=e.feature("paging");t.nbRowsPerPage=i.pageLength;var o=e.validRowsIndex,s=o.length,a=parseInt(i.startPagingRow,10)+parseInt(i.pageLength,10),l=r.rowIndex;l===o[s-1]&&i.currentPageNb!==i.nbPages?i.setPage("last"):l===o[0]&&1!==i.currentPageNb?i.setPage("first"):l>o[a-1]&&lo[0]&&i.setPage("previous")}};if(e.paging&&(e.feature("paging").onAfterChangePage=function(e){var t=e.tf.extension("advancedGrid"),n=t._ezEditTable,r=n.Selection,i=r.GetActiveRow();i&&i.scrollIntoView(!1);var o=r.GetActiveCell();o&&o.scrollIntoView(!1)}),"row"===n.default_selection){var c=n.on_before_selected_row;n.on_before_selected_row=function(){var e=arguments;d(e[0],e[1],e[2]),c&&c.call(null,e[0],e[1],e[2])};var u=n.on_after_selected_row;n.on_after_selected_row=function(){var e=arguments;a(e[0],e[1],e[2]),u&&u.call(null,e[0],e[1],e[2])}}else{var h=n.on_before_selected_cell;n.on_before_selected_cell=function(){var e=arguments;d(e[0],e[1],e[2]),h&&h.call(null,e[0],e[1],e[2])};var f=n.on_after_selected_cell;n.on_after_selected_cell=function(){var e=arguments;a(e[0],e[1],e[2]),f&&f.call(null,e[0],e[1],e[2])}}}if(r){var p=n.on_added_dom_row;if(n.on_added_dom_row=function(){var t=arguments;e.nbFilterableRows++,e.paging?(e.nbFilterableRows++,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset()):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),p&&p.call(null,t[0],t[1],t[2])},n.actions&&n.actions.delete){var b=n.actions.delete.on_after_submit;n.actions.delete.on_after_submit=function(){var t=arguments;e.nbFilterableRows--,e.paging?(e.nbFilterableRows--,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset(!1)):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),b&&b.call(null,t[0],t[1])}}}try{this._ezEditTable=new EditTable(e.id,n,t),this._ezEditTable.Init()}catch(e){throw new Error('Failed to instantiate EditTable object.\n \n"ezEditTable" dependency not found.')}this.initialized=!0}},{key:"reset",value:function(){var e=this._ezEditTable;e&&(this.cfg.selection&&e.Selection.Set(),this.cfg.editable&&e.Editable.Set())}},{key:"toggle",value:function(){var e=this._ezEditTable;e.editable?e.Editable.Remove():e.Editable.Set(),e.selection?e.Selection.Remove():e.Selection.Set()}},{key:"_toggleForInputFilter",value:function(){var e=this.tf;if(e.getActiveFilterId()){var t=e.getColumnIndexFromFilterId(e.getActiveFilterId());e.getFilterType(t)===d.INPUT&&this.toggle()}}},{key:"destroy",value:function(){var e=this;if(this.initialized){var t=this._ezEditTable;t&&(this.cfg.selection&&(t.Selection.ClearSelections(),t.Selection.Remove()),this.cfg.editable&&t.Editable.Remove()),this.emitter.off(["filter-focus","filter-blur"],function(){return e._toggleForInputFilter()}),this.initialized=!1}}}]),t}(a.Feature);t.default=u},440:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.split(".");for(var n in t){for(var r=t[n];3>r.length;)r="0"+r;t[n]=r}return t.join(".")}function a(e,t){var n=s(e.value.toLowerCase()),r=s(t.value.toLowerCase());return n===r?0:n0){var o=e.triggerIds;n=[],r=o.length;for(var s=0;s0&&function(){for(var t=e.triggerIds,n=0;n1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments[2],r=this.excludeRows||[],i=tf.getVisibleColumnData(e,!1,r);return Number(this.calc(i,t,n))}},{key:"calc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments[2],r=0;switch("q1"!==t&&"q3"!==t&&"median"!==t||(e=this.sortColumnValues(e,c.numSortAsc)),t){case"mean":r=this.calcMean(e);break;case"sum":r=this.calcSum(e);break;case"min":r=this.calcMin(e);break;case"max":r=this.calcMax(e);break;case"median":r=this.calcMedian(e);break;case"q1":r=this.calcQ1(e);break;case"q3":r=this.calcQ3(e)}return(0,d.isEmpty)(n)?r:r.toFixed(n)}},{key:"calcSum",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(0,d.isEmpty)(e)?0:e.reduce(function(e,t){return Number(e)+Number(t)})}},{key:"calcMean",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.calcSum(e)/e.length;return Number(t)}},{key:"calcMax",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.max.apply(null,e)}},{key:"calcMin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.min.apply(null,e)}},{key:"calcMedian",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length,n=0;return t%2==1?(n=Math.floor(t/2),Number(e[n])):(Number(e[t/2])+Number(e[t/2-1]))/2}},{key:"calcQ1",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length,n=0;return n=Math.floor(t/4),4*n===t?(Number(e[n-1])+Number(e[n]))/2:Number(e[n])}},{key:"calcQ3",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length,n=0,r=0;return n=Math.floor(t/4),4*n===t?(r=3*n,(Number(e[r])+Number(e[r-1]))/2):Number(e[t-n-1])}},{key:"sortColumnValues",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];return e.sort(t)}},{key:"writeResult",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"innerhtml",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o=(0,l.elm)(t);if(o)switch(e=e.toFixed(r),e=isNaN(e)||!isFinite(e)?"":(0,f.default)(i)(e),n.toLowerCase()){case"innerhtml":o.innerHTML=e;break;case"setvalue":o.value=e;break;case"createtextnode":var s=o.firstChild,a=(0,l.createText)(e);o.replaceChild(a,s)}}},{key:"configureFormat",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.tf;if(n.hasType(e,[u.FORMATTED_NUMBER])){var r=n.colTypes[e];r.decimal&&!t.decimal&&(t.decimal=r.decimal),r.thousands&&!t.integerSeparator&&(t.integerSeparator=r.thousands)}else t.decimal=t.decimal||"",t.integerSeparator=t.integerSeparator||"";return t}},{key:"destroy",value:function(){var e=this;this.initialized&&(this.emitter.off(p,function(){return e.calcAll()}),this.initialized=!1)}}]),t}(a.Feature);t.default=b},443:function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n',o.icnCollapseHtml='Collapse filters',o.defaultText="Toggle filters",o.targetId=n.target_id||null,o.enableIcon=!1!==n.enable_icon,o.btnText=n.btn_text||"",o.collapseBtnHtml=o.enableIcon?o.icnCollapseHtml+o.btnText:o.btnText||o.defaultText,o.expandBtnHtml=o.enableIcon?o.icnExpandHtml+o.btnText:o.btnText||o.defaultText,o.btnHtml=n.btn_html||null,o.btnCssClass=n.btn_css_class||"btnExpClpFlt",o.contCssClass=n.cont_css_class||"expClpFlt",o.filtersRowIndex=(0,d.isUndef)(n.filters_row_index)?e.getFiltersRowIndex():n.filters_row_index,o.visibleAtStart=!!(0,d.isUndef)(n.visible_at_start)||Boolean(n.visible_at_start),o.onBeforeShow=(0,d.isFn)(n.on_before_show)?n.on_before_show:d.EMPTY_FN,o.onAfterShow=(0,d.isFn)(n.on_after_show)?n.on_after_show:d.EMPTY_FN,o.onBeforeHide=(0,d.isFn)(n.on_before_hide)?n.on_before_hide:d.EMPTY_FN,o.onAfterHide=(0,d.isFn)(n.on_after_hide)?n.on_after_hide:d.EMPTY_FN,e.import(n.name+"Style",e.stylePath+o.stylesheet,null,"link"),o.enable(),o}return o(t,e),s(t,[{key:"init",value:function(){var e=this;this.initialized||(this.buildUI(),this.initialized=!0,this.emitter.on(["show-filters"],function(t,n){return e.show(n)}),this.emitter.emit("filters-visibility-initialized",this.tf,this))}},{key:"buildUI",value:function(){var e=this,t=this.tf,n=(0,l.createElm)("span");n.className=this.contCssClass,this.targetId||t.setToolbar();var r=this.targetId?(0,l.elm)(this.targetId):t.rDiv;if(this.targetId)r.appendChild(n);else{var i=r.firstChild;i.parentNode.insertBefore(n,i)}var o=void 0;this.btnHtml?(n.innerHTML=this.btnHtml,o=n.firstChild):(o=(0,l.createElm)("a",["href","javascript:void(0);"]),o.className=this.btnCssClass,o.title=this.btnText||this.defaultText,o.innerHTML=this.collapseBtnHtml,n.appendChild(o)),(0,c.addEvt)(o,"click",function(){return e.toggle()}),this.contEl=n,this.btnEl=o,this.visibleAtStart||this.toggle()}},{key:"toggle",value:function(){var e=this.tf,t=e.gridLayout?e.feature("gridLayout").headTbl:e.dom(),n=t.rows[this.filtersRowIndex],r=""===n.style.display;this.show(!r)}},{key:"show",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.tf,n=t.gridLayout?t.feature("gridLayout").headTbl:t.dom(),r=n.rows[this.filtersRowIndex];e&&this.onBeforeShow(this),e||this.onBeforeHide(this),r.style.display=e?"":"none",this.enableIcon&&!this.btnHtml&&(this.btnEl.innerHTML=e?this.collapseBtnHtml:this.expandBtnHtml),e&&this.onAfterShow(this),e||this.onAfterHide(this),this.emitter.emit("filters-toggled",t,this,e)}},{key:"destroy",value:function(){var e=this;this.initialized&&(this.emitter.off(["show-filters"],function(t,n){return e.show(n)}),this.btnEl.innerHTML="",(0,l.removeElm)(this.btnEl),this.btnEl=null,this.contEl.innerHTML="",(0,l.removeElm)(this.contEl),this.contEl=null,this.initialized=!1)}}]),t}(a.Feature);t.default=u},445:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(440),i=function(e){return e&&e.__esModule?e:{default:e}}(r);n(15).root.SortableTable||n(449),t.default=i.default},446:function(e,t){function n(e){function t(t,n){if(n=n||{},!t&&0!==t)return"";t=""+t;var d=[],c="-"===t.charAt(0);return t=t.replace(/^\-/g,""),e.negativeLeftOut||n.noUnits||d.push(e.prefix),c&&d.push(e.negativeLeftSymbol),e.negativeLeftOut&&!n.noUnits&&d.push(e.prefix),t=t.split("."),null!=e.round&&l(t,e.round),null!=e.truncate&&(t[1]=a(t[1],e.truncate)),e.padLeft>0&&(t[0]=o(t[0],e.padLeft)),e.padRight>0&&(t[1]=s(t[1],e.padRight)),!n.noSeparator&&t[1]&&(t[1]=i(t[1],e.decimalsSeparator)),!n.noSeparator&&t[0]&&(t[0]=r(t[0],e.integerSeparator)),d.push(t[0]),t[1]&&(d.push(e.decimal),d.push(t[1])),e.negativeRightOut&&!n.noUnits&&d.push(e.suffix),c&&d.push(e.negativeRightSymbol),e.negativeRightOut||n.noUnits||d.push(e.suffix),d.join("")}function n(t,n){n=n||[],e.allowedSeparators&&e.allowedSeparators.forEach(function(e){n.push(e)}),n.push(e.integerSeparator),n.push(e.decimalsSeparator),t=t.replace(e.prefix,""),t=t.replace(e.suffix,"");var r=t;do{t=r;for(var i=0;it?e.substr(0,t):e}function l(e,t){if(e[1]&&t>=0&&e[1].length>t){var n=e[1].slice(0,t);if(+e[1].substr(t,1)>=5){for(var r="";"0"===n.charAt(0);)r+="0",n=n.substr(1);n=+n+1+"",n=r+n,n.length>t&&(e[0]=+e[0]+ +n.charAt(0)+"",n=n.substring(1))}e[1]=n}return e}e.exports=n},447:function(e,t){e.exports='/*----------------------------------------------------------------------------\\\r\n| Sortable Table 1.12 |\r\n|-----------------------------------------------------------------------------|\r\n| Created by Erik Arvidsson |\r\n| (http://webfx.eae.net/contact.html#erik) |\r\n| For WebFX (http://webfx.eae.net/) |\r\n|-----------------------------------------------------------------------------|\r\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\r\n|-----------------------------------------------------------------------------|\r\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\r\n|-----------------------------------------------------------------------------|\r\n| Licensed under the Apache License, Version 2.0 (the "License"); you may not |\r\n| use this file except in compliance with the License. You may obtain a copy |\r\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\r\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\r\n| Unless required by applicable law or agreed to in writing, software |\r\n| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |\r\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\r\n| License for the specific language governing permissions and limitations |\r\n| under the License. |\r\n|-----------------------------------------------------------------------------|\r\n| 2003-01-10 | First version |\r\n| 2003-01-19 | Minor changes to the date parsing |\r\n| 2003-01-28 | JScript 5.0 fixes (no support for \'in\' operator) |\r\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\r\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\r\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\r\n| | Using onclick DOM0 event if no support for addEventListener |\r\n| | or attachEvent |\r\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\r\n| | easier to add new, custom sort types. |\r\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\r\n| | Change defaultDescending to suit your needs. |\r\n| 2004-03-14 | Improved sort type None look and feel a bit |\r\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\r\n| | can use another tHead or no tHead, and you can chose some |\r\n| | other tBody. |\r\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\r\n|-----------------------------------------------------------------------------|\r\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\r\n\\----------------------------------------------------------------------------*/\r\n\r\n\r\nfunction SortableTable(oTable, oSortTypes) {\r\n\r\n\tthis.sortTypes = oSortTypes || [];\r\n\r\n\tthis.sortColumn = null;\r\n\tthis.descending = null;\r\n\r\n\tvar oThis = this;\r\n\tthis._headerOnclick = function (e) {\r\n\t\toThis.headerOnclick(e);\r\n\t};\r\n\r\n\tif (oTable) {\r\n\t\tthis.setTable( oTable );\r\n\t\tthis.document = oTable.ownerDocument || oTable.document;\r\n\t}\r\n\telse {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\r\n\t// only IE needs this\r\n\tvar win = this.document.defaultView || this.document.parentWindow;\r\n\tthis._onunload = function () {\r\n\t\toThis.destroy();\r\n\t};\r\n\tif (win && typeof win.attachEvent != "undefined") {\r\n\t\twin.attachEvent("onunload", this._onunload);\r\n\t}\r\n}\r\n\r\nSortableTable.gecko = navigator.product == "Gecko";\r\nSortableTable.msie = /msie/i.test(navigator.userAgent);\r\n// Mozilla is faster when doing the DOM manipulations on\r\n// an orphaned element. MSIE is not\r\nSortableTable.removeBeforeSort = SortableTable.gecko;\r\n\r\nSortableTable.prototype.onsort = function () {};\r\n\r\n// default sort order. true -> descending, false -> ascending\r\nSortableTable.prototype.defaultDescending = false;\r\n\r\n// shared between all instances. This is intentional to allow external files\r\n// to modify the prototype\r\nSortableTable.prototype._sortTypeInfo = {};\r\n\r\nSortableTable.prototype.setTable = function (oTable) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.element = oTable;\r\n\tthis.setTHead( oTable.tHead );\r\n\tthis.setTBody( oTable.tBodies[0] );\r\n};\r\n\r\nSortableTable.prototype.setTHead = function (oTHead) {\r\n\tif (this.tHead && this.tHead != oTHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.tHead = oTHead;\r\n\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\nSortableTable.prototype.setTBody = function (oTBody) {\r\n\tthis.tBody = oTBody;\r\n};\r\n\r\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tif ( this.tHead )\r\n\t\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\n// adds arrow containers and events\r\n// also binds sort type to the header cells so that reordering columns does\r\n// not break the sort types\r\nSortableTable.prototype.initHeader = function (oSortTypes) {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar doc = this.tHead.ownerDocument || this.tHead.document;\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tvar l = cells.length;\r\n\tvar img, c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (this.sortTypes[i] != null && this.sortTypes[i] != "None") {\r\n\t\t\timg = doc.createElement("IMG");\r\n\t\t\timg.src = "images/blank.png";\r\n\t\t\tc.appendChild(img);\r\n\t\t\tif (this.sortTypes[i] != null)\r\n\t\t\t\tc._sortType = this.sortTypes[i];\r\n\t\t\tif (typeof c.addEventListener != "undefined")\r\n\t\t\t\tc.addEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.attachEvent != "undefined")\r\n\t\t\t\tc.attachEvent("onclick", this._headerOnclick);\r\n\t\t\telse\r\n\t\t\t\tc.onclick = this._headerOnclick;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tc.setAttribute( "_sortType", oSortTypes[i] );\r\n\t\t\tc._sortType = "None";\r\n\t\t}\r\n\t}\r\n\tthis.updateHeaderArrows();\r\n};\r\n\r\n// remove arrows and events\r\nSortableTable.prototype.uninitHeader = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (c._sortType != null && c._sortType != "None") {\r\n\t\t\tc.removeChild(c.lastChild);\r\n\t\t\tif (typeof c.removeEventListener != "undefined")\r\n\t\t\t\tc.removeEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.detachEvent != "undefined")\r\n\t\t\t\tc.detachEvent("onclick", this._headerOnclick);\r\n\t\t\tc._sortType = null;\r\n\t\t\tc.removeAttribute( "_sortType" );\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.updateHeaderArrows = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar img;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tif (cells[i]._sortType != null && cells[i]._sortType != "None") {\r\n\t\t\timg = cells[i].lastChild;\r\n\t\t\tif (i == this.sortColumn)\r\n\t\t\t\timg.className = "sort-arrow " + (this.descending ? "descending" : "ascending");\r\n\t\t\telse\r\n\t\t\t\timg.className = "sort-arrow";\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.headerOnclick = function (e) {\r\n\t// find TD element\r\n\tvar el = e.target || e.srcElement;\r\n\twhile (el.tagName != "TD")\r\n\t\tel = el.parentNode;\r\n\r\n\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\r\n};\r\n\r\n// IE returns wrong cellIndex when columns are hidden\r\nSortableTable.getCellIndex = function (oTd) {\r\n\tvar cells = oTd.parentNode.childNodes\r\n\tvar l = cells.length;\r\n\tvar i;\r\n\tfor (i = 0; cells[i] != oTd && i < l; i++)\r\n\t\t;\r\n\treturn i;\r\n};\r\n\r\nSortableTable.prototype.getSortType = function (nColumn) {\r\n\treturn this.sortTypes[nColumn] || "String";\r\n};\r\n\r\n// only nColumn is required\r\n// if bDescending is left out the old value is taken into account\r\n// if sSortType is left out the sort type is found from the sortTypes array\r\n\r\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\r\n\tif (!this.tBody) return;\r\n\tif (sSortType == null)\r\n\t\tsSortType = this.getSortType(nColumn);\r\n\r\n\t// exit if None\r\n\tif (sSortType == "None")\r\n\t\treturn;\r\n\r\n\tif (bDescending == null) {\r\n\t\tif (this.sortColumn != nColumn)\r\n\t\t\tthis.descending = this.defaultDescending;\r\n\t\telse\r\n\t\t\tthis.descending = !this.descending;\r\n\t}\r\n\telse\r\n\t\tthis.descending = bDescending;\r\n\r\n\tthis.sortColumn = nColumn;\r\n\r\n\tif (typeof this.onbeforesort == "function")\r\n\t\tthis.onbeforesort();\r\n\r\n\tvar f = this.getSortFunction(sSortType, nColumn);\r\n\tvar a = this.getCache(sSortType, nColumn);\r\n\tvar tBody = this.tBody;\r\n\r\n\ta.sort(f);\r\n\r\n\tif (this.descending)\r\n\t\ta.reverse();\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// remove from doc\r\n\t\tvar nextSibling = tBody.nextSibling;\r\n\t\tvar p = tBody.parentNode;\r\n\t\tp.removeChild(tBody);\r\n\t}\r\n\r\n\t// insert in the new order\r\n\tvar l = a.length;\r\n\tfor (var i = 0; i < l; i++)\r\n\t\ttBody.appendChild(a[i].element);\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// insert into doc\r\n\t\tp.insertBefore(tBody, nextSibling);\r\n\t}\r\n\r\n\tthis.updateHeaderArrows();\r\n\r\n\tthis.destroyCache(a);\r\n\r\n\tif (typeof this.onsort == "function")\r\n\t\tthis.onsort();\r\n};\r\n\r\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\r\n\tvar oThis = this;\r\n\tthis._asyncsort = function () {\r\n\t\toThis.sort(nColumn, bDescending, sSortType);\r\n\t};\r\n\twindow.setTimeout(this._asyncsort, 1);\r\n};\r\n\r\nSortableTable.prototype.getCache = function (sType, nColumn) {\r\n\tif (!this.tBody) return [];\r\n\tvar rows = this.tBody.rows;\r\n\tvar l = rows.length;\r\n\tvar a = new Array(l);\r\n\tvar r;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tr = rows[i];\r\n\t\ta[i] = {\r\n\t\t\tvalue:\t\tthis.getRowValue(r, sType, nColumn),\r\n\t\t\telement:\tr\r\n\t\t};\r\n\t};\r\n\treturn a;\r\n};\r\n\r\nSortableTable.prototype.destroyCache = function (oArray) {\r\n\tvar l = oArray.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\toArray[i].value = null;\r\n\t\toArray[i].element = null;\r\n\t\toArray[i] = null;\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n\t// if we have defined a custom getRowValue use that\r\n\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\r\n\t\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\r\n\r\n\tvar s;\r\n\tvar c = oRow.cells[nColumn];\r\n\tif (typeof c.innerText != "undefined")\r\n\t\ts = c.innerText;\r\n\telse\r\n\t\ts = SortableTable.getInnerText(c);\r\n\treturn this.getValueFromString(s, sType);\r\n};\r\n\r\nSortableTable.getInnerText = function (oNode) {\r\n\tvar s = "";\r\n\tvar cs = oNode.childNodes;\r\n\tvar l = cs.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tswitch (cs[i].nodeType) {\r\n\t\t\tcase 1: //ELEMENT_NODE\r\n\t\t\t\ts += SortableTable.getInnerText(cs[i]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\t//TEXT_NODE\r\n\t\t\t\ts += cs[i].nodeValue;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn s;\r\n};\r\n\r\nSortableTable.prototype.getValueFromString = function (sText, sType) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].getValueFromString( sText );\r\n\treturn sText;\r\n\t/*\r\n\tswitch (sType) {\r\n\t\tcase "Number":\r\n\t\t\treturn Number(sText);\r\n\t\tcase "CaseInsensitiveString":\r\n\t\t\treturn sText.toUpperCase();\r\n\t\tcase "Date":\r\n\t\t\tvar parts = sText.split("-");\r\n\t\t\tvar d = new Date(0);\r\n\t\t\td.setFullYear(parts[0]);\r\n\t\t\td.setDate(parts[2]);\r\n\t\t\td.setMonth(parts[1] - 1);\r\n\t\t\treturn d.valueOf();\r\n\t}\r\n\treturn sText;\r\n\t*/\r\n\t};\r\n\r\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].compare;\r\n\treturn SortableTable.basicCompare;\r\n};\r\n\r\nSortableTable.prototype.destroy = function () {\r\n\tthis.uninitHeader();\r\n\tvar win = this.document.parentWindow;\r\n\tif (win && typeof win.detachEvent != "undefined") {\t// only IE needs this\r\n\t\twin.detachEvent("onunload", this._onunload);\r\n\t}\r\n\tthis._onunload = null;\r\n\tthis.element = null;\r\n\tthis.tHead = null;\r\n\tthis.tBody = null;\r\n\tthis.document = null;\r\n\tthis._headerOnclick = null;\r\n\tthis.sortTypes = null;\r\n\tthis._asyncsort = null;\r\n\tthis.onsort = null;\r\n};\r\n\r\n// Adds a sort type to all instance of SortableTable\r\n// sType : String - the identifier of the sort type\r\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\r\n// string and casts it to a desired format. If left out the string is just\r\n// returned\r\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\r\n// compare function. Takes two values and compares them. If left out less than,\r\n// <, compare is used\r\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\r\n// that takes the row and the column index and returns the value used to compare.\r\n// If left out then the innerText is first taken for the cell and then the\r\n// fGetValueFromString is used to convert that string the desired value and type\r\n\r\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\r\n\tthis._sortTypeInfo[sType] = {\r\n\t\ttype:\t\t\t\tsType,\r\n\t\tgetValueFromString:\tfGetValueFromString || SortableTable.idFunction,\r\n\t\tcompare:\t\t\tfCompareFunction || SortableTable.basicCompare,\r\n\t\tgetRowValue:\t\tfGetRowValue\r\n\t};\r\n};\r\n\r\n// this removes the sort type from all instances of SortableTable\r\nSortableTable.prototype.removeSortType = function (sType) {\r\n\tdelete this._sortTypeInfo[sType];\r\n};\r\n\r\nSortableTable.basicCompare = function compare(n1, n2) {\r\n\tif (n1.value < n2.value)\r\n\t\treturn -1;\r\n\tif (n2.value < n1.value)\r\n\t\treturn 1;\r\n\treturn 0;\r\n};\r\n\r\nSortableTable.idFunction = function (x) {\r\n\treturn x;\r\n};\r\n\r\nSortableTable.toUpperCase = function (s) {\r\n\treturn s.toUpperCase();\r\n};\r\n\r\nSortableTable.toDate = function (s) {\r\n\tvar parts = s.split("-");\r\n\tvar d = new Date(0);\r\n\td.setFullYear(parts[0]);\r\n\td.setDate(parts[2]);\r\n\td.setMonth(parts[1] - 1);\r\n\treturn d.valueOf();\r\n};\r\n\r\n\r\n// add sort types\r\nSortableTable.prototype.addSortType("Number", Number);\r\nSortableTable.prototype.addSortType("CaseInsensitiveString", SortableTable.toUpperCase);\r\nSortableTable.prototype.addSortType("Date", SortableTable.toDate);\r\nSortableTable.prototype.addSortType("String");\r\n// None is a special case\r\n'},448:function(e,t){e.exports=function(e){"undefined"!=typeof execScript?execScript(e):eval.call(null,e)}},449:function(e,t,n){n(448)(n(447))}}); -//# sourceMappingURL=tf-0-d88702b82ce1d192a674.js.map \ No newline at end of file diff --git a/dist/tablefilter/tf-0-d88702b82ce1d192a674.js.map b/dist/tablefilter/tf-0-d88702b82ce1d192a674.js.map deleted file mode 100644 index f5569ceb..00000000 --- a/dist/tablefilter/tf-0-d88702b82ce1d192a674.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///tf-0-d88702b82ce1d192a674.js","webpack:///./src ^\\.\\/.*$","webpack:///./src/extensions/advancedGrid/adapterEzEditTable.js","webpack:///./src/extensions/sort/adapterSortabletable.js","webpack:///./src/extensions/advancedGrid/advancedGrid.js","webpack:///./src/extensions/colOps/colOps.js","webpack:///./src/extensions/colsVisibility/colsVisibility.js","webpack:///./src/extensions/filtersVisibility/filtersVisibility.js","webpack:///./src/extensions/sort/sort.js","webpack:///./~/format-number/index.js","webpack:///./libs/sortabletable.js","webpack:///./~/script-loader/addScript.js","webpack:///./libs/sortabletable.js?534d"],"names":["webpackJsonp","438","module","exports","__webpack_require__","webpackContext","req","webpackContextResolve","id","map","Error","./array","./array.js","./const","./const.js","./cookie","./cookie.js","./dom","./dom.js","./emitter","./emitter.js","./event","./event.js","./extensions/advancedGrid/adapterEzEditTable","./extensions/advancedGrid/adapterEzEditTable.js","./extensions/advancedGrid/advancedGrid","./extensions/advancedGrid/advancedGrid.js","./extensions/colOps/colOps","./extensions/colOps/colOps.js","./extensions/colsVisibility/colsVisibility","./extensions/colsVisibility/colsVisibility.js","./extensions/filtersVisibility/filtersVisibility","./extensions/filtersVisibility/filtersVisibility.js","./extensions/sort/adapterSortabletable","./extensions/sort/adapterSortabletable.js","./extensions/sort/sort","./extensions/sort/sort.js","./feature","./feature.js","./modules/alternateRows","./modules/alternateRows.js","./modules/baseDropdown","./modules/baseDropdown.js","./modules/checkList","./modules/checkList.js","./modules/clearButton","./modules/clearButton.js","./modules/dateType","./modules/dateType.js","./modules/dropdown","./modules/dropdown.js","./modules/gridLayout","./modules/gridLayout.js","./modules/hash","./modules/hash.js","./modules/help","./modules/help.js","./modules/highlightKeywords","./modules/highlightKeywords.js","./modules/loader","./modules/loader.js","./modules/markActiveColumns","./modules/markActiveColumns.js","./modules/noResults","./modules/noResults.js","./modules/paging","./modules/paging.js","./modules/popupFilter","./modules/popupFilter.js","./modules/rowsCounter","./modules/rowsCounter.js","./modules/state","./modules/state.js","./modules/statusBar","./modules/statusBar.js","./modules/storage","./modules/storage.js","./number","./number.js","./root","./root.js","./sort","./sort.js","./string","./string.js","./tablefilter","./tablefilter.js","./types","./types.js","keys","Object","resolve","439","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","call","ReferenceError","_inherits","subClass","superClass","prototype","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","_createClass","defineProperties","target","props","i","length","descriptor","key","protoProps","staticProps","_feature","_dom","_const","_root","AdapterEzEditTable","_Feature","tf","cfg","this","_this","getPrototypeOf","name","desc","description","filename","vendorPath","vendor_path","loadStylesheet","Boolean","load_stylesheet","stylesheet","stylesheetName","stylesheet_name","scroll_into_view","gridLayout","_ezEditTable","enable","_this2","initialized","root","EditTable","_setAdvancedGrid","path","import","isImported","emitter","on","_toggleForInputFilter","startRow","tag","dom","undefined","refRow","base_path","basePath","editable","selectable","selection","default_selection","active_cell_css","_lastValidRowIndex","_lastRowIndex","onAfterSelection","et","selectedElm","e","slc","Selection","doSelect","nextRowIndex","defaultSelection","SelectRowByIndex","ClearSelections","cellIndex","row","rows","SelectCell","cells","validRowsIndex","getRowsNb","r","scrollIntoView","cell","getCellsNb","tblCont","scrollLeft","validIndexes","validIdxLen","parentNode","nodeName","keyCode","Event","GetKey","isRowValid","indexOf","rowIndex","paging","feature","d","pageLength","nbRowsPerPage","calcRowIndex","v","onBeforeSelection","nbPages","pagingEndRow","parseInt","startPagingRow","currentPageNb","setPage","onAfterChangePage","advGrid","extension","GetActiveRow","GetActiveCell","fnB","on_before_selected_row","args","arguments","fnA","on_after_selected_row","fnD","on_before_selected_cell","fnC","on_after_selected_cell","fnE","on_added_dom_row","nbFilterableRows","destroy","reset","emit","alternateRows","init","actions","fnF","on_after_submit","Init","INSTANTIATION_ERROR","ezEditTable","Set","Editable","Remove","getActiveFilterId","colIndex","getColumnIndexFromFilterId","getFilterType","filterType","toggle","_this3","off","Feature","default","440","ipAddress","vals","split","x","val","join","sortIP","a","b","aa","toLowerCase","bb","_types","_event","_number","AdapterSortableTable","opts","sorted","sortTypes","isArray","types","colTypes","sortColAtStart","sort_col_at_start","asyncSort","async_sort","triggerIds","trigger_ids","imgPath","images_path","themesPath","imgBlank","image_blank","imgClassName","image_class_name","imgAscClassName","image_asc_class_name","imgDescClassName","image_desc_class_name","customKey","custom_key","onSortLoaded","isFn","on_sort_loaded","EMPTY_FN","onBeforeSort","on_before_sort","onAfterSort","on_after_sort","stt","adpt","isUndef","SortableTable","overrideSortableTable","setSortTypes","onbeforesort","sortColumn","disable","onsort","paginator","getValidRows","getPage","descending","sort","colIdx","sortByColumnIndex","headerOnclick","evt","el","srcElement","tagName","CELL_TAG","HEADER_TAG","msie","getCellIndex","oTd","l","initHeader","oSortTypes","tHead","headTbl","headersRow","img","c","style","cursor","createElm","appendChild","setAttribute","addEvt","_headerOnclick","_sortType","updateHeaderArrows","triggers","j","push","elm","cellAttr","getAttribute","lastChild","className","getRowValue","oRow","sType","nColumn","sortTypeInfo","_sortTypeInfo","s","getInnerText","getValueFromString","oNode","getText","_len","Array","_key","caster","sorter","addSortType","_sortTypes","nbCells","colType","isObj","type","DATE","_addDateType","FORMATTED_NUMBER","decimal","decimalSeparator","_addNumberType","toUpperCase","STRING","IP_ADDRESS","trigger","dateType","locale","getOptions","parsedDate","parse","isNaN","Date","_this4","ids","getFiltersId","idx","header","getHeaderElement","removeChild","441","_adapterEzEditTable","_adapterEzEditTable2","obj","__esModule","442","_sort","_formatNumber","_formatNumber2","EVENTS","ColOps","onBeforeOperation","on_before_operation","onAfterOperation","on_after_operation","labelIds","colIndexes","col","operations","operation","outputTypes","write_method","formatResults","format_result","totRowIndexes","tot_row_index","excludeRows","exclude_row","decimalPrecisions","decimal_precision","calcAll","isInitialized","colOperations","uIndexes","forEach","nbCols","colValues","u","getVisibleColumnData","curValues","result","precisions","labels","writeType","formatResult","k","configureFormat","Number","calc","writeResult","totRow","display","precision","sortColumnValues","numSortAsc","calcMean","calcSum","calcMin","calcMax","calcMedian","calcQ1","calcQ3","isEmpty","toFixed","values","reduce","y","Math","max","apply","min","nbValues","aux","floor","posa","posb","label","format","labelElm","isFinite","innerHTML","oldNode","firstChild","txtNode","createText","replaceChild","hasType","thousands","integerSeparator","443","ColsVisibility","f","config","spanEl","btnEl","contEl","tickToHide","tick_to_hide","manager","headersTbl","headers_table","headersIndex","headers_index","contElTgtId","container_target_id","headersText","headers_text","btnTgtId","btn_target_id","btnText","btn_text","btnHtml","btn_html","btnCssClass","btn_css_class","btnCloseText","btn_close_text","btnCloseHtml","btn_close_html","btnCloseCssClass","btn_close_css_class","spanCssClass","span_css_class","contCssClass","cont_css_class","listCssClass","list_css_class","listItemCssClass","checklist_item_css_class","listSlcItemCssClass","checklist_selected_item_css_class","text","atStart","at_start","enableHover","enable_hover","enableTickAll","enable_tick_all","tickAllText","tick_all_text","hiddenCols","boundMouseup","onLoaded","on_loaded","onBeforeOpen","on_before_open","onAfterOpen","on_after_open","onBeforeClose","on_before_close","onAfterClose","on_after_close","onBeforeColHidden","on_before_col_hidden","onAfterColHidden","on_after_col_hidden","onBeforeColDisplayed","on_before_col_displayed","onAfterColDisplayed","on_after_col_displayed","stylePath","targetElm","targetEvt","removeEvt","contDisplay","lbl","li","isChecked","checked","addClass","removeClass","hide","setHidden","hideCol","buildBtn","buildManager","onMouseup","bind","_hideAtStart","span","setToolbar","targetEl","rDiv","insertBefore","colVisEl","btn","title","container","extNameLabel","ul","tbl","headerIndex","getHeadersRowIndex","headerRow","createCheckItem","check","h","itm","click","cellText","_getHeaderText","liElm","checkItem","p","_hideCells","itemIndex","splice","gridColElms","colElms","hiddenWidth","width","headTblW","isColHidden","showCol","_this5","removeElm","hasChildNodes","childNodes","n","nodeType","nodeValue","_this6","444","FiltersVisibility","icnExpand","expand_icon_name","icnCollapse","collapse_icon_name","icnExpandHtml","icnCollapseHtml","defaultText","targetId","target_id","enableIcon","enable_icon","collapseBtnHtml","expandBtnHtml","filtersRowIndex","filters_row_index","getFiltersRowIndex","visibleAtStart","visible_at_start","onBeforeShow","on_before_show","onAfterShow","on_after_show","onBeforeHide","on_before_hide","onAfterHide","on_after_hide","buildUI","visible","show","fltRow","isDisplayed","445","_adapterSortabletable","_adapterSortabletable2","446","formatter","options","number","overrideOptions","output","negative","charAt","replace","negativeLeftOut","noUnits","prefix","negativeLeftSymbol","round","truncate","padLeft","padRight","noSeparator","addDecimalSeparators","decimalsSeparator","addIntegerSeparators","negativeRightOut","suffix","negativeRightSymbol","unformat","allowedSeparators","newNumber","negativeType","negativeOut","separator","separate","rgx","test","padding","buf","substr","places","decim","slice","leadingzeros","substring","447","448","src","execScript","eval","449"],"mappings":"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","file":"tf-0-d88702b82ce1d192a674.js","sourcesContent":["webpackJsonp([0],{\n\n/***/ 438:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./array\": 67,\n\t\"./array.js\": 67,\n\t\"./const\": 14,\n\t\"./const.js\": 14,\n\t\"./cookie\": 109,\n\t\"./cookie.js\": 109,\n\t\"./dom\": 9,\n\t\"./dom.js\": 9,\n\t\"./emitter\": 69,\n\t\"./emitter.js\": 69,\n\t\"./event\": 17,\n\t\"./event.js\": 17,\n\t\"./extensions/advancedGrid/adapterEzEditTable\": 439,\n\t\"./extensions/advancedGrid/adapterEzEditTable.js\": 439,\n\t\"./extensions/advancedGrid/advancedGrid\": 441,\n\t\"./extensions/advancedGrid/advancedGrid.js\": 441,\n\t\"./extensions/colOps/colOps\": 442,\n\t\"./extensions/colOps/colOps.js\": 442,\n\t\"./extensions/colsVisibility/colsVisibility\": 443,\n\t\"./extensions/colsVisibility/colsVisibility.js\": 443,\n\t\"./extensions/filtersVisibility/filtersVisibility\": 444,\n\t\"./extensions/filtersVisibility/filtersVisibility.js\": 444,\n\t\"./extensions/sort/adapterSortabletable\": 440,\n\t\"./extensions/sort/adapterSortabletable.js\": 440,\n\t\"./extensions/sort/sort\": 445,\n\t\"./extensions/sort/sort.js\": 445,\n\t\"./feature\": 11,\n\t\"./feature.js\": 11,\n\t\"./modules/alternateRows\": 110,\n\t\"./modules/alternateRows.js\": 110,\n\t\"./modules/baseDropdown\": 68,\n\t\"./modules/baseDropdown.js\": 68,\n\t\"./modules/checkList\": 70,\n\t\"./modules/checkList.js\": 70,\n\t\"./modules/clearButton\": 111,\n\t\"./modules/clearButton.js\": 111,\n\t\"./modules/dateType\": 112,\n\t\"./modules/dateType.js\": 112,\n\t\"./modules/dropdown\": 71,\n\t\"./modules/dropdown.js\": 71,\n\t\"./modules/gridLayout\": 113,\n\t\"./modules/gridLayout.js\": 113,\n\t\"./modules/hash\": 114,\n\t\"./modules/hash.js\": 114,\n\t\"./modules/help\": 115,\n\t\"./modules/help.js\": 115,\n\t\"./modules/highlightKeywords\": 116,\n\t\"./modules/highlightKeywords.js\": 116,\n\t\"./modules/loader\": 117,\n\t\"./modules/loader.js\": 117,\n\t\"./modules/markActiveColumns\": 118,\n\t\"./modules/markActiveColumns.js\": 118,\n\t\"./modules/noResults\": 119,\n\t\"./modules/noResults.js\": 119,\n\t\"./modules/paging\": 120,\n\t\"./modules/paging.js\": 120,\n\t\"./modules/popupFilter\": 121,\n\t\"./modules/popupFilter.js\": 121,\n\t\"./modules/rowsCounter\": 122,\n\t\"./modules/rowsCounter.js\": 122,\n\t\"./modules/state\": 123,\n\t\"./modules/state.js\": 123,\n\t\"./modules/statusBar\": 124,\n\t\"./modules/statusBar.js\": 124,\n\t\"./modules/storage\": 125,\n\t\"./modules/storage.js\": 125,\n\t\"./number\": 52,\n\t\"./number.js\": 52,\n\t\"./root\": 15,\n\t\"./root.js\": 15,\n\t\"./sort\": 108,\n\t\"./sort.js\": 108,\n\t\"./string\": 19,\n\t\"./string.js\": 19,\n\t\"./tablefilter\": 126,\n\t\"./tablefilter.js\": 126,\n\t\"./types\": 6,\n\t\"./types.js\": 6\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 438;\n\n/***/ }),\n\n/***/ 439:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _const = __webpack_require__(14);\n\nvar _root = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar INSTANTIATION_ERROR = 'Failed to instantiate EditTable object.\\n \\n\"ezEditTable\" dependency not found.';\n\n/**\r\n * Adapter module for ezEditTable, an external library providing advanced\r\n * grid features (selection and edition):\r\n * http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus\r\n */\n\nvar AdapterEzEditTable = function (_Feature) {\n _inherits(AdapterEzEditTable, _Feature);\n\n /**\r\n * Creates an instance of AdapterEzEditTable\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} cfg Configuration options for ezEditTable library\r\n */\n function AdapterEzEditTable(tf, cfg) {\n _classCallCheck(this, AdapterEzEditTable);\n\n /**\r\n * Module description\r\n * @type {String}\r\n */\n var _this = _possibleConstructorReturn(this, (AdapterEzEditTable.__proto__ || Object.getPrototypeOf(AdapterEzEditTable)).call(this, tf, cfg.name));\n\n _this.desc = cfg.description || 'ezEditTable adapter';\n\n /**\r\n * Filename of ezEditTable library\r\n * @type {String}\r\n */\n _this.filename = cfg.filename || 'ezEditTable.js';\n\n /**\r\n * Path to ezEditTable library\r\n * @type {String}\r\n */\n _this.vendorPath = cfg.vendor_path;\n\n /**\r\n * Load ezEditTable stylesheet\r\n * @type {Boolean}\r\n */\n _this.loadStylesheet = Boolean(cfg.load_stylesheet);\n\n /**\r\n * Path to ezEditTable stylesheet\r\n * @type {String}\r\n */\n _this.stylesheet = cfg.stylesheet || _this.vendorPath + 'ezEditTable.css';\n\n /**\r\n * Name of ezEditTable stylesheet\r\n * @type {String}\r\n */\n _this.stylesheetName = cfg.stylesheet_name || 'ezEditTableCss';\n\n // Enable the ezEditTable's scroll into view behaviour if grid layout on\n cfg.scroll_into_view = cfg.scroll_into_view === false ? false : tf.gridLayout;\n\n /**\r\n * ezEditTable instance\r\n * @type {EditTable}\r\n * @private\r\n */\n _this._ezEditTable = null;\n\n /**\r\n * ezEditTable configuration\r\n * @private\r\n */\n _this.cfg = cfg;\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Conditionally load ezEditTable library and set advanced grid\r\n */\n\n\n _createClass(AdapterEzEditTable, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n var tf = this.tf;\n if (_root.root.EditTable) {\n this._setAdvancedGrid();\n } else {\n var path = this.vendorPath + this.filename;\n tf.import(this.filename, path, function () {\n return _this2._setAdvancedGrid();\n });\n }\n if (this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')) {\n tf.import(this.stylesheetName, this.stylesheet, null, 'link');\n }\n\n // TODO: hack to prevent ezEditTable enter key event hijaking.\n // Needs to be fixed in the vendor's library\n this.emitter.on(['filter-focus', 'filter-blur'], function () {\n return _this2._toggleForInputFilter();\n });\n\n /**\r\n * @inherited\r\n */\n this.initialized = true;\n }\n\n /**\r\n * Instantiate ezEditTable component for advanced grid features\r\n * @private\r\n */\n\n }, {\n key: '_setAdvancedGrid',\n value: function _setAdvancedGrid() {\n var tf = this.tf;\n\n //start row for EditTable constructor needs to be calculated\n var startRow = void 0,\n cfg = this.cfg,\n thead = (0, _dom.tag)(tf.dom(), 'thead');\n\n //if thead exists and startRow not specified, startRow is calculated\n //automatically by EditTable\n if (thead.length > 0 && !cfg.startRow) {\n startRow = undefined;\n }\n //otherwise startRow config property if any or TableFilter refRow\n else {\n startRow = cfg.startRow || tf.refRow;\n }\n\n cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/';\n var editable = cfg.editable;\n var selectable = cfg.selection;\n\n if (selectable) {\n cfg.default_selection = cfg.default_selection || 'row';\n }\n //CSS Styles\n cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell';\n\n var _lastValidRowIndex = 0;\n var _lastRowIndex = 0;\n\n if (selectable) {\n //Row navigation needs to be calculated according to TableFilter's\n //validRowsIndex array\n var onAfterSelection = function onAfterSelection(et, selectedElm, e) {\n var slc = et.Selection;\n //Next valid filtered row needs to be selected\n var doSelect = function doSelect(nextRowIndex) {\n if (et.defaultSelection === 'row') {\n /* eslint-disable */\n slc.SelectRowByIndex(nextRowIndex);\n /* eslint-enable */\n } else {\n /* eslint-disable */\n et.ClearSelections();\n /* eslint-enable */\n var cellIndex = selectedElm.cellIndex,\n _row = tf.dom().rows[nextRowIndex];\n if (et.defaultSelection === 'both') {\n /* eslint-disable */\n slc.SelectRowByIndex(nextRowIndex);\n /* eslint-enable */\n }\n if (_row) {\n /* eslint-disable */\n slc.SelectCell(_row.cells[cellIndex]);\n /* eslint-enable */\n }\n }\n //Table is filtered\n if (tf.validRowsIndex.length !== tf.getRowsNb()) {\n var r = tf.dom().rows[nextRowIndex];\n if (r) {\n r.scrollIntoView(false);\n }\n if (cell) {\n if (cell.cellIndex === tf.getCellsNb() - 1 && tf.gridLayout) {\n tf.tblCont.scrollLeft = 100000000;\n } else if (cell.cellIndex === 0 && tf.gridLayout) {\n tf.tblCont.scrollLeft = 0;\n } else {\n cell.scrollIntoView(false);\n }\n }\n }\n };\n\n //table is not filtered\n if (!tf.validRowsIndex) {\n return;\n }\n var validIndexes = tf.validRowsIndex,\n validIdxLen = validIndexes.length,\n row = et.defaultSelection !== 'row' ? selectedElm.parentNode : selectedElm,\n\n //cell for default_selection = 'both' or 'cell'\n cell = selectedElm.nodeName === 'TD' ? selectedElm : null,\n\n /* eslint-disable */\n keyCode = e !== undefined ? et.Event.GetKey(e) : 0,\n\n /* eslint-enable */\n isRowValid = validIndexes.indexOf(row.rowIndex) !== -1,\n nextRowIndex = void 0,\n paging = tf.feature('paging'),\n\n //pgup/pgdown keys\n d = keyCode === 34 || keyCode === 33 ? paging && paging.pageLength || et.nbRowsPerPage : 1;\n\n //If next row is not valid, next valid filtered row needs to be\n //calculated\n if (!isRowValid) {\n //Selection direction up/down\n if (row.rowIndex > _lastRowIndex) {\n //last row\n if (row.rowIndex >= validIndexes[validIdxLen - 1]) {\n nextRowIndex = validIndexes[validIdxLen - 1];\n } else {\n var calcRowIndex = _lastValidRowIndex + d;\n if (calcRowIndex > validIdxLen - 1) {\n nextRowIndex = validIndexes[validIdxLen - 1];\n } else {\n nextRowIndex = validIndexes[calcRowIndex];\n }\n }\n } else {\n //first row\n if (row.rowIndex <= validIndexes[0]) {\n nextRowIndex = validIndexes[0];\n } else {\n var v = validIndexes[_lastValidRowIndex - d];\n nextRowIndex = v ? v : validIndexes[0];\n }\n }\n _lastRowIndex = row.rowIndex;\n doSelect(nextRowIndex);\n } else {\n //If filtered row is valid, special calculation for\n //pgup/pgdown keys\n if (keyCode !== 34 && keyCode !== 33) {\n _lastValidRowIndex = validIndexes.indexOf(row.rowIndex);\n _lastRowIndex = row.rowIndex;\n } else {\n if (keyCode === 34) {\n //pgdown\n //last row\n if (_lastValidRowIndex + d <= validIdxLen - 1) {\n nextRowIndex = validIndexes[_lastValidRowIndex + d];\n } else {\n nextRowIndex = [validIdxLen - 1];\n }\n } else {\n //pgup\n //first row\n if (_lastValidRowIndex - d <= validIndexes[0]) {\n nextRowIndex = validIndexes[0];\n } else {\n nextRowIndex = validIndexes[_lastValidRowIndex - d];\n }\n }\n _lastRowIndex = nextRowIndex;\n _lastValidRowIndex = validIndexes.indexOf(nextRowIndex);\n doSelect(nextRowIndex);\n }\n }\n };\n\n //Page navigation has to be enforced whenever selected row is out of\n //the current page range\n var onBeforeSelection = function onBeforeSelection(et, selectedElm) {\n var row = et.defaultSelection !== 'row' ? selectedElm.parentNode : selectedElm;\n if (tf.paging) {\n if (tf.feature('paging').nbPages > 1) {\n var paging = tf.feature('paging');\n //page length is re-assigned in case it has changed\n et.nbRowsPerPage = paging.pageLength;\n var validIndexes = tf.validRowsIndex,\n validIdxLen = validIndexes.length,\n pagingEndRow = parseInt(paging.startPagingRow, 10) + parseInt(paging.pageLength, 10);\n var rowIndex = row.rowIndex;\n\n if (rowIndex === validIndexes[validIdxLen - 1] && paging.currentPageNb !== paging.nbPages) {\n paging.setPage('last');\n } else if (rowIndex === validIndexes[0] && paging.currentPageNb !== 1) {\n paging.setPage('first');\n } else if (rowIndex > validIndexes[pagingEndRow - 1] && rowIndex < validIndexes[validIdxLen - 1]) {\n paging.setPage('next');\n } else if (rowIndex < validIndexes[paging.startPagingRow] && rowIndex > validIndexes[0]) {\n paging.setPage('previous');\n }\n }\n }\n };\n\n //Selected row needs to be visible when paging is activated\n if (tf.paging) {\n tf.feature('paging').onAfterChangePage = function (paging) {\n var advGrid = paging.tf.extension('advancedGrid');\n var et = advGrid._ezEditTable;\n var slc = et.Selection;\n /* eslint-disable */\n var row = slc.GetActiveRow();\n /* eslint-enable */\n if (row) {\n row.scrollIntoView(false);\n }\n /* eslint-disable */\n var cell = slc.GetActiveCell();\n /* eslint-enable */\n if (cell) {\n cell.scrollIntoView(false);\n }\n };\n }\n\n //Rows navigation when rows are filtered is performed with the\n //EditTable row selection callback events\n if (cfg.default_selection === 'row') {\n var fnB = cfg.on_before_selected_row;\n cfg.on_before_selected_row = function () {\n var args = arguments;\n onBeforeSelection(args[0], args[1], args[2]);\n if (fnB) {\n fnB.call(null, args[0], args[1], args[2]);\n }\n };\n var fnA = cfg.on_after_selected_row;\n cfg.on_after_selected_row = function () {\n var args = arguments;\n onAfterSelection(args[0], args[1], args[2]);\n if (fnA) {\n fnA.call(null, args[0], args[1], args[2]);\n }\n };\n } else {\n var fnD = cfg.on_before_selected_cell;\n cfg.on_before_selected_cell = function () {\n var args = arguments;\n onBeforeSelection(args[0], args[1], args[2]);\n if (fnD) {\n fnD.call(null, args[0], args[1], args[2]);\n }\n };\n var fnC = cfg.on_after_selected_cell;\n cfg.on_after_selected_cell = function () {\n var args = arguments;\n onAfterSelection(args[0], args[1], args[2]);\n if (fnC) {\n fnC.call(null, args[0], args[1], args[2]);\n }\n };\n }\n }\n if (editable) {\n //Added or removed rows, TF rows number needs to be re-calculated\n var fnE = cfg.on_added_dom_row;\n cfg.on_added_dom_row = function () {\n var args = arguments;\n tf.nbFilterableRows++;\n if (!tf.paging) {\n tf.emitter.emit('rows-changed', tf, this);\n } else {\n tf.nbFilterableRows++;\n tf.paging = false;\n tf.feature('paging').destroy();\n tf.feature('paging').reset();\n }\n if (tf.alternateRows) {\n tf.feature('alternateRows').init();\n }\n if (fnE) {\n fnE.call(null, args[0], args[1], args[2]);\n }\n };\n if (cfg.actions && cfg.actions['delete']) {\n var fnF = cfg.actions['delete'].on_after_submit;\n cfg.actions['delete'].on_after_submit = function () {\n var args = arguments;\n tf.nbFilterableRows--;\n if (!tf.paging) {\n tf.emitter.emit('rows-changed', tf, this);\n } else {\n tf.nbFilterableRows--;\n tf.paging = false;\n tf.feature('paging').destroy();\n tf.feature('paging').reset(false);\n }\n if (tf.alternateRows) {\n tf.feature('alternateRows').init();\n }\n if (fnF) {\n fnF.call(null, args[0], args[1]);\n }\n };\n }\n }\n\n try {\n /* eslint-disable */\n this._ezEditTable = new EditTable(tf.id, cfg, startRow);\n this._ezEditTable.Init();\n /* eslint-enable */\n } catch (e) {\n throw new Error(INSTANTIATION_ERROR);\n }\n\n this.initialized = true;\n }\n\n /**\r\n * Reset advanced grid when previously removed\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n var ezEditTable = this._ezEditTable;\n if (ezEditTable) {\n if (this.cfg.selection) {\n /* eslint-disable */\n ezEditTable.Selection.Set();\n /* eslint-enable */\n }\n if (this.cfg.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Set();\n /* eslint-enable */\n }\n }\n }\n\n /**\r\n * Toggle behaviour\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n var ezEditTable = this._ezEditTable;\n if (ezEditTable.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Remove();\n /* eslint-enable */\n } else {\n /* eslint-disable */\n ezEditTable.Editable.Set();\n /* eslint-enable */\n }\n if (ezEditTable.selection) {\n /* eslint-disable */\n ezEditTable.Selection.Remove();\n /* eslint-enable */\n } else {\n /* eslint-disable */\n ezEditTable.Selection.Set();\n /* eslint-enable */\n }\n }\n }, {\n key: '_toggleForInputFilter',\n value: function _toggleForInputFilter() {\n var tf = this.tf;\n if (!tf.getActiveFilterId()) {\n return;\n }\n var colIndex = tf.getColumnIndexFromFilterId(tf.getActiveFilterId());\n var filterType = tf.getFilterType(colIndex);\n if (filterType === _const.INPUT) {\n this.toggle();\n }\n }\n\n /**\r\n * Remove advanced grid\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n var ezEditTable = this._ezEditTable;\n if (ezEditTable) {\n if (this.cfg.selection) {\n /* eslint-disable */\n ezEditTable.Selection.ClearSelections();\n ezEditTable.Selection.Remove();\n /* eslint-enable */\n }\n if (this.cfg.editable) {\n /* eslint-disable */\n ezEditTable.Editable.Remove();\n /* eslint-enable */\n }\n }\n\n this.emitter.off(['filter-focus', 'filter-blur'], function () {\n return _this3._toggleForInputFilter();\n });\n this.initialized = false;\n }\n }]);\n\n return AdapterEzEditTable;\n}(_feature.Feature);\n\nexports.default = AdapterEzEditTable;\n\n/***/ }),\n\n/***/ 440:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _types = __webpack_require__(6);\n\nvar _dom = __webpack_require__(9);\n\nvar _event = __webpack_require__(17);\n\nvar _number = __webpack_require__(52);\n\nvar _const = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * SortableTable Adapter module\r\n */\nvar AdapterSortableTable = function (_Feature) {\n _inherits(AdapterSortableTable, _Feature);\n\n /**\r\n * Creates an instance of AdapterSortableTable\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\n function AdapterSortableTable(tf, opts) {\n _classCallCheck(this, AdapterSortableTable);\n\n /**\r\n * Module name\r\n * @type {String}\r\n */\n var _this = _possibleConstructorReturn(this, (AdapterSortableTable.__proto__ || Object.getPrototypeOf(AdapterSortableTable)).call(this, tf, opts.name));\n\n _this.name = opts.name;\n\n /**\r\n * Module description\r\n * @type {String}\r\n */\n _this.desc = opts.description || 'Sortable table';\n\n /**\r\n * Indicate whether table previously sorted\r\n * @type {Boolean}\r\n * @private\r\n */\n _this.sorted = false;\n\n /**\r\n * List of sort type per column basis\r\n * @type {Array}\r\n */\n _this.sortTypes = (0, _types.isArray)(opts.types) ? opts.types : tf.colTypes;\n\n /**\r\n * Column to be sorted at initialization, ie:\r\n * sort_col_at_start: [1, true]\r\n * @type {Array}\r\n */\n _this.sortColAtStart = (0, _types.isArray)(opts.sort_col_at_start) ? opts.sort_col_at_start : null;\n\n /**\r\n * Enable asynchronous sort, if triggers are external\r\n * @type {Boolean}\r\n */\n _this.asyncSort = Boolean(opts.async_sort);\n\n /**\r\n * List of element IDs triggering sort on a per column basis\r\n * @type {Array}\r\n */\n _this.triggerIds = (0, _types.isArray)(opts.trigger_ids) ? opts.trigger_ids : [];\n\n // edit .sort-arrow.descending / .sort-arrow.ascending in\n // tablefilter.css to reflect any path change\n /**\r\n * Path to images\r\n * @type {String}\r\n */\n _this.imgPath = opts.images_path || tf.themesPath;\n\n /**\r\n * Blank image file name\r\n * @type {String}\r\n */\n _this.imgBlank = opts.image_blank || 'blank.png';\n\n /**\r\n * Css class for sort indicator image\r\n * @type {String}\r\n */\n _this.imgClassName = opts.image_class_name || 'sort-arrow';\n\n /**\r\n * Css class for ascending sort indicator image\r\n * @type {String}\r\n */\n _this.imgAscClassName = opts.image_asc_class_name || 'ascending';\n\n /**\r\n * Css class for descending sort indicator image\r\n * @type {String}\r\n */\n _this.imgDescClassName = opts.image_desc_class_name || 'descending';\n\n /**\r\n * Cell attribute key storing custom value used for sorting\r\n * @type {String}\r\n */\n _this.customKey = opts.custom_key || 'data-tf-sortKey';\n\n /**\r\n * Callback fired when sort extension is instanciated\r\n * @type {Function}\r\n */\n _this.onSortLoaded = (0, _types.isFn)(opts.on_sort_loaded) ? opts.on_sort_loaded : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before a table column is sorted\r\n * @type {Function}\r\n */\n _this.onBeforeSort = (0, _types.isFn)(opts.on_before_sort) ? opts.on_before_sort : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a table column is sorted\r\n * @type {Function}\r\n */\n _this.onAfterSort = (0, _types.isFn)(opts.on_after_sort) ? opts.on_after_sort : _types.EMPTY_FN;\n\n /**\r\n * SortableTable instance\r\n * @private\r\n */\n _this.stt = null;\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Initializes AdapterSortableTable instance\r\n */\n\n\n _createClass(AdapterSortableTable, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n var tf = this.tf;\n var adpt = this;\n\n // SortableTable class sanity check (sortabletable.js)\n if ((0, _types.isUndef)(SortableTable)) {\n throw new Error('SortableTable class not found.');\n }\n\n // Add any date format if needed\n this.emitter.emit('add-date-type-formats', this.tf, this.sortTypes);\n\n this.overrideSortableTable();\n this.setSortTypes();\n\n this.onSortLoaded(tf, this);\n\n /*** SortableTable callbacks ***/\n this.stt.onbeforesort = function () {\n adpt.onBeforeSort(tf, adpt.stt.sortColumn);\n\n /*** sort behaviour for paging ***/\n if (tf.paging) {\n tf.feature('paging').disable();\n }\n };\n\n this.stt.onsort = function () {\n adpt.sorted = true;\n\n //sort behaviour for paging\n if (tf.paging) {\n var paginator = tf.feature('paging');\n // recalculate valid rows index as sorting may have change it\n tf.getValidRows(true);\n paginator.enable();\n paginator.setPage(paginator.getPage());\n }\n\n adpt.onAfterSort(tf, adpt.stt.sortColumn, adpt.stt.descending);\n adpt.emitter.emit('column-sorted', tf, adpt.stt.sortColumn, adpt.stt.descending);\n };\n\n // Column sort at start\n var sortColAtStart = adpt.sortColAtStart;\n if (sortColAtStart) {\n this.stt.sort(sortColAtStart[0], sortColAtStart[1]);\n }\n\n this.emitter.on(['sort'], function (tf, colIdx, desc) {\n return _this2.sortByColumnIndex(colIdx, desc);\n });\n\n /** @inherited */\n this.initialized = true;\n\n this.emitter.emit('sort-initialized', tf, this);\n }\n\n /**\r\n * Sort specified column\r\n * @param {Number} colIdx Column index\r\n * @param {Boolean} desc Optional: descending manner\r\n */\n\n }, {\n key: 'sortByColumnIndex',\n value: function sortByColumnIndex(colIdx, desc) {\n this.stt.sort(colIdx, desc);\n }\n\n /**\r\n * Set SortableTable overrides for TableFilter integration\r\n */\n\n }, {\n key: 'overrideSortableTable',\n value: function overrideSortableTable() {\n var adpt = this,\n tf = this.tf;\n\n /**\r\n * Overrides headerOnclick method in order to handle th event\r\n * @param {Object} e [description]\r\n */\n SortableTable.prototype.headerOnclick = function (evt) {\n if (!adpt.initialized) {\n return;\n }\n\n // find Header element\n var el = evt.target || evt.srcElement;\n\n while (el.tagName !== _const.CELL_TAG && el.tagName !== _const.HEADER_TAG) {\n el = el.parentNode;\n }\n\n this.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\n };\n\n /**\r\n * Overrides getCellIndex IE returns wrong cellIndex when columns are\r\n * hidden\r\n * @param {Object} oTd TD element\r\n * @return {Number} Cell index\r\n */\n SortableTable.getCellIndex = function (oTd) {\n var cells = oTd.parentNode.cells,\n l = cells.length,\n i = void 0;\n for (i = 0; cells[i] !== oTd && i < l; i++) {}\n return i;\n };\n\n /**\r\n * Overrides initHeader in order to handle filters row position\r\n * @param {Array} oSortTypes\r\n */\n SortableTable.prototype.initHeader = function (oSortTypes) {\n var stt = this;\n if (!stt.tHead) {\n if (tf.gridLayout) {\n stt.tHead = tf.feature('gridLayout').headTbl.tHead;\n } else {\n return;\n }\n }\n\n stt.headersRow = tf.headersRow;\n var cells = stt.tHead.rows[stt.headersRow].cells;\n stt.sortTypes = oSortTypes || [];\n var l = cells.length;\n var img = void 0,\n c = void 0;\n\n for (var i = 0; i < l; i++) {\n c = cells[i];\n if (stt.sortTypes[i] !== null && stt.sortTypes[i] !== 'None') {\n c.style.cursor = 'pointer';\n img = (0, _dom.createElm)('img', ['src', adpt.imgPath + adpt.imgBlank]);\n c.appendChild(img);\n if (stt.sortTypes[i] !== null) {\n c.setAttribute('_sortType', stt.sortTypes[i]);\n }\n (0, _event.addEvt)(c, 'click', stt._headerOnclick);\n } else {\n c.setAttribute('_sortType', oSortTypes[i]);\n c._sortType = 'None';\n }\n }\n stt.updateHeaderArrows();\n };\n\n /**\r\n * Overrides updateHeaderArrows in order to handle arrows indicators\r\n */\n SortableTable.prototype.updateHeaderArrows = function () {\n var stt = this;\n var cells = void 0,\n l = void 0,\n img = void 0;\n\n // external headers\n if (adpt.asyncSort && adpt.triggerIds.length > 0) {\n var triggers = adpt.triggerIds;\n cells = [];\n l = triggers.length;\n for (var j = 0; j < l; j++) {\n cells.push((0, _dom.elm)(triggers[j]));\n }\n } else {\n if (!this.tHead) {\n return;\n }\n cells = stt.tHead.rows[stt.headersRow].cells;\n l = cells.length;\n }\n for (var i = 0; i < l; i++) {\n var cell = cells[i];\n if (!cell) {\n continue;\n }\n var cellAttr = cell.getAttribute('_sortType');\n if (cellAttr !== null && cellAttr !== 'None') {\n img = cell.lastChild || cell;\n if (img.nodeName.toLowerCase() !== 'img') {\n img = (0, _dom.createElm)('img', ['src', adpt.imgPath + adpt.imgBlank]);\n cell.appendChild(img);\n }\n if (i === stt.sortColumn) {\n img.className = adpt.imgClassName + ' ' + (this.descending ? adpt.imgDescClassName : adpt.imgAscClassName);\n } else {\n img.className = adpt.imgClassName;\n }\n }\n }\n };\n\n /**\r\n * Overrides getRowValue for custom key value feature\r\n * @param {Object} oRow Row element\r\n * @param {String} sType\r\n * @param {Number} nColumn\r\n * @return {String}\r\n */\n SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\n var stt = this;\n // if we have defined a custom getRowValue use that\n var sortTypeInfo = stt._sortTypeInfo[sType];\n if (sortTypeInfo && sortTypeInfo.getRowValue) {\n return sortTypeInfo.getRowValue(oRow, nColumn);\n }\n var c = oRow.cells[nColumn];\n var s = SortableTable.getInnerText(c);\n return stt.getValueFromString(s, sType);\n };\n\n /**\r\n * Overrides getInnerText in order to avoid Firefox unexpected sorting\r\n * behaviour with untrimmed text elements\r\n * @param {Object} oNode DOM element\r\n * @return {String} DOM element inner text\r\n */\n SortableTable.getInnerText = function (oNode) {\n if (!oNode) {\n return;\n }\n if (oNode.getAttribute(adpt.customKey)) {\n return oNode.getAttribute(adpt.customKey);\n } else {\n return (0, _dom.getText)(oNode);\n }\n };\n }\n\n /**\r\n * Adds a sort type\r\n */\n\n }, {\n key: 'addSortType',\n value: function addSortType() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // Extract the arguments\n var id = args[0],\n caster = args[1],\n sorter = args[2];\n\n SortableTable.prototype.addSortType(id, caster, sorter);\n }\n\n /**\r\n * Sets the sort types on a column basis\r\n * @private\r\n */\n\n }, {\n key: 'setSortTypes',\n value: function setSortTypes() {\n var _this3 = this;\n\n var tf = this.tf,\n sortTypes = this.sortTypes,\n _sortTypes = [];\n\n for (var i = 0; i < tf.nbCells; i++) {\n var colType = void 0;\n if (sortTypes[i]) {\n colType = sortTypes[i];\n if ((0, _types.isObj)(colType)) {\n if (colType.type === _const.DATE) {\n colType = this._addDateType(i, sortTypes);\n } else if (colType.type === _const.FORMATTED_NUMBER) {\n var decimal = colType.decimal || tf.decimalSeparator;\n colType = this._addNumberType(i, decimal);\n }\n } else {\n colType = colType.toLowerCase();\n if (colType === _const.DATE) {\n colType = this._addDateType(i, sortTypes);\n } else if (colType === _const.FORMATTED_NUMBER || colType === _const.NUMBER) {\n colType = this._addNumberType(i, tf.decimalSeparator);\n } else if (colType === _const.NONE) {\n // TODO: normalise 'none' vs 'None'\n colType = 'None';\n }\n }\n } else {\n colType = _const.STRING;\n }\n _sortTypes.push(colType);\n }\n\n //Public TF method to add sort type\n\n //Custom sort types\n this.addSortType('caseinsensitivestring', SortableTable.toUpperCase);\n this.addSortType(_const.STRING);\n this.addSortType(_const.IP_ADDRESS, ipAddress, sortIP);\n\n this.stt = new SortableTable(tf.dom(), _sortTypes);\n\n /*** external table headers adapter ***/\n if (this.asyncSort && this.triggerIds.length > 0) {\n (function () {\n var triggers = _this3.triggerIds;\n for (var j = 0; j < triggers.length; j++) {\n if (triggers[j] === null) {\n continue;\n }\n var trigger = (0, _dom.elm)(triggers[j]);\n if (trigger) {\n trigger.style.cursor = 'pointer';\n\n (0, _event.addEvt)(trigger, 'click', function (evt) {\n var elm = evt.target;\n if (!_this3.tf.sort) {\n return;\n }\n _this3.stt.asyncSort(triggers.indexOf(elm.id));\n });\n trigger.setAttribute('_sortType', _sortTypes[j]);\n }\n }\n })();\n }\n }\n }, {\n key: '_addDateType',\n value: function _addDateType(colIndex, types) {\n var tf = this.tf;\n var dateType = tf.feature('dateType');\n var locale = dateType.getOptions(colIndex, types).locale || tf.locale;\n var colType = _const.DATE + '-' + locale;\n\n this.addSortType(colType, function (value) {\n var parsedDate = dateType.parse(value, locale);\n // Invalid date defaults to Wed Feb 04 -768 11:00:00\n return isNaN(+parsedDate) ? new Date(-86400000000000) : parsedDate;\n });\n return colType;\n }\n }, {\n key: '_addNumberType',\n value: function _addNumberType(colIndex, decimal) {\n var colType = '' + _const.FORMATTED_NUMBER + (decimal === '.' ? '' : '-custom');\n\n this.addSortType(colType, function (value) {\n return (0, _number.parse)(value, decimal);\n });\n return colType;\n }\n\n /**\r\n * Remove extension\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n var tf = this.tf;\n this.emitter.off(['sort'], function (tf, colIdx, desc) {\n return _this4.sortByColumnIndex(colIdx, desc);\n });\n this.sorted = false;\n this.stt.destroy();\n\n var ids = tf.getFiltersId();\n for (var idx = 0; idx < ids.length; idx++) {\n var header = tf.getHeaderElement(idx);\n var img = (0, _dom.tag)(header, 'img');\n\n if (img.length === 1) {\n header.removeChild(img[0]);\n }\n }\n this.initialized = false;\n }\n }]);\n\n return AdapterSortableTable;\n}(_feature.Feature);\n\n//Converters\n\n\nexports.default = AdapterSortableTable;\nfunction ipAddress(value) {\n var vals = value.split('.');\n for (var x in vals) {\n var val = vals[x];\n while (3 > val.length) {\n val = '0' + val;\n }\n vals[x] = val;\n }\n return vals.join('.');\n}\n\nfunction sortIP(a, b) {\n var aa = ipAddress(a.value.toLowerCase());\n var bb = ipAddress(b.value.toLowerCase());\n if (aa === bb) {\n return 0;\n } else if (aa < bb) {\n return -1;\n } else {\n return 1;\n }\n}\n\n/***/ }),\n\n/***/ 441:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _adapterEzEditTable = __webpack_require__(439);\n\nvar _adapterEzEditTable2 = _interopRequireDefault(_adapterEzEditTable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _adapterEzEditTable2.default;\n\n/***/ }),\n\n/***/ 442:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _sort = __webpack_require__(108);\n\nvar _const = __webpack_require__(14);\n\nvar _formatNumber = __webpack_require__(446);\n\nvar _formatNumber2 = _interopRequireDefault(_formatNumber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EVENTS = ['after-filtering', 'after-page-change', 'after-page-length-change'];\n\nvar SUM = 'sum';\nvar MEAN = 'mean';\nvar MIN = 'min';\nvar MAX = 'max';\nvar MEDIAN = 'median';\nvar Q1 = 'q1';\nvar Q3 = 'q3';\n\n/**\r\n * Column calculations extension\r\n */\n\nvar ColOps = function (_Feature) {\n _inherits(ColOps, _Feature);\n\n /**\r\n * Creates an instance of ColOps\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\n function ColOps(tf, opts) {\n _classCallCheck(this, ColOps);\n\n /**\r\n * Callback fired before columns operations start\r\n * @type {Function}\r\n */\n var _this = _possibleConstructorReturn(this, (ColOps.__proto__ || Object.getPrototypeOf(ColOps)).call(this, tf, opts.name));\n\n _this.onBeforeOperation = (0, _types.isFn)(opts.on_before_operation) ? opts.on_before_operation : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after columns operations are completed\r\n * @type {Function}\r\n */\n _this.onAfterOperation = (0, _types.isFn)(opts.on_after_operation) ? opts.on_after_operation : _types.EMPTY_FN;\n\n /**\r\n * Configuration options\r\n * @type {Object}\r\n */\n _this.opts = opts;\n\n /**\r\n * List of DOM element IDs containing column's calculation result\r\n * @type {Array}\r\n */\n _this.labelIds = opts.id || [];\n\n /**\r\n * List of columns' indexes for calculations\r\n * @type {Array}\r\n */\n _this.colIndexes = opts.col || [];\n\n /**\r\n * List of operations - possible values: 'sum', 'mean', 'min', 'max',\r\n * 'median', 'q1', 'q3'\r\n * @type {Array}\r\n */\n _this.operations = opts.operation || [];\n\n /**\r\n * List of write methods used to write the result - possible values:\r\n * 'innerHTML', 'setValue', 'createTextNode'\r\n * @type {Array}\r\n */\n _this.outputTypes = opts.write_method || [];\n\n /**\r\n * List of format objects used for formatting the result -\r\n * refer to https://github.com/componitable/format-number to check\r\n * configuration options\r\n * @type {Array}\r\n */\n _this.formatResults = opts.format_result || [];\n\n /**\r\n * List of row indexes displaying the results\r\n * @type {Array}\r\n */\n _this.totRowIndexes = opts.tot_row_index || [];\n\n /**\r\n * List of row indexes excluded from calculations\r\n * @type {Array}\r\n */\n _this.excludeRows = opts.exclude_row || [];\n\n /**\r\n * List of decimal precision for calculation results\r\n * @type {Array}\r\n */\n _this.decimalPrecisions = (0, _types.isUndef)(opts.decimal_precision) ? 2 : opts.decimal_precision;\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Initializes ColOps instance\r\n */\n\n\n _createClass(ColOps, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n // subscribe to events\n this.emitter.on(EVENTS, function () {\n return _this2.calcAll();\n });\n\n this.calcAll();\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\r\n * Calculates columns' values\r\n * Configuration options are stored in 'opts' property\r\n * - 'id' contains ids of elements showing result (array)\r\n * - 'col' contains the columns' indexes (array)\r\n * - 'operation' contains operation type (array, values: 'sum', 'mean',\r\n * 'min', 'max', 'median', 'q1', 'q3')\r\n * - 'write_method' array defines which method to use for displaying the\r\n * result (innerHTML, setValue, createTextNode) - default: 'innerHTML'\r\n * - 'tot_row_index' defines in which row results are displayed\r\n * (integers array)\r\n *\r\n * - changes made by Nuovella:\r\n * (1) optimized the routine (now it will only process each column once),\r\n * (2) added calculations for the median, lower and upper quartile.\r\n */\n\n }, {\n key: 'calcAll',\n value: function calcAll() {\n var tf = this.tf;\n if (!tf.isInitialized()) {\n return;\n }\n\n this.onBeforeOperation(tf, this);\n this.emitter.emit('before-column-operation', tf, this);\n\n var colIndexes = this.colIndexes,\n colOperations = this.operations,\n outputTypes = this.outputTypes,\n totRowIndexes = this.totRowIndexes,\n excludeRows = this.excludeRows,\n formatResults = this.formatResults;\n\n var decimalPrecisions = (0, _types.isUndef)(this.decimalPrecisions) ? 2 : this.decimalPrecisions;\n\n //nuovella: determine unique list of columns to operate on\n var uIndexes = [];\n colIndexes.forEach(function (val) {\n if (uIndexes.indexOf(val) === -1) {\n uIndexes.push(val);\n }\n });\n\n var nbCols = uIndexes.length,\n rows = tf.dom().rows,\n colValues = [];\n\n for (var u = 0; u < nbCols; u++) {\n //this retrieves col values\n //use uIndexes because we only want to pass through this loop\n //once for each column get the values in this unique column\n colValues.push(tf.getVisibleColumnData(uIndexes[u], false, excludeRows));\n\n var curValues = colValues[u];\n\n //next: calculate all operations for this column\n var result = 0,\n operations = [],\n precisions = [],\n labels = [],\n writeType = void 0,\n formatResult = [],\n idx = 0;\n\n for (var k = 0; k < colIndexes.length; k++) {\n if (colIndexes[k] !== uIndexes[u]) {\n continue;\n }\n operations[idx] = (colOperations[k] || 'sum').toLowerCase();\n precisions[idx] = decimalPrecisions[k];\n labels[idx] = this.labelIds[k];\n writeType = (0, _types.isArray)(outputTypes) ? outputTypes[k] : null;\n formatResult[idx] = this.configureFormat(uIndexes[u], formatResults[k]);\n idx++;\n }\n\n for (var i = 0; i < idx; i++) {\n // emit values before column calculation\n this.emitter.emit('before-column-calc', tf, this, uIndexes[u], curValues, operations[i], precisions[i]);\n\n result = Number(this.calc(curValues, operations[i], null));\n\n // emit column calculation result\n this.emitter.emit('column-calc', tf, this, uIndexes[u], result, operations[i], precisions[i]);\n\n // write result in expected DOM element\n this.writeResult(result, labels[i], writeType, precisions[i], formatResult[i]);\n } //for i\n\n // row(s) with result are always visible\n var totRow = totRowIndexes && totRowIndexes[u] ? rows[totRowIndexes[u]] : null;\n if (totRow) {\n totRow.style.display = '';\n }\n } //for u\n\n this.onAfterOperation(tf, this);\n this.emitter.emit('after-column-operation', tf, this);\n }\n\n /**\r\n * Make desired calculation on specified column.\r\n * @param {Number} colIndex Column index\r\n * @param {String} [operation=SUM] Operation type\r\n * @param {Number} precision Decimal precision\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'columnCalc',\n value: function columnCalc(colIndex) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SUM;\n var precision = arguments[2];\n\n var excludeRows = this.excludeRows || [];\n var colValues = tf.getVisibleColumnData(colIndex, false, excludeRows);\n\n return Number(this.calc(colValues, operation, precision));\n }\n\n /**\r\n * Make calculation on passed values.\r\n * @param {Array} values List of values\r\n * @param {String} [operation=SUM] Optional operation type\r\n * @param {Number} precision Optional result precision\r\n * @returns {Number}\r\n * @private\r\n */\n\n }, {\n key: 'calc',\n value: function calc(colValues) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SUM;\n var precision = arguments[2];\n\n var result = 0;\n\n if (operation === Q1 || operation === Q3 || operation === MEDIAN) {\n colValues = this.sortColumnValues(colValues, _sort.numSortAsc);\n }\n\n switch (operation) {\n case MEAN:\n result = this.calcMean(colValues);\n break;\n case SUM:\n result = this.calcSum(colValues);\n break;\n case MIN:\n result = this.calcMin(colValues);\n break;\n case MAX:\n result = this.calcMax(colValues);\n break;\n case MEDIAN:\n result = this.calcMedian(colValues);\n break;\n case Q1:\n result = this.calcQ1(colValues);\n break;\n case Q3:\n result = this.calcQ3(colValues);\n break;\n }\n\n return (0, _types.isEmpty)(precision) ? result : result.toFixed(precision);\n }\n\n /**\r\n * Calculate the sum of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcSum',\n value: function calcSum() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if ((0, _types.isEmpty)(values)) {\n return 0;\n }\n var result = values.reduce(function (x, y) {\n return Number(x) + Number(y);\n });\n return result;\n }\n\n /**\r\n * Calculate the mean of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcMean',\n value: function calcMean() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var result = this.calcSum(values) / values.length;\n return Number(result);\n }\n\n /**\r\n * Calculate the max value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcMax',\n value: function calcMax() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return Math.max.apply(null, values);\n }\n\n /**\r\n * Calculate the min value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcMin',\n value: function calcMin() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return Math.min.apply(null, values);\n }\n\n /**\r\n * Calculate the median of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcMedian',\n value: function calcMedian() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nbValues = values.length;\n var aux = 0;\n if (nbValues % 2 === 1) {\n aux = Math.floor(nbValues / 2);\n return Number(values[aux]);\n }\n return (Number(values[nbValues / 2]) + Number(values[nbValues / 2 - 1])) / 2;\n }\n\n /**\r\n * Calculate the lower quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcQ1',\n value: function calcQ1() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nbValues = values.length;\n var posa = 0.0;\n posa = Math.floor(nbValues / 4);\n if (4 * posa === nbValues) {\n return (Number(values[posa - 1]) + Number(values[posa])) / 2;\n }\n return Number(values[posa]);\n }\n\n /**\r\n * Calculate the upper quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\n\n }, {\n key: 'calcQ3',\n value: function calcQ3() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nbValues = values.length;\n var posa = 0.0;\n var posb = 0.0;\n posa = Math.floor(nbValues / 4);\n if (4 * posa === nbValues) {\n posb = 3 * posa;\n return (Number(values[posb]) + Number(values[posb - 1])) / 2;\n }\n return Number(values[nbValues - posa - 1]);\n }\n\n /**\r\n * Sort passed values with supplied sorter function.\r\n * @param {Array} [values=[]] List of values to be sorted\r\n * @param {Function} sorter Sorter function\r\n * @returns {Array}\r\n */\n\n }, {\n key: 'sortColumnValues',\n value: function sortColumnValues() {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var sorter = arguments[1];\n\n return values.sort(sorter);\n }\n\n /**\r\n * Write calculation result in passed DOM element with supplied write method\r\n * and decimal precision.\r\n * @param {Number} [result=0] Calculation result\r\n * @param {DOMElement} label DOM element\r\n * @param {String} [writeType='innerhtml'] Write method\r\n * @param {Number} [precision=2] Applied decimal precision\r\n * @private\r\n */\n\n }, {\n key: 'writeResult',\n value: function writeResult() {\n var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var label = arguments[1];\n var writeType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'innerhtml';\n var precision = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2;\n var format = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var labelElm = (0, _dom.elm)(label);\n\n if (!labelElm) {\n return;\n }\n\n result = result.toFixed(precision);\n if (isNaN(result) || !isFinite(result)) {\n result = '';\n } else {\n result = (0, _formatNumber2.default)(format)(result);\n }\n\n switch (writeType.toLowerCase()) {\n case 'innerhtml':\n labelElm.innerHTML = result;\n break;\n case 'setvalue':\n labelElm.value = result;\n break;\n case 'createtextnode':\n var oldNode = labelElm.firstChild;\n var txtNode = (0, _dom.createText)(result);\n labelElm.replaceChild(txtNode, oldNode);\n break;\n }\n }\n\n /**\r\n * Configure the format options used to format the operation result based\r\n * on column type.\r\n * @param {Number} colIndex Column index\r\n * @param {Object} [format={}] Format object\r\n * @returns {Object}\r\n * @private\r\n */\n\n }, {\n key: 'configureFormat',\n value: function configureFormat(colIndex) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var tf = this.tf;\n if (tf.hasType(colIndex, [_const.FORMATTED_NUMBER])) {\n var colType = tf.colTypes[colIndex];\n if (colType.decimal && !format.decimal) {\n format.decimal = colType.decimal;\n }\n if (colType.thousands && !format.integerSeparator) {\n format.integerSeparator = colType.thousands;\n }\n } else {\n format.decimal = format.decimal || '';\n format.integerSeparator = format.integerSeparator || '';\n }\n return format;\n }\n\n /** Remove extension */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this.initialized) {\n return;\n }\n // unsubscribe to events\n this.emitter.off(EVENTS, function () {\n return _this3.calcAll();\n });\n\n this.initialized = false;\n }\n }]);\n\n return ColOps;\n}(_feature.Feature);\n\nexports.default = ColOps;\n\n/***/ }),\n\n/***/ 443:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _event = __webpack_require__(17);\n\nvar _root = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Columns Visibility extension\r\n */\nvar ColsVisibility = function (_Feature) {\n _inherits(ColsVisibility, _Feature);\n\n /**\r\n * Creates an instance of ColsVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\n function ColsVisibility(tf, f) {\n _classCallCheck(this, ColsVisibility);\n\n // Configuration object\n var _this = _possibleConstructorReturn(this, (ColsVisibility.__proto__ || Object.getPrototypeOf(ColsVisibility)).call(this, tf, f.name));\n\n var cfg = _this.config;\n\n /**\r\n * Module name\r\n * @type {String}\r\n */\n _this.name = f.name;\n\n /**\r\n * Module description\r\n * @type {String}\r\n */\n _this.desc = f.description || 'Columns visibility manager';\n\n /**\r\n * show/hide columns container element\r\n * @private\r\n */\n _this.spanEl = null;\n\n /**\r\n * show/hide columns button element\r\n * @private\r\n */\n _this.btnEl = null;\n\n /**\r\n * show/hide columns main container element\r\n * @private\r\n */\n _this.contEl = null;\n\n /**\r\n * Enable tick to hide a column, defaults to true\r\n * @type {Boolean}\r\n */\n _this.tickToHide = f.tick_to_hide === false ? false : true;\n\n /**\r\n * Enable columns manager UI, defaults to true\r\n * @type {Boolean}\r\n */\n _this.manager = f.manager === false ? false : true;\n\n /**\r\n * Headers HTML table reference only if headers are external\r\n * @type {DOMElement}\r\n */\n _this.headersTbl = f.headers_table || null;\n\n /**\r\n * Headers row index only if headers are external\r\n * @type {Number}\r\n */\n _this.headersIndex = f.headers_index || 1;\n\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\n _this.contElTgtId = f.container_target_id || null;\n\n /**\r\n * Alternative text for column headers in column manager UI\r\n * @type {Array}\r\n */\n _this.headersText = f.headers_text || null;\n\n /**\r\n * ID of button's container element\r\n * @type {String}\r\n */\n _this.btnTgtId = f.btn_target_id || null;\n\n /**\r\n * Button's text, defaults to Columns▼\r\n * @type {String}\r\n */\n _this.btnText = f.btn_text || 'Columns▼';\n\n /**\r\n * Button's inner HTML\r\n * @type {String}\r\n */\n _this.btnHtml = f.btn_html || null;\n\n /**\r\n * Css class for button\r\n * @type {String}\r\n */\n _this.btnCssClass = f.btn_css_class || 'colVis';\n\n /**\r\n * Columns manager UI close link text, defaults to 'Close'\r\n * @type {String}\r\n */\n _this.btnCloseText = f.btn_close_text || 'Close';\n\n /**\r\n * Columns manager UI close link HTML\r\n * @type {String}\r\n */\n _this.btnCloseHtml = f.btn_close_html || null;\n\n /**\r\n * Css for columns manager UI close link\r\n * @type {String}\r\n */\n _this.btnCloseCssClass = f.btn_close_css_class || _this.btnCssClass;\n\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\n _this.stylesheet = f.stylesheet || 'colsVisibility.css';\n\n /**\r\n * Css for columns manager UI span\r\n * @type {String}\r\n */\n _this.spanCssClass = f.span_css_class || 'colVisSpan';\n\n /**\r\n * Css for columns manager UI main container\r\n * @type {String}\r\n */\n _this.contCssClass = f.cont_css_class || 'colVisCont';\n\n /**\r\n * Css for columns manager UI checklist (ul)\r\n * @type {String}\r\n */\n _this.listCssClass = cfg.list_css_class || 'cols_checklist';\n\n /**\r\n * Css for columns manager UI checklist item (li)\r\n * @type {String}\r\n */\n _this.listItemCssClass = cfg.checklist_item_css_class || 'cols_checklist_item';\n\n /**\r\n * Css for columns manager UI checklist item selected state (li)\r\n * @type {String}\r\n */\n _this.listSlcItemCssClass = cfg.checklist_selected_item_css_class || 'cols_checklist_slc_item';\n\n /**\r\n * Text preceding the columns list, defaults to 'Hide' or 'Show'\r\n * depending on tick mode (tick_to_hide option)\r\n * @type {String}\r\n */\n _this.text = f.text || (_this.tickToHide ? 'Hide: ' : 'Show: ');\n\n /**\r\n * List of columns indexes to be hidden at initialization\r\n * @type {Array}\r\n */\n _this.atStart = f.at_start || [];\n\n /**\r\n * Enable hover behaviour on columns manager button/link\r\n * @type {Boolean}\r\n */\n _this.enableHover = Boolean(f.enable_hover);\n\n /**\r\n * Enable select all option, disabled by default\r\n * @type {Boolean}\r\n */\n _this.enableTickAll = Boolean(f.enable_tick_all);\n\n /**\r\n * Text for select all option, defaults to 'Select all:'\r\n * @type {String}\r\n */\n _this.tickAllText = f.tick_all_text || 'Select all:';\n\n /**\r\n * List of indexes of hidden columns\r\n * @private\r\n */\n _this.hiddenCols = [];\n\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\n _this.boundMouseup = null;\n\n /**\r\n * Callback fired when the extension is initialized\r\n * @type {Function}\r\n */\n _this.onLoaded = (0, _types.isFn)(f.on_loaded) ? f.on_loaded : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before the columns manager is opened\r\n * @type {Function}\r\n */\n _this.onBeforeOpen = (0, _types.isFn)(f.on_before_open) ? f.on_before_open : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the columns manager is opened\r\n * @type {Function}\r\n */\n _this.onAfterOpen = (0, _types.isFn)(f.on_after_open) ? f.on_after_open : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before the columns manager is closed\r\n * @type {Function}\r\n */\n _this.onBeforeClose = (0, _types.isFn)(f.on_before_close) ? f.on_before_close : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after the columns manager is closed\r\n * @type {Function}\r\n */\n _this.onAfterClose = (0, _types.isFn)(f.on_after_close) ? f.on_after_close : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before a column is hidden\r\n * @type {Function}\r\n */\n _this.onBeforeColHidden = (0, _types.isFn)(f.on_before_col_hidden) ? f.on_before_col_hidden : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a column is hidden\r\n * @type {Function}\r\n */\n _this.onAfterColHidden = (0, _types.isFn)(f.on_after_col_hidden) ? f.on_after_col_hidden : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before a column is displayed\r\n * @type {Function}\r\n */\n _this.onBeforeColDisplayed = (0, _types.isFn)(f.on_before_col_displayed) ? f.on_before_col_displayed : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after a column is displayed\r\n * @type {Function}\r\n */\n _this.onAfterColDisplayed = (0, _types.isFn)(f.on_after_col_displayed) ? f.on_after_col_displayed : _types.EMPTY_FN;\n\n //Grid layout support\n if (tf.gridLayout) {\n _this.headersTbl = tf.feature('gridLayout').headTbl; //headers table\n _this.headersIndex = 0; //headers index\n _this.onAfterColDisplayed = function () {};\n _this.onAfterColHidden = function () {};\n }\n\n //Loads extension stylesheet\n tf.import(f.name + 'Style', tf.stylePath + _this.stylesheet, null, 'link');\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\n\n\n _createClass(ColsVisibility, [{\n key: 'onMouseup',\n value: function onMouseup(evt) {\n var targetElm = (0, _event.targetEvt)(evt);\n\n while (targetElm && targetElm !== this.contEl && targetElm !== this.btnEl) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== this.contEl && targetElm !== this.btnEl) {\n this.toggle();\n }\n\n return;\n }\n\n /**\r\n * Toggle columns manager UI\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n // ensure mouseup event handler is removed\n (0, _event.removeEvt)(_root.root, 'mouseup', this.boundMouseup);\n\n var contDisplay = this.contEl.style.display;\n\n if (contDisplay !== 'inline') {\n this.onBeforeOpen(this);\n }\n if (contDisplay === 'inline') {\n this.onBeforeClose(this);\n }\n\n this.contEl.style.display = contDisplay === 'inline' ? 'none' : 'inline';\n\n if (contDisplay !== 'inline') {\n this.onAfterOpen(this);\n (0, _event.addEvt)(_root.root, 'mouseup', this.boundMouseup);\n }\n if (contDisplay === 'inline') {\n this.onAfterClose(this);\n }\n }\n\n /**\r\n * Check an item in columns manager UI\r\n * @private\r\n */\n\n }, {\n key: 'checkItem',\n value: function checkItem(lbl) {\n var li = lbl.parentNode;\n if (!li || !lbl) {\n return;\n }\n var isChecked = lbl.firstChild.checked;\n var colIndex = lbl.firstChild.getAttribute('id').split('_')[1];\n colIndex = parseInt(colIndex, 10);\n if (isChecked) {\n (0, _dom.addClass)(li, this.listSlcItemCssClass);\n } else {\n (0, _dom.removeClass)(li, this.listSlcItemCssClass);\n }\n\n var hide = false;\n if (this.tickToHide && isChecked || !this.tickToHide && !isChecked) {\n hide = true;\n }\n this.setHidden(colIndex, hide);\n }\n\n /**\r\n * Initializes ColsVisibility instance\r\n */\n\n }, {\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized || !this.manager) {\n return;\n }\n\n this.emitter.on(['hide-column'], function (tf, colIndex) {\n return _this2.hideCol(colIndex);\n });\n\n this.buildBtn();\n this.buildManager();\n\n /** @inherited */\n this.initialized = true;\n\n this.boundMouseup = this.onMouseup.bind(this);\n\n this.emitter.emit('columns-visibility-initialized', this.tf, this);\n\n // Hide columns at start at very end of initialization, do not move\n // as order is important\n this._hideAtStart();\n }\n\n /**\r\n * Build main button UI\r\n */\n\n }, {\n key: 'buildBtn',\n value: function buildBtn() {\n var _this3 = this;\n\n if (this.btnEl) {\n return;\n }\n var tf = this.tf;\n var span = (0, _dom.createElm)('span');\n span.className = this.spanCssClass;\n\n //Container element (rdiv or custom element)\n if (!this.btnTgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.btnTgtId ? tf.rDiv : (0, _dom.elm)(this.btnTgtId);\n\n if (!this.btnTgtId) {\n var firstChild = targetEl.firstChild;\n firstChild.parentNode.insertBefore(span, firstChild);\n } else {\n targetEl.appendChild(span);\n }\n\n if (!this.btnHtml) {\n var btn = (0, _dom.createElm)('a', ['href', 'javascript:;']);\n btn.className = this.btnCssClass;\n btn.title = this.desc;\n\n btn.innerHTML = this.btnText;\n span.appendChild(btn);\n if (!this.enableHover) {\n (0, _event.addEvt)(btn, 'click', function (evt) {\n return _this3.toggle(evt);\n });\n } else {\n (0, _event.addEvt)(btn, 'mouseover', function (evt) {\n return _this3.toggle(evt);\n });\n }\n } else {\n //Custom html\n span.innerHTML = this.btnHtml;\n var colVisEl = span.firstChild;\n if (!this.enableHover) {\n (0, _event.addEvt)(colVisEl, 'click', function (evt) {\n return _this3.toggle(evt);\n });\n } else {\n (0, _event.addEvt)(colVisEl, 'mouseover', function (evt) {\n return _this3.toggle(evt);\n });\n }\n }\n\n this.spanEl = span;\n this.btnEl = this.spanEl.firstChild;\n\n this.onLoaded(this);\n }\n\n /**\r\n * Build columns manager UI\r\n */\n\n }, {\n key: 'buildManager',\n value: function buildManager() {\n var _this4 = this;\n\n var tf = this.tf;\n\n var container = !this.contElTgtId ? (0, _dom.createElm)('div') : (0, _dom.elm)(this.contElTgtId);\n container.className = this.contCssClass;\n\n //Extension description\n var extNameLabel = (0, _dom.createElm)('p');\n extNameLabel.innerHTML = this.text;\n container.appendChild(extNameLabel);\n\n //Headers list\n var ul = (0, _dom.createElm)('ul');\n ul.className = this.listCssClass;\n\n var tbl = this.headersTbl ? this.headersTbl : tf.dom();\n var headerIndex = this.headersTbl ? this.headersIndex : tf.getHeadersRowIndex();\n var headerRow = tbl.rows[headerIndex];\n\n //Tick all option\n if (this.enableTickAll) {\n var li = (0, _dom.createCheckItem)('col__' + tf.id, this.tickAllText, this.tickAllText);\n (0, _dom.addClass)(li, this.listItemCssClass);\n ul.appendChild(li);\n li.check.checked = !this.tickToHide;\n\n (0, _event.addEvt)(li.check, 'click', function () {\n for (var h = 0; h < headerRow.cells.length; h++) {\n var itm = (0, _dom.elm)('col_' + h + '_' + tf.id);\n if (itm && li.check.checked !== itm.checked) {\n itm.click();\n itm.checked = li.check.checked;\n }\n }\n });\n }\n\n for (var i = 0; i < headerRow.cells.length; i++) {\n var cell = headerRow.cells[i];\n var cellText = this.headersText && this.headersText[i] ? this.headersText[i] : this._getHeaderText(cell);\n var liElm = (0, _dom.createCheckItem)('col_' + i + '_' + tf.id, cellText, cellText);\n (0, _dom.addClass)(liElm, this.listItemCssClass);\n if (!this.tickToHide) {\n (0, _dom.addClass)(liElm, this.listSlcItemCssClass);\n }\n ul.appendChild(liElm);\n if (!this.tickToHide) {\n liElm.check.checked = true;\n }\n\n (0, _event.addEvt)(liElm.check, 'click', function (evt) {\n var elm = (0, _event.targetEvt)(evt);\n var lbl = elm.parentNode;\n _this4.checkItem(lbl);\n });\n }\n\n //separator\n var p = (0, _dom.createElm)('p', ['align', 'center']);\n var btn = void 0;\n //Close link\n if (!this.btnCloseHtml) {\n btn = (0, _dom.createElm)('a', ['href', 'javascript:;']);\n btn.className = this.btnCloseCssClass;\n btn.innerHTML = this.btnCloseText;\n (0, _event.addEvt)(btn, 'click', function (evt) {\n return _this4.toggle(evt);\n });\n p.appendChild(btn);\n } else {\n p.innerHTML = this.btnCloseHtml;\n btn = p.firstChild;\n (0, _event.addEvt)(btn, 'click', function (evt) {\n return _this4.toggle(evt);\n });\n }\n\n container.appendChild(ul);\n container.appendChild(p);\n\n this.btnEl.parentNode.insertBefore(container, this.btnEl);\n this.contEl = container;\n }\n\n /**\r\n * Hide or show specified columns\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} hide Hide column if true or show if false\r\n */\n\n }, {\n key: 'setHidden',\n value: function setHidden(colIndex, hide) {\n var tf = this.tf;\n var tbl = tf.dom();\n\n if (hide) {\n this.onBeforeColHidden(this, colIndex);\n }\n if (!hide) {\n this.onBeforeColDisplayed(this, colIndex);\n }\n\n this._hideCells(tbl, colIndex, hide);\n if (this.headersTbl) {\n this._hideCells(this.headersTbl, colIndex, hide);\n }\n\n var hiddenCols = this.hiddenCols;\n var itemIndex = hiddenCols.indexOf(colIndex);\n if (hide) {\n if (itemIndex === -1) {\n this.hiddenCols.push(colIndex);\n }\n } else {\n if (itemIndex !== -1) {\n this.hiddenCols.splice(itemIndex, 1);\n }\n }\n\n var gridLayout = void 0;\n var headTbl = void 0;\n var gridColElms = void 0;\n if (hide) {\n //This event is fired just after a column is displayed for\n //grid_layout support\n //TODO: grid layout module should be responsible for those\n //calculations\n if (tf.gridLayout) {\n gridLayout = tf.feature('gridLayout');\n headTbl = gridLayout.headTbl;\n gridColElms = gridLayout.colElms;\n var hiddenWidth = parseInt(gridColElms[colIndex].style.width, 10);\n\n var headTblW = parseInt(headTbl.style.width, 10);\n headTbl.style.width = headTblW - hiddenWidth + 'px';\n tbl.style.width = headTbl.style.width;\n }\n\n this.onAfterColHidden(this, colIndex);\n this.emitter.emit('column-hidden', tf, this, colIndex, this.hiddenCols);\n }\n\n if (!hide) {\n //This event is fired just after a column is displayed for\n //grid_layout support\n //TODO: grid layout module should be responsible for those\n //calculations\n if (tf.gridLayout) {\n gridLayout = tf.feature('gridLayout');\n headTbl = gridLayout.headTbl;\n gridColElms = gridLayout.colElms;\n var width = parseInt(gridColElms[colIndex].style.width, 10);\n headTbl.style.width = parseInt(headTbl.style.width, 10) + width + 'px';\n tf.dom().style.width = headTbl.style.width;\n }\n\n this.onAfterColDisplayed(this, colIndex);\n this.emitter.emit('column-shown', tf, this, colIndex, this.hiddenCols);\n }\n }\n\n /**\r\n * Show specified column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'showCol',\n value: function showCol(colIndex) {\n if (colIndex === undefined || !this.isColHidden(colIndex)) {\n return;\n }\n if (this.manager && this.contEl) {\n var itm = (0, _dom.elm)('col_' + colIndex + '_' + this.tf.id);\n if (itm) {\n itm.click();\n }\n } else {\n this.setHidden(colIndex, false);\n }\n }\n\n /**\r\n * Hide specified column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'hideCol',\n value: function hideCol(colIndex) {\n if (colIndex === undefined || this.isColHidden(colIndex)) {\n return;\n }\n if (this.manager && this.contEl) {\n var itm = (0, _dom.elm)('col_' + colIndex + '_' + this.tf.id);\n if (itm) {\n itm.click();\n }\n } else {\n this.setHidden(colIndex, true);\n }\n }\n\n /**\r\n * Determine if specified column is hidden\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'isColHidden',\n value: function isColHidden(colIndex) {\n if (this.hiddenCols.indexOf(colIndex) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\r\n * Toggle visibility of specified column\r\n * @param {Number} colIndex Column index\r\n */\n\n }, {\n key: 'toggleCol',\n value: function toggleCol(colIndex) {\n if (colIndex === undefined || this.isColHidden(colIndex)) {\n this.showCol(colIndex);\n } else {\n this.hideCol(colIndex);\n }\n }\n\n /**\r\n * Return the indexes of the columns currently hidden\r\n * @return {Array} column indexes\r\n */\n\n }, {\n key: 'getHiddenCols',\n value: function getHiddenCols() {\n return this.hiddenCols;\n }\n\n /**\r\n * Remove the columns manager\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this5 = this;\n\n if (!this.initialized) {\n return;\n }\n if ((0, _dom.elm)(this.contElTgtId)) {\n (0, _dom.elm)(this.contElTgtId).innerHTML = '';\n } else {\n this.contEl.innerHTML = '';\n (0, _dom.removeElm)(this.contEl);\n this.contEl = null;\n }\n this.btnEl.innerHTML = '';\n (0, _dom.removeElm)(this.btnEl);\n this.btnEl = null;\n\n this.emitter.off(['hide-column'], function (tf, colIndex) {\n return _this5.hideCol(colIndex);\n });\n\n this.boundMouseup = null;\n\n this.initialized = false;\n }\n }, {\n key: '_getHeaderText',\n value: function _getHeaderText(cell) {\n if (!cell.hasChildNodes) {\n return '';\n }\n\n for (var i = 0; i < cell.childNodes.length; i++) {\n var n = cell.childNodes[i];\n if (n.nodeType === 3) {\n return n.nodeValue;\n } else if (n.nodeType === 1) {\n if (n.id && n.id.indexOf('popUp') !== -1) {\n continue;\n } else {\n return (0, _dom.getText)(n);\n }\n }\n continue;\n }\n return '';\n }\n }, {\n key: '_hideCells',\n value: function _hideCells(tbl, colIndex, hide) {\n for (var i = 0; i < tbl.rows.length; i++) {\n var row = tbl.rows[i];\n var cell = row.cells[colIndex];\n if (cell) {\n cell.style.display = hide ? 'none' : '';\n }\n }\n }\n }, {\n key: '_hideAtStart',\n value: function _hideAtStart() {\n var _this6 = this;\n\n this.atStart.forEach(function (colIdx) {\n _this6.hideCol(colIdx);\n });\n }\n }]);\n\n return ColsVisibility;\n}(_feature.Feature);\n\nexports.default = ColsVisibility;\n\n/***/ }),\n\n/***/ 444:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _feature = __webpack_require__(11);\n\nvar _dom = __webpack_require__(9);\n\nvar _types = __webpack_require__(6);\n\nvar _event = __webpack_require__(17);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\r\n * Filters Visibility extension\r\n */\nvar FiltersVisibility = function (_Feature) {\n _inherits(FiltersVisibility, _Feature);\n\n /**\r\n * Creates an instance of FiltersVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\n function FiltersVisibility(tf, f) {\n _classCallCheck(this, FiltersVisibility);\n\n /**\r\n * Module name\r\n * @type {String}\r\n */\n var _this = _possibleConstructorReturn(this, (FiltersVisibility.__proto__ || Object.getPrototypeOf(FiltersVisibility)).call(this, tf, f.name));\n\n _this.name = f.name;\n\n /**\r\n * Module description\r\n * @type {String}\r\n */\n _this.desc = f.description || 'Filters row visibility manager';\n\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\n _this.stylesheet = f.stylesheet || 'filtersVisibility.css';\n\n /**\r\n * Expand icon filename\r\n * @type {String}\r\n */\n _this.icnExpand = f.expand_icon_name || 'icn_exp.png';\n\n /**\r\n * Collapse icon filename\r\n * @type {String}\r\n */\n _this.icnCollapse = f.collapse_icon_name || 'icn_clp.png';\n\n /**\r\n * Main container element\r\n * @private\r\n */\n _this.contEl = null;\n\n /**\r\n * Button element\r\n * @private\r\n */\n _this.btnEl = null;\n\n /**\r\n * Expand icon HTML\r\n * @private\r\n */\n _this.icnExpandHtml = '\"Expand';\n\n /**\r\n * Collapse icon HTML\r\n * @private\r\n */\n _this.icnCollapseHtml = '\"Collapse';\n\n /**\r\n * Default text\r\n * @private\r\n */\n _this.defaultText = 'Toggle filters';\n\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\n _this.targetId = f.target_id || null;\n\n /**\r\n * Enable expand/collapse icon, defaults to true\r\n * @type {Boolean}\r\n */\n _this.enableIcon = f.enable_icon === false ? false : true;\n\n /**\r\n * Custom text for button\r\n * @type {String}\r\n */\n _this.btnText = f.btn_text || '';\n\n /**\r\n * Collapse button HTML\r\n * @private\r\n */\n _this.collapseBtnHtml = _this.enableIcon ? _this.icnCollapseHtml + _this.btnText : _this.btnText || _this.defaultText;\n\n /**\r\n * Expand button HTML\r\n * @private\r\n */\n _this.expandBtnHtml = _this.enableIcon ? _this.icnExpandHtml + _this.btnText : _this.btnText || _this.defaultText;\n\n /**\r\n * Button's custom HTML\r\n * @type {String}\r\n */\n _this.btnHtml = f.btn_html || null;\n\n /**\r\n * Css class for expand/collapse filters button\r\n * @type {String}\r\n */\n _this.btnCssClass = f.btn_css_class || 'btnExpClpFlt';\n\n /**\r\n * Css class for main container\r\n * @type {String}\r\n */\n _this.contCssClass = f.cont_css_class || 'expClpFlt';\n\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\n _this.filtersRowIndex = !(0, _types.isUndef)(f.filters_row_index) ? f.filters_row_index : tf.getFiltersRowIndex();\n\n /**\r\n * Make filters visible at initialization, defaults to true\r\n * @type {Boolean}\r\n */\n _this.visibleAtStart = !(0, _types.isUndef)(f.visible_at_start) ? Boolean(f.visible_at_start) : true;\n\n /**\r\n * Callback fired before filters row is shown\r\n * @type {Function}\r\n */\n _this.onBeforeShow = (0, _types.isFn)(f.on_before_show) ? f.on_before_show : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after filters row is shown\r\n * @type {Function}\r\n */\n _this.onAfterShow = (0, _types.isFn)(f.on_after_show) ? f.on_after_show : _types.EMPTY_FN;\n\n /**\r\n * Callback fired before filters row is hidden\r\n * @type {Function}\r\n */\n _this.onBeforeHide = (0, _types.isFn)(f.on_before_hide) ? f.on_before_hide : _types.EMPTY_FN;\n\n /**\r\n * Callback fired after filters row is hidden\r\n * @type {Function}\r\n */\n _this.onAfterHide = (0, _types.isFn)(f.on_after_hide) ? f.on_after_hide : _types.EMPTY_FN;\n\n //Import extension's stylesheet\n tf.import(f.name + 'Style', tf.stylePath + _this.stylesheet, null, 'link');\n\n _this.enable();\n return _this;\n }\n\n /**\r\n * Initialise extension\r\n */\n\n\n _createClass(FiltersVisibility, [{\n key: 'init',\n value: function init() {\n var _this2 = this;\n\n if (this.initialized) {\n return;\n }\n\n this.buildUI();\n\n /**\r\n * @inherited\r\n */\n this.initialized = true;\n\n this.emitter.on(['show-filters'], function (tf, visible) {\n return _this2.show(visible);\n });\n this.emitter.emit('filters-visibility-initialized', this.tf, this);\n }\n\n /**\r\n * Build UI elements\r\n */\n\n }, {\n key: 'buildUI',\n value: function buildUI() {\n var _this3 = this;\n\n var tf = this.tf;\n var span = (0, _dom.createElm)('span');\n span.className = this.contCssClass;\n\n //Container element (rdiv or custom element)\n if (!this.targetId) {\n tf.setToolbar();\n }\n var targetEl = !this.targetId ? tf.rDiv : (0, _dom.elm)(this.targetId);\n\n if (!this.targetId) {\n var firstChild = targetEl.firstChild;\n firstChild.parentNode.insertBefore(span, firstChild);\n } else {\n targetEl.appendChild(span);\n }\n\n var btn = void 0;\n if (!this.btnHtml) {\n btn = (0, _dom.createElm)('a', ['href', 'javascript:void(0);']);\n btn.className = this.btnCssClass;\n btn.title = this.btnText || this.defaultText;\n btn.innerHTML = this.collapseBtnHtml;\n span.appendChild(btn);\n } else {\n //Custom html\n span.innerHTML = this.btnHtml;\n btn = span.firstChild;\n }\n\n (0, _event.addEvt)(btn, 'click', function () {\n return _this3.toggle();\n });\n\n this.contEl = span;\n this.btnEl = btn;\n\n if (!this.visibleAtStart) {\n this.toggle();\n }\n }\n\n /**\r\n * Toggle filters visibility\r\n */\n\n }, {\n key: 'toggle',\n value: function toggle() {\n var tf = this.tf;\n var tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\n var fltRow = tbl.rows[this.filtersRowIndex];\n var isDisplayed = fltRow.style.display === '';\n\n this.show(!isDisplayed);\n }\n\n /**\r\n * Show or hide filters\r\n *\r\n * @param {boolean} [visible=true] Visibility flag\r\n */\n\n }, {\n key: 'show',\n value: function show() {\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var tf = this.tf;\n var tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\n var fltRow = tbl.rows[this.filtersRowIndex];\n\n if (visible) {\n this.onBeforeShow(this);\n }\n if (!visible) {\n this.onBeforeHide(this);\n }\n\n fltRow.style.display = visible ? '' : 'none';\n if (this.enableIcon && !this.btnHtml) {\n this.btnEl.innerHTML = visible ? this.collapseBtnHtml : this.expandBtnHtml;\n }\n\n if (visible) {\n this.onAfterShow(this);\n }\n if (!visible) {\n this.onAfterHide(this);\n }\n\n this.emitter.emit('filters-toggled', tf, this, visible);\n }\n\n /**\r\n * Destroy the UI\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (!this.initialized) {\n return;\n }\n\n this.emitter.off(['show-filters'], function (tf, visible) {\n return _this4.show(visible);\n });\n\n this.btnEl.innerHTML = '';\n (0, _dom.removeElm)(this.btnEl);\n this.btnEl = null;\n\n this.contEl.innerHTML = '';\n (0, _dom.removeElm)(this.contEl);\n this.contEl = null;\n this.initialized = false;\n }\n }]);\n\n return FiltersVisibility;\n}(_feature.Feature);\n\nexports.default = FiltersVisibility;\n\n/***/ }),\n\n/***/ 445:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _adapterSortabletable = __webpack_require__(440);\n\nvar _adapterSortabletable2 = _interopRequireDefault(_adapterSortabletable);\n\nvar _root = __webpack_require__(15);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (!_root.root.SortableTable) {\n __webpack_require__(449);\n}\n\nexports.default = _adapterSortabletable2.default;\n\n/***/ }),\n\n/***/ 446:\n/***/ (function(module, exports) {\n\n\nmodule.exports = formatter;\n\nfunction formatter(options) {\n options = options || {};\n\n\n // *********************************************************************************************\n // Set defaults for negatives\n // options.negative, options.negativeOut, options.separator retained for backward compatibility\n // *********************************************************************************************\n\n // type of negative; default left\n options.negativeType = options.negativeType || (options.negative === 'R' ? 'right' : 'left')\n\n // negative symbols '-' or '()'\n if (typeof options.negativeLeftSymbol !== 'string') {\n switch (options.negativeType) {\n case 'left':\n options.negativeLeftSymbol = '-';\n break;\n case 'brackets':\n options.negativeLeftSymbol = '(';\n break;\n default:\n options.negativeLeftSymbol = '';\n }\n }\n if (typeof options.negativeRightSymbol !== 'string') {\n switch (options.negativeType) {\n case 'right':\n options.negativeRightSymbol = '-';\n break;\n case 'brackets':\n options.negativeRightSymbol = ')';\n break;\n default:\n options.negativeRightSymbol = '';\n }\n }\n\n // whether negative symbol should be inside/outside prefix and suffix\n\n if (typeof options.negativeLeftOut !== \"boolean\") {\n options.negativeLeftOut = (options.negativeOut === false ? false : true);\n }\n if (typeof options.negativeRightOut !== \"boolean\") {\n options.negativeRightOut = (options.negativeOut === false ? false : true);\n }\n\n //prefix and suffix\n options.prefix = options.prefix || '';\n options.suffix = options.suffix || '';\n\n //separators\n if (typeof options.integerSeparator !== 'string') {\n options.integerSeparator = (typeof options.separator === 'string' ? options.separator : ',');\n }\n options.decimalsSeparator = typeof options.decimalsSeparator === 'string' ? options.decimalsSeparator : '';\n options.decimal = options.decimal || '.';\n\n //padders\n options.padLeft = options.padLeft || -1 //default no padding\n options.padRight = options.padRight || -1 //default no padding\n\n function format(number, overrideOptions) {\n overrideOptions = overrideOptions || {};\n\n if (number || number === 0) {\n number = '' + number;//convert number to string if it isn't already\n } else {\n return '';\n }\n\n //identify a negative number and make it absolute\n var output = [];\n var negative = number.charAt(0) === '-';\n number = number.replace(/^\\-/g, '');\n\n //Prepare output with left hand negative and/or prefix\n if (!options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n if (negative) {\n output.push(options.negativeLeftSymbol);\n }\n if (options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n\n //Format core number\n number = number.split('.');\n if (options.round != null) round(number, options.round);\n if (options.truncate != null) number[1] = truncate(number[1], options.truncate);\n if (options.padLeft > 0) number[0] = padLeft(number[0], options.padLeft);\n if (options.padRight > 0) number[1] = padRight(number[1], options.padRight);\n if (!overrideOptions.noSeparator && number[1]) number[1] = addDecimalSeparators(number[1], options.decimalsSeparator);\n if (!overrideOptions.noSeparator && number[0]) number[0] = addIntegerSeparators(number[0], options.integerSeparator);\n output.push(number[0]);\n if (number[1]) {\n output.push(options.decimal);\n output.push(number[1]);\n }\n\n //Prepare output with right hand negative and/or prefix\n if (options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n if (negative) {\n output.push(options.negativeRightSymbol);\n }\n if (!options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n\n //join output and return\n return output.join('');\n }\n\n format.negative = options.negative;\n format.negativeOut = options.negativeOut;\n format.negativeType = options.negativeType;\n format.negativeLeftOut = options.negativeLeftOut;\n format.negativeLeftSymbol = options.negativeLeftSymbol;\n format.negativeRightOut = options.negativeRightOut;\n format.negativeRightSymbol = options.negativeRightSymbol;\n format.prefix = options.prefix;\n format.suffix = options.suffix;\n format.separate = options.separate;\n format.integerSeparator = options.integerSeparator;\n format.decimalsSeparator = options.decimalsSeparator;\n format.decimal = options.decimal;\n format.padLeft = options.padLeft;\n format.padRight = options.padRight;\n format.truncate = options.truncate;\n format.round = options.round;\n\n function unformat(number, allowedSeparators) {\n allowedSeparators = allowedSeparators || [];\n if (options.allowedSeparators) {\n options.allowedSeparators.forEach(function (s) { allowedSeparators.push (s); });\n }\n allowedSeparators.push(options.integerSeparator);\n allowedSeparators.push(options.decimalsSeparator);\n number = number.replace(options.prefix, '');\n number = number.replace(options.suffix, '');\n var newNumber = number;\n do {\n number = newNumber;\n for (var i = 0; i < allowedSeparators.length; i++) {\n newNumber = newNumber.replace(allowedSeparators[i], '');\n }\n } while (newNumber != number);\n return number;\n }\n format.unformat = unformat;\n\n function validate(number, allowedSeparators) {\n number = unformat(number, allowedSeparators);\n number = number.split(options.decimal);\n if (number.length > 2) {\n return false;\n } else if (options.truncate != null && number[1] && number[1].length > options.truncate) {\n return false;\n } else if (options.round != null && number[1] && number[1].length > options.round) {\n return false;\n } else {\n return /^-?\\d+\\.?\\d*$/.test(number);\n }\n }\n return format;\n}\n\n//where x is already the integer part of the number\nfunction addIntegerSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is already the decimal part of the number\nfunction addDecimalSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d{3})(\\d+)/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is the integer part of the number\nfunction padLeft(x, padding) {\n x = x + '';\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return buf.join('') + x;\n}\n\n//where x is the decimals part of the number\nfunction padRight(x, padding) {\n if (x) {\n x += '';\n } else {\n x = '';\n }\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return x + buf.join('');\n}\nfunction truncate(x, length) {\n if (x) {\n x += '';\n }\n if (x && x.length > length) {\n return x.substr(0, length);\n } else {\n return x;\n }\n}\n\n//where number is an array with 0th item as integer string and 1st item as decimal string (no negatives)\nfunction round(number, places) {\n if (number[1] && places >= 0 && number[1].length > places) {\n //truncate to correct number of decimal places\n var decim = number[1].slice(0, places);\n //if next digit was >= 5 we need to round up\n if (+(number[1].substr(places, 1)) >= 5) {\n //But first count leading zeros as converting to a number will loose them\n var leadingzeros = \"\";\n while (decim.charAt(0)===\"0\") {\n leadingzeros = leadingzeros + \"0\";\n decim = decim.substr(1);\n }\n //Then we can change decim to a number and add 1 before replacing leading zeros\n decim = (+decim + 1) + '';\n decim = leadingzeros + decim;\n if (decim.length > places) {\n //adding one has made it longer\n number[0] = (+number[0]+ +decim.charAt(0)) + ''; //add value of firstchar to the integer part\n decim = decim.substring(1); //ignore the 1st char at the beginning which is the carry to the integer part\n }\n }\n number[1] = decim;\n }\n return number;\n}\n\n\n/***/ }),\n\n/***/ 447:\n/***/ (function(module, exports) {\n\nmodule.exports = \"/*----------------------------------------------------------------------------\\\\\\r\\n| Sortable Table 1.12 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created by Erik Arvidsson |\\r\\n| (http://webfx.eae.net/contact.html#erik) |\\r\\n| For WebFX (http://webfx.eae.net/) |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not |\\r\\n| use this file except in compliance with the License. You may obtain a copy |\\r\\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\\r\\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\\r\\n| Unless required by applicable law or agreed to in writing, software |\\r\\n| distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT |\\r\\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\\r\\n| License for the specific language governing permissions and limitations |\\r\\n| under the License. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| 2003-01-10 | First version |\\r\\n| 2003-01-19 | Minor changes to the date parsing |\\r\\n| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |\\r\\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\\r\\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\\r\\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\\r\\n| | Using onclick DOM0 event if no support for addEventListener |\\r\\n| | or attachEvent |\\r\\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\\r\\n| | easier to add new, custom sort types. |\\r\\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\\r\\n| | Change defaultDescending to suit your needs. |\\r\\n| 2004-03-14 | Improved sort type None look and feel a bit |\\r\\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\\r\\n| | can use another tHead or no tHead, and you can chose some |\\r\\n| | other tBody. |\\r\\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\\r\\n\\\\----------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\nfunction SortableTable(oTable, oSortTypes) {\\r\\n\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\r\\n\\tthis.sortColumn = null;\\r\\n\\tthis.descending = null;\\r\\n\\r\\n\\tvar oThis = this;\\r\\n\\tthis._headerOnclick = function (e) {\\r\\n\\t\\toThis.headerOnclick(e);\\r\\n\\t};\\r\\n\\r\\n\\tif (oTable) {\\r\\n\\t\\tthis.setTable( oTable );\\r\\n\\t\\tthis.document = oTable.ownerDocument || oTable.document;\\r\\n\\t}\\r\\n\\telse {\\r\\n\\t\\tthis.document = document;\\r\\n\\t}\\r\\n\\r\\n\\r\\n\\t// only IE needs this\\r\\n\\tvar win = this.document.defaultView || this.document.parentWindow;\\r\\n\\tthis._onunload = function () {\\r\\n\\t\\toThis.destroy();\\r\\n\\t};\\r\\n\\tif (win && typeof win.attachEvent != \\\"undefined\\\") {\\r\\n\\t\\twin.attachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n}\\r\\n\\r\\nSortableTable.gecko = navigator.product == \\\"Gecko\\\";\\r\\nSortableTable.msie = /msie/i.test(navigator.userAgent);\\r\\n// Mozilla is faster when doing the DOM manipulations on\\r\\n// an orphaned element. MSIE is not\\r\\nSortableTable.removeBeforeSort = SortableTable.gecko;\\r\\n\\r\\nSortableTable.prototype.onsort = function () {};\\r\\n\\r\\n// default sort order. true -> descending, false -> ascending\\r\\nSortableTable.prototype.defaultDescending = false;\\r\\n\\r\\n// shared between all instances. This is intentional to allow external files\\r\\n// to modify the prototype\\r\\nSortableTable.prototype._sortTypeInfo = {};\\r\\n\\r\\nSortableTable.prototype.setTable = function (oTable) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.element = oTable;\\r\\n\\tthis.setTHead( oTable.tHead );\\r\\n\\tthis.setTBody( oTable.tBodies[0] );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTHead = function (oTHead) {\\r\\n\\tif (this.tHead && this.tHead != oTHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.tHead = oTHead;\\r\\n\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTBody = function (oTBody) {\\r\\n\\tthis.tBody = oTBody;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\n// adds arrow containers and events\\r\\n// also binds sort type to the header cells so that reordering columns does\\r\\n// not break the sort types\\r\\nSortableTable.prototype.initHeader = function (oSortTypes) {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar doc = this.tHead.ownerDocument || this.tHead.document;\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img, c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (this.sortTypes[i] != null && this.sortTypes[i] != \\\"None\\\") {\\r\\n\\t\\t\\timg = doc.createElement(\\\"IMG\\\");\\r\\n\\t\\t\\timg.src = \\\"images/blank.png\\\";\\r\\n\\t\\t\\tc.appendChild(img);\\r\\n\\t\\t\\tif (this.sortTypes[i] != null)\\r\\n\\t\\t\\t\\tc._sortType = this.sortTypes[i];\\r\\n\\t\\t\\tif (typeof c.addEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.addEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.attachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.attachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\tc.onclick = this._headerOnclick;\\r\\n\\t\\t}\\r\\n\\t\\telse\\r\\n\\t\\t{\\r\\n\\t\\t\\tc.setAttribute( \\\"_sortType\\\", oSortTypes[i] );\\r\\n\\t\\t\\tc._sortType = \\\"None\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tthis.updateHeaderArrows();\\r\\n};\\r\\n\\r\\n// remove arrows and events\\r\\nSortableTable.prototype.uninitHeader = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (c._sortType != null && c._sortType != \\\"None\\\") {\\r\\n\\t\\t\\tc.removeChild(c.lastChild);\\r\\n\\t\\t\\tif (typeof c.removeEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.removeEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.detachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.detachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\tc._sortType = null;\\r\\n\\t\\t\\tc.removeAttribute( \\\"_sortType\\\" );\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.updateHeaderArrows = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tif (cells[i]._sortType != null && cells[i]._sortType != \\\"None\\\") {\\r\\n\\t\\t\\timg = cells[i].lastChild;\\r\\n\\t\\t\\tif (i == this.sortColumn)\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow \\\" + (this.descending ? \\\"descending\\\" : \\\"ascending\\\");\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.headerOnclick = function (e) {\\r\\n\\t// find TD element\\r\\n\\tvar el = e.target || e.srcElement;\\r\\n\\twhile (el.tagName != \\\"TD\\\")\\r\\n\\t\\tel = el.parentNode;\\r\\n\\r\\n\\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\\r\\n};\\r\\n\\r\\n// IE returns wrong cellIndex when columns are hidden\\r\\nSortableTable.getCellIndex = function (oTd) {\\r\\n\\tvar cells = oTd.parentNode.childNodes\\r\\n\\tvar l = cells.length;\\r\\n\\tvar i;\\r\\n\\tfor (i = 0; cells[i] != oTd && i < l; i++)\\r\\n\\t\\t;\\r\\n\\treturn i;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getSortType = function (nColumn) {\\r\\n\\treturn this.sortTypes[nColumn] || \\\"String\\\";\\r\\n};\\r\\n\\r\\n// only nColumn is required\\r\\n// if bDescending is left out the old value is taken into account\\r\\n// if sSortType is left out the sort type is found from the sortTypes array\\r\\n\\r\\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\\r\\n\\tif (!this.tBody) return;\\r\\n\\tif (sSortType == null)\\r\\n\\t\\tsSortType = this.getSortType(nColumn);\\r\\n\\r\\n\\t// exit if None\\r\\n\\tif (sSortType == \\\"None\\\")\\r\\n\\t\\treturn;\\r\\n\\r\\n\\tif (bDescending == null) {\\r\\n\\t\\tif (this.sortColumn != nColumn)\\r\\n\\t\\t\\tthis.descending = this.defaultDescending;\\r\\n\\t\\telse\\r\\n\\t\\t\\tthis.descending = !this.descending;\\r\\n\\t}\\r\\n\\telse\\r\\n\\t\\tthis.descending = bDescending;\\r\\n\\r\\n\\tthis.sortColumn = nColumn;\\r\\n\\r\\n\\tif (typeof this.onbeforesort == \\\"function\\\")\\r\\n\\t\\tthis.onbeforesort();\\r\\n\\r\\n\\tvar f = this.getSortFunction(sSortType, nColumn);\\r\\n\\tvar a = this.getCache(sSortType, nColumn);\\r\\n\\tvar tBody = this.tBody;\\r\\n\\r\\n\\ta.sort(f);\\r\\n\\r\\n\\tif (this.descending)\\r\\n\\t\\ta.reverse();\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// remove from doc\\r\\n\\t\\tvar nextSibling = tBody.nextSibling;\\r\\n\\t\\tvar p = tBody.parentNode;\\r\\n\\t\\tp.removeChild(tBody);\\r\\n\\t}\\r\\n\\r\\n\\t// insert in the new order\\r\\n\\tvar l = a.length;\\r\\n\\tfor (var i = 0; i < l; i++)\\r\\n\\t\\ttBody.appendChild(a[i].element);\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// insert into doc\\r\\n\\t\\tp.insertBefore(tBody, nextSibling);\\r\\n\\t}\\r\\n\\r\\n\\tthis.updateHeaderArrows();\\r\\n\\r\\n\\tthis.destroyCache(a);\\r\\n\\r\\n\\tif (typeof this.onsort == \\\"function\\\")\\r\\n\\t\\tthis.onsort();\\r\\n};\\r\\n\\r\\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\\r\\n\\tvar oThis = this;\\r\\n\\tthis._asyncsort = function () {\\r\\n\\t\\toThis.sort(nColumn, bDescending, sSortType);\\r\\n\\t};\\r\\n\\twindow.setTimeout(this._asyncsort, 1);\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getCache = function (sType, nColumn) {\\r\\n\\tif (!this.tBody) return [];\\r\\n\\tvar rows = this.tBody.rows;\\r\\n\\tvar l = rows.length;\\r\\n\\tvar a = new Array(l);\\r\\n\\tvar r;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tr = rows[i];\\r\\n\\t\\ta[i] = {\\r\\n\\t\\t\\tvalue:\\t\\tthis.getRowValue(r, sType, nColumn),\\r\\n\\t\\t\\telement:\\tr\\r\\n\\t\\t};\\r\\n\\t};\\r\\n\\treturn a;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroyCache = function (oArray) {\\r\\n\\tvar l = oArray.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\toArray[i].value = null;\\r\\n\\t\\toArray[i].element = null;\\r\\n\\t\\toArray[i] = null;\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\\r\\n\\t// if we have defined a custom getRowValue use that\\r\\n\\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\\r\\n\\t\\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\\r\\n\\r\\n\\tvar s;\\r\\n\\tvar c = oRow.cells[nColumn];\\r\\n\\tif (typeof c.innerText != \\\"undefined\\\")\\r\\n\\t\\ts = c.innerText;\\r\\n\\telse\\r\\n\\t\\ts = SortableTable.getInnerText(c);\\r\\n\\treturn this.getValueFromString(s, sType);\\r\\n};\\r\\n\\r\\nSortableTable.getInnerText = function (oNode) {\\r\\n\\tvar s = \\\"\\\";\\r\\n\\tvar cs = oNode.childNodes;\\r\\n\\tvar l = cs.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tswitch (cs[i].nodeType) {\\r\\n\\t\\t\\tcase 1: //ELEMENT_NODE\\r\\n\\t\\t\\t\\ts += SortableTable.getInnerText(cs[i]);\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase 3:\\t//TEXT_NODE\\r\\n\\t\\t\\t\\ts += cs[i].nodeValue;\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\treturn s;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getValueFromString = function (sText, sType) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].getValueFromString( sText );\\r\\n\\treturn sText;\\r\\n\\t/*\\r\\n\\tswitch (sType) {\\r\\n\\t\\tcase \\\"Number\\\":\\r\\n\\t\\t\\treturn Number(sText);\\r\\n\\t\\tcase \\\"CaseInsensitiveString\\\":\\r\\n\\t\\t\\treturn sText.toUpperCase();\\r\\n\\t\\tcase \\\"Date\\\":\\r\\n\\t\\t\\tvar parts = sText.split(\\\"-\\\");\\r\\n\\t\\t\\tvar d = new Date(0);\\r\\n\\t\\t\\td.setFullYear(parts[0]);\\r\\n\\t\\t\\td.setDate(parts[2]);\\r\\n\\t\\t\\td.setMonth(parts[1] - 1);\\r\\n\\t\\t\\treturn d.valueOf();\\r\\n\\t}\\r\\n\\treturn sText;\\r\\n\\t*/\\r\\n\\t};\\r\\n\\r\\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].compare;\\r\\n\\treturn SortableTable.basicCompare;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroy = function () {\\r\\n\\tthis.uninitHeader();\\r\\n\\tvar win = this.document.parentWindow;\\r\\n\\tif (win && typeof win.detachEvent != \\\"undefined\\\") {\\t// only IE needs this\\r\\n\\t\\twin.detachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n\\tthis._onunload = null;\\r\\n\\tthis.element = null;\\r\\n\\tthis.tHead = null;\\r\\n\\tthis.tBody = null;\\r\\n\\tthis.document = null;\\r\\n\\tthis._headerOnclick = null;\\r\\n\\tthis.sortTypes = null;\\r\\n\\tthis._asyncsort = null;\\r\\n\\tthis.onsort = null;\\r\\n};\\r\\n\\r\\n// Adds a sort type to all instance of SortableTable\\r\\n// sType : String - the identifier of the sort type\\r\\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\\r\\n// string and casts it to a desired format. If left out the string is just\\r\\n// returned\\r\\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\\r\\n// compare function. Takes two values and compares them. If left out less than,\\r\\n// <, compare is used\\r\\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\\r\\n// that takes the row and the column index and returns the value used to compare.\\r\\n// If left out then the innerText is first taken for the cell and then the\\r\\n// fGetValueFromString is used to convert that string the desired value and type\\r\\n\\r\\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\\r\\n\\tthis._sortTypeInfo[sType] = {\\r\\n\\t\\ttype:\\t\\t\\t\\tsType,\\r\\n\\t\\tgetValueFromString:\\tfGetValueFromString || SortableTable.idFunction,\\r\\n\\t\\tcompare:\\t\\t\\tfCompareFunction || SortableTable.basicCompare,\\r\\n\\t\\tgetRowValue:\\t\\tfGetRowValue\\r\\n\\t};\\r\\n};\\r\\n\\r\\n// this removes the sort type from all instances of SortableTable\\r\\nSortableTable.prototype.removeSortType = function (sType) {\\r\\n\\tdelete this._sortTypeInfo[sType];\\r\\n};\\r\\n\\r\\nSortableTable.basicCompare = function compare(n1, n2) {\\r\\n\\tif (n1.value < n2.value)\\r\\n\\t\\treturn -1;\\r\\n\\tif (n2.value < n1.value)\\r\\n\\t\\treturn 1;\\r\\n\\treturn 0;\\r\\n};\\r\\n\\r\\nSortableTable.idFunction = function (x) {\\r\\n\\treturn x;\\r\\n};\\r\\n\\r\\nSortableTable.toUpperCase = function (s) {\\r\\n\\treturn s.toUpperCase();\\r\\n};\\r\\n\\r\\nSortableTable.toDate = function (s) {\\r\\n\\tvar parts = s.split(\\\"-\\\");\\r\\n\\tvar d = new Date(0);\\r\\n\\td.setFullYear(parts[0]);\\r\\n\\td.setDate(parts[2]);\\r\\n\\td.setMonth(parts[1] - 1);\\r\\n\\treturn d.valueOf();\\r\\n};\\r\\n\\r\\n\\r\\n// add sort types\\r\\nSortableTable.prototype.addSortType(\\\"Number\\\", Number);\\r\\nSortableTable.prototype.addSortType(\\\"CaseInsensitiveString\\\", SortableTable.toUpperCase);\\r\\nSortableTable.prototype.addSortType(\\\"Date\\\", SortableTable.toDate);\\r\\nSortableTable.prototype.addSortType(\\\"String\\\");\\r\\n// None is a special case\\r\\n\"\n\n/***/ }),\n\n/***/ 448:\n/***/ (function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript !== \"undefined\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\r\n\n\n/***/ }),\n\n/***/ 449:\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(448)(__webpack_require__(447))\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// tf-0-d88702b82ce1d192a674.js","var map = {\n\t\"./array\": 67,\n\t\"./array.js\": 67,\n\t\"./const\": 14,\n\t\"./const.js\": 14,\n\t\"./cookie\": 109,\n\t\"./cookie.js\": 109,\n\t\"./dom\": 9,\n\t\"./dom.js\": 9,\n\t\"./emitter\": 69,\n\t\"./emitter.js\": 69,\n\t\"./event\": 17,\n\t\"./event.js\": 17,\n\t\"./extensions/advancedGrid/adapterEzEditTable\": 439,\n\t\"./extensions/advancedGrid/adapterEzEditTable.js\": 439,\n\t\"./extensions/advancedGrid/advancedGrid\": 441,\n\t\"./extensions/advancedGrid/advancedGrid.js\": 441,\n\t\"./extensions/colOps/colOps\": 442,\n\t\"./extensions/colOps/colOps.js\": 442,\n\t\"./extensions/colsVisibility/colsVisibility\": 443,\n\t\"./extensions/colsVisibility/colsVisibility.js\": 443,\n\t\"./extensions/filtersVisibility/filtersVisibility\": 444,\n\t\"./extensions/filtersVisibility/filtersVisibility.js\": 444,\n\t\"./extensions/sort/adapterSortabletable\": 440,\n\t\"./extensions/sort/adapterSortabletable.js\": 440,\n\t\"./extensions/sort/sort\": 445,\n\t\"./extensions/sort/sort.js\": 445,\n\t\"./feature\": 11,\n\t\"./feature.js\": 11,\n\t\"./modules/alternateRows\": 110,\n\t\"./modules/alternateRows.js\": 110,\n\t\"./modules/baseDropdown\": 68,\n\t\"./modules/baseDropdown.js\": 68,\n\t\"./modules/checkList\": 70,\n\t\"./modules/checkList.js\": 70,\n\t\"./modules/clearButton\": 111,\n\t\"./modules/clearButton.js\": 111,\n\t\"./modules/dateType\": 112,\n\t\"./modules/dateType.js\": 112,\n\t\"./modules/dropdown\": 71,\n\t\"./modules/dropdown.js\": 71,\n\t\"./modules/gridLayout\": 113,\n\t\"./modules/gridLayout.js\": 113,\n\t\"./modules/hash\": 114,\n\t\"./modules/hash.js\": 114,\n\t\"./modules/help\": 115,\n\t\"./modules/help.js\": 115,\n\t\"./modules/highlightKeywords\": 116,\n\t\"./modules/highlightKeywords.js\": 116,\n\t\"./modules/loader\": 117,\n\t\"./modules/loader.js\": 117,\n\t\"./modules/markActiveColumns\": 118,\n\t\"./modules/markActiveColumns.js\": 118,\n\t\"./modules/noResults\": 119,\n\t\"./modules/noResults.js\": 119,\n\t\"./modules/paging\": 120,\n\t\"./modules/paging.js\": 120,\n\t\"./modules/popupFilter\": 121,\n\t\"./modules/popupFilter.js\": 121,\n\t\"./modules/rowsCounter\": 122,\n\t\"./modules/rowsCounter.js\": 122,\n\t\"./modules/state\": 123,\n\t\"./modules/state.js\": 123,\n\t\"./modules/statusBar\": 124,\n\t\"./modules/statusBar.js\": 124,\n\t\"./modules/storage\": 125,\n\t\"./modules/storage.js\": 125,\n\t\"./number\": 52,\n\t\"./number.js\": 52,\n\t\"./root\": 15,\n\t\"./root.js\": 15,\n\t\"./sort\": 108,\n\t\"./sort.js\": 108,\n\t\"./string\": 19,\n\t\"./string.js\": 19,\n\t\"./tablefilter\": 126,\n\t\"./tablefilter.js\": 126,\n\t\"./types\": 6,\n\t\"./types.js\": 6\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 438;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src ^\\.\\/.*$\n// module id = 438\n// module chunks = 0","import {Feature} from '../../feature';\r\nimport {tag} from '../../dom';\r\nimport {INPUT} from '../../const';\r\nimport {root} from '../../root';\r\n\r\nconst INSTANTIATION_ERROR = `Failed to instantiate EditTable object.\r\n \\n\"ezEditTable\" dependency not found.`;\r\n\r\n/**\r\n * Adapter module for ezEditTable, an external library providing advanced\r\n * grid features (selection and edition):\r\n * http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus\r\n */\r\nexport default class AdapterEzEditTable extends Feature {\r\n\r\n /**\r\n * Creates an instance of AdapterEzEditTable\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} cfg Configuration options for ezEditTable library\r\n */\r\n constructor(tf, cfg) {\r\n super(tf, cfg.name);\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = cfg.description || 'ezEditTable adapter';\r\n\r\n /**\r\n * Filename of ezEditTable library\r\n * @type {String}\r\n */\r\n this.filename = cfg.filename || 'ezEditTable.js';\r\n\r\n /**\r\n * Path to ezEditTable library\r\n * @type {String}\r\n */\r\n this.vendorPath = cfg.vendor_path;\r\n\r\n /**\r\n * Load ezEditTable stylesheet\r\n * @type {Boolean}\r\n */\r\n this.loadStylesheet = Boolean(cfg.load_stylesheet);\r\n\r\n /**\r\n * Path to ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheet = cfg.stylesheet || this.vendorPath + 'ezEditTable.css';\r\n\r\n /**\r\n * Name of ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheetName = cfg.stylesheet_name || 'ezEditTableCss';\r\n\r\n // Enable the ezEditTable's scroll into view behaviour if grid layout on\r\n cfg.scroll_into_view = cfg.scroll_into_view === false ?\r\n false : tf.gridLayout;\r\n\r\n /**\r\n * ezEditTable instance\r\n * @type {EditTable}\r\n * @private\r\n */\r\n this._ezEditTable = null;\r\n\r\n /**\r\n * ezEditTable configuration\r\n * @private\r\n */\r\n this.cfg = cfg;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Conditionally load ezEditTable library and set advanced grid\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (root.EditTable) {\r\n this._setAdvancedGrid();\r\n } else {\r\n let path = this.vendorPath + this.filename;\r\n tf.import(this.filename, path, () => this._setAdvancedGrid());\r\n }\r\n if (this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')) {\r\n tf.import(this.stylesheetName, this.stylesheet, null, 'link');\r\n }\r\n\r\n // TODO: hack to prevent ezEditTable enter key event hijaking.\r\n // Needs to be fixed in the vendor's library\r\n this.emitter.on(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Instantiate ezEditTable component for advanced grid features\r\n * @private\r\n */\r\n _setAdvancedGrid() {\r\n let tf = this.tf;\r\n\r\n //start row for EditTable constructor needs to be calculated\r\n let startRow,\r\n cfg = this.cfg,\r\n thead = tag(tf.dom(), 'thead');\r\n\r\n //if thead exists and startRow not specified, startRow is calculated\r\n //automatically by EditTable\r\n if (thead.length > 0 && !cfg.startRow) {\r\n startRow = undefined;\r\n }\r\n //otherwise startRow config property if any or TableFilter refRow\r\n else {\r\n startRow = cfg.startRow || tf.refRow;\r\n }\r\n\r\n cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/';\r\n let editable = cfg.editable;\r\n let selectable = cfg.selection;\r\n\r\n if (selectable) {\r\n cfg.default_selection = cfg.default_selection || 'row';\r\n }\r\n //CSS Styles\r\n cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell';\r\n\r\n let _lastValidRowIndex = 0;\r\n let _lastRowIndex = 0;\r\n\r\n if (selectable) {\r\n //Row navigation needs to be calculated according to TableFilter's\r\n //validRowsIndex array\r\n let onAfterSelection = function (et, selectedElm, e) {\r\n let slc = et.Selection;\r\n //Next valid filtered row needs to be selected\r\n let doSelect = function (nextRowIndex) {\r\n if (et.defaultSelection === 'row') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n et.ClearSelections();\r\n /* eslint-enable */\r\n let cellIndex = selectedElm.cellIndex,\r\n row = tf.dom().rows[nextRowIndex];\r\n if (et.defaultSelection === 'both') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n }\r\n if (row) {\r\n /* eslint-disable */\r\n slc.SelectCell(row.cells[cellIndex]);\r\n /* eslint-enable */\r\n }\r\n }\r\n //Table is filtered\r\n if (tf.validRowsIndex.length !== tf.getRowsNb()) {\r\n let r = tf.dom().rows[nextRowIndex];\r\n if (r) {\r\n r.scrollIntoView(false);\r\n }\r\n if (cell) {\r\n if (cell.cellIndex === (tf.getCellsNb() - 1) &&\r\n tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 100000000;\r\n }\r\n else if (cell.cellIndex === 0 && tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 0;\r\n } else {\r\n cell.scrollIntoView(false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //table is not filtered\r\n if (!tf.validRowsIndex) {\r\n return;\r\n }\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm,\r\n //cell for default_selection = 'both' or 'cell'\r\n cell = selectedElm.nodeName === 'TD' ? selectedElm : null,\r\n /* eslint-disable */\r\n keyCode = e !== undefined ? et.Event.GetKey(e) : 0,\r\n /* eslint-enable */\r\n isRowValid = validIndexes.indexOf(row.rowIndex) !== -1,\r\n nextRowIndex,\r\n paging = tf.feature('paging'),\r\n //pgup/pgdown keys\r\n d = keyCode === 34 || keyCode === 33 ?\r\n (paging && paging.pageLength || et.nbRowsPerPage) :\r\n 1;\r\n\r\n //If next row is not valid, next valid filtered row needs to be\r\n //calculated\r\n if (!isRowValid) {\r\n //Selection direction up/down\r\n if (row.rowIndex > _lastRowIndex) {\r\n //last row\r\n if (row.rowIndex >= validIndexes[validIdxLen - 1]) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n let calcRowIndex = (_lastValidRowIndex + d);\r\n if (calcRowIndex > (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n nextRowIndex = validIndexes[calcRowIndex];\r\n }\r\n }\r\n } else {\r\n //first row\r\n if (row.rowIndex <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n let v = validIndexes[_lastValidRowIndex - d];\r\n nextRowIndex = v ? v : validIndexes[0];\r\n }\r\n }\r\n _lastRowIndex = row.rowIndex;\r\n doSelect(nextRowIndex);\r\n } else {\r\n //If filtered row is valid, special calculation for\r\n //pgup/pgdown keys\r\n if (keyCode !== 34 && keyCode !== 33) {\r\n _lastValidRowIndex = validIndexes.indexOf(row.rowIndex);\r\n _lastRowIndex = row.rowIndex;\r\n } else {\r\n if (keyCode === 34) { //pgdown\r\n //last row\r\n if ((_lastValidRowIndex + d) <= (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex + d];\r\n } else {\r\n nextRowIndex = [validIdxLen - 1];\r\n }\r\n } else { //pgup\r\n //first row\r\n if ((_lastValidRowIndex - d) <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex - d];\r\n }\r\n }\r\n _lastRowIndex = nextRowIndex;\r\n _lastValidRowIndex = validIndexes.indexOf(nextRowIndex);\r\n doSelect(nextRowIndex);\r\n }\r\n }\r\n };\r\n\r\n //Page navigation has to be enforced whenever selected row is out of\r\n //the current page range\r\n let onBeforeSelection = function (et, selectedElm) {\r\n let row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm;\r\n if (tf.paging) {\r\n if (tf.feature('paging').nbPages > 1) {\r\n let paging = tf.feature('paging');\r\n //page length is re-assigned in case it has changed\r\n et.nbRowsPerPage = paging.pageLength;\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n pagingEndRow = parseInt(paging.startPagingRow, 10) +\r\n parseInt(paging.pageLength, 10);\r\n let rowIndex = row.rowIndex;\r\n\r\n if ((rowIndex === validIndexes[validIdxLen - 1]) &&\r\n paging.currentPageNb !== paging.nbPages) {\r\n paging.setPage('last');\r\n }\r\n else if ((rowIndex === validIndexes[0]) &&\r\n paging.currentPageNb !== 1) {\r\n paging.setPage('first');\r\n }\r\n else if (rowIndex > validIndexes[pagingEndRow - 1] &&\r\n rowIndex < validIndexes[validIdxLen - 1]) {\r\n paging.setPage('next');\r\n }\r\n else if (\r\n rowIndex < validIndexes[paging.startPagingRow] &&\r\n rowIndex > validIndexes[0]) {\r\n paging.setPage('previous');\r\n }\r\n }\r\n }\r\n };\r\n\r\n //Selected row needs to be visible when paging is activated\r\n if (tf.paging) {\r\n tf.feature('paging').onAfterChangePage = function (paging) {\r\n let advGrid = paging.tf.extension('advancedGrid');\r\n let et = advGrid._ezEditTable;\r\n let slc = et.Selection;\r\n /* eslint-disable */\r\n let row = slc.GetActiveRow();\r\n /* eslint-enable */\r\n if (row) {\r\n row.scrollIntoView(false);\r\n }\r\n /* eslint-disable */\r\n let cell = slc.GetActiveCell();\r\n /* eslint-enable */\r\n if (cell) {\r\n cell.scrollIntoView(false);\r\n }\r\n };\r\n }\r\n\r\n //Rows navigation when rows are filtered is performed with the\r\n //EditTable row selection callback events\r\n if (cfg.default_selection === 'row') {\r\n let fnB = cfg.on_before_selected_row;\r\n cfg.on_before_selected_row = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnB) {\r\n fnB.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnA = cfg.on_after_selected_row;\r\n cfg.on_after_selected_row = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnA) {\r\n fnA.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n } else {\r\n let fnD = cfg.on_before_selected_cell;\r\n cfg.on_before_selected_cell = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnD) {\r\n fnD.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnC = cfg.on_after_selected_cell;\r\n cfg.on_after_selected_cell = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnC) {\r\n fnC.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n }\r\n }\r\n if (editable) {\r\n //Added or removed rows, TF rows number needs to be re-calculated\r\n let fnE = cfg.on_added_dom_row;\r\n cfg.on_added_dom_row = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows++;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows++;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset();\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnE) {\r\n fnE.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n if (cfg.actions && cfg.actions['delete']) {\r\n let fnF = cfg.actions['delete'].on_after_submit;\r\n cfg.actions['delete'].on_after_submit = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows--;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows--;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset(false);\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnF) {\r\n fnF.call(null, args[0], args[1]);\r\n }\r\n };\r\n }\r\n }\r\n\r\n try {\r\n /* eslint-disable */\r\n this._ezEditTable = new EditTable(tf.id, cfg, startRow);\r\n this._ezEditTable.Init();\r\n /* eslint-enable */\r\n } catch (e) { throw new Error(INSTANTIATION_ERROR); }\r\n\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset advanced grid when previously removed\r\n */\r\n reset() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle behaviour\r\n */\r\n toggle() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n if (ezEditTable.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n _toggleForInputFilter() {\r\n let tf = this.tf;\r\n if (!tf.getActiveFilterId()) {\r\n return;\r\n }\r\n let colIndex = tf.getColumnIndexFromFilterId(tf.getActiveFilterId());\r\n let filterType = tf.getFilterType(colIndex);\r\n if (filterType === INPUT) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Remove advanced grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.ClearSelections();\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n this.emitter.off(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n this.initialized = false;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/advancedGrid/adapterEzEditTable.js","import {Feature} from '../../feature';\r\nimport {isArray, isFn, isUndef, isObj, EMPTY_FN} from '../../types';\r\nimport {createElm, elm, getText, tag} from '../../dom';\r\nimport {addEvt} from '../../event';\r\nimport {parse as parseNb} from '../../number';\r\nimport {\r\n NONE, CELL_TAG, HEADER_TAG, STRING, NUMBER, DATE, FORMATTED_NUMBER,\r\n IP_ADDRESS\r\n} from '../../const';\r\n\r\n/**\r\n * SortableTable Adapter module\r\n */\r\nexport default class AdapterSortableTable extends Feature {\r\n\r\n /**\r\n * Creates an instance of AdapterSortableTable\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\r\n constructor(tf, opts) {\r\n super(tf, opts.name);\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = opts.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = opts.description || 'Sortable table';\r\n\r\n /**\r\n * Indicate whether table previously sorted\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.sorted = false;\r\n\r\n /**\r\n * List of sort type per column basis\r\n * @type {Array}\r\n */\r\n this.sortTypes = isArray(opts.types) ? opts.types : tf.colTypes;\r\n\r\n /**\r\n * Column to be sorted at initialization, ie:\r\n * sort_col_at_start: [1, true]\r\n * @type {Array}\r\n */\r\n this.sortColAtStart = isArray(opts.sort_col_at_start) ?\r\n opts.sort_col_at_start : null;\r\n\r\n /**\r\n * Enable asynchronous sort, if triggers are external\r\n * @type {Boolean}\r\n */\r\n this.asyncSort = Boolean(opts.async_sort);\r\n\r\n /**\r\n * List of element IDs triggering sort on a per column basis\r\n * @type {Array}\r\n */\r\n this.triggerIds = isArray(opts.trigger_ids) ? opts.trigger_ids : [];\r\n\r\n // edit .sort-arrow.descending / .sort-arrow.ascending in\r\n // tablefilter.css to reflect any path change\r\n /**\r\n * Path to images\r\n * @type {String}\r\n */\r\n this.imgPath = opts.images_path || tf.themesPath;\r\n\r\n /**\r\n * Blank image file name\r\n * @type {String}\r\n */\r\n this.imgBlank = opts.image_blank || 'blank.png';\r\n\r\n /**\r\n * Css class for sort indicator image\r\n * @type {String}\r\n */\r\n this.imgClassName = opts.image_class_name || 'sort-arrow';\r\n\r\n /**\r\n * Css class for ascending sort indicator image\r\n * @type {String}\r\n */\r\n this.imgAscClassName = opts.image_asc_class_name || 'ascending';\r\n\r\n /**\r\n * Css class for descending sort indicator image\r\n * @type {String}\r\n */\r\n this.imgDescClassName = opts.image_desc_class_name || 'descending';\r\n\r\n /**\r\n * Cell attribute key storing custom value used for sorting\r\n * @type {String}\r\n */\r\n this.customKey = opts.custom_key || 'data-tf-sortKey';\r\n\r\n /**\r\n * Callback fired when sort extension is instanciated\r\n * @type {Function}\r\n */\r\n this.onSortLoaded = isFn(opts.on_sort_loaded) ?\r\n opts.on_sort_loaded : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before a table column is sorted\r\n * @type {Function}\r\n */\r\n this.onBeforeSort = isFn(opts.on_before_sort) ?\r\n opts.on_before_sort : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a table column is sorted\r\n * @type {Function}\r\n */\r\n this.onAfterSort = isFn(opts.on_after_sort) ?\r\n opts.on_after_sort : EMPTY_FN;\r\n\r\n /**\r\n * SortableTable instance\r\n * @private\r\n */\r\n this.stt = null;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initializes AdapterSortableTable instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let adpt = this;\r\n\r\n // SortableTable class sanity check (sortabletable.js)\r\n if (isUndef(SortableTable)) {\r\n throw new Error('SortableTable class not found.');\r\n }\r\n\r\n // Add any date format if needed\r\n this.emitter.emit('add-date-type-formats', this.tf, this.sortTypes);\r\n\r\n this.overrideSortableTable();\r\n this.setSortTypes();\r\n\r\n this.onSortLoaded(tf, this);\r\n\r\n /*** SortableTable callbacks ***/\r\n this.stt.onbeforesort = function () {\r\n adpt.onBeforeSort(tf, adpt.stt.sortColumn);\r\n\r\n /*** sort behaviour for paging ***/\r\n if (tf.paging) {\r\n tf.feature('paging').disable();\r\n }\r\n };\r\n\r\n this.stt.onsort = function () {\r\n adpt.sorted = true;\r\n\r\n //sort behaviour for paging\r\n if (tf.paging) {\r\n let paginator = tf.feature('paging');\r\n // recalculate valid rows index as sorting may have change it\r\n tf.getValidRows(true);\r\n paginator.enable();\r\n paginator.setPage(paginator.getPage());\r\n }\r\n\r\n adpt.onAfterSort(tf, adpt.stt.sortColumn, adpt.stt.descending);\r\n adpt.emitter.emit('column-sorted', tf, adpt.stt.sortColumn,\r\n adpt.stt.descending);\r\n };\r\n\r\n // Column sort at start\r\n let sortColAtStart = adpt.sortColAtStart;\r\n if (sortColAtStart) {\r\n this.stt.sort(sortColAtStart[0], sortColAtStart[1]);\r\n }\r\n\r\n this.emitter.on(['sort'],\r\n (tf, colIdx, desc) => this.sortByColumnIndex(colIdx, desc));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('sort-initialized', tf, this);\r\n }\r\n\r\n /**\r\n * Sort specified column\r\n * @param {Number} colIdx Column index\r\n * @param {Boolean} desc Optional: descending manner\r\n */\r\n sortByColumnIndex(colIdx, desc) {\r\n this.stt.sort(colIdx, desc);\r\n }\r\n\r\n /**\r\n * Set SortableTable overrides for TableFilter integration\r\n */\r\n overrideSortableTable() {\r\n let adpt = this,\r\n tf = this.tf;\r\n\r\n /**\r\n * Overrides headerOnclick method in order to handle th event\r\n * @param {Object} e [description]\r\n */\r\n SortableTable.prototype.headerOnclick = function (evt) {\r\n if (!adpt.initialized) {\r\n return;\r\n }\r\n\r\n // find Header element\r\n let el = evt.target || evt.srcElement;\r\n\r\n while (el.tagName !== CELL_TAG && el.tagName !== HEADER_TAG) {\r\n el = el.parentNode;\r\n }\r\n\r\n this.sort(\r\n SortableTable.msie ?\r\n SortableTable.getCellIndex(el) : el.cellIndex\r\n );\r\n };\r\n\r\n /**\r\n * Overrides getCellIndex IE returns wrong cellIndex when columns are\r\n * hidden\r\n * @param {Object} oTd TD element\r\n * @return {Number} Cell index\r\n */\r\n SortableTable.getCellIndex = function (oTd) {\r\n let cells = oTd.parentNode.cells,\r\n l = cells.length, i;\r\n for (i = 0; cells[i] !== oTd && i < l; i++) { }\r\n return i;\r\n };\r\n\r\n /**\r\n * Overrides initHeader in order to handle filters row position\r\n * @param {Array} oSortTypes\r\n */\r\n SortableTable.prototype.initHeader = function (oSortTypes) {\r\n let stt = this;\r\n if (!stt.tHead) {\r\n if (tf.gridLayout) {\r\n stt.tHead = tf.feature('gridLayout').headTbl.tHead;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n stt.headersRow = tf.headersRow;\r\n let cells = stt.tHead.rows[stt.headersRow].cells;\r\n stt.sortTypes = oSortTypes || [];\r\n let l = cells.length;\r\n let img, c;\r\n\r\n for (let i = 0; i < l; i++) {\r\n c = cells[i];\r\n if (stt.sortTypes[i] !== null && stt.sortTypes[i] !== 'None') {\r\n c.style.cursor = 'pointer';\r\n img = createElm('img',\r\n ['src', adpt.imgPath + adpt.imgBlank]);\r\n c.appendChild(img);\r\n if (stt.sortTypes[i] !== null) {\r\n c.setAttribute('_sortType', stt.sortTypes[i]);\r\n }\r\n addEvt(c, 'click', stt._headerOnclick);\r\n } else {\r\n c.setAttribute('_sortType', oSortTypes[i]);\r\n c._sortType = 'None';\r\n }\r\n }\r\n stt.updateHeaderArrows();\r\n };\r\n\r\n /**\r\n * Overrides updateHeaderArrows in order to handle arrows indicators\r\n */\r\n SortableTable.prototype.updateHeaderArrows = function () {\r\n let stt = this;\r\n let cells, l, img;\r\n\r\n // external headers\r\n if (adpt.asyncSort && adpt.triggerIds.length > 0) {\r\n let triggers = adpt.triggerIds;\r\n cells = [];\r\n l = triggers.length;\r\n for (let j = 0; j < l; j++) {\r\n cells.push(elm(triggers[j]));\r\n }\r\n } else {\r\n if (!this.tHead) {\r\n return;\r\n }\r\n cells = stt.tHead.rows[stt.headersRow].cells;\r\n l = cells.length;\r\n }\r\n for (let i = 0; i < l; i++) {\r\n let cell = cells[i];\r\n if (!cell) {\r\n continue;\r\n }\r\n let cellAttr = cell.getAttribute('_sortType');\r\n if (cellAttr !== null && cellAttr !== 'None') {\r\n img = cell.lastChild || cell;\r\n if (img.nodeName.toLowerCase() !== 'img') {\r\n img = createElm('img',\r\n ['src', adpt.imgPath + adpt.imgBlank]);\r\n cell.appendChild(img);\r\n }\r\n if (i === stt.sortColumn) {\r\n img.className = adpt.imgClassName + ' ' +\r\n (this.descending ?\r\n adpt.imgDescClassName :\r\n adpt.imgAscClassName);\r\n } else {\r\n img.className = adpt.imgClassName;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Overrides getRowValue for custom key value feature\r\n * @param {Object} oRow Row element\r\n * @param {String} sType\r\n * @param {Number} nColumn\r\n * @return {String}\r\n */\r\n SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n let stt = this;\r\n // if we have defined a custom getRowValue use that\r\n let sortTypeInfo = stt._sortTypeInfo[sType];\r\n if (sortTypeInfo && sortTypeInfo.getRowValue) {\r\n return sortTypeInfo.getRowValue(oRow, nColumn);\r\n }\r\n let c = oRow.cells[nColumn];\r\n let s = SortableTable.getInnerText(c);\r\n return stt.getValueFromString(s, sType);\r\n };\r\n\r\n /**\r\n * Overrides getInnerText in order to avoid Firefox unexpected sorting\r\n * behaviour with untrimmed text elements\r\n * @param {Object} oNode DOM element\r\n * @return {String} DOM element inner text\r\n */\r\n SortableTable.getInnerText = function (oNode) {\r\n if (!oNode) {\r\n return;\r\n }\r\n if (oNode.getAttribute(adpt.customKey)) {\r\n return oNode.getAttribute(adpt.customKey);\r\n } else {\r\n return getText(oNode);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Adds a sort type\r\n */\r\n addSortType(...args) {\r\n // Extract the arguments\r\n let [id, caster, sorter] = args;\r\n SortableTable.prototype.addSortType(id, caster, sorter);\r\n }\r\n\r\n /**\r\n * Sets the sort types on a column basis\r\n * @private\r\n */\r\n setSortTypes() {\r\n let tf = this.tf,\r\n sortTypes = this.sortTypes,\r\n _sortTypes = [];\r\n\r\n for (let i = 0; i < tf.nbCells; i++) {\r\n let colType;\r\n if (sortTypes[i]) {\r\n colType = sortTypes[i];\r\n if (isObj(colType)) {\r\n if (colType.type === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType.type === FORMATTED_NUMBER) {\r\n let decimal = colType.decimal || tf.decimalSeparator;\r\n colType = this._addNumberType(i, decimal);\r\n }\r\n } else {\r\n colType = colType.toLowerCase();\r\n if (colType === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType === FORMATTED_NUMBER ||\r\n colType === NUMBER) {\r\n colType = this._addNumberType(i, tf.decimalSeparator);\r\n }\r\n else if (colType === NONE) {\r\n // TODO: normalise 'none' vs 'None'\r\n colType = 'None';\r\n }\r\n }\r\n } else {\r\n colType = STRING;\r\n }\r\n _sortTypes.push(colType);\r\n }\r\n\r\n //Public TF method to add sort type\r\n\r\n //Custom sort types\r\n this.addSortType('caseinsensitivestring', SortableTable.toUpperCase);\r\n this.addSortType(STRING);\r\n this.addSortType(IP_ADDRESS, ipAddress, sortIP);\r\n\r\n this.stt = new SortableTable(tf.dom(), _sortTypes);\r\n\r\n /*** external table headers adapter ***/\r\n if (this.asyncSort && this.triggerIds.length > 0) {\r\n let triggers = this.triggerIds;\r\n for (let j = 0; j < triggers.length; j++) {\r\n if (triggers[j] === null) {\r\n continue;\r\n }\r\n let trigger = elm(triggers[j]);\r\n if (trigger) {\r\n trigger.style.cursor = 'pointer';\r\n\r\n addEvt(trigger, 'click', (evt) => {\r\n let elm = evt.target;\r\n if (!this.tf.sort) {\r\n return;\r\n }\r\n this.stt.asyncSort(triggers.indexOf(elm.id));\r\n });\r\n trigger.setAttribute('_sortType', _sortTypes[j]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n _addDateType(colIndex, types) {\r\n let tf = this.tf;\r\n let dateType = tf.feature('dateType');\r\n let locale = dateType.getOptions(colIndex, types).locale || tf.locale;\r\n let colType = `${DATE}-${locale}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n let parsedDate = dateType.parse(value, locale);\r\n // Invalid date defaults to Wed Feb 04 -768 11:00:00\r\n return isNaN(+parsedDate) ? new Date(-86400000000000) : parsedDate;\r\n });\r\n return colType;\r\n }\r\n\r\n _addNumberType(colIndex, decimal) {\r\n let colType = `${FORMATTED_NUMBER}${decimal === '.' ? '' : '-custom'}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n return parseNb(value, decimal);\r\n });\r\n return colType;\r\n }\r\n\r\n /**\r\n * Remove extension\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n this.emitter.off(['sort'],\r\n (tf, colIdx, desc) => this.sortByColumnIndex(colIdx, desc));\r\n this.sorted = false;\r\n this.stt.destroy();\r\n\r\n let ids = tf.getFiltersId();\r\n for (let idx = 0; idx < ids.length; idx++) {\r\n let header = tf.getHeaderElement(idx);\r\n let img = tag(header, 'img');\r\n\r\n if (img.length === 1) {\r\n header.removeChild(img[0]);\r\n }\r\n }\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n//Converters\r\nfunction ipAddress(value) {\r\n let vals = value.split('.');\r\n for (let x in vals) {\r\n let val = vals[x];\r\n while (3 > val.length) {\r\n val = '0' + val;\r\n }\r\n vals[x] = val;\r\n }\r\n return vals.join('.');\r\n}\r\n\r\nfunction sortIP(a, b) {\r\n let aa = ipAddress(a.value.toLowerCase());\r\n let bb = ipAddress(b.value.toLowerCase());\r\n if (aa === bb) {\r\n return 0;\r\n } else if (aa < bb) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/sort/adapterSortabletable.js","import AdapterEzEditTable from './adapterEzEditTable';\r\n\r\nexport default AdapterEzEditTable;\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/advancedGrid/advancedGrid.js","import {Feature} from '../../feature';\r\nimport {createText, elm} from '../../dom';\r\nimport {isArray, isFn, isUndef, isEmpty, EMPTY_FN} from '../../types';\r\nimport {numSortAsc} from '../../sort';\r\nimport {FORMATTED_NUMBER} from '../../const';\r\nimport formatNumber from 'format-number';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-page-change',\r\n 'after-page-length-change'\r\n];\r\n\r\nconst SUM = 'sum';\r\nconst MEAN = 'mean';\r\nconst MIN = 'min';\r\nconst MAX = 'max';\r\nconst MEDIAN = 'median';\r\nconst Q1 = 'q1';\r\nconst Q3 = 'q3';\r\n\r\n/**\r\n * Column calculations extension\r\n */\r\nexport default class ColOps extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColOps\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\r\n constructor(tf, opts) {\r\n super(tf, opts.name);\r\n\r\n /**\r\n * Callback fired before columns operations start\r\n * @type {Function}\r\n */\r\n this.onBeforeOperation = isFn(opts.on_before_operation) ?\r\n opts.on_before_operation : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after columns operations are completed\r\n * @type {Function}\r\n */\r\n this.onAfterOperation = isFn(opts.on_after_operation) ?\r\n opts.on_after_operation : EMPTY_FN;\r\n\r\n /**\r\n * Configuration options\r\n * @type {Object}\r\n */\r\n this.opts = opts;\r\n\r\n /**\r\n * List of DOM element IDs containing column's calculation result\r\n * @type {Array}\r\n */\r\n this.labelIds = opts.id || [];\r\n\r\n /**\r\n * List of columns' indexes for calculations\r\n * @type {Array}\r\n */\r\n this.colIndexes = opts.col || [];\r\n\r\n /**\r\n * List of operations - possible values: 'sum', 'mean', 'min', 'max',\r\n * 'median', 'q1', 'q3'\r\n * @type {Array}\r\n */\r\n this.operations = opts.operation || [];\r\n\r\n /**\r\n * List of write methods used to write the result - possible values:\r\n * 'innerHTML', 'setValue', 'createTextNode'\r\n * @type {Array}\r\n */\r\n this.outputTypes = opts.write_method || [];\r\n\r\n /**\r\n * List of format objects used for formatting the result -\r\n * refer to https://github.com/componitable/format-number to check\r\n * configuration options\r\n * @type {Array}\r\n */\r\n this.formatResults = opts.format_result || [];\r\n\r\n /**\r\n * List of row indexes displaying the results\r\n * @type {Array}\r\n */\r\n this.totRowIndexes = opts.tot_row_index || [];\r\n\r\n /**\r\n * List of row indexes excluded from calculations\r\n * @type {Array}\r\n */\r\n this.excludeRows = opts.exclude_row || [];\r\n\r\n /**\r\n * List of decimal precision for calculation results\r\n * @type {Array}\r\n */\r\n this.decimalPrecisions = isUndef(opts.decimal_precision) ?\r\n 2 : opts.decimal_precision;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initializes ColOps instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n // subscribe to events\r\n this.emitter.on(EVENTS, () => this.calcAll());\r\n\r\n this.calcAll();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Calculates columns' values\r\n * Configuration options are stored in 'opts' property\r\n * - 'id' contains ids of elements showing result (array)\r\n * - 'col' contains the columns' indexes (array)\r\n * - 'operation' contains operation type (array, values: 'sum', 'mean',\r\n * 'min', 'max', 'median', 'q1', 'q3')\r\n * - 'write_method' array defines which method to use for displaying the\r\n * result (innerHTML, setValue, createTextNode) - default: 'innerHTML'\r\n * - 'tot_row_index' defines in which row results are displayed\r\n * (integers array)\r\n *\r\n * - changes made by Nuovella:\r\n * (1) optimized the routine (now it will only process each column once),\r\n * (2) added calculations for the median, lower and upper quartile.\r\n */\r\n calcAll() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized()) {\r\n return;\r\n }\r\n\r\n this.onBeforeOperation(tf, this);\r\n this.emitter.emit('before-column-operation', tf, this);\r\n\r\n let { colIndexes, operations: colOperations, outputTypes,\r\n totRowIndexes, excludeRows, formatResults } = this;\r\n let decimalPrecisions = isUndef(this.decimalPrecisions) ?\r\n 2 : this.decimalPrecisions;\r\n\r\n //nuovella: determine unique list of columns to operate on\r\n let uIndexes = [];\r\n colIndexes.forEach((val) => {\r\n if (uIndexes.indexOf(val) === -1) {\r\n uIndexes.push(val);\r\n }\r\n });\r\n\r\n let nbCols = uIndexes.length,\r\n rows = tf.dom().rows,\r\n colValues = [];\r\n\r\n for (let u = 0; u < nbCols; u++) {\r\n //this retrieves col values\r\n //use uIndexes because we only want to pass through this loop\r\n //once for each column get the values in this unique column\r\n colValues.push(\r\n tf.getVisibleColumnData(uIndexes[u], false, excludeRows)\r\n );\r\n\r\n let curValues = colValues[u];\r\n\r\n //next: calculate all operations for this column\r\n let result = 0,\r\n operations = [],\r\n precisions = [],\r\n labels = [],\r\n writeType,\r\n formatResult = [],\r\n idx = 0;\r\n\r\n for (let k = 0; k < colIndexes.length; k++) {\r\n if (colIndexes[k] !== uIndexes[u]) {\r\n continue;\r\n }\r\n operations[idx] = (colOperations[k] || 'sum').toLowerCase();\r\n precisions[idx] = decimalPrecisions[k];\r\n labels[idx] = this.labelIds[k];\r\n writeType = isArray(outputTypes) ? outputTypes[k] : null;\r\n formatResult[idx] =\r\n this.configureFormat(uIndexes[u], formatResults[k]);\r\n idx++;\r\n }\r\n\r\n for (let i = 0; i < idx; i++) {\r\n // emit values before column calculation\r\n this.emitter.emit(\r\n 'before-column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n curValues,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n result = Number(this.calc(curValues, operations[i], null));\r\n\r\n // emit column calculation result\r\n this.emitter.emit(\r\n 'column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n result,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n // write result in expected DOM element\r\n this.writeResult(\r\n result,\r\n labels[i],\r\n writeType,\r\n precisions[i],\r\n formatResult[i]\r\n );\r\n\r\n }//for i\r\n\r\n // row(s) with result are always visible\r\n let totRow = totRowIndexes && totRowIndexes[u] ?\r\n rows[totRowIndexes[u]] : null;\r\n if (totRow) {\r\n totRow.style.display = '';\r\n }\r\n }//for u\r\n\r\n this.onAfterOperation(tf, this);\r\n this.emitter.emit('after-column-operation', tf, this);\r\n }\r\n\r\n /**\r\n * Make desired calculation on specified column.\r\n * @param {Number} colIndex Column index\r\n * @param {String} [operation=SUM] Operation type\r\n * @param {Number} precision Decimal precision\r\n * @returns {Number}\r\n */\r\n columnCalc(colIndex, operation = SUM, precision) {\r\n let excludeRows = this.excludeRows || [];\r\n let colValues = tf.getVisibleColumnData(colIndex, false, excludeRows);\r\n\r\n return Number(this.calc(colValues, operation, precision));\r\n }\r\n\r\n /**\r\n * Make calculation on passed values.\r\n * @param {Array} values List of values\r\n * @param {String} [operation=SUM] Optional operation type\r\n * @param {Number} precision Optional result precision\r\n * @returns {Number}\r\n * @private\r\n */\r\n calc(colValues, operation = SUM, precision) {\r\n let result = 0;\r\n\r\n if (operation === Q1 || operation === Q3 || operation === MEDIAN) {\r\n colValues = this.sortColumnValues(colValues, numSortAsc);\r\n }\r\n\r\n switch (operation) {\r\n case MEAN:\r\n result = this.calcMean(colValues);\r\n break;\r\n case SUM:\r\n result = this.calcSum(colValues);\r\n break;\r\n case MIN:\r\n result = this.calcMin(colValues);\r\n break;\r\n case MAX:\r\n result = this.calcMax(colValues);\r\n break;\r\n case MEDIAN:\r\n result = this.calcMedian(colValues);\r\n break;\r\n case Q1:\r\n result = this.calcQ1(colValues);\r\n break;\r\n case Q3:\r\n result = this.calcQ3(colValues);\r\n break;\r\n }\r\n\r\n return isEmpty(precision) ? result : result.toFixed(precision);\r\n }\r\n\r\n /**\r\n * Calculate the sum of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcSum(values = []) {\r\n if (isEmpty(values)) {\r\n return 0;\r\n }\r\n let result = values.reduce((x, y) => Number(x) + Number(y));\r\n return result;\r\n }\r\n\r\n /**\r\n * Calculate the mean of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMean(values = []) {\r\n let result = this.calcSum(values) / values.length;\r\n return Number(result);\r\n }\r\n\r\n /**\r\n * Calculate the max value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMax(values = []) {\r\n return Math.max.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the min value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMin(values = []) {\r\n return Math.min.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the median of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMedian(values = []) {\r\n let nbValues = values.length;\r\n let aux = 0;\r\n if (nbValues % 2 === 1) {\r\n aux = Math.floor(nbValues / 2);\r\n return Number(values[aux]);\r\n }\r\n return (Number(values[nbValues / 2]) +\r\n Number(values[((nbValues / 2) - 1)])) / 2;\r\n }\r\n\r\n /**\r\n * Calculate the lower quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ1(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n return (Number(values[posa - 1]) +\r\n Number(values[posa])) / 2;\r\n }\r\n return Number(values[posa]);\r\n }\r\n\r\n /**\r\n * Calculate the upper quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ3(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n let posb = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n posb = 3 * posa;\r\n return (Number(values[posb]) +\r\n Number(values[posb - 1])) / 2;\r\n }\r\n return Number(values[nbValues - posa - 1]);\r\n }\r\n\r\n /**\r\n * Sort passed values with supplied sorter function.\r\n * @param {Array} [values=[]] List of values to be sorted\r\n * @param {Function} sorter Sorter function\r\n * @returns {Array}\r\n */\r\n sortColumnValues(values = [], sorter) {\r\n return values.sort(sorter);\r\n }\r\n\r\n /**\r\n * Write calculation result in passed DOM element with supplied write method\r\n * and decimal precision.\r\n * @param {Number} [result=0] Calculation result\r\n * @param {DOMElement} label DOM element\r\n * @param {String} [writeType='innerhtml'] Write method\r\n * @param {Number} [precision=2] Applied decimal precision\r\n * @private\r\n */\r\n writeResult(result = 0, label, writeType = 'innerhtml',\r\n precision = 2, format = {}) {\r\n let labelElm = elm(label);\r\n\r\n if (!labelElm) {\r\n return;\r\n }\r\n\r\n result = result.toFixed(precision);\r\n if (isNaN(result) || !isFinite(result)) {\r\n result = '';\r\n } else {\r\n result = formatNumber(format)(result);\r\n }\r\n\r\n switch (writeType.toLowerCase()) {\r\n case 'innerhtml':\r\n labelElm.innerHTML = result;\r\n break;\r\n case 'setvalue':\r\n labelElm.value = result;\r\n break;\r\n case 'createtextnode':\r\n let oldNode = labelElm.firstChild;\r\n let txtNode = createText(result);\r\n labelElm.replaceChild(txtNode, oldNode);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Configure the format options used to format the operation result based\r\n * on column type.\r\n * @param {Number} colIndex Column index\r\n * @param {Object} [format={}] Format object\r\n * @returns {Object}\r\n * @private\r\n */\r\n configureFormat(colIndex, format = {}) {\r\n let tf = this.tf;\r\n if (tf.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = tf.colTypes[colIndex];\r\n if (colType.decimal && !format.decimal) {\r\n format.decimal = colType.decimal;\r\n }\r\n if (colType.thousands && !format.integerSeparator) {\r\n format.integerSeparator = colType.thousands;\r\n }\r\n } else {\r\n format.decimal = format.decimal || '';\r\n format.integerSeparator = format.integerSeparator || '';\r\n }\r\n return format;\r\n }\r\n\r\n /** Remove extension */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n // unsubscribe to events\r\n this.emitter.off(EVENTS, () => this.calcAll());\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/colOps/colOps.js","import {Feature} from '../../feature';\r\nimport {\r\n addClass, removeClass, createCheckItem, createElm, elm, removeElm,\r\n getText\r\n} from '../../dom';\r\nimport {isFn, EMPTY_FN} from '../../types';\r\nimport {addEvt, targetEvt, removeEvt} from '../../event';\r\nimport {root} from '../../root';\r\n\r\n/**\r\n * Columns Visibility extension\r\n */\r\nexport default class ColsVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColsVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n // Configuration object\r\n let cfg = this.config;\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = f.description || 'Columns visibility manager';\r\n\r\n /**\r\n * show/hide columns container element\r\n * @private\r\n */\r\n this.spanEl = null;\r\n\r\n /**\r\n * show/hide columns button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * show/hide columns main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Enable tick to hide a column, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.tickToHide = f.tick_to_hide === false ? false : true;\r\n\r\n /**\r\n * Enable columns manager UI, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.manager = f.manager === false ? false : true;\r\n\r\n /**\r\n * Headers HTML table reference only if headers are external\r\n * @type {DOMElement}\r\n */\r\n this.headersTbl = f.headers_table || null;\r\n\r\n /**\r\n * Headers row index only if headers are external\r\n * @type {Number}\r\n */\r\n this.headersIndex = f.headers_index || 1;\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.contElTgtId = f.container_target_id || null;\r\n\r\n /**\r\n * Alternative text for column headers in column manager UI\r\n * @type {Array}\r\n */\r\n this.headersText = f.headers_text || null;\r\n\r\n /**\r\n * ID of button's container element\r\n * @type {String}\r\n */\r\n this.btnTgtId = f.btn_target_id || null;\r\n\r\n /**\r\n * Button's text, defaults to Columns▼\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || 'Columns▼';\r\n\r\n /**\r\n * Button's inner HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = f.btn_html || null;\r\n\r\n /**\r\n * Css class for button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'colVis';\r\n\r\n /**\r\n * Columns manager UI close link text, defaults to 'Close'\r\n * @type {String}\r\n */\r\n this.btnCloseText = f.btn_close_text || 'Close';\r\n\r\n /**\r\n * Columns manager UI close link HTML\r\n * @type {String}\r\n */\r\n this.btnCloseHtml = f.btn_close_html || null;\r\n\r\n /**\r\n * Css for columns manager UI close link\r\n * @type {String}\r\n */\r\n this.btnCloseCssClass = f.btn_close_css_class || this.btnCssClass;\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = f.stylesheet || 'colsVisibility.css';\r\n\r\n /**\r\n * Css for columns manager UI span\r\n * @type {String}\r\n */\r\n this.spanCssClass = f.span_css_class || 'colVisSpan';\r\n\r\n /**\r\n * Css for columns manager UI main container\r\n * @type {String}\r\n */\r\n this.contCssClass = f.cont_css_class || 'colVisCont';\r\n\r\n /**\r\n * Css for columns manager UI checklist (ul)\r\n * @type {String}\r\n */\r\n this.listCssClass = cfg.list_css_class || 'cols_checklist';\r\n\r\n /**\r\n * Css for columns manager UI checklist item (li)\r\n * @type {String}\r\n */\r\n this.listItemCssClass = cfg.checklist_item_css_class ||\r\n 'cols_checklist_item';\r\n\r\n /**\r\n * Css for columns manager UI checklist item selected state (li)\r\n * @type {String}\r\n */\r\n this.listSlcItemCssClass = cfg.checklist_selected_item_css_class ||\r\n 'cols_checklist_slc_item';\r\n\r\n /**\r\n * Text preceding the columns list, defaults to 'Hide' or 'Show'\r\n * depending on tick mode (tick_to_hide option)\r\n * @type {String}\r\n */\r\n this.text = f.text || (this.tickToHide ? 'Hide: ' : 'Show: ');\r\n\r\n /**\r\n * List of columns indexes to be hidden at initialization\r\n * @type {Array}\r\n */\r\n this.atStart = f.at_start || [];\r\n\r\n /**\r\n * Enable hover behaviour on columns manager button/link\r\n * @type {Boolean}\r\n */\r\n this.enableHover = Boolean(f.enable_hover);\r\n\r\n /**\r\n * Enable select all option, disabled by default\r\n * @type {Boolean}\r\n */\r\n this.enableTickAll = Boolean(f.enable_tick_all);\r\n\r\n /**\r\n * Text for select all option, defaults to 'Select all:'\r\n * @type {String}\r\n */\r\n this.tickAllText = f.tick_all_text || 'Select all:';\r\n\r\n /**\r\n * List of indexes of hidden columns\r\n * @private\r\n */\r\n this.hiddenCols = [];\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Callback fired when the extension is initialized\r\n * @type {Function}\r\n */\r\n this.onLoaded = isFn(f.on_loaded) ? f.on_loaded : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = isFn(f.on_before_open) ?\r\n f.on_before_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = isFn(f.on_after_open) ? f.on_after_open : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = isFn(f.on_before_close) ?\r\n f.on_before_close : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = isFn(f.on_after_close) ?\r\n f.on_after_close : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before a column is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeColHidden = isFn(f.on_before_col_hidden) ?\r\n f.on_before_col_hidden : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a column is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterColHidden = isFn(f.on_after_col_hidden) ?\r\n f.on_after_col_hidden : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before a column is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeColDisplayed = isFn(f.on_before_col_displayed) ?\r\n f.on_before_col_displayed : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after a column is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterColDisplayed = isFn(f.on_after_col_displayed) ?\r\n f.on_after_col_displayed : EMPTY_FN;\r\n\r\n //Grid layout support\r\n if (tf.gridLayout) {\r\n this.headersTbl = tf.feature('gridLayout').headTbl; //headers table\r\n this.headersIndex = 0; //headers index\r\n this.onAfterColDisplayed = function () { };\r\n this.onAfterColHidden = function () { };\r\n }\r\n\r\n //Loads extension stylesheet\r\n tf.import(f.name + 'Style', tf.stylePath + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.contEl\r\n && targetElm !== this.btnEl) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.contEl && targetElm !== this.btnEl) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Toggle columns manager UI\r\n */\r\n toggle() {\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let contDisplay = this.contEl.style.display;\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onBeforeOpen(this);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onBeforeClose(this);\r\n }\r\n\r\n this.contEl.style.display = contDisplay === 'inline' ?\r\n 'none' : 'inline';\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onAfterOpen(this);\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onAfterClose(this);\r\n }\r\n }\r\n\r\n /**\r\n * Check an item in columns manager UI\r\n * @private\r\n */\r\n checkItem(lbl) {\r\n let li = lbl.parentNode;\r\n if (!li || !lbl) {\r\n return;\r\n }\r\n let isChecked = lbl.firstChild.checked;\r\n let colIndex = lbl.firstChild.getAttribute('id').split('_')[1];\r\n colIndex = parseInt(colIndex, 10);\r\n if (isChecked) {\r\n addClass(li, this.listSlcItemCssClass);\r\n } else {\r\n removeClass(li, this.listSlcItemCssClass);\r\n }\r\n\r\n let hide = false;\r\n if ((this.tickToHide && isChecked) ||\r\n (!this.tickToHide && !isChecked)) {\r\n hide = true;\r\n }\r\n this.setHidden(colIndex, hide);\r\n }\r\n\r\n /**\r\n * Initializes ColsVisibility instance\r\n */\r\n init() {\r\n if (this.initialized || !this.manager) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.buildBtn();\r\n this.buildManager();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n this.emitter.emit('columns-visibility-initialized', this.tf, this);\r\n\r\n // Hide columns at start at very end of initialization, do not move\r\n // as order is important\r\n this._hideAtStart();\r\n }\r\n\r\n /**\r\n * Build main button UI\r\n */\r\n buildBtn() {\r\n if (this.btnEl) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.spanCssClass;\r\n\r\n //Container element (rdiv or custom element)\r\n if (!this.btnTgtId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.btnTgtId ? tf.rDiv : elm(this.btnTgtId);\r\n\r\n if (!this.btnTgtId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n if (!this.btnHtml) {\r\n let btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.desc;\r\n\r\n btn.innerHTML = this.btnText;\r\n span.appendChild(btn);\r\n if (!this.enableHover) {\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(btn, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n } else { //Custom html\r\n span.innerHTML = this.btnHtml;\r\n let colVisEl = span.firstChild;\r\n if (!this.enableHover) {\r\n addEvt(colVisEl, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(colVisEl, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n }\r\n\r\n this.spanEl = span;\r\n this.btnEl = this.spanEl.firstChild;\r\n\r\n this.onLoaded(this);\r\n }\r\n\r\n /**\r\n * Build columns manager UI\r\n */\r\n buildManager() {\r\n let tf = this.tf;\r\n\r\n let container = !this.contElTgtId ?\r\n createElm('div') :\r\n elm(this.contElTgtId);\r\n container.className = this.contCssClass;\r\n\r\n //Extension description\r\n let extNameLabel = createElm('p');\r\n extNameLabel.innerHTML = this.text;\r\n container.appendChild(extNameLabel);\r\n\r\n //Headers list\r\n let ul = createElm('ul');\r\n ul.className = this.listCssClass;\r\n\r\n let tbl = this.headersTbl ? this.headersTbl : tf.dom();\r\n let headerIndex = this.headersTbl ?\r\n this.headersIndex : tf.getHeadersRowIndex();\r\n let headerRow = tbl.rows[headerIndex];\r\n\r\n //Tick all option\r\n if (this.enableTickAll) {\r\n let li = createCheckItem('col__' + tf.id, this.tickAllText,\r\n this.tickAllText);\r\n addClass(li, this.listItemCssClass);\r\n ul.appendChild(li);\r\n li.check.checked = !this.tickToHide;\r\n\r\n addEvt(li.check, 'click', () => {\r\n for (let h = 0; h < headerRow.cells.length; h++) {\r\n let itm = elm('col_' + h + '_' + tf.id);\r\n if (itm && li.check.checked !== itm.checked) {\r\n itm.click();\r\n itm.checked = li.check.checked;\r\n }\r\n }\r\n });\r\n }\r\n\r\n for (let i = 0; i < headerRow.cells.length; i++) {\r\n let cell = headerRow.cells[i];\r\n let cellText = this.headersText && this.headersText[i] ?\r\n this.headersText[i] : this._getHeaderText(cell);\r\n let liElm = createCheckItem('col_' + i + '_' + tf.id, cellText,\r\n cellText);\r\n addClass(liElm, this.listItemCssClass);\r\n if (!this.tickToHide) {\r\n addClass(liElm, this.listSlcItemCssClass);\r\n }\r\n ul.appendChild(liElm);\r\n if (!this.tickToHide) {\r\n liElm.check.checked = true;\r\n }\r\n\r\n addEvt(liElm.check, 'click', (evt) => {\r\n let elm = targetEvt(evt);\r\n let lbl = elm.parentNode;\r\n this.checkItem(lbl);\r\n });\r\n }\r\n\r\n //separator\r\n let p = createElm('p', ['align', 'center']);\r\n let btn;\r\n //Close link\r\n if (!this.btnCloseHtml) {\r\n btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCloseCssClass;\r\n btn.innerHTML = this.btnCloseText;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n p.appendChild(btn);\r\n } else {\r\n p.innerHTML = this.btnCloseHtml;\r\n btn = p.firstChild;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n }\r\n\r\n container.appendChild(ul);\r\n container.appendChild(p);\r\n\r\n this.btnEl.parentNode.insertBefore(container, this.btnEl);\r\n this.contEl = container;\r\n }\r\n\r\n /**\r\n * Hide or show specified columns\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} hide Hide column if true or show if false\r\n */\r\n setHidden(colIndex, hide) {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (hide) {\r\n this.onBeforeColHidden(this, colIndex);\r\n }\r\n if (!hide) {\r\n this.onBeforeColDisplayed(this, colIndex);\r\n }\r\n\r\n this._hideCells(tbl, colIndex, hide);\r\n if (this.headersTbl) {\r\n this._hideCells(this.headersTbl, colIndex, hide);\r\n }\r\n\r\n let hiddenCols = this.hiddenCols;\r\n let itemIndex = hiddenCols.indexOf(colIndex);\r\n if (hide) {\r\n if (itemIndex === -1) {\r\n this.hiddenCols.push(colIndex);\r\n }\r\n } else {\r\n if (itemIndex !== -1) {\r\n this.hiddenCols.splice(itemIndex, 1);\r\n }\r\n }\r\n\r\n let gridLayout;\r\n let headTbl;\r\n let gridColElms;\r\n if (hide) {\r\n //This event is fired just after a column is displayed for\r\n //grid_layout support\r\n //TODO: grid layout module should be responsible for those\r\n //calculations\r\n if (tf.gridLayout) {\r\n gridLayout = tf.feature('gridLayout');\r\n headTbl = gridLayout.headTbl;\r\n gridColElms = gridLayout.colElms;\r\n let hiddenWidth = parseInt(\r\n gridColElms[colIndex].style.width, 10);\r\n\r\n let headTblW = parseInt(headTbl.style.width, 10);\r\n headTbl.style.width = headTblW - hiddenWidth + 'px';\r\n tbl.style.width = headTbl.style.width;\r\n }\r\n\r\n this.onAfterColHidden(this, colIndex);\r\n this.emitter.emit('column-hidden', tf, this, colIndex,\r\n this.hiddenCols);\r\n }\r\n\r\n if (!hide) {\r\n //This event is fired just after a column is displayed for\r\n //grid_layout support\r\n //TODO: grid layout module should be responsible for those\r\n //calculations\r\n if (tf.gridLayout) {\r\n gridLayout = tf.feature('gridLayout');\r\n headTbl = gridLayout.headTbl;\r\n gridColElms = gridLayout.colElms;\r\n let width = parseInt(gridColElms[colIndex].style.width, 10);\r\n headTbl.style.width =\r\n (parseInt(headTbl.style.width, 10) + width) + 'px';\r\n tf.dom().style.width = headTbl.style.width;\r\n }\r\n\r\n this.onAfterColDisplayed(this, colIndex);\r\n this.emitter.emit('column-shown', tf, this, colIndex,\r\n this.hiddenCols);\r\n }\r\n }\r\n\r\n /**\r\n * Show specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n showCol(colIndex) {\r\n if (colIndex === undefined || !this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, false);\r\n }\r\n }\r\n\r\n /**\r\n * Hide specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n hideCol(colIndex) {\r\n if (colIndex === undefined || this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, true);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if specified column is hidden\r\n * @param {Number} colIndex Column index\r\n */\r\n isColHidden(colIndex) {\r\n if (this.hiddenCols.indexOf(colIndex) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n toggleCol(colIndex) {\r\n if (colIndex === undefined || this.isColHidden(colIndex)) {\r\n this.showCol(colIndex);\r\n } else {\r\n this.hideCol(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Return the indexes of the columns currently hidden\r\n * @return {Array} column indexes\r\n */\r\n getHiddenCols() {\r\n return this.hiddenCols;\r\n }\r\n\r\n /**\r\n * Remove the columns manager\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n if (elm(this.contElTgtId)) {\r\n elm(this.contElTgtId).innerHTML = '';\r\n } else {\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n }\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.emitter.off(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.boundMouseup = null;\r\n\r\n this.initialized = false;\r\n }\r\n\r\n _getHeaderText(cell) {\r\n if (!cell.hasChildNodes) {\r\n return '';\r\n }\r\n\r\n for (let i = 0; i < cell.childNodes.length; i++) {\r\n let n = cell.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.nodeValue;\r\n } else if (n.nodeType === 1) {\r\n if (n.id && n.id.indexOf('popUp') !== -1) {\r\n continue;\r\n } else {\r\n return getText(n);\r\n }\r\n }\r\n continue;\r\n }\r\n return '';\r\n }\r\n\r\n _hideCells(tbl, colIndex, hide) {\r\n for (let i = 0; i < tbl.rows.length; i++) {\r\n let row = tbl.rows[i];\r\n let cell = row.cells[colIndex];\r\n if (cell) {\r\n cell.style.display = hide ? 'none' : '';\r\n }\r\n }\r\n }\r\n\r\n _hideAtStart() {\r\n this.atStart.forEach((colIdx) => {\r\n this.hideCol(colIdx);\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/colsVisibility/colsVisibility.js","import {Feature} from '../../feature';\r\nimport {createElm, removeElm, elm} from '../../dom';\r\nimport {isFn, isUndef, EMPTY_FN} from '../../types';\r\nimport {addEvt} from '../../event';\r\n\r\n/**\r\n * Filters Visibility extension\r\n */\r\nexport default class FiltersVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of FiltersVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = f.description || 'Filters row visibility manager';\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = f.stylesheet || 'filtersVisibility.css';\r\n\r\n /**\r\n * Expand icon filename\r\n * @type {String}\r\n */\r\n this.icnExpand = f.expand_icon_name || 'icn_exp.png';\r\n\r\n /**\r\n * Collapse icon filename\r\n * @type {String}\r\n */\r\n this.icnCollapse = f.collapse_icon_name || 'icn_clp.png';\r\n\r\n /**\r\n * Main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * Expand icon HTML\r\n * @private\r\n */\r\n this.icnExpandHtml = '\"Expand';\r\n\r\n /**\r\n * Collapse icon HTML\r\n * @private\r\n */\r\n this.icnCollapseHtml = '\"Collapse';\r\n\r\n /**\r\n * Default text\r\n * @private\r\n */\r\n this.defaultText = 'Toggle filters';\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Enable expand/collapse icon, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.enableIcon = f.enable_icon === false ? false : true;\r\n\r\n /**\r\n * Custom text for button\r\n * @type {String}\r\n */\r\n this.btnText = f.btn_text || '';\r\n\r\n /**\r\n * Collapse button HTML\r\n * @private\r\n */\r\n this.collapseBtnHtml = this.enableIcon ?\r\n this.icnCollapseHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Expand button HTML\r\n * @private\r\n */\r\n this.expandBtnHtml = this.enableIcon ?\r\n this.icnExpandHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Button's custom HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = f.btn_html || null;\r\n\r\n /**\r\n * Css class for expand/collapse filters button\r\n * @type {String}\r\n */\r\n this.btnCssClass = f.btn_css_class || 'btnExpClpFlt';\r\n\r\n /**\r\n * Css class for main container\r\n * @type {String}\r\n */\r\n this.contCssClass = f.cont_css_class || 'expClpFlt';\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = !isUndef(f.filters_row_index) ?\r\n f.filters_row_index : tf.getFiltersRowIndex();\r\n\r\n /**\r\n * Make filters visible at initialization, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.visibleAtStart = !isUndef(f.visible_at_start) ?\r\n Boolean(f.visible_at_start) : true;\r\n\r\n /**\r\n * Callback fired before filters row is shown\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = isFn(f.on_before_show) ?\r\n f.on_before_show : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filters row is shown\r\n * @type {Function}\r\n */\r\n this.onAfterShow = isFn(f.on_after_show) ? f.on_after_show : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired before filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = isFn(f.on_before_hide) ?\r\n f.on_before_hide : EMPTY_FN;\r\n\r\n /**\r\n * Callback fired after filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = isFn(f.on_after_hide) ? f.on_after_hide : EMPTY_FN;\r\n\r\n //Import extension's stylesheet\r\n tf.import(f.name + 'Style', tf.stylePath + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialise extension\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.buildUI();\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n\r\n this.emitter.on(['show-filters'], (tf, visible) => this.show(visible));\r\n this.emitter.emit('filters-visibility-initialized', this.tf, this);\r\n }\r\n\r\n /**\r\n * Build UI elements\r\n */\r\n buildUI() {\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.contCssClass;\r\n\r\n //Container element (rdiv or custom element)\r\n if (!this.targetId) {\r\n tf.setToolbar();\r\n }\r\n let targetEl = !this.targetId ? tf.rDiv : elm(this.targetId);\r\n\r\n if (!this.targetId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n let btn;\r\n if (!this.btnHtml) {\r\n btn = createElm('a', ['href', 'javascript:void(0);']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.btnText || this.defaultText;\r\n btn.innerHTML = this.collapseBtnHtml;\r\n span.appendChild(btn);\r\n } else { //Custom html\r\n span.innerHTML = this.btnHtml;\r\n btn = span.firstChild;\r\n }\r\n\r\n addEvt(btn, 'click', () => this.toggle());\r\n\r\n this.contEl = span;\r\n this.btnEl = btn;\r\n\r\n if (!this.visibleAtStart) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle filters visibility\r\n */\r\n toggle() {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n let isDisplayed = fltRow.style.display === '';\r\n\r\n this.show(!isDisplayed);\r\n }\r\n\r\n /**\r\n * Show or hide filters\r\n *\r\n * @param {boolean} [visible=true] Visibility flag\r\n */\r\n show(visible = true) {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n\r\n if (visible) {\r\n this.onBeforeShow(this);\r\n }\r\n if (!visible) {\r\n this.onBeforeHide(this);\r\n }\r\n\r\n fltRow.style.display = visible ? '' : 'none';\r\n if (this.enableIcon && !this.btnHtml) {\r\n this.btnEl.innerHTML = visible ?\r\n this.collapseBtnHtml : this.expandBtnHtml;\r\n }\r\n\r\n if (visible) {\r\n this.onAfterShow(this);\r\n }\r\n if (!visible) {\r\n this.onAfterHide(this);\r\n }\r\n\r\n this.emitter.emit('filters-toggled', tf, this, visible);\r\n }\r\n\r\n /**\r\n * Destroy the UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.off(['show-filters'], (tf, visible) => this.show(visible));\r\n\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/filtersVisibility/filtersVisibility.js","import AdapterSortableTable from './adapterSortabletable';\r\nimport {root} from '../../root';\r\n\r\nif (!root.SortableTable) {\r\n require('script-loader!sortabletable');\r\n}\r\n\r\nexport default AdapterSortableTable;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/extensions/sort/sort.js","\nmodule.exports = formatter;\n\nfunction formatter(options) {\n options = options || {};\n\n\n // *********************************************************************************************\n // Set defaults for negatives\n // options.negative, options.negativeOut, options.separator retained for backward compatibility\n // *********************************************************************************************\n\n // type of negative; default left\n options.negativeType = options.negativeType || (options.negative === 'R' ? 'right' : 'left')\n\n // negative symbols '-' or '()'\n if (typeof options.negativeLeftSymbol !== 'string') {\n switch (options.negativeType) {\n case 'left':\n options.negativeLeftSymbol = '-';\n break;\n case 'brackets':\n options.negativeLeftSymbol = '(';\n break;\n default:\n options.negativeLeftSymbol = '';\n }\n }\n if (typeof options.negativeRightSymbol !== 'string') {\n switch (options.negativeType) {\n case 'right':\n options.negativeRightSymbol = '-';\n break;\n case 'brackets':\n options.negativeRightSymbol = ')';\n break;\n default:\n options.negativeRightSymbol = '';\n }\n }\n\n // whether negative symbol should be inside/outside prefix and suffix\n\n if (typeof options.negativeLeftOut !== \"boolean\") {\n options.negativeLeftOut = (options.negativeOut === false ? false : true);\n }\n if (typeof options.negativeRightOut !== \"boolean\") {\n options.negativeRightOut = (options.negativeOut === false ? false : true);\n }\n\n //prefix and suffix\n options.prefix = options.prefix || '';\n options.suffix = options.suffix || '';\n\n //separators\n if (typeof options.integerSeparator !== 'string') {\n options.integerSeparator = (typeof options.separator === 'string' ? options.separator : ',');\n }\n options.decimalsSeparator = typeof options.decimalsSeparator === 'string' ? options.decimalsSeparator : '';\n options.decimal = options.decimal || '.';\n\n //padders\n options.padLeft = options.padLeft || -1 //default no padding\n options.padRight = options.padRight || -1 //default no padding\n\n function format(number, overrideOptions) {\n overrideOptions = overrideOptions || {};\n\n if (number || number === 0) {\n number = '' + number;//convert number to string if it isn't already\n } else {\n return '';\n }\n\n //identify a negative number and make it absolute\n var output = [];\n var negative = number.charAt(0) === '-';\n number = number.replace(/^\\-/g, '');\n\n //Prepare output with left hand negative and/or prefix\n if (!options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n if (negative) {\n output.push(options.negativeLeftSymbol);\n }\n if (options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n\n //Format core number\n number = number.split('.');\n if (options.round != null) round(number, options.round);\n if (options.truncate != null) number[1] = truncate(number[1], options.truncate);\n if (options.padLeft > 0) number[0] = padLeft(number[0], options.padLeft);\n if (options.padRight > 0) number[1] = padRight(number[1], options.padRight);\n if (!overrideOptions.noSeparator && number[1]) number[1] = addDecimalSeparators(number[1], options.decimalsSeparator);\n if (!overrideOptions.noSeparator && number[0]) number[0] = addIntegerSeparators(number[0], options.integerSeparator);\n output.push(number[0]);\n if (number[1]) {\n output.push(options.decimal);\n output.push(number[1]);\n }\n\n //Prepare output with right hand negative and/or prefix\n if (options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n if (negative) {\n output.push(options.negativeRightSymbol);\n }\n if (!options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n\n //join output and return\n return output.join('');\n }\n\n format.negative = options.negative;\n format.negativeOut = options.negativeOut;\n format.negativeType = options.negativeType;\n format.negativeLeftOut = options.negativeLeftOut;\n format.negativeLeftSymbol = options.negativeLeftSymbol;\n format.negativeRightOut = options.negativeRightOut;\n format.negativeRightSymbol = options.negativeRightSymbol;\n format.prefix = options.prefix;\n format.suffix = options.suffix;\n format.separate = options.separate;\n format.integerSeparator = options.integerSeparator;\n format.decimalsSeparator = options.decimalsSeparator;\n format.decimal = options.decimal;\n format.padLeft = options.padLeft;\n format.padRight = options.padRight;\n format.truncate = options.truncate;\n format.round = options.round;\n\n function unformat(number, allowedSeparators) {\n allowedSeparators = allowedSeparators || [];\n if (options.allowedSeparators) {\n options.allowedSeparators.forEach(function (s) { allowedSeparators.push (s); });\n }\n allowedSeparators.push(options.integerSeparator);\n allowedSeparators.push(options.decimalsSeparator);\n number = number.replace(options.prefix, '');\n number = number.replace(options.suffix, '');\n var newNumber = number;\n do {\n number = newNumber;\n for (var i = 0; i < allowedSeparators.length; i++) {\n newNumber = newNumber.replace(allowedSeparators[i], '');\n }\n } while (newNumber != number);\n return number;\n }\n format.unformat = unformat;\n\n function validate(number, allowedSeparators) {\n number = unformat(number, allowedSeparators);\n number = number.split(options.decimal);\n if (number.length > 2) {\n return false;\n } else if (options.truncate != null && number[1] && number[1].length > options.truncate) {\n return false;\n } else if (options.round != null && number[1] && number[1].length > options.round) {\n return false;\n } else {\n return /^-?\\d+\\.?\\d*$/.test(number);\n }\n }\n return format;\n}\n\n//where x is already the integer part of the number\nfunction addIntegerSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is already the decimal part of the number\nfunction addDecimalSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d{3})(\\d+)/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is the integer part of the number\nfunction padLeft(x, padding) {\n x = x + '';\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return buf.join('') + x;\n}\n\n//where x is the decimals part of the number\nfunction padRight(x, padding) {\n if (x) {\n x += '';\n } else {\n x = '';\n }\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return x + buf.join('');\n}\nfunction truncate(x, length) {\n if (x) {\n x += '';\n }\n if (x && x.length > length) {\n return x.substr(0, length);\n } else {\n return x;\n }\n}\n\n//where number is an array with 0th item as integer string and 1st item as decimal string (no negatives)\nfunction round(number, places) {\n if (number[1] && places >= 0 && number[1].length > places) {\n //truncate to correct number of decimal places\n var decim = number[1].slice(0, places);\n //if next digit was >= 5 we need to round up\n if (+(number[1].substr(places, 1)) >= 5) {\n //But first count leading zeros as converting to a number will loose them\n var leadingzeros = \"\";\n while (decim.charAt(0)===\"0\") {\n leadingzeros = leadingzeros + \"0\";\n decim = decim.substr(1);\n }\n //Then we can change decim to a number and add 1 before replacing leading zeros\n decim = (+decim + 1) + '';\n decim = leadingzeros + decim;\n if (decim.length > places) {\n //adding one has made it longer\n number[0] = (+number[0]+ +decim.charAt(0)) + ''; //add value of firstchar to the integer part\n decim = decim.substring(1); //ignore the 1st char at the beginning which is the carry to the integer part\n }\n }\n number[1] = decim;\n }\n return number;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/format-number/index.js\n// module id = 446\n// module chunks = 0","module.exports = \"/*----------------------------------------------------------------------------\\\\\\r\\n| Sortable Table 1.12 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created by Erik Arvidsson |\\r\\n| (http://webfx.eae.net/contact.html#erik) |\\r\\n| For WebFX (http://webfx.eae.net/) |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not |\\r\\n| use this file except in compliance with the License. You may obtain a copy |\\r\\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\\r\\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\\r\\n| Unless required by applicable law or agreed to in writing, software |\\r\\n| distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT |\\r\\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\\r\\n| License for the specific language governing permissions and limitations |\\r\\n| under the License. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| 2003-01-10 | First version |\\r\\n| 2003-01-19 | Minor changes to the date parsing |\\r\\n| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |\\r\\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\\r\\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\\r\\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\\r\\n| | Using onclick DOM0 event if no support for addEventListener |\\r\\n| | or attachEvent |\\r\\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\\r\\n| | easier to add new, custom sort types. |\\r\\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\\r\\n| | Change defaultDescending to suit your needs. |\\r\\n| 2004-03-14 | Improved sort type None look and feel a bit |\\r\\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\\r\\n| | can use another tHead or no tHead, and you can chose some |\\r\\n| | other tBody. |\\r\\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\\r\\n\\\\----------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\nfunction SortableTable(oTable, oSortTypes) {\\r\\n\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\r\\n\\tthis.sortColumn = null;\\r\\n\\tthis.descending = null;\\r\\n\\r\\n\\tvar oThis = this;\\r\\n\\tthis._headerOnclick = function (e) {\\r\\n\\t\\toThis.headerOnclick(e);\\r\\n\\t};\\r\\n\\r\\n\\tif (oTable) {\\r\\n\\t\\tthis.setTable( oTable );\\r\\n\\t\\tthis.document = oTable.ownerDocument || oTable.document;\\r\\n\\t}\\r\\n\\telse {\\r\\n\\t\\tthis.document = document;\\r\\n\\t}\\r\\n\\r\\n\\r\\n\\t// only IE needs this\\r\\n\\tvar win = this.document.defaultView || this.document.parentWindow;\\r\\n\\tthis._onunload = function () {\\r\\n\\t\\toThis.destroy();\\r\\n\\t};\\r\\n\\tif (win && typeof win.attachEvent != \\\"undefined\\\") {\\r\\n\\t\\twin.attachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n}\\r\\n\\r\\nSortableTable.gecko = navigator.product == \\\"Gecko\\\";\\r\\nSortableTable.msie = /msie/i.test(navigator.userAgent);\\r\\n// Mozilla is faster when doing the DOM manipulations on\\r\\n// an orphaned element. MSIE is not\\r\\nSortableTable.removeBeforeSort = SortableTable.gecko;\\r\\n\\r\\nSortableTable.prototype.onsort = function () {};\\r\\n\\r\\n// default sort order. true -> descending, false -> ascending\\r\\nSortableTable.prototype.defaultDescending = false;\\r\\n\\r\\n// shared between all instances. This is intentional to allow external files\\r\\n// to modify the prototype\\r\\nSortableTable.prototype._sortTypeInfo = {};\\r\\n\\r\\nSortableTable.prototype.setTable = function (oTable) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.element = oTable;\\r\\n\\tthis.setTHead( oTable.tHead );\\r\\n\\tthis.setTBody( oTable.tBodies[0] );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTHead = function (oTHead) {\\r\\n\\tif (this.tHead && this.tHead != oTHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.tHead = oTHead;\\r\\n\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTBody = function (oTBody) {\\r\\n\\tthis.tBody = oTBody;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\n// adds arrow containers and events\\r\\n// also binds sort type to the header cells so that reordering columns does\\r\\n// not break the sort types\\r\\nSortableTable.prototype.initHeader = function (oSortTypes) {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar doc = this.tHead.ownerDocument || this.tHead.document;\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img, c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (this.sortTypes[i] != null && this.sortTypes[i] != \\\"None\\\") {\\r\\n\\t\\t\\timg = doc.createElement(\\\"IMG\\\");\\r\\n\\t\\t\\timg.src = \\\"images/blank.png\\\";\\r\\n\\t\\t\\tc.appendChild(img);\\r\\n\\t\\t\\tif (this.sortTypes[i] != null)\\r\\n\\t\\t\\t\\tc._sortType = this.sortTypes[i];\\r\\n\\t\\t\\tif (typeof c.addEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.addEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.attachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.attachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\tc.onclick = this._headerOnclick;\\r\\n\\t\\t}\\r\\n\\t\\telse\\r\\n\\t\\t{\\r\\n\\t\\t\\tc.setAttribute( \\\"_sortType\\\", oSortTypes[i] );\\r\\n\\t\\t\\tc._sortType = \\\"None\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tthis.updateHeaderArrows();\\r\\n};\\r\\n\\r\\n// remove arrows and events\\r\\nSortableTable.prototype.uninitHeader = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (c._sortType != null && c._sortType != \\\"None\\\") {\\r\\n\\t\\t\\tc.removeChild(c.lastChild);\\r\\n\\t\\t\\tif (typeof c.removeEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.removeEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.detachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.detachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\tc._sortType = null;\\r\\n\\t\\t\\tc.removeAttribute( \\\"_sortType\\\" );\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.updateHeaderArrows = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tif (cells[i]._sortType != null && cells[i]._sortType != \\\"None\\\") {\\r\\n\\t\\t\\timg = cells[i].lastChild;\\r\\n\\t\\t\\tif (i == this.sortColumn)\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow \\\" + (this.descending ? \\\"descending\\\" : \\\"ascending\\\");\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.headerOnclick = function (e) {\\r\\n\\t// find TD element\\r\\n\\tvar el = e.target || e.srcElement;\\r\\n\\twhile (el.tagName != \\\"TD\\\")\\r\\n\\t\\tel = el.parentNode;\\r\\n\\r\\n\\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\\r\\n};\\r\\n\\r\\n// IE returns wrong cellIndex when columns are hidden\\r\\nSortableTable.getCellIndex = function (oTd) {\\r\\n\\tvar cells = oTd.parentNode.childNodes\\r\\n\\tvar l = cells.length;\\r\\n\\tvar i;\\r\\n\\tfor (i = 0; cells[i] != oTd && i < l; i++)\\r\\n\\t\\t;\\r\\n\\treturn i;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getSortType = function (nColumn) {\\r\\n\\treturn this.sortTypes[nColumn] || \\\"String\\\";\\r\\n};\\r\\n\\r\\n// only nColumn is required\\r\\n// if bDescending is left out the old value is taken into account\\r\\n// if sSortType is left out the sort type is found from the sortTypes array\\r\\n\\r\\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\\r\\n\\tif (!this.tBody) return;\\r\\n\\tif (sSortType == null)\\r\\n\\t\\tsSortType = this.getSortType(nColumn);\\r\\n\\r\\n\\t// exit if None\\r\\n\\tif (sSortType == \\\"None\\\")\\r\\n\\t\\treturn;\\r\\n\\r\\n\\tif (bDescending == null) {\\r\\n\\t\\tif (this.sortColumn != nColumn)\\r\\n\\t\\t\\tthis.descending = this.defaultDescending;\\r\\n\\t\\telse\\r\\n\\t\\t\\tthis.descending = !this.descending;\\r\\n\\t}\\r\\n\\telse\\r\\n\\t\\tthis.descending = bDescending;\\r\\n\\r\\n\\tthis.sortColumn = nColumn;\\r\\n\\r\\n\\tif (typeof this.onbeforesort == \\\"function\\\")\\r\\n\\t\\tthis.onbeforesort();\\r\\n\\r\\n\\tvar f = this.getSortFunction(sSortType, nColumn);\\r\\n\\tvar a = this.getCache(sSortType, nColumn);\\r\\n\\tvar tBody = this.tBody;\\r\\n\\r\\n\\ta.sort(f);\\r\\n\\r\\n\\tif (this.descending)\\r\\n\\t\\ta.reverse();\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// remove from doc\\r\\n\\t\\tvar nextSibling = tBody.nextSibling;\\r\\n\\t\\tvar p = tBody.parentNode;\\r\\n\\t\\tp.removeChild(tBody);\\r\\n\\t}\\r\\n\\r\\n\\t// insert in the new order\\r\\n\\tvar l = a.length;\\r\\n\\tfor (var i = 0; i < l; i++)\\r\\n\\t\\ttBody.appendChild(a[i].element);\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// insert into doc\\r\\n\\t\\tp.insertBefore(tBody, nextSibling);\\r\\n\\t}\\r\\n\\r\\n\\tthis.updateHeaderArrows();\\r\\n\\r\\n\\tthis.destroyCache(a);\\r\\n\\r\\n\\tif (typeof this.onsort == \\\"function\\\")\\r\\n\\t\\tthis.onsort();\\r\\n};\\r\\n\\r\\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\\r\\n\\tvar oThis = this;\\r\\n\\tthis._asyncsort = function () {\\r\\n\\t\\toThis.sort(nColumn, bDescending, sSortType);\\r\\n\\t};\\r\\n\\twindow.setTimeout(this._asyncsort, 1);\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getCache = function (sType, nColumn) {\\r\\n\\tif (!this.tBody) return [];\\r\\n\\tvar rows = this.tBody.rows;\\r\\n\\tvar l = rows.length;\\r\\n\\tvar a = new Array(l);\\r\\n\\tvar r;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tr = rows[i];\\r\\n\\t\\ta[i] = {\\r\\n\\t\\t\\tvalue:\\t\\tthis.getRowValue(r, sType, nColumn),\\r\\n\\t\\t\\telement:\\tr\\r\\n\\t\\t};\\r\\n\\t};\\r\\n\\treturn a;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroyCache = function (oArray) {\\r\\n\\tvar l = oArray.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\toArray[i].value = null;\\r\\n\\t\\toArray[i].element = null;\\r\\n\\t\\toArray[i] = null;\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\\r\\n\\t// if we have defined a custom getRowValue use that\\r\\n\\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\\r\\n\\t\\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\\r\\n\\r\\n\\tvar s;\\r\\n\\tvar c = oRow.cells[nColumn];\\r\\n\\tif (typeof c.innerText != \\\"undefined\\\")\\r\\n\\t\\ts = c.innerText;\\r\\n\\telse\\r\\n\\t\\ts = SortableTable.getInnerText(c);\\r\\n\\treturn this.getValueFromString(s, sType);\\r\\n};\\r\\n\\r\\nSortableTable.getInnerText = function (oNode) {\\r\\n\\tvar s = \\\"\\\";\\r\\n\\tvar cs = oNode.childNodes;\\r\\n\\tvar l = cs.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tswitch (cs[i].nodeType) {\\r\\n\\t\\t\\tcase 1: //ELEMENT_NODE\\r\\n\\t\\t\\t\\ts += SortableTable.getInnerText(cs[i]);\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase 3:\\t//TEXT_NODE\\r\\n\\t\\t\\t\\ts += cs[i].nodeValue;\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\treturn s;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getValueFromString = function (sText, sType) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].getValueFromString( sText );\\r\\n\\treturn sText;\\r\\n\\t/*\\r\\n\\tswitch (sType) {\\r\\n\\t\\tcase \\\"Number\\\":\\r\\n\\t\\t\\treturn Number(sText);\\r\\n\\t\\tcase \\\"CaseInsensitiveString\\\":\\r\\n\\t\\t\\treturn sText.toUpperCase();\\r\\n\\t\\tcase \\\"Date\\\":\\r\\n\\t\\t\\tvar parts = sText.split(\\\"-\\\");\\r\\n\\t\\t\\tvar d = new Date(0);\\r\\n\\t\\t\\td.setFullYear(parts[0]);\\r\\n\\t\\t\\td.setDate(parts[2]);\\r\\n\\t\\t\\td.setMonth(parts[1] - 1);\\r\\n\\t\\t\\treturn d.valueOf();\\r\\n\\t}\\r\\n\\treturn sText;\\r\\n\\t*/\\r\\n\\t};\\r\\n\\r\\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].compare;\\r\\n\\treturn SortableTable.basicCompare;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroy = function () {\\r\\n\\tthis.uninitHeader();\\r\\n\\tvar win = this.document.parentWindow;\\r\\n\\tif (win && typeof win.detachEvent != \\\"undefined\\\") {\\t// only IE needs this\\r\\n\\t\\twin.detachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n\\tthis._onunload = null;\\r\\n\\tthis.element = null;\\r\\n\\tthis.tHead = null;\\r\\n\\tthis.tBody = null;\\r\\n\\tthis.document = null;\\r\\n\\tthis._headerOnclick = null;\\r\\n\\tthis.sortTypes = null;\\r\\n\\tthis._asyncsort = null;\\r\\n\\tthis.onsort = null;\\r\\n};\\r\\n\\r\\n// Adds a sort type to all instance of SortableTable\\r\\n// sType : String - the identifier of the sort type\\r\\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\\r\\n// string and casts it to a desired format. If left out the string is just\\r\\n// returned\\r\\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\\r\\n// compare function. Takes two values and compares them. If left out less than,\\r\\n// <, compare is used\\r\\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\\r\\n// that takes the row and the column index and returns the value used to compare.\\r\\n// If left out then the innerText is first taken for the cell and then the\\r\\n// fGetValueFromString is used to convert that string the desired value and type\\r\\n\\r\\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\\r\\n\\tthis._sortTypeInfo[sType] = {\\r\\n\\t\\ttype:\\t\\t\\t\\tsType,\\r\\n\\t\\tgetValueFromString:\\tfGetValueFromString || SortableTable.idFunction,\\r\\n\\t\\tcompare:\\t\\t\\tfCompareFunction || SortableTable.basicCompare,\\r\\n\\t\\tgetRowValue:\\t\\tfGetRowValue\\r\\n\\t};\\r\\n};\\r\\n\\r\\n// this removes the sort type from all instances of SortableTable\\r\\nSortableTable.prototype.removeSortType = function (sType) {\\r\\n\\tdelete this._sortTypeInfo[sType];\\r\\n};\\r\\n\\r\\nSortableTable.basicCompare = function compare(n1, n2) {\\r\\n\\tif (n1.value < n2.value)\\r\\n\\t\\treturn -1;\\r\\n\\tif (n2.value < n1.value)\\r\\n\\t\\treturn 1;\\r\\n\\treturn 0;\\r\\n};\\r\\n\\r\\nSortableTable.idFunction = function (x) {\\r\\n\\treturn x;\\r\\n};\\r\\n\\r\\nSortableTable.toUpperCase = function (s) {\\r\\n\\treturn s.toUpperCase();\\r\\n};\\r\\n\\r\\nSortableTable.toDate = function (s) {\\r\\n\\tvar parts = s.split(\\\"-\\\");\\r\\n\\tvar d = new Date(0);\\r\\n\\td.setFullYear(parts[0]);\\r\\n\\td.setDate(parts[2]);\\r\\n\\td.setMonth(parts[1] - 1);\\r\\n\\treturn d.valueOf();\\r\\n};\\r\\n\\r\\n\\r\\n// add sort types\\r\\nSortableTable.prototype.addSortType(\\\"Number\\\", Number);\\r\\nSortableTable.prototype.addSortType(\\\"CaseInsensitiveString\\\", SortableTable.toUpperCase);\\r\\nSortableTable.prototype.addSortType(\\\"Date\\\", SortableTable.toDate);\\r\\nSortableTable.prototype.addSortType(\\\"String\\\");\\r\\n// None is a special case\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/raw-loader!./libs/sortabletable.js\n// module id = 447\n// module chunks = 0","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript !== \"undefined\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/script-loader/addScript.js\n// module id = 448\n// module chunks = 0","require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\libs\\\\sortabletable.js\"))\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/script-loader!./libs/sortabletable.js\n// module id = 449\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index c46e6544..03bde781 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tablefilter", - "version": "0.5.23", + "version": "0.5.24", "description": "A Javascript library making HTML tables filterable and a bit more", "license": "MIT", "author": { diff --git a/src/extensions/colsVisibility/colsVisibility.js b/src/extensions/colsVisibility/colsVisibility.js index 5e80ce37..27df8dea 100644 --- a/src/extensions/colsVisibility/colsVisibility.js +++ b/src/extensions/colsVisibility/colsVisibility.js @@ -3,9 +3,10 @@ import { addClass, removeClass, createCheckItem, createElm, elm, removeElm, getText } from '../../dom'; -import {isFn, EMPTY_FN} from '../../types'; +import {isFn, isUndef, EMPTY_FN} from '../../types'; import {addEvt, targetEvt, removeEvt} from '../../event'; import {root} from '../../root'; +import {NONE} from '../../const'; /** * Columns Visibility extension @@ -277,8 +278,8 @@ export default class ColsVisibility extends Feature { if (tf.gridLayout) { this.headersTbl = tf.feature('gridLayout').headTbl; //headers table this.headersIndex = 0; //headers index - this.onAfterColDisplayed = function () { }; - this.onAfterColHidden = function () { }; + // this.onAfterColDisplayed = function () { }; + // this.onAfterColHidden = function () { }; } //Loads extension stylesheet @@ -324,7 +325,7 @@ export default class ColsVisibility extends Feature { } this.contEl.style.display = contDisplay === 'inline' ? - 'none' : 'inline'; + NONE : 'inline'; if (contDisplay !== 'inline') { this.onAfterOpen(this); @@ -459,7 +460,7 @@ export default class ColsVisibility extends Feature { let ul = createElm('ul'); ul.className = this.listCssClass; - let tbl = this.headersTbl ? this.headersTbl : tf.dom(); + let tbl = this.headersTbl || tf.dom(); let headerIndex = this.headersTbl ? this.headersIndex : tf.getHeadersRowIndex(); let headerRow = tbl.rows[headerIndex]; @@ -561,25 +562,26 @@ export default class ColsVisibility extends Feature { } } - let gridLayout; - let headTbl; - let gridColElms; + // let gridLayout; + // let headTbl; + // let gridColElms; if (hide) { //This event is fired just after a column is displayed for //grid_layout support //TODO: grid layout module should be responsible for those //calculations - if (tf.gridLayout) { - gridLayout = tf.feature('gridLayout'); - headTbl = gridLayout.headTbl; - gridColElms = gridLayout.colElms; - let hiddenWidth = parseInt( - gridColElms[colIndex].style.width, 10); + // if (tf.gridLayout) { + // gridLayout = tf.feature('gridLayout'); + // headTbl = gridLayout.headTbl; + // gridColElms = gridLayout.colElms; + // let hiddenWidth = parseInt( + // gridColElms[colIndex].style.width, 10); - let headTblW = parseInt(headTbl.style.width, 10); - headTbl.style.width = headTblW - hiddenWidth + 'px'; - tbl.style.width = headTbl.style.width; - } + // let headTblW = parseInt(headTbl.style.width, 10); + // headTbl.style.width = headTblW - hiddenWidth + 'px'; + // tbl.style.width = headTbl.style.width; + // gridColElms[colIndex].style.width = '0'; + // } this.onAfterColHidden(this, colIndex); this.emitter.emit('column-hidden', tf, this, colIndex, @@ -591,15 +593,17 @@ export default class ColsVisibility extends Feature { //grid_layout support //TODO: grid layout module should be responsible for those //calculations - if (tf.gridLayout) { - gridLayout = tf.feature('gridLayout'); - headTbl = gridLayout.headTbl; - gridColElms = gridLayout.colElms; - let width = parseInt(gridColElms[colIndex].style.width, 10); - headTbl.style.width = - (parseInt(headTbl.style.width, 10) + width) + 'px'; - tf.dom().style.width = headTbl.style.width; - } + // if (tf.gridLayout) { + // gridLayout = tf.feature('gridLayout'); + // headTbl = gridLayout.headTbl; + // gridColElms = gridLayout.colElms; + // let width = parseInt(gridColElms[colIndex].style.width, 10); + // headTbl.style.width = + // (parseInt(headTbl.style.width, 10) + width) + 'px'; + // tf.dom().style.width = headTbl.style.width; + // // gridColElms[colIndex].style.width = '0'; + // // gridLayout.setDefaultColWidths(); + // } this.onAfterColDisplayed(this, colIndex); this.emitter.emit('column-shown', tf, this, colIndex, @@ -612,7 +616,7 @@ export default class ColsVisibility extends Feature { * @param {Number} colIndex Column index */ showCol(colIndex) { - if (colIndex === undefined || !this.isColHidden(colIndex)) { + if (isUndef(colIndex) || !this.isColHidden(colIndex)) { return; } if (this.manager && this.contEl) { @@ -630,7 +634,7 @@ export default class ColsVisibility extends Feature { * @param {Number} colIndex Column index */ hideCol(colIndex) { - if (colIndex === undefined || this.isColHidden(colIndex)) { + if (isUndef(colIndex) || this.isColHidden(colIndex)) { return; } if (this.manager && this.contEl) { @@ -659,7 +663,7 @@ export default class ColsVisibility extends Feature { * @param {Number} colIndex Column index */ toggleCol(colIndex) { - if (colIndex === undefined || this.isColHidden(colIndex)) { + if (isUndef(colIndex) || this.isColHidden(colIndex)) { this.showCol(colIndex); } else { this.hideCol(colIndex); @@ -726,7 +730,7 @@ export default class ColsVisibility extends Feature { let row = tbl.rows[i]; let cell = row.cells[colIndex]; if (cell) { - cell.style.display = hide ? 'none' : ''; + cell.style.display = hide ? NONE : ''; } } } diff --git a/src/modules/gridLayout.js b/src/modules/gridLayout.js index 81b482ce..f05f8190 100644 --- a/src/modules/gridLayout.js +++ b/src/modules/gridLayout.js @@ -288,6 +288,32 @@ export class GridLayout extends Feature { tbl.style.width = this.headTbl.clientWidth + 'px'; } + this.emitter.on(['column-hidden'], + (tf, extension, colIndex/*, hiddenCols*/) => { + // let hiddenWidth = parseInt( + // this.colElms[colIndex].style.width, 10); + // let headCols = tag(this.headTbl, 'col'); + // headCols[colIndex].style.width = '0'; + // this.colElms[colIndex].style.width = '0'; + let headTblW = parseInt(this.headTbl.style.width, 10); + let hiddenWidth = parseInt( + this.colElms[colIndex].style.width, 10); + this.headTbl.style.width = (headTblW - hiddenWidth) + 'px'; + tbl.style.width = this.headTbl.style.width; + }); + + this.emitter.on(['column-shown'], + (tf, extension, colIndex/*, hiddenCols*/) => { + let width = parseInt(this.colElms[colIndex].style.width, 10); + // let headCols = tag(this.headTbl, 'col'); + // headCols[colIndex].style.width = tf.colWidths[colIndex]; + // this.colElms[colIndex].style.width = tf.colWidths[colIndex]; + let headTblW = parseInt(this.headTbl.style.width, 10); + // console.log('show',headTblW); + this.headTbl.style.width = (headTblW + width) + 'px'; + tbl.style.width = this.headTbl.style.width; + }); + /** @inherited */ this.initialized = true; } diff --git a/static/style/grid-layout.styl b/static/style/grid-layout.styl index 25163284..a1c12289 100644 --- a/static/style/grid-layout.styl +++ b/static/style/grid-layout.styl @@ -11,7 +11,6 @@ div.grd_Cont width 800px height auto overflow hidden - padding 3px 3px 3px 3px background-color $grid-layout-bg-color border 1px solid $grid-layout-border-color @@ -65,7 +64,7 @@ div.grd_headTblCont table box-sizing initial div.grd_tblCont table - border-right 1px solid $grid-layout-border-color + //border-right 1px solid $grid-layout-border-color box-sizing initial // headers diff --git a/static/templates/columns-visibility.html b/static/templates/columns-visibility.html index b2f9c145..0de0d1ec 100644 --- a/static/templates/columns-visibility.html +++ b/static/templates/columns-visibility.html @@ -32,6 +32,9 @@ var tfConfig = { 'formatted-number', 'formatted-number', 'string' ], paging: true, + grid_layout: { + // width: '500px' + }, state: { types: ['cookie'], filters: true,