戒酒的李白

【代码优化】优化静态js、css文件的加载方式

Too many changes to show.

To preserve performance only 25 of 25+ files are displayed.

1 -table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable>thead>tr>td:active,table.dataTable>thead>tr>th:active{outline:none}table.dataTable>thead>tr>td:not(.sorting_disabled),table.dataTable>thead>tr>th:not(.sorting_disabled){padding-right:30px}table.dataTable>thead .sorting,table.dataTable>thead .sorting_asc,table.dataTable>thead .sorting_asc_disabled,table.dataTable>thead .sorting_desc,table.dataTable>thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable>thead .sorting:after,table.dataTable>thead .sorting:before,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_desc_disabled:after,table.dataTable>thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3}table.dataTable>thead .sorting:before,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_desc_disabled:before{right:1em;content:"↑"}table.dataTable>thead .sorting:after,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_desc_disabled:after{right:.5em;content:"↓"}table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_desc:after{opacity:1}table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:after,div.dataTables_scrollBody table thead .sorting_desc:before{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center!important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:1px}div.dataTables_scrollHead table.table-bordered,table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}  
2 -/*!  
3 - * Quill Editor v1.3.7  
4 - * https://quilljs.com/  
5 - * Copyright (c) 2014, Jason Chen  
6 - * Copyright (c) 2013, salesforce.com  
7 - */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:a b c d e f g h i}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:a b c d e f g h i;counter-increment:j}.ql-editor ol li:before{content:counter(j,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:a}.ql-editor ol li.ql-indent-1:before{content:counter(a,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:b c d e f g h i}.ql-editor ol li.ql-indent-2{counter-increment:b}.ql-editor ol li.ql-indent-2:before{content:counter(b,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:c d e f g h i}.ql-editor ol li.ql-indent-3{counter-increment:c}.ql-editor ol li.ql-indent-3:before{content:counter(c,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:d e f g h i}.ql-editor ol li.ql-indent-4{counter-increment:d}.ql-editor ol li.ql-indent-4:before{content:counter(d,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:e f g h i}.ql-editor ol li.ql-indent-5{counter-increment:e}.ql-editor ol li.ql-indent-5:before{content:counter(e,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:f g h i}.ql-editor ol li.ql-indent-6{counter-increment:f}.ql-editor ol li.ql-indent-6:before{content:counter(f,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:g h i}.ql-editor ol li.ql-indent-7{counter-increment:g}.ql-editor ol li.ql-indent-7:before{content:counter(g,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:h i}.ql-editor ol li.ql-indent-8{counter-increment:h}.ql-editor ol li.ql-indent-8:before{content:counter(h,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:i}.ql-editor ol li.ql-indent-9{counter-increment:i}.ql-editor ol li.ql-indent-9:before{content:counter(i,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}  
8 -.gu-mirror{position:fixed!important;margin:0!important;z-index:1!important;opacity:.8}.gu-hide{display:none!important}.gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.gu-transit{opacity:.2}  
9 -.apexcharts-canvas{position:relative;user-select:none}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,.5);box-shadow:0 0 1px hsla(0,0%,100%,.5);-webkit-box-shadow:0 0 1px hsla(0,0%,100%,.5)}.apexcharts-inner{position:relative}.apexcharts-text tspan{font-family:inherit}.legend-mouseover-inactive{transition:all .15s ease;opacity:.2}.apexcharts-series-collapsed{opacity:0}.apexcharts-tooltip{border-radius:5px;box-shadow:2px 2px 6px -4px #999;cursor:default;font-size:14px;left:62px;opacity:0;pointer-events:none;position:absolute;top:20px;display:flex;flex-direction:column;overflow:hidden;white-space:nowrap;z-index:3;transition:all .15s ease}.apexcharts-tooltip.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-tooltip.apexcharts-theme-light{border:1px solid #e3e3e3;background:hsla(0,0%,100%,.96)}.apexcharts-tooltip.apexcharts-theme-dark{color:#fff;background:rgba(30,30,30,.8)}.apexcharts-tooltip *{font-family:inherit}.apexcharts-tooltip-title{padding:6px;font-size:15px;margin-bottom:4px}.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title{background:#eceff1;border-bottom:1px solid #ddd}.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title{background:rgba(0,0,0,.7);border-bottom:1px solid #333}.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px}.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty{display:none}.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{font-weight:600}.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{padding:6px 0 5px}.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{display:flex}.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty){margin-top:-6px}.apexcharts-tooltip-marker{width:12px;height:12px;position:relative;top:0;margin-right:10px;border-radius:50%}.apexcharts-tooltip-series-group{padding:0 10px;display:none;text-align:left;justify-content:left;align-items:center}.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child{padding-bottom:4px}.apexcharts-tooltip-series-group-hidden{opacity:0;height:0;line-height:0;padding:0!important}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-custom-tooltip,.apexcharts-tooltip-box{padding:4px 8px}.apexcharts-tooltip-boxPlot{display:flex;flex-direction:column-reverse}.apexcharts-tooltip-box>div{margin:4px 0}.apexcharts-tooltip-box span.value{font-weight:700}.apexcharts-tooltip-rangebar{padding:5px 8px}.apexcharts-tooltip-rangebar .category{font-weight:600;color:#777}.apexcharts-tooltip-rangebar .series-name{font-weight:700;display:block;margin-bottom:5px}.apexcharts-xaxistooltip{opacity:0;padding:9px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:1;background:#eceff1;border:1px solid #90a4ae;transition:all .15s ease}.apexcharts-xaxistooltip.apexcharts-theme-dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-left:-7px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:#eceff1}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:#90a4ae}.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before{border-bottom-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip-top:after{border-top-color:#eceff1}.apexcharts-xaxistooltip-top:before{border-top-color:#90a4ae}.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before{border-top-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-yaxistooltip{opacity:0;padding:4px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:1;background:#eceff1;border:1px solid #90a4ae}.apexcharts-yaxistooltip.apexcharts-theme-dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-top:-7px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-left:after{border-left-color:#eceff1}.apexcharts-yaxistooltip-left:before{border-left-color:#90a4ae}.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before{border-left-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip-right:after{border-right-color:#eceff1}.apexcharts-yaxistooltip-right:before{border-right-color:#90a4ae}.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before{border-right-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip.apexcharts-active{opacity:1}.apexcharts-yaxistooltip-hidden{display:none}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:all .15s ease}.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-selection-rect{cursor:move}.svg_select_boundingRect,.svg_select_points_rot{pointer-events:none;opacity:0;visibility:hidden}.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot{opacity:0;visibility:hidden}.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r{cursor:ew-resize;opacity:1;visibility:visible}.svg_select_points{fill:#efefef;stroke:#333;rx:2}.apexcharts-svg.apexcharts-zoomable.hovering-zoom{cursor:crosshair}.apexcharts-svg.apexcharts-zoomable.hovering-pan{cursor:move}.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{cursor:pointer;width:20px;height:20px;line-height:24px;color:#6e8192;text-align:center}.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg{fill:#6e8192}.apexcharts-selection-icon svg{fill:#444;transform:scale(.76)}.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg{fill:#f3f4f5}.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg{fill:#008ffb}.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg{fill:#333}.apexcharts-menu-icon,.apexcharts-selection-icon{position:relative}.apexcharts-reset-icon{margin-left:5px}.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon{transform:scale(.85)}.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{transform:scale(.7)}.apexcharts-zoomout-icon{margin-right:3px}.apexcharts-pan-icon{transform:scale(.62);position:relative;left:1px;top:0}.apexcharts-pan-icon svg{fill:#fff;stroke:#6e8192;stroke-width:2}.apexcharts-pan-icon.apexcharts-selected svg{stroke:#008ffb}.apexcharts-pan-icon:not(.apexcharts-selected):hover svg{stroke:#333}.apexcharts-toolbar{position:absolute;z-index:2;max-width:176px;text-align:right;border-radius:3px;padding:0 6px 2px;display:flex;justify-content:space-between;align-items:center}.apexcharts-menu{background:#fff;position:absolute;top:100%;border:1px solid #ddd;border-radius:3px;padding:3px;right:10px;opacity:0;min-width:110px;transition:all .15s ease;pointer-events:none}.apexcharts-menu.apexcharts-menu-open{opacity:1;pointer-events:all;transition:all .15s ease}.apexcharts-menu-item{padding:6px 7px;font-size:12px;cursor:pointer}.apexcharts-theme-light .apexcharts-menu-item:hover{background:#eee}.apexcharts-theme-dark .apexcharts-menu{background:rgba(0,0,0,.7);color:#fff}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-datalabel.apexcharts-element-hidden{opacity:0}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label{cursor:default;pointer-events:none}.apexcharts-pie-label-delay{opacity:0;animation-name:a;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease}.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-zoom-rect{pointer-events:none}.apexcharts-marker{transition:all .15s ease}@keyframes a{0%{opacity:0}to{opacity:1}}@keyframes b{0%{opacity:0}to{opacity:0}}.resize-triggers{animation:1ms b;visibility:hidden;opacity:0}.contract-trigger:before,.resize-triggers,.resize-triggers>div{content:" ";display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-triggers>div{background:#eee;overflow:auto}.contract-trigger:before{width:200%;height:200%}  
10 -.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:8}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:3}.leaflet-tile-pane{z-index:2}.leaflet-overlay-pane{z-index:3}.leaflet-shadow-pane{z-index:4}.leaflet-marker-pane{z-index:5}.leaflet-tooltip-pane{z-index:6}.leaflet-popup-pane{z-index:7}.leaflet-map-pane canvas{z-index:1}.leaflet-map-pane svg{z-index:2}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/backend-plugin.min.css#default);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:8;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:9;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline:0}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}.leaflet-zoom-box{border:2px dotted #38f;background:hsla(0,0%,100%,.5)}.leaflet-container{font:12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers-expanded .leaflet-control-layers-toggle,.leaflet-control-layers .leaflet-control-layers-list{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:hsla(0,0%,100%,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;box-sizing:border-box;background:#fff;background:hsla(0,0%,100%,.5)}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 19px;line-height:1.4}.leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678)}.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}  
This diff could not be displayed because it is too large.
1 -/* latin-ext */  
2 -@font-face {  
3 - font-family: 'DM Sans';  
4 - font-style: normal;  
5 - font-weight: 400;  
6 - font-display: swap;  
7 - src: url(../font/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format('woff2');  
8 - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;  
9 -}  
10 -/* latin */  
11 -@font-face {  
12 - font-family: 'DM Sans';  
13 - font-style: normal;  
14 - font-weight: 400;  
15 - font-display: swap;  
16 - src: url(../font/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2');  
17 - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;  
18 -}  
19 -/* latin-ext */  
20 -@font-face {  
21 - font-family: 'DM Sans';  
22 - font-style: normal;  
23 - font-weight: 500;  
24 - font-display: swap;  
25 - src: url(../font/rP2Cp2ywxg089UriAWCrCBamC2QX.woff2) format('woff2');  
26 - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;  
27 -}  
28 -/* latin */  
29 -@font-face {  
30 - font-family: 'DM Sans';  
31 - font-style: normal;  
32 - font-weight: 500;  
33 - font-display: swap;  
34 - src: url(../font/rP2Cp2ywxg089UriAWCrCBimCw.woff2) format('woff2');  
35 - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;  
36 -}  
37 -/* latin-ext */  
38 -@font-face {  
39 - font-family: 'DM Sans';  
40 - font-style: normal;  
41 - font-weight: 700;  
42 - font-display: swap;  
43 - src: url(../font/rP2Cp2ywxg089UriASitCBamC2QX.woff2) format('woff2');  
44 - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;  
45 -}  
46 -/* latin */  
47 -@font-face {  
48 - font-family: 'DM Sans';  
49 - font-style: normal;  
50 - font-weight: 700;  
51 - font-display: swap;  
52 - src: url(../font/rP2Cp2ywxg089UriASitCBimCw.woff2) format('woff2');  
53 - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;  
54 -}  
1 -  
2 -.fc {  
3 - direction: ltr;  
4 - text-align: left;  
5 -}  
6 -  
7 -.fc-rtl {  
8 - text-align: right;  
9 -}  
10 -  
11 -body .fc {  
12 - /* extra precedence to overcome jqui */  
13 - font-size: 1em;  
14 -}  
15 -  
16 -/* Colors  
17 ---------------------------------------------------------------------------------------------------*/  
18 -.fc-highlight {  
19 - /* when user is selecting cells */  
20 - background: #bce8f1;  
21 - opacity: 0.3;  
22 -}  
23 -  
24 -.fc-bgevent {  
25 - /* default look for background events */  
26 - background: #8fdf82;  
27 - opacity: 0.3;  
28 -}  
29 -  
30 -.fc-nonbusiness {  
31 - /* default look for non-business-hours areas */  
32 - /* will inherit .fc-bgevent's styles */  
33 - background: #d7d7d7;  
34 -}  
35 -  
36 -/* Popover  
37 ---------------------------------------------------------------------------------------------------*/  
38 -.fc-popover {  
39 - position: absolute;  
40 - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);  
41 -}  
42 -  
43 -.fc-popover .fc-header {  
44 - /* TODO: be more consistent with fc-head/fc-body */  
45 - display: flex;  
46 - flex-direction: row;  
47 - justify-content: space-between;  
48 - align-items: center;  
49 - padding: 2px 4px;  
50 -}  
51 -  
52 -.fc-rtl .fc-popover .fc-header {  
53 - flex-direction: row-reverse;  
54 -}  
55 -  
56 -.fc-popover .fc-header .fc-title {  
57 - margin: 0 2px;  
58 -}  
59 -  
60 -.fc-popover .fc-header .fc-close {  
61 - cursor: pointer;  
62 - opacity: 0.65;  
63 - font-size: 1.1em;  
64 -}  
65 -  
66 -/* Misc Reusable Components  
67 ---------------------------------------------------------------------------------------------------*/  
68 -.fc-divider {  
69 - border-style: solid;  
70 - border-width: 1px;  
71 -}  
72 -  
73 -hr.fc-divider {  
74 - height: 0;  
75 - margin: 0;  
76 - padding: 0 0 2px;  
77 - /* height is unreliable across browsers, so use padding */  
78 - border-width: 1px 0;  
79 -}  
80 -  
81 -.fc-bg,  
82 -.fc-bgevent-skeleton,  
83 -.fc-highlight-skeleton,  
84 -.fc-mirror-skeleton {  
85 - /* these element should always cling to top-left/right corners */  
86 - position: absolute;  
87 - top: 0;  
88 - left: 0;  
89 - right: 0;  
90 -}  
91 -  
92 -.fc-bg {  
93 - bottom: 0;  
94 - /* strech bg to bottom edge */  
95 -}  
96 -  
97 -.fc-bg table {  
98 - height: 100%;  
99 - /* strech bg to bottom edge */  
100 -}  
101 -  
102 -/* Tables  
103 ---------------------------------------------------------------------------------------------------*/  
104 -.fc table {  
105 - width: 100%;  
106 - box-sizing: border-box;  
107 - /* fix scrollbar issue in firefox */  
108 - table-layout: fixed;  
109 - border-collapse: collapse;  
110 - border-spacing: 0;  
111 - font-size: 1em;  
112 - /* normalize cross-browser */  
113 -}  
114 -  
115 -.fc th {  
116 - text-align: center;  
117 -}  
118 -  
119 -.fc th,  
120 -.fc td {  
121 - border-style: solid;  
122 - border-width: 1px;  
123 - padding: 0;  
124 - vertical-align: top;  
125 -}  
126 -  
127 -.fc td.fc-today {  
128 - border-style: double;  
129 - /* overcome neighboring borders */  
130 -}  
131 -  
132 -/* Internal Nav Links  
133 ---------------------------------------------------------------------------------------------------*/  
134 -a[data-goto] {  
135 - cursor: pointer;  
136 -}  
137 -  
138 -a[data-goto]:hover {  
139 - text-decoration: underline;  
140 -}  
141 -  
142 -/* Fake Table Rows  
143 ---------------------------------------------------------------------------------------------------*/  
144 -.fc .fc-row {  
145 - /* extra precedence to overcome themes forcing a 1px border */  
146 - /* no visible border by default. but make available if need be (scrollbar width compensation) */  
147 - border-style: solid;  
148 - border-width: 0;  
149 -}  
150 -  
151 -.fc-row table {  
152 - /* don't put left/right border on anything within a fake row.  
153 - the outer tbody will worry about this */  
154 - border-left: 0 hidden transparent;  
155 - border-right: 0 hidden transparent;  
156 - /* no bottom borders on rows */  
157 - border-bottom: 0 hidden transparent;  
158 -}  
159 -  
160 -.fc-row:first-child table {  
161 - border-top: 0 hidden transparent;  
162 - /* no top border on first row */  
163 -}  
164 -  
165 -/* Day Row (used within the header and the DayGrid)  
166 ---------------------------------------------------------------------------------------------------*/  
167 -.fc-row {  
168 - position: relative;  
169 -}  
170 -  
171 -.fc-row .fc-bg {  
172 - z-index: 1;  
173 -}  
174 -  
175 -/* highlighting cells & background event skeleton */  
176 -.fc-row .fc-bgevent-skeleton,  
177 -.fc-row .fc-highlight-skeleton {  
178 - bottom: 0;  
179 - /* stretch skeleton to bottom of row */  
180 -}  
181 -  
182 -.fc-row .fc-bgevent-skeleton table,  
183 -.fc-row .fc-highlight-skeleton table {  
184 - height: 100%;  
185 - /* stretch skeleton to bottom of row */  
186 -}  
187 -  
188 -.fc-row .fc-highlight-skeleton td,  
189 -.fc-row .fc-bgevent-skeleton td {  
190 - border-color: transparent;  
191 -}  
192 -  
193 -.fc-row .fc-bgevent-skeleton {  
194 - z-index: 2;  
195 -}  
196 -  
197 -.fc-row .fc-highlight-skeleton {  
198 - z-index: 3;  
199 -}  
200 -  
201 -/*  
202 -row content (which contains day/week numbers and events) as well as "mirror" (which contains  
203 -temporary rendered events).  
204 -*/  
205 -.fc-row .fc-content-skeleton {  
206 - position: relative;  
207 - z-index: 4;  
208 - padding-bottom: 2px;  
209 - /* matches the space above the events */  
210 -}  
211 -  
212 -.fc-row .fc-mirror-skeleton {  
213 - z-index: 5;  
214 -}  
215 -  
216 -.fc .fc-row .fc-content-skeleton table,  
217 -.fc .fc-row .fc-content-skeleton td,  
218 -.fc .fc-row .fc-mirror-skeleton td {  
219 - /* see-through to the background below */  
220 - /* extra precedence to prevent theme-provided backgrounds */  
221 - background: none;  
222 - /* in case <td>s are globally styled */  
223 - border-color: transparent;  
224 -}  
225 -  
226 -.fc-row .fc-content-skeleton td,  
227 -.fc-row .fc-mirror-skeleton td {  
228 - /* don't put a border between events and/or the day number */  
229 - border-bottom: 0;  
230 -}  
231 -  
232 -.fc-row .fc-content-skeleton tbody td,  
233 -.fc-row .fc-mirror-skeleton tbody td {  
234 - /* don't put a border between event cells */  
235 - border-top: 0;  
236 -}  
237 -  
238 -/* Scrolling Container  
239 ---------------------------------------------------------------------------------------------------*/  
240 -.fc-scroller {  
241 - -webkit-overflow-scrolling: touch;  
242 -}  
243 -  
244 -/* TODO: move to timegrid/daygrid */  
245 -.fc-scroller > .fc-day-grid,  
246 -.fc-scroller > .fc-time-grid {  
247 - position: relative;  
248 - /* re-scope all positions */  
249 - width: 100%;  
250 - /* hack to force re-sizing this inner element when scrollbars appear/disappear */  
251 -}  
252 -  
253 -/* Global Event Styles  
254 ---------------------------------------------------------------------------------------------------*/  
255 -.fc-event {  
256 - position: relative;  
257 - /* for resize handle and other inner positioning */  
258 - display: block;  
259 - /* make the <a> tag block */  
260 - font-size: 0.85em;  
261 - line-height: 1.4;  
262 - border-radius: 3px;  
263 - border: 1px solid #3788d8;  
264 - color: #ffffff !important;  
265 -}  
266 -  
267 -.fc-event,  
268 -.fc-event-dot {  
269 - background-color: #3788d8;  
270 - /* default BACKGROUND color */  
271 -}  
272 -  
273 -.fc-event,  
274 -.fc-event:hover {  
275 - color: #fff;  
276 - /* default TEXT color */  
277 - text-decoration: none;  
278 - /* if <a> has an href */  
279 -}  
280 -  
281 -.fc-event[href],  
282 -.fc-event.fc-draggable {  
283 - cursor: pointer;  
284 - /* give events with links and draggable events a hand mouse pointer */  
285 -}  
286 -  
287 -.fc-not-allowed,  
288 -.fc-not-allowed .fc-event {  
289 - /* to override an event's custom cursor */  
290 - cursor: not-allowed;  
291 -}  
292 -  
293 -.fc-event .fc-content {  
294 - position: relative;  
295 - z-index: 2;  
296 -}  
297 -  
298 -/* resizer (cursor AND touch devices) */  
299 -.fc-event .fc-resizer {  
300 - position: absolute;  
301 - z-index: 4;  
302 -}  
303 -  
304 -/* resizer (touch devices) */  
305 -.fc-event .fc-resizer {  
306 - display: none;  
307 -}  
308 -  
309 -.fc-event.fc-allow-mouse-resize .fc-resizer,  
310 -.fc-event.fc-selected .fc-resizer {  
311 - /* only show when hovering or selected (with touch) */  
312 - display: block;  
313 -}  
314 -  
315 -/* hit area */  
316 -.fc-event.fc-selected .fc-resizer:before {  
317 - /* 40x40 touch area */  
318 - content: "";  
319 - position: absolute;  
320 - z-index: 9999;  
321 - /* user of this util can scope within a lower z-index */  
322 - top: 50%;  
323 - left: 50%;  
324 - width: 40px;  
325 - height: 40px;  
326 - margin-left: -20px;  
327 - margin-top: -20px;  
328 -}  
329 -  
330 -/* Event Selection (only for touch devices)  
331 ---------------------------------------------------------------------------------------------------*/  
332 -.fc-event.fc-selected {  
333 - z-index: 9999 !important;  
334 - /* overcomes inline z-index */  
335 - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);  
336 -}  
337 -  
338 -.fc-event.fc-selected:after {  
339 - content: "";  
340 - position: absolute;  
341 - z-index: 1;  
342 - /* same z-index as fc-bg, behind text */  
343 - /* overcome the borders */  
344 - top: -1px;  
345 - right: -1px;  
346 - bottom: -1px;  
347 - left: -1px;  
348 - /* darkening effect */  
349 - background: #000;  
350 - opacity: 0.25;  
351 -}  
352 -  
353 -/* Event Dragging  
354 ---------------------------------------------------------------------------------------------------*/  
355 -.fc-event.fc-dragging.fc-selected {  
356 - box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);  
357 -}  
358 -  
359 -.fc-event.fc-dragging:not(.fc-selected) {  
360 - opacity: 0.75;  
361 -}  
362 -  
363 -/* Horizontal Events  
364 ---------------------------------------------------------------------------------------------------*/  
365 -/* bigger touch area when selected */  
366 -.fc-h-event.fc-selected:before {  
367 - content: "";  
368 - position: absolute;  
369 - z-index: 3;  
370 - /* below resizers */  
371 - top: -10px;  
372 - bottom: -10px;  
373 - left: 0;  
374 - right: 0;  
375 -}  
376 -  
377 -/* events that are continuing to/from another week. kill rounded corners and butt up against edge */  
378 -.fc-ltr .fc-h-event.fc-not-start,  
379 -.fc-rtl .fc-h-event.fc-not-end {  
380 - margin-left: 0;  
381 - border-left-width: 0;  
382 - padding-left: 1px;  
383 - /* replace the border with padding */  
384 - border-top-left-radius: 0;  
385 - border-bottom-left-radius: 0;  
386 -}  
387 -  
388 -.fc-ltr .fc-h-event.fc-not-end,  
389 -.fc-rtl .fc-h-event.fc-not-start {  
390 - margin-right: 0;  
391 - border-right-width: 0;  
392 - padding-right: 1px;  
393 - /* replace the border with padding */  
394 - border-top-right-radius: 0;  
395 - border-bottom-right-radius: 0;  
396 -}  
397 -  
398 -/* resizer (cursor AND touch devices) */  
399 -/* left resizer */  
400 -.fc-ltr .fc-h-event .fc-start-resizer,  
401 -.fc-rtl .fc-h-event .fc-end-resizer {  
402 - cursor: w-resize;  
403 - left: -1px;  
404 - /* overcome border */  
405 -}  
406 -  
407 -/* right resizer */  
408 -.fc-ltr .fc-h-event .fc-end-resizer,  
409 -.fc-rtl .fc-h-event .fc-start-resizer {  
410 - cursor: e-resize;  
411 - right: -1px;  
412 - /* overcome border */  
413 -}  
414 -  
415 -/* resizer (mouse devices) */  
416 -.fc-h-event.fc-allow-mouse-resize .fc-resizer {  
417 - width: 7px;  
418 - top: -1px;  
419 - /* overcome top border */  
420 - bottom: -1px;  
421 - /* overcome bottom border */  
422 -}  
423 -  
424 -/* resizer (touch devices) */  
425 -.fc-h-event.fc-selected .fc-resizer {  
426 - /* 8x8 little dot */  
427 - border-radius: 4px;  
428 - border-width: 1px;  
429 - width: 6px;  
430 - height: 6px;  
431 - border-style: solid;  
432 - border-color: inherit;  
433 - background: #fff;  
434 - /* vertically center */  
435 - top: 50%;  
436 - margin-top: -4px;  
437 -}  
438 -  
439 -/* left resizer */  
440 -.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,  
441 -.fc-rtl .fc-h-event.fc-selected .fc-end-resizer {  
442 - margin-left: -4px;  
443 - /* centers the 8x8 dot on the left edge */  
444 -}  
445 -  
446 -/* right resizer */  
447 -.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,  
448 -.fc-rtl .fc-h-event.fc-selected .fc-start-resizer {  
449 - margin-right: -4px;  
450 - /* centers the 8x8 dot on the right edge */  
451 -}  
452 -  
453 -/* DayGrid events  
454 -----------------------------------------------------------------------------------------------------  
455 -We use the full "fc-day-grid-event" class instead of using descendants because the event won't  
456 -be a descendant of the grid when it is being dragged.  
457 -*/  
458 -.fc-day-grid-event {  
459 - margin: 1px 2px 0;  
460 - /* spacing between events and edges */  
461 - padding: 0 1px;  
462 -}  
463 -  
464 -tr:first-child > td > .fc-day-grid-event {  
465 - margin-top: 2px;  
466 - /* a little bit more space before the first event */  
467 -}  
468 -  
469 -.fc-mirror-skeleton tr:first-child > td > .fc-day-grid-event {  
470 - margin-top: 0;  
471 - /* except for mirror skeleton */  
472 -}  
473 -  
474 -.fc-day-grid-event .fc-content {  
475 - /* force events to be one-line tall */  
476 - white-space: nowrap;  
477 - overflow: hidden;  
478 -}  
479 -  
480 -.fc-day-grid-event .fc-time {  
481 - font-weight: bold;  
482 -}  
483 -  
484 -/* resizer (cursor devices) */  
485 -/* left resizer */  
486 -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,  
487 -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {  
488 - margin-left: -2px;  
489 - /* to the day cell's edge */  
490 -}  
491 -  
492 -/* right resizer */  
493 -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,  
494 -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {  
495 - margin-right: -2px;  
496 - /* to the day cell's edge */  
497 -}  
498 -  
499 -/* Event Limiting  
500 ---------------------------------------------------------------------------------------------------*/  
501 -/* "more" link that represents hidden events */  
502 -a.fc-more {  
503 - margin: 1px 3px;  
504 - font-size: 0.85em;  
505 - cursor: pointer;  
506 - text-decoration: none;  
507 -}  
508 -  
509 -a.fc-more:hover {  
510 - text-decoration: underline;  
511 -}  
512 -  
513 -.fc-limited {  
514 - /* rows and cells that are hidden because of a "more" link */  
515 - display: none;  
516 -}  
517 -  
518 -/* popover that appears when "more" link is clicked */  
519 -.fc-day-grid .fc-row {  
520 - z-index: 1;  
521 - /* make the "more" popover one higher than this */  
522 -}  
523 -  
524 -.fc-more-popover {  
525 - z-index: 2;  
526 - width: 220px;  
527 -}  
528 -  
529 -.fc-more-popover .fc-event-container {  
530 - padding: 10px;  
531 -}  
532 -  
533 -/* Now Indicator  
534 ---------------------------------------------------------------------------------------------------*/  
535 -.fc-now-indicator {  
536 - position: absolute;  
537 - border: 0 solid red;  
538 -}  
539 -  
540 -/* Utilities  
541 ---------------------------------------------------------------------------------------------------*/  
542 -.fc-unselectable {  
543 - -webkit-user-select: none;  
544 - -khtml-user-select: none;  
545 - -moz-user-select: none;  
546 - -ms-user-select: none;  
547 - user-select: none;  
548 - -webkit-touch-callout: none;  
549 - -webkit-tap-highlight-color: rgba(0, 0, 0, 0);  
550 -}  
551 -  
552 -/*  
553 -TODO: more distinction between this file and common.css  
554 -*/  
555 -/* Colors  
556 ---------------------------------------------------------------------------------------------------*/  
557 -.fc-unthemed th,  
558 -.fc-unthemed td,  
559 -.fc-unthemed thead,  
560 -.fc-unthemed tbody,  
561 -.fc-unthemed .fc-divider,  
562 -.fc-unthemed .fc-row,  
563 -.fc-unthemed .fc-content,  
564 -.fc-unthemed .fc-popover,  
565 -.fc-unthemed .fc-list-view,  
566 -.fc-unthemed .fc-list-heading td {  
567 - border-color: #ddd;  
568 -}  
569 -  
570 -.fc-unthemed .fc-popover {  
571 - background-color: #fff;  
572 -}  
573 -  
574 -.fc-unthemed .fc-divider,  
575 -.fc-unthemed .fc-popover .fc-header,  
576 -.fc-unthemed .fc-list-heading td {  
577 - background: #eee;  
578 -}  
579 -  
580 -.fc-unthemed td.fc-today {  
581 - background: #fcf8e3;  
582 -}  
583 -  
584 -.fc-unthemed .fc-disabled-day {  
585 - background: #d7d7d7;  
586 - opacity: 0.3;  
587 -}  
588 -  
589 -/* Icons  
590 ---------------------------------------------------------------------------------------------------  
591 -from https://feathericons.com/ and built with IcoMoon  
592 -*/  
593 -@font-face {  
594 - font-family: "fcicons";  
595 - src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");  
596 - font-weight: normal;  
597 - font-style: normal;  
598 -}  
599 -.fc-icon {  
600 - /* use !important to prevent issues with browser extensions that change fonts */  
601 - font-family: "fcicons" !important;  
602 - speak: none;  
603 - font-style: normal;  
604 - font-weight: normal;  
605 - font-variant: normal;  
606 - text-transform: none;  
607 - line-height: 1;  
608 - /* Better Font Rendering =========== */  
609 - -webkit-font-smoothing: antialiased;  
610 - -moz-osx-font-smoothing: grayscale;  
611 -}  
612 -  
613 -.fc-icon-chevron-left:before {  
614 - content: "";  
615 -}  
616 -  
617 -.fc-icon-chevron-right:before {  
618 - content: "";  
619 -}  
620 -  
621 -.fc-icon-chevrons-left:before {  
622 - content: "";  
623 -}  
624 -  
625 -.fc-icon-chevrons-right:before {  
626 - content: "";  
627 -}  
628 -  
629 -.fc-icon-minus-square:before {  
630 - content: "";  
631 -}  
632 -  
633 -.fc-icon-plus-square:before {  
634 - content: "";  
635 -}  
636 -  
637 -.fc-icon-x:before {  
638 - content: "";  
639 -}  
640 -  
641 -.fc-icon {  
642 - display: inline-block;  
643 - width: 1em;  
644 - height: 1em;  
645 - text-align: center;  
646 -}  
647 -  
648 -/* Buttons  
649 ---------------------------------------------------------------------------------------------------  
650 -Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css  
651 -*/  
652 -/* reset */  
653 -.fc-button {  
654 - border-radius: 0;  
655 - overflow: visible;  
656 - text-transform: none;  
657 - margin: 0;  
658 - font-family: inherit;  
659 - font-size: inherit;  
660 - line-height: inherit;  
661 -}  
662 -  
663 -.fc-button:focus {  
664 - outline: 1px dotted;  
665 - outline: 5px auto -webkit-focus-ring-color;  
666 -}  
667 -  
668 -.fc-button {  
669 - -webkit-appearance: button;  
670 -}  
671 -  
672 -.fc-button:not(:disabled) {  
673 - cursor: pointer;  
674 -}  
675 -  
676 -.fc-button::-moz-focus-inner {  
677 - padding: 0;  
678 - border-style: none;  
679 -}  
680 -  
681 -/* theme */  
682 -.fc-button {  
683 - display: inline-block;  
684 - font-weight: 400;  
685 - color: #212529;  
686 - text-align: center;  
687 - vertical-align: middle;  
688 - -webkit-user-select: none;  
689 - -moz-user-select: none;  
690 - -ms-user-select: none;  
691 - user-select: none;  
692 - background-color: transparent;  
693 - border: 1px solid transparent;  
694 - padding: 0.4em 0.65em;  
695 - font-size: 1em;  
696 - line-height: 1.5;  
697 - border-radius: 0.25em;  
698 -}  
699 -  
700 -.fc-button:hover {  
701 - color: #212529;  
702 - text-decoration: none;  
703 -}  
704 -  
705 -.fc-button:focus {  
706 - outline: 0;  
707 - -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);  
708 - box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);  
709 -}  
710 -  
711 -.fc-button:disabled {  
712 - opacity: 0.65;  
713 -}  
714 -  
715 -/* "primary" coloring */  
716 -.fc-button-primary {  
717 - color: #fff;  
718 - background-color: #2C3E50;  
719 - border-color: #2C3E50;  
720 -}  
721 -  
722 -.fc-button-primary:hover {  
723 - color: #fff;  
724 - background-color: #1e2b37;  
725 - border-color: #1a252f;  
726 -}  
727 -  
728 -.fc-button-primary:focus {  
729 - -webkit-box-shadow: none;  
730 - box-shadow: none;  
731 -}  
732 -  
733 -.fc-button-primary:disabled {  
734 - color: #fff;  
735 - background-color: #2C3E50;  
736 - border-color: #2C3E50;  
737 -}  
738 -  
739 -.fc-button-primary:not(:disabled):active,  
740 -.fc-button-primary:not(:disabled).fc-button-active {  
741 - color: #fff;  
742 - background-color: #1a252f;  
743 - border-color: #151e27;  
744 -}  
745 -  
746 -.fc-button-primary:not(:disabled):active:focus,  
747 -.fc-button-primary:not(:disabled).fc-button-active:focus {  
748 - -webkit-box-shadow: none;  
749 - box-shadow: none;  
750 -}  
751 -  
752 -/* icons within buttons */  
753 -.fc-button .fc-icon {  
754 - vertical-align: middle;  
755 - font-size: 1.5em;  
756 -}  
757 -  
758 -/* Buttons Groups  
759 ---------------------------------------------------------------------------------------------------*/  
760 -.fc-button-group {  
761 - position: relative;  
762 - display: -webkit-inline-box;  
763 - display: -ms-inline-flexbox;  
764 - display: inline-flex;  
765 - vertical-align: middle;  
766 -}  
767 -  
768 -.fc-button-group > .fc-button {  
769 - position: relative;  
770 - -webkit-box-flex: 1;  
771 - -ms-flex: 1 1 auto;  
772 - flex: 1 1 auto;  
773 -}  
774 -  
775 -.fc-button-group > .fc-button:hover {  
776 - z-index: 1;  
777 -}  
778 -  
779 -.fc-button-group > .fc-button:focus,  
780 -.fc-button-group > .fc-button:active,  
781 -.fc-button-group > .fc-button.fc-button-active {  
782 - z-index: 1;  
783 -}  
784 -  
785 -.fc-button-group > .fc-button:not(:first-child) {  
786 - margin-left: -1px;  
787 -}  
788 -  
789 -.fc-button-group > .fc-button:not(:last-child) {  
790 - border-top-right-radius: 0;  
791 - border-bottom-right-radius: 0;  
792 -}  
793 -  
794 -.fc-button-group > .fc-button:not(:first-child) {  
795 - border-top-left-radius: 0;  
796 - border-bottom-left-radius: 0;  
797 -}  
798 -  
799 -/* Popover  
800 ---------------------------------------------------------------------------------------------------*/  
801 -.fc-unthemed .fc-popover {  
802 - border-width: 1px;  
803 - border-style: solid;  
804 -}  
805 -  
806 -/* List View  
807 ---------------------------------------------------------------------------------------------------*/  
808 -.fc-unthemed .fc-list-item:hover td {  
809 - background-color: #f5f5f5;  
810 -}  
811 -  
812 -/* Toolbar  
813 ---------------------------------------------------------------------------------------------------*/  
814 -.fc-toolbar {  
815 - display: flex;  
816 - justify-content: space-between;  
817 - align-items: center;  
818 -}  
819 -  
820 -.fc-toolbar.fc-header-toolbar {  
821 - margin-bottom: 1.5em;  
822 -}  
823 -  
824 -.fc-toolbar.fc-footer-toolbar {  
825 - margin-top: 1.5em;  
826 -}  
827 -  
828 -/* inner content */  
829 -.fc-toolbar > * > :not(:first-child) {  
830 - margin-left: 0.75em;  
831 -}  
832 -  
833 -.fc-toolbar h2 {  
834 - font-size: 1.75em;  
835 - margin: 0;  
836 -}  
837 -  
838 -/* View Structure  
839 ---------------------------------------------------------------------------------------------------*/  
840 -.fc-view-container {  
841 - position: relative;  
842 -}  
843 -  
844 -/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */  
845 -/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */  
846 -.fc-view-container *,  
847 -.fc-view-container *:before,  
848 -.fc-view-container *:after {  
849 - -webkit-box-sizing: content-box;  
850 - -moz-box-sizing: content-box;  
851 - box-sizing: content-box;  
852 -}  
853 -  
854 -.fc-view,  
855 -.fc-view > table {  
856 - /* so dragged elements can be above the view's main element */  
857 - position: relative;  
858 - z-index: 1;  
859 -}  
860 -  
861 -@media print {  
862 - .fc {  
863 - max-width: 100% !important;  
864 - }  
865 -  
866 - /* Global Event Restyling  
867 - --------------------------------------------------------------------------------------------------*/  
868 - .fc-event {  
869 - background: #fff !important;  
870 - color: #000 !important;  
871 - page-break-inside: avoid;  
872 - }  
873 -  
874 - .fc-event .fc-resizer {  
875 - display: none;  
876 - }  
877 -  
878 - /* Table & Day-Row Restyling  
879 - --------------------------------------------------------------------------------------------------*/  
880 - .fc th,  
881 -.fc td,  
882 -.fc hr,  
883 -.fc thead,  
884 -.fc tbody,  
885 -.fc-row {  
886 - border-color: #ccc !important;  
887 - background: #fff !important;  
888 - }  
889 -  
890 - /* kill the overlaid, absolutely-positioned components */  
891 - /* common... */  
892 - .fc-bg,  
893 -.fc-bgevent-skeleton,  
894 -.fc-highlight-skeleton,  
895 -.fc-mirror-skeleton,  
896 -.fc-bgevent-container,  
897 -.fc-business-container,  
898 -.fc-highlight-container,  
899 -.fc-mirror-container {  
900 - display: none;  
901 - }  
902 -  
903 - /* don't force a min-height on rows (for DayGrid) */  
904 - .fc tbody .fc-row {  
905 - height: auto !important;  
906 - /* undo height that JS set in distributeHeight */  
907 - min-height: 0 !important;  
908 - /* undo the min-height from each view's specific stylesheet */  
909 - }  
910 -  
911 - .fc tbody .fc-row .fc-content-skeleton {  
912 - position: static;  
913 - /* undo .fc-rigid */  
914 - padding-bottom: 0 !important;  
915 - /* use a more border-friendly method for this... */  
916 - }  
917 -  
918 - .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td {  
919 - /* only works in newer browsers */  
920 - padding-bottom: 1em;  
921 - /* ...gives space within the skeleton. also ensures min height in a way */  
922 - }  
923 -  
924 - .fc tbody .fc-row .fc-content-skeleton table {  
925 - /* provides a min-height for the row, but only effective for IE, which exaggerates this value,  
926 - making it look more like 3em. for other browers, it will already be this tall */  
927 - height: 1em;  
928 - }  
929 -  
930 - /* Undo month-view event limiting. Display all events and hide the "more" links  
931 - --------------------------------------------------------------------------------------------------*/  
932 - .fc-more-cell,  
933 -.fc-more {  
934 - display: none !important;  
935 - }  
936 -  
937 - .fc tr.fc-limited {  
938 - display: table-row !important;  
939 - }  
940 -  
941 - .fc td.fc-limited {  
942 - display: table-cell !important;  
943 - }  
944 -  
945 - .fc-popover {  
946 - display: none;  
947 - /* never display the "more.." popover in print mode */  
948 - }  
949 -  
950 - /* TimeGrid Restyling  
951 - --------------------------------------------------------------------------------------------------*/  
952 - /* undo the min-height 100% trick used to fill the container's height */  
953 - .fc-time-grid {  
954 - min-height: 0 !important;  
955 - }  
956 -  
957 - /* don't display the side axis at all ("all-day" and time cells) */  
958 - .fc-timeGrid-view .fc-axis {  
959 - display: none;  
960 - }  
961 -  
962 - /* don't display the horizontal lines */  
963 - .fc-slats,  
964 -.fc-time-grid hr {  
965 - /* this hr is used when height is underused and needs to be filled */  
966 - display: none !important;  
967 - /* important overrides inline declaration */  
968 - }  
969 -  
970 - /* let the container that holds the events be naturally positioned and create real height */  
971 - .fc-time-grid .fc-content-skeleton {  
972 - position: static;  
973 - }  
974 -  
975 - /* in case there are no events, we still want some height */  
976 - .fc-time-grid .fc-content-skeleton table {  
977 - height: 4em;  
978 - }  
979 -  
980 - /* kill the horizontal spacing made by the event container. event margins will be done below */  
981 - .fc-time-grid .fc-event-container {  
982 - margin: 0 !important;  
983 - }  
984 -  
985 - /* TimeGrid *Event* Restyling  
986 - --------------------------------------------------------------------------------------------------*/  
987 - /* naturally position events, vertically stacking them */  
988 - .fc-time-grid .fc-event {  
989 - position: static !important;  
990 - margin: 3px 2px !important;  
991 - }  
992 -  
993 - /* for events that continue to a future day, give the bottom border back */  
994 - .fc-time-grid .fc-event.fc-not-end {  
995 - border-bottom-width: 1px !important;  
996 - }  
997 -  
998 - /* indicate the event continues via "..." text */  
999 - .fc-time-grid .fc-event.fc-not-end:after {  
1000 - content: "...";  
1001 - }  
1002 -  
1003 - /* for events that are continuations from previous days, give the top border back */  
1004 - .fc-time-grid .fc-event.fc-not-start {  
1005 - border-top-width: 1px !important;  
1006 - }  
1007 -  
1008 - /* indicate the event is a continuation via "..." text */  
1009 - .fc-time-grid .fc-event.fc-not-start:before {  
1010 - content: "...";  
1011 - }  
1012 -  
1013 - /* time */  
1014 - /* undo a previous declaration and let the time text span to a second line */  
1015 - .fc-time-grid .fc-event .fc-time {  
1016 - white-space: normal !important;  
1017 - }  
1018 -  
1019 - /* hide the the time that is normally displayed... */  
1020 - .fc-time-grid .fc-event .fc-time span {  
1021 - display: none;  
1022 - }  
1023 -  
1024 - /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */  
1025 - .fc-time-grid .fc-event .fc-time:after {  
1026 - content: attr(data-full);  
1027 - }  
1028 -  
1029 - /* Vertical Scroller & Containers  
1030 - --------------------------------------------------------------------------------------------------*/  
1031 - /* kill the scrollbars and allow natural height */  
1032 - .fc-scroller,  
1033 -.fc-day-grid-container,  
1034 -.fc-time-grid-container {  
1035 - /* */  
1036 - overflow: visible !important;  
1037 - height: auto !important;  
1038 - }  
1039 -  
1040 - /* kill the horizontal border/padding used to compensate for scrollbars */  
1041 - .fc-row {  
1042 - border: 0 !important;  
1043 - margin: 0 !important;  
1044 - }  
1045 -  
1046 - /* Button Controls  
1047 - --------------------------------------------------------------------------------------------------*/  
1048 - .fc-button-group,  
1049 -.fc button {  
1050 - display: none;  
1051 - /* don't display any button-related controls */  
1052 - }  
1053 -}  
1 -/* DayGridView  
2 ---------------------------------------------------------------------------------------------------*/  
3 -/* day row structure */  
4 -.fc-dayGridWeek-view .fc-content-skeleton,  
5 -.fc-dayGridDay-view .fc-content-skeleton {  
6 - /* there may be week numbers in these views, so no padding-top */  
7 - padding-bottom: 1em;  
8 - /* ensure a space at bottom of cell for user selecting/clicking */  
9 -}  
10 -  
11 -.fc-dayGrid-view .fc-body .fc-row {  
12 - min-height: 4em;  
13 - /* ensure that all rows are at least this tall */  
14 -}  
15 -  
16 -/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */  
17 -.fc-row.fc-rigid {  
18 - overflow: hidden;  
19 -}  
20 -  
21 -.fc-row.fc-rigid .fc-content-skeleton {  
22 - position: absolute;  
23 - top: 0;  
24 - left: 0;  
25 - right: 0;  
26 -}  
27 -  
28 -/* week and day number styling */  
29 -.fc-day-top.fc-other-month {  
30 - opacity: 0.3;  
31 -}  
32 -  
33 -.fc-dayGrid-view .fc-week-number,  
34 -.fc-dayGrid-view .fc-day-number {  
35 - padding: 2px;  
36 -}  
37 -  
38 -.fc-dayGrid-view th.fc-week-number,  
39 -.fc-dayGrid-view th.fc-day-number {  
40 - padding: 0 2px;  
41 - /* column headers can't have as much v space */  
42 -}  
43 -  
44 -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number {  
45 - float: right;  
46 -}  
47 -  
48 -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number {  
49 - float: left;  
50 -}  
51 -  
52 -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number {  
53 - float: left;  
54 - border-radius: 0 0 3px 0;  
55 -}  
56 -  
57 -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number {  
58 - float: right;  
59 - border-radius: 0 0 0 3px;  
60 -}  
61 -  
62 -.fc-dayGrid-view .fc-day-top .fc-week-number {  
63 - min-width: 1.5em;  
64 - text-align: center;  
65 - background-color: #f2f2f2;  
66 - color: #808080;  
67 -}  
68 -  
69 -/* when week/day number have own column */  
70 -.fc-dayGrid-view td.fc-week-number {  
71 - text-align: center;  
72 -}  
73 -  
74 -.fc-dayGrid-view td.fc-week-number > * {  
75 - /* work around the way we do column resizing and ensure a minimum width */  
76 - display: inline-block;  
77 - min-width: 1.25em;  
78 -}  
1 -  
2 -/* TimeGridView all-day area  
3 ---------------------------------------------------------------------------------------------------*/  
4 -.fc-timeGrid-view .fc-day-grid {  
5 - position: relative;  
6 - z-index: 2;  
7 - /* so the "more.." popover will be over the time grid */  
8 -}  
9 -  
10 -.fc-timeGrid-view .fc-day-grid .fc-row {  
11 - min-height: 3em;  
12 - /* all-day section will never get shorter than this */  
13 -}  
14 -  
15 -.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton {  
16 - padding-bottom: 1em;  
17 - /* give space underneath events for clicking/selecting days */  
18 -}  
19 -  
20 -/* TimeGrid axis running down the side (for both the all-day area and the slot area)  
21 ---------------------------------------------------------------------------------------------------*/  
22 -.fc .fc-axis {  
23 - /* .fc to overcome default cell styles */  
24 - vertical-align: middle;  
25 - padding: 0 4px;  
26 - white-space: nowrap;  
27 -}  
28 -  
29 -.fc-ltr .fc-axis {  
30 - text-align: right;  
31 -}  
32 -  
33 -.fc-rtl .fc-axis {  
34 - text-align: left;  
35 -}  
36 -  
37 -/* TimeGrid Structure  
38 ---------------------------------------------------------------------------------------------------*/  
39 -.fc-time-grid-container,  
40 -.fc-time-grid {  
41 - /* so slats/bg/content/etc positions get scoped within here */  
42 - position: relative;  
43 - z-index: 1;  
44 -}  
45 -  
46 -.fc-time-grid {  
47 - min-height: 100%;  
48 - /* so if height setting is 'auto', .fc-bg stretches to fill height */  
49 -}  
50 -  
51 -.fc-time-grid table {  
52 - /* don't put outer borders on slats/bg/content/etc */  
53 - border: 0 hidden transparent;  
54 -}  
55 -  
56 -.fc-time-grid > .fc-bg {  
57 - z-index: 1;  
58 -}  
59 -  
60 -.fc-time-grid .fc-slats,  
61 -.fc-time-grid > hr {  
62 - /* the <hr> TimeGridView injects when grid is shorter than scroller */  
63 - position: relative;  
64 - z-index: 2;  
65 -}  
66 -  
67 -.fc-time-grid .fc-content-col {  
68 - position: relative;  
69 - /* because now-indicator lives directly inside */  
70 -}  
71 -  
72 -.fc-time-grid .fc-content-skeleton {  
73 - position: absolute;  
74 - z-index: 3;  
75 - top: 0;  
76 - left: 0;  
77 - right: 0;  
78 -}  
79 -  
80 -/* divs within a cell within the fc-content-skeleton */  
81 -.fc-time-grid .fc-business-container {  
82 - position: relative;  
83 - z-index: 1;  
84 -}  
85 -  
86 -.fc-time-grid .fc-bgevent-container {  
87 - position: relative;  
88 - z-index: 2;  
89 -}  
90 -  
91 -.fc-time-grid .fc-highlight-container {  
92 - position: relative;  
93 - z-index: 3;  
94 -}  
95 -  
96 -.fc-time-grid .fc-event-container {  
97 - position: relative;  
98 - z-index: 4;  
99 -}  
100 -  
101 -.fc-time-grid .fc-now-indicator-line {  
102 - z-index: 5;  
103 -}  
104 -  
105 -.fc-time-grid .fc-mirror-container {  
106 - /* also is fc-event-container */  
107 - position: relative;  
108 - z-index: 6;  
109 -}  
110 -  
111 -/* TimeGrid Slats (lines that run horizontally)  
112 ---------------------------------------------------------------------------------------------------*/  
113 -.fc-time-grid .fc-slats td {  
114 - height: 1.5em;  
115 - border-bottom: 0;  
116 - /* each cell is responsible for its top border */  
117 -}  
118 -  
119 -.fc-time-grid .fc-slats .fc-minor td {  
120 - border-top-style: dotted;  
121 -}  
122 -  
123 -/* TimeGrid Highlighting Slots  
124 ---------------------------------------------------------------------------------------------------*/  
125 -.fc-time-grid .fc-highlight-container {  
126 - /* a div within a cell within the fc-highlight-skeleton */  
127 - position: relative;  
128 - /* scopes the left/right of the fc-highlight to be in the column */  
129 -}  
130 -  
131 -.fc-time-grid .fc-highlight {  
132 - position: absolute;  
133 - left: 0;  
134 - right: 0;  
135 - /* top and bottom will be in by JS */  
136 -}  
137 -  
138 -/* TimeGrid Event Containment  
139 ---------------------------------------------------------------------------------------------------*/  
140 -.fc-ltr .fc-time-grid .fc-event-container {  
141 - /* space on the sides of events for LTR (default) */  
142 - margin: 0 2.5% 0 2px;  
143 -}  
144 -  
145 -.fc-rtl .fc-time-grid .fc-event-container {  
146 - /* space on the sides of events for RTL */  
147 - margin: 0 2px 0 2.5%;  
148 -}  
149 -  
150 -.fc-time-grid .fc-event,  
151 -.fc-time-grid .fc-bgevent {  
152 - position: absolute;  
153 - z-index: 1;  
154 - /* scope inner z-index's */  
155 -}  
156 -  
157 -.fc-time-grid .fc-bgevent {  
158 - /* background events always span full width */  
159 - left: 0;  
160 - right: 0;  
161 -}  
162 -  
163 -/* TimeGrid Event Styling  
164 -----------------------------------------------------------------------------------------------------  
165 -We use the full "fc-time-grid-event" class instead of using descendants because the event won't  
166 -be a descendant of the grid when it is being dragged.  
167 -*/  
168 -.fc-time-grid-event {  
169 - margin-bottom: 1px;  
170 -}  
171 -  
172 -.fc-time-grid-event-inset {  
173 - -webkit-box-shadow: 0px 0px 0px 1px #fff;  
174 - box-shadow: 0px 0px 0px 1px #fff;  
175 -}  
176 -  
177 -.fc-time-grid-event.fc-not-start {  
178 - /* events that are continuing from another day */  
179 - /* replace space made by the top border with padding */  
180 - border-top-width: 0;  
181 - padding-top: 1px;  
182 - /* remove top rounded corners */  
183 - border-top-left-radius: 0;  
184 - border-top-right-radius: 0;  
185 -}  
186 -  
187 -.fc-time-grid-event.fc-not-end {  
188 - /* replace space made by the top border with padding */  
189 - border-bottom-width: 0;  
190 - padding-bottom: 1px;  
191 - /* remove bottom rounded corners */  
192 - border-bottom-left-radius: 0;  
193 - border-bottom-right-radius: 0;  
194 -}  
195 -  
196 -.fc-time-grid-event .fc-content {  
197 - overflow: hidden;  
198 - max-height: 100%;  
199 -}  
200 -  
201 -.fc-time-grid-event .fc-time,  
202 -.fc-time-grid-event .fc-title {  
203 - padding: 0 1px;  
204 -}  
205 -  
206 -.fc-time-grid-event .fc-time {  
207 - font-size: 0.85em;  
208 - white-space: nowrap;  
209 -}  
210 -  
211 -/* short mode, where time and title are on the same line */  
212 -.fc-time-grid-event.fc-short .fc-content {  
213 - /* don't wrap to second line (now that contents will be inline) */  
214 - white-space: nowrap;  
215 -}  
216 -  
217 -.fc-time-grid-event.fc-short .fc-time,  
218 -.fc-time-grid-event.fc-short .fc-title {  
219 - /* put the time and title on the same line */  
220 - display: inline-block;  
221 - vertical-align: top;  
222 -}  
223 -  
224 -.fc-time-grid-event.fc-short .fc-time span {  
225 - display: none;  
226 - /* don't display the full time text... */  
227 -}  
228 -  
229 -.fc-time-grid-event.fc-short .fc-time:before {  
230 - content: attr(data-start);  
231 - /* ...instead, display only the start time */  
232 -}  
233 -  
234 -.fc-time-grid-event.fc-short .fc-time:after {  
235 - content: " - ";  
236 - /* seperate with a dash, wrapped in nbsp's */  
237 -}  
238 -  
239 -.fc-time-grid-event.fc-short .fc-title {  
240 - font-size: 0.85em;  
241 - /* make the title text the same size as the time */  
242 - padding: 0;  
243 - /* undo padding from above */  
244 -}  
245 -  
246 -/* resizer (cursor device) */  
247 -.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer {  
248 - left: 0;  
249 - right: 0;  
250 - bottom: 0;  
251 - height: 8px;  
252 - overflow: hidden;  
253 - line-height: 8px;  
254 - font-size: 11px;  
255 - font-family: monospace;  
256 - text-align: center;  
257 - cursor: s-resize;  
258 -}  
259 -  
260 -.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after {  
261 - content: "=";  
262 -}  
263 -  
264 -/* resizer (touch device) */  
265 -.fc-time-grid-event.fc-selected .fc-resizer {  
266 - /* 10x10 dot */  
267 - border-radius: 5px;  
268 - border-width: 1px;  
269 - width: 8px;  
270 - height: 8px;  
271 - border-style: solid;  
272 - border-color: inherit;  
273 - background: #fff;  
274 - /* horizontally center */  
275 - left: 50%;  
276 - margin-left: -5px;  
277 - /* center on the bottom edge */  
278 - bottom: -5px;  
279 -}  
280 -  
281 -/* Now Indicator  
282 ---------------------------------------------------------------------------------------------------*/  
283 -.fc-time-grid .fc-now-indicator-line {  
284 - border-top-width: 1px;  
285 - left: 0;  
286 - right: 0;  
287 -}  
288 -  
289 -/* arrow on axis */  
290 -.fc-time-grid .fc-now-indicator-arrow {  
291 - margin-top: -5px;  
292 - /* vertically center on top coordinate */  
293 -}  
294 -  
295 -.fc-ltr .fc-time-grid .fc-now-indicator-arrow {  
296 - left: 0;  
297 - /* triangle pointing right... */  
298 - border-width: 5px 0 5px 6px;  
299 - border-top-color: transparent;  
300 - border-bottom-color: transparent;  
301 -}  
302 -  
303 -.fc-rtl .fc-time-grid .fc-now-indicator-arrow {  
304 - right: 0;  
305 - /* triangle pointing left... */  
306 - border-width: 5px 6px 5px 0;  
307 - border-top-color: transparent;  
308 - border-bottom-color: transparent;  
309 -}  
1 -/* List View  
2 ---------------------------------------------------------------------------------------------------*/  
3 -/* possibly reusable */  
4 -.fc-event-dot {  
5 - display: inline-block;  
6 - width: 10px;  
7 - height: 10px;  
8 - border-radius: 5px;  
9 -}  
10 -  
11 -/* view wrapper */  
12 -.fc-rtl .fc-list-view {  
13 - direction: rtl;  
14 - /* unlike core views, leverage browser RTL */  
15 -}  
16 -  
17 -.fc-list-view {  
18 - border-width: 1px;  
19 - border-style: solid;  
20 -}  
21 -  
22 -/* table resets */  
23 -.fc .fc-list-table {  
24 - table-layout: auto;  
25 - /* for shrinkwrapping cell content */  
26 -}  
27 -  
28 -.fc-list-table td {  
29 - border-width: 1px 0 0;  
30 - padding: 8px 14px;  
31 -}  
32 -  
33 -.fc-list-table tr:first-child td {  
34 - border-top-width: 0;  
35 -}  
36 -  
37 -/* day headings with the list */  
38 -.fc-list-heading {  
39 - border-bottom-width: 1px;  
40 -}  
41 -  
42 -.fc-list-heading td {  
43 - font-weight: bold;  
44 -}  
45 -  
46 -.fc-ltr .fc-list-heading-main {  
47 - float: left;  
48 -}  
49 -  
50 -.fc-ltr .fc-list-heading-alt {  
51 - float: right;  
52 -}  
53 -  
54 -.fc-rtl .fc-list-heading-main {  
55 - float: right;  
56 -}  
57 -  
58 -.fc-rtl .fc-list-heading-alt {  
59 - float: left;  
60 -}  
61 -  
62 -/* event list items */  
63 -.fc-list-item.fc-has-url {  
64 - cursor: pointer;  
65 - /* whole row will be clickable */  
66 -}  
67 -  
68 -.fc-list-item-marker,  
69 -.fc-list-item-time {  
70 - white-space: nowrap;  
71 - width: 1px;  
72 -}  
73 -  
74 -/* make the dot closer to the event title */  
75 -.fc-ltr .fc-list-item-marker {  
76 - padding-right: 0;  
77 -}  
78 -  
79 -.fc-rtl .fc-list-item-marker {  
80 - padding-left: 0;  
81 -}  
82 -  
83 -.fc-list-item-title a {  
84 - /* every event title cell has an <a> tag */  
85 - text-decoration: none;  
86 - color: inherit;  
87 -}  
88 -  
89 -.fc-list-item-title a[href]:hover {  
90 - /* hover effect only on titles with hrefs */  
91 - text-decoration: underline;  
92 -}  
93 -  
94 -/* message when no events */  
95 -.fc-list-empty-wrap2 {  
96 - position: absolute;  
97 - top: 0;  
98 - left: 0;  
99 - right: 0;  
100 - bottom: 0;  
101 -}  
102 -  
103 -.fc-list-empty-wrap1 {  
104 - width: 100%;  
105 - height: 100%;  
106 - display: table;  
107 -}  
108 -  
109 -.fc-list-empty {  
110 - display: table-cell;  
111 - vertical-align: middle;  
112 - text-align: center;  
113 -}  
114 -  
115 -.fc-unthemed .fc-list-empty {  
116 - /* theme will provide own background */  
117 - background-color: #eee;  
118 -}  
This diff could not be displayed because it is too large.
1 -(function(jQuery) {  
2 -  
3 - "use strict";  
4 - // for apexchart  
5 - function apexChartUpdate(chart, detail) {  
6 - let color = getComputedStyle(document.documentElement).getPropertyValue('--dark');  
7 - if (detail.dark) {  
8 - color = getComputedStyle(document.documentElement).getPropertyValue('--white');  
9 - }  
10 - chart.updateOptions({  
11 - chart: {  
12 - foreColor: color  
13 - }  
14 - })  
15 - }  
16 -  
17 - if (jQuery("#hospital-chart-02").length) var donut = new Morris.Donut({  
18 - element: "hospital-chart-02",  
19 - resize: !0,  
20 - colors: ["#4788ff", "#4fd69c", "#37d5f2", "#f75676"],  
21 - data: [  
22 - {  
23 - label: "New Patient",  
24 - value: 40  
25 - },  
26 - {  
27 - label: "Exit Patient",  
28 - value: 12  
29 - },  
30 - {  
31 - label: "ICU Patient",  
32 - value: 20  
33 - },  
34 - {  
35 - label: "Discharge Patient",  
36 - value: 33  
37 - }  
38 - ],  
39 - hideHover: "auto"  
40 - });  
41 -  
42 - if (jQuery("#hospital-chart-03").length) {  
43 - const options = {  
44 - series: [{  
45 - name: 'Operation',  
46 - data: [44, 25, 10, 60, 50, 25, 40, 20]  
47 - }, {  
48 - name: 'Visitors',  
49 - data: [25, 38, 70, 0, 30, 15, 30, 30]  
50 - }],  
51 - colors: ['#4788ff', '#4fd69c'],  
52 - chart: {  
53 - type: 'bar',  
54 - height: 340,  
55 - stacked: true,  
56 - zoom: {  
57 - enabled: true  
58 - }  
59 - },  
60 - responsive: [{  
61 - breakpoint: 580,  
62 - options: {  
63 - legend: {  
64 - position: 'bottom',  
65 - offsetX: -30,  
66 - offsetY: 0,  
67 - }  
68 - }  
69 - }],  
70 - plotOptions: {  
71 - bar: {  
72 - horizontal: false,  
73 - borderRadius: 4  
74 - },  
75 - },  
76 - xaxis: {  
77 - type: 'category',  
78 - categories: ['India', 'Canada', 'U.S.A', 'Africa', 'London ', 'Europe ','Dubai','Kuvet'],  
79 - },  
80 - yaxis: {  
81 - labels: {  
82 - offsetY: 0,  
83 - minWidth: 20,  
84 - maxWidth: 20,  
85 - }  
86 - },  
87 - legend: {  
88 - position: 'top',  
89 - offsetX: -35  
90 - },  
91 - fill: {  
92 - opacity: 1  
93 - },  
94 - dataLabels: {  
95 - enabled: false  
96 - }  
97 - };  
98 -  
99 - const chart = new ApexCharts(document.querySelector("#hospital-chart-03"), options);  
100 - chart.render();  
101 - const body = document.querySelector('body')  
102 - if (body.classList.contains('dark')) {  
103 - apexChartUpdate(chart, {  
104 - dark: true  
105 - })  
106 - }  
107 -  
108 - document.addEventListener('ChangeColorMode', function (e) {  
109 - apexChartUpdate(chart, e.detail)  
110 - })  
111 -  
112 - }  
113 -  
114 - if (jQuery("#dash-chart-04").length) {  
115 - const options = {  
116 - series: [{  
117 - name: 'Success',  
118 - data: [110, 85, 87, 40, 45, 20, 91, 45, 94, 88]  
119 - }, {  
120 - name: 'Failed',  
121 - data: [40, 55, 35, 30, 75, 80, 63, 45, 66, 115]  
122 - }],  
123 - chart: {  
124 - type: 'bar',  
125 - height: 280  
126 - },  
127 - colors: ['#4788ff', '#f75676'],  
128 - plotOptions: {  
129 - bar: {  
130 - horizontal: false,  
131 - borderRadius: 4  
132 - },  
133 - },  
134 - legend: {  
135 - position: 'bottom',  
136 - offsetX: 35  
137 - },  
138 - dataLabels: {  
139 - enabled: false  
140 - },  
141 - stroke: {  
142 - show: true,  
143 - width: 2,  
144 - colors: ['transparent']  
145 - },  
146 - xaxis: {  
147 - categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],  
148 - },  
149 - yaxis: {  
150 - title: {  
151 - text: '$ (thousands)'  
152 - },  
153 - labels: {  
154 - offsetY: 0,  
155 - minWidth: 20,  
156 - maxWidth: 20,  
157 - }  
158 - },  
159 - fill: {  
160 - opacity: 1  
161 - },  
162 - tooltip: {  
163 - y: {  
164 - formatter: function (val) {  
165 - return "$ " + val + " thousands"  
166 - }  
167 - }  
168 - }  
169 - };  
170 -  
171 - const chart = new ApexCharts(document.querySelector("#dash-chart-04"), options);  
172 - chart.render();  
173 - const body = document.querySelector('body')  
174 - if (body.classList.contains('dark')) {  
175 - apexChartUpdate(chart, {  
176 - dark: true  
177 - })  
178 - }  
179 -  
180 - document.addEventListener('ChangeColorMode', function (e) {  
181 - apexChartUpdate(chart, e.detail)  
182 - })  
183 -  
184 - }  
185 -  
186 - if (jQuery("#hospital-chart-05").length) {  
187 - var options = {  
188 - series: [22, 83, 10, 30],  
189 - colors: ['#f75676', '#4fd69c', '#37d5f2', '#4788ff'],  
190 - chart: {  
191 - height: 290,  
192 - type: 'pie',  
193 - },  
194 - legend: {  
195 - position: 'bottom',  
196 - offsetX: 0  
197 - },  
198 - labels: ['Cancelled', 'Completed', 'Pending', 'Upcoming'],  
199 -  
200 - };  
201 - var chart = new ApexCharts(document.querySelector("#hospital-chart-05"), options);  
202 - chart.render();  
203 - const body = document.querySelector('body')  
204 - if (body.classList.contains('dark')) {  
205 - apexChartUpdate(chart, {  
206 - dark: true  
207 - })  
208 - }  
209 -  
210 - document.addEventListener('ChangeColorMode', function (e) {  
211 - apexChartUpdate(chart, e.detail)  
212 - })  
213 - }  
214 -  
215 -})(jQuery);  
1 -/*  
2 -Template: Datum - Responsive Bootstrap 4 Admin Dashboard Template  
3 -Author: iqonic.design  
4 -Design and Developed by: iqonic.design  
5 -NOTE: This file contains the styling for responsive Template.  
6 -*/  
7 -  
8 -/*----------------------------------------------  
9 -Index Of Script  
10 -------------------------------------------------  
11 -  
12 -:: Tooltip  
13 -:: Fixed Nav  
14 -:: Magnific Popup  
15 -:: Ripple Effect  
16 -:: Sidebar Widget  
17 -:: FullScreen  
18 -:: Page Loader  
19 -:: Counter  
20 -:: Progress Bar  
21 -:: Page Menu  
22 -:: Close navbar Toggle  
23 -:: Mailbox  
24 -:: chatuser  
25 -:: chatuser main  
26 -:: Chat start  
27 -:: todo Page  
28 -:: user toggle  
29 -:: Data tables  
30 -:: Form Validation  
31 -:: Active Class for Pricing Table  
32 -:: Flatpicker  
33 -:: Scrollbar  
34 -:: checkout  
35 -:: Datatables  
36 -:: image-upload  
37 -:: video  
38 -:: dark mode  
39 -:: Button  
40 -:: Pricing tab  
41 -:: SVG Animation  
42 -:: Date Picker  
43 -:: Choies.js  
44 -------------------------------------------------  
45 -Index Of Script  
46 -----------------------------------------------*/  
47 -  
48 -(function(jQuery) {  
49 -  
50 -  
51 -  
52 - "use strict";  
53 -  
54 - jQuery(document).ready(function() {  
55 -  
56 - /*---------------------------------------------------------------------  
57 - Tooltip  
58 - -----------------------------------------------------------------------*/  
59 - jQuery('[data-toggle="popover"]').popover();  
60 - jQuery('[data-toggle="tooltip"]').tooltip();  
61 -  
62 - /*---------------------------------------------------------------------  
63 - Fixed Nav  
64 - -----------------------------------------------------------------------*/  
65 -  
66 - $(window).on('scroll', function () {  
67 - if ($(window).scrollTop() > 0) {  
68 - $('.iq-top-navbar').addClass('fixed');  
69 - } else {  
70 - $('.iq-top-navbar').removeClass('fixed');  
71 - }  
72 - });  
73 -  
74 - $(window).on('scroll', function () {  
75 - if ($(window).scrollTop() > 0) {  
76 - $('.white-bg-menu').addClass('sticky-menu');  
77 - } else {  
78 - $('.white-bg-menu').removeClass('sticky-menu');  
79 - }  
80 - });  
81 -  
82 -  
83 - /*---------------------------------------------------------------------  
84 - Sidebar Widget  
85 - -----------------------------------------------------------------------*/  
86 -  
87 - jQuery(document).on("click", '.side-menu > li > a', function() {  
88 - jQuery('.side-menu > li > a').parent().removeClass('active');  
89 - jQuery(this).parent().addClass('active');  
90 - });  
91 -  
92 - // Active menu  
93 - var parents = jQuery('li.active').parents('.submenu.collapse');  
94 -  
95 - parents.addClass('show');  
96 -  
97 -  
98 - parents.parents('li').addClass('active');  
99 - jQuery('li.active > a[aria-expanded="false"]').attr('aria-expanded', 'true');  
100 -  
101 - /*---------------------------------------------------------------------  
102 - FullScreen  
103 - -----------------------------------------------------------------------*/  
104 - jQuery(document).on('click', '.full-screen', function() {  
105 - let elem = jQuery(this);  
106 - elem.find('i').addClass('d-none');  
107 - elem.find('i').addClass('d-none');  
108 - if (!document.fullscreenElement &&  
109 - !document.mozFullScreenElement && // Mozilla  
110 - !document.webkitFullscreenElement && // Webkit-Browser  
111 - !document.msFullscreenElement) { // MS IE ab version 11  
112 - elem.find('.min').removeClass('d-none');  
113 - if (document.documentElement.requestFullscreen) {  
114 - document.documentElement.requestFullscreen();  
115 - } else if (document.documentElement.mozRequestFullScreen) {  
116 - document.documentElement.mozRequestFullScreen();  
117 - } else if (document.documentElement.webkitRequestFullscreen) {  
118 - document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);  
119 - } else if (document.documentElement.msRequestFullscreen) {  
120 - document.documentElement.msRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);  
121 - }  
122 - } else {  
123 - elem.find('.max').removeClass('d-none');  
124 - if (document.cancelFullScreen) {  
125 - document.cancelFullScreen();  
126 - } else if (document.mozCancelFullScreen) {  
127 - document.mozCancelFullScreen();  
128 - } else if (document.webkitCancelFullScreen) {  
129 - document.webkitCancelFullScreen();  
130 - } else if (document.msExitFullscreen) {  
131 - document.msExitFullscreen();  
132 - }  
133 - }  
134 - });  
135 -  
136 -  
137 - /*---------------------------------------------------------------------  
138 - Page Loader  
139 - -----------------------------------------------------------------------*/  
140 - jQuery("#load").fadeOut();  
141 - jQuery("#loading").delay().fadeOut("");  
142 -  
143 -  
144 - /*---------------------------------------------------------------------  
145 - Counter  
146 - -----------------------------------------------------------------------*/  
147 - if (window.counterUp !== undefined) {  
148 - const counterUp = window.counterUp["default"]  
149 - const $counters = $(".counter");  
150 - $counters.each(function (ignore, counter) {  
151 - var waypoint = new Waypoint( {  
152 - element: $(this),  
153 - handler: function() {  
154 - counterUp(counter, {  
155 - duration: 1000,  
156 - delay: 10  
157 - });  
158 - this.destroy();  
159 - },  
160 - offset: 'bottom-in-view',  
161 - } );  
162 - });  
163 - }  
164 -  
165 -  
166 - /*---------------------------------------------------------------------  
167 - Progress Bar  
168 - -----------------------------------------------------------------------*/  
169 - jQuery('.iq-progress-bar > span').each(function() {  
170 - let progressBar = jQuery(this);  
171 - let width = jQuery(this).data('percent');  
172 - progressBar.css({  
173 - 'transition': 'width 2s'  
174 - });  
175 - setTimeout(function() {  
176 - progressBar.css('width', width + '%');  
177 - }, 100);  
178 - });  
179 -  
180 - jQuery('.progress-bar-vertical > span').each(function () {  
181 - let progressBar = jQuery(this);  
182 - let height = jQuery(this).data('percent');  
183 - progressBar.css({  
184 - 'transition': 'height 2s'  
185 - });  
186 - setTimeout(function () {  
187 - progressBar.css('height', height + '%');  
188 - }, 100);  
189 - });  
190 -  
191 -  
192 - /*---------------------------------------------------------------------  
193 - Page Menu  
194 - -----------------------------------------------------------------------*/  
195 - jQuery(document).on('click', '.wrapper-menu', function() {  
196 - jQuery(this).toggleClass('open');  
197 - });  
198 -  
199 - jQuery(document).on('click', ".wrapper-menu", function() {  
200 - jQuery("body").toggleClass("sidebar-main");  
201 - });  
202 -  
203 -  
204 - /*---------------------------------------------------------------------  
205 - Close navbar Toggle  
206 - -----------------------------------------------------------------------*/  
207 -  
208 - jQuery('.close-toggle').on('click', function () {  
209 - jQuery('.h-collapse.navbar-collapse').collapse('hide');  
210 - });  
211 -  
212 - /*---------------------------------------------------------------------  
213 - user toggle  
214 - -----------------------------------------------------------------------*/  
215 - jQuery(document).on('click', '.user-toggle', function() {  
216 - jQuery(this).parent().addClass('show-data');  
217 - });  
218 -  
219 - jQuery(document).on('click', ".close-data", function() {  
220 - jQuery('.user-toggle').parent().removeClass('show-data');  
221 - });  
222 - jQuery(document).on("click", function(event){  
223 - var $trigger = jQuery(".user-toggle");  
224 - if($trigger !== event.target && !$trigger.has(event.target).length){  
225 - jQuery(".user-toggle").parent().removeClass('show-data');  
226 - }  
227 - });  
228 -  
229 - /*---------------------------------------------------------------------  
230 - Data tables  
231 - -----------------------------------------------------------------------*/  
232 - if($.fn.DataTable){  
233 - const table = $('.data-table').DataTable();  
234 - }  
235 -  
236 -  
237 - /*---------------------------------------------------------------------  
238 - Form Validation  
239 - -----------------------------------------------------------------------*/  
240 -  
241 - // Example starter JavaScript for disabling form submissions if there are invalid fields  
242 - window.addEventListener('load', function() {  
243 - // Fetch all the forms we want to apply custom Bootstrap validation styles to  
244 - var forms = document.getElementsByClassName('needs-validation');  
245 - // Loop over them and prevent submission  
246 - var validation = Array.prototype.filter.call(forms, function(form) {  
247 - form.addEventListener('submit', function(event) {  
248 - if (form.checkValidity() === false) {  
249 - event.preventDefault();  
250 - event.stopPropagation();  
251 - }  
252 - form.classList.add('was-validated');  
253 - }, false);  
254 - });  
255 - }, false);  
256 -  
257 - /*---------------------------------------------------------------------  
258 - Active Class for Pricing Table  
259 - -----------------------------------------------------------------------*/  
260 - jQuery("#my-table tr th").click(function () {  
261 - jQuery('#my-table tr th').children().removeClass('active');  
262 - jQuery(this).children().addClass('active');  
263 - jQuery("#my-table td").each(function () {  
264 - if (jQuery(this).hasClass('active')) {  
265 - jQuery(this).removeClass('active')  
266 - }  
267 - });  
268 - var col = jQuery(this).index();  
269 - jQuery("#my-table tr td:nth-child(" + parseInt(col + 1) + ")").addClass('active');  
270 - });  
271 -  
272 -  
273 - /*---------------------------------------------------------------------  
274 - Scrollbar  
275 - -----------------------------------------------------------------------*/  
276 -  
277 - jQuery('.data-scrollbar').each(function () {  
278 - var attr = $(this).attr('data-scroll');  
279 - if (typeof attr !== typeof undefined && attr !== false){  
280 - let Scrollbar = window.Scrollbar;  
281 - var a = jQuery(this).data('scroll');  
282 - Scrollbar.init(document.querySelector('div[data-scroll= "' + a + '"]'));  
283 - }  
284 - });  
285 -  
286 -  
287 - /*---------------------------------------------------------------------  
288 - image-upload  
289 - -----------------------------------------------------------------------*/  
290 -  
291 - $('.form_gallery-upload').on('change', function() {  
292 - var length = $(this).get(0).files.length;  
293 - var galleryLabel = $(this).attr('data-name');  
294 -  
295 - if( length > 1 ){  
296 - $(galleryLabel).text(length + " files selected");  
297 - } else {  
298 - $(galleryLabel).text($(this)[0].files[0].name);  
299 - }  
300 - });  
301 -  
302 - /*---------------------------------------------------------------------  
303 - video  
304 - -----------------------------------------------------------------------*/  
305 - $(document).ready(function(){  
306 - $('.form_video-upload input').change(function () {  
307 - $('.form_video-upload p').text(this.files.length + " file(s) selected");  
308 - });  
309 - });  
310 - /*---------------------------------------------------------------------  
311 - dark mode  
312 - -----------------------------------------------------------------------*/  
313 - const urlParams = new URLSearchParams(window.location.search);  
314 - const mode = urlParams.get('dark');  
315 - if (mode !== null) {  
316 - $('body').removeClass('sidebar-dark', 'sidebar-light')  
317 - switch (mode) {  
318 - case "true":  
319 - $('body').addClass('dark')  
320 - break;  
321 - case "false":  
322 - $('body').removeClass('sidebar-dark', 'sidebar-light')  
323 - break;  
324 - default:  
325 - $('body').removeClass('sidebar-dark').removeClass('sidebar-light')  
326 - break;  
327 - }  
328 - }  
329 -  
330 -  
331 - /*---------------------------------------------------------------------  
332 - Button  
333 - -----------------------------------------------------------------------*/  
334 -  
335 - jQuery('.qty-btn').on('click',function(){  
336 - var id = jQuery(this).attr('id');  
337 -  
338 - var val = parseInt(jQuery('#quantity').val());  
339 -  
340 - if(id == 'btn-minus')  
341 - {  
342 - if(val != 0)  
343 - {  
344 - jQuery('#quantity').val(val-1);  
345 - }  
346 - else  
347 - {  
348 - jQuery('#quantity').val(0);  
349 - }  
350 -  
351 - }  
352 - else  
353 - {  
354 - jQuery('#quantity').val(val+1);  
355 - }  
356 - });  
357 -  
358 - });  
359 -  
360 -  
361 - $(document).on('click', '[data-toggel-extra="side-nav"]', function () {  
362 - const pannel = $(this).attr('data-expand-extra')  
363 - $(pannel).addClass('active')  
364 - })  
365 -  
366 - $(document).on('click', '[data-toggel-extra="side-nav-close"]', function () {  
367 - const pannel = $(this).attr('data-expand-extra')  
368 - $(pannel).removeClass('active')  
369 - })  
370 -  
371 - $(document).on('click', '[data-toggel-extra="right-sidenav"]', function () {  
372 - const target = $(this).data('target')  
373 - $(target).addClass('active')  
374 - })  
375 -  
376 - $(document).on('click', '[data-extra-dismiss="right-sidenav"]', function () {  
377 - $(this).closest('.right-sidenav').removeClass('active')  
378 - })  
379 -  
380 - $(document).on('click', '[data-toggle="end-call"]', function(){  
381 - $(this).closest('.tab-pane').removeClass('active').removeClass('show')  
382 - $($(this).attr('data-target')).tab('show')  
383 - $('.chat-action').find('[data-toggle="tab"]').removeClass('active')  
384 - })  
385 -  
386 - $(document).on('click', '[data-toggle-extra="tab"]', function () {  
387 - const target = $(this).attr('data-target-extra')  
388 - $('[data-toggle-extra="tab-content"]').removeClass('active')  
389 - $(target).addClass('active')  
390 - $(this).parent().find('.active').removeClass('active')  
391 - $(this).addClass('active')  
392 - })  
393 -  
394 - $('emoji-picker').on('emoji-click', function(e){  
395 - $(e.target.dataset.targetInput).val($(e.target.dataset.targetInput).val()+e.detail.unicode)  
396 - })  
397 -  
398 - $('.dropdown-menu').on('click', function(event){  
399 - event.stopPropagation();  
400 - });  
401 -  
402 - var board = $('.draggable-item');  
403 -  
404 - var selector = [];  
405 - if(board.length > 0 )  
406 - {  
407 - for(var i = 0 ; i < board.length ; i++) {  
408 - selector.push(document.querySelector('#draggable-item-'+i));  
409 - selector.push(document.querySelector('#list-draggable-item-'+i));  
410 - }  
411 - }  
412 - dragula( selector ).on('drop', function(el) {  
413 - $(el).addClass(' animate__animated animate__rubberBand')  
414 - setTimeout(function () {  
415 - $(el).removeClass(' animate__animated animate__rubberBand')  
416 - }, 1000)  
417 - });  
418 -  
419 - // calender 1 js  
420 - var calendar1;  
421 - if (jQuery('#calendar1').length) {  
422 - var calendarEl = document.getElementById('calendar1');  
423 -  
424 - calendar1 = new FullCalendar.Calendar(calendarEl, {  
425 - selectable: true,  
426 - plugins: ["timeGrid", "dayGrid", "list", "interaction"],  
427 - timeZone: "UTC",  
428 - defaultView: "dayGridMonth",  
429 - contentHeight: "auto",  
430 - eventLimit: true,  
431 - dayMaxEvents: 4,  
432 - header: {  
433 - left: "prev,next today",  
434 - center: "title",  
435 - right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek"  
436 - },  
437 - dateClick: function (info) {  
438 - $('#schedule-start-date').val(info.dateStr)  
439 - $('#schedule-end-date').val(info.dateStr)  
440 - $('#date-event').modal('show')  
441 - },  
442 - events: [  
443 - {  
444 - title: 'Click for Google',  
445 - url: 'http://google.com/',  
446 - start: moment(new Date(), 'YYYY-MM-DD').add(-20, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
447 - color: '#4731b6'  
448 - },  
449 - {  
450 - title: 'All Day Event',  
451 - start: moment(new Date(), 'YYYY-MM-DD').add(-18, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
452 - color: '#465af7'  
453 - },  
454 - {  
455 - title: 'Long Event',  
456 - start: moment(new Date(), 'YYYY-MM-DD').add(-16, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
457 - end: moment(new Date(), 'YYYY-MM-DD').add(-13, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
458 - color: '#7858d7'  
459 - },  
460 - {  
461 - groupId: '999',  
462 - title: 'Repeating Event',  
463 - start: moment(new Date(), 'YYYY-MM-DD').add(-14, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
464 - color: '#465af7'  
465 - },  
466 - {  
467 - groupId: '999',  
468 - title: 'Repeating Event',  
469 - start: moment(new Date(), 'YYYY-MM-DD').add(-12, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
470 - color: '#5baa73'  
471 - },  
472 - {  
473 - groupId: '999',  
474 - title: 'Repeating Event',  
475 - start: moment(new Date(), 'YYYY-MM-DD').add(-10, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
476 - color: '#01041b'  
477 - },  
478 - {  
479 - title: 'Birthday Party',  
480 - start: moment(new Date(), 'YYYY-MM-DD').add(-8, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
481 - color: '#4731b6'  
482 - },  
483 - {  
484 - title: 'Meeting',  
485 - start: moment(new Date(), 'YYYY-MM-DD').add(-6, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
486 - color: '#15ca92'  
487 - },  
488 - {  
489 - title: 'Birthday Party',  
490 - start: moment(new Date(), 'YYYY-MM-DD').add(-5, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
491 - color: '#f4a965'  
492 - },  
493 - {  
494 - title: 'Birthday Party',  
495 - start: moment(new Date(), 'YYYY-MM-DD').add(-2, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
496 - color: '#ea643f'  
497 - },  
498 -  
499 - {  
500 - title: 'Meeting',  
501 - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
502 - color: '#15ca92'  
503 - },  
504 - {  
505 - title: 'Click for Google',  
506 - url: 'http://google.com/',  
507 - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T06:30:00.000Z',  
508 - color: '#4731b6'  
509 - },  
510 - {  
511 - groupId: '999',  
512 - title: 'Repeating Event',  
513 - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T07:30:00.000Z',  
514 - color: '#5baa73'  
515 - },  
516 - {  
517 - title: 'Birthday Party',  
518 - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T08:30:00.000Z',  
519 - color: '#f4a965'  
520 - },  
521 - {  
522 - title: 'Doctor Meeting',  
523 - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
524 - color: '#f4a965'  
525 - },  
526 - {  
527 - title: 'All Day Event',  
528 - start: moment(new Date(), 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
529 - color: '#465af7'  
530 - },  
531 - {  
532 - groupId: '999',  
533 - title: 'Repeating Event',  
534 - start: moment(new Date(), 'YYYY-MM-DD').add(8, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
535 - color: '#465af7'  
536 - },  
537 - {  
538 - groupId: '999',  
539 - title: 'Repeating Event',  
540 - start: moment(new Date(), 'YYYY-MM-DD').add(10, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z',  
541 - color: '#5baa73'  
542 - }  
543 - ]  
544 - });  
545 - calendar1.render();  
546 -  
547 - $(document).on("submit", "#submit-schedule", function (e) {  
548 - e.preventDefault()  
549 - const title = $(this).find('#schedule-title').val()  
550 - const startDate = moment(new Date($(this).find('#schedule-start-date').val()), 'YYYY-MM-DD').format('YYYY-MM-DD') + 'T05:30:00.000Z'  
551 - const endDate = moment(new Date($(this).find('#schedule-end-date').val()), 'YYYY-MM-DD').format('YYYY-MM-DD') + 'T05:30:00.000Z'  
552 - const color = $(this).find('#schedule-color').val()  
553 - const event = {  
554 - title: title,  
555 - start: startDate || '2020-12-22T02:30:00',  
556 - end: endDate || '2020-12-12T14:30:00',  
557 - color: color || '#7858d7'  
558 - }  
559 - $(this).closest('#date-event').modal('hide')  
560 - calendar1.addEvent(event)  
561 - })  
562 - }  
563 -  
564 - const progressBar = document.getElementsByClassName('circle-progress')  
565 - Array.from(progressBar, (elem) => {  
566 - const minValue = elem.getAttribute('data-min-value')  
567 - const maxValue = elem.getAttribute('data-max-value')  
568 - const value = elem.getAttribute('data-value')  
569 - const type = elem.getAttribute('data-type')  
570 - if (elem.getAttribute('id') !== '' && elem.getAttribute('id') !== null) {  
571 - new CircleProgress('#'+elem.getAttribute('id'), {  
572 - min: minValue,  
573 - max: maxValue,  
574 - value: value,  
575 - textFormat: type,  
576 - });  
577 - }  
578 - })  
579 - /*---------------------------------------------------------------------  
580 - Vanila Datepicker  
581 - -----------------------------------------------------------------------*/  
582 - const datepickers = document.querySelectorAll('.vanila-datepicker')  
583 - Array.from(datepickers, (elem) => {  
584 - new Datepicker(elem)  
585 - })  
586 - const daterangePickers = document.querySelectorAll('.vanila-daterangepicker')  
587 - Array.from(daterangePickers, (elem) => {  
588 - new DateRangePicker(elem)  
589 - })  
590 -  
591 - /*---------------------------------------------------------------------  
592 - Choies.js  
593 - -----------------------------------------------------------------------*/  
594 - const choies = document.querySelectorAll('.choicesjs')  
595 - Array.from(choies,(elem) => {  
596 - new Choices(elem, {  
597 - removeItemButton: true,  
598 - })  
599 - })  
600 -})(jQuery);  
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 -function getTimeRemaining(endtime) {  
2 - const total = Date.parse(endtime) - Date.parse(new Date());  
3 - const seconds = Math.floor((total / 1000) % 60);  
4 - const minutes = Math.floor((total / 1000 / 60) % 60);  
5 - const hours = Math.floor((total / (1000 * 60 * 60)) % 24);  
6 - const days = Math.floor(total / (1000 * 60 * 60 * 24));  
7 -  
8 - return {  
9 - total,  
10 - days,  
11 - hours,  
12 - minutes,  
13 - seconds  
14 - };  
15 - }  
16 -  
17 - function initializeClock(elem, endtime) {  
18 - const clock = document.querySelector(elem)  
19 - const daysSpan = clock.querySelector('[data-days]')  
20 - const hoursSpan = clock.querySelector('[data-hours]')  
21 - const minutesSpan = clock.querySelector('[data-minutes]')  
22 - const secondsSpan = clock.querySelector('[data-seconds]')  
23 -  
24 - function updateClock() {  
25 - const t = getTimeRemaining(endtime)  
26 -  
27 - daysSpan.innerHTML = t.days  
28 - hoursSpan.innerHTML = ('0' + t.hours).slice(-2)  
29 - minutesSpan.innerHTML = ('0' + t.minutes).slice(-2)  
30 - secondsSpan.innerHTML = ('0' + t.seconds).slice(-2)  
31 -  
32 - if (t.total <= 0) {  
33 - clearInterval(timeinterval)  
34 - }  
35 - }  
36 -  
37 - updateClock()  
38 - const timeinterval = setInterval(updateClock, 1000)  
39 - }  
40 -  
41 - let time = document.querySelector('.countdown').getAttribute('data-date')  
42 - if (time == undefined) {  
43 - time = Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000  
44 - }  
45 - const deadline = new Date(time)  
46 - initializeClock('.countdown', deadline)  
1 -(function (jQuery) {  
2 - "use strict";  
3 - // data-mode="click" for using event  
4 - // data-dark="false" for property  
5 - // icon class // la-sun // la-moon  
6 - const storageDark = localStorage.getItem('dark')  
7 - if($('body').hasClass('dark')){  
8 - changeMode('true');  
9 - } else {  
10 - changeMode('false');  
11 - }  
12 - if (storageDark !== 'null') {  
13 - changeMode(storageDark)  
14 - }  
15 - jQuery(document).on("change", '.change-mode input[type="checkbox"]' ,function (e) {  
16 - const dark = $(this).attr('data-active');  
17 - if (dark === 'true') {  
18 - $(this).attr('data-active','false')  
19 - } else {  
20 - $(this).attr('data-active','true')  
21 - }  
22 - changeMode(dark)  
23 - })  
24 - function changeMode (dark) {  
25 - const body = jQuery('body')  
26 - if (dark === 'true') {  
27 - // $('[data-mode="toggle"]').find('i.a-right').removeClass('ri-sun-line');  
28 - // $('[data-mode="toggle"]').find('i.a-left').addClass('ri-moon-clear-line');  
29 - $('#dark-mode').prop('checked', true).attr('data-active', 'false')  
30 - $('.darkmode-logo').removeClass('d-none')  
31 - $('.light-logo').addClass('d-none')  
32 - body.addClass('dark')  
33 - dark = true  
34 - } else {  
35 - // $('[data-mode="toggle"]').find('i.a-left').removeClass('ri-moon-clear-line');  
36 - // $('[data-mode="toggle"]').find('i.a-right').addClass('ri-sun-line');  
37 - $('#dark-mode').prop('checked', false).attr('data-active', 'true');  
38 - $('.light-logo').removeClass('d-none')  
39 - $('.darkmode-logo').addClass('d-none')  
40 - body.removeClass('dark')  
41 - dark = false  
42 - }  
43 - updateLocalStorage(dark)  
44 - const event = new CustomEvent("ChangeColorMode", {detail: {dark: dark} });  
45 - document.dispatchEvent(event);  
46 - }  
47 - function updateLocalStorage(dark) {  
48 - localStorage.setItem('dark', dark)  
49 - }  
50 -  
51 -})(jQuery)  
1 -/*! jQuery Flex Tree 1.2.0 2020-08-19 */  
2 -!function(a){var b="flexTree",c={};a.fn[b]=function(b){b=a.extend(!0,{id:void 0,targetElement:a(this),type:void 0,debug:!1,name:"flex_tree",items:{},className:"flex-tree",buildTree:!0,collapsed:!1,collapsable:!0,addControlOnParent:!0,threeState:!0},c,b),!1===b.collapsable&&(b.collapsed=!1),!1===b.addControlOnParent&&(b.threeState=!1);var d;if(b.buildTree){d=a("<ul/>").attr("class",b.className).attr("id",b.id);var e=function(b){b=a.extend(!0,{items:{},ul:d,collapsed:!1,collapsable:!0,addControlOnParent:!0,threeState:!0},b),a.each(b.items,function(c,d){if("object"==typeof d.childrens&&d.childrens.length){var f=a("<li/>");!b.addControlOnParent||"checkbox"!==b.type&&"radio"!==b.type||f.append(a("<input/>").attr("type",b.type).attr("name","radio"===b.type||!1===b.threeState?d.name||b.name:d.name).attr("name",d.name).attr("value",d.value).attr("class","node").attr("id",d.id).prop("checked",d.checked)),f.append(a('<span class="node"/> ').addClass(b.collapsable?b.collapsed?"open":"closed":"").append(a("<label/>").append(d.label).attr("class","node")));var g=a("<ul/>");b.ul.append(f),f.append(g),!0===b.collapsed&&g.hide(),e({items:d.childrens,name:b.name,ul:g,collapsed:b.collapsed,collapsable:b.collapsable,type:b.type,addControlOnParent:b.addControlOnParent,threeState:b.threeState})}else b.ul.append(a("<li/>").append(a("<label/>").append("undefined"!=typeof b.type?a("<input/>").attr("type",b.type).attr("name","checkbox"===b.type?d.name||b.name:b.name).attr("value",d.value).attr("class","leaf").attr("id",d.id).prop("checked",d.checked):void 0).append(d.label)))})};e(b),a(b.targetElement).append(d)}else d=b.targetElement,d.addClass(b.className);if(b.collapsable&&a("li span.node",d).on("click",function(b){a(this).toggleClass("closed").toggleClass("open").next().toggle(200)}),b.threeState&&"checkbox"===b.type){a('input[type="checkbox"].node',d).on("click",function(b){a(this).removeClass("indeterminate").prop("indeterminate",!1);var c=a(this);c.parent().find('ul input[type="checkbox"]').each(function(){a(this).prop("checked",c.prop("checked")).prop("indeterminate",!1).removeClass("indeterminate")})});var f=function(){var b=a(this).closest("ul").prevAll('input[type="checkbox"].node');if(b.length){a(this).prop("checked")||b.prop("checked",!1);var c=a(this).prop("checked"),d=a(this).prop("checked");a(this).closest("li").siblings("li").find("input:first").each(function(){a(this).prop("checked")&&!0!==a(this).prop("indeterminate")||(c=!1),(a(this).prop("checked")||!0===a(this).prop("indeterminate"))&&(d=!0)}),d||!0===a(this).prop("indeterminate")?b.addClass("indeterminate").prop("indeterminate",!0):b.removeClass("indeterminate").prop("indeterminate",!1),c&&b.prop("checked",!0).prop("indeterminate",!1).removeClass("indeterminate"),f.apply(b)}};a('input[type="checkbox"]',d).on("click",f),a('input[type="checkbox"].leaf',d).each(function(){f.apply(this)})}}}(jQuery);  
1 -import Picker from './picker.js'  
2 -import Database from './database.js'  
3 -export { Picker, Database }  
This diff could not be displayed because it is too large.
1 -/*!  
2 -FullCalendar Day Grid Plugin v4.3.0  
3 -Docs & License: https://fullcalendar.io/  
4 -(c) 2019 Adam Shaw  
5 -*/  
6 -  
7 -(function (global, factory) {  
8 - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :  
9 - typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :  
10 - (global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar));  
11 -}(this, function (exports, core) { 'use strict';  
12 -  
13 - /*! *****************************************************************************  
14 - Copyright (c) Microsoft Corporation. All rights reserved.  
15 - Licensed under the Apache License, Version 2.0 (the "License"); you may not use  
16 - this file except in compliance with the License. You may obtain a copy of the  
17 - License at http://www.apache.org/licenses/LICENSE-2.0  
18 -  
19 - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  
20 - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED  
21 - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,  
22 - MERCHANTABLITY OR NON-INFRINGEMENT.  
23 -  
24 - See the Apache Version 2.0 License for specific language governing permissions  
25 - and limitations under the License.  
26 - ***************************************************************************** */  
27 - /* global Reflect, Promise */  
28 -  
29 - var extendStatics = function(d, b) {  
30 - extendStatics = Object.setPrototypeOf ||  
31 - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||  
32 - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };  
33 - return extendStatics(d, b);  
34 - };  
35 -  
36 - function __extends(d, b) {  
37 - extendStatics(d, b);  
38 - function __() { this.constructor = d; }  
39 - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());  
40 - }  
41 -  
42 - var __assign = function() {  
43 - __assign = Object.assign || function __assign(t) {  
44 - for (var s, i = 1, n = arguments.length; i < n; i++) {  
45 - s = arguments[i];  
46 - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];  
47 - }  
48 - return t;  
49 - };  
50 - return __assign.apply(this, arguments);  
51 - };  
52 -  
53 - var DayGridDateProfileGenerator = /** @class */ (function (_super) {  
54 - __extends(DayGridDateProfileGenerator, _super);  
55 - function DayGridDateProfileGenerator() {  
56 - return _super !== null && _super.apply(this, arguments) || this;  
57 - }  
58 - // Computes the date range that will be rendered.  
59 - DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {  
60 - var dateEnv = this.dateEnv;  
61 - var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);  
62 - var start = renderRange.start;  
63 - var end = renderRange.end;  
64 - var endOfWeek;  
65 - // year and month views should be aligned with weeks. this is already done for week  
66 - if (/^(year|month)$/.test(currentRangeUnit)) {  
67 - start = dateEnv.startOfWeek(start);  
68 - // make end-of-week if not already  
69 - endOfWeek = dateEnv.startOfWeek(end);  
70 - if (endOfWeek.valueOf() !== end.valueOf()) {  
71 - end = core.addWeeks(endOfWeek, 1);  
72 - }  
73 - }  
74 - // ensure 6 weeks  
75 - if (this.options.monthMode &&  
76 - this.options.fixedWeekCount) {  
77 - var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays  
78 - core.diffWeeks(start, end));  
79 - end = core.addWeeks(end, 6 - rowCnt);  
80 - }  
81 - return { start: start, end: end };  
82 - };  
83 - return DayGridDateProfileGenerator;  
84 - }(core.DateProfileGenerator));  
85 -  
86 - /* A rectangular panel that is absolutely positioned over other content  
87 - ------------------------------------------------------------------------------------------------------------------------  
88 - Options:  
89 - - className (string)  
90 - - content (HTML string, element, or element array)  
91 - - parentEl  
92 - - top  
93 - - left  
94 - - right (the x coord of where the right edge should be. not a "CSS" right)  
95 - - autoHide (boolean)  
96 - - show (callback)  
97 - - hide (callback)  
98 - */  
99 - var Popover = /** @class */ (function () {  
100 - function Popover(options) {  
101 - var _this = this;  
102 - this.isHidden = true;  
103 - this.margin = 10; // the space required between the popover and the edges of the scroll container  
104 - // Triggered when the user clicks *anywhere* in the document, for the autoHide feature  
105 - this.documentMousedown = function (ev) {  
106 - // only hide the popover if the click happened outside the popover  
107 - if (_this.el && !_this.el.contains(ev.target)) {  
108 - _this.hide();  
109 - }  
110 - };  
111 - this.options = options;  
112 - }  
113 - // Shows the popover on the specified position. Renders it if not already  
114 - Popover.prototype.show = function () {  
115 - if (this.isHidden) {  
116 - if (!this.el) {  
117 - this.render();  
118 - }  
119 - this.el.style.display = '';  
120 - this.position();  
121 - this.isHidden = false;  
122 - this.trigger('show');  
123 - }  
124 - };  
125 - // Hides the popover, through CSS, but does not remove it from the DOM  
126 - Popover.prototype.hide = function () {  
127 - if (!this.isHidden) {  
128 - this.el.style.display = 'none';  
129 - this.isHidden = true;  
130 - this.trigger('hide');  
131 - }  
132 - };  
133 - // Creates `this.el` and renders content inside of it  
134 - Popover.prototype.render = function () {  
135 - var _this = this;  
136 - var options = this.options;  
137 - var el = this.el = core.createElement('div', {  
138 - className: 'fc-popover ' + (options.className || ''),  
139 - style: {  
140 - top: '0',  
141 - left: '0'  
142 - }  
143 - });  
144 - if (typeof options.content === 'function') {  
145 - options.content(el);  
146 - }  
147 - options.parentEl.appendChild(el);  
148 - // when a click happens on anything inside with a 'fc-close' className, hide the popover  
149 - core.listenBySelector(el, 'click', '.fc-close', function (ev) {  
150 - _this.hide();  
151 - });  
152 - if (options.autoHide) {  
153 - document.addEventListener('mousedown', this.documentMousedown);  
154 - }  
155 - };  
156 - // Hides and unregisters any handlers  
157 - Popover.prototype.destroy = function () {  
158 - this.hide();  
159 - if (this.el) {  
160 - core.removeElement(this.el);  
161 - this.el = null;  
162 - }  
163 - document.removeEventListener('mousedown', this.documentMousedown);  
164 - };  
165 - // Positions the popover optimally, using the top/left/right options  
166 - Popover.prototype.position = function () {  
167 - var options = this.options;  
168 - var el = this.el;  
169 - var elDims = el.getBoundingClientRect(); // only used for width,height  
170 - var origin = core.computeRect(el.offsetParent);  
171 - var clippingRect = core.computeClippingRect(options.parentEl);  
172 - var top; // the "position" (not "offset") values for the popover  
173 - var left; //  
174 - // compute top and left  
175 - top = options.top || 0;  
176 - if (options.left !== undefined) {  
177 - left = options.left;  
178 - }  
179 - else if (options.right !== undefined) {  
180 - left = options.right - elDims.width; // derive the left value from the right value  
181 - }  
182 - else {  
183 - left = 0;  
184 - }  
185 - // constrain to the view port. if constrained by two edges, give precedence to top/left  
186 - top = Math.min(top, clippingRect.bottom - elDims.height - this.margin);  
187 - top = Math.max(top, clippingRect.top + this.margin);  
188 - left = Math.min(left, clippingRect.right - elDims.width - this.margin);  
189 - left = Math.max(left, clippingRect.left + this.margin);  
190 - core.applyStyle(el, {  
191 - top: top - origin.top,  
192 - left: left - origin.left  
193 - });  
194 - };  
195 - // Triggers a callback. Calls a function in the option hash of the same name.  
196 - // Arguments beyond the first `name` are forwarded on.  
197 - // TODO: better code reuse for this. Repeat code  
198 - // can kill this???  
199 - Popover.prototype.trigger = function (name) {  
200 - if (this.options[name]) {  
201 - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));  
202 - }  
203 - };  
204 - return Popover;  
205 - }());  
206 -  
207 - /* Event-rendering methods for the DayGrid class  
208 - ----------------------------------------------------------------------------------------------------------------------*/  
209 - // "Simple" is bad a name. has nothing to do with SimpleDayGrid  
210 - var SimpleDayGridEventRenderer = /** @class */ (function (_super) {  
211 - __extends(SimpleDayGridEventRenderer, _super);  
212 - function SimpleDayGridEventRenderer() {  
213 - return _super !== null && _super.apply(this, arguments) || this;  
214 - }  
215 - // Builds the HTML to be used for the default element for an individual segment  
216 - SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) {  
217 - var _a = this.context, view = _a.view, options = _a.options;  
218 - var eventRange = seg.eventRange;  
219 - var eventDef = eventRange.def;  
220 - var eventUi = eventRange.ui;  
221 - var allDay = eventDef.allDay;  
222 - var isDraggable = view.computeEventDraggable(eventDef, eventUi);  
223 - var isResizableFromStart = allDay && seg.isStart && view.computeEventStartResizable(eventDef, eventUi);  
224 - var isResizableFromEnd = allDay && seg.isEnd && view.computeEventEndResizable(eventDef, eventUi);  
225 - var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo);  
226 - var skinCss = core.cssToStr(this.getSkinCss(eventUi));  
227 - var timeHtml = '';  
228 - var timeText;  
229 - var titleHtml;  
230 - classes.unshift('fc-day-grid-event', 'fc-h-event');  
231 - // Only display a timed events time if it is the starting segment  
232 - if (seg.isStart) {  
233 - timeText = this.getTimeText(eventRange);  
234 - if (timeText) {  
235 - timeHtml = '<span class="fc-time">' + core.htmlEscape(timeText) + '</span>';  
236 - }  
237 - }  
238 - titleHtml =  
239 - '<span class="fc-title">' +  
240 - (core.htmlEscape(eventDef.title || '') || '&nbsp;') + // we always want one line of height  
241 - '</span>';  
242 - return '<a class="' + classes.join(' ') + '"' +  
243 - (eventDef.url ?  
244 - ' href="' + core.htmlEscape(eventDef.url) + '"' :  
245 - '') +  
246 - (skinCss ?  
247 - ' style="' + skinCss + '"' :  
248 - '') +  
249 - '>' +  
250 - '<div class="fc-content">' +  
251 - (options.dir === 'rtl' ?  
252 - titleHtml + ' ' + timeHtml : // put a natural space in between  
253 - timeHtml + ' ' + titleHtml //  
254 - ) +  
255 - '</div>' +  
256 - (isResizableFromStart ?  
257 - '<div class="fc-resizer fc-start-resizer"></div>' :  
258 - '') +  
259 - (isResizableFromEnd ?  
260 - '<div class="fc-resizer fc-end-resizer"></div>' :  
261 - '') +  
262 - '</a>';  
263 - };  
264 - // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined  
265 - SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () {  
266 - return {  
267 - hour: 'numeric',  
268 - minute: '2-digit',  
269 - omitZeroMinute: true,  
270 - meridiem: 'narrow'  
271 - };  
272 - };  
273 - SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () {  
274 - return false; // TODO: somehow consider the originating DayGrid's column count  
275 - };  
276 - return SimpleDayGridEventRenderer;  
277 - }(core.FgEventRenderer));  
278 -  
279 - /* Event-rendering methods for the DayGrid class  
280 - ----------------------------------------------------------------------------------------------------------------------*/  
281 - var DayGridEventRenderer = /** @class */ (function (_super) {  
282 - __extends(DayGridEventRenderer, _super);  
283 - function DayGridEventRenderer(dayGrid) {  
284 - var _this = _super.call(this, dayGrid.context) || this;  
285 - _this.dayGrid = dayGrid;  
286 - return _this;  
287 - }  
288 - // Renders the given foreground event segments onto the grid  
289 - DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) {  
290 - var rowStructs = this.rowStructs = this.renderSegRows(segs);  
291 - // append to each row's content skeleton  
292 - this.dayGrid.rowEls.forEach(function (rowNode, i) {  
293 - rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl);  
294 - });  
295 - // removes the "more.." events popover  
296 - if (!mirrorInfo) {  
297 - this.dayGrid.removeSegPopover();  
298 - }  
299 - };  
300 - // Unrenders all currently rendered foreground event segments  
301 - DayGridEventRenderer.prototype.detachSegs = function () {  
302 - var rowStructs = this.rowStructs || [];  
303 - var rowStruct;  
304 - while ((rowStruct = rowStructs.pop())) {  
305 - core.removeElement(rowStruct.tbodyEl);  
306 - }  
307 - this.rowStructs = null;  
308 - };  
309 - // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton.  
310 - // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).  
311 - // PRECONDITION: each segment shoud already have a rendered and assigned `.el`  
312 - DayGridEventRenderer.prototype.renderSegRows = function (segs) {  
313 - var rowStructs = [];  
314 - var segRows;  
315 - var row;  
316 - segRows = this.groupSegRows(segs); // group into nested arrays  
317 - // iterate each row of segment groupings  
318 - for (row = 0; row < segRows.length; row++) {  
319 - rowStructs.push(this.renderSegRow(row, segRows[row]));  
320 - }  
321 - return rowStructs;  
322 - };  
323 - // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains  
324 - // the segments. Returns object with a bunch of internal data about how the render was calculated.  
325 - // NOTE: modifies rowSegs  
326 - DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {  
327 - var dayGrid = this.dayGrid;  
328 - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl;  
329 - var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels  
330 - var levelCnt = Math.max(1, segLevels.length); // ensure at least one level  
331 - var tbody = document.createElement('tbody');  
332 - var segMatrix = []; // lookup for which segments are rendered into which level+col cells  
333 - var cellMatrix = []; // lookup for all <td> elements of the level+col matrix  
334 - var loneCellMatrix = []; // lookup for <td> elements that only take up a single column  
335 - var i;  
336 - var levelSegs;  
337 - var col;  
338 - var tr;  
339 - var j;  
340 - var seg;  
341 - var td;  
342 - // populates empty cells from the current column (`col`) to `endCol`  
343 - function emptyCellsUntil(endCol) {  
344 - while (col < endCol) {  
345 - // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell  
346 - td = (loneCellMatrix[i - 1] || [])[col];  
347 - if (td) {  
348 - td.rowSpan = (td.rowSpan || 1) + 1;  
349 - }  
350 - else {  
351 - td = document.createElement('td');  
352 - tr.appendChild(td);  
353 - }  
354 - cellMatrix[i][col] = td;  
355 - loneCellMatrix[i][col] = td;  
356 - col++;  
357 - }  
358 - }  
359 - for (i = 0; i < levelCnt; i++) { // iterate through all levels  
360 - levelSegs = segLevels[i];  
361 - col = 0;  
362 - tr = document.createElement('tr');  
363 - segMatrix.push([]);  
364 - cellMatrix.push([]);  
365 - loneCellMatrix.push([]);  
366 - // levelCnt might be 1 even though there are no actual levels. protect against this.  
367 - // this single empty row is useful for styling.  
368 - if (levelSegs) {  
369 - for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level  
370 - seg = levelSegs[j];  
371 - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;  
372 - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;  
373 - emptyCellsUntil(leftCol);  
374 - // create a container that occupies or more columns. append the event element.  
375 - td = core.createElement('td', { className: 'fc-event-container' }, seg.el);  
376 - if (leftCol !== rightCol) {  
377 - td.colSpan = rightCol - leftCol + 1;  
378 - }  
379 - else { // a single-column segment  
380 - loneCellMatrix[i][col] = td;  
381 - }  
382 - while (col <= rightCol) {  
383 - cellMatrix[i][col] = td;  
384 - segMatrix[i][col] = seg;  
385 - col++;  
386 - }  
387 - tr.appendChild(td);  
388 - }  
389 - }  
390 - emptyCellsUntil(colCnt); // finish off the row  
391 - var introHtml = dayGrid.renderProps.renderIntroHtml();  
392 - if (introHtml) {  
393 - if (dayGrid.isRtl) {  
394 - core.appendToElement(tr, introHtml);  
395 - }  
396 - else {  
397 - core.prependToElement(tr, introHtml);  
398 - }  
399 - }  
400 - tbody.appendChild(tr);  
401 - }  
402 - return {  
403 - row: row,  
404 - tbodyEl: tbody,  
405 - cellMatrix: cellMatrix,  
406 - segMatrix: segMatrix,  
407 - segLevels: segLevels,  
408 - segs: rowSegs  
409 - };  
410 - };  
411 - // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.  
412 - // NOTE: modifies segs  
413 - DayGridEventRenderer.prototype.buildSegLevels = function (segs) {  
414 - var _a = this.dayGrid, isRtl = _a.isRtl, colCnt = _a.colCnt;  
415 - var levels = [];  
416 - var i;  
417 - var seg;  
418 - var j;  
419 - // Give preference to elements with certain criteria, so they have  
420 - // a chance to be closer to the top.  
421 - segs = this.sortEventSegs(segs);  
422 - for (i = 0; i < segs.length; i++) {  
423 - seg = segs[i];  
424 - // loop through levels, starting with the topmost, until the segment doesn't collide with other segments  
425 - for (j = 0; j < levels.length; j++) {  
426 - if (!isDaySegCollision(seg, levels[j])) {  
427 - break;  
428 - }  
429 - }  
430 - // `j` now holds the desired subrow index  
431 - seg.level = j;  
432 - seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only  
433 - seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only  
434 - ;  
435 - (levels[j] || (levels[j] = [])).push(seg);  
436 - }  
437 - // order segments left-to-right. very important if calendar is RTL  
438 - for (j = 0; j < levels.length; j++) {  
439 - levels[j].sort(compareDaySegCols);  
440 - }  
441 - return levels;  
442 - };  
443 - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row  
444 - DayGridEventRenderer.prototype.groupSegRows = function (segs) {  
445 - var segRows = [];  
446 - var i;  
447 - for (i = 0; i < this.dayGrid.rowCnt; i++) {  
448 - segRows.push([]);  
449 - }  
450 - for (i = 0; i < segs.length; i++) {  
451 - segRows[segs[i].row].push(segs[i]);  
452 - }  
453 - return segRows;  
454 - };  
455 - // Computes a default `displayEventEnd` value if one is not expliclty defined  
456 - DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {  
457 - return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day  
458 - };  
459 - return DayGridEventRenderer;  
460 - }(SimpleDayGridEventRenderer));  
461 - // Computes whether two segments' columns collide. They are assumed to be in the same row.  
462 - function isDaySegCollision(seg, otherSegs) {  
463 - var i;  
464 - var otherSeg;  
465 - for (i = 0; i < otherSegs.length; i++) {  
466 - otherSeg = otherSegs[i];  
467 - if (otherSeg.firstCol <= seg.lastCol &&  
468 - otherSeg.lastCol >= seg.firstCol) {  
469 - return true;  
470 - }  
471 - }  
472 - return false;  
473 - }  
474 - // A cmp function for determining the leftmost event  
475 - function compareDaySegCols(a, b) {  
476 - return a.leftCol - b.leftCol;  
477 - }  
478 -  
479 - var DayGridMirrorRenderer = /** @class */ (function (_super) {  
480 - __extends(DayGridMirrorRenderer, _super);  
481 - function DayGridMirrorRenderer() {  
482 - return _super !== null && _super.apply(this, arguments) || this;  
483 - }  
484 - DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) {  
485 - var sourceSeg = mirrorInfo.sourceSeg;  
486 - var rowStructs = this.rowStructs = this.renderSegRows(segs);  
487 - // inject each new event skeleton into each associated row  
488 - this.dayGrid.rowEls.forEach(function (rowNode, row) {  
489 - var skeletonEl = core.htmlToElement('<div class="fc-mirror-skeleton"><table></table></div>'); // will be absolutely positioned  
490 - var skeletonTopEl;  
491 - var skeletonTop;  
492 - // If there is an original segment, match the top position. Otherwise, put it at the row's top level  
493 - if (sourceSeg && sourceSeg.row === row) {  
494 - skeletonTopEl = sourceSeg.el;  
495 - }  
496 - else {  
497 - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody');  
498 - if (!skeletonTopEl) { // when no events  
499 - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table');  
500 - }  
501 - }  
502 - skeletonTop = skeletonTopEl.getBoundingClientRect().top -  
503 - rowNode.getBoundingClientRect().top; // the offsetParent origin  
504 - skeletonEl.style.top = skeletonTop + 'px';  
505 - skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl);  
506 - rowNode.appendChild(skeletonEl);  
507 - });  
508 - };  
509 - return DayGridMirrorRenderer;  
510 - }(DayGridEventRenderer));  
511 -  
512 - var EMPTY_CELL_HTML = '<td style="pointer-events:none"></td>';  
513 - var DayGridFillRenderer = /** @class */ (function (_super) {  
514 - __extends(DayGridFillRenderer, _super);  
515 - function DayGridFillRenderer(dayGrid) {  
516 - var _this = _super.call(this, dayGrid.context) || this;  
517 - _this.fillSegTag = 'td'; // override the default tag name  
518 - _this.dayGrid = dayGrid;  
519 - return _this;  
520 - }  
521 - DayGridFillRenderer.prototype.renderSegs = function (type, segs) {  
522 - // don't render timed background events  
523 - if (type === 'bgEvent') {  
524 - segs = segs.filter(function (seg) {  
525 - return seg.eventRange.def.allDay;  
526 - });  
527 - }  
528 - _super.prototype.renderSegs.call(this, type, segs);  
529 - };  
530 - DayGridFillRenderer.prototype.attachSegs = function (type, segs) {  
531 - var els = [];  
532 - var i;  
533 - var seg;  
534 - var skeletonEl;  
535 - for (i = 0; i < segs.length; i++) {  
536 - seg = segs[i];  
537 - skeletonEl = this.renderFillRow(type, seg);  
538 - this.dayGrid.rowEls[seg.row].appendChild(skeletonEl);  
539 - els.push(skeletonEl);  
540 - }  
541 - return els;  
542 - };  
543 - // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.  
544 - DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {  
545 - var dayGrid = this.dayGrid;  
546 - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl;  
547 - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;  
548 - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;  
549 - var startCol = leftCol;  
550 - var endCol = rightCol + 1;  
551 - var className;  
552 - var skeletonEl;  
553 - var trEl;  
554 - if (type === 'businessHours') {  
555 - className = 'bgevent';  
556 - }  
557 - else {  
558 - className = type.toLowerCase();  
559 - }  
560 - skeletonEl = core.htmlToElement('<div class="fc-' + className + '-skeleton">' +  
561 - '<table><tr></tr></table>' +  
562 - '</div>');  
563 - trEl = skeletonEl.getElementsByTagName('tr')[0];  
564 - if (startCol > 0) {  
565 - core.appendToElement(trEl,  
566 - // will create (startCol + 1) td's  
567 - new Array(startCol + 1).join(EMPTY_CELL_HTML));  
568 - }  
569 - seg.el.colSpan = endCol - startCol;  
570 - trEl.appendChild(seg.el);  
571 - if (endCol < colCnt) {  
572 - core.appendToElement(trEl,  
573 - // will create (colCnt - endCol) td's  
574 - new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML));  
575 - }  
576 - var introHtml = dayGrid.renderProps.renderIntroHtml();  
577 - if (introHtml) {  
578 - if (dayGrid.isRtl) {  
579 - core.appendToElement(trEl, introHtml);  
580 - }  
581 - else {  
582 - core.prependToElement(trEl, introHtml);  
583 - }  
584 - }  
585 - return skeletonEl;  
586 - };  
587 - return DayGridFillRenderer;  
588 - }(core.FillRenderer));  
589 -  
590 - var DayTile = /** @class */ (function (_super) {  
591 - __extends(DayTile, _super);  
592 - function DayTile(context, el) {  
593 - var _this = _super.call(this, context, el) || this;  
594 - var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this);  
595 - var renderFrame = _this.renderFrame = core.memoizeRendering(_this._renderFrame);  
596 - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]);  
597 - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);  
598 - _this.renderEventDrag = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);  
599 - _this.renderEventResize = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);  
600 - context.calendar.registerInteractiveComponent(_this, {  
601 - el: _this.el,  
602 - useEventCenter: false  
603 - });  
604 - return _this;  
605 - }  
606 - DayTile.prototype.render = function (props) {  
607 - this.renderFrame(props.date);  
608 - this.renderFgEvents(props.fgSegs);  
609 - this.renderEventSelection(props.eventSelection);  
610 - this.renderEventDrag(props.eventDragInstances);  
611 - this.renderEventResize(props.eventResizeInstances);  
612 - };  
613 - DayTile.prototype.destroy = function () {  
614 - _super.prototype.destroy.call(this);  
615 - this.renderFrame.unrender(); // should unrender everything else  
616 - this.calendar.unregisterInteractiveComponent(this);  
617 - };  
618 - DayTile.prototype._renderFrame = function (date) {  
619 - var _a = this, theme = _a.theme, dateEnv = _a.dateEnv;  
620 - var title = dateEnv.format(date, core.createFormatter(this.opt('dayPopoverFormat')) // TODO: cache  
621 - );  
622 - this.el.innerHTML =  
623 - '<div class="fc-header ' + theme.getClass('popoverHeader') + '">' +  
624 - '<span class="fc-title">' +  
625 - core.htmlEscape(title) +  
626 - '</span>' +  
627 - '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' +  
628 - '</div>' +  
629 - '<div class="fc-body ' + theme.getClass('popoverContent') + '">' +  
630 - '<div class="fc-event-container"></div>' +  
631 - '</div>';  
632 - this.segContainerEl = this.el.querySelector('.fc-event-container');  
633 - };  
634 - DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {  
635 - var date = this.props.date; // HACK  
636 - if (positionLeft < elWidth && positionTop < elHeight) {  
637 - return {  
638 - component: this,  
639 - dateSpan: {  
640 - allDay: true,  
641 - range: { start: date, end: core.addDays(date, 1) }  
642 - },  
643 - dayEl: this.el,  
644 - rect: {  
645 - left: 0,  
646 - top: 0,  
647 - right: elWidth,  
648 - bottom: elHeight  
649 - },  
650 - layer: 1  
651 - };  
652 - }  
653 - };  
654 - return DayTile;  
655 - }(core.DateComponent));  
656 - var DayTileEventRenderer = /** @class */ (function (_super) {  
657 - __extends(DayTileEventRenderer, _super);  
658 - function DayTileEventRenderer(dayTile) {  
659 - var _this = _super.call(this, dayTile.context) || this;  
660 - _this.dayTile = dayTile;  
661 - return _this;  
662 - }  
663 - DayTileEventRenderer.prototype.attachSegs = function (segs) {  
664 - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {  
665 - var seg = segs_1[_i];  
666 - this.dayTile.segContainerEl.appendChild(seg.el);  
667 - }  
668 - };  
669 - DayTileEventRenderer.prototype.detachSegs = function (segs) {  
670 - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {  
671 - var seg = segs_2[_i];  
672 - core.removeElement(seg.el);  
673 - }  
674 - };  
675 - return DayTileEventRenderer;  
676 - }(SimpleDayGridEventRenderer));  
677 -  
678 - var DayBgRow = /** @class */ (function () {  
679 - function DayBgRow(context) {  
680 - this.context = context;  
681 - }  
682 - DayBgRow.prototype.renderHtml = function (props) {  
683 - var parts = [];  
684 - if (props.renderIntroHtml) {  
685 - parts.push(props.renderIntroHtml());  
686 - }  
687 - for (var _i = 0, _a = props.cells; _i < _a.length; _i++) {  
688 - var cell = _a[_i];  
689 - parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs));  
690 - }  
691 - if (!props.cells.length) {  
692 - parts.push('<td class="fc-day ' + this.context.theme.getClass('widgetContent') + '"></td>');  
693 - }  
694 - if (this.context.options.dir === 'rtl') {  
695 - parts.reverse();  
696 - }  
697 - return '<tr>' + parts.join('') + '</tr>';  
698 - };  
699 - return DayBgRow;  
700 - }());  
701 - function renderCellHtml(date, dateProfile, context, otherAttrs) {  
702 - var dateEnv = context.dateEnv, theme = context.theme;  
703 - var isDateValid = core.rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.  
704 - var classes = core.getDayClasses(date, dateProfile, context);  
705 - classes.unshift('fc-day', theme.getClass('widgetContent'));  
706 - return '<td class="' + classes.join(' ') + '"' +  
707 - (isDateValid ?  
708 - ' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' :  
709 - '') +  
710 - (otherAttrs ?  
711 - ' ' + otherAttrs :  
712 - '') +  
713 - '></td>';  
714 - }  
715 -  
716 - var DAY_NUM_FORMAT = core.createFormatter({ day: 'numeric' });  
717 - var WEEK_NUM_FORMAT = core.createFormatter({ week: 'numeric' });  
718 - var DayGrid = /** @class */ (function (_super) {  
719 - __extends(DayGrid, _super);  
720 - function DayGrid(context, el, renderProps) {  
721 - var _this = _super.call(this, context, el) || this;  
722 - _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid  
723 - _this.isCellSizesDirty = false;  
724 - var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this);  
725 - var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this);  
726 - _this.mirrorRenderer = new DayGridMirrorRenderer(_this);  
727 - var renderCells = _this.renderCells = core.memoizeRendering(_this._renderCells, _this._unrenderCells);  
728 - _this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]);  
729 - _this.renderDateSelection = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]);  
730 - _this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]);  
731 - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]);  
732 - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);  
733 - _this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]);  
734 - _this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]);  
735 - _this.renderProps = renderProps;  
736 - return _this;  
737 - }  
738 - DayGrid.prototype.render = function (props) {  
739 - var cells = props.cells;  
740 - this.rowCnt = cells.length;  
741 - this.colCnt = cells[0].length;  
742 - this.renderCells(cells, props.isRigid);  
743 - this.renderBusinessHours(props.businessHourSegs);  
744 - this.renderDateSelection(props.dateSelectionSegs);  
745 - this.renderBgEvents(props.bgEventSegs);  
746 - this.renderFgEvents(props.fgEventSegs);  
747 - this.renderEventSelection(props.eventSelection);  
748 - this.renderEventDrag(props.eventDrag);  
749 - this.renderEventResize(props.eventResize);  
750 - if (this.segPopoverTile) {  
751 - this.updateSegPopoverTile();  
752 - }  
753 - };  
754 - DayGrid.prototype.destroy = function () {  
755 - _super.prototype.destroy.call(this);  
756 - this.renderCells.unrender(); // will unrender everything else  
757 - };  
758 - DayGrid.prototype.getCellRange = function (row, col) {  
759 - var start = this.props.cells[row][col].date;  
760 - var end = core.addDays(start, 1);  
761 - return { start: start, end: end };  
762 - };  
763 - DayGrid.prototype.updateSegPopoverTile = function (date, segs) {  
764 - var ownProps = this.props;  
765 - this.segPopoverTile.receiveProps({  
766 - date: date || this.segPopoverTile.props.date,  
767 - fgSegs: segs || this.segPopoverTile.props.fgSegs,  
768 - eventSelection: ownProps.eventSelection,  
769 - eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null,  
770 - eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null  
771 - });  
772 - };  
773 - /* Date Rendering  
774 - ------------------------------------------------------------------------------------------------------------------*/  
775 - DayGrid.prototype._renderCells = function (cells, isRigid) {  
776 - var _a = this, view = _a.view, dateEnv = _a.dateEnv;  
777 - var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt;  
778 - var html = '';  
779 - var row;  
780 - var col;  
781 - for (row = 0; row < rowCnt; row++) {  
782 - html += this.renderDayRowHtml(row, isRigid);  
783 - }  
784 - this.el.innerHTML = html;  
785 - this.rowEls = core.findElements(this.el, '.fc-row');  
786 - this.cellEls = core.findElements(this.el, '.fc-day, .fc-disabled-day');  
787 - if (this.isRtl) {  
788 - this.cellEls.reverse();  
789 - }  
790 - this.rowPositions = new core.PositionCache(this.el, this.rowEls, false, true // vertical  
791 - );  
792 - this.colPositions = new core.PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row  
793 - true, false // horizontal  
794 - );  
795 - // trigger dayRender with each cell's element  
796 - for (row = 0; row < rowCnt; row++) {  
797 - for (col = 0; col < colCnt; col++) {  
798 - this.publiclyTrigger('dayRender', [  
799 - {  
800 - date: dateEnv.toDate(cells[row][col].date),  
801 - el: this.getCellEl(row, col),  
802 - view: view  
803 - }  
804 - ]);  
805 - }  
806 - }  
807 - this.isCellSizesDirty = true;  
808 - };  
809 - DayGrid.prototype._unrenderCells = function () {  
810 - this.removeSegPopover();  
811 - };  
812 - // Generates the HTML for a single row, which is a div that wraps a table.  
813 - // `row` is the row number.  
814 - DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {  
815 - var theme = this.theme;  
816 - var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];  
817 - if (isRigid) {  
818 - classes.push('fc-rigid');  
819 - }  
820 - var bgRow = new DayBgRow(this.context);  
821 - return '' +  
822 - '<div class="' + classes.join(' ') + '">' +  
823 - '<div class="fc-bg">' +  
824 - '<table class="' + theme.getClass('tableGrid') + '">' +  
825 - bgRow.renderHtml({  
826 - cells: this.props.cells[row],  
827 - dateProfile: this.props.dateProfile,  
828 - renderIntroHtml: this.renderProps.renderBgIntroHtml  
829 - }) +  
830 - '</table>' +  
831 - '</div>' +  
832 - '<div class="fc-content-skeleton">' +  
833 - '<table>' +  
834 - (this.getIsNumbersVisible() ?  
835 - '<thead>' +  
836 - this.renderNumberTrHtml(row) +  
837 - '</thead>' :  
838 - '') +  
839 - '</table>' +  
840 - '</div>' +  
841 - '</div>';  
842 - };  
843 - DayGrid.prototype.getIsNumbersVisible = function () {  
844 - return this.getIsDayNumbersVisible() ||  
845 - this.renderProps.cellWeekNumbersVisible ||  
846 - this.renderProps.colWeekNumbersVisible;  
847 - };  
848 - DayGrid.prototype.getIsDayNumbersVisible = function () {  
849 - return this.rowCnt > 1;  
850 - };  
851 - /* Grid Number Rendering  
852 - ------------------------------------------------------------------------------------------------------------------*/  
853 - DayGrid.prototype.renderNumberTrHtml = function (row) {  
854 - var intro = this.renderProps.renderNumberIntroHtml(row, this);  
855 - return '' +  
856 - '<tr>' +  
857 - (this.isRtl ? '' : intro) +  
858 - this.renderNumberCellsHtml(row) +  
859 - (this.isRtl ? intro : '') +  
860 - '</tr>';  
861 - };  
862 - DayGrid.prototype.renderNumberCellsHtml = function (row) {  
863 - var htmls = [];  
864 - var col;  
865 - var date;  
866 - for (col = 0; col < this.colCnt; col++) {  
867 - date = this.props.cells[row][col].date;  
868 - htmls.push(this.renderNumberCellHtml(date));  
869 - }  
870 - if (this.isRtl) {  
871 - htmls.reverse();  
872 - }  
873 - return htmls.join('');  
874 - };  
875 - // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton.  
876 - // The number row will only exist if either day numbers or week numbers are turned on.  
877 - DayGrid.prototype.renderNumberCellHtml = function (date) {  
878 - var _a = this, view = _a.view, dateEnv = _a.dateEnv;  
879 - var html = '';  
880 - var isDateValid = core.rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.  
881 - var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;  
882 - var classes;  
883 - var weekCalcFirstDow;  
884 - if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) {  
885 - // no numbers in day cell (week number must be along the side)  
886 - return '<td></td>'; // will create an empty space above events :(  
887 - }  
888 - classes = core.getDayClasses(date, this.props.dateProfile, this.context);  
889 - classes.unshift('fc-day-top');  
890 - if (this.renderProps.cellWeekNumbersVisible) {  
891 - weekCalcFirstDow = dateEnv.weekDow;  
892 - }  
893 - html += '<td class="' + classes.join(' ') + '"' +  
894 - (isDateValid ?  
895 - ' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' :  
896 - '') +  
897 - '>';  
898 - if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) {  
899 - html += core.buildGotoAnchorHtml(view, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML  
900 - );  
901 - }  
902 - if (isDayNumberVisible) {  
903 - html += core.buildGotoAnchorHtml(view, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML  
904 - );  
905 - }  
906 - html += '</td>';  
907 - return html;  
908 - };  
909 - /* Sizing  
910 - ------------------------------------------------------------------------------------------------------------------*/  
911 - DayGrid.prototype.updateSize = function (isResize) {  
912 - var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer;  
913 - if (isResize ||  
914 - this.isCellSizesDirty ||  
915 - this.view.calendar.isEventsUpdated // hack  
916 - ) {  
917 - this.buildPositionCaches();  
918 - this.isCellSizesDirty = false;  
919 - }  
920 - fillRenderer.computeSizes(isResize);  
921 - eventRenderer.computeSizes(isResize);  
922 - mirrorRenderer.computeSizes(isResize);  
923 - fillRenderer.assignSizes(isResize);  
924 - eventRenderer.assignSizes(isResize);  
925 - mirrorRenderer.assignSizes(isResize);  
926 - };  
927 - DayGrid.prototype.buildPositionCaches = function () {  
928 - this.buildColPositions();  
929 - this.buildRowPositions();  
930 - };  
931 - DayGrid.prototype.buildColPositions = function () {  
932 - this.colPositions.build();  
933 - };  
934 - DayGrid.prototype.buildRowPositions = function () {  
935 - this.rowPositions.build();  
936 - this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack  
937 - };  
938 - /* Hit System  
939 - ------------------------------------------------------------------------------------------------------------------*/  
940 - DayGrid.prototype.positionToHit = function (leftPosition, topPosition) {  
941 - var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;  
942 - var col = colPositions.leftToIndex(leftPosition);  
943 - var row = rowPositions.topToIndex(topPosition);  
944 - if (row != null && col != null) {  
945 - return {  
946 - row: row,  
947 - col: col,  
948 - dateSpan: {  
949 - range: this.getCellRange(row, col),  
950 - allDay: true  
951 - },  
952 - dayEl: this.getCellEl(row, col),  
953 - relativeRect: {  
954 - left: colPositions.lefts[col],  
955 - right: colPositions.rights[col],  
956 - top: rowPositions.tops[row],  
957 - bottom: rowPositions.bottoms[row]  
958 - }  
959 - };  
960 - }  
961 - };  
962 - /* Cell System  
963 - ------------------------------------------------------------------------------------------------------------------*/  
964 - // FYI: the first column is the leftmost column, regardless of date  
965 - DayGrid.prototype.getCellEl = function (row, col) {  
966 - return this.cellEls[row * this.colCnt + col];  
967 - };  
968 - /* Event Drag Visualization  
969 - ------------------------------------------------------------------------------------------------------------------*/  
970 - DayGrid.prototype._renderEventDrag = function (state) {  
971 - if (state) {  
972 - this.eventRenderer.hideByHash(state.affectedInstances);  
973 - this.fillRenderer.renderSegs('highlight', state.segs);  
974 - }  
975 - };  
976 - DayGrid.prototype._unrenderEventDrag = function (state) {  
977 - if (state) {  
978 - this.eventRenderer.showByHash(state.affectedInstances);  
979 - this.fillRenderer.unrender('highlight');  
980 - }  
981 - };  
982 - /* Event Resize Visualization  
983 - ------------------------------------------------------------------------------------------------------------------*/  
984 - DayGrid.prototype._renderEventResize = function (state) {  
985 - if (state) {  
986 - this.eventRenderer.hideByHash(state.affectedInstances);  
987 - this.fillRenderer.renderSegs('highlight', state.segs);  
988 - this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });  
989 - }  
990 - };  
991 - DayGrid.prototype._unrenderEventResize = function (state) {  
992 - if (state) {  
993 - this.eventRenderer.showByHash(state.affectedInstances);  
994 - this.fillRenderer.unrender('highlight');  
995 - this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg });  
996 - }  
997 - };  
998 - /* More+ Link Popover  
999 - ------------------------------------------------------------------------------------------------------------------*/  
1000 - DayGrid.prototype.removeSegPopover = function () {  
1001 - if (this.segPopover) {  
1002 - this.segPopover.hide(); // in handler, will call segPopover's removeElement  
1003 - }  
1004 - };  
1005 - // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid.  
1006 - // `levelLimit` can be false (don't limit), a number, or true (should be computed).  
1007 - DayGrid.prototype.limitRows = function (levelLimit) {  
1008 - var rowStructs = this.eventRenderer.rowStructs || [];  
1009 - var row; // row #  
1010 - var rowLevelLimit;  
1011 - for (row = 0; row < rowStructs.length; row++) {  
1012 - this.unlimitRow(row);  
1013 - if (!levelLimit) {  
1014 - rowLevelLimit = false;  
1015 - }  
1016 - else if (typeof levelLimit === 'number') {  
1017 - rowLevelLimit = levelLimit;  
1018 - }  
1019 - else {  
1020 - rowLevelLimit = this.computeRowLevelLimit(row);  
1021 - }  
1022 - if (rowLevelLimit !== false) {  
1023 - this.limitRow(row, rowLevelLimit);  
1024 - }  
1025 - }  
1026 - };  
1027 - // Computes the number of levels a row will accomodate without going outside its bounds.  
1028 - // Assumes the row is "rigid" (maintains a constant height regardless of what is inside).  
1029 - // `row` is the row number.  
1030 - DayGrid.prototype.computeRowLevelLimit = function (row) {  
1031 - var rowEl = this.rowEls[row]; // the containing "fake" row div  
1032 - var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport!  
1033 - var trEls = core.findChildren(this.eventRenderer.rowStructs[row].tbodyEl);  
1034 - var i;  
1035 - var trEl;  
1036 - // Reveal one level <tr> at a time and stop when we find one out of bounds  
1037 - for (i = 0; i < trEls.length; i++) {  
1038 - trEl = trEls[i];  
1039 - trEl.classList.remove('fc-limited'); // reset to original state (reveal)  
1040 - if (trEl.getBoundingClientRect().bottom > rowBottom) {  
1041 - return i;  
1042 - }  
1043 - }  
1044 - return false; // should not limit at all  
1045 - };  
1046 - // Limits the given grid row to the maximum number of levels and injects "more" links if necessary.  
1047 - // `row` is the row number.  
1048 - // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.  
1049 - DayGrid.prototype.limitRow = function (row, levelLimit) {  
1050 - var _this = this;  
1051 - var _a = this, colCnt = _a.colCnt, isRtl = _a.isRtl;  
1052 - var rowStruct = this.eventRenderer.rowStructs[row];  
1053 - var moreNodes = []; // array of "more" <a> links and <td> DOM nodes  
1054 - var col = 0; // col #, left-to-right (not chronologically)  
1055 - var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right  
1056 - var cellMatrix; // a matrix (by level, then column) of all <td> elements in the row  
1057 - var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes  
1058 - var i;  
1059 - var seg;  
1060 - var segsBelow; // array of segment objects below `seg` in the current `col`  
1061 - var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies  
1062 - var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)  
1063 - var td;  
1064 - var rowSpan;  
1065 - var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell  
1066 - var j;  
1067 - var moreTd;  
1068 - var moreWrap;  
1069 - var moreLink;  
1070 - // Iterates through empty level cells and places "more" links inside if need be  
1071 - var emptyCellsUntil = function (endCol) {  
1072 - while (col < endCol) {  
1073 - segsBelow = _this.getCellSegs(row, col, levelLimit);  
1074 - if (segsBelow.length) {  
1075 - td = cellMatrix[levelLimit - 1][col];  
1076 - moreLink = _this.renderMoreLink(row, col, segsBelow);  
1077 - moreWrap = core.createElement('div', null, moreLink);  
1078 - td.appendChild(moreWrap);  
1079 - moreNodes.push(moreWrap);  
1080 - }  
1081 - col++;  
1082 - }  
1083 - };  
1084 - if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?  
1085 - levelSegs = rowStruct.segLevels[levelLimit - 1];  
1086 - cellMatrix = rowStruct.cellMatrix;  
1087 - limitedNodes = core.findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level <tr> elements past the limit  
1088 - limitedNodes.forEach(function (node) {  
1089 - node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array  
1090 - });  
1091 - // iterate though segments in the last allowable level  
1092 - for (i = 0; i < levelSegs.length; i++) {  
1093 - seg = levelSegs[i];  
1094 - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;  
1095 - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;  
1096 - emptyCellsUntil(leftCol); // process empty cells before the segment  
1097 - // determine *all* segments below `seg` that occupy the same columns  
1098 - colSegsBelow = [];  
1099 - totalSegsBelow = 0;  
1100 - while (col <= rightCol) {  
1101 - segsBelow = this.getCellSegs(row, col, levelLimit);  
1102 - colSegsBelow.push(segsBelow);  
1103 - totalSegsBelow += segsBelow.length;  
1104 - col++;  
1105 - }  
1106 - if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links?  
1107 - td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell  
1108 - rowSpan = td.rowSpan || 1;  
1109 - segMoreNodes = [];  
1110 - // make a replacement <td> for each column the segment occupies. will be one for each colspan  
1111 - for (j = 0; j < colSegsBelow.length; j++) {  
1112 - moreTd = core.createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan });  
1113 - segsBelow = colSegsBelow[j];  
1114 - moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too  
1115 - );  
1116 - moreWrap = core.createElement('div', null, moreLink);  
1117 - moreTd.appendChild(moreWrap);  
1118 - segMoreNodes.push(moreTd);  
1119 - moreNodes.push(moreTd);  
1120 - }  
1121 - td.classList.add('fc-limited');  
1122 - core.insertAfterElement(td, segMoreNodes);  
1123 - limitedNodes.push(td);  
1124 - }  
1125 - }  
1126 - emptyCellsUntil(this.colCnt); // finish off the level  
1127 - rowStruct.moreEls = moreNodes; // for easy undoing later  
1128 - rowStruct.limitedEls = limitedNodes; // for easy undoing later  
1129 - }  
1130 - };  
1131 - // Reveals all levels and removes all "more"-related elements for a grid's row.  
1132 - // `row` is a row number.  
1133 - DayGrid.prototype.unlimitRow = function (row) {  
1134 - var rowStruct = this.eventRenderer.rowStructs[row];  
1135 - if (rowStruct.moreEls) {  
1136 - rowStruct.moreEls.forEach(core.removeElement);  
1137 - rowStruct.moreEls = null;  
1138 - }  
1139 - if (rowStruct.limitedEls) {  
1140 - rowStruct.limitedEls.forEach(function (limitedEl) {  
1141 - limitedEl.classList.remove('fc-limited');  
1142 - });  
1143 - rowStruct.limitedEls = null;  
1144 - }  
1145 - };  
1146 - // Renders an <a> element that represents hidden event element for a cell.  
1147 - // Responsible for attaching click handler as well.  
1148 - DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {  
1149 - var _this = this;  
1150 - var _a = this, view = _a.view, dateEnv = _a.dateEnv;  
1151 - var a = core.createElement('a', { className: 'fc-more' });  
1152 - a.innerText = this.getMoreLinkText(hiddenSegs.length);  
1153 - a.addEventListener('click', function (ev) {  
1154 - var clickOption = _this.opt('eventLimitClick');  
1155 - var _col = _this.isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?  
1156 - var date = _this.props.cells[row][_col].date;  
1157 - var moreEl = ev.currentTarget;  
1158 - var dayEl = _this.getCellEl(row, col);  
1159 - var allSegs = _this.getCellSegs(row, col);  
1160 - // rescope the segments to be within the cell's date  
1161 - var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);  
1162 - var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);  
1163 - if (typeof clickOption === 'function') {  
1164 - // the returned value can be an atomic option  
1165 - clickOption = _this.publiclyTrigger('eventLimitClick', [  
1166 - {  
1167 - date: dateEnv.toDate(date),  
1168 - allDay: true,  
1169 - dayEl: dayEl,  
1170 - moreEl: moreEl,  
1171 - segs: reslicedAllSegs,  
1172 - hiddenSegs: reslicedHiddenSegs,  
1173 - jsEvent: ev,  
1174 - view: view  
1175 - }  
1176 - ]);  
1177 - }  
1178 - if (clickOption === 'popover') {  
1179 - _this.showSegPopover(row, col, moreEl, reslicedAllSegs);  
1180 - }  
1181 - else if (typeof clickOption === 'string') { // a view name  
1182 - view.calendar.zoomTo(date, clickOption);  
1183 - }  
1184 - });  
1185 - return a;  
1186 - };  
1187 - // Reveals the popover that displays all events within a cell  
1188 - DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {  
1189 - var _this = this;  
1190 - var _a = this, calendar = _a.calendar, view = _a.view, theme = _a.theme;  
1191 - var _col = this.isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?  
1192 - var moreWrap = moreLink.parentNode; // the <div> wrapper around the <a>  
1193 - var topEl; // the element we want to match the top coordinate of  
1194 - var options;  
1195 - if (this.rowCnt === 1) {  
1196 - topEl = view.el; // will cause the popover to cover any sort of header  
1197 - }  
1198 - else {  
1199 - topEl = this.rowEls[row]; // will align with top of row  
1200 - }  
1201 - options = {  
1202 - className: 'fc-more-popover ' + theme.getClass('popover'),  
1203 - parentEl: view.el,  
1204 - top: core.computeRect(topEl).top,  
1205 - autoHide: true,  
1206 - content: function (el) {  
1207 - _this.segPopoverTile = new DayTile(_this.context, el);  
1208 - _this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs);  
1209 - },  
1210 - hide: function () {  
1211 - _this.segPopoverTile.destroy();  
1212 - _this.segPopoverTile = null;  
1213 - _this.segPopover.destroy();  
1214 - _this.segPopover = null;  
1215 - }  
1216 - };  
1217 - // Determine horizontal coordinate.  
1218 - // We use the moreWrap instead of the <td> to avoid border confusion.  
1219 - if (this.isRtl) {  
1220 - options.right = core.computeRect(moreWrap).right + 1; // +1 to be over cell border  
1221 - }  
1222 - else {  
1223 - options.left = core.computeRect(moreWrap).left - 1; // -1 to be over cell border  
1224 - }  
1225 - this.segPopover = new Popover(options);  
1226 - this.segPopover.show();  
1227 - calendar.releaseAfterSizingTriggers(); // hack for eventPositioned  
1228 - };  
1229 - // Given the events within an array of segment objects, reslice them to be in a single day  
1230 - DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {  
1231 - var dayStart = dayDate;  
1232 - var dayEnd = core.addDays(dayStart, 1);  
1233 - var dayRange = { start: dayStart, end: dayEnd };  
1234 - var newSegs = [];  
1235 - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {  
1236 - var seg = segs_1[_i];  
1237 - var eventRange = seg.eventRange;  
1238 - var origRange = eventRange.range;  
1239 - var slicedRange = core.intersectRanges(origRange, dayRange);  
1240 - if (slicedRange) {  
1241 - newSegs.push(__assign({}, seg, { eventRange: {  
1242 - def: eventRange.def,  
1243 - ui: __assign({}, eventRange.ui, { durationEditable: false }),  
1244 - instance: eventRange.instance,  
1245 - range: slicedRange  
1246 - }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() }));  
1247 - }  
1248 - }  
1249 - return newSegs;  
1250 - };  
1251 - // Generates the text that should be inside a "more" link, given the number of events it represents  
1252 - DayGrid.prototype.getMoreLinkText = function (num) {  
1253 - var opt = this.opt('eventLimitText');  
1254 - if (typeof opt === 'function') {  
1255 - return opt(num);  
1256 - }  
1257 - else {  
1258 - return '+' + num + ' ' + opt;  
1259 - }  
1260 - };  
1261 - // Returns segments within a given cell.  
1262 - // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.  
1263 - DayGrid.prototype.getCellSegs = function (row, col, startLevel) {  
1264 - var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;  
1265 - var level = startLevel || 0;  
1266 - var segs = [];  
1267 - var seg;  
1268 - while (level < segMatrix.length) {  
1269 - seg = segMatrix[level][col];  
1270 - if (seg) {  
1271 - segs.push(seg);  
1272 - }  
1273 - level++;  
1274 - }  
1275 - return segs;  
1276 - };  
1277 - return DayGrid;  
1278 - }(core.DateComponent));  
1279 -  
1280 - var WEEK_NUM_FORMAT$1 = core.createFormatter({ week: 'numeric' });  
1281 - /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.  
1282 - ----------------------------------------------------------------------------------------------------------------------*/  
1283 - // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.  
1284 - // It is responsible for managing width/height.  
1285 - var DayGridView = /** @class */ (function (_super) {  
1286 - __extends(DayGridView, _super);  
1287 - function DayGridView(context, viewSpec, dateProfileGenerator, parentEl) {  
1288 - var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this;  
1289 - /* Header Rendering  
1290 - ------------------------------------------------------------------------------------------------------------------*/  
1291 - // Generates the HTML that will go before the day-of week header cells  
1292 - _this.renderHeadIntroHtml = function () {  
1293 - var theme = _this.theme;  
1294 - if (_this.colWeekNumbersVisible) {  
1295 - return '' +  
1296 - '<th class="fc-week-number ' + theme.getClass('widgetHeader') + '" ' + _this.weekNumberStyleAttr() + '>' +  
1297 - '<span>' + // needed for matchCellWidths  
1298 - core.htmlEscape(_this.opt('weekLabel')) +  
1299 - '</span>' +  
1300 - '</th>';  
1301 - }  
1302 - return '';  
1303 - };  
1304 - /* Day Grid Rendering  
1305 - ------------------------------------------------------------------------------------------------------------------*/  
1306 - // Generates the HTML that will go before content-skeleton cells that display the day/week numbers  
1307 - _this.renderDayGridNumberIntroHtml = function (row, dayGrid) {  
1308 - var dateEnv = _this.dateEnv;  
1309 - var weekStart = dayGrid.props.cells[row][0].date;  
1310 - if (_this.colWeekNumbersVisible) {  
1311 - return '' +  
1312 - '<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '>' +  
1313 - core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths  
1314 - _this, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML  
1315 - ) +  
1316 - '</td>';  
1317 - }  
1318 - return '';  
1319 - };  
1320 - // Generates the HTML that goes before the day bg cells for each day-row  
1321 - _this.renderDayGridBgIntroHtml = function () {  
1322 - var theme = _this.theme;  
1323 - if (_this.colWeekNumbersVisible) {  
1324 - return '<td class="fc-week-number ' + theme.getClass('widgetContent') + '" ' + _this.weekNumberStyleAttr() + '></td>';  
1325 - }  
1326 - return '';  
1327 - };  
1328 - // Generates the HTML that goes before every other type of row generated by DayGrid.  
1329 - // Affects mirror-skeleton and highlight-skeleton rows.  
1330 - _this.renderDayGridIntroHtml = function () {  
1331 - if (_this.colWeekNumbersVisible) {  
1332 - return '<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '></td>';  
1333 - }  
1334 - return '';  
1335 - };  
1336 - _this.el.classList.add('fc-dayGrid-view');  
1337 - _this.el.innerHTML = _this.renderSkeletonHtml();  
1338 - _this.scroller = new core.ScrollComponent('hidden', // overflow x  
1339 - 'auto' // overflow y  
1340 - );  
1341 - var dayGridContainerEl = _this.scroller.el;  
1342 - _this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl);  
1343 - dayGridContainerEl.classList.add('fc-day-grid-container');  
1344 - var dayGridEl = core.createElement('div', { className: 'fc-day-grid' });  
1345 - dayGridContainerEl.appendChild(dayGridEl);  
1346 - var cellWeekNumbersVisible;  
1347 - if (_this.opt('weekNumbers')) {  
1348 - if (_this.opt('weekNumbersWithinDays')) {  
1349 - cellWeekNumbersVisible = true;  
1350 - _this.colWeekNumbersVisible = false;  
1351 - }  
1352 - else {  
1353 - cellWeekNumbersVisible = false;  
1354 - _this.colWeekNumbersVisible = true;  
1355 - }  
1356 - }  
1357 - else {  
1358 - _this.colWeekNumbersVisible = false;  
1359 - cellWeekNumbersVisible = false;  
1360 - }  
1361 - _this.dayGrid = new DayGrid(_this.context, dayGridEl, {  
1362 - renderNumberIntroHtml: _this.renderDayGridNumberIntroHtml,  
1363 - renderBgIntroHtml: _this.renderDayGridBgIntroHtml,  
1364 - renderIntroHtml: _this.renderDayGridIntroHtml,  
1365 - colWeekNumbersVisible: _this.colWeekNumbersVisible,  
1366 - cellWeekNumbersVisible: cellWeekNumbersVisible  
1367 - });  
1368 - return _this;  
1369 - }  
1370 - DayGridView.prototype.destroy = function () {  
1371 - _super.prototype.destroy.call(this);  
1372 - this.dayGrid.destroy();  
1373 - this.scroller.destroy();  
1374 - };  
1375 - // Builds the HTML skeleton for the view.  
1376 - // The day-grid component will render inside of a container defined by this HTML.  
1377 - DayGridView.prototype.renderSkeletonHtml = function () {  
1378 - var theme = this.theme;  
1379 - return '' +  
1380 - '<table class="' + theme.getClass('tableGrid') + '">' +  
1381 - (this.opt('columnHeader') ?  
1382 - '<thead class="fc-head">' +  
1383 - '<tr>' +  
1384 - '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '">&nbsp;</td>' +  
1385 - '</tr>' +  
1386 - '</thead>' :  
1387 - '') +  
1388 - '<tbody class="fc-body">' +  
1389 - '<tr>' +  
1390 - '<td class="' + theme.getClass('widgetContent') + '"></td>' +  
1391 - '</tr>' +  
1392 - '</tbody>' +  
1393 - '</table>';  
1394 - };  
1395 - // Generates an HTML attribute string for setting the width of the week number column, if it is known  
1396 - DayGridView.prototype.weekNumberStyleAttr = function () {  
1397 - if (this.weekNumberWidth != null) {  
1398 - return 'style="width:' + this.weekNumberWidth + 'px"';  
1399 - }  
1400 - return '';  
1401 - };  
1402 - // Determines whether each row should have a constant height  
1403 - DayGridView.prototype.hasRigidRows = function () {  
1404 - var eventLimit = this.opt('eventLimit');  
1405 - return eventLimit && typeof eventLimit !== 'number';  
1406 - };  
1407 - /* Dimensions  
1408 - ------------------------------------------------------------------------------------------------------------------*/  
1409 - DayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) {  
1410 - _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first  
1411 - this.dayGrid.updateSize(isResize);  
1412 - };  
1413 - // Refreshes the horizontal dimensions of the view  
1414 - DayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {  
1415 - var dayGrid = this.dayGrid;  
1416 - var eventLimit = this.opt('eventLimit');  
1417 - var headRowEl = this.header ? this.header.el : null; // HACK  
1418 - var scrollerHeight;  
1419 - var scrollbarWidths;  
1420 - // hack to give the view some height prior to dayGrid's columns being rendered  
1421 - // TODO: separate setting height from scroller VS dayGrid.  
1422 - if (!dayGrid.rowEls) {  
1423 - if (!isAuto) {  
1424 - scrollerHeight = this.computeScrollerHeight(viewHeight);  
1425 - this.scroller.setHeight(scrollerHeight);  
1426 - }  
1427 - return;  
1428 - }  
1429 - if (this.colWeekNumbersVisible) {  
1430 - // Make sure all week number cells running down the side have the same width.  
1431 - this.weekNumberWidth = core.matchCellWidths(core.findElements(this.el, '.fc-week-number'));  
1432 - }  
1433 - // reset all heights to be natural  
1434 - this.scroller.clear();  
1435 - if (headRowEl) {  
1436 - core.uncompensateScroll(headRowEl);  
1437 - }  
1438 - dayGrid.removeSegPopover(); // kill the "more" popover if displayed  
1439 - // is the event limit a constant level number?  
1440 - if (eventLimit && typeof eventLimit === 'number') {  
1441 - dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after  
1442 - }  
1443 - // distribute the height to the rows  
1444 - // (viewHeight is a "recommended" value if isAuto)  
1445 - scrollerHeight = this.computeScrollerHeight(viewHeight);  
1446 - this.setGridHeight(scrollerHeight, isAuto);  
1447 - // is the event limit dynamically calculated?  
1448 - if (eventLimit && typeof eventLimit !== 'number') {  
1449 - dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set  
1450 - }  
1451 - if (!isAuto) { // should we force dimensions of the scroll container?  
1452 - this.scroller.setHeight(scrollerHeight);  
1453 - scrollbarWidths = this.scroller.getScrollbarWidths();  
1454 - if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?  
1455 - if (headRowEl) {  
1456 - core.compensateScroll(headRowEl, scrollbarWidths);  
1457 - }  
1458 - // doing the scrollbar compensation might have created text overflow which created more height. redo  
1459 - scrollerHeight = this.computeScrollerHeight(viewHeight);  
1460 - this.scroller.setHeight(scrollerHeight);  
1461 - }  
1462 - // guarantees the same scrollbar widths  
1463 - this.scroller.lockOverflow(scrollbarWidths);  
1464 - }  
1465 - };  
1466 - // given a desired total height of the view, returns what the height of the scroller should be  
1467 - DayGridView.prototype.computeScrollerHeight = function (viewHeight) {  
1468 - return viewHeight -  
1469 - core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller  
1470 - };  
1471 - // Sets the height of just the DayGrid component in this view  
1472 - DayGridView.prototype.setGridHeight = function (height, isAuto) {  
1473 - if (this.opt('monthMode')) {  
1474 - // if auto, make the height of each row the height that it would be if there were 6 weeks  
1475 - if (isAuto) {  
1476 - height *= this.dayGrid.rowCnt / 6;  
1477 - }  
1478 - core.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows  
1479 - }  
1480 - else {  
1481 - if (isAuto) {  
1482 - core.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding  
1483 - }  
1484 - else {  
1485 - core.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows  
1486 - }  
1487 - }  
1488 - };  
1489 - /* Scroll  
1490 - ------------------------------------------------------------------------------------------------------------------*/  
1491 - DayGridView.prototype.computeDateScroll = function (duration) {  
1492 - return { top: 0 };  
1493 - };  
1494 - DayGridView.prototype.queryDateScroll = function () {  
1495 - return { top: this.scroller.getScrollTop() };  
1496 - };  
1497 - DayGridView.prototype.applyDateScroll = function (scroll) {  
1498 - if (scroll.top !== undefined) {  
1499 - this.scroller.setScrollTop(scroll.top);  
1500 - }  
1501 - };  
1502 - return DayGridView;  
1503 - }(core.View));  
1504 - DayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator;  
1505 -  
1506 - var SimpleDayGrid = /** @class */ (function (_super) {  
1507 - __extends(SimpleDayGrid, _super);  
1508 - function SimpleDayGrid(context, dayGrid) {  
1509 - var _this = _super.call(this, context, dayGrid.el) || this;  
1510 - _this.slicer = new DayGridSlicer();  
1511 - _this.dayGrid = dayGrid;  
1512 - context.calendar.registerInteractiveComponent(_this, { el: _this.dayGrid.el });  
1513 - return _this;  
1514 - }  
1515 - SimpleDayGrid.prototype.destroy = function () {  
1516 - _super.prototype.destroy.call(this);  
1517 - this.calendar.unregisterInteractiveComponent(this);  
1518 - };  
1519 - SimpleDayGrid.prototype.render = function (props) {  
1520 - var dayGrid = this.dayGrid;  
1521 - var dateProfile = props.dateProfile, dayTable = props.dayTable;  
1522 - dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid }));  
1523 - };  
1524 - SimpleDayGrid.prototype.buildPositionCaches = function () {  
1525 - this.dayGrid.buildPositionCaches();  
1526 - };  
1527 - SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) {  
1528 - var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop);  
1529 - if (rawHit) {  
1530 - return {  
1531 - component: this.dayGrid,  
1532 - dateSpan: rawHit.dateSpan,  
1533 - dayEl: rawHit.dayEl,  
1534 - rect: {  
1535 - left: rawHit.relativeRect.left,  
1536 - right: rawHit.relativeRect.right,  
1537 - top: rawHit.relativeRect.top,  
1538 - bottom: rawHit.relativeRect.bottom  
1539 - },  
1540 - layer: 0  
1541 - };  
1542 - }  
1543 - };  
1544 - return SimpleDayGrid;  
1545 - }(core.DateComponent));  
1546 - var DayGridSlicer = /** @class */ (function (_super) {  
1547 - __extends(DayGridSlicer, _super);  
1548 - function DayGridSlicer() {  
1549 - return _super !== null && _super.apply(this, arguments) || this;  
1550 - }  
1551 - DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) {  
1552 - return dayTable.sliceRange(dateRange);  
1553 - };  
1554 - return DayGridSlicer;  
1555 - }(core.Slicer));  
1556 -  
1557 - var DayGridView$1 = /** @class */ (function (_super) {  
1558 - __extends(DayGridView, _super);  
1559 - function DayGridView(_context, viewSpec, dateProfileGenerator, parentEl) {  
1560 - var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this;  
1561 - _this.buildDayTable = core.memoize(buildDayTable);  
1562 - if (_this.opt('columnHeader')) {  
1563 - _this.header = new core.DayHeader(_this.context, _this.el.querySelector('.fc-head-container'));  
1564 - }  
1565 - _this.simpleDayGrid = new SimpleDayGrid(_this.context, _this.dayGrid);  
1566 - return _this;  
1567 - }  
1568 - DayGridView.prototype.destroy = function () {  
1569 - _super.prototype.destroy.call(this);  
1570 - if (this.header) {  
1571 - this.header.destroy();  
1572 - }  
1573 - this.simpleDayGrid.destroy();  
1574 - };  
1575 - DayGridView.prototype.render = function (props) {  
1576 - _super.prototype.render.call(this, props);  
1577 - var dateProfile = this.props.dateProfile;  
1578 - var dayTable = this.dayTable =  
1579 - this.buildDayTable(dateProfile, this.dateProfileGenerator);  
1580 - if (this.header) {  
1581 - this.header.receiveProps({  
1582 - dateProfile: dateProfile,  
1583 - dates: dayTable.headerDates,  
1584 - datesRepDistinctDays: dayTable.rowCnt === 1,  
1585 - renderIntroHtml: this.renderHeadIntroHtml  
1586 - });  
1587 - }  
1588 - this.simpleDayGrid.receiveProps({  
1589 - dateProfile: dateProfile,  
1590 - dayTable: dayTable,  
1591 - businessHours: props.businessHours,  
1592 - dateSelection: props.dateSelection,  
1593 - eventStore: props.eventStore,  
1594 - eventUiBases: props.eventUiBases,  
1595 - eventSelection: props.eventSelection,  
1596 - eventDrag: props.eventDrag,  
1597 - eventResize: props.eventResize,  
1598 - isRigid: this.hasRigidRows(),  
1599 - nextDayThreshold: this.nextDayThreshold  
1600 - });  
1601 - };  
1602 - return DayGridView;  
1603 - }(DayGridView));  
1604 - function buildDayTable(dateProfile, dateProfileGenerator) {  
1605 - var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator);  
1606 - return new core.DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));  
1607 - }  
1608 -  
1609 - var main = core.createPlugin({  
1610 - defaultView: 'dayGridMonth',  
1611 - views: {  
1612 - dayGrid: DayGridView$1,  
1613 - dayGridDay: {  
1614 - type: 'dayGrid',  
1615 - duration: { days: 1 }  
1616 - },  
1617 - dayGridWeek: {  
1618 - type: 'dayGrid',  
1619 - duration: { weeks: 1 }  
1620 - },  
1621 - dayGridMonth: {  
1622 - type: 'dayGrid',  
1623 - duration: { months: 1 },  
1624 - monthMode: true,  
1625 - fixedWeekCount: true  
1626 - }  
1627 - }  
1628 - });  
1629 -  
1630 - exports.AbstractDayGridView = DayGridView;  
1631 - exports.DayBgRow = DayBgRow;  
1632 - exports.DayGrid = DayGrid;  
1633 - exports.DayGridSlicer = DayGridSlicer;  
1634 - exports.DayGridView = DayGridView$1;  
1635 - exports.SimpleDayGrid = SimpleDayGrid;  
1636 - exports.buildBasicDayTable = buildDayTable;  
1637 - exports.default = main;  
1638 -  
1639 - Object.defineProperty(exports, '__esModule', { value: true });  
1640 -  
1641 -}));