diff --git a/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.eps b/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.eps deleted file mode 100644 index da3aab3..0000000 Binary files a/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.eps and /dev/null differ diff --git a/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.jpg b/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.jpg deleted file mode 100644 index 27e503f..0000000 Binary files a/logo/vecteezy_notes-icon-in-trendy-flat-style-isolated-on-white_29722382.jpg and /dev/null differ diff --git a/public/css/style.css b/public/css/style.css deleted file mode 100644 index 782d913..0000000 --- a/public/css/style.css +++ /dev/null @@ -1,296 +0,0 @@ -/* Style for the 3-column layout */ -body { - margin: 0; -} - -/* Style for hamburger menu */ -.inner { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-evenly; - align-items: stretch; - align-content: flex-start; - max-width: 1060px; - /* Adjust to your desired width */ - margin: 0 auto; -} - -.ref-tab { - width: 60px; - padding-top: 60px !important; -} - -.ref-tab ul { - margin: 0; - padding: 0; -} - -.ref-tab ul li { - list-style: none; - list-style-type: none; -} - -.tab { - margin-bottom: 3px; -} - -/**/ -.tab button { - display: flex; - justify-content: center; - align-items: center; - height: 80px; - width: 100%; - text-align: center; - font-size: 14px; - margin-bottom: 3px; -} - -.ref { - width: 36%; -} - -.ref > div#ref { - vertical-align: top; - justify-content: flex-start; - align-content: flex-start; - overflow-y: scroll; - width: 100%; - height: 100%; - border: black solid 1px; - border-radius: 3px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); -} - -#ref { - padding: 3px 3px 3px 3px; -} - -#passage { - width: 100px; -} - -#newSpeaker { - display: none; - width: 110px; -} - -#newSeries { - display: none; - width: 110px; -} - -#fields-container { - display: none; -} - -#fields-container.show { - display: block; -} - -.notes { - width: 57%; -} - -textarea#notes { - width: 100%; - height: 100%; - font-size: 14pt; -} - -#notePreview { - display: none; - overflow-x: scroll; - padding-left: 10px; -} - -#notePreview ul, -#notePreview ol { - list-style-position: inside; -} - -#previewBtn.active, -#show-hide-btn.active, -.tab button.active, -#openRefBtn.active { - background-color: #f56a6a !important; - color: white !important; -} - -#note-header-left { - display: inline-flex; - flex-direction: row; - width: 25%; -} - -#note-header-right { - display: inline-flex; - flex-direction: row-reverse; - width: 74%; -} - -#note-header-left h2.dirty { - color: darkorange; -} - -#note-list { - display: none; - height: 100%; - overflow-y: scroll; -} - -#note-list ul { - margin: 0; - padding: 0; - list-style-type: none; - list-style: none; -} - -div#refQuery { - display: none; - position: absolute; - z-index: 100; - background-color: rgba(0, 0, 0, 0.8); - width: 400px; - height: 200px; -} - -div#refQuery #referenceSearch { - border: none; - border-radius: 5px; - padding: 10px 20px; - font-size: 16px; - line-height: 1.5; - color: #333; - background-color: #f4f4f4; - width: 150px; - height: 25px; - cursor: pointer; - display: none; -} - -#passage-popup { - display: none; - position: absolute; - z-index: 100; - background-color: #fff; - color: black; - padding: 10px; - border: 1px solid #ccc; - border-radius: 5px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); - width: 300px; - height: 300px; - overflow-x: scroll; -} - -#save-check { - opacity: 0; - text-align: right; - font-size: 20pt; - margin-left: 15px; - color: green; -} - -#save-check.saving { - color: orange; -} - -#save-check.error { - color: red; -} - -#fields-container input, -#fields-container select { - width: 32.5%; - display: inline-block; -} - -#old-notes article p:first-child { - margin-bottom: 0 !important; - font-size: 10pt; -} - -#old-notes article a { - font-size: 12pt; -} - -#old-notes article p:last-child { - font-size: 12pt; -} - -.inner { - padding-left: 0; -} - -.ref h2 { - display: inline-block; -} - -#ref { - font-size: 12pt; -} - -#ref ol, -#ref ul { - list-style-position: inside; -} - -#referenceBook { - display: none; -} - -.recording-link { - font-size: 8pt; - color: blue; - text-decoration: none; -} - -.fas-trash-alt { - color: red; - cursor: pointer; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #000; - opacity: 0.5; - z-index: 1000; -} - -.modal-container { - position: absolute; - width: 300px; - /* adjust this to your desired modal width */ - margin: 0 auto; - padding: 20px; - border: 1px solid #ddd; - background-color: #fff; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - z-index: 1001; -} - -.modal-header { - background-color: #f5f5f5; - padding: 10px; - border-bottom: 1px solid #ddd; -} - -.modal-body { - padding: 20px; -} - -.modal-footer { - background-color: #f5f5f5; - padding: 10px; - border-top: 1px solid #ddd; -} - -.btn-secondary { - color: #337ab7; -}/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/public/css/style.css.map b/public/css/style.css.map deleted file mode 100644 index 561374b..0000000 --- a/public/css/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"AAAA,kCAAA;AACA;EACI,SAAA;ACCJ;;ADEA,6BAAA;AAEA;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,6BAAA;EACA,oBAAA;EACA,yBAAA;EACA,iBAAA;EACA,iCAAA;EACA,cAAA;ACAJ;;ADGA;EACI,WAAA;EACA,4BAAA;ACAJ;;ADGA;EACI,SAAA;EACA,UAAA;ACAJ;;ADGA;EACI,gBAAA;EACA,qBAAA;ACAJ;;ADGA;EACI,kBAAA;ACAJ;;ADGA,GAAA;AACA;EACI,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,eAAA;EACA,kBAAA;ACAJ;;ADIA;EACI,UAAA;ACDJ;;ADIA;EACI,mBAAA;EACA,2BAAA;EACA,yBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;EACA,kBAAA;EACA,wCAAA;ACDJ;;ADIA;EACI,wBAAA;ACDJ;;ADIA;EACI,YAAA;ACDJ;;ADIA;EACI,aAAA;EACA,YAAA;ACDJ;;ADIA;EACI,aAAA;EACA,YAAA;ACDJ;;ADIA;EACI,aAAA;ACDJ;;ADIA;EACI,cAAA;ACDJ;;ADIA;EACI,UAAA;ACDJ;;ADIA;EACI,WAAA;EACA,YAAA;EACA,eAAA;ACDJ;;ADIA;EACI,aAAA;EACA,kBAAA;EACA,kBAAA;ACDJ;;ADIA;;EAEI,2BAAA;ACDJ;;ADIA;;;;EAII,oCAAA;EACA,uBAAA;ACDJ;;ADIA;EACI,oBAAA;EACA,mBAAA;EACA,UAAA;ACDJ;;ADIA;EACI,oBAAA;EACA,2BAAA;EACA,UAAA;ACDJ;;ADIA;EACI,iBAAA;ACDJ;;ADIA;EACI,aAAA;EACA,YAAA;EACA,kBAAA;ACDJ;;ADIA;EACI,SAAA;EACA,UAAA;EACA,qBAAA;EACA,gBAAA;ACDJ;;ADIA;EACI,aAAA;EACA,kBAAA;EACA,YAAA;EACA,oCAAA;EACA,YAAA;EACA,aAAA;ACDJ;;ADIA;EACI,YAAA;EACA,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,WAAA;EACA,yBAAA;EACA,YAAA;EACA,YAAA;EACA,eAAA;EACA,aAAA;ACDJ;;ADIA;EACI,aAAA;EACA,kBAAA;EACA,YAAA;EACA,sBAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;ACDJ;;ADIA;EACI,UAAA;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;ACDJ;;ADIA;EACI,aAAA;ACDJ;;ADIA;EACI,UAAA;ACDJ;;ADIA;;EAEI,YAAA;EACA,qBAAA;ACDJ;;ADIA;EACI,2BAAA;EACA,eAAA;ACDJ;;ADIA;EACI,eAAA;ACDJ;;ADIA;EACI,eAAA;ACDJ;;ADIA;EACI,eAAA;ACDJ;;ADIA;EACI,qBAAA;ACDJ;;ADIA;EACI,eAAA;ACDJ;;ADIA;;EAEI,2BAAA;ACDJ;;ADIA;EACI,aAAA;ACDJ;;ADIA;EACI,cAAA;EACA,WAAA;EACA,qBAAA;ACDJ;;ADIA;EACI,UAAA;EACA,eAAA;ACDJ;;ADIA;EACI,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,sBAAA;EACA,YAAA;EACA,aAAA;ACDJ;;ADIA;EACI,kBAAA;EACA,YAAA;EACA,4CAAA;EACA,cAAA;EACA,aAAA;EACA,sBAAA;EACA,sBAAA;EACA,uCAAA;EACA,aAAA;ACDJ;;ADIA;EACI,yBAAA;EACA,aAAA;EACA,6BAAA;ACDJ;;ADIA;EACI,aAAA;ACDJ;;ADIA;EACI,yBAAA;EACA,aAAA;EACA,0BAAA;ACDJ;;ADIA;EACI,cAAA;ACDJ","file":"style.css"} \ No newline at end of file diff --git a/public/css/style.min.css b/public/css/style.min.css deleted file mode 100644 index 58e8d7f..0000000 --- a/public/css/style.min.css +++ /dev/null @@ -1 +0,0 @@ -body{margin:0}.inner{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;align-items:stretch;align-content:flex-start;max-width:1060px;margin:0 auto}.ref-tab{width:60px;padding-top:60px !important}.ref-tab ul{margin:0;padding:0}.ref-tab ul li{list-style:none;list-style-type:none}.tab{margin-bottom:3px}.tab button{display:flex;justify-content:center;align-items:center;height:80px;width:100%;text-align:center;font-size:14px;margin-bottom:3px}.ref{width:36%}.ref>div#ref{vertical-align:top;justify-content:flex-start;align-content:flex-start;overflow-y:scroll;width:100%;height:100%;border:#000 solid 1px;border-radius:3px;box-shadow:0 2px 5px rgba(0,0,0,.3)}#ref{padding:3px 3px 3px 3px}#passage{width:100px}#newSpeaker{display:none;width:110px}#newSeries{display:none;width:110px}#fields-container{display:none}#fields-container.show{display:block}.notes{width:57%}textarea#notes{width:100%;height:100%;font-size:14pt}#notePreview{display:none;overflow-x:scroll;padding-left:10px}#notePreview ul,#notePreview ol{list-style-position:inside}#previewBtn.active,#show-hide-btn.active,.tab button.active,#openRefBtn.active{background-color:#f56a6a !important;color:#fff !important}#note-header-left{display:inline-flex;flex-direction:row;width:25%}#note-header-right{display:inline-flex;flex-direction:row-reverse;width:74%}#note-header-left h2.dirty{color:#ff8c00}#note-list{display:none;height:100%;overflow-y:scroll}#note-list ul{margin:0;padding:0;list-style-type:none;list-style:none}div#refQuery{display:none;position:absolute;z-index:100;background-color:rgba(0,0,0,.8);width:400px;height:200px}div#refQuery #referenceSearch{border:none;border-radius:5px;padding:10px 20px;font-size:16px;line-height:1.5;color:#333;background-color:#f4f4f4;width:150px;height:25px;cursor:pointer;display:none}#passage-popup{display:none;position:absolute;z-index:100;background-color:#fff;color:#000;padding:10px;border:1px solid #ccc;border-radius:5px;box-shadow:0 2px 5px rgba(0,0,0,.3);width:300px;height:300px;overflow-x:scroll}#save-check{opacity:0;text-align:right;font-size:20pt;margin-left:15px;color:green}#save-check.saving{color:orange}#save-check.error{color:red}#fields-container input,#fields-container select{width:32.5%;display:inline-block}#old-notes article p:first-child{margin-bottom:0 !important;font-size:10pt}#old-notes article a{font-size:12pt}#old-notes article p:last-child{font-size:12pt}.inner{padding-left:0}.ref h2{display:inline-block}#ref{font-size:12pt}#ref ol,#ref ul{list-style-position:inside}#referenceBook{display:none}.recording-link{font-size:8pt;color:blue;text-decoration:none}.fas-trash-alt{color:red;cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;opacity:.5;z-index:1000}.modal-container{position:absolute;width:300px;margin:0 auto;padding:20px;border:1px solid #ddd;background-color:#fff;box-shadow:0 0 10px rgba(0,0,0,.2);z-index:1001}.modal-header{background-color:#f5f5f5;padding:10px;border-bottom:1px solid #ddd}.modal-body{padding:20px}.modal-footer{background-color:#f5f5f5;padding:10px;border-top:1px solid #ddd}.btn-secondary{color:#337ab7}/*# sourceMappingURL=style.min.css.map */ \ No newline at end of file diff --git a/public/css/style.min.css.map b/public/css/style.min.css.map deleted file mode 100644 index 6d4f954..0000000 --- a/public/css/style.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["style.scss"],"names":[],"mappings":"AACA,KACI,QAAA,CAKJ,OACI,YAAA,CACA,kBAAA,CACA,cAAA,CACA,4BAAA,CACA,mBAAA,CACA,wBAAA,CACA,gBAAA,CAEA,aAAA,CAGJ,SACI,UAAA,CACA,2BAAA,CAGJ,YACI,QAAA,CACA,SAAA,CAGJ,eACI,eAAA,CACA,oBAAA,CAGJ,KACI,iBAAA,CAIJ,YACI,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,iBAAA,CAIJ,KACI,SAAA,CAGJ,aACI,kBAAA,CACA,0BAAA,CACA,wBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,qBAAA,CACA,iBAAA,CACA,mCAAA,CAGJ,KACI,uBAAA,CAGJ,SACI,WAAA,CAGJ,YACI,YAAA,CACA,WAAA,CAGJ,WACI,YAAA,CACA,WAAA,CAGJ,kBACI,YAAA,CAGJ,uBACI,aAAA,CAGJ,OACI,SAAA,CAGJ,eACI,UAAA,CACA,WAAA,CACA,cAAA,CAGJ,aACI,YAAA,CACA,iBAAA,CACA,iBAAA,CAGJ,gCAEI,0BAAA,CAGJ,+EAII,mCAAA,CACA,qBAAA,CAGJ,kBACI,mBAAA,CACA,kBAAA,CACA,SAAA,CAGJ,mBACI,mBAAA,CACA,0BAAA,CACA,SAAA,CAGJ,2BACI,aAAA,CAGJ,WACI,YAAA,CACA,WAAA,CACA,iBAAA,CAGJ,cACI,QAAA,CACA,SAAA,CACA,oBAAA,CACA,eAAA,CAGJ,aACI,YAAA,CACA,iBAAA,CACA,WAAA,CACA,+BAAA,CACA,WAAA,CACA,YAAA,CAGJ,8BACI,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,cAAA,CACA,eAAA,CACA,UAAA,CACA,wBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,YAAA,CAGJ,eACI,YAAA,CACA,iBAAA,CACA,WAAA,CACA,qBAAA,CACA,UAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,mCAAA,CACA,WAAA,CACA,YAAA,CACA,iBAAA,CAGJ,YACI,SAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,WAAA,CAGJ,mBACI,YAAA,CAGJ,kBACI,SAAA,CAGJ,iDAEI,WAAA,CACA,oBAAA,CAGJ,iCACI,0BAAA,CACA,cAAA,CAGJ,qBACI,cAAA,CAGJ,gCACI,cAAA,CAGJ,OACI,cAAA,CAGJ,QACI,oBAAA,CAGJ,KACI,cAAA,CAGJ,gBAEI,0BAAA,CAGJ,eACI,YAAA,CAGJ,gBACI,aAAA,CACA,UAAA,CACA,oBAAA,CAGJ,eACI,SAAA,CACA,cAAA,CAGJ,gBACI,cAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CACA,qBAAA,CACA,UAAA,CACA,YAAA,CAGJ,iBACI,iBAAA,CACA,WAAA,CAEA,aAAA,CACA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kCAAA,CACA,YAAA,CAGJ,cACI,wBAAA,CACA,YAAA,CACA,4BAAA,CAGJ,YACI,YAAA,CAGJ,cACI,wBAAA,CACA,YAAA,CACA,yBAAA,CAGJ,eACI,aAAA","file":"style.min.css"} \ No newline at end of file diff --git a/public/css/style.scss b/public/css/style.scss deleted file mode 100644 index 994c820..0000000 --- a/public/css/style.scss +++ /dev/null @@ -1,298 +0,0 @@ -/* Style for the 3-column layout */ -body { - margin: 0; -} - -/* Style for hamburger menu */ - -.inner { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-evenly; - align-items: stretch; - align-content: flex-start; - max-width: 1060px; - /* Adjust to your desired width */ - margin: 0 auto; -} - -.ref-tab { - width: 60px; - padding-top: 60px !important; -} - -.ref-tab ul { - margin: 0; - padding: 0; -} - -.ref-tab ul li { - list-style: none; - list-style-type: none; -} - -.tab { - margin-bottom: 3px; -} - -/**/ -.tab button { - display: flex; - justify-content: center; - align-items: center; - height: 80px; - width: 100%; - text-align: center; - font-size: 14px; - margin-bottom: 3px; -} - - -.ref { - width: 36%; -} - -.ref>div#ref { - vertical-align: top; - justify-content: flex-start; - align-content: flex-start; - overflow-y: scroll; - width: 100%; - height: 100%; - border: black solid 1px; - border-radius: 3px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); -} - -#ref { - padding: 3px 3px 3px 3px; -} - -#passage { - width: 100px; -} - -#newSpeaker { - display: none; - width: 110px; -} - -#newSeries { - display: none; - width: 110px; -} - -#fields-container { - display: none; -} - -#fields-container.show { - display: block; -} - -.notes { - width: 57% -} - -textarea#notes { - width: 100%; - height: 100%; - font-size: 14pt; -} - -#notePreview { - display: none; - overflow-x: scroll; - padding-left: 10px; -} - -#notePreview ul, -#notePreview ol { - list-style-position: inside; -} - -#previewBtn.active, -#show-hide-btn.active, -.tab button.active, -#openRefBtn.active { - background-color: #f56a6a !important; - color: white !important; -} - -#note-header-left { - display: inline-flex; - flex-direction: row; - width: 25%; -} - -#note-header-right { - display: inline-flex; - flex-direction: row-reverse; - width: 74%; -} - -#note-header-left h2.dirty { - color: darkorange; -} - -#note-list { - display: none; - height: 100%; - overflow-y: scroll; -} - -#note-list ul { - margin: 0; - padding: 0; - list-style-type: none; - list-style: none; -} - -div#refQuery { - display: none; - position: absolute; - z-index: 100; - background-color: rgba(0, 0, 0, 0.8); - width: 400px; - height: 200px; -} - -div#refQuery #referenceSearch { - border: none; - border-radius: 5px; - padding: 10px 20px; - font-size: 16px; - line-height: 1.5; - color: #333; - background-color: #f4f4f4; - width: 150px; - height: 25px; - cursor: pointer; - display: none; -} - -#passage-popup { - display: none; - position: absolute; - z-index: 100; - background-color: #fff; - color: black; - padding: 10px; - border: 1px solid #ccc; - border-radius: 5px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); - width: 300px; - height: 300px; - overflow-x: scroll; -} - -#save-check { - opacity: 0; - text-align: right; - font-size: 20pt; - margin-left: 15px; - color: green; -} - -#save-check.saving { - color: orange; -} - -#save-check.error { - color: red; -} - -#fields-container input, -#fields-container select { - width: 32.5%; - display: inline-block; -} - -#old-notes article p:first-child { - margin-bottom: 0 !important; - font-size: 10pt; -} - -#old-notes article a { - font-size: 12pt; -} - -#old-notes article p:last-child { - font-size: 12pt; -} - -.inner { - padding-left: 0; -} - -.ref h2 { - display: inline-block; -} - -#ref { - font-size: 12pt; -} - -#ref ol, -#ref ul { - list-style-position: inside; -} - -#referenceBook { - display: none; -} - -.recording-link { - font-size: 8pt; - color: blue; - text-decoration: none; -} - -.fas-trash-alt { - color: red; - cursor: pointer; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #000; - opacity: 0.5; - z-index: 1000; -} - -.modal-container { - position: absolute; - width: 300px; - /* adjust this to your desired modal width */ - margin: 0 auto; - padding: 20px; - border: 1px solid #ddd; - background-color: #fff; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - z-index: 1001; -} - -.modal-header { - background-color: #f5f5f5; - padding: 10px; - border-bottom: 1px solid #ddd; -} - -.modal-body { - padding: 20px; -} - -.modal-footer { - background-color: #f5f5f5; - padding: 10px; - border-top: 1px solid #ddd; -} - -.btn-secondary { - color: #337ab7; -} \ No newline at end of file diff --git a/public/js/script.js b/public/js/script.js deleted file mode 100644 index 01c28e2..0000000 --- a/public/js/script.js +++ /dev/null @@ -1,1260 +0,0 @@ -// Get the link element -var md = null; -var references = {}; -var tabs = []; -let saved = false; -let textDirty = false; -var to = null; -let controller; -var BOOKS = {}; - -$(function () { - setHeight(); - setBooks(); - setEventListeners(); - $('#note-table').DataTable({ - paging: false, - ajax: { - url: '/index.php/get-notes', - type: 'POST' - }, - columns: [ - { data: 'link' }, - { data: 'speaker.name' }, - { data: 'passage' }, - { - data: 'date.date', - render: DataTable.render.date("L") - }, - ] - }); - $('#shareBtn').on('click', openShareNote); - $('#modal-backdrop').on('click', closeShareNote); -}); - -/** - * Fetches data from '/js/data.json', assigns it to BOOKS, and handles errors. - * - * @return {void} - */ -function setBooks() { - fetch('/js/data.json') - .then((res) => { - if (!res.ok) { - throw new Error('HTTP Error: Status: ${res.status}'); - } - return res.json(); - }) - .then((data) => { - BOOKS = data; - }) - .catch((error) => { - console.log(error); - }) -} - -/** - * Sets event listeners for keyup events on the document and the '#notes' element. - * - * @return {void} - */ -function setEventListeners() { - document.addEventListener('keyup', function (event) { - if (event.key == "F3") { - openRef(false); - } - }); - - document.querySelector('#notes').addEventListener('keyup', function (event) { - let key = event.keyCode; - - if (key >= 48 && key <= 90 || key >= 96 && key <= 111 || key >= 186 && key <= 222) { - textDirty = true; - document.querySelector('#note-header-left h2').classList.add('dirty'); - } - }); -} - -/** - * Sets the height of various elements on the page based on the window's inner height. - * Also initializes a datepicker and event listener for the search input field. - * - * @return {void} - */ -function setHeight() { - md = new markdownit({ - html: true, - linkify: true, - breaks: true - }); - - body = document.querySelector('body'); - body.style.height = window.innerHeight + 'px'; - - cont = document.querySelector('#main'); - cont.style.height = (window.innerHeight) + 'px'; - - tabs = document.querySelector('.ref-tab'); - tabs.style.height = (window.innerHeight - 13) + 'px'; - - ref = document.querySelector('.ref'); - ref.style.height = (window.innerHeight - 60) + 'px'; - - noteList = document.querySelector('#note-list'); - noteList.style.height = (window.innerHeight - 60) + 'px'; - - notes = document.querySelector('.notes'); - notes.style.height = (window.innerHeight - 60) + 'px'; - - notePreview = document.querySelector('#notePreview'); - notePreview.style.height = (window.innerHeight - 50) + 'px'; - - if ($('#noteDate')) { - $('#noteDate').datepicker(); - } - - if ($('#query')) { - document.querySelector('#query').addEventListener('keyup', function (event) { - if (event.key == "Enter") { - search(); - } - }); - } - if (!to) { - to = setTimeout(saveNote, saveInterval); - } -} - -/** - * Searches for notes based on the query entered in the search field. - * Sends a POST request to the '/index.php/search' endpoint with the query as a JSON payload. - * Updates the '#old-notes' element with the search results. - * - * @return {Promise} A Promise that resolves with the search results. - */ -function search() { - query = document.querySelector('#query').value; - fetch('/index.php/search', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'query': query - }) - }) - .then(response => response.json()) - .then(results => { - var oldNotes = document.querySelector('#old-notes'); - oldNotes.innerHTML = ''; - for (var n in results) { - var link = document.createElement('a'); - link.href = '#'; - link.setAttribute('onclick', "retrieveNote('" + results[n].id + "');openNote();"); - link.innerHTML = results[n].title; - - var p = document.createElement('p'); - p.innerHTML = results[n].passage; - - var article = document.createElement('article'); - article.appendChild(link); - article.appendChild(p); - - oldNotes.append(article); - } - }); -} - -/** - * Resets the state of the note editor by clearing the text and form fields, - * resetting the references, and removing any dirty classes. It also sets the - * date to the current date, clears the speaker, series, template, passage, - * recording, and note ID fields. Finally, it clears the reference list and - * reference display. - * - * @return {void} This function does not return anything. - */ -function newNote() { - notes = document.querySelector('#notes'); - notes.text = ''; - notes.value = ''; - references = {}; - saved = true; - textDirty = false; - document.querySelector('#note-header-left h2').classList.remove('dirty'); - - dt = new Date(); - document.querySelector('#noteDate').value = dt.getFullYear() + '-' + - (dt.getMonth() < 9 ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '-' + - (dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate()); - document.querySelector('#noteTitle').value = ''; - document.querySelector('#speaker').value = 0; - document.querySelector('#series').value = 0; - document.querySelector('#template').value = 0; - document.querySelector('#passage').value = ''; - document.querySelector('#recording').value = ''; - document.querySelector('#noteId').value = ''; - - document.querySelector('#ref-list').innerHTML = ''; - document.querySelector('#ref').innerHTML = ''; - document.querySelector('.toggle').click(); -} - -/** - * Save a note by sending it to the server for storage. - * - * @param {Event} event - The event object triggering the save action. - * @return {void} No explicit return value. - */ -function saveNote(event) { - if (event) { - event.preventDefault(); - } - - if (!textDirty || !validateNote()) { - clearTimeout(to); - to = setTimeout(saveNote, saveInterval); - return; - } - - let saveCheck = document.querySelector('#save-check'); - var noteText = document.querySelector('#notes').value; - - startSave(); - - var note = { - id: document.querySelector("#noteId").value, - date: document.querySelector('#noteDate').value, - title: document.querySelector('#noteTitle').value, - speaker: document.querySelector('#speaker').value, - series: document.querySelector('#series').value, - passage: document.querySelector('#passage').value, - note: document.querySelector('#notes').value, - recording: document.querySelector('#recording').value, - refs: references - }; - $.ajax({ - url: '/index.php/save-note', - method: 'POST', - contentType: 'application/json', - data: JSON.stringify(note), - dataType: 'json', - timeout: saveTimeout - }) - .done(function (data) { - if (data.msg == 'saved' && !saved) { - saveFailureCount = SAVE_FAILURE_LIMIT; - saveCheck.classList.remove('saving', 'error', 'fa-times-circle', 'fa-save'); - showSave(); - if (noteText == document.querySelector('#notes').value) { - saved = true; - textDirty = false; - document.querySelector('#note-header-left h2').classList.remove('dirty'); - } - - if (data.new) { - document.querySelector('#noteId').value = data.id; - } - } - }) - .fail(function (xhr, status, error) { - saveFailureCount--; - saveCheck.classList.remove('saving', 'fa-save'); - saveCheck.classList.add('fa-times-circle', 'error'); - console.error(error); - }) - .always(function (xhr, status) { - if (status == 'timeout') { - saveCheck.classList.remove('saving', 'fa-save'); - saveCheck.classList.add('error', 'fa-times-circle'); - } - clearTimeout(to); - if (saveFailureCount > 0) { - to = setTimeout(saveNote, saveInterval); - } else { - saveFailureCount = SAVE_FAILURE_LIMIT; - } - }); -} - -/** - * Validates a note by checking if all required fields are filled. - * - * @return {boolean} Returns true if all required fields are filled, false otherwise. - */ -function validateNote() { - const note = document.querySelector('#notes'); - const date = document.querySelector('#noteDate'); - const speaker = document.querySelector('#speaker'); - const series = document.querySelector('#series'); - const title = document.querySelector('#noteTitle'); - const psg = document.querySelector('#passage'); - - if (!title.value.length) { return false; } - if (!date.value) { return false; } - if (!parseInt(speaker.value)) { return false; } - if (!parseInt(series.value)) { return false; } - if (!psg.value) { return false; } - if (!note.value.length) { return false; } - - return true; -} - -/** - * Checks if a given UUID is valid. - * - * @param {string} uuid - The UUID to be validated. - * @return {boolean} Returns true if the UUID is valid, false otherwise. - */ -function isUuidValid(uuid) { - const regex = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[8|9|a|b][a-f0-9]{3}-[a-f0-9]{12}$/i; - return regex.test(uuid); -} - -/** - * Starts the save process by updating the save-check element's classList, removing error, fa-times-circle, and fa-save classes, - * adding the 'saving' and 'fa-save' classes, and setting the opacity to 1. - * - * @return {void} This function does not return anything. - */ -function startSave() { - document.querySelector('#save-check').classList.remove('error', 'fa-times-circle', 'fa-save'); - document.querySelector('#save-check').classList.add('saving', 'fa-save'); - document.querySelector('#save-check').style.opacity = 1; -} - -/** - * Displays a checkmark animation on the screen. - * - * @param {none} - This function does not take any parameters. - * @return {none} - This function does not return any value. - */ -function showSave() { - if (saved) { return; } - - var checkmark = document.getElementById("save-check"); - checkmark.classList.add('fa-save'); - - // Schedule the animation to run every 1 second (which is equivalent to a 1-second delay between each iteration) - var si = setInterval(function () { - // Increment the opacity of the checkmark by 0.01 each time - op = parseFloat(checkmark.style.opacity); - checkmark.style.opacity = op - 0.1; - - // If the opacity is greater than or equal to 1, reset it back to 0 and stop the animation - if (checkmark.style.opacity == 0.1) { - checkmark.style.opacity = 0; - clearInterval(si); - saved = false; - } - }, 100); -} - -/** - * Function to discard the note by clearing all input fields and closing the menu. - */ -function deleteNote(noteId, link) { - document.querySelector('#noteTitle').value = ''; - document.querySelector('#speaker').value = 0; - document.querySelector('#series').value = 0; - document.querySelector('#template').value = 0; - document.querySelector('#passage').value = ''; - document.querySelector('#notes').value = ''; - document.querySelector('#recording').value = ''; - document.querySelector('#noteDate').value = ''; - document.querySelector('#noteId').value = ''; - - var row = link.parentElement.parentElement; - - fetch('/index.php/delete-note', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'id': noteId - }) - }) - .then(response => response.json()) - .then(data => { - if (data.msg != 'deleted') { - return; - } - - alert('Note deleted.'); - row.remove(); - }); -} - -/** - * Toggles the display of the new speaker input field and hides the speaker select field. - * - * @return {void} This function does not return anything. - */ -function newSpeaker() { - if (document.querySelector('#speaker').value == 'new') { - document.querySelector('#newSpeaker').style.display = 'inline-block'; - document.querySelector('#speaker').style.display = 'none'; - } - - saved = false; - textDirty = true; -} - -/** - * Saves a new speaker to the database and updates the UI with the new speaker option. - * - * @param {Event} event - The keydown event triggered by the user. - * @return {Promise} A Promise that resolves with the results of the fetch request. - */ -function saveSpeaker(event) { - if (event.keyCode == 13) { - fetch('/index.php/save-speaker', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'speakerName': document.querySelector('#newSpeaker').value - }) - }) - .then(response => response.json()) - .then(results => { - var newSpeaker = document.createElement('option'); - newSpeaker.text = document.querySelector('#newSpeaker').value; - newSpeaker.value = results.id; - document.querySelector('#speaker').add(newSpeaker); - - alert(results.msg); - document.querySelector('#newSpeaker').style.display = 'none'; - document.querySelector('#speaker').style.display = 'inline-block'; - - document.querySelector('#newSpeaker').value = ''; - document.querySelector('#speaker').value = results.id; - }); - } -} - -/** - * A description of the entire function. - */ -function newSeries() { - if (document.querySelector('#series').value == 'new') { - document.querySelector('#newSeries').style.display = 'inline-block'; - document.querySelector('#series').style.display = 'none'; - } - - saved = false; - textDirty = true; -} - -/** - * Saves a series by making a POST request to '/index.php/save-series' with the series name as the request body. - * - * @param {Event} event - The keydown event. - * @return {Promise} A Promise that resolves with the response from the server. - */ -function saveSeries(event) { - if (event.keyCode == 13) { - fetch('/index.php/save-series', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'seriesName': document.querySelector('#newSeries').value - }) - }) - .then(response => response.json()) - .then(results => { - var newSeries = document.createElement('option'); - newSeries.text = document.querySelector('#newSeries').value; - newSeries.value = results.id; - document.querySelector('#series').add(newSeries); - - alert(results.msg); - document.querySelector('#newSeries').style.display = 'none'; - document.querySelector('#series').style.display = 'inline-block'; - - document.querySelector('#newSeries').value = ''; - document.querySelector('#series').value = results.id; - }); - } -} - -/** - * Opens the reference with the option to close the sidebar. - * - * @param {boolean} closeSidebar - Indicates whether to close the sidebar when opening the reference. - */ -function openRef(closeSidebar = true) { - document.querySelector('#openRefBtn').classList.add('active'); - - refQuery = document.querySelector('#refQuery'); - refQuery.style.display = 'block'; - - ref = document.querySelector('#ref'); - refQuery.style.left = ref.offsetLeft + 'px'; - refQuery.style.top = ref.offsetTop + 'px'; - if (closeSidebar) { - document.querySelector('.toggle').click(); - } -} - -/** - * Closes the reference query and resets the reference search form. - * - * @return {void} This function does not return anything. - */ -function closeRef() { - document.querySelector('#referenceSearch').value = ''; - document.querySelector('#referenceSearch').style.display = ''; - document.querySelector('#referenceType').value = ''; - document.querySelector('#referenceBook').value = ''; - document.querySelector('#referenceBook').style.display = 'none'; - document.querySelector('#chapter-range').innerText = ''; - document.querySelector('#verse-range').innerText = ''; - - document.querySelector('#refQuery').style.display = 'none'; - document.querySelector('#openRefBtn').classList.remove('active'); -} - -/** - * Fetches a reference based on the provided type, book, and input. - * - * @param {string} type - The type of reference. - * @param {string} book - The book of the reference. - * @param {string} input - The input for the reference. - * @return {void} This function does not return anything directly, but processes the fetched reference data. - */ -function queryRef(type = null, book = null, input = null) { - if (!input) { - var input = document.querySelector('#refQuery #referenceSearch').value; - } - if (!type) { - var type = document.querySelector('#referenceType').value; - } - if (!book) { - var book = document.querySelector('#referenceBook').value; - } - fetch('/index.php/retrieve-reference', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'type': type, - 'book': book, - 'reference': input, - }) - }) - .then(response => response.json()) - .then(results => { - const list = document.querySelector('#ref-list'); - var newList = document.createElement('li'); - newList.className = 'tab'; - button = makeButton(results.title); - newList.appendChild(button); - list.appendChild(newList); - - const ref = document.querySelector('#ref'); - ref.innerHTML = md.render(results.text); - - references[results.title] = results.text; - - closeRef(); - - saved = false; - textDirty = true; - saveNote(); - findRefLinks(); - }); -} - -/** - * A function to create a button element with the specified title and event listeners for click and double click actions. - * - * @param {string} title - The title to be displayed on the button. - * @return {Element} The created button element. - */ -function makeButton(title) { - var btn = document.createElement('button'); - btn.innerText = title; - btn.class = 'button'; - btn.addEventListener('click', function () { - removeActiveRef(); - document.querySelector('#ref').innerHTML = md.render(references[title]); - this.classList.add('active'); - findRefLinks(); - }); - - btn.addEventListener('dblclick', function () { - document.querySelector('#ref').innerHTML = ''; - delete references[title]; - var list = this.parentElement; - list.remove(); - saved = false; - textDirty = true; - saveNote(); - }); - - removeActiveRef(); - btn.classList.add('active'); - - return btn; -} - -/** - * Removes the 'active' class from all elements with the class 'active'. - * - * @return {void} This function does not return a value. - */ -function removeActiveRef() { - tabs = document.querySelectorAll('.active'); - for (var t in tabs) { - if (isFinite(parseInt(t))) { - tabs[t].classList.remove('active'); - } - } -} - -/** - * Retrieves a template from the server and sets it as the value of a specified destination element. - * - * @param {string} orig - The ID of the element containing the original template value. - * @param {string} dest - The ID of the destination element where the retrieved template will be set. - * @return {Promise} A Promise that resolves when the template is successfully retrieved and set as the value of the destination element. - */ -function retrieveTemplate(orig, dest) { - const temp = document.querySelector('#' + orig); - if (temp.value == '0') { - document.querySelector('#' + dest).value = ''; - return; - } - fetch('/index.php/retrieve-template', { - method: 'POST', - headers: { - 'Content-Type': 'plain/text' - }, - body: JSON.stringify({ - 'template': temp.value - }) - }) - .then(response => response.text()) - .then(results => { - const div = document.querySelector('#' + dest); - div.value = results; - }); -} - -/** - * Saves the template by sending a POST request to the server with template data. - */ -function saveTemplate() { - fetch('/index.php/save-template', { - method: 'POST', - headers: { - 'Content-Type': 'plain/text' - }, - body: JSON.stringify({ - 'template_id': document.querySelector('#template_id').value, - 'template_name': document.querySelector('#template_name').value, - 'template_value': document.querySelector('#template_value').value, - }) - }) - .then(response => response.text()) - .then(results => { - alert(results); - }); -} - -/** - * Toggles the visibility of the fields container and updates the active state of the show/hide button. - * - * @return {void} - */ -function toggleFields() { - const fieldsContainer = document.getElementById('fields-container'); - const showHideBtn = document.getElementById('show-hide-btn'); - - if (fieldsContainer.classList.contains('show')) { - fieldsContainer.classList.remove('show'); - fieldsContainer.style.display = 'none'; - showHideBtn.classList.remove('active'); - } else { - fieldsContainer.classList.add('show'); - fieldsContainer.style.display = 'block'; - showHideBtn.classList.add('active'); - } - - setHeight(); -} - -/** - * Retrieves the list of books based on the selected reference type. - * - * @return {void} - */ -function retrieveBooks() { - document.querySelector('#chapter-range').innerText = ''; - document.querySelector('#verse-range').innerText = ''; - document.querySelector('#referenceSearch').value = ''; - document.querySelector('#referenceSearch').style.display = 'none'; - const selectedType = document.querySelector('#referenceType').value; - if (!selectedType) { return; } - - var bookList = document.querySelector('#referenceBook'); - bookList.style.display = "block"; - bookList.innerHTML = ''; - if (selectedType == 'bible') { - document.querySelector('#referenceSearch').style.display = 'block'; - var none = document.createElement("option"); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - for (var x in BOOKS.bible) { - var newBook = document.createElement("option"); - newBook.text = x; - bookList.appendChild(newBook); - } - } else if (selectedType == 'creed') { - var none = document.createElement('option'); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - for (var x in BOOKS.creed) { - var newBook = document.createElement('option'); - newBook.value = x; - newBook.text = BOOKS.creed[x]; - bookList.appendChild(newBook); - } - } else if (selectedType == 'cd') { - var none = document.createElement("option"); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - for (var x in BOOKS.cd) { - var newBook = document.createElement("option"); - newBook.text = BOOKS.cd[x]; - bookList.appendChild(newBook); - } - } else if (selectedType == 'hc') { - var none = document.createElement("option"); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - for (var x in BOOKS[selectedType]) { - var newBook = document.createElement("optgroup"); - newBook.label = "Lord's Day " + (parseInt(x) + 1) - var ld = document.createElement("option"); - ld.value = parseInt(x) + 1; - ld.text = "LD " + (parseInt(x) + 1) + " All"; - newBook.appendChild(ld); - - for (var y in BOOKS[selectedType][x]) { - var question = document.createElement("option"); - question.value = y; - question.text = "HC" + BOOKS[selectedType][x][y]; - newBook.appendChild(question); - } - bookList.appendChild(newBook); - } - } else if (selectedType == 'note') { - var none = document.createElement("option"); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - - fetch('/index.php/retrieve-reference', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'type': 'note' - }) - }) - .then(response => response.json()) - .then(results => { - for (var x in results) { - var newBook = document.createElement("option"); - newBook.value = results[x].id; - newBook.text = results[x].title; - bookList.appendChild(newBook); - } - }); - } else { - var min = BOOKS[selectedType][0]; - var max = BOOKS[selectedType][1]; - var none = document.createElement("option"); - none.value = ''; - none.text = '-- Select --'; - bookList.appendChild(none); - for (var x = min; x <= max; x++) { - var newBook = document.createElement("option"); - newBook.value = x; - newBook.text = x; - bookList.appendChild(newBook); - } - } -} - -/** - * Filters the books based on the selected reference type and updates the chapter range. - * - * @return {void} This function does not return anything. - */ -function filterBooks() { - document.querySelector('#chapter-range').innerText = ''; - document.querySelector('#verse-range').innerText = ''; - if (document.querySelector('#referenceType').value != 'bible') { - return; - } - - var bookList = document.querySelector('#referenceBook'); - var book = BOOKS.bible[bookList.value]; - var max = Object.keys(book).length; - - var chapterRange = document.querySelector('#chapter-range'); - chapterRange.innerText = 'Chapters: ' + max; -} - -/** - * Filters the verse based on the selected book and chapter. - * - * @return {void} This function does not return anything. - */ -function filterVerse() { - if (document.querySelector('#referenceType').value != 'bible') { - return; - } - - var bookList = document.querySelector('#referenceBook').value; - var search = document.querySelector('#referenceSearch').value; - var chapter = search.split(':')[0]; - var verseRange = document.querySelector('#verse-range'); - - if (!BOOKS.bible[bookList] || !BOOKS.bible[bookList][chapter]) { - verseRange.innerText = 'Unknown Chapter'; - return; - } - var verse = BOOKS.bible[bookList][chapter]; - verseRange.innerText = 'Verse: ' + verse; -} - -/** - * Retrieves the reference type from the server and populates the reference series dropdown. - * - * @param {HTMLElement} el - The element that triggered the function. - * @return {Promise} A promise that resolves with the response from the server. - */ -function retrieveReferenceType(el) { - fetch('/index.php/reference/' + el.value, { - method: 'GET', - header: { - 'Content-Type': 'application/json' - } - }) - .then(response => response.json()) - .then(results => { - document.querySelector('#referenceSeries').innerHTML = ''; - var none = document.createElement('option'); - none.value = ''; - none.text = '-- Select --'; - document.querySelector('#referenceSeries').appendChild(none); - - for (var x in results) { - var newSeries = document.createElement('option'); - newSeries.value = results[x].id; - newSeries.text = results[x].label; - document.querySelector('#referenceSeries').appendChild(newSeries); - } - }) -} - -/** - * Retrieves a reference based on the provided element value. - * - * @param {Element} el - The element triggering the reference retrieval - * @return {void} No return value - */ -function retrieveReference(el) { - if (el.value == 'new') { - document.querySelector('#refName').style.display = 'inline-block'; - return; - } - fetch('/index.php/get-reference', { - method: "POST", - header: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - id: el.value - }) - }) - .then(response => response.json()) - .then(results => { - document.querySelector('#reference').value = results.text; - }); -} - -/** - * Saves a reference by sending a POST request to the server with the selected type, - * file, and text values. Displays an alert with the response message, and clears - * the reference and file input fields. - * - * @return {Promise} A Promise that resolves with the response message from the server. - */ -function saveReference() { - var select = document.querySelector('#references'); - fetch('/index.php/save-reference', { - method: 'POST', - header: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - type: select.options[select.selectedIndex].getAttribute('type'), - file: select.value, - text: document.querySelector('#reference').value - }) - }) - .then(response => response.json()) - .then(results => { - alert(results.msg); - - document.querySelector('#reference').value = ''; - document.querySelector('#references').value = ''; - }); -} - -/** - * Previews a note by rendering the markdown content of the note in a preview section. - * Toggles between the note text and preview sections. - * - * @return {void} This function does not return anything. - */ -function previewNote() { - var noteText = document.querySelector('#notes'); - var notePreview = document.querySelector('#notePreview'); - var previewButton = document.querySelector('#previewBtn'); - - const title = document.querySelector('#noteTitle'); - const speaker = document.querySelector('#speaker'); - const passage = document.querySelector('#passage'); - - const markdownPreview = "# " + title.value + " - " + - speaker.options[speaker.selectedIndex].text + " - " + passage.value + "\n\n" + noteText.value; - - notePreview.innerHTML = md.render(markdownPreview); - - if (previewButton.classList.contains('active')) { - noteText.style.display = 'block'; - notePreview.style.display = 'none'; - previewButton.classList.remove('active'); - } else { - noteText.style.display = 'none'; - notePreview.style.display = 'block'; - previewButton.classList.add('active'); - } - - findLinks(); -} - -/** - * Finds all links in the note preview and adds event listeners to them. - * - * @return {void} - */ -function findLinks() { - var links = document.querySelector('#notePreview').querySelectorAll('a'); - - for (var i = 0; i < links.length; i++) { - links[i].addEventListener('click', function (e) { - e.preventDefault(); - if (!this.href.includes('get-passage')) { - return; - } - var passage = this.href.split('/'); - passage = passage[passage.length - 1]; - - fetch(this.href, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'passage': passage - }) - }) - .then(response => response.text()) - .then(result => { - passage = passage.replace(/\+/g, ' '); - psg = passage.split(' '); - if (psg.length > 2) { - book = psg[0] + ' ' + psg[1]; - cv = psg[2]; - } else { - book = psg[0]; - cv = psg[1]; - } - showPassage( - e, - "  " + - "
" + - result); - }); - }); - } -} - -/** - * Function that finds reference links and fetches passage data when clicked. - */ -function findRefLinks() { - var links = document.querySelector('#ref').querySelectorAll('a'); - - for (var i = 0; i < links.length; i++) { - links[i].addEventListener('click', function (e) { - e.preventDefault(); - if (!this.href.includes('get-passage')) { - return; - } - var passage = this.href.split('/'); - passage = passage[passage.length - 1]; - - fetch(this.href, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'passage': passage - }) - }) - .then(response => response.text()) - .then(result => { - passage = passage.replace(/\+/g, ' '); - psg = passage.split(' '); - if (psg.length > 2) { - book = psg[0] + ' ' + psg[1]; - cv = psg[2]; - } else { - book = psg[0]; - cv = psg[1]; - } - showPassage( - e, - "  " + - "
" + - result); - }); - }); - } -} - -/** - * Shows a passage in a popup element relative to the cursor position. - * - * @param {Event} event - The event that triggered the function. - * @param {string} text - The text to be displayed in the popup. - * @return {void} This function does not return a value. - */ -function showPassage(event, text) { - // Create a new div element for the popup - const popup = document.querySelector('#passage-popup'); - popup.innerHTML = md.render(text); - - // Position the popup relative to the cursor - let x = event.clientX + window.scrollX; - let y = event.clientY + window.scrollY; - - // Set the position of the popup element - popup.style.top = `${y}px`; - popup.style.left = `${x}px`; - popup.style.display = 'block'; -} - -/** - * Closes the passage popup by clearing its content and hiding it. - * - * @return {void} This function does not return anything. - */ -function closePopup() { - const popup = document.querySelector('#passage-popup'); - popup.innerHTML = ''; - popup.style.display = 'none'; -} - -/** - * Toggles the visibility of the note list and reference elements. - * - * @param {boolean} [openSidebar=true] - Whether to open the sidebar after toggling the visibility. - * @return {void} - */ -function openNote(openSidebar = true) { - const noteList = document.querySelector('#note-list'); - const refs = document.querySelector('#ref'); - - if (noteList.style.display == 'block') { - noteList.style.display = 'none'; - refs.style.display = 'block'; - } else { - noteList.style.display = 'block'; - refs.style.display = 'none'; - } - - if (openSidebar) { - document.querySelector('.toggle').click(); - } -} - -/** - * Retrieves a note from the server based on the provided ID. - * - * @param {string} id - The ID of the note to retrieve. - * @param {boolean} [runOpen=true] - Whether to open the note sidebar after retrieving the note. - * @return {Promise} A promise that resolves when the note is successfully retrieved and the UI is updated. - */ -function retrieveNote(id, runOpen = true) { - fetch('/index.php/get-note', { - method: 'POST', - header: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'id': id - }) - }) - .then(response => response.json()) - .then(result => { - var dt = new Date(result.date.date); - - document.querySelector('#notes').value = result.text; - document.querySelector('#passage').value = result.passage; - document.querySelector('#series').value = result.series.id; - document.querySelector('#speaker').value = result.speaker.id; - document.querySelector('#noteTitle').value = result.title; - document.querySelector('#noteDate').value = ''; - document.querySelector('#noteDate').value = - (dt.getMonth() < 9 ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '/' + - (dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate()) + '/' + - dt.getFullYear(); - document.querySelector('#noteId').value = result.id; - - if (result.refs) { - references = result.refs; - } - - const list = document.querySelector('#ref-list'); - list.innerHTML = ''; - var newList = null; - for (var x in references) { - var newList = document.createElement('li'); - newList.className = 'tab'; - var button = makeButton(x); - newList.appendChild(button); - list.appendChild(newList); - } - - if (runOpen) { - openNote(false); - } - }); -} - -/** - * Opens the share note functionality. - */ -function openShareNote() { - var id = document.querySelector('#noteId').value; - if (!id) { - alert('No Open Note Found'); - return; - } - - bd = document.querySelector('#modal-backdrop'); - bd.style.display = 'block'; - cont = document.querySelector('#modal-container'); - cont.style.display = bd.style.display; - - emailCont = document.querySelector('#modal-container'); - emailCont.style.left = ((window.innerWidth / 2) - (emailCont.clientWidth / 2)) + 'px'; - emailCont.style.top = ((window.innerHeight / 2) - (emailCont.clientHeight / 2)) + 'px'; -} - -/** - * Closes the share note modal by hiding the backdrop and container, - * and clears the email input value. - */ -function closeShareNote() { - var bd = document.querySelector('#modal-backdrop'); - var cont = document.querySelector('#modal-container'); - bd.style.display = 'none'; - cont.style.display = 'none'; - document.querySelector('#shareEmail').value = ''; -} - -/** - * Function to share a note by sending the note ID and email to the server. - */ -function shareNote(event) { - var id = document.querySelector('#noteId').value; - var email = document.querySelector('#shareEmail').value; - if (!id || !email) { - alert('Invalid Input'); - return; - } - - fetch('/index.php/share-note', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'id': id, - 'email': email - }) - }) - .then(response => response.json()) - .then(result => { - if (result) { - alert(result.msg); - } - }); - - closeShareNote(); -} - -/** - * Increases the font size of the element with the id 'ref' by 1 point. - * - * @return {void} This function does not return a value. - */ -function increaseFont() { - var currentSize = document.querySelector('#ref').style.fontSize; - document.querySelector('#ref').style.fontSize = (parseInt(currentSize) + 1) + 'pt'; -} - -/** - * Decreases the font size of the element with the id 'ref' by 1 point. - * - * @return {void} This function does not return a value. - */ -function decreaseFont() { - var currentSize = document.querySelector('#ref').style.fontSize; - document.querySelector('#ref').style.fontSize = (parseInt(currentSize) - 1) + 'pt'; -} - -/** - * Generates a random UUIDv4 string. - * - * @return {string} The generated UUIDv4 string. - */ -function uuidv4() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - .replace(/[xy]/g, function (c) { - const r = Math.random() * 16 | 0, - v = c == 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); -} \ No newline at end of file diff --git a/public/js/script.min.js b/public/js/script.min.js deleted file mode 100644 index 5746c5f..0000000 --- a/public/js/script.min.js +++ /dev/null @@ -1 +0,0 @@ -function setBooks(){fetch("/js/data.json").then(res=>{if(!res.ok)throw new Error("HTTP Error: Status: ${res.status}");return res.json()}).then(data=>{BOOKS=data}).catch(error=>{console.log(error)})}function setEventListeners(){document.addEventListener("keyup",function(event){"F3"==event.key&&openRef(!1)}),document.querySelector("#notes").addEventListener("keyup",function(event){let key=event.keyCode;(key>=48&&key<=90||key>=96&&key<=111||key>=186&&key<=222)&&(textDirty=!0,document.querySelector("#note-header-left h2").classList.add("dirty"))})}function setHeight(){md=new markdownit({html:!0,linkify:!0,breaks:!0}),body=document.querySelector("body"),body.style.height=window.innerHeight+"px",cont=document.querySelector("#main"),cont.style.height=window.innerHeight+"px",tabs=document.querySelector(".ref-tab"),tabs.style.height=window.innerHeight-13+"px",ref=document.querySelector(".ref"),ref.style.height=window.innerHeight-60+"px",noteList=document.querySelector("#note-list"),noteList.style.height=window.innerHeight-60+"px",notes=document.querySelector(".notes"),notes.style.height=window.innerHeight-60+"px",notePreview=document.querySelector("#notePreview"),notePreview.style.height=window.innerHeight-50+"px",$("#noteDate")&&$("#noteDate").datepicker(),$("#query")&&document.querySelector("#query").addEventListener("keyup",function(event){"Enter"==event.key&&search()}),to||(to=setTimeout(saveNote,saveInterval))}function search(){query=document.querySelector("#query").value,fetch("/index.php/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:query})}).then(response=>response.json()).then(results=>{var oldNotes=document.querySelector("#old-notes");for(var n in oldNotes.innerHTML="",results){var link=document.createElement("a");link.href="#",link.setAttribute("onclick","retrieveNote('"+results[n].id+"');openNote();"),link.innerHTML=results[n].title;var p=document.createElement("p");p.innerHTML=results[n].passage;var article=document.createElement("article");article.appendChild(link),article.appendChild(p),oldNotes.append(article)}})}function newNote(){notes=document.querySelector("#notes"),notes.text="",notes.value="",references={},saved=!0,textDirty=!1,document.querySelector("#note-header-left h2").classList.remove("dirty"),dt=new Date,document.querySelector("#noteDate").value=dt.getFullYear()+"-"+(dt.getMonth()<9?"0"+(dt.getMonth()+1):dt.getMonth()+1)+"-"+(dt.getDate()<10?"0"+dt.getDate():dt.getDate()),document.querySelector("#noteTitle").value="",document.querySelector("#speaker").value=0,document.querySelector("#series").value=0,document.querySelector("#template").value=0,document.querySelector("#passage").value="",document.querySelector("#recording").value="",document.querySelector("#noteId").value="",document.querySelector("#ref-list").innerHTML="",document.querySelector("#ref").innerHTML="",document.querySelector(".toggle").click()}function saveNote(event){if(event&&event.preventDefault(),!textDirty||!validateNote())return clearTimeout(to),void(to=setTimeout(saveNote,saveInterval));let saveCheck=document.querySelector("#save-check");var noteText=document.querySelector("#notes").value;startSave();var note={id:document.querySelector("#noteId").value,date:document.querySelector("#noteDate").value,title:document.querySelector("#noteTitle").value,speaker:document.querySelector("#speaker").value,series:document.querySelector("#series").value,passage:document.querySelector("#passage").value,note:document.querySelector("#notes").value,recording:document.querySelector("#recording").value,refs:references};$.ajax({url:"/index.php/save-note",method:"POST",contentType:"application/json",data:JSON.stringify(note),dataType:"json",timeout:saveTimeout}).done(function(data){"saved"!=data.msg||saved||(saveFailureCount=SAVE_FAILURE_LIMIT,saveCheck.classList.remove("saving","error","fa-times-circle","fa-save"),showSave(),noteText==document.querySelector("#notes").value&&(saved=!0,textDirty=!1,document.querySelector("#note-header-left h2").classList.remove("dirty")),data.new&&(document.querySelector("#noteId").value=data.id))}).fail(function(xhr,status,error){saveFailureCount--,saveCheck.classList.remove("saving","fa-save"),saveCheck.classList.add("fa-times-circle","error"),console.error(error)}).always(function(xhr,status){"timeout"==status&&(saveCheck.classList.remove("saving","fa-save"),saveCheck.classList.add("error","fa-times-circle")),clearTimeout(to),saveFailureCount>0?to=setTimeout(saveNote,saveInterval):saveFailureCount=SAVE_FAILURE_LIMIT})}function validateNote(){const note=document.querySelector("#notes"),date=document.querySelector("#noteDate"),speaker=document.querySelector("#speaker"),series=document.querySelector("#series"),title=document.querySelector("#noteTitle"),psg=document.querySelector("#passage");return!!title.value.length&&(!!date.value&&(!!parseInt(speaker.value)&&(!!parseInt(series.value)&&(!!psg.value&&!!note.value.length))))}function isUuidValid(uuid){const regex=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[8|9|a|b][a-f0-9]{3}-[a-f0-9]{12}$/i;return regex.test(uuid)}function startSave(){document.querySelector("#save-check").classList.remove("error","fa-times-circle","fa-save"),document.querySelector("#save-check").classList.add("saving","fa-save"),document.querySelector("#save-check").style.opacity=1}function showSave(){if(!saved){var checkmark=document.getElementById("save-check");checkmark.classList.add("fa-save");var si=setInterval(function(){op=parseFloat(checkmark.style.opacity),checkmark.style.opacity=op-.1,.1==checkmark.style.opacity&&(checkmark.style.opacity=0,clearInterval(si),saved=!1)},100)}}function deleteNote(noteId,link){document.querySelector("#noteTitle").value="",document.querySelector("#speaker").value=0,document.querySelector("#series").value=0,document.querySelector("#template").value=0,document.querySelector("#passage").value="",document.querySelector("#notes").value="",document.querySelector("#recording").value="",document.querySelector("#noteDate").value="",document.querySelector("#noteId").value="";var row=link.parentElement.parentElement;fetch("/index.php/delete-note",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:noteId})}).then(response=>response.json()).then(data=>{"deleted"==data.msg&&(alert("Note deleted."),row.remove())})}function newSpeaker(){"new"==document.querySelector("#speaker").value&&(document.querySelector("#newSpeaker").style.display="inline-block",document.querySelector("#speaker").style.display="none"),saved=!1,textDirty=!0}function saveSpeaker(event){13==event.keyCode&&fetch("/index.php/save-speaker",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({speakerName:document.querySelector("#newSpeaker").value})}).then(response=>response.json()).then(results=>{var newSpeaker=document.createElement("option");newSpeaker.text=document.querySelector("#newSpeaker").value,newSpeaker.value=results.id,document.querySelector("#speaker").add(newSpeaker),alert(results.msg),document.querySelector("#newSpeaker").style.display="none",document.querySelector("#speaker").style.display="inline-block",document.querySelector("#newSpeaker").value="",document.querySelector("#speaker").value=results.id})}function newSeries(){"new"==document.querySelector("#series").value&&(document.querySelector("#newSeries").style.display="inline-block",document.querySelector("#series").style.display="none"),saved=!1,textDirty=!0}function saveSeries(event){13==event.keyCode&&fetch("/index.php/save-series",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({seriesName:document.querySelector("#newSeries").value})}).then(response=>response.json()).then(results=>{var newSeries=document.createElement("option");newSeries.text=document.querySelector("#newSeries").value,newSeries.value=results.id,document.querySelector("#series").add(newSeries),alert(results.msg),document.querySelector("#newSeries").style.display="none",document.querySelector("#series").style.display="inline-block",document.querySelector("#newSeries").value="",document.querySelector("#series").value=results.id})}function openRef(closeSidebar=!0){document.querySelector("#openRefBtn").classList.add("active"),refQuery=document.querySelector("#refQuery"),refQuery.style.display="block",ref=document.querySelector("#ref"),refQuery.style.left=ref.offsetLeft+"px",refQuery.style.top=ref.offsetTop+"px",closeSidebar&&document.querySelector(".toggle").click()}function closeRef(){document.querySelector("#referenceSearch").value="",document.querySelector("#referenceSearch").style.display="",document.querySelector("#referenceType").value="",document.querySelector("#referenceBook").value="",document.querySelector("#referenceBook").style.display="none",document.querySelector("#chapter-range").innerText="",document.querySelector("#verse-range").innerText="",document.querySelector("#refQuery").style.display="none",document.querySelector("#openRefBtn").classList.remove("active")}function queryRef(type=null,book=null,input=null){if(!input)var input=document.querySelector("#refQuery #referenceSearch").value;if(!type)var type=document.querySelector("#referenceType").value;if(!book)var book=document.querySelector("#referenceBook").value;fetch("/index.php/retrieve-reference",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:type,book:book,reference:input})}).then(response=>response.json()).then(results=>{const list=document.querySelector("#ref-list");var newList=document.createElement("li");newList.className="tab",button=makeButton(results.title),newList.appendChild(button),list.appendChild(newList);const ref=document.querySelector("#ref");ref.innerHTML=md.render(results.text),references[results.title]=results.text,closeRef(),saved=!1,textDirty=!0,saveNote(),findRefLinks()})}function makeButton(title){var btn=document.createElement("button");return btn.innerText=title,btn.class="button",btn.addEventListener("click",function(){removeActiveRef(),document.querySelector("#ref").innerHTML=md.render(references[title]),this.classList.add("active"),findRefLinks()}),btn.addEventListener("dblclick",function(){document.querySelector("#ref").innerHTML="",delete references[title];var list=this.parentElement;list.remove(),saved=!1,textDirty=!0,saveNote()}),removeActiveRef(),btn.classList.add("active"),btn}function removeActiveRef(){for(var t in tabs=document.querySelectorAll(".active"),tabs)isFinite(parseInt(t))&&tabs[t].classList.remove("active")}function retrieveTemplate(orig,dest){const temp=document.querySelector("#"+orig);"0"!=temp.value?fetch("/index.php/retrieve-template",{method:"POST",headers:{"Content-Type":"plain/text"},body:JSON.stringify({template:temp.value})}).then(response=>response.text()).then(results=>{const div=document.querySelector("#"+dest);div.value=results}):document.querySelector("#"+dest).value=""}function saveTemplate(){fetch("/index.php/save-template",{method:"POST",headers:{"Content-Type":"plain/text"},body:JSON.stringify({template_id:document.querySelector("#template_id").value,template_name:document.querySelector("#template_name").value,template_value:document.querySelector("#template_value").value})}).then(response=>response.text()).then(results=>{alert(results)})}function toggleFields(){const fieldsContainer=document.getElementById("fields-container"),showHideBtn=document.getElementById("show-hide-btn");fieldsContainer.classList.contains("show")?(fieldsContainer.classList.remove("show"),fieldsContainer.style.display="none",showHideBtn.classList.remove("active")):(fieldsContainer.classList.add("show"),fieldsContainer.style.display="block",showHideBtn.classList.add("active")),setHeight()}function retrieveBooks(){document.querySelector("#chapter-range").innerText="",document.querySelector("#verse-range").innerText="",document.querySelector("#referenceSearch").value="",document.querySelector("#referenceSearch").style.display="none";const selectedType=document.querySelector("#referenceType").value;if(selectedType){var bookList=document.querySelector("#referenceBook");if(bookList.style.display="block",bookList.innerHTML="","bible"==selectedType){document.querySelector("#referenceSearch").style.display="block";var none=document.createElement("option");for(var x in none.value="",none.text="-- Select --",bookList.appendChild(none),BOOKS.bible){var newBook=document.createElement("option");newBook.text=x,bookList.appendChild(newBook)}}else if("creed"==selectedType){var none=document.createElement("option");for(var x in none.value="",none.text="-- Select --",bookList.appendChild(none),BOOKS.creed){var newBook=document.createElement("option");newBook.value=x,newBook.text=BOOKS.creed[x],bookList.appendChild(newBook)}}else if("cd"==selectedType){var none=document.createElement("option");for(var x in none.value="",none.text="-- Select --",bookList.appendChild(none),BOOKS.cd){var newBook=document.createElement("option");newBook.text=BOOKS.cd[x],bookList.appendChild(newBook)}}else if("hc"==selectedType){var none=document.createElement("option");for(var x in none.value="",none.text="-- Select --",bookList.appendChild(none),BOOKS[selectedType]){var newBook=document.createElement("optgroup");newBook.label="Lord's Day "+(parseInt(x)+1);var ld=document.createElement("option");for(var y in ld.value=parseInt(x)+1,ld.text="LD "+(parseInt(x)+1)+" All",newBook.appendChild(ld),BOOKS[selectedType][x]){var question=document.createElement("option");question.value=y,question.text="HC"+BOOKS[selectedType][x][y],newBook.appendChild(question)}bookList.appendChild(newBook)}}else if("note"==selectedType){var none=document.createElement("option");none.value="",none.text="-- Select --",bookList.appendChild(none),fetch("/index.php/retrieve-reference",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"note"})}).then(response=>response.json()).then(results=>{for(var x in results){var newBook=document.createElement("option");newBook.value=results[x].id,newBook.text=results[x].title,bookList.appendChild(newBook)}})}else{var min=BOOKS[selectedType][0],max=BOOKS[selectedType][1],none=document.createElement("option");none.value="",none.text="-- Select --",bookList.appendChild(none);for(var x=min;x<=max;x++){var newBook=document.createElement("option");newBook.value=x,newBook.text=x,bookList.appendChild(newBook)}}}}function filterBooks(){if(document.querySelector("#chapter-range").innerText="",document.querySelector("#verse-range").innerText="","bible"==document.querySelector("#referenceType").value){var bookList=document.querySelector("#referenceBook"),book=BOOKS.bible[bookList.value],max=Object.keys(book).length,chapterRange=document.querySelector("#chapter-range");chapterRange.innerText="Chapters: "+max}}function filterVerse(){if("bible"==document.querySelector("#referenceType").value){var bookList=document.querySelector("#referenceBook").value,search=document.querySelector("#referenceSearch").value,chapter=search.split(":")[0],verseRange=document.querySelector("#verse-range");if(BOOKS.bible[bookList]&&BOOKS.bible[bookList][chapter]){var verse=BOOKS.bible[bookList][chapter];verseRange.innerText="Verse: "+verse}else verseRange.innerText="Unknown Chapter"}}function retrieveReferenceType(el){fetch("/index.php/reference/"+el.value,{method:"GET",header:{"Content-Type":"application/json"}}).then(response=>response.json()).then(results=>{document.querySelector("#referenceSeries").innerHTML="";var none=document.createElement("option");for(var x in none.value="",none.text="-- Select --",document.querySelector("#referenceSeries").appendChild(none),results){var newSeries=document.createElement("option");newSeries.value=results[x].id,newSeries.text=results[x].label,document.querySelector("#referenceSeries").appendChild(newSeries)}})}function retrieveReference(el){"new"!=el.value?fetch("/index.php/get-reference",{method:"POST",header:{"Content-Type":"application/json"},body:JSON.stringify({id:el.value})}).then(response=>response.json()).then(results=>{document.querySelector("#reference").value=results.text}):document.querySelector("#refName").style.display="inline-block"}function saveReference(){var select=document.querySelector("#references");fetch("/index.php/save-reference",{method:"POST",header:{"Content-Type":"application/json"},body:JSON.stringify({type:select.options[select.selectedIndex].getAttribute("type"),file:select.value,text:document.querySelector("#reference").value})}).then(response=>response.json()).then(results=>{alert(results.msg),document.querySelector("#reference").value="",document.querySelector("#references").value=""})}function previewNote(){var noteText=document.querySelector("#notes"),notePreview=document.querySelector("#notePreview"),previewButton=document.querySelector("#previewBtn");const title=document.querySelector("#noteTitle"),speaker=document.querySelector("#speaker"),passage=document.querySelector("#passage"),markdownPreview="# "+title.value+" - "+speaker.options[speaker.selectedIndex].text+" - "+passage.value+"\n\n"+noteText.value;notePreview.innerHTML=md.render(markdownPreview),previewButton.classList.contains("active")?(noteText.style.display="block",notePreview.style.display="none",previewButton.classList.remove("active")):(noteText.style.display="none",notePreview.style.display="block",previewButton.classList.add("active")),findLinks()}function findLinks(){for(var links=document.querySelector("#notePreview").querySelectorAll("a"),i=0;iresponse.text()).then(result=>{passage=passage.replace(/\+/g," "),psg=passage.split(" "),psg.length>2?(book=psg[0]+" "+psg[1],cv=psg[2]):(book=psg[0],cv=psg[1]),showPassage(e,"  
"+result)})}})}function findRefLinks(){for(var links=document.querySelector("#ref").querySelectorAll("a"),i=0;iresponse.text()).then(result=>{passage=passage.replace(/\+/g," "),psg=passage.split(" "),psg.length>2?(book=psg[0]+" "+psg[1],cv=psg[2]):(book=psg[0],cv=psg[1]),showPassage(e,"  
"+result)})}})}function showPassage(event,text){const popup=document.querySelector("#passage-popup");popup.innerHTML=md.render(text);let x=event.clientX+window.scrollX,y=event.clientY+window.scrollY;popup.style.top=`${y}px`,popup.style.left=`${x}px`,popup.style.display="block"}function closePopup(){const popup=document.querySelector("#passage-popup");popup.innerHTML="",popup.style.display="none"}function openNote(openSidebar=!0){const noteList=document.querySelector("#note-list"),refs=document.querySelector("#ref");"block"==noteList.style.display?(noteList.style.display="none",refs.style.display="block"):(noteList.style.display="block",refs.style.display="none"),openSidebar&&document.querySelector(".toggle").click()}function retrieveNote(id,runOpen=!0){fetch("/index.php/get-note",{method:"POST",header:{"Content-Type":"application/json"},body:JSON.stringify({id:id})}).then(response=>response.json()).then(result=>{var dt=new Date(result.date.date);document.querySelector("#notes").value=result.text,document.querySelector("#passage").value=result.passage,document.querySelector("#series").value=result.series.id,document.querySelector("#speaker").value=result.speaker.id,document.querySelector("#noteTitle").value=result.title,document.querySelector("#noteDate").value="",document.querySelector("#noteDate").value=(dt.getMonth()<9?"0"+(dt.getMonth()+1):dt.getMonth()+1)+"/"+(dt.getDate()<10?"0"+dt.getDate():dt.getDate())+"/"+dt.getFullYear(),document.querySelector("#noteId").value=result.id,result.refs&&(references=result.refs);const list=document.querySelector("#ref-list");list.innerHTML="";var newList=null;for(var x in references){var newList=document.createElement("li");newList.className="tab";var button=makeButton(x);newList.appendChild(button),list.appendChild(newList)}runOpen&&openNote(!1)})}function openShareNote(){var id=document.querySelector("#noteId").value;id?(bd=document.querySelector("#modal-backdrop"),bd.style.display="block",cont=document.querySelector("#modal-container"),cont.style.display=bd.style.display,emailCont=document.querySelector("#modal-container"),emailCont.style.left=window.innerWidth/2-emailCont.clientWidth/2+"px",emailCont.style.top=window.innerHeight/2-emailCont.clientHeight/2+"px"):alert("No Open Note Found")}function closeShareNote(){var bd=document.querySelector("#modal-backdrop"),cont=document.querySelector("#modal-container");bd.style.display="none",cont.style.display="none",document.querySelector("#shareEmail").value=""}function shareNote(event){var id=document.querySelector("#noteId").value,email=document.querySelector("#shareEmail").value;id&&email?(fetch("/index.php/share-note",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:id,email:email})}).then(response=>response.json()).then(result=>{result&&alert(result.msg)}),closeShareNote()):alert("Invalid Input")}function increaseFont(){var currentSize=document.querySelector("#ref").style.fontSize;document.querySelector("#ref").style.fontSize=parseInt(currentSize)+1+"pt"}function decreaseFont(){var currentSize=document.querySelector("#ref").style.fontSize;document.querySelector("#ref").style.fontSize=parseInt(currentSize)-1+"pt"}function uuidv4(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){const r=16*Math.random()|0,v="x"==c?r:3&r|8;return v.toString(16)})}var md=null,references={},tabs=[];let saved=!1,textDirty=!1;var to=null;let controller;var BOOKS={};$(function(){setHeight(),setBooks(),setEventListeners(),$("#note-table").DataTable({paging:!1,ajax:{url:"/index.php/get-notes",type:"POST"},columns:[{data:"link"},{data:"speaker.name"},{data:"passage"},{data:"date.date",render:DataTable.render.date("L")}]}),$("#shareBtn").on("click",openShareNote),$("#modal-backdrop").on("click",closeShareNote)}); \ No newline at end of file diff --git a/public/theme/LICENSE.txt b/public/theme/LICENSE.txt deleted file mode 100644 index d447b56..0000000 --- a/public/theme/LICENSE.txt +++ /dev/null @@ -1,63 +0,0 @@ -Creative Commons Attribution 3.0 Unported -http://creativecommons.org/licenses/by/3.0/ - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - - 1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. - 2. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. - 3. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. - 4. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. - 5. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. - 6. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. - 7. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - 8. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. - 9. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - - 1. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; - 2. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; - 3. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, - 4. to Distribute and Publicly Perform Adaptations. - 5. - - For the avoidance of doubt: - 1. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; - 2. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, - 3. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - - 1. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. - 2. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. - 3. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - 1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - 2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - - 1. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - 2. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - 3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - 4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - 5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - 6. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. diff --git a/public/theme/README.txt b/public/theme/README.txt deleted file mode 100644 index 7282988..0000000 --- a/public/theme/README.txt +++ /dev/null @@ -1,30 +0,0 @@ -Editorial by HTML5 UP -html5up.net | @ajlkn -Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) - - -Say hello to Editorial, a blog/magazine-ish template built around a toggleable "locking" -sidebar (scroll down to see what I mean) and an accordion-style menu. Not the usual landing -page/portfolio affair you'd expect to see at HTML5 UP, but I figured for my 41st (!!!) -template I'd change it up a little. Enjoy :) - -Demo images* courtesy of Unsplash, a radtastic collection of CC0 (public domain) images -you can use for pretty much whatever. - -(* = not included) - -AJ -aj@lkn.io | @ajlkn - - -Credits: - - Demo Images: - Unsplash (unsplash.com) - - Icons: - Font Awesome (fontawesome.io) - - Other: - jQuery (jquery.com) - Responsive Tools (github.com/ajlkn/responsive-tools) \ No newline at end of file diff --git a/public/theme/assets/css/fontawesome-all.min.css b/public/theme/assets/css/fontawesome-all.min.css deleted file mode 100644 index 03c42e3..0000000 --- a/public/theme/assets/css/fontawesome-all.min.css +++ /dev/null @@ -1,101 +0,0 @@ -/*! - * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/public/theme/assets/css/images/ui-bg_glass_100_f5f0e5_1x400.png b/public/theme/assets/css/images/ui-bg_glass_100_f5f0e5_1x400.png deleted file mode 100644 index d2fbf35..0000000 Binary files a/public/theme/assets/css/images/ui-bg_glass_100_f5f0e5_1x400.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_glass_25_cb842e_1x400.png b/public/theme/assets/css/images/ui-bg_glass_25_cb842e_1x400.png deleted file mode 100644 index 0c037f7..0000000 Binary files a/public/theme/assets/css/images/ui-bg_glass_25_cb842e_1x400.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_glass_70_ede4d4_1x400.png b/public/theme/assets/css/images/ui-bg_glass_70_ede4d4_1x400.png deleted file mode 100644 index 7584633..0000000 Binary files a/public/theme/assets/css/images/ui-bg_glass_70_ede4d4_1x400.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png b/public/theme/assets/css/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png deleted file mode 100644 index b72c9db..0000000 Binary files a/public/theme/assets/css/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_highlight-hard_65_fee4bd_1x100.png b/public/theme/assets/css/images/ui-bg_highlight-hard_65_fee4bd_1x100.png deleted file mode 100644 index c594c90..0000000 Binary files a/public/theme/assets/css/images/ui-bg_highlight-hard_65_fee4bd_1x100.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png b/public/theme/assets/css/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png deleted file mode 100644 index 8b12b28..0000000 Binary files a/public/theme/assets/css/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-bg_inset-soft_100_f4f0ec_1x100.png b/public/theme/assets/css/images/ui-bg_inset-soft_100_f4f0ec_1x100.png deleted file mode 100644 index 9c0299a..0000000 Binary files a/public/theme/assets/css/images/ui-bg_inset-soft_100_f4f0ec_1x100.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_c47a23_256x240.png b/public/theme/assets/css/images/ui-icons_c47a23_256x240.png deleted file mode 100644 index 0778281..0000000 Binary files a/public/theme/assets/css/images/ui-icons_c47a23_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_cb672b_256x240.png b/public/theme/assets/css/images/ui-icons_cb672b_256x240.png deleted file mode 100644 index 4f76d91..0000000 Binary files a/public/theme/assets/css/images/ui-icons_cb672b_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_f08000_256x240.png b/public/theme/assets/css/images/ui-icons_f08000_256x240.png deleted file mode 100644 index 97a2363..0000000 Binary files a/public/theme/assets/css/images/ui-icons_f08000_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_f35f07_256x240.png b/public/theme/assets/css/images/ui-icons_f35f07_256x240.png deleted file mode 100644 index 627e071..0000000 Binary files a/public/theme/assets/css/images/ui-icons_f35f07_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_ff7519_256x240.png b/public/theme/assets/css/images/ui-icons_ff7519_256x240.png deleted file mode 100644 index 5a4a0bf..0000000 Binary files a/public/theme/assets/css/images/ui-icons_ff7519_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/images/ui-icons_ffffff_256x240.png b/public/theme/assets/css/images/ui-icons_ffffff_256x240.png deleted file mode 100644 index 12ab5aa..0000000 Binary files a/public/theme/assets/css/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/public/theme/assets/css/jquery-ui.structure.css b/public/theme/assets/css/jquery-ui.structure.css deleted file mode 100644 index 592b241..0000000 --- a/public/theme/assets/css/jquery-ui.structure.css +++ /dev/null @@ -1,886 +0,0 @@ -/*! - * jQuery UI CSS Framework 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - * - * https://api.jqueryui.com/category/theming/ - */ -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - -ms-filter: "alpha(opacity=0)"; /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; - pointer-events: none; -} - - -/* Icons -----------------------------------*/ -.ui-icon { - display: inline-block; - vertical-align: middle; - margin-top: -.25em; - position: relative; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - -.ui-widget-icon-block { - left: 50%; - margin-left: -8px; - display: block; -} - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-selectable { - -ms-touch-action: none; - touch-action: none; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin: 2px 0 0 0; - padding: .5em .5em .5em .7em; - font-size: 100%; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: 0; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - cursor: pointer; - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.ui-menu .ui-menu-item-wrapper { - position: relative; - padding: 3px 1em 3px .4em; -} -.ui-menu .ui-menu-divider { - margin: 5px 0; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-state-focus, -.ui-menu .ui-state-active { - margin: -1px; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item-wrapper { - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - margin: auto 0; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - left: auto; - right: 0; -} -.ui-button { - padding: .4em 1em; - display: inline-block; - position: relative; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - /* Support: IE <= 11 */ - overflow: visible; -} - -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} - -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2em; - box-sizing: border-box; - text-indent: -9999px; - white-space: nowrap; -} - -/* no icon support for input elements */ -input.ui-button.ui-button-icon-only { - text-indent: 0; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; -} - -.ui-button.ui-icon-notext .ui-icon { - padding: 0; - width: 2.1em; - height: 2.1em; - text-indent: -9999px; - white-space: nowrap; - -} - -input.ui-button.ui-icon-notext .ui-icon { - width: auto; - height: auto; - text-indent: 0; - white-space: normal; - padding: .4em 1em; -} - -/* workarounds */ -/* Support: Firefox 5 - 40 */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-controlgroup { - vertical-align: middle; - display: inline-block; -} -.ui-controlgroup > .ui-controlgroup-item { - float: left; - margin-left: 0; - margin-right: 0; -} -.ui-controlgroup > .ui-controlgroup-item:focus, -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { - z-index: 9999; -} -.ui-controlgroup-vertical > .ui-controlgroup-item { - display: block; - float: none; - width: 100%; - margin-top: 0; - margin-bottom: 0; - text-align: left; -} -.ui-controlgroup-vertical .ui-controlgroup-item { - box-sizing: border-box; -} -.ui-controlgroup .ui-controlgroup-label { - padding: .4em 1em; -} -.ui-controlgroup .ui-controlgroup-label span { - font-size: 80%; -} -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { - border-left: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { - border-top: none; -} -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { - border-right: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { - border-bottom: none; -} - -/* Spinner specific style fixes */ -.ui-controlgroup-vertical .ui-spinner-input { - - /* Support: IE8 only, Android < 4.4 only */ - width: 75%; - width: calc( 100% - 2.4em ); -} -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { - border-top-style: solid; -} - -.ui-checkboxradio-label .ui-icon-background { - box-shadow: inset 1px 1px 1px #ccc; - border-radius: .12em; - border: none; -} -.ui-checkboxradio-radio-label .ui-icon-background { - width: 16px; - height: 16px; - border-radius: 1em; - overflow: visible; - border: none; -} -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { - background-image: none; - width: 8px; - height: 8px; - border-width: 4px; - border-style: solid; -} -.ui-checkboxradio-disabled { - pointer-events: none; -} -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 45%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} - -/* Icons */ -.ui-datepicker .ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; - left: .5em; - top: .3em; -} -.ui-dialog { - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-n { - height: 2px; - top: 0; -} -.ui-dialog .ui-resizable-e { - width: 2px; - right: 0; -} -.ui-dialog .ui-resizable-s { - height: 2px; - bottom: 0; -} -.ui-dialog .ui-resizable-w { - width: 2px; - left: 0; -} -.ui-dialog .ui-resizable-se, -.ui-dialog .ui-resizable-sw, -.ui-dialog .ui-resizable-ne, -.ui-dialog .ui-resizable-nw { - width: 7px; - height: 7px; -} -.ui-dialog .ui-resizable-se { - right: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-sw { - left: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-ne { - right: 0; - top: 0; -} -.ui-dialog .ui-resizable-nw { - left: 0; - top: 0; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); - height: 100%; - -ms-filter: "alpha(opacity=25)"; /* support: IE8 */ - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-selectmenu-menu { - padding: 0; - margin: 0; - position: absolute; - top: 0; - left: 0; - display: none; -} -.ui-selectmenu-menu .ui-menu { - overflow: auto; - overflow-x: hidden; - padding-bottom: 1px; -} -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - padding: 2px 0.4em; - margin: 0.5em 0 0 0; - height: auto; - border: 0; -} -.ui-selectmenu-open { - display: block; -} -.ui-selectmenu-text { - display: block; - margin-right: 20px; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-selectmenu-button.ui-button { - text-align: left; - white-space: nowrap; - width: 14em; -} -.ui-selectmenu-icon.ui-icon { - float: right; - margin-top: 0; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: pointer; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: .222em 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 2em; -} -.ui-spinner-button { - width: 1.6em; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top-style: none; - border-bottom-style: none; - border-right-style: none; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; -} -body .ui-tooltip { - border-width: 2px; -} diff --git a/public/theme/assets/css/jquery-ui.theme.css b/public/theme/assets/css/jquery-ui.theme.css deleted file mode 100644 index dcdcac1..0000000 --- a/public/theme/assets/css/jquery-ui.theme.css +++ /dev/null @@ -1,1005 +0,0 @@ -/* - * jQuery UI CSS Framework 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - * - * https://api.jqueryui.com/category/theming/ - * - * To view and modify this theme, visit https://jqueryui.com/themeroller/?scope=&folderName=humanity&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=75&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=75&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=ff7519&fcError=592003&borderColorError=f8893f&bgImgOpacityError=65&bgTextureError=highlight_hard&bgColorError=fee4bd&iconColorHighlight=cb672b&fcHighlight=060200&borderColorHighlight=d9bb73&bgImgOpacityHighlight=75&bgTextureHighlight=highlight_hard&bgColorHighlight=f5f5b5&iconColorActive=f35f07&fcActive=b85700&borderColorActive=e0cfc2&bgImgOpacityActive=100&bgTextureActive=highlight_hard&bgColorActive=f4f0ec&iconColorHover=f08000&fcHover=a46313&borderColorHover=f5ad66&bgImgOpacityHover=100&bgTextureHover=glass&bgColorHover=f5f0e5&iconColorDefault=f08000&fcDefault=3f3731&borderColorDefault=cdc3b7&bgImgOpacityDefault=70&bgTextureDefault=glass&bgColorDefault=ede4d4&iconColorContent=c47a23&fcContent=1e1b1d&borderColorContent=e0cfc2&bgImgOpacityContent=100&bgTextureContent=inset_soft&bgColorContent=f4f0ec&iconColorHeader=ffffff&fcHeader=ffffff&borderColorHeader=d49768&bgImgOpacityHeader=25&bgTextureHeader=glass&bgColorHeader=cb842e&cornerRadius=6px&fsDefault=1.1em&fwDefault=normal&ffDefault=Helvetica%2CArial%2Csans-serif - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Helvetica, Arial, sans-serif; - font-size: 1.1em; -} - -.ui-widget .ui-widget { - font-size: 1em; -} - -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Helvetica, Arial, sans-serif; - font-size: 1em; -} - -.ui-widget.ui-widget-content { - border: 1px solid #cdc3b7; -} - -.ui-widget-content { - border: 1px solid #e0cfc2; - background: #f4f0ec url("images/ui-bg_inset-soft_100_f4f0ec_1x100.png") 50% bottom repeat-x; - color: #1e1b1d; -} - -.ui-widget-content a { - color: #1e1b1d; -} - -.ui-widget-header { - border: 1px solid #d49768; - background: #cb842e url("images/ui-bg_glass_25_cb842e_1x400.png") 50% 50% repeat-x; - color: #ffffff; - font-weight: bold; -} - -.ui-widget-header a { - color: #ffffff; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default, -.ui-button, - -/* We use html here because we need a greater specificity to make sure disabled -works properly when clicked or hovered */ -html .ui-button.ui-state-disabled:hover, -html .ui-button.ui-state-disabled:active { - border: 1px solid #cdc3b7; - background: #ede4d4 url("images/ui-bg_glass_70_ede4d4_1x400.png") 50% 50% repeat-x; - font-weight: normal; - color: #3f3731; -} - -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited, -a.ui-button, -a:link.ui-button, -a:visited.ui-button, -.ui-button { - color: #3f3731; - text-decoration: none; -} - -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus, -.ui-button:hover, -.ui-button:focus { - border: 1px solid #f5ad66; - background: #f5f0e5 url("images/ui-bg_glass_100_f5f0e5_1x400.png") 50% 50% repeat-x; - font-weight: normal; - color: #a46313; -} - -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited, -a.ui-button:hover, -a.ui-button:focus { - color: #a46313; - text-decoration: none; -} - -.ui-visual-focus { - box-shadow: 0 0 3px 1px rgb(94, 158, 214); -} - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - border: 1px solid #e0cfc2; - background: #f4f0ec url("images/ui-bg_highlight-hard_100_f4f0ec_1x100.png") 50% 50% repeat-x; - font-weight: normal; - color: #b85700; -} - -.ui-icon-background, -.ui-state-active .ui-icon-background { - border: #e0cfc2; - background-color: #b85700; -} - -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #b85700; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #d9bb73; - background: #f5f5b5 url("images/ui-bg_highlight-hard_75_f5f5b5_1x100.png") 50% top repeat-x; - color: #060200; -} - -.ui-state-checked { - border: 1px solid #d9bb73; - background: #f5f5b5; -} - -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #060200; -} - -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #f8893f; - background: #fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x; - color: #592003; -} - -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #592003; -} - -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #592003; -} - -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} - -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - -ms-filter: "alpha(opacity=70)"; - /* support: IE8 */ - font-weight: normal; -} - -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - -ms-filter: "alpha(opacity=35)"; - /* support: IE8 */ - background-image: none; -} - -.ui-state-disabled .ui-icon { - -ms-filter: "alpha(opacity=35)"; - /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} - -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("images/ui-icons_c47a23_256x240.png"); -} - -.ui-widget-header .ui-icon { - background-image: url("images/ui-icons_ffffff_256x240.png"); -} - -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon, -.ui-button:hover .ui-icon, -.ui-button:focus .ui-icon { - background-image: url("images/ui-icons_f08000_256x240.png"); -} - -.ui-state-active .ui-icon, -.ui-button:active .ui-icon { - background-image: url("images/ui-icons_f35f07_256x240.png"); -} - -.ui-state-highlight .ui-icon, -.ui-button .ui-state-highlight.ui-icon { - background-image: url("images/ui-icons_cb672b_256x240.png"); -} - -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("images/ui-icons_ff7519_256x240.png"); -} - -.ui-button .ui-icon { - background-image: url("images/ui-icons_f08000_256x240.png"); -} - -/* positioning */ -/* Three classes needed to override `.ui-button:hover .ui-icon` */ -.ui-icon-blank.ui-icon-blank.ui-icon-blank { - background-image: none; -} - -.ui-icon-caret-1-n { - background-position: 0 0; -} - -.ui-icon-caret-1-ne { - background-position: -16px 0; -} - -.ui-icon-caret-1-e { - background-position: -32px 0; -} - -.ui-icon-caret-1-se { - background-position: -48px 0; -} - -.ui-icon-caret-1-s { - background-position: -65px 0; -} - -.ui-icon-caret-1-sw { - background-position: -80px 0; -} - -.ui-icon-caret-1-w { - background-position: -96px 0; -} - -.ui-icon-caret-1-nw { - background-position: -112px 0; -} - -.ui-icon-caret-2-n-s { - background-position: -128px 0; -} - -.ui-icon-caret-2-e-w { - background-position: -144px 0; -} - -.ui-icon-triangle-1-n { - background-position: 0 -16px; -} - -.ui-icon-triangle-1-ne { - background-position: -16px -16px; -} - -.ui-icon-triangle-1-e { - background-position: -32px -16px; -} - -.ui-icon-triangle-1-se { - background-position: -48px -16px; -} - -.ui-icon-triangle-1-s { - background-position: -65px -16px; -} - -.ui-icon-triangle-1-sw { - background-position: -80px -16px; -} - -.ui-icon-triangle-1-w { - background-position: -96px -16px; -} - -.ui-icon-triangle-1-nw { - background-position: -112px -16px; -} - -.ui-icon-triangle-2-n-s { - background-position: -128px -16px; -} - -.ui-icon-triangle-2-e-w { - background-position: -144px -16px; -} - -.ui-icon-arrow-1-n { - background-position: 0 -32px; -} - -.ui-icon-arrow-1-ne { - background-position: -16px -32px; -} - -.ui-icon-arrow-1-e { - background-position: -32px -32px; -} - -.ui-icon-arrow-1-se { - background-position: -48px -32px; -} - -.ui-icon-arrow-1-s { - background-position: -65px -32px; -} - -.ui-icon-arrow-1-sw { - background-position: -80px -32px; -} - -.ui-icon-arrow-1-w { - background-position: -96px -32px; -} - -.ui-icon-arrow-1-nw { - background-position: -112px -32px; -} - -.ui-icon-arrow-2-n-s { - background-position: -128px -32px; -} - -.ui-icon-arrow-2-ne-sw { - background-position: -144px -32px; -} - -.ui-icon-arrow-2-e-w { - background-position: -160px -32px; -} - -.ui-icon-arrow-2-se-nw { - background-position: -176px -32px; -} - -.ui-icon-arrowstop-1-n { - background-position: -192px -32px; -} - -.ui-icon-arrowstop-1-e { - background-position: -208px -32px; -} - -.ui-icon-arrowstop-1-s { - background-position: -224px -32px; -} - -.ui-icon-arrowstop-1-w { - background-position: -240px -32px; -} - -.ui-icon-arrowthick-1-n { - background-position: 1px -48px; -} - -.ui-icon-arrowthick-1-ne { - background-position: -16px -48px; -} - -.ui-icon-arrowthick-1-e { - background-position: -32px -48px; -} - -.ui-icon-arrowthick-1-se { - background-position: -48px -48px; -} - -.ui-icon-arrowthick-1-s { - background-position: -64px -48px; -} - -.ui-icon-arrowthick-1-sw { - background-position: -80px -48px; -} - -.ui-icon-arrowthick-1-w { - background-position: -96px -48px; -} - -.ui-icon-arrowthick-1-nw { - background-position: -112px -48px; -} - -.ui-icon-arrowthick-2-n-s { - background-position: -128px -48px; -} - -.ui-icon-arrowthick-2-ne-sw { - background-position: -144px -48px; -} - -.ui-icon-arrowthick-2-e-w { - background-position: -160px -48px; -} - -.ui-icon-arrowthick-2-se-nw { - background-position: -176px -48px; -} - -.ui-icon-arrowthickstop-1-n { - background-position: -192px -48px; -} - -.ui-icon-arrowthickstop-1-e { - background-position: -208px -48px; -} - -.ui-icon-arrowthickstop-1-s { - background-position: -224px -48px; -} - -.ui-icon-arrowthickstop-1-w { - background-position: -240px -48px; -} - -.ui-icon-arrowreturnthick-1-w { - background-position: 0 -64px; -} - -.ui-icon-arrowreturnthick-1-n { - background-position: -16px -64px; -} - -.ui-icon-arrowreturnthick-1-e { - background-position: -32px -64px; -} - -.ui-icon-arrowreturnthick-1-s { - background-position: -48px -64px; -} - -.ui-icon-arrowreturn-1-w { - background-position: -64px -64px; -} - -.ui-icon-arrowreturn-1-n { - background-position: -80px -64px; -} - -.ui-icon-arrowreturn-1-e { - background-position: -96px -64px; -} - -.ui-icon-arrowreturn-1-s { - background-position: -112px -64px; -} - -.ui-icon-arrowrefresh-1-w { - background-position: -128px -64px; -} - -.ui-icon-arrowrefresh-1-n { - background-position: -144px -64px; -} - -.ui-icon-arrowrefresh-1-e { - background-position: -160px -64px; -} - -.ui-icon-arrowrefresh-1-s { - background-position: -176px -64px; -} - -.ui-icon-arrow-4 { - background-position: 0 -80px; -} - -.ui-icon-arrow-4-diag { - background-position: -16px -80px; -} - -.ui-icon-extlink { - background-position: -32px -80px; -} - -.ui-icon-newwin { - background-position: -48px -80px; -} - -.ui-icon-refresh { - background-position: -64px -80px; -} - -.ui-icon-shuffle { - background-position: -80px -80px; -} - -.ui-icon-transfer-e-w { - background-position: -96px -80px; -} - -.ui-icon-transferthick-e-w { - background-position: -112px -80px; -} - -.ui-icon-folder-collapsed { - background-position: 0 -96px; -} - -.ui-icon-folder-open { - background-position: -16px -96px; -} - -.ui-icon-document { - background-position: -32px -96px; -} - -.ui-icon-document-b { - background-position: -48px -96px; -} - -.ui-icon-note { - background-position: -64px -96px; -} - -.ui-icon-mail-closed { - background-position: -80px -96px; -} - -.ui-icon-mail-open { - background-position: -96px -96px; -} - -.ui-icon-suitcase { - background-position: -112px -96px; -} - -.ui-icon-comment { - background-position: -128px -96px; -} - -.ui-icon-person { - background-position: -144px -96px; -} - -.ui-icon-print { - background-position: -160px -96px; -} - -.ui-icon-trash { - background-position: -176px -96px; -} - -.ui-icon-locked { - background-position: -192px -96px; -} - -.ui-icon-unlocked { - background-position: -208px -96px; -} - -.ui-icon-bookmark { - background-position: -224px -96px; -} - -.ui-icon-tag { - background-position: -240px -96px; -} - -.ui-icon-home { - background-position: 0 -112px; -} - -.ui-icon-flag { - background-position: -16px -112px; -} - -.ui-icon-calendar { - background-position: -32px -112px; -} - -.ui-icon-cart { - background-position: -48px -112px; -} - -.ui-icon-pencil { - background-position: -64px -112px; -} - -.ui-icon-clock { - background-position: -80px -112px; -} - -.ui-icon-disk { - background-position: -96px -112px; -} - -.ui-icon-calculator { - background-position: -112px -112px; -} - -.ui-icon-zoomin { - background-position: -128px -112px; -} - -.ui-icon-zoomout { - background-position: -144px -112px; -} - -.ui-icon-search { - background-position: -160px -112px; -} - -.ui-icon-wrench { - background-position: -176px -112px; -} - -.ui-icon-gear { - background-position: -192px -112px; -} - -.ui-icon-heart { - background-position: -208px -112px; -} - -.ui-icon-star { - background-position: -224px -112px; -} - -.ui-icon-link { - background-position: -240px -112px; -} - -.ui-icon-cancel { - background-position: 0 -128px; -} - -.ui-icon-plus { - background-position: -16px -128px; -} - -.ui-icon-plusthick { - background-position: -32px -128px; -} - -.ui-icon-minus { - background-position: -48px -128px; -} - -.ui-icon-minusthick { - background-position: -64px -128px; -} - -.ui-icon-close { - background-position: -80px -128px; -} - -.ui-icon-closethick { - background-position: -96px -128px; -} - -.ui-icon-key { - background-position: -112px -128px; -} - -.ui-icon-lightbulb { - background-position: -128px -128px; -} - -.ui-icon-scissors { - background-position: -144px -128px; -} - -.ui-icon-clipboard { - background-position: -160px -128px; -} - -.ui-icon-copy { - background-position: -176px -128px; -} - -.ui-icon-contact { - background-position: -192px -128px; -} - -.ui-icon-image { - background-position: -208px -128px; -} - -.ui-icon-video { - background-position: -224px -128px; -} - -.ui-icon-script { - background-position: -240px -128px; -} - -.ui-icon-alert { - background-position: 0 -144px; -} - -.ui-icon-info { - background-position: -16px -144px; -} - -.ui-icon-notice { - background-position: -32px -144px; -} - -.ui-icon-help { - background-position: -48px -144px; -} - -.ui-icon-check { - background-position: -64px -144px; -} - -.ui-icon-bullet { - background-position: -80px -144px; -} - -.ui-icon-radio-on { - background-position: -96px -144px; -} - -.ui-icon-radio-off { - background-position: -112px -144px; -} - -.ui-icon-pin-w { - background-position: -128px -144px; -} - -.ui-icon-pin-s { - background-position: -144px -144px; -} - -.ui-icon-play { - background-position: 0 -160px; -} - -.ui-icon-pause { - background-position: -16px -160px; -} - -.ui-icon-seek-next { - background-position: -32px -160px; -} - -.ui-icon-seek-prev { - background-position: -48px -160px; -} - -.ui-icon-seek-end { - background-position: -64px -160px; -} - -.ui-icon-seek-start { - background-position: -80px -160px; -} - -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { - background-position: -80px -160px; -} - -.ui-icon-stop { - background-position: -96px -160px; -} - -.ui-icon-eject { - background-position: -112px -160px; -} - -.ui-icon-volume-off { - background-position: -128px -160px; -} - -.ui-icon-volume-on { - background-position: -144px -160px; -} - -.ui-icon-power { - background-position: 0 -176px; -} - -.ui-icon-signal-diag { - background-position: -16px -176px; -} - -.ui-icon-signal { - background-position: -32px -176px; -} - -.ui-icon-battery-0 { - background-position: -48px -176px; -} - -.ui-icon-battery-1 { - background-position: -64px -176px; -} - -.ui-icon-battery-2 { - background-position: -80px -176px; -} - -.ui-icon-battery-3 { - background-position: -96px -176px; -} - -.ui-icon-circle-plus { - background-position: 0 -192px; -} - -.ui-icon-circle-minus { - background-position: -16px -192px; -} - -.ui-icon-circle-close { - background-position: -32px -192px; -} - -.ui-icon-circle-triangle-e { - background-position: -48px -192px; -} - -.ui-icon-circle-triangle-s { - background-position: -64px -192px; -} - -.ui-icon-circle-triangle-w { - background-position: -80px -192px; -} - -.ui-icon-circle-triangle-n { - background-position: -96px -192px; -} - -.ui-icon-circle-arrow-e { - background-position: -112px -192px; -} - -.ui-icon-circle-arrow-s { - background-position: -128px -192px; -} - -.ui-icon-circle-arrow-w { - background-position: -144px -192px; -} - -.ui-icon-circle-arrow-n { - background-position: -160px -192px; -} - -.ui-icon-circle-zoomin { - background-position: -176px -192px; -} - -.ui-icon-circle-zoomout { - background-position: -192px -192px; -} - -.ui-icon-circle-check { - background-position: -208px -192px; -} - -.ui-icon-circlesmall-plus { - background-position: 0 -208px; -} - -.ui-icon-circlesmall-minus { - background-position: -16px -208px; -} - -.ui-icon-circlesmall-close { - background-position: -32px -208px; -} - -.ui-icon-squaresmall-plus { - background-position: -48px -208px; -} - -.ui-icon-squaresmall-minus { - background-position: -64px -208px; -} - -.ui-icon-squaresmall-close { - background-position: -80px -208px; -} - -.ui-icon-grip-dotted-vertical { - background-position: 0 -224px; -} - -.ui-icon-grip-dotted-horizontal { - background-position: -16px -224px; -} - -.ui-icon-grip-solid-vertical { - background-position: -32px -224px; -} - -.ui-icon-grip-solid-horizontal { - background-position: -48px -224px; -} - -.ui-icon-gripsmall-diagonal-se { - background-position: -64px -224px; -} - -.ui-icon-grip-diagonal-se { - background-position: -80px -224px; -} - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 6px; -} - -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 6px; -} - -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 6px; -} - -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 6px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa; - opacity: .3; - -ms-filter: "alpha(opacity=30)"; - /* support: IE8 */ -} - -.ui-widget-shadow { - -webkit-box-shadow: -8px -8px 8px #aaaaaa; - box-shadow: -8px -8px 8px #aaaaaa; -} \ No newline at end of file diff --git a/public/theme/assets/css/login.css b/public/theme/assets/css/login.css deleted file mode 100644 index 1b20f2e..0000000 --- a/public/theme/assets/css/login.css +++ /dev/null @@ -1,60 +0,0 @@ -/* Container div */ -.container { - margin: auto; - max-width: 800px; -} - -/* Header */ -header { - /* background-color: #333; */ - color: white; - padding: 1rem; - text-align: center; -} - -/* Form */ -form { - margin: auto; - max-width: 800px; -} - -/* Fieldset */ -fieldset { - background-color: #f0f0f0; - padding: 1rem; -} - -/* Labels */ -label { - display: block; - margin-bottom: 0.5rem; -} - -/* Inputs */ -input[type="text"], -input[type="password"] { - background-color: #f8f8f8; - border: none; - border-radius: 5px; - box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); - color: #333; - padding: 0.25rem; -} - -/* Buttons */ -button { - background-color: #4CAF50; - border: none; - border-radius: 5px; - box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); - color: white; - padding: 0.25rem; -} - -/* Footer */ -footer { - background-color: #333; - color: white; - padding: 1rem; - text-align: center; -} \ No newline at end of file diff --git a/public/theme/assets/css/main.css b/public/theme/assets/css/main.css deleted file mode 100644 index b5f908b..0000000 --- a/public/theme/assets/css/main.css +++ /dev/null @@ -1,3668 +0,0 @@ -@import url(fontawesome-all.min.css); -@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,400italic,600italic|Roboto+Slab:400,700"); - -/* - Editorial by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -*/ -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav { - display: block; - width: 250px; - margin-bottom: 1em; -} - -body { - line-height: 1; -} - -ol, -ul { - list-style: none; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; - content: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -body { - -webkit-text-size-adjust: none; -} - -mark { - background-color: transparent; - color: inherit; -} - -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -input, -select, -textarea { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; -} - -/* Basic */ -@-ms-viewport { - width: device-width; -} - -body { - -ms-overflow-style: scrollbar; -} - -@media screen and (max-width: 480px) { - - html, - body { - min-width: 320px; - } -} - -html { - box-sizing: border-box; -} - -*, -*:before, -*:after { - box-sizing: inherit; -} - -body { - background: #ffffff; -} - -body.is-preload *, -body.is-preload *:before, -body.is-preload *:after, -body.is-resizing *, -body.is-resizing *:before, -body.is-resizing *:after { - -moz-animation: none !important; - -webkit-animation: none !important; - -ms-animation: none !important; - animation: none !important; - -moz-transition: none !important; - -webkit-transition: none !important; - -ms-transition: none !important; - transition: none !important; -} - -/* Type */ -body, -input, -select, -textarea { - color: #7f888f; - font-family: "Open Sans", sans-serif; - font-size: 13pt; - font-weight: 400; - line-height: 1.65; -} - -@media screen and (max-width: 1680px) { - - body, - input, - select, - textarea { - font-size: 11pt; - } -} - -@media screen and (max-width: 1280px) { - - body, - input, - select, - textarea { - font-size: 10pt; - } -} - -@media screen and (max-width: 360px) { - - body, - input, - select, - textarea { - font-size: 9pt; - } -} - -a { - -moz-transition: color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; - -webkit-transition: color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; - -ms-transition: color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; - transition: color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; - border-bottom: dotted 1px; - color: #f56a6a; - text-decoration: none; -} - -a:hover { - border-bottom-color: #f56a6a; - color: #f56a6a !important; -} - -a:hover strong { - color: inherit; -} - -strong, -b { - color: #3d4449; - font-weight: 600; -} - -em, -i { - font-style: italic; -} - -p { - margin: 0 0 2em 0; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - color: #3d4449; - font-family: "Roboto Slab", serif; - font-weight: 700; - line-height: 1.5; - margin: 0 0 1em 0; -} - -h1 a, -h2 a, -h3 a, -h4 a, -h5 a, -h6 a { - color: inherit; - text-decoration: none; - border-bottom: 0; -} - -h1 { - font-size: 4em; - margin: 0 0 0.5em 0; - line-height: 1.3; -} - -h2 { - font-size: 1.5em; -} - -h3 { - font-size: 1.25em; -} - -h4 { - font-size: 1.1em; -} - -h5 { - font-size: 0.9em; -} - -h6 { - font-size: 0.7em; -} - -@media screen and (max-width: 1680px) { - h1 { - font-size: 2em; - } -} - -@media screen and (max-width: 980px) { - h1 { - font-size: 3.25em; - } -} - -@media screen and (max-width: 736px) { - h1 { - font-size: 2em; - line-height: 1.4; - } - - h2 { - font-size: 1.5em; - } -} - -sub { - font-size: 0.8em; - position: relative; - top: 0.5em; -} - -sup { - font-size: 0.8em; - position: relative; - top: -0.5em; -} - -blockquote { - border-left: solid 3px rgba(210, 215, 217, 0.75); - font-style: italic; - margin: 0 0 2em 0; - padding: 0.5em 0 0.5em 2em; -} - -code { - background: rgba(230, 235, 237, 0.25); - border-radius: 0.375em; - border: solid 1px rgba(210, 215, 217, 0.75); - font-family: "Courier New", monospace; - font-size: 0.9em; - margin: 0 0.25em; - padding: 0.25em 0.65em; -} - -pre { - -webkit-overflow-scrolling: touch; - font-family: "Courier New", monospace; - font-size: 0.9em; - margin: 0 0 2em 0; -} - -pre code { - display: block; - line-height: 1.75; - padding: 1em 1.5em; - overflow-x: auto; -} - -hr { - border: 0; - border-bottom: solid 1px rgba(210, 215, 217, 0.75); - margin: 2em 0; -} - -hr.major { - margin: 3em 0; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* Row */ -.row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; -} - -.row>* { - box-sizing: border-box; -} - -.row.gtr-uniform>*> :last-child { - margin-bottom: 0; -} - -.row.aln-left { - justify-content: flex-start; -} - -.row.aln-center { - justify-content: center; -} - -.row.aln-right { - justify-content: flex-end; -} - -.row.aln-top { - align-items: flex-start; -} - -.row.aln-middle { - align-items: center; -} - -.row.aln-bottom { - align-items: flex-end; -} - -.row>.imp { - order: -1; -} - -.row>.col-1 { - width: 8.33333%; -} - -.row>.off-1 { - margin-left: 8.33333%; -} - -.row>.col-2 { - width: 16.66667%; -} - -.row>.off-2 { - margin-left: 16.66667%; -} - -.row>.col-3 { - width: 25%; -} - -.row>.off-3 { - margin-left: 25%; -} - -.row>.col-4 { - width: 33.33333%; -} - -.row>.off-4 { - margin-left: 33.33333%; -} - -.row>.col-5 { - width: 41.66667%; -} - -.row>.off-5 { - margin-left: 41.66667%; -} - -.row>.col-6 { - width: 50%; -} - -.row>.off-6 { - margin-left: 50%; -} - -.row>.col-7 { - width: 58.33333%; -} - -.row>.off-7 { - margin-left: 58.33333%; -} - -.row>.col-8 { - width: 66.66667%; -} - -.row>.off-8 { - margin-left: 66.66667%; -} - -.row>.col-9 { - width: 75%; -} - -.row>.off-9 { - margin-left: 75%; -} - -.row>.col-10 { - width: 83.33333%; -} - -.row>.off-10 { - margin-left: 83.33333%; -} - -.row>.col-11 { - width: 91.66667%; -} - -.row>.off-11 { - margin-left: 91.66667%; -} - -.row>.col-12 { - width: 100%; -} - -.row>.off-12 { - margin-left: 100%; -} - -.row.gtr-0 { - margin-top: 0; - margin-left: 0em; -} - -.row.gtr-0>* { - padding: 0 0 0 0em; -} - -.row.gtr-0.gtr-uniform { - margin-top: 0em; -} - -.row.gtr-0.gtr-uniform>* { - padding-top: 0em; -} - -.row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; -} - -.row.gtr-25>* { - padding: 0 0 0 0.375em; -} - -.row.gtr-25.gtr-uniform { - margin-top: -0.375em; -} - -.row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; -} - -.row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; -} - -.row.gtr-50>* { - padding: 0 0 0 0.75em; -} - -.row.gtr-50.gtr-uniform { - margin-top: -0.75em; -} - -.row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; -} - -.row { - margin-top: 0; - margin-left: -1.5em; -} - -.row>* { - padding: 0 0 0 1.5em; -} - -.row.gtr-uniform { - margin-top: -1.5em; -} - -.row.gtr-uniform>* { - padding-top: 1.5em; -} - -.row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; -} - -.row.gtr-150>* { - padding: 0 0 0 2.25em; -} - -.row.gtr-150.gtr-uniform { - margin-top: -2.25em; -} - -.row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; -} - -.row.gtr-200 { - margin-top: 0; - margin-left: -3em; -} - -.row.gtr-200>* { - padding: 0 0 0 3em; -} - -.row.gtr-200.gtr-uniform { - margin-top: -3em; -} - -.row.gtr-200.gtr-uniform>* { - padding-top: 3em; -} - -@media screen and (max-width: 1680px) { - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row>* { - box-sizing: border-box; - } - - .row.gtr-uniform>*> :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row>.imp-xlarge { - order: -1; - } - - .row>.col-1-xlarge { - width: 8.33333%; - } - - .row>.off-1-xlarge { - margin-left: 8.33333%; - } - - .row>.col-2-xlarge { - width: 16.66667%; - } - - .row>.off-2-xlarge { - margin-left: 16.66667%; - } - - .row>.col-3-xlarge { - width: 25%; - } - - .row>.off-3-xlarge { - margin-left: 25%; - } - - .row>.col-4-xlarge { - width: 33.33333%; - } - - .row>.off-4-xlarge { - margin-left: 33.33333%; - } - - .row>.col-5-xlarge { - width: 41.66667%; - } - - .row>.off-5-xlarge { - margin-left: 41.66667%; - } - - .row>.col-6-xlarge { - width: 50%; - } - - .row>.off-6-xlarge { - margin-left: 50%; - } - - .row>.col-7-xlarge { - width: 58.33333%; - } - - .row>.off-7-xlarge { - margin-left: 58.33333%; - } - - .row>.col-8-xlarge { - width: 66.66667%; - } - - .row>.off-8-xlarge { - margin-left: 66.66667%; - } - - .row>.col-9-xlarge { - width: 75%; - } - - .row>.off-9-xlarge { - margin-left: 75%; - } - - .row>.col-10-xlarge { - width: 83.33333%; - } - - .row>.off-10-xlarge { - margin-left: 83.33333%; - } - - .row>.col-11-xlarge { - width: 91.66667%; - } - - .row>.off-11-xlarge { - margin-left: 91.66667%; - } - - .row>.col-12-xlarge { - width: 100%; - } - - .row>.off-12-xlarge { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0>* { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform>* { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25>* { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50>* { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row>* { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform>* { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150>* { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200>* { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform>* { - padding-top: 3em; - } -} - -@media screen and (max-width: 1280px) { - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row>* { - box-sizing: border-box; - } - - .row.gtr-uniform>*> :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row>.imp-large { - order: -1; - } - - .row>.col-1-large { - width: 8.33333%; - } - - .row>.off-1-large { - margin-left: 8.33333%; - } - - .row>.col-2-large { - width: 16.66667%; - } - - .row>.off-2-large { - margin-left: 16.66667%; - } - - .row>.col-3-large { - width: 25%; - } - - .row>.off-3-large { - margin-left: 25%; - } - - .row>.col-4-large { - width: 33.33333%; - } - - .row>.off-4-large { - margin-left: 33.33333%; - } - - .row>.col-5-large { - width: 41.66667%; - } - - .row>.off-5-large { - margin-left: 41.66667%; - } - - .row>.col-6-large { - width: 50%; - } - - .row>.off-6-large { - margin-left: 50%; - } - - .row>.col-7-large { - width: 58.33333%; - } - - .row>.off-7-large { - margin-left: 58.33333%; - } - - .row>.col-8-large { - width: 66.66667%; - } - - .row>.off-8-large { - margin-left: 66.66667%; - } - - .row>.col-9-large { - width: 75%; - } - - .row>.off-9-large { - margin-left: 75%; - } - - .row>.col-10-large { - width: 83.33333%; - } - - .row>.off-10-large { - margin-left: 83.33333%; - } - - .row>.col-11-large { - width: 91.66667%; - } - - .row>.off-11-large { - margin-left: 91.66667%; - } - - .row>.col-12-large { - width: 100%; - } - - .row>.off-12-large { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0>* { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform>* { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25>* { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50>* { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row>* { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform>* { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150>* { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200>* { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform>* { - padding-top: 3em; - } -} - -@media screen and (max-width: 980px) { - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row>* { - box-sizing: border-box; - } - - .row.gtr-uniform>*> :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row>.imp-medium { - order: -1; - } - - .row>.col-1-medium { - width: 8.33333%; - } - - .row>.off-1-medium { - margin-left: 8.33333%; - } - - .row>.col-2-medium { - width: 16.66667%; - } - - .row>.off-2-medium { - margin-left: 16.66667%; - } - - .row>.col-3-medium { - width: 25%; - } - - .row>.off-3-medium { - margin-left: 25%; - } - - .row>.col-4-medium { - width: 33.33333%; - } - - .row>.off-4-medium { - margin-left: 33.33333%; - } - - .row>.col-5-medium { - width: 41.66667%; - } - - .row>.off-5-medium { - margin-left: 41.66667%; - } - - .row>.col-6-medium { - width: 50%; - } - - .row>.off-6-medium { - margin-left: 50%; - } - - .row>.col-7-medium { - width: 58.33333%; - } - - .row>.off-7-medium { - margin-left: 58.33333%; - } - - .row>.col-8-medium { - width: 66.66667%; - } - - .row>.off-8-medium { - margin-left: 66.66667%; - } - - .row>.col-9-medium { - width: 75%; - } - - .row>.off-9-medium { - margin-left: 75%; - } - - .row>.col-10-medium { - width: 83.33333%; - } - - .row>.off-10-medium { - margin-left: 83.33333%; - } - - .row>.col-11-medium { - width: 91.66667%; - } - - .row>.off-11-medium { - margin-left: 91.66667%; - } - - .row>.col-12-medium { - width: 100%; - } - - .row>.off-12-medium { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0>* { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform>* { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25>* { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50>* { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row>* { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform>* { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150>* { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200>* { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform>* { - padding-top: 3em; - } -} - -@media screen and (max-width: 736px) { - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row>* { - box-sizing: border-box; - } - - .row.gtr-uniform>*> :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row>.imp-small { - order: -1; - } - - .row>.col-1-small { - width: 8.33333%; - } - - .row>.off-1-small { - margin-left: 8.33333%; - } - - .row>.col-2-small { - width: 16.66667%; - } - - .row>.off-2-small { - margin-left: 16.66667%; - } - - .row>.col-3-small { - width: 25%; - } - - .row>.off-3-small { - margin-left: 25%; - } - - .row>.col-4-small { - width: 33.33333%; - } - - .row>.off-4-small { - margin-left: 33.33333%; - } - - .row>.col-5-small { - width: 41.66667%; - } - - .row>.off-5-small { - margin-left: 41.66667%; - } - - .row>.col-6-small { - width: 50%; - } - - .row>.off-6-small { - margin-left: 50%; - } - - .row>.col-7-small { - width: 58.33333%; - } - - .row>.off-7-small { - margin-left: 58.33333%; - } - - .row>.col-8-small { - width: 66.66667%; - } - - .row>.off-8-small { - margin-left: 66.66667%; - } - - .row>.col-9-small { - width: 75%; - } - - .row>.off-9-small { - margin-left: 75%; - } - - .row>.col-10-small { - width: 83.33333%; - } - - .row>.off-10-small { - margin-left: 83.33333%; - } - - .row>.col-11-small { - width: 91.66667%; - } - - .row>.off-11-small { - margin-left: 91.66667%; - } - - .row>.col-12-small { - width: 100%; - } - - .row>.off-12-small { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0>* { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform>* { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25>* { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50>* { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row>* { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform>* { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150>* { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200>* { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform>* { - padding-top: 3em; - } -} - -@media screen and (max-width: 480px) { - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row>* { - box-sizing: border-box; - } - - .row.gtr-uniform>*> :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row>.imp-xsmall { - order: -1; - } - - .row>.col-1-xsmall { - width: 8.33333%; - } - - .row>.off-1-xsmall { - margin-left: 8.33333%; - } - - .row>.col-2-xsmall { - width: 16.66667%; - } - - .row>.off-2-xsmall { - margin-left: 16.66667%; - } - - .row>.col-3-xsmall { - width: 25%; - } - - .row>.off-3-xsmall { - margin-left: 25%; - } - - .row>.col-4-xsmall { - width: 33.33333%; - } - - .row>.off-4-xsmall { - margin-left: 33.33333%; - } - - .row>.col-5-xsmall { - width: 41.66667%; - } - - .row>.off-5-xsmall { - margin-left: 41.66667%; - } - - .row>.col-6-xsmall { - width: 50%; - } - - .row>.off-6-xsmall { - margin-left: 50%; - } - - .row>.col-7-xsmall { - width: 58.33333%; - } - - .row>.off-7-xsmall { - margin-left: 58.33333%; - } - - .row>.col-8-xsmall { - width: 66.66667%; - } - - .row>.off-8-xsmall { - margin-left: 66.66667%; - } - - .row>.col-9-xsmall { - width: 75%; - } - - .row>.off-9-xsmall { - margin-left: 75%; - } - - .row>.col-10-xsmall { - width: 83.33333%; - } - - .row>.off-10-xsmall { - margin-left: 83.33333%; - } - - .row>.col-11-xsmall { - width: 91.66667%; - } - - .row>.off-11-xsmall { - margin-left: 91.66667%; - } - - .row>.col-12-xsmall { - width: 100%; - } - - .row>.off-12-xsmall { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0>* { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform>* { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25>* { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform>* { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50>* { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform>* { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row>* { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform>* { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150>* { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform>* { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200>* { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform>* { - padding-top: 3em; - } -} - -/* Section/Article */ -section.special, -article.special { - text-align: center; -} - -header p { - font-family: "Roboto Slab", serif; - font-size: 1em; - font-weight: 400; - letter-spacing: 0.075em; - margin-top: -0.5em; - text-transform: uppercase; -} - -header.major { - /*> :last-child {*/ - border-bottom: solid 3px #f56a6a; - display: inline-block; - margin: 0 0 10px 0; - padding: 0 0.75em 0.5em 0; -} - -header.main> :last-child { - margin: 0 0 1em 0; -} - -/* Form */ -form { - margin: 0 0 2em 0; -} - -label { - color: #3d4449; - display: block; - font-size: 0.9em; - font-weight: 600; - margin: 0 0 1em 0; -} - -input[type="text"], -input[type="password"], -input[type="email"], -input[type="tel"], -input[type="search"], -input[type="url"], -input[type="number"], -select, -textarea { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - background: #ffffff; - border-radius: 0.375em; - border: none; - border: solid 1px rgba(210, 215, 217, 0.75); - color: inherit; - display: block; - outline: 0; - padding: 0 1em; - text-decoration: none; - width: 100%; -} - -input[type="text"]:invalid, -input[type="password"]:invalid, -input[type="email"]:invalid, -input[type="tel"]:invalid, -input[type="search"]:invalid, -input[type="url"]:invalid, -select:invalid, -textarea:invalid { - box-shadow: none; -} - -input[type="text"]:focus, -input[type="password"]:focus, -input[type="email"]:focus, -input[type="tel"]:focus, -input[type="search"]:focus, -input[type="url"]:focus, -select:focus, -textarea:focus { - border-color: #f56a6a; - box-shadow: 0 0 0 1px #f56a6a; -} - -select { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='rgba(210, 215, 217, 0.75)' /%3E%3C/svg%3E"); - background-size: 1.25em; - background-repeat: no-repeat; - background-position: calc(100% - 1em) center; - height: 2em; - padding-right: 2.75em; - text-overflow: ellipsis; -} - -select option { - color: #3d4449; - background: #ffffff; -} - -select:focus::-ms-value { - background-color: transparent; -} - -select::-ms-expand { - display: none; -} - -input[type="text"], -input[type="password"], -input[type="email"], -input[type="tel"], -input[type="search"], -input[type="url"], -input[type="date"], -input[type="number"], -select { - height: 1.5em; -} - -textarea { - padding: 0.75em 1em; -} - -input[type="checkbox"], -input[type="radio"] { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - display: block; - float: left; - margin-right: -2em; - opacity: 0; - width: 1em; - z-index: -1; -} - -input[type="checkbox"]+label, -input[type="radio"]+label { - text-decoration: none; - color: #7f888f; - cursor: pointer; - display: inline-block; - font-size: 1em; - font-weight: 400; - padding-left: 2.4em; - padding-right: 0.75em; - position: relative; -} - -input[type="checkbox"]+label:before, -input[type="radio"]+label:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 900; -} - -input[type="checkbox"]+label:before, -input[type="radio"]+label:before { - background: #ffffff; - border-radius: 0.375em; - border: solid 1px rgba(210, 215, 217, 0.75); - content: ''; - display: inline-block; - font-size: 0.8em; - height: 2.0625em; - left: 0; - line-height: 2.0625em; - position: absolute; - text-align: center; - top: 0; - width: 2.0625em; -} - -input[type="checkbox"]:checked+label:before, -input[type="radio"]:checked+label:before { - background: #3d4449; - border-color: #3d4449; - color: #ffffff; - content: '\f00c'; -} - -input[type="checkbox"]:focus+label:before, -input[type="radio"]:focus+label:before { - border-color: #f56a6a; - box-shadow: 0 0 0 1px #f56a6a; -} - -input[type="checkbox"]+label:before { - border-radius: 0.375em; -} - -input[type="radio"]+label:before { - border-radius: 100%; -} - -::-webkit-input-placeholder { - color: #9fa3a6 !important; - opacity: 1.0; -} - -:-moz-placeholder { - color: #9fa3a6 !important; - opacity: 1.0; -} - -::-moz-placeholder { - color: #9fa3a6 !important; - opacity: 1.0; -} - -:-ms-input-placeholder { - color: #9fa3a6 !important; - opacity: 1.0; -} - -/* Box */ -.box { - border-radius: 0.375em; - border: solid 1px rgba(210, 215, 217, 0.75); - margin-bottom: 2em; - padding: 1.5em; -} - -.box> :last-child, -.box> :last-child> :last-child, -.box> :last-child> :last-child> :last-child { - margin-bottom: 0; -} - -.box.alt { - border: 0; - border-radius: 0; - padding: 0; -} - -/* Icon */ -.icon { - text-decoration: none; - border-bottom: none; - position: relative; -} - -.icon:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 400; -} - -.icon>.label { - display: none; -} - -.icon:before { - line-height: inherit; -} - -.icon.solid:before { - font-weight: 900; -} - -.icon.brands:before { - font-family: 'Font Awesome 5 Brands'; -} - -/* Image */ -.image { - border-radius: 0.375em; - border: 0; - display: inline-block; - position: relative; -} - -.image img { - border-radius: 0.375em; - display: block; -} - -.image.left, -.image.right { - max-width: 40%; -} - -.image.left img, -.image.right img { - width: 100%; -} - -.image.left { - float: left; - padding: 0 1.5em 1em 0; - top: 0.25em; -} - -.image.right { - float: right; - padding: 0 0 1em 1.5em; - top: 0.25em; -} - -.image.fit { - display: block; - margin: 0 0 2em 0; - width: 100%; -} - -.image.fit img { - width: 100%; -} - -.image.main { - display: block; - margin: 0 0 3em 0; - width: 100%; -} - -.image.main img { - width: 100%; -} - -a.image { - overflow: hidden; -} - -a.image img { - -moz-transition: -moz-transform 0.2s ease; - -webkit-transition: -webkit-transform 0.2s ease; - -ms-transition: -ms-transform 0.2s ease; - transition: transform 0.2s ease; -} - -a.image:hover img { - -moz-transform: scale(1.075); - -webkit-transform: scale(1.075); - -ms-transform: scale(1.075); - transform: scale(1.075); -} - -/* List */ -ol { - list-style: decimal; - margin: 0 0 2em 0; -} - -ol li { - padding-left: 0.25em; -} - -ul { - list-style: disc; - margin: 0 0 2em 0; -} - -ul.alt { - list-style: none; - padding-left: 0; -} - -ul.alt li { - border-top: solid 1px rgba(210, 215, 217, 0.75); - padding: 0.5em 0; -} - -ul.alt li:first-child { - border-top: 0; - padding-top: 0; -} - -dl { - margin: 0 0 2em 0; -} - -dl dt { - display: block; - font-weight: 600; - margin: 0 0 1em 0; -} - -dl dd { - margin-left: 2em; -} - -/* Actions */ -ul.actions { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - cursor: default; - list-style: none; - margin-left: -1em; - padding-left: 0; -} - -ul.actions li { - padding: 0 0 0 1em; - vertical-align: middle; -} - -ul.actions.special { - -moz-justify-content: center; - -webkit-justify-content: center; - -ms-justify-content: center; - justify-content: center; - width: 100%; - margin-left: 0; -} - -ul.actions.special li:first-child { - padding-left: 0; -} - -ul.actions.stacked { - -moz-flex-direction: column; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-left: 0; -} - -ul.actions.stacked li { - padding: 1.3em 0 0 0; -} - -ul.actions.stacked li:first-child { - padding-top: 0; -} - -ul.actions.fit { - width: calc(100% + 1em); -} - -ul.actions.fit li { - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - width: 100%; -} - -ul.actions.fit li>* { - width: 100%; -} - -ul.actions.fit.stacked { - width: 100%; -} - -/* Icons */ -ul.icons { - cursor: default; - list-style: none; - padding-left: 0; -} - -ul.icons li { - display: inline-block; - padding: 0 1em 0 0; -} - -ul.icons li:last-child { - padding-right: 0; -} - -ul.icons li .icon { - color: inherit; -} - -ul.icons li .icon:before { - font-size: 1.25em; -} - -/* Contact */ -ul.contact { - list-style: none; - padding: 0; -} - -ul.contact li { - text-decoration: none; - border-top: solid 1px rgba(210, 215, 217, 0.75); - margin: 1.5em 0 0 0; - padding: 1.5em 0 0 3em; - position: relative; -} - -ul.contact li:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 400; -} - -ul.contact li:before { - color: #f56a6a; - display: inline-block; - font-size: 1.5em; - height: 1.125em; - left: 0; - line-height: 1.125em; - position: absolute; - text-align: center; - top: 1em; - width: 1.5em; -} - -ul.contact li:first-child { - border-top: 0; - margin-top: 0; - padding-top: 0; -} - -ul.contact li:first-child:before { - top: 0; -} - -ul.contact li a { - color: inherit; -} - -/* Pagination */ -ul.pagination { - cursor: default; - list-style: none; - padding-left: 0; -} - -ul.pagination li { - display: inline-block; - padding-left: 0; - vertical-align: middle; -} - -ul.pagination li>.page { - -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - border-bottom: 0; - border-radius: 0.375em; - display: inline-block; - font-size: 0.8em; - font-weight: 600; - height: 2em; - line-height: 2em; - margin: 0 0.125em; - min-width: 2em; - padding: 0 0.5em; - text-align: center; -} - -ul.pagination li>.page.active { - background-color: #f56a6a; - color: #ffffff !important; -} - -ul.pagination li>.page.active:hover { - background-color: #f67878; -} - -ul.pagination li>.page.active:active { - background-color: #f45c5c; -} - -ul.pagination li:first-child { - padding-right: 0.75em; -} - -ul.pagination li:last-child { - padding-left: 0.75em; -} - -@media screen and (max-width: 480px) { - ul.pagination li:nth-child(n+2):nth-last-child(n+2) { - display: none; - } - - ul.pagination li:first-child { - padding-right: 0; - } -} - -/* Table */ -.table-wrapper { - -webkit-overflow-scrolling: touch; - overflow-x: auto; -} - -table { - margin: 0 0 2em 0; - width: 100%; -} - -table tbody tr { - border: solid 1px rgba(210, 215, 217, 0.75); - border-left: 0; - border-right: 0; -} - -table tbody tr:nth-child(2n + 1) { - background-color: rgba(230, 235, 237, 0.25); -} - -table td { - padding: 0.75em 0.75em; -} - -table th { - color: #3d4449; - font-size: 0.9em; - font-weight: 600; - padding: 0 0.75em 0.75em 0.75em; - text-align: left; -} - -table thead { - border-bottom: solid 2px rgba(210, 215, 217, 0.75); -} - -table tfoot { - border-top: solid 2px rgba(210, 215, 217, 0.75); -} - -table.alt { - border-collapse: separate; -} - -table.alt tbody tr td { - border: solid 1px rgba(210, 215, 217, 0.75); - border-left-width: 0; - border-top-width: 0; -} - -table.alt tbody tr td:first-child { - border-left-width: 1px; -} - -table.alt tbody tr:first-child td { - border-top-width: 1px; -} - -table.alt thead { - border-bottom: 0; -} - -table.alt tfoot { - border-top: 0; -} - -/* Button */ -input[type="submit"], -input[type="reset"], -input[type="button"], -button, -.button { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - background-color: transparent; - border-radius: 0.375em; - border: 0; - box-shadow: inset 0 0 0 2px #f56a6a; - color: #f56a6a !important; - cursor: pointer; - display: inline-block; - font-family: "Roboto Slab", serif; - font-size: 0.8em; - font-weight: 700; - height: 3.5em; - letter-spacing: 0.075em; - line-height: 3.5em; - padding: 0 2.25em; - text-align: center; - text-decoration: none; - text-transform: uppercase; - white-space: nowrap; -} - -input[type="submit"]:hover, -input[type="reset"]:hover, -input[type="button"]:hover, -button:hover, -.button:hover { - background-color: rgba(245, 106, 106, 0.05); -} - -input[type="submit"]:active, -input[type="reset"]:active, -input[type="button"]:active, -button:active, -.button:active { - background-color: rgba(245, 106, 106, 0.15); -} - -input[type="submit"].icon:before, -input[type="reset"].icon:before, -input[type="button"].icon:before, -button.icon:before, -.button.icon:before { - margin-right: 0.5em; -} - -input[type="submit"].fit, -input[type="reset"].fit, -input[type="button"].fit, -button.fit, -.button.fit { - width: 100%; -} - -input[type="submit"].small, -input[type="reset"].small, -input[type="button"].small, -button.small, -.button.small { - font-size: 0.6em; -} - -input[type="submit"].large, -input[type="reset"].large, -input[type="button"].large, -button.large, -.button.large { - font-size: 1em; - height: 3.65em; - line-height: 3.65em; -} - -input[type="submit"].primary, -input[type="reset"].primary, -input[type="button"].primary, -button.primary, -.button.primary { - background-color: #f56a6a; - box-shadow: none; - color: #ffffff !important; -} - -input[type="submit"].primary:hover, -input[type="reset"].primary:hover, -input[type="button"].primary:hover, -button.primary:hover, -.button.primary:hover { - background-color: #f67878; -} - -input[type="submit"].primary:active, -input[type="reset"].primary:active, -input[type="button"].primary:active, -button.primary:active, -.button.primary:active { - background-color: #f45c5c; -} - -input[type="submit"].disabled, -input[type="submit"]:disabled, -input[type="reset"].disabled, -input[type="reset"]:disabled, -input[type="button"].disabled, -input[type="button"]:disabled, -button.disabled, -button:disabled, -.button.disabled, -.button:disabled { - pointer-events: none; - opacity: 0.25; -} - -/* Mini Posts */ -.mini-posts article { - border-top: solid 1px rgba(210, 215, 217, 0.75); - padding-top: 1em; -} - -.mini-posts article .image { - display: block; - margin: 0 0 1.5em 0; -} - -.mini-posts article .image img { - display: block; - width: 100%; -} - -.mini-posts article:first-child { - border-top: 0; - margin-top: 1em; - padding-top: 0; -} - -/* Features */ -.features { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin: 0 0 2em -3em; - width: calc(100% + 3em); -} - -.features article { - -moz-align-items: center; - -webkit-align-items: center; - -ms-align-items: center; - align-items: center; - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - margin: 0 0 3em 3em; - position: relative; - width: calc(50% - 3em); -} - -.features article:nth-child(2n - 1) { - margin-right: 1.5em; -} - -.features article:nth-child(2n) { - margin-left: 1.5em; -} - -.features article:nth-last-child(1), -.features article:nth-last-child(2) { - margin-bottom: 0; -} - -.features article .icon { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; - display: block; - height: 10em; - line-height: 10em; - margin: 0 2em 0 0; - text-align: center; - width: 10em; -} - -.features article .icon:before { - color: #f56a6a; - font-size: 2.75rem; - position: relative; - top: 0.05em; -} - -.features article .icon:after { - -moz-transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-radius: 0.25rem; - border: solid 2px rgba(210, 215, 217, 0.75); - content: ''; - display: block; - height: 7em; - left: 50%; - margin: -3.5em 0 0 -3.5em; - position: absolute; - top: 50%; - width: 7em; -} - -.features article .content { - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - width: 100%; -} - -.features article .content> :last-child { - margin-bottom: 0; -} - -@media screen and (max-width: 980px) { - .features { - margin: 0 0 2em 0; - width: 100%; - } - - .features article { - margin: 0 0 3em 0; - width: 100%; - } - - .features article:nth-child(2n - 1) { - margin-right: 0; - } - - .features article:nth-child(2n) { - margin-left: 0; - } - - .features article:nth-last-child(1), - .features article:nth-last-child(2) { - margin-bottom: 3em; - } - - .features article:last-child { - margin-bottom: 0; - } - - .features article .icon { - height: 8em; - line-height: 8em; - width: 8em; - } - - .features article .icon:before { - font-size: 2.25rem; - } - - .features article .icon:after { - height: 6em; - margin: -3em 0 0 -3em; - width: 6em; - } -} - -@media screen and (max-width: 480px) { - .features article { - -moz-flex-direction: column; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -moz-align-items: -moz-flex-start; - -webkit-align-items: -webkit-flex-start; - -ms-align-items: -ms-flex-start; - align-items: flex-start; - } - - .features article .icon { - height: 6em; - line-height: 6em; - margin: 0 0 1.5em 0; - width: 6em; - } - - .features article .icon:before { - font-size: 1.5rem; - } - - .features article .icon:after { - height: 4em; - margin: -2em 0 0 -2em; - width: 4em; - } -} - -@media screen and (max-width: 480px) { - .features article .icon:before { - font-size: 1.25rem; - } -} - -/* Posts */ -.posts { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin: 0 0 2em -6em; - width: calc(100% + 6em); -} - -.posts article { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - margin: 0 0 6em 6em; - position: relative; - width: calc(33.33333% - 6em); -} - -.posts article:before { - background: rgba(210, 215, 217, 0.75); - content: ''; - display: block; - height: calc(100% + 6em); - left: -3em; - position: absolute; - top: 0; - width: 1px; -} - -.posts article:after { - background: rgba(210, 215, 217, 0.75); - bottom: -3em; - content: ''; - display: block; - height: 1px; - position: absolute; - right: 0; - width: calc(100% + 6em); -} - -.posts article> :last-child { - margin-bottom: 0; -} - -.posts article .image { - display: block; - margin: 0 0 2em 0; -} - -.posts article .image img { - display: block; - width: 100%; -} - -@media screen and (min-width: 1681px) { - .posts article:nth-child(3n + 1):before { - display: none; - } - - .posts article:nth-child(3n + 1):after { - width: 100%; - } - - .posts article:nth-last-child(1), - .posts article:nth-last-child(2), - .posts article:nth-last-child(3) { - margin-bottom: 0; - } - - .posts article:nth-last-child(1):before, - .posts article:nth-last-child(2):before, - .posts article:nth-last-child(3):before { - height: 100%; - } - - .posts article:nth-last-child(1):after, - .posts article:nth-last-child(2):after, - .posts article:nth-last-child(3):after { - display: none; - } -} - -@media screen and (max-width: 1680px) { - .posts article { - width: calc(50% - 6em); - } - - .posts article:nth-last-child(3) { - margin-bottom: 6em; - } -} - -@media screen and (min-width: 481px) and (max-width: 1680px) { - .posts article:nth-child(2n + 1):before { - display: none; - } - - .posts article:nth-child(2n + 1):after { - width: 100%; - } - - .posts article:nth-last-child(1), - .posts article:nth-last-child(2) { - margin-bottom: 0; - } - - .posts article:nth-last-child(1):before, - .posts article:nth-last-child(2):before { - height: 100%; - } - - .posts article:nth-last-child(1):after, - .posts article:nth-last-child(2):after { - display: none; - } -} - -@media screen and (max-width: 736px) { - .posts { - margin: 0 0 2em -4.5em; - width: calc(100% + 4.5em); - } - - .posts article { - margin: 0 0 4.5em 4.5em; - width: calc(50% - 4.5em); - } - - .posts article:before { - height: calc(100% + 4.5em); - left: -2.25em; - } - - .posts article:after { - bottom: -2.25em; - width: calc(100% + 4.5em); - } - - .posts article:nth-last-child(3) { - margin-bottom: 4.5em; - } -} - -@media screen and (max-width: 480px) { - .posts { - margin: 0 0 2em 0; - width: 100%; - } - - .posts article { - margin: 0 0 4.5em 0; - width: 100%; - } - - .posts article:before { - display: none; - } - - .posts article:after { - width: 100%; - } - - .posts article:last-child { - margin-bottom: 0; - } - - .posts article:last-child:after { - display: none; - } -} - -/* Wrapper */ -#wrapper { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-flex-direction: row-reverse; - -webkit-flex-direction: row-reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse; - min-height: 100vh; -} - -/* Main */ -#main { - /* - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - */ - width: 100%; -} - -#main>.inner { - padding: 0 0.25em 0.1em 0.25em; - margin: 0 auto; - max-width: 110em; -} - -#main>.inner>section { - padding: 0.25em 0 0.25em 0; - border-top: solid 2px rgba(210, 215, 217, 0.75); -} - -#main>.inner>section:first-of-type { - border-top: 0 !important; -} - -@media screen and (max-width: 1680px) { - #main>.inner { - padding: 0 0 0 0; - } -} - -@media screen and (max-width: 1280px) { - #main>.inner { - padding: 0 0 0 0; - } -} - -@media screen and (max-width: 736px) { - #main>.inner { - padding: 0 2em 0.1em 2em; - } - - #main>.inner>section { - padding: 3em 0 1em 0; - } -} - -/* Sidebar */ -#search form { - text-decoration: none; - position: relative; -} - -#search form:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 900; -} - -#search form:before { - -moz-transform: scaleX(-1); - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1); - color: #7f888f; - content: '\f002'; - cursor: default; - display: block; - font-size: 1.5em; - height: 2em; - line-height: 2em; - opacity: 0.325; - position: absolute; - right: 0; - text-align: center; - top: 0; - width: 2em; -} - -#search form input[type="text"] { - padding-right: 2.75em; -} - -#sidebar { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; - -moz-transition: margin-left 0.5s ease, box-shadow 0.5s ease; - -webkit-transition: margin-left 0.5s ease, box-shadow 0.5s ease; - -ms-transition: margin-left 0.5s ease, box-shadow 0.5s ease; - transition: margin-left 0.5s ease, box-shadow 0.5s ease; - background-color: #f5f6f7; - font-size: 0.9em; - position: relative; - width: 26em; -} - -#sidebar h2 { - font-size: 1.38889em; -} - -#sidebar>.inner { - padding: 2.22em 2.22em 2.44em 2.22em; - position: relative; - width: 26em; -} - -#sidebar>.inner>* { - border-bottom: solid 2px rgba(210, 215, 217, 0.75); - margin: 0 0 3.5em 0; - /*padding: 0 0 3.5em 0;*/ -} - -#sidebar>.inner>*> :last-child { - margin-bottom: 0; -} - -#sidebar>.inner>*:last-child { - border-bottom: 0; - margin-bottom: 0; - padding-bottom: 0; -} - -#sidebar>.inner>.alt { - background-color: #eff1f2; - border-bottom: 0; - margin: -2.22em -2.33em 1.0em -2.22em; - padding: 2.22em; - width: calc(100% + 4.44em); -} - -#sidebar .toggle { - text-decoration: none; - -moz-transition: left 0.5s ease; - -webkit-transition: left 0.5s ease; - -ms-transition: left 0.5s ease; - transition: left 0.5s ease; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - border: 0; - display: block; - height: 4.5em; - left: 26em; - line-height: 4.5em; - outline: 0; - overflow: hidden; - position: absolute; - text-align: center; - text-indent: -15em; - white-space: nowrap; - top: 0; - width: 6em; - z-index: 10000; -} - -#sidebar .toggle:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 900; -} - -#sidebar .toggle:before { - content: '\f0c9'; - font-size: 2rem; - height: inherit; - left: 0; - line-height: inherit; - position: absolute; - text-indent: 0; - top: 0; - width: inherit; -} - -#sidebar.inactive { - margin-left: -26em; -} - -@media screen and (max-width: 1680px) { - #sidebar { - width: 24em; - } - - #sidebar>.inner { - padding: 1.66667em 1.66667em 1.33333em 1.66667em; - width: 24em; - } - - #sidebar>.inner>.alt { - margin: 0; - padding: 1.66667em; - width: calc(100% + 3.33333em); - } - - #sidebar .toggle { - height: 4.5em; - left: 23em; - line-height: 4.5em; - text-indent: 5em; - width: 5em; - background-color: #fff; - margin-left: 1em; - } - - #sidebar .toggle:before { - font-size: 1.5rem; - } - - #sidebar.inactive { - margin-left: -24em; - } -} - -@media screen and (max-width: 1280px) { - #sidebar { - box-shadow: 0 0 5em 0 rgba(0, 0, 0, 0.175); - height: 100%; - left: 0; - position: fixed; - top: 0; - z-index: 10000; - } - - #sidebar.inactive { - box-shadow: none; - } - - #sidebar>.inner { - -webkit-overflow-scrolling: touch; - height: 100%; - left: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: 0; - } - - #sidebar>.inner:after { - content: ''; - display: block; - height: 4em; - width: 100%; - } - - #sidebar .toggle { - text-indent: 6em; - width: 4.5em; - } - - #sidebar .toggle:before { - font-size: 1.5rem; - margin-left: -0.4375em; - } - - body.is-preload #sidebar { - display: none; - } -} - -@media screen and (max-width: 736px) { - #sidebar .toggle { - text-indent: 7.25em; - width: 7.25em; - } - - #sidebar .toggle:before { - color: #7f888f; - margin-left: -0.0625em; - margin-top: -0.25em; - font-size: 1.1rem; - z-index: 1; - } - - #sidebar .toggle:after { - background: rgba(222, 225, 226, 0.75); - border-radius: 0.375em; - content: ''; - height: 3.5em; - left: 1em; - position: absolute; - top: 1em; - width: 5em; - } -} - -/* Header */ -#header { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - border-bottom: solid 5px #f56a6a; - padding: 1em 0 1em 0; - position: relative; -} - -#header>* { - -moz-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - margin-bottom: 0; -} - -#header .logo { - border-bottom: 0; - color: inherit; - font-family: "Roboto Slab", serif; - font-size: 1.125em; -} - -#header .icons { - text-align: right; -} - -@media screen and (max-width: 1680px) { - #header .logo { - font-size: 1.25em; - margin: 0; - } - - #header .icons { - height: 5em; - line-height: 5em; - position: absolute; - right: -0.5em; - top: 0; - } -} - -@media screen and (max-width: 736px) { - #header .logo { - font-size: 1.25em; - margin: 0; - } - - #header .icons { - height: 5em; - line-height: 5em; - position: absolute; - right: -0.5em; - top: 0; - } -} - -/* Banner */ -#banner { - padding: 6em 0 4em 0; - /* - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - flex-direction: row-reverse; - */ -} - -#banner h1 { - margin-top: -0.125em; -} - -#banner .content { - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - width: 50%; -} - -#banner .image { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; - display: block; - margin: 0 0 2em 4em; - width: 50%; -} - -#banner .image img { - height: 100%; - -moz-object-fit: cover; - -webkit-object-fit: cover; - -ms-object-fit: cover; - object-fit: cover; - -moz-object-position: center; - -webkit-object-position: center; - -ms-object-position: center; - object-position: center; - width: 100%; -} - -@media screen and (orientation: portrait) { - #banner { - -moz-flex-direction: column-reverse; - -webkit-flex-direction: column-reverse; - -ms-flex-direction: column-reverse; - flex-direction: column-reverse; - } - - #banner h1 br { - display: none; - } - - #banner .content { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; - width: 100%; - } - - #banner .image { - -moz-flex-grow: 0; - -webkit-flex-grow: 0; - -ms-flex-grow: 0; - flex-grow: 0; - -moz-flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; - margin: 0 0 4em 0; - height: 25em; - max-height: 50vh; - min-height: 18em; - width: 100%; - } -} - -@media screen and (orientation: portrait) and (max-width: 480px) { - #banner .image { - max-height: 35vh; - } -} - -/* Footer */ -#footer .copyright { - color: #9fa3a6; - font-size: 0.9em; -} - -#footer .copyright a { - color: inherit; -} - -/* Menu */ -#menu ul { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - color: #3d4449; - font-family: "Roboto Slab", serif; - font-weight: 400; - letter-spacing: 0.075em; - list-style: none; - margin-bottom: 0; - padding: 0; - text-transform: uppercase; -} - -#menu ul a, -#menu ul span { - border-bottom: 0; - color: inherit; - cursor: pointer; - display: block; - font-size: 0.9em; - padding: 0.625em 0; -} - -#menu ul a:hover, -#menu ul span:hover { - color: #f56a6a; -} - -#menu ul a.opener, -#menu ul span.opener { - -moz-transition: color 0.2s ease-in-out; - -webkit-transition: color 0.2s ease-in-out; - -ms-transition: color 0.2s ease-in-out; - transition: color 0.2s ease-in-out; - text-decoration: none; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - position: relative; -} - -#menu ul a.opener:before, -#menu ul span.opener:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 900; -} - -#menu ul a.opener:before, -#menu ul span.opener:before { - -moz-transition: color 0.2s ease-in-out, -moz-transform 0.2s ease-in-out; - -webkit-transition: color 0.2s ease-in-out, -webkit-transform 0.2s ease-in-out; - -ms-transition: color 0.2s ease-in-out, -ms-transform 0.2s ease-in-out; - transition: color 0.2s ease-in-out, transform 0.2s ease-in-out; - color: #9fa3a6; - content: '\f078'; - position: absolute; - right: 0; -} - -#menu ul a.opener:hover:before, -#menu ul span.opener:hover:before { - color: #f56a6a; -} - -#menu ul a.opener.active+ul, -#menu ul span.opener.active+ul { - display: block; -} - -#menu ul a.opener.active:before, -#menu ul span.opener.active:before { - -moz-transform: rotate(-180deg); - -webkit-transform: rotate(-180deg); - -ms-transform: rotate(-180deg); - transform: rotate(-180deg); -} - -#menu>ul>li { - border-top: solid 1px rgba(210, 215, 217, 0.75); - margin: 0.5em 0 0 0; - padding: 0.5em 0 0 0; -} - -#menu>ul>li>ul { - color: #9fa3a6; - display: none; - margin: 0.5em 0 1.5em 0; - padding-left: 1em; -} - -#menu>ul>li>ul a, -#menu>ul>li>ul span { - font-size: 0.8em; -} - -#menu>ul>li>ul>li { - margin: 0.125em 0 0 0; - padding: 0.125em 0 0 0; -} - -#menu>ul>li:first-child { - border-top: 0; - margin-top: 0; - padding-top: 0; -} \ No newline at end of file diff --git a/public/theme/assets/css/register.css b/public/theme/assets/css/register.css deleted file mode 100644 index 1b20f2e..0000000 --- a/public/theme/assets/css/register.css +++ /dev/null @@ -1,60 +0,0 @@ -/* Container div */ -.container { - margin: auto; - max-width: 800px; -} - -/* Header */ -header { - /* background-color: #333; */ - color: white; - padding: 1rem; - text-align: center; -} - -/* Form */ -form { - margin: auto; - max-width: 800px; -} - -/* Fieldset */ -fieldset { - background-color: #f0f0f0; - padding: 1rem; -} - -/* Labels */ -label { - display: block; - margin-bottom: 0.5rem; -} - -/* Inputs */ -input[type="text"], -input[type="password"] { - background-color: #f8f8f8; - border: none; - border-radius: 5px; - box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); - color: #333; - padding: 0.25rem; -} - -/* Buttons */ -button { - background-color: #4CAF50; - border: none; - border-radius: 5px; - box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); - color: white; - padding: 0.25rem; -} - -/* Footer */ -footer { - background-color: #333; - color: white; - padding: 1rem; - text-align: center; -} \ No newline at end of file diff --git a/public/theme/assets/js/breakpoints.min.js b/public/theme/assets/js/breakpoints.min.js deleted file mode 100644 index 32419cc..0000000 --- a/public/theme/assets/js/breakpoints.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ -var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e>label: Widget -//>>group: Core -//>>description: Provides a factory for creating stateful widgets with a common API. -//>>docs: https://api.jqueryui.com/jQuery.widget/ -//>>demos: https://jqueryui.com/widget/ - - -var widgetUuid = 0; -var widgetHasOwnProperty = Array.prototype.hasOwnProperty; -var widgetSlice = Array.prototype.slice; - -$.cleanData = ( function( orig ) { - return function( elems ) { - var events, elem, i; - for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { - - // Only trigger remove when necessary to save time - events = $._data( elem, "events" ); - if ( events && events.remove ) { - $( elem ).triggerHandler( "remove" ); - } - } - orig( elems ); - }; -} )( $.cleanData ); - -$.widget = function( name, base, prototype ) { - var existingConstructor, constructor, basePrototype; - - // ProxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - var proxiedPrototype = {}; - - var namespace = name.split( "." )[ 0 ]; - name = name.split( "." )[ 1 ]; - var fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - if ( Array.isArray( prototype ) ) { - prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); - } - - // Create selector for plugin - $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - - // Allow instantiation without "new" keyword - if ( !this || !this._createWidget ) { - return new constructor( options, element ); - } - - // Allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - // Extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - - // Copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - - // Track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - } ); - - basePrototype = new base(); - - // We need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( typeof value !== "function" ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = ( function() { - function _super() { - return base.prototype[ prop ].apply( this, arguments ); - } - - function _superApply( args ) { - return base.prototype[ prop ].apply( this, args ); - } - - return function() { - var __super = this._super; - var __superApply = this._superApply; - var returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - } )(); - } ); - constructor.prototype = $.widget.extend( basePrototype, { - - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } ); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // Redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, - child._proto ); - } ); - - // Remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); - - return constructor; -}; - -$.widget.extend = function( target ) { - var input = widgetSlice.call( arguments, 1 ); - var inputIndex = 0; - var inputLength = input.length; - var key; - var value; - - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { - - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string"; - var args = widgetSlice.call( arguments, 1 ); - var returnValue = this; - - if ( isMethodCall ) { - - // If this is an empty collection, we need to have the instance method - // return undefined instead of the jQuery instance - if ( !this.length && options === "instance" ) { - returnValue = undefined; - } else { - this.each( function() { - var methodValue; - var instance = $.data( this, fullName ); - - if ( options === "instance" ) { - returnValue = instance; - return false; - } - - if ( !instance ) { - return $.error( "cannot call methods on " + name + - " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - - if ( typeof instance[ options ] !== "function" || - options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + - " widget instance" ); - } - - methodValue = instance[ options ].apply( instance, args ); - - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - } ); - } - } else { - - // Allow multiple hashes to be passed on init - if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat( args ) ); - } - - this.each( function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} ); - if ( instance._init ) { - instance._init(); - } - } else { - $.data( this, fullName, new object( options, this ) ); - } - } ); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
", - - options: { - classes: {}, - disabled: false, - - // Callbacks - create: null - }, - - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = widgetUuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - this.classesElementLookup = {}; - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - } ); - this.document = $( element.style ? - - // Element within the document - element.ownerDocument : - - // Element is window or document - element.document || element ); - this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); - } - - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this._create(); - - if ( this.options.disabled ) { - this._setOptionDisabled( this.options.disabled ); - } - - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - - _getCreateOptions: function() { - return {}; - }, - - _getCreateEventData: $.noop, - - _create: $.noop, - - _init: $.noop, - - destroy: function() { - var that = this; - - this._destroy(); - $.each( this.classesElementLookup, function( key, value ) { - that._removeClass( value, key ); - } ); - - // We can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .off( this.eventNamespace ) - .removeData( this.widgetFullName ); - this.widget() - .off( this.eventNamespace ) - .removeAttr( "aria-disabled" ); - - // Clean up events and states - this.bindings.off( this.eventNamespace ); - }, - - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key; - var parts; - var curOption; - var i; - - if ( arguments.length === 0 ) { - - // Don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - - // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - - _setOption: function( key, value ) { - if ( key === "classes" ) { - this._setOptionClasses( value ); - } - - this.options[ key ] = value; - - if ( key === "disabled" ) { - this._setOptionDisabled( value ); - } - - return this; - }, - - _setOptionClasses: function( value ) { - var classKey, elements, currentElements; - - for ( classKey in value ) { - currentElements = this.classesElementLookup[ classKey ]; - if ( value[ classKey ] === this.options.classes[ classKey ] || - !currentElements || - !currentElements.length ) { - continue; - } - - // We are doing this to create a new jQuery object because the _removeClass() call - // on the next line is going to destroy the reference to the current elements being - // tracked. We need to save a copy of this collection so that we can add the new classes - // below. - elements = $( currentElements.get() ); - this._removeClass( currentElements, classKey ); - - // We don't use _addClass() here, because that uses this.options.classes - // for generating the string of classes. We want to use the value passed in from - // _setOption(), this is the new value of the classes option which was passed to - // _setOption(). We pass this value directly to _classes(). - elements.addClass( this._classes( { - element: elements, - keys: classKey, - classes: value, - add: true - } ) ); - } - }, - - _setOptionDisabled: function( value ) { - this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); - - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this._removeClass( this.hoverable, null, "ui-state-hover" ); - this._removeClass( this.focusable, null, "ui-state-focus" ); - } - }, - - enable: function() { - return this._setOptions( { disabled: false } ); - }, - - disable: function() { - return this._setOptions( { disabled: true } ); - }, - - _classes: function( options ) { - var full = []; - var that = this; - - options = $.extend( { - element: this.element, - classes: this.options.classes || {} - }, options ); - - function bindRemoveEvent() { - var nodesToBind = []; - - options.element.each( function( _, element ) { - var isTracked = $.map( that.classesElementLookup, function( elements ) { - return elements; - } ) - .some( function( elements ) { - return elements.is( element ); - } ); - - if ( !isTracked ) { - nodesToBind.push( element ); - } - } ); - - that._on( $( nodesToBind ), { - remove: "_untrackClassesElement" - } ); - } - - function processClassString( classes, checkOption ) { - var current, i; - for ( i = 0; i < classes.length; i++ ) { - current = that.classesElementLookup[ classes[ i ] ] || $(); - if ( options.add ) { - bindRemoveEvent(); - current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); - } else { - current = $( current.not( options.element ).get() ); - } - that.classesElementLookup[ classes[ i ] ] = current; - full.push( classes[ i ] ); - if ( checkOption && options.classes[ classes[ i ] ] ) { - full.push( options.classes[ classes[ i ] ] ); - } - } - } - - if ( options.keys ) { - processClassString( options.keys.match( /\S+/g ) || [], true ); - } - if ( options.extra ) { - processClassString( options.extra.match( /\S+/g ) || [] ); - } - - return full.join( " " ); - }, - - _untrackClassesElement: function( event ) { - var that = this; - $.each( that.classesElementLookup, function( key, value ) { - if ( $.inArray( event.target, value ) !== -1 ) { - that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); - } - } ); - - this._off( $( event.target ) ); - }, - - _removeClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, false ); - }, - - _addClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, true ); - }, - - _toggleClass: function( element, keys, extra, add ) { - add = ( typeof add === "boolean" ) ? add : extra; - var shift = ( typeof element === "string" || element === null ), - options = { - extra: shift ? keys : extra, - keys: shift ? element : keys, - element: shift ? this.element : element, - add: add - }; - options.element.toggleClass( this._classes( options ), add ); - return this; - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement; - var instance = this; - - // No suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // No element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - - // Allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // Copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^([\w:-]*)\s*(.*)$/ ); - var eventName = match[ 1 ] + instance.eventNamespace; - var selector = match[ 2 ]; - - if ( selector ) { - delegateElement.on( eventName, selector, handlerProxy ); - } else { - element.on( eventName, handlerProxy ); - } - } ); - }, - - _off: function( element, eventName ) { - eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + - this.eventNamespace; - element.off( eventName ); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $( this.bindings.not( element ).get() ); - this.focusable = $( this.focusable.not( element ).get() ); - this.hoverable = $( this.hoverable.not( element ).get() ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); - }, - mouseleave: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); - } - } ); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); - }, - focusout: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); - } - } ); - }, - - _trigger: function( type, event, data ) { - var prop, orig; - var callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - - // The original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // Copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( typeof callback === "function" && - callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - - var hasOptions; - var effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } else if ( options === true ) { - options = {}; - } - - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - - if ( options.delay ) { - element.delay( options.delay ); - } - - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue( function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - } ); - } - }; -} ); - -var widget = $.widget; - - -/*! - * jQuery UI Position 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - * - * https://api.jqueryui.com/position/ - */ - -//>>label: Position -//>>group: Core -//>>description: Positions elements relative to other elements. -//>>docs: https://api.jqueryui.com/position/ -//>>demos: https://jqueryui.com/position/ - - -( function() { -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function isWindow( obj ) { - return obj != null && obj === obj.window; -} - -function getDimensions( elem ) { - var raw = elem[ 0 ]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "
" + - "
" ), - innerDiv = div.children()[ 0 ]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[ 0 ].clientWidth; - } - - div.remove(); - - return ( cachedScrollbarWidth = w1 - w2 ); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-x" ), - overflowY = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isElemWindow = isWindow( withinElement[ 0 ] ), - isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, - hasOffset = !isElemWindow && !isDocument; - return { - element: withinElement, - isWindow: isElemWindow, - isDocument: isDocument, - offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: withinElement.outerWidth(), - height: withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // Make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - - // Make sure string options are treated as CSS selectors - target = typeof options.of === "string" ? - $( document ).find( options.of ) : - $( options.of ), - - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[ 0 ].preventDefault ) { - - // Force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - - // Clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // Force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1 ) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // Calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // Reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - } ); - - // Normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each( function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + - scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + - scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem: elem - } ); - } - } ); - - if ( options.using ) { - - // Adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - } ); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // Element is wider than within - if ( data.collisionWidth > outerWidth ) { - - // Element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - - withinOffset; - position.left += overLeft - newOverRight; - - // Element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - - // Element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - - // Too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - - // Too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - - // Adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // Element is taller than within - if ( data.collisionHeight > outerHeight ) { - - // Element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - - withinOffset; - position.top += overTop - newOverBottom; - - // Element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - - // Element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - - // Too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - - // Too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - - // Adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + - atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - - outerHeight - withinOffset; - if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { - position.top += myOffset + atOffset + offset; - } - } else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + - offset - offsetTop; - if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -} )(); - -var position = $.ui.position; - - -/*! - * jQuery UI :data 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: :data Selector -//>>group: Core -//>>description: Selects elements which have data stored under the specified key. -//>>docs: https://api.jqueryui.com/data-selector/ - - -var data = $.extend( $.expr.pseudos, { - data: $.expr.createPseudo ? - $.expr.createPseudo( function( dataName ) { - return function( elem ) { - return !!$.data( elem, dataName ); - }; - } ) : - - // Support: jQuery <1.8 - function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); - } -} ); - -/*! - * jQuery UI Disable Selection 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: disableSelection -//>>group: Core -//>>description: Disable selection of text content within the set of matched elements. -//>>docs: https://api.jqueryui.com/disableSelection/ - -// This file is deprecated - -var disableSelection = $.fn.extend( { - disableSelection: ( function() { - var eventType = "onselectstart" in document.createElement( "div" ) ? - "selectstart" : - "mousedown"; - - return function() { - return this.on( eventType + ".ui-disableSelection", function( event ) { - event.preventDefault(); - } ); - }; - } )(), - - enableSelection: function() { - return this.off( ".ui-disableSelection" ); - } -} ); - - - -// Create a local jQuery because jQuery Color relies on it and the -// global may not exist with AMD and a custom build (#10199). -// This module is a noop if used as a regular AMD module. -// eslint-disable-next-line no-unused-vars -var jQuery = $; - - -/*! - * jQuery Color Animations v2.2.0 - * https://github.com/jquery/jquery-color - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - * - * Date: Sun May 10 09:02:36 2020 +0200 - */ - - - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + - "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - - class2type = {}, - toString = class2type.toString, - - // plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - - // a set of RE's that can match strings and generate color tuples. - stringParsers = [ { - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ), - execResult[ 4 ] ? - ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) : - 1 - ]; - } - }, { - - // this regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ), - execResult[ 4 ] ? - ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 ) - .toFixed( 2 ) : - 1 - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - } ], - - // jQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // element for support tests - supportElem = jQuery( "

" )[ 0 ], - - // colors = jQuery.Color.names - colors, - - // local aliases of functions called often - each = jQuery.each; - -// determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -} ); - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), - function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - -function getType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - return typeof obj === "object" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return ( allowEmpty || !prop.def ) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - - // we add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return ( value + type.mod ) % type.mod; - } - - // for now all property types without mod have min and max - return Math.min( type.max, Math.max( 0, value ) ); -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( _i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // if this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // exit each( stringParsers ) here because we matched - return false; - } - } ); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // if this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = getType( red ), - rgba = this._rgba = []; - - // more than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( _key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - } ); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( _spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - } ); - } else { - each( spaces, function( _spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // if the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // if the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // this is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - } ); - - // everything defined but alpha? - if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - - // use the default of 1 - if ( inst[ cache ][ 3 ] == null ) { - inst[ cache ][ 3 ] = 1; - } - - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - } ); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if ( isCache ) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - } ); - } - return same; - } ); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - } ); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( _key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // if null, don't override start value - if ( endValue === null ) { - return; - } - - // if null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - } ); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - - // if we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - } ) ); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - if ( v != null ) { - return v; - } - return i > 2 ? 1 : 0; - } ); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - } ); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - } ).join( "" ); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -} ); -color.fn.parse.prototype = color.fn; - -// hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + ( q - p ) * h * 6; - } - if ( h * 2 < 1 ) { - return q; - } - if ( h * 3 < 2 ) { - return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; - } - return p; -} - -spaces.hsla.to = function( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) - if ( diff === 0 ) { - s = 0; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = getType( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - } ); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - - // alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var local, cur, match, fn, - vtype = getType( value ); - - if ( key === "alpha" ) { - fn = this._hsla ? "hsla" : "rgba"; - } else { - fn = spaceName; - } - local = this[ fn ](); - cur = local[ prop.idx ]; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = getType( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - } ); -} ); - -// add cssHook and .fx.step function for each named hook. -// accept a space separated string of properties -color.hook = function( hook ) { - var hooks = hook.split( " " ); - each( hooks, function( _i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - ( backgroundColor === "" || backgroundColor === "transparent" ) && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch ( e ) { - - // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; - } ); - -}; - -color.hook( stepHooks ); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) { - expanded[ "border" + part + "Color" ] = value; - } ); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - - -/*! - * jQuery UI Effects 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Effects Core -//>>group: Effects -/* eslint-disable max-len */ -//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. -/* eslint-enable max-len */ -//>>docs: https://api.jqueryui.com/category/effects-core/ -//>>demos: https://jqueryui.com/effect/ - - -var dataSpace = "ui-effects-", - dataSpaceStyle = "ui-effects-style", - dataSpaceAnimated = "ui-effects-animated"; - -$.effects = { - effect: {} -}; - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -( function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each( - [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], - function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; - } -); - -function camelCase( string ) { - return string.replace( /-([\da-z])/gi, function( all, letter ) { - return letter.toUpperCase(); - } ); -} - -function getElementStyles( elem ) { - var key, len, - style = elem.ownerDocument.defaultView ? - elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : - elem.currentStyle, - styles = {}; - - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - styles[ camelCase( key ) ] = style[ key ]; - } - } - - // Support: Opera, IE <9 - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - styles[ key ] = style[ key ]; - } - } - } - - return styles; -} - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -// Support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).addBack() : animated; - - // Map the animated objects to store the original styles. - allAnimations = allAnimations.map( function() { - var el = $( this ); - return { - el: el, - start: getElementStyles( this ) - }; - } ); - - // Apply class change - applyClassChange = function() { - $.each( classAnimationActions, function( i, action ) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - } ); - }; - applyClassChange(); - - // Map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map( function() { - this.end = getElementStyles( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - } ); - - // Apply original class - animated.attr( "class", baseClass ); - - // Map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map( function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = $.extend( {}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - } ); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - } ); - - // Once all animations have completed: - $.when.apply( $, allAnimations.get() ).done( function() { - - // Set the final class - applyClassChange(); - - // For each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function( key ) { - el.css( key, "" ); - } ); - } ); - - // This is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - } ); - } ); -}; - -$.fn.extend( { - addClass: ( function( orig ) { - return function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - } )( $.fn.addClass ), - - removeClass: ( function( orig ) { - return function( classNames, speed, easing, callback ) { - return arguments.length > 1 ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - } )( $.fn.removeClass ), - - toggleClass: ( function( orig ) { - return function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - - // Without speed parameter - return orig.apply( this, arguments ); - } else { - return $.effects.animateClass.call( this, - ( force ? { add: classNames } : { remove: classNames } ), - speed, easing, callback ); - } - } else { - - // Without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }; - } )( $.fn.toggleClass ), - - switchClass: function( remove, add, speed, easing, callback ) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -} ); - -} )(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -( function() { - -if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) { - $.expr.pseudos.animated = ( function( orig ) { - return function( elem ) { - return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); - }; - } )( $.expr.pseudos.animated ); -} - -if ( $.uiBackCompat !== false ) { - $.extend( $.effects, { - - // Saves a set of properties in a data storage - save: function( element, set ) { - var i = 0, length = set.length; - for ( ; i < length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i = 0, length = set.length; - for ( ; i < length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if ( mode === "toggle" ) { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // If the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - return element.parent(); - } - - // Wrap the element - var props = { - width: element.outerWidth( true ), - height: element.outerHeight( true ), - "float": element.css( "float" ) - }, - wrapper = $( "

" ) - .addClass( "ui-effects-wrapper" ) - .css( { - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - } ), - - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // Support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - // eslint-disable-next-line no-unused-expressions - active.id; - } catch ( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).trigger( "focus" ); - } - - // Hotfix for jQuery 1.4 since some change in wrap() seems to actually - // lose the reference to the wrapped element - wrapper = element.parent(); - - // Transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css( { position: "relative" } ); - element.css( { position: "relative" } ); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - } ); - $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - } ); - element.css( { - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - } ); - } - element.css( size ); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).trigger( "focus" ); - } - } - - return element; - } - } ); -} - -$.extend( $.effects, { - version: "1.13.3", - - define: function( name, mode, effect ) { - if ( !effect ) { - effect = mode; - mode = "effect"; - } - - $.effects.effect[ name ] = effect; - $.effects.effect[ name ].mode = mode; - - return effect; - }, - - scaledDimensions: function( element, percent, direction ) { - if ( percent === 0 ) { - return { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - } - - var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, - y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; - - return { - height: element.height() * y, - width: element.width() * x, - outerHeight: element.outerHeight() * y, - outerWidth: element.outerWidth() * x - }; - - }, - - clipToBox: function( animation ) { - return { - width: animation.clip.right - animation.clip.left, - height: animation.clip.bottom - animation.clip.top, - left: animation.clip.left, - top: animation.clip.top - }; - }, - - // Injects recently queued functions to be first in line (after "inprogress") - unshift: function( element, queueLength, count ) { - var queue = element.queue(); - - if ( queueLength > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); - } - element.dequeue(); - }, - - saveStyle: function( element ) { - element.data( dataSpaceStyle, element[ 0 ].style.cssText ); - }, - - restoreStyle: function( element ) { - element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; - element.removeData( dataSpaceStyle ); - }, - - mode: function( element, mode ) { - var hidden = element.is( ":hidden" ); - - if ( mode === "toggle" ) { - mode = hidden ? "show" : "hide"; - } - if ( hidden ? mode === "hide" : mode === "show" ) { - mode = "none"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - getBaseline: function( origin, original ) { - var y, x; - - switch ( origin[ 0 ] ) { - case "top": - y = 0; - break; - case "middle": - y = 0.5; - break; - case "bottom": - y = 1; - break; - default: - y = origin[ 0 ] / original.height; - } - - switch ( origin[ 1 ] ) { - case "left": - x = 0; - break; - case "center": - x = 0.5; - break; - case "right": - x = 1; - break; - default: - x = origin[ 1 ] / original.width; - } - - return { - x: x, - y: y - }; - }, - - // Creates a placeholder element so that the original element can be made absolute - createPlaceholder: function( element ) { - var placeholder, - cssPosition = element.css( "position" ), - position = element.position(); - - // Lock in margins first to account for form elements, which - // will change margin if you explicitly set height - // see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 - // Support: Safari - element.css( { - marginTop: element.css( "marginTop" ), - marginBottom: element.css( "marginBottom" ), - marginLeft: element.css( "marginLeft" ), - marginRight: element.css( "marginRight" ) - } ) - .outerWidth( element.outerWidth() ) - .outerHeight( element.outerHeight() ); - - if ( /^(static|relative)/.test( cssPosition ) ) { - cssPosition = "absolute"; - - placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { - - // Convert inline to inline block to account for inline elements - // that turn to inline block based on content (like img) - display: /^(inline|ruby)/.test( element.css( "display" ) ) ? - "inline-block" : - "block", - visibility: "hidden", - - // Margins need to be set to account for margin collapse - marginTop: element.css( "marginTop" ), - marginBottom: element.css( "marginBottom" ), - marginLeft: element.css( "marginLeft" ), - marginRight: element.css( "marginRight" ), - "float": element.css( "float" ) - } ) - .outerWidth( element.outerWidth() ) - .outerHeight( element.outerHeight() ) - .addClass( "ui-effects-placeholder" ); - - element.data( dataSpace + "placeholder", placeholder ); - } - - element.css( { - position: cssPosition, - left: position.left, - top: position.top - } ); - - return placeholder; - }, - - removePlaceholder: function( element ) { - var dataKey = dataSpace + "placeholder", - placeholder = element.data( dataKey ); - - if ( placeholder ) { - placeholder.remove(); - element.removeData( dataKey ); - } - }, - - // Removes a placeholder if it exists and restores - // properties that were modified during placeholder creation - cleanUp: function( element ) { - $.effects.restoreStyle( element ); - $.effects.removePlaceholder( element ); - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - } ); - return value; - } -} ); - -// Return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // Allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // Convert to an object - effect = { effect: effect }; - - // Catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // Catch (effect, callback) - if ( typeof options === "function" ) { - callback = options; - speed = null; - options = {}; - } - - // Catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // Catch (effect, options, callback) - if ( typeof speed === "function" ) { - callback = speed; - speed = null; - } - - // Add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardAnimationOption( option ) { - - // Valid standard speeds (nothing, number, named speed) - if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { - return true; - } - - // Invalid strings - treat as "normal" speed - if ( typeof option === "string" && !$.effects.effect[ option ] ) { - return true; - } - - // Complete callback - if ( typeof option === "function" ) { - return true; - } - - // Options hash (but not naming an effect) - if ( typeof option === "object" && !option.effect ) { - return true; - } - - // Didn't match any standard API - return false; -} - -$.fn.extend( { - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - effectMethod = $.effects.effect[ args.effect ], - defaultMode = effectMethod.mode, - queue = args.queue, - queueName = queue || "fx", - complete = args.complete, - mode = args.mode, - modes = [], - prefilter = function( next ) { - var el = $( this ), - normalizedMode = $.effects.mode( el, mode ) || defaultMode; - - // Sentinel for duck-punching the :animated pseudo-selector - el.data( dataSpaceAnimated, true ); - - // Save effect mode for later use, - // we can't just call $.effects.mode again later, - // as the .show() below destroys the initial state - modes.push( normalizedMode ); - - // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14 - if ( defaultMode && ( normalizedMode === "show" || - ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { - el.show(); - } - - if ( !defaultMode || normalizedMode !== "none" ) { - $.effects.saveStyle( el ); - } - - if ( typeof next === "function" ) { - next(); - } - }; - - if ( $.fx.off || !effectMethod ) { - - // Delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, complete ); - } else { - return this.each( function() { - if ( complete ) { - complete.call( this ); - } - } ); - } - } - - function run( next ) { - var elem = $( this ); - - function cleanup() { - elem.removeData( dataSpaceAnimated ); - - $.effects.cleanUp( elem ); - - if ( args.mode === "hide" ) { - elem.hide(); - } - - done(); - } - - function done() { - if ( typeof complete === "function" ) { - complete.call( elem[ 0 ] ); - } - - if ( typeof next === "function" ) { - next(); - } - } - - // Override mode option on a per element basis, - // as toggle can be either show or hide depending on element state - args.mode = modes.shift(); - - if ( $.uiBackCompat !== false && !defaultMode ) { - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - - // Call the core method to track "olddisplay" properly - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[ 0 ], args, done ); - } - } else { - if ( args.mode === "none" ) { - - // Call the core method to track "olddisplay" properly - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[ 0 ], args, cleanup ); - } - } - } - - // Run prefilter on all elements first to ensure that - // any showing or hiding happens before placeholder creation, - // which ensures that any layout changes are correctly captured. - return queue === false ? - this.each( prefilter ).each( run ) : - this.queue( queueName, prefilter ).queue( queueName, run ); - }, - - show: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.show ), - - hide: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.hide ), - - toggle: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) || typeof option === "boolean" ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.toggle ), - - cssUnit: function( key ) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - } ); - return val; - }, - - cssClip: function( clipObj ) { - if ( clipObj ) { - return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + - clipObj.bottom + "px " + clipObj.left + "px)" ); - } - return parseClip( this.css( "clip" ), this ); - }, - - transfer: function( options, done ) { - var element = $( this ), - target = $( options.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $( "body" ), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop, - left: endPosition.left - fixLeft, - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = element.offset(), - transfer = $( "
" ); - - transfer - .appendTo( "body" ) - .addClass( options.className ) - .css( { - top: startPosition.top - fixTop, - left: startPosition.left - fixLeft, - height: element.innerHeight(), - width: element.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - } ) - .animate( animation, options.duration, options.easing, function() { - transfer.remove(); - if ( typeof done === "function" ) { - done(); - } - } ); - } -} ); - -function parseClip( str, element ) { - var outerWidth = element.outerWidth(), - outerHeight = element.outerHeight(), - clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, - values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; - - return { - top: parseFloat( values[ 1 ] ) || 0, - right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), - bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), - left: parseFloat( values[ 4 ] ) || 0 - }; -} - -$.fx.step.clip = function( fx ) { - if ( !fx.clipInit ) { - fx.start = $( fx.elem ).cssClip(); - if ( typeof fx.end === "string" ) { - fx.end = parseClip( fx.end, fx.elem ); - } - fx.clipInit = true; - } - - $( fx.elem ).cssClip( { - top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, - right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, - bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, - left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left - } ); -}; - -} )(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -( function() { - -// Based on easing equations from Robert Penner (http://robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -} ); - -$.extend( baseEasings, { - Sine: function( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -} ); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -} ); - -} )(); - -var effect = $.effects; - - -/*! - * jQuery UI Effects Blind 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Blind Effect -//>>group: Effects -//>>description: Blinds the element. -//>>docs: https://api.jqueryui.com/blind-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { - var map = { - up: [ "bottom", "top" ], - vertical: [ "bottom", "top" ], - down: [ "top", "bottom" ], - left: [ "right", "left" ], - horizontal: [ "right", "left" ], - right: [ "left", "right" ] - }, - element = $( this ), - direction = options.direction || "up", - start = element.cssClip(), - animate = { clip: $.extend( {}, start ) }, - placeholder = $.effects.createPlaceholder( element ); - - animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; - - if ( options.mode === "show" ) { - element.cssClip( animate.clip ); - if ( placeholder ) { - placeholder.css( $.effects.clipToBox( animate ) ); - } - - animate.clip = start; - } - - if ( placeholder ) { - placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); - } - - element.animate( animate, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Bounce 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Bounce Effect -//>>group: Effects -//>>description: Bounces an element horizontally or vertically n times. -//>>docs: https://api.jqueryui.com/bounce-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { - var upAnim, downAnim, refValue, - element = $( this ), - - // Defaults: - mode = options.mode, - hide = mode === "hide", - show = mode === "show", - direction = options.direction || "up", - distance = options.distance, - times = options.times || 5, - - // Number of internal animations - anims = times * 2 + ( show || hide ? 1 : 0 ), - speed = options.duration / anims, - easing = options.easing, - - // Utility: - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ), - i = 0, - - queuelen = element.queue().length; - - $.effects.createPlaceholder( element ); - - refValue = element.css( ref ); - - // Default distance for the BIGGEST bounce is the outer Distance / 3 - if ( !distance ) { - distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; - } - - if ( show ) { - downAnim = { opacity: 1 }; - downAnim[ ref ] = refValue; - - // If we are showing, force opacity 0 and set the initial position - // then do the "first" animation - element - .css( "opacity", 0 ) - .css( ref, motion ? -distance * 2 : distance * 2 ) - .animate( downAnim, speed, easing ); - } - - // Start at the smallest distance if we are hiding - if ( hide ) { - distance = distance / Math.pow( 2, times - 1 ); - } - - downAnim = {}; - downAnim[ ref ] = refValue; - - // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here - for ( ; i < times; i++ ) { - upAnim = {}; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - element - .animate( upAnim, speed, easing ) - .animate( downAnim, speed, easing ); - - distance = hide ? distance * 2 : distance / 2; - } - - // Last Bounce when Hiding - if ( hide ) { - upAnim = { opacity: 0 }; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - element.animate( upAnim, speed, easing ); - } - - element.queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Clip 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Clip Effect -//>>group: Effects -//>>description: Clips the element on and off like an old TV. -//>>docs: https://api.jqueryui.com/clip-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { - var start, - animate = {}, - element = $( this ), - direction = options.direction || "vertical", - both = direction === "both", - horizontal = both || direction === "horizontal", - vertical = both || direction === "vertical"; - - start = element.cssClip(); - animate.clip = { - top: vertical ? ( start.bottom - start.top ) / 2 : start.top, - right: horizontal ? ( start.right - start.left ) / 2 : start.right, - bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, - left: horizontal ? ( start.right - start.left ) / 2 : start.left - }; - - $.effects.createPlaceholder( element ); - - if ( options.mode === "show" ) { - element.cssClip( animate.clip ); - animate.clip = start; - } - - element.animate( animate, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); - -} ); - - -/*! - * jQuery UI Effects Drop 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Drop Effect -//>>group: Effects -//>>description: Moves an element in one direction and hides it at the same time. -//>>docs: https://api.jqueryui.com/drop-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { - - var distance, - element = $( this ), - mode = options.mode, - show = mode === "show", - direction = options.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", - oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", - animation = { - opacity: 0 - }; - - $.effects.createPlaceholder( element ); - - distance = options.distance || - element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; - - animation[ ref ] = motion + distance; - - if ( show ) { - element.css( animation ); - - animation[ ref ] = oppositeMotion + distance; - animation.opacity = 1; - } - - // Animate - element.animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Explode 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Explode Effect -//>>group: Effects -/* eslint-disable max-len */ -//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. -/* eslint-enable max-len */ -//>>docs: https://api.jqueryui.com/explode-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { - - var i, j, left, top, mx, my, - rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, - cells = rows, - element = $( this ), - mode = options.mode, - show = mode === "show", - - // Show and then visibility:hidden the element before calculating offset - offset = element.show().css( "visibility", "hidden" ).offset(), - - // Width and height of a piece - width = Math.ceil( element.outerWidth() / cells ), - height = Math.ceil( element.outerHeight() / rows ), - pieces = []; - - // Children animate complete: - function childComplete() { - pieces.push( this ); - if ( pieces.length === rows * cells ) { - animComplete(); - } - } - - // Clone the element for each row and cell. - for ( i = 0; i < rows; i++ ) { // ===> - top = offset.top + i * height; - my = i - ( rows - 1 ) / 2; - - for ( j = 0; j < cells; j++ ) { // ||| - left = offset.left + j * width; - mx = j - ( cells - 1 ) / 2; - - // Create a clone of the now hidden main element that will be absolute positioned - // within a wrapper div off the -left and -top equal to size of our pieces - element - .clone() - .appendTo( "body" ) - .wrap( "
" ) - .css( { - position: "absolute", - visibility: "visible", - left: -j * width, - top: -i * height - } ) - - // Select the wrapper - make it overflow: hidden and absolute positioned based on - // where the original was located +left and +top equal to the size of pieces - .parent() - .addClass( "ui-effects-explode" ) - .css( { - position: "absolute", - overflow: "hidden", - width: width, - height: height, - left: left + ( show ? mx * width : 0 ), - top: top + ( show ? my * height : 0 ), - opacity: show ? 0 : 1 - } ) - .animate( { - left: left + ( show ? 0 : mx * width ), - top: top + ( show ? 0 : my * height ), - opacity: show ? 1 : 0 - }, options.duration || 500, options.easing, childComplete ); - } - } - - function animComplete() { - element.css( { - visibility: "visible" - } ); - $( pieces ).remove(); - done(); - } -} ); - - -/*! - * jQuery UI Effects Fade 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Fade Effect -//>>group: Effects -//>>description: Fades the element. -//>>docs: https://api.jqueryui.com/fade-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { - var show = options.mode === "show"; - - $( this ) - .css( "opacity", show ? 0 : 1 ) - .animate( { - opacity: show ? 1 : 0 - }, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Fold 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Fold Effect -//>>group: Effects -//>>description: Folds an element first horizontally and then vertically. -//>>docs: https://api.jqueryui.com/fold-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { - - // Create element - var element = $( this ), - mode = options.mode, - show = mode === "show", - hide = mode === "hide", - size = options.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!options.horizFirst, - ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], - duration = options.duration / 2, - - placeholder = $.effects.createPlaceholder( element ), - - start = element.cssClip(), - animation1 = { clip: $.extend( {}, start ) }, - animation2 = { clip: $.extend( {}, start ) }, - - distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], - - queuelen = element.queue().length; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - animation1.clip[ ref[ 0 ] ] = size; - animation2.clip[ ref[ 0 ] ] = size; - animation2.clip[ ref[ 1 ] ] = 0; - - if ( show ) { - element.cssClip( animation2.clip ); - if ( placeholder ) { - placeholder.css( $.effects.clipToBox( animation2 ) ); - } - - animation2.clip = start; - } - - // Animate - element - .queue( function( next ) { - if ( placeholder ) { - placeholder - .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) - .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); - } - - next(); - } ) - .animate( animation1, duration, options.easing ) - .animate( animation2, duration, options.easing ) - .queue( done ); - - $.effects.unshift( element, queuelen, 4 ); -} ); - - -/*! - * jQuery UI Effects Highlight 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Highlight Effect -//>>group: Effects -//>>description: Highlights the background of an element in a defined color for a custom duration. -//>>docs: https://api.jqueryui.com/highlight-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { - var element = $( this ), - animation = { - backgroundColor: element.css( "backgroundColor" ) - }; - - if ( options.mode === "hide" ) { - animation.opacity = 0; - } - - $.effects.saveStyle( element ); - - element - .css( { - backgroundImage: "none", - backgroundColor: options.color || "#ffff99" - } ) - .animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Size 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Size Effect -//>>group: Effects -//>>description: Resize an element to a specified width and height. -//>>docs: https://api.jqueryui.com/size-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectSize = $.effects.define( "size", function( options, done ) { - - // Create element - var baseline, factor, temp, - element = $( this ), - - // Copy for children - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = options.mode, - restore = mode !== "effect", - scale = options.scale || "both", - origin = options.origin || [ "middle", "center" ], - position = element.css( "position" ), - pos = element.position(), - original = $.effects.scaledDimensions( element ), - from = options.from || original, - to = options.to || $.effects.scaledDimensions( element, 0 ); - - $.effects.createPlaceholder( element ); - - if ( mode === "show" ) { - temp = from; - from = to; - to = temp; - } - - // Set scaling factor - factor = { - from: { - y: from.height / original.height, - x: from.width / original.width - }, - to: { - y: to.height / original.height, - x: to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - from = $.effects.setTransition( element, vProps, factor.from.y, from ); - to = $.effects.setTransition( element, vProps, factor.to.y, to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - from = $.effects.setTransition( element, hProps, factor.from.x, from ); - to = $.effects.setTransition( element, hProps, factor.to.x, to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - from = $.effects.setTransition( element, cProps, factor.from.y, from ); - to = $.effects.setTransition( element, cProps, factor.to.y, to ); - } - } - - // Adjust the position properties based on the provided origin points - if ( origin ) { - baseline = $.effects.getBaseline( origin, original ); - from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; - from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; - to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; - to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; - } - delete from.outerHeight; - delete from.outerWidth; - element.css( from ); - - // Animate the children if desired - if ( scale === "content" || scale === "both" ) { - - vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); - hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); - - // Only animate children with width attributes specified - // TODO: is this right? should we include anything with css width specified as well - element.find( "*[width]" ).each( function() { - var child = $( this ), - childOriginal = $.effects.scaledDimensions( child ), - childFrom = { - height: childOriginal.height * factor.from.y, - width: childOriginal.width * factor.from.x, - outerHeight: childOriginal.outerHeight * factor.from.y, - outerWidth: childOriginal.outerWidth * factor.from.x - }, - childTo = { - height: childOriginal.height * factor.to.y, - width: childOriginal.width * factor.to.x, - outerHeight: childOriginal.height * factor.to.y, - outerWidth: childOriginal.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); - childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); - childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); - } - - if ( restore ) { - $.effects.saveStyle( child ); - } - - // Animate children - child.css( childFrom ); - child.animate( childTo, options.duration, options.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restoreStyle( child ); - } - } ); - } ); - } - - // Animate - element.animate( to, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: function() { - - var offset = element.offset(); - - if ( to.opacity === 0 ) { - element.css( "opacity", from.opacity ); - } - - if ( !restore ) { - element - .css( "position", position === "static" ? "relative" : position ) - .offset( offset ); - - // Need to save style here so that automatic style restoration - // doesn't restore to the original styles from before the animation. - $.effects.saveStyle( element ); - } - - done(); - } - } ); - -} ); - - -/*! - * jQuery UI Effects Scale 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Scale Effect -//>>group: Effects -//>>description: Grows or shrinks an element and its content. -//>>docs: https://api.jqueryui.com/scale-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectScale = $.effects.define( "scale", function( options, done ) { - - // Create element - var el = $( this ), - mode = options.mode, - percent = parseInt( options.percent, 10 ) || - ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), - - newOptions = $.extend( true, { - from: $.effects.scaledDimensions( el ), - to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), - origin: options.origin || [ "middle", "center" ] - }, options ); - - // Fade option to support puff - if ( options.fade ) { - newOptions.from.opacity = 1; - newOptions.to.opacity = 0; - } - - $.effects.effect.size.call( this, newOptions, done ); -} ); - - -/*! - * jQuery UI Effects Puff 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Puff Effect -//>>group: Effects -//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. -//>>docs: https://api.jqueryui.com/puff-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { - var newOptions = $.extend( true, {}, options, { - fade: true, - percent: parseInt( options.percent, 10 ) || 150 - } ); - - $.effects.effect.scale.call( this, newOptions, done ); -} ); - - -/*! - * jQuery UI Effects Pulsate 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Pulsate Effect -//>>group: Effects -//>>description: Pulsates an element n times by changing the opacity to zero and back. -//>>docs: https://api.jqueryui.com/pulsate-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { - var element = $( this ), - mode = options.mode, - show = mode === "show", - hide = mode === "hide", - showhide = show || hide, - - // Showing or hiding leaves off the "last" animation - anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = options.duration / anims, - animateTo = 0, - i = 1, - queuelen = element.queue().length; - - if ( show || !element.is( ":visible" ) ) { - element.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // Anims - 1 opacity "toggles" - for ( ; i < anims; i++ ) { - element.animate( { opacity: animateTo }, duration, options.easing ); - animateTo = 1 - animateTo; - } - - element.animate( { opacity: animateTo }, duration, options.easing ); - - element.queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Shake 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Shake Effect -//>>group: Effects -//>>description: Shakes an element horizontally or vertically n times. -//>>docs: https://api.jqueryui.com/shake-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectShake = $.effects.define( "shake", function( options, done ) { - - var i = 1, - element = $( this ), - direction = options.direction || "left", - distance = options.distance || 20, - times = options.times || 3, - anims = times * 2 + 1, - speed = Math.round( options.duration / anims ), - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - positiveMotion = ( direction === "up" || direction === "left" ), - animation = {}, - animation1 = {}, - animation2 = {}, - - queuelen = element.queue().length; - - $.effects.createPlaceholder( element ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - element.animate( animation, speed, options.easing ); - - // Shakes - for ( ; i < times; i++ ) { - element - .animate( animation1, speed, options.easing ) - .animate( animation2, speed, options.easing ); - } - - element - .animate( animation1, speed, options.easing ) - .animate( animation, speed / 2, options.easing ) - .queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Slide 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Slide Effect -//>>group: Effects -//>>description: Slides an element in and out of the viewport. -//>>docs: https://api.jqueryui.com/slide-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { - var startClip, startRef, - element = $( this ), - map = { - up: [ "bottom", "top" ], - down: [ "top", "bottom" ], - left: [ "right", "left" ], - right: [ "left", "right" ] - }, - mode = options.mode, - direction = options.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - positiveMotion = ( direction === "up" || direction === "left" ), - distance = options.distance || - element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), - animation = {}; - - $.effects.createPlaceholder( element ); - - startClip = element.cssClip(); - startRef = element.position()[ ref ]; - - // Define hide animation - animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; - animation.clip = element.cssClip(); - animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; - - // Reverse the animation if we're showing - if ( mode === "show" ) { - element.cssClip( animation.clip ); - element.css( ref, animation[ ref ] ); - animation.clip = startClip; - animation[ ref ] = startRef; - } - - // Actually animate - element.animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Transfer 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Transfer Effect -//>>group: Effects -//>>description: Displays a transfer effect from one element to another. -//>>docs: https://api.jqueryui.com/transfer-effect/ -//>>demos: https://jqueryui.com/effect/ - - -var effect; -if ( $.uiBackCompat !== false ) { - effect = $.effects.define( "transfer", function( options, done ) { - $( this ).transfer( options, done ); - } ); -} -var effectsEffectTransfer = effect; - - -/*! - * jQuery UI Focusable 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: :focusable Selector -//>>group: Core -//>>description: Selects elements which can be focused. -//>>docs: https://api.jqueryui.com/focusable-selector/ - - -// Selectors -$.ui.focusable = function( element, hasTabindex ) { - var map, mapName, img, focusableIfVisible, fieldset, - nodeName = element.nodeName.toLowerCase(); - - if ( "area" === nodeName ) { - map = element.parentNode; - mapName = map.name; - if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { - return false; - } - img = $( "img[usemap='#" + mapName + "']" ); - return img.length > 0 && img.is( ":visible" ); - } - - if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { - focusableIfVisible = !element.disabled; - - if ( focusableIfVisible ) { - - // Form controls within a disabled fieldset are disabled. - // However, controls within the fieldset's legend do not get disabled. - // Since controls generally aren't placed inside legends, we skip - // this portion of the check. - fieldset = $( element ).closest( "fieldset" )[ 0 ]; - if ( fieldset ) { - focusableIfVisible = !fieldset.disabled; - } - } - } else if ( "a" === nodeName ) { - focusableIfVisible = element.href || hasTabindex; - } else { - focusableIfVisible = hasTabindex; - } - - return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); -}; - -// Support: IE 8 only -// IE 8 doesn't resolve inherit to visible/hidden for computed values -function visible( element ) { - var visibility = element.css( "visibility" ); - while ( visibility === "inherit" ) { - element = element.parent(); - visibility = element.css( "visibility" ); - } - return visibility === "visible"; -} - -$.extend( $.expr.pseudos, { - focusable: function( element ) { - return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); - } -} ); - -var focusable = $.ui.focusable; - - - -// Support: IE8 Only -// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop -// with a string, so we need to find the proper form. -var form = $.fn._form = function() { - return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); -}; - - -/*! - * jQuery UI Form Reset Mixin 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Form Reset Mixin -//>>group: Core -//>>description: Refresh input widgets when their form is reset -//>>docs: https://api.jqueryui.com/form-reset-mixin/ - - -var formResetMixin = $.ui.formResetMixin = { - _formResetHandler: function() { - var form = $( this ); - - // Wait for the form reset to actually happen before refreshing - setTimeout( function() { - var instances = form.data( "ui-form-reset-instances" ); - $.each( instances, function() { - this.refresh(); - } ); - } ); - }, - - _bindFormResetHandler: function() { - this.form = this.element._form(); - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ) || []; - if ( !instances.length ) { - - // We don't use _on() here because we use a single event handler per form - this.form.on( "reset.ui-form-reset", this._formResetHandler ); - } - instances.push( this ); - this.form.data( "ui-form-reset-instances", instances ); - }, - - _unbindFormResetHandler: function() { - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ); - instances.splice( $.inArray( this, instances ), 1 ); - if ( instances.length ) { - this.form.data( "ui-form-reset-instances", instances ); - } else { - this.form - .removeData( "ui-form-reset-instances" ) - .off( "reset.ui-form-reset" ); - } - } -}; - - -/*! - * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - * - */ - -//>>label: jQuery 1.8+ Support -//>>group: Core -//>>description: Support version 1.8.x and newer of jQuery core - - -// Support: jQuery 1.9.x or older -// $.expr[ ":" ] is deprecated. -if ( !$.expr.pseudos ) { - $.expr.pseudos = $.expr[ ":" ]; -} - -// Support: jQuery 1.11.x or older -// $.unique has been renamed to $.uniqueSort -if ( !$.uniqueSort ) { - $.uniqueSort = $.unique; -} - -// Support: jQuery 2.2.x or older. -// This method has been defined in jQuery 3.0.0. -// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js -if ( !$.escapeSelector ) { - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; - - var fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }; - - $.escapeSelector = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); - }; -} - -// Support: jQuery 3.4.x or older -// These methods have been defined in jQuery 3.5.0. -if ( !$.fn.even || !$.fn.odd ) { - $.fn.extend( { - even: function() { - return this.filter( function( i ) { - return i % 2 === 0; - } ); - }, - odd: function() { - return this.filter( function( i ) { - return i % 2 === 1; - } ); - } - } ); -} - -; -/*! - * jQuery UI Keycode 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Keycode -//>>group: Core -//>>description: Provide keycodes as keynames -//>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/ - - -var keycode = $.ui.keyCode = { - BACKSPACE: 8, - COMMA: 188, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38 -}; - - -/*! - * jQuery UI Labels 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: labels -//>>group: Core -//>>description: Find all the labels associated with a given input -//>>docs: https://api.jqueryui.com/labels/ - - -var labels = $.fn.labels = function() { - var ancestor, selector, id, labels, ancestors; - - if ( !this.length ) { - return this.pushStack( [] ); - } - - // Check control.labels first - if ( this[ 0 ].labels && this[ 0 ].labels.length ) { - return this.pushStack( this[ 0 ].labels ); - } - - // Support: IE <= 11, FF <= 37, Android <= 2.3 only - // Above browsers do not support control.labels. Everything below is to support them - // as well as document fragments. control.labels does not work on document fragments - labels = this.eq( 0 ).parents( "label" ); - - // Look for the label based on the id - id = this.attr( "id" ); - if ( id ) { - - // We don't search against the document in case the element - // is disconnected from the DOM - ancestor = this.eq( 0 ).parents().last(); - - // Get a full set of top level ancestors - ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); - - // Create a selector for the label based on the id - selector = "label[for='" + $.escapeSelector( id ) + "']"; - - labels = labels.add( ancestors.find( selector ).addBack( selector ) ); - - } - - // Return whatever we have found for labels - return this.pushStack( labels ); -}; - - -/*! - * jQuery UI Scroll Parent 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: scrollParent -//>>group: Core -//>>description: Get the closest ancestor element that is scrollable. -//>>docs: https://api.jqueryui.com/scrollParent/ - - -var scrollParent = $.fn.scrollParent = function( includeHidden ) { - var position = this.css( "position" ), - excludeStaticParent = position === "absolute", - overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, - scrollParent = this.parents().filter( function() { - var parent = $( this ); - if ( excludeStaticParent && parent.css( "position" ) === "static" ) { - return false; - } - return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + - parent.css( "overflow-x" ) ); - } ).eq( 0 ); - - return position === "fixed" || !scrollParent.length ? - $( this[ 0 ].ownerDocument || document ) : - scrollParent; -}; - - -/*! - * jQuery UI Tabbable 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: :tabbable Selector -//>>group: Core -//>>description: Selects elements which can be tabbed to. -//>>docs: https://api.jqueryui.com/tabbable-selector/ - - -var tabbable = $.extend( $.expr.pseudos, { - tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ), - hasTabindex = tabIndex != null; - return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); - } -} ); - - -/*! - * jQuery UI Unique ID 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: uniqueId -//>>group: Core -//>>description: Functions to generate and remove uniqueId's -//>>docs: https://api.jqueryui.com/uniqueId/ - - -var uniqueId = $.fn.extend( { - uniqueId: ( function() { - var uuid = 0; - - return function() { - return this.each( function() { - if ( !this.id ) { - this.id = "ui-id-" + ( ++uuid ); - } - } ); - }; - } )(), - - removeUniqueId: function() { - return this.each( function() { - if ( /^ui-id-\d+$/.test( this.id ) ) { - $( this ).removeAttr( "id" ); - } - } ); - } -} ); - - -/*! - * jQuery UI Accordion 1.13.3 - * https://jqueryui.com - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license. - * https://jquery.org/license - */ - -//>>label: Accordion -//>>group: Widgets -/* eslint-disable max-len */ -//>>description: Displays collapsible content panels for presenting information in a limited amount of space. -/* eslint-enable max-len */ -//>>docs: https://api.jqueryui.com/accordion/ -//>>demos: https://jqueryui.com/accordion/ -//>>css.structure: ../../themes/base/core.css -//>>css.structure: ../../themes/base/accordion.css -//>>css.theme: ../../themes/base/theme.css - - -var widgetsAccordion = $.widget( "ui.accordion", { - version: "1.13.3", - options: { - active: 0, - animate: {}, - classes: { - "ui-accordion-header": "ui-corner-top", - "ui-accordion-header-collapsed": "ui-corner-all", - "ui-accordion-content": "ui-corner-bottom" - }, - collapsible: false, - event: "click", - header: function( elem ) { - return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() ); - }, - heightStyle: "auto", - icons: { - activeHeader: "ui-icon-triangle-1-s", - header: "ui-icon-triangle-1-e" - }, - - // Callbacks - activate: null, - beforeActivate: null - }, - - hideProps: { - borderTopWidth: "hide", - borderBottomWidth: "hide", - paddingTop: "hide", - paddingBottom: "hide", - height: "hide" - }, - - showProps: { - borderTopWidth: "show", - borderBottomWidth: "show", - paddingTop: "show", - paddingBottom: "show", - height: "show" - }, - - _create: function() { - var options = this.options; - - this.prevShow = this.prevHide = $(); - this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); - this.element.attr( "role", "tablist" ); - - // Don't allow collapsible: false and active: false / null - if ( !options.collapsible && ( options.active === false || options.active == null ) ) { - options.active = 0; - } - - this._processPanels(); - - // handle negative values - if ( options.active < 0 ) { - options.active += this.headers.length; - } - this._refresh(); - }, - - _getCreateEventData: function() { - return { - header: this.active, - panel: !this.active.length ? $() : this.active.next() - }; - }, - - _createIcons: function() { - var icon, children, - icons = this.options.icons; - - if ( icons ) { - icon = $( "" ); - this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); - icon.prependTo( this.headers ); - children = this.active.children( ".ui-accordion-header-icon" ); - this._removeClass( children, icons.header ) - ._addClass( children, null, icons.activeHeader ) - ._addClass( this.headers, "ui-accordion-icons" ); - } - }, - - _destroyIcons: function() { - this._removeClass( this.headers, "ui-accordion-icons" ); - this.headers.children( ".ui-accordion-header-icon" ).remove(); - }, - - _destroy: function() { - var contents; - - // Clean up main element - this.element.removeAttr( "role" ); - - // Clean up headers - this.headers - .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) - .removeUniqueId(); - - this._destroyIcons(); - - // Clean up content panels - contents = this.headers.next() - .css( "display", "" ) - .removeAttr( "role aria-hidden aria-labelledby" ) - .removeUniqueId(); - - if ( this.options.heightStyle !== "content" ) { - contents.css( "height", "" ); - } - }, - - _setOption: function( key, value ) { - if ( key === "active" ) { - - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } - - if ( key === "event" ) { - if ( this.options.event ) { - this._off( this.headers, this.options.event ); - } - this._setupEvents( value ); - } - - this._super( key, value ); - - // Setting collapsible: false while collapsed; open first panel - if ( key === "collapsible" && !value && this.options.active === false ) { - this._activate( 0 ); - } - - if ( key === "icons" ) { - this._destroyIcons(); - if ( value ) { - this._createIcons(); - } - } - }, - - _setOptionDisabled: function( value ) { - this._super( value ); - - this.element.attr( "aria-disabled", value ); - - // Support: IE8 Only - // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE - // so we need to add the disabled class to the headers and panels - this._toggleClass( null, "ui-state-disabled", !!value ); - this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", - !!value ); - }, - - _keydown: function( event ) { - if ( event.altKey || event.ctrlKey ) { - return; - } - - var keyCode = $.ui.keyCode, - length = this.headers.length, - currentIndex = this.headers.index( event.target ), - toFocus = false; - - switch ( event.keyCode ) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[ ( currentIndex + 1 ) % length ]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - this._eventHandler( event ); - break; - case keyCode.HOME: - toFocus = this.headers[ 0 ]; - break; - case keyCode.END: - toFocus = this.headers[ length - 1 ]; - break; - } - - if ( toFocus ) { - $( event.target ).attr( "tabIndex", -1 ); - $( toFocus ).attr( "tabIndex", 0 ); - $( toFocus ).trigger( "focus" ); - event.preventDefault(); - } - }, - - _panelKeyDown: function( event ) { - if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { - $( event.currentTarget ).prev().trigger( "focus" ); - } - }, - - refresh: function() { - var options = this.options; - this._processPanels(); - - // Was collapsed or no panel - if ( ( options.active === false && options.collapsible === true ) || - !this.headers.length ) { - options.active = false; - this.active = $(); - - // active false only when collapsible is true - } else if ( options.active === false ) { - this._activate( 0 ); - - // was active, but active panel is gone - } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - - // all remaining panel are disabled - if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { - options.active = false; - this.active = $(); - - // activate previous panel - } else { - this._activate( Math.max( 0, options.active - 1 ) ); - } - - // was active, active panel still exists - } else { - - // make sure active index is correct - options.active = this.headers.index( this.active ); - } - - this._destroyIcons(); - - this._refresh(); - }, - - _processPanels: function() { - var prevHeaders = this.headers, - prevPanels = this.panels; - - if ( typeof this.options.header === "function" ) { - this.headers = this.options.header( this.element ); - } else { - this.headers = this.element.find( this.options.header ); - } - this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", - "ui-state-default" ); - - this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); - this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); - - // Avoid memory leaks (#10056) - if ( prevPanels ) { - this._off( prevHeaders.not( this.headers ) ); - this._off( prevPanels.not( this.panels ) ); - } - }, - - _refresh: function() { - var maxHeight, - options = this.options, - heightStyle = options.heightStyle, - parent = this.element.parent(); - - this.active = this._findActive( options.active ); - this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) - ._removeClass( this.active, "ui-accordion-header-collapsed" ); - this._addClass( this.active.next(), "ui-accordion-content-active" ); - this.active.next().show(); - - this.headers - .attr( "role", "tab" ) - .each( function() { - var header = $( this ), - headerId = header.uniqueId().attr( "id" ), - panel = header.next(), - panelId = panel.uniqueId().attr( "id" ); - header.attr( "aria-controls", panelId ); - panel.attr( "aria-labelledby", headerId ); - } ) - .next() - .attr( "role", "tabpanel" ); - - this.headers - .not( this.active ) - .attr( { - "aria-selected": "false", - "aria-expanded": "false", - tabIndex: -1 - } ) - .next() - .attr( { - "aria-hidden": "true" - } ) - .hide(); - - // Make sure at least one header is in the tab order - if ( !this.active.length ) { - this.headers.eq( 0 ).attr( "tabIndex", 0 ); - } else { - this.active.attr( { - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - } ) - .next() - .attr( { - "aria-hidden": "false" - } ); - } - - this._createIcons(); - - this._setupEvents( options.event ); - - if ( heightStyle === "fill" ) { - maxHeight = parent.height(); - this.element.siblings( ":visible" ).each( function() { - var elem = $( this ), - position = elem.css( "position" ); - - if ( position === "absolute" || position === "fixed" ) { - return; - } - maxHeight -= elem.outerHeight( true ); - } ); - - this.headers.each( function() { - maxHeight -= $( this ).outerHeight( true ); - } ); - - this.headers.next() - .each( function() { - $( this ).height( Math.max( 0, maxHeight - - $( this ).innerHeight() + $( this ).height() ) ); - } ) - .css( "overflow", "auto" ); - } else if ( heightStyle === "auto" ) { - maxHeight = 0; - this.headers.next() - .each( function() { - var isVisible = $( this ).is( ":visible" ); - if ( !isVisible ) { - $( this ).show(); - } - maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); - if ( !isVisible ) { - $( this ).hide(); - } - } ) - .height( maxHeight ); - } - }, - - _activate: function( index ) { - var active = this._findActive( index )[ 0 ]; - - // Trying to activate the already active panel - if ( active === this.active[ 0 ] ) { - return; - } - - // Trying to collapse, simulate a click on the currently active header - active = active || this.active[ 0 ]; - - this._eventHandler( { - target: active, - currentTarget: active, - preventDefault: $.noop - } ); - }, - - _findActive: function( selector ) { - return typeof selector === "number" ? this.headers.eq( selector ) : $(); - }, - - _setupEvents: function( event ) { - var events = { - keydown: "_keydown" - }; - if ( event ) { - $.each( event.split( " " ), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - } ); - } - - this._off( this.headers.add( this.headers.next() ) ); - this._on( this.headers, events ); - this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); - this._hoverable( this.headers ); - this._focusable( this.headers ); - }, - - _eventHandler: function( event ) { - var activeChildren, clickedChildren, - options = this.options, - active = this.active, - clicked = $( event.currentTarget ), - clickedIsActive = clicked[ 0 ] === active[ 0 ], - collapsing = clickedIsActive && options.collapsible, - toShow = collapsing ? $() : clicked.next(), - toHide = active.next(), - eventData = { - oldHeader: active, - oldPanel: toHide, - newHeader: collapsing ? $() : clicked, - newPanel: toShow - }; - - event.preventDefault(); - - if ( - - // click on active header, but not collapsible - ( clickedIsActive && !options.collapsible ) || - - // allow canceling activation - ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { - return; - } - - options.active = collapsing ? false : this.headers.index( clicked ); - - // When the call to ._toggle() comes after the class changes - // it causes a very odd bug in IE 8 (see #6720) - this.active = clickedIsActive ? $() : clicked; - this._toggle( eventData ); - - // Switch classes - // corner classes on the previously active header stay after the animation - this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); - if ( options.icons ) { - activeChildren = active.children( ".ui-accordion-header-icon" ); - this._removeClass( activeChildren, null, options.icons.activeHeader ) - ._addClass( activeChildren, null, options.icons.header ); - } - - if ( !clickedIsActive ) { - this._removeClass( clicked, "ui-accordion-header-collapsed" ) - ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); - if ( options.icons ) { - clickedChildren = clicked.children( ".ui-accordion-header-icon" ); - this._removeClass( clickedChildren, null, options.icons.header ) - ._addClass( clickedChildren, null, options.icons.activeHeader ); - } - - this._addClass( clicked.next(), "ui-accordion-content-active" ); - } - }, - - _toggle: function( data ) { - var toShow = data.newPanel, - toHide = this.prevShow.length ? this.prevShow : data.oldPanel; - - // Handle activating a panel during the animation for another activation - this.prevShow.add( this.prevHide ).stop( true, true ); - this.prevShow = toShow; - this.prevHide = toHide; - - if ( this.options.animate ) { - this._animate( toShow, toHide, data ); - } else { - toHide.hide(); - toShow.show(); - this._toggleComplete( data ); - } - - toHide.attr( { - "aria-hidden": "true" - } ); - toHide.prev().attr( { - "aria-selected": "false", - "aria-expanded": "false" - } ); - - // if we're switching panels, remove the old header from the tab order - // if we're opening from collapsed state, remove the previous header from the tab order - // if we're collapsing, then keep the collapsing header in the tab order - if ( toShow.length && toHide.length ) { - toHide.prev().attr( { - "tabIndex": -1, - "aria-expanded": "false" - } ); - } else if ( toShow.length ) { - this.headers.filter( function() { - return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; - } ) - .attr( "tabIndex", -1 ); - } - - toShow - .attr( "aria-hidden", "false" ) - .prev() - .attr( { - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - } ); - }, - - _animate: function( toShow, toHide, data ) { - var total, easing, duration, - that = this, - adjust = 0, - boxSizing = toShow.css( "box-sizing" ), - down = toShow.length && - ( !toHide.length || ( toShow.index() < toHide.index() ) ), - animate = this.options.animate || {}, - options = down && animate.down || animate, - complete = function() { - that._toggleComplete( data ); - }; - - if ( typeof options === "number" ) { - duration = options; - } - if ( typeof options === "string" ) { - easing = options; - } - - // fall back from options to animation in case of partial down settings - easing = easing || options.easing || animate.easing; - duration = duration || options.duration || animate.duration; - - if ( !toHide.length ) { - return toShow.animate( this.showProps, duration, easing, complete ); - } - if ( !toShow.length ) { - return toHide.animate( this.hideProps, duration, easing, complete ); - } - - total = toShow.show().outerHeight(); - toHide.animate( this.hideProps, { - duration: duration, - easing: easing, - step: function( now, fx ) { - fx.now = Math.round( now ); - } - } ); - toShow - .hide() - .animate( this.showProps, { - duration: duration, - easing: easing, - complete: complete, - step: function( now, fx ) { - fx.now = Math.round( now ); - if ( fx.prop !== "height" ) { - if ( boxSizing === "content-box" ) { - adjust += fx.now; - } - } else if ( that.options.heightStyle !== "content" ) { - fx.now = Math.round( total - toHide.outerHeight() - adjust ); - adjust = 0; - } - } - } ); - }, - - _toggleComplete: function( data ) { - var toHide = data.oldPanel, - prev = toHide.prev(); - - this._removeClass( toHide, "ui-accordion-content-active" ); - this._removeClass( prev, "ui-accordion-header-active" ) - ._addClass( prev, "ui-accordion-header-collapsed" ); - - // Work around for rendering bug in IE (#5421) - if ( toHide.length ) { - toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; - } - this._trigger( "activate", null, data ); - } -} ); - - - -var safeActiveElement = $.ui.safeActiveElement = function( document ) { - var activeElement; - - // Support: IE 9 only - // IE9 throws an "Unspecified error" accessing document.activeElement from an