diff --git a/build/minified/collections/menu.min.css b/build/minified/collections/menu.min.css index 860a786e2..9a3db4639 100644 --- a/build/minified/collections/menu.min.css +++ b/build/minified/collections/menu.min.css @@ -1 +1 @@ -.ui.menu{margin:1rem 0rem;background-color:#FFF;font-size:0;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);-webkit-border-radius:.1875rem;-moz-border-radius:.1875rem;border-radius:.1875rem}.ui.menu:first-child{margin-top:0rem}.ui.menu:last-child{margin-bottom:0rem}.ui.menu:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.menu>.item:first-child{border-radius:.1875em 0 0 .1875em}.ui.menu>.item:last-child{border-radius:0 .1875em .1875em 0}.ui.menu .item,.ui.menu .item>a{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);vertical-align:middle;line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-moz-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-o-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-ms-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;transition:opacity .2s ease,background .2s ease,box-shadow .2s ease}.ui.menu .item,.ui.menu .item>a{color:rgba(0,0,0,.75)}.ui.menu .item>a:hover{background-color:rgba(0,0,0,.03);color:rgba(0,0,0,.8)}.ui.menu .item .item,.ui.menu .item .item>a{color:rgba(30,30,30,.8)}.ui.menu .item .item .item,.ui.menu .item .item .item>a{color:rgba(30,30,30,.6)}.ui.menu .dropdown.item .menu .item,.ui.menu .dropdown.item .menu .item a{color:rgba(0,0,0,.75)}.ui.menu .item .menu a.item:hover,.ui.menu .item .menu a.item.hover,.ui.menu .item .menu .link.item:hover,.ui.menu .item .menu .link.item.hover{color:rgba(35,35,35,.95)}.ui.menu .dropdown.item .menu .item a:hover{color:rgba(0,0,0,.9)}.ui.menu .active.item,.ui.menu .active.item a{color:rgba(0,0,0,.95);-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui.menu .item{position:relative;display:inline-block;padding:.75em .95em;border-top:0 solid rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);-moz-user-select:-moz-none;-khtml-user-select:none;user-select:none}.ui.menu .item>a{display:block;margin:-.75em -.95em;padding:.75em .95em}.ui.menu .menu{margin:0}.ui.menu .item.left,.ui.menu .menu.left{float:left}.ui.menu .item.right,.ui.menu .menu.right{float:right}.ui.menu .item:before{position:absolute;content:'';top:0;right:0;width:1px;height:100%;background-image:-webkit-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-moz-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-o-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-ms-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%)}.ui.menu .menu.right .item:before,.ui.menu .item.right:before{right:auto;left:0}.ui.menu .item:last-child::before{display:none}.ui.menu .text.item>*,.ui.menu .item>p:only-child{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3;color:rgba(0,0,0,.6)}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:only-child{margin:0}.ui.menu .input,.ui.menu .input input{width:100%}.ui.menu input{margin:.25em 0;padding-top:.55em;padding-bottom:.55em}.ui.menu .header.item{background-color:rgba(0,0,0,.04);margin:0}.ui.vertical.menu .header.item{font-weight:700}.ui.menu .dropdown.item .menu .item{color:rgba(0,0,0,.75)}.ui.menu .ui.dropdown .menu .item:before{display:none}.ui.menu .item>.label,.ui.menu .item>a>.label{font-size:.875em;margin:-.3em 0 -.3em .3em;padding:.3em .8em;vertical-align:baseline;text-transform:none}.ui.menu .item>.floating.label,.ui.menu .item>a>.floating.label{padding:.3em .8em}.ui.menu .item>img:only-child{display:block;max-width:100%;margin:0 auto}.ui.link.menu .item:hover,.ui.menu .item.hover,.ui.menu .link.item:hover,.ui.menu a.item:hover,.ui.menu .ui.dropdown .menu .item.hover,.ui.menu .ui.dropdown .menu .item:hover{cursor:pointer;background-color:rgba(0,0,0,.02)}.ui.menu .ui.dropdown.hover,.ui.menu .ui.dropdown:hover{-webkit-border-bottom-right-radius:0;-moz-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui.link.menu .item:active,.ui.menu .item.down,.ui.menu .link.item:active,.ui.menu a.item:active,.ui.menu .item>a:active,.ui.menu .ui.dropdown .menu .item.down,.ui.menu .ui.dropdown .menu .item:active{background-color:rgba(0,0,0,.05)}.ui.menu .active.item{padding-top:.55em;border-top:.2em solid rgba(50,50,50,.8);color:rgba(0,0,0,.95);background-color:rgba(0,0,0,.01)}.ui.vertical.menu .active.item{border-left:.2em solid rgba(50,50,50,.8);padding-top:.75em;padding-left:.76em;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.vertical.menu>.active.item:first-child{-webkit-border-radius:0 .1875em 0 0;-moz-border-radius:0 .1875em 0 0;border-radius:0 .1875em 0 0}.ui.vertical.menu>.active.item:last-child{-webkit-border-radius:0 0 .1875em;-moz-border-radius:0 0 .1875em;border-radius:0 0 .1875em}.ui.vertical.menu>.active.item:only-child{-webkit-border-radius:0 .1875em .1875em 0;-moz-border-radius:0 .1875em .1875em 0;border-radius:0 .1875em .1875em 0}.ui.vertical.menu .active.item .menu .active.item{border-left:0}.ui.vertical.menu .active.item .menu .active.item{padding-left:1.5rem}.ui.vertical.menu .item .menu .active.item{background-color:rgba(0,0,0,.03);border-left:0}.ui.menu .item.disabled,.ui.menu .item.disabled:hover,.ui.menu .item.disabled.hover{cursor:default;color:rgba(0,0,0,.2);background-color:transparent}.ui.menu.loading{position:relative}.ui.menu.loading:after{position:absolute;top:0;left:0;content:'';width:100%;height:100%;background:rgba(255,255,255,.8) url(../images/loader-large.gif) no-repeat 50% 50%;visibility:visible}.ui.vertical.menu .item{display:block;border-top:0;border-left:0 solid rgba(0,0,0,0);border-right:0}.ui.vertical.menu>.item:first-child{border-radius:.1875em .1875em 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .1875em .1875em}.ui.vertical.menu .item>.icon{float:right;width:1.22em;margin:0 0 0 .5em}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-moz-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-ms-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%)}.ui.vertical.menu .item:first-child:before{background-image:none}.ui.vertical.menu .item:last-child::before{display:block}.ui.vertical.menu .dropdown.item>i{float:right}.ui.vertical.menu .simple.dropdown.item .menu{top:0!important;left:100%;margin:0}.ui.vertical.menu .dropdown.item .menu .item{font-size:.875em;padding:.75em 1em}.ui.vertical.menu .dropdown.item .menu .item .icon{margin-right:0}.ui.vertical.menu .item>.menu{margin:.5em -.95em 0}.ui.vertical.menu .item>.menu>.item{padding:.5rem 1.5rem;font-size:.875em}.ui.vertical.menu .item>.menu>.item:before{display:none}.ui.vertical.menu .item>.menu>.item>a{margin:-.5rem -1.5rem;padding:.5rem 1.5rem}.ui.tiered.menu>.menu>.item{color:rgba(0,0,0,.5)}.ui.tiered.menu>.menu>.item:hover,.ui.tiered.menu>.menu>.item.hover{color:rgba(0,0,0,.8)}.ui.tiered.menu .item.active{box-shadow:0 1px 0 0 #FBFBFB;color:rgba(0,0,0,.8)}.ui.tiered.menu .sub.menu{background-color:rgba(0,0,0,.01);border-radius:0;border-top:1px solid rgba(0,0,0,.1);box-shadow:none;color:#FFF}.ui.tiered.menu .sub.menu .item{font-size:.875rem}.ui.tiered.menu .sub.menu .item:before{background-image:none}.ui.tiered.menu .sub.menu .active.item{padding-top:.75em;background-color:transparent;border-radius:0;border-top:medium none;box-shadow:none;color:rgba(0,0,0,.7)}.ui.inverted.tiered.menu>.menu>.item{color:rgba(255,255,255,.5)}.ui.inverted.tiered.menu .sub.menu{background-color:rgba(0,0,0,.2)}.ui.inverted.tiered.menu .sub.menu .item{color:rgba(255,255,255,.6)}.ui.inverted.tiered.menu>.menu>.item:hover,.ui.inverted.tiered.menu>.menu>.item.hover{color:rgba(255,255,255,.9)}.ui.inverted.tiered.menu>.sub.menu>.active.item,.ui.inverted.tiered.menu>.menu>.active.item{color:#fff;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.pointing.tiered.menu>.menu>.item:after{display:none}.ui.pointing.tiered.menu>.sub.menu>.item:after{display:block}.ui.menu .green.active.item,.ui.green.menu .active.item{border-color:#A1CF64!important}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#EF4D6D!important}.ui.menu .blue.active.item,.ui.blue.menu .active.item{border-color:#6ECFF5!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#564F8A!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#F05940!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00B5AD!important}.ui.pagination.menu{margin:0;display:inline-block}.ui.pagination.menu .item{min-width:2.7em;min-height:2.55em;text-align:center}.ui.pagination.menu.floated{display:block}.ui.pagination.menu .active.item{border-top:0;padding-top:.75em;background-color:rgba(0,0,0,.05)}.ui.inverted.menu{background-color:#333;box-shadow:none}.ui.inverted.menu .header.item{margin:0;background-color:rgba(0,0,0,.3);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a{color:#FFF}.ui.inverted.menu .item .item,.ui.inverted.menu .item .item>a{color:rgba(255,255,255,.8)}.ui.inverted.menu .item .item>a:hover{background-color:rgba(255,255,255,.03);color:rgba(255,255,255,.9)}.ui.inverted.menu .item>p:only-child{color:rgba(255,255,255,.75)}.ui.inverted.menu .dropdown.item .menu .item,.ui.inverted.menu .dropdown.item .menu .item a{color:rgba(0,0,0,.75)!important}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover,.ui.inverted.menu .item.disabled.hover{color:rgba(255,255,255,.2)}.ui.inverted.menu .item:before{background-image:-webkit-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.vertical.inverted.menu .item:before{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.link.inverted.menu .item:hover,.ui.inverted.menu .item.hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.inverted.menu .dropdown.item.hover,.ui.inverted.menu .dropdown.item:hover{background-color:rgba(255,255,255,.1)}.ui.inverted.menu a.item:hover,.ui.inverted.menu .item.hover,.ui.inverted.menu .item>a:hover,.ui.inverted.menu .item .menu a.item:hover,.ui.inverted.menu .item .menu a.item.hover,.ui.inverted.menu .item .menu .link.item:hover,.ui.inverted.menu .item .menu .link.item.hover{color:#fff}.ui.inverted.menu .item.down,.ui.inverted.menu a.item:active,.ui.inverted.menu .item>a:active,.ui.inverted.menu .item.down,.ui.inverted.menu .dropdown.item:active,.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background-color:rgba(255,255,255,.15)}.ui.inverted.menu .active.item{border-color:transparent!important;background-color:rgba(255,255,255,.2)}.ui.inverted.menu .active.item,.ui.inverted.menu .active.item a{color:#fff}.ui.inverted.vertical.menu .item .menu .active.item{background-color:rgba(255,255,255,.2);color:#fff}.ui.inverted.pointing.menu .active.item:after{background-color:#505050;box-shadow:none}.ui.inverted.pointing.menu .active.item:hover:after{background-color:#3B3B3B}.ui.floated.menu{float:left;margin:0rem .5rem 0rem 0rem}.ui.right.floated.menu{float:right;margin:0rem 0rem 0rem .5rem}.ui.grey.menu{background-color:#F0F0F0}.ui.inverted.green.menu{background-color:#A1CF64}.ui.inverted.green.pointing.menu .active.item:after{background-color:#A1CF64}.ui.inverted.red.menu{background-color:#EF4D6D}.ui.inverted.red.pointing.menu .active.item:after{background-color:#F16883}.ui.inverted.blue.menu{background-color:#6ECFF5}.ui.inverted.blue.pointing.menu .active.item:after{background-color:#6ECFF5}.ui.inverted.purple.menu{background-color:#564F8A}.ui.inverted.purple.pointing.menu .active.item:after{background-color:#564F8A}.ui.inverted.orange.menu{background-color:#F05940}.ui.inverted.orange.pointing.menu .active.item:after{background-color:#F05940}.ui.inverted.teal.menu{background-color:#00B5AD}.ui.inverted.teal.pointing.menu .active.item:after{background-color:#00B5AD}.ui.text.menu{background-color:transparent;margin:1rem -1rem;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.text.menu>.item{opacity:.6;margin:0 1em;padding:0;min-height:0!important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.6);-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.ui.text.menu>.item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(50,50,50,.8);font-size:.875rem;padding:0;text-transform:uppercase;font-weight:700}.ui.text.menu .header.item>a{background-color:transparent}.ui.text.item.menu .item{margin:0}.ui.vertical.text.menu{margin:1rem 0}.ui.vertical.text.menu:first-child{margin-top:0rem}.ui.vertical.text.menu:last-child{margin-bottom:0rem}.ui.vertical.text.menu .item{float:left;clear:left;margin:.5em 0}.ui.vertical.text.menu .item>.icon{float:none;margin:0 .75em 0 0}.ui.vertical.text.menu .header.item{margin:.8em 0}.ui.text.menu .item.hover,.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;padding:0;border:0;opacity:1;font-weight:700}.ui.text.pointing.menu .active.item:after{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.text.attached.menu{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.green.text.menu .active.item{color:#A1CF64}.ui.red.text.menu .active.item{color:#EF4D6D}.ui.blue.text.menu .active.item{color:#6ECFF5}.ui.purple.text.menu .active.item{color:#564F8A}.ui.orange.text.menu .active.item{color:#F05940}.ui.teal.text.menu .active.item{color:#00B5AD}.ui.secondary.menu{background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.menu>.item{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border:0;min-height:0!important;margin:0 .25em;padding:.5em 1em;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.secondary.menu>.item:before{display:none!important}.ui.secondary.menu .link.item,.ui.secondary.menu a.item{color:rgba(0,0,0,.4)}.ui.secondary.menu .header.item{background-color:transparent;border-right:.1em solid rgba(0,0,0,.1);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.menu>.active.item{border-top:0;padding-top:.5em;background-color:rgba(0,0,0,.08);color:rgba(0,0,0,.8)}.ui.secondary.vertical.menu>.active.item{-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.secondary.inverted.menu>.active.item{background-color:rgba(255,255,255,.2)}.ui.secondary.item.menu>.item{margin:0}.ui.secondary.attached.menu{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.secondary.pointing.menu{border-bottom:3px solid rgba(0,0,0,.1)}.ui.secondary.pointing.menu>.item{margin:0 0 -3px;padding:.6em .95em;border-bottom:3px solid rgba(0,0,0,0);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.ui.secondary.pointing.menu>.item:after{display:none}.ui.secondary.pointing.menu>.item.hover,.ui.secondary.pointing.menu>.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.pointing.menu>.item:active,.ui.secondary.pointing.menu>.item.down{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.pointing.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4)}.ui.secondary.vertical.pointing.menu{border:0;border-right:3px solid rgba(0,0,0,.1)}.ui.secondary.vertical.menu>.item{border:0;margin:0 0 .3em;padding:.6em .8em;-webkit-border-radius:.1875em;-moz-border-radius:.1875em;border-radius:.1875em}.ui.secondary.vertical.menu>.header.item{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.vertical.pointing.menu>.item{margin:0 -3px 0 0;border-bottom:0;border-right:3px solid transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.vertical.pointing.menu>.item.hover,.ui.secondary.vertical.pointing.menu>.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.vertical.pointing.menu>.item:active,.ui.secondary.vertical.pointing.menu>.item.down{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.vertical.pointing.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4);color:rgba(0,0,0,.85)}.ui.secondary.inverted.pointing.menu{border-bottom:3px solid rgba(255,255,255,.1)}.ui.secondary.inverted.pointing.menu>.item{color:rgba(255,255,255,.7)}.ui.secondary.inverted.pointing.menu>.item.hover,.ui.secondary.inverted.pointing.menu>.item:hover{color:rgba(255,255,255,.85)}.ui.secondary.inverted.pointing.menu>.item:active,.ui.secondary.inverted.pointing.menu>.item.down{border-color:rgba(255,255,255,.4)}.ui.secondary.inverted.pointing.menu>.item.active{border-color:rgba(255,255,255,.8);color:#fff}.ui.secondary.inverted.vertical.pointing.menu{border-right:3px solid rgba(255,255,255,.1);border-bottom:0}.ui.secondary.inverted.vertical.pointing.menu .item:active,.ui.secondary.inverted.vertical.pointing.menu .item.down{box-shadow:.2em 0 0 0 rgba(255,255,255,.2)}.ui.secondary.inverted.vertical.pointing.menu .item.active{box-shadow:.2em 0 0 0 rgba(255,255,255,.4)}.ui.icon.menu,.ui.vertical.icon.menu{width:auto;display:inline-block;min-height:0}.ui.icon.menu .item{text-align:center;color:rgba(60,60,60,.7)}.ui.icon.menu .item .icon{display:block;float:none;opacity:1;margin:0 auto}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item .icon{margin:0}.ui.inverted.icon.menu .item{color:rgba(255,255,255,.8)}.ui.inverted.icon.menu .icon{color:#fff}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu .icon{display:block;font-size:1.5em;margin:0 auto .3em}.ui.fitted.menu .item,.ui.fitted.menu .item>a,.ui.fitted.menu .item .menu .item,.ui.fitted.menu .item .menu .item>a,.ui.menu .fitted.item,.ui.menu .fitted.item>a{padding-top:0;padding-bottom:0}.ui.tight.menu .item,.ui.tight.menu .item>a,.ui.tight.menu .item .menu .item,.ui.tight.menu .item .menu .item>a,.ui.menu .tight.item,.ui.menu .tight.item>a{padding:0}.ui.borderless.menu .item:before,.ui.borderless.menu .item>a:before,.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item .menu .item>a:before,.ui.menu .borderless.item:before,.ui.menu .borderless.item>a:before{background-image:none}.ui.compact.menu{display:inline-block;margin:0;vertical-align:middle}.ui.vertical.compact.menu{width:auto!important}.ui.menu.fluid,.ui.vertical.menu.fluid{display:block!important;width:100%}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;text-align:center}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:10;margin:0;border:0;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.ui.menu.fixed.top{top:0;left:0;right:auto;bottom:auto}.ui.menu.fixed.right{top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui.menu.fixed.bottom{bottom:0;left:0;top:auto;right:auto}.ui.menu.fixed.left{top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.pointing.menu .active.item:after{position:absolute;bottom:-.35em;left:50%;content:"";margin-left:-.3em;width:.6em;height:.6em;border:0;border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);background-image:none;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-transition:background .2s ease;-moz-transition:background .2s ease;-o-transition:background .2s ease;-ms-transition:background .2s ease;transition:background .2s ease}.ui.pointing.menu .active.item .menu .active.item:after{display:none}.ui.vertical.pointing.menu .active.item:after{position:absolute;top:50%;margin-top:-.3em;right:-.4em;bottom:auto;left:auto;border:0;border-top:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ui.pointing.menu .active.item:after{background-color:#FCFCFC}.ui.pointing.menu .active.item.hover:after,.ui.pointing.menu .active.item:hover:after{background-color:#FAFAFA}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#F4F4F4}.ui.pointing.menu .active.item.down:after,.ui.pointing.menu .active.item:active:after{background-color:#F0F0F0}.ui.menu.attached{margin:0rem;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-moz-box-shadow:0 0 0 1px #DDD;-webkit-box-shadow:0 0 0 1px #DDD;box-shadow:0 0 0 1px #DDD}.ui.top.attached.menu{-moz-border-radius:.1875em .1875em 0 0;-webkit-border-radius:.1875em .1875em 0 0;border-radius:.1875em .1875em 0 0}.ui.menu.bottom.attached{-moz-border-radius:0 0 .1875em .1875em;-webkit-border-radius:0 0 .1875em .1875em;border-radius:0 0 .1875em .1875em}.ui.vertical.menu .item{min-height:0!important}.ui.small.menu .item{font-size:.875rem;min-height:2.25rem}.ui.small.vertical.menu{width:13rem}.ui.menu .item{font-size:1rem;min-height:2.5em}.ui.vertical.menu{width:15rem}.ui.large.menu .item{font-size:1.125rem}.ui.large.vertical.menu{width:18rem} \ No newline at end of file +.ui.menu{margin:1rem 0rem;background-color:#FFF;font-size:0;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);-webkit-border-radius:.1875rem;-moz-border-radius:.1875rem;border-radius:.1875rem}.ui.menu:first-child{margin-top:0rem}.ui.menu:last-child{margin-bottom:0rem}.ui.menu:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.menu>.item:first-child{border-radius:.1875em 0 0 .1875em}.ui.menu>.item:last-child{border-radius:0 .1875em .1875em 0}.ui.menu .item,.ui.menu .item>a{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);vertical-align:middle;line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-moz-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-o-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;-ms-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;transition:opacity .2s ease,background .2s ease,box-shadow .2s ease}.ui.menu .item,.ui.menu .item>a{color:rgba(0,0,0,.75)}.ui.menu .item>a:hover{background-color:rgba(0,0,0,.03);color:rgba(0,0,0,.8)}.ui.menu .item .item,.ui.menu .item .item>a{color:rgba(30,30,30,.8)}.ui.menu .item .item .item,.ui.menu .item .item .item>a{color:rgba(30,30,30,.6)}.ui.menu .dropdown.item .menu .item,.ui.menu .dropdown.item .menu .item a{color:rgba(0,0,0,.75)}.ui.menu .item .menu a.item:hover,.ui.menu .item .menu a.item.hover,.ui.menu .item .menu .link.item:hover,.ui.menu .item .menu .link.item.hover{color:rgba(35,35,35,.95)}.ui.menu .dropdown.item .menu .item a:hover{color:rgba(0,0,0,.9)}.ui.menu .active.item,.ui.menu .active.item a{color:rgba(0,0,0,.95);-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui.menu .item{position:relative;display:inline-block;padding:.75em .95em;border-top:0 solid rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);-moz-user-select:-moz-none;-khtml-user-select:none;user-select:none}.ui.menu .item>a{display:block;margin:-.75em -.95em;padding:.75em .95em}.ui.menu .menu{margin:0}.ui.menu .item.left,.ui.menu .menu.left{float:left}.ui.menu .item.right,.ui.menu .menu.right{float:right}.ui.menu .item:before{position:absolute;content:'';top:0;right:0;width:1px;height:100%;background-image:-webkit-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-moz-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-o-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-ms-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%)}.ui.menu .menu.right .item:before,.ui.menu .item.right:before{right:auto;left:0}.ui.menu .item:last-child::before{display:none}.ui.menu .text.item>*,.ui.menu .item>p:only-child{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3;color:rgba(0,0,0,.6)}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:only-child{margin:0}.ui.menu .input,.ui.menu .input input{width:100%}.ui.menu input{margin:.25em 0;padding-top:.55em;padding-bottom:.55em}.ui.menu .header.item{background-color:rgba(0,0,0,.04);margin:0}.ui.vertical.menu .header.item{font-weight:700}.ui.menu .dropdown.item .menu .item{color:rgba(0,0,0,.75)}.ui.menu .ui.dropdown .menu .item:before{display:none}.ui.menu .item>.label,.ui.menu .item>a>.label{font-size:.875em;margin:-.3em 0 -.3em .3em;padding:.3em .8em;vertical-align:baseline;text-transform:none}.ui.menu .item>.floating.label,.ui.menu .item>a>.floating.label{padding:.3em .8em}.ui.menu .item>img:only-child{display:block;max-width:100%;margin:0 auto}.ui.link.menu .item:hover,.ui.menu .item.hover,.ui.menu .link.item:hover,.ui.menu a.item:hover,.ui.menu .ui.dropdown .menu .item.hover,.ui.menu .ui.dropdown .menu .item:hover{cursor:pointer;background-color:rgba(0,0,0,.02)}.ui.menu .ui.dropdown.hover,.ui.menu .ui.dropdown:hover{-webkit-border-bottom-right-radius:0;-moz-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui.link.menu .item:active,.ui.menu .item.down,.ui.menu .link.item:active,.ui.menu a.item:active,.ui.menu .item>a:active,.ui.menu .ui.dropdown .menu .item.down,.ui.menu .ui.dropdown .menu .item:active{background-color:rgba(0,0,0,.05)}.ui.menu .active.item{padding-top:.55em;border-top:.2em solid rgba(50,50,50,.8);color:rgba(0,0,0,.95);background-color:rgba(0,0,0,.01)}.ui.vertical.menu .active.item{border-left:.2em solid rgba(50,50,50,.8);padding-top:.75em;padding-left:.76em;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.vertical.menu>.active.item:first-child{-webkit-border-radius:0 .1875em 0 0;-moz-border-radius:0 .1875em 0 0;border-radius:0 .1875em 0 0}.ui.vertical.menu>.active.item:last-child{-webkit-border-radius:0 0 .1875em;-moz-border-radius:0 0 .1875em;border-radius:0 0 .1875em}.ui.vertical.menu>.active.item:only-child{-webkit-border-radius:0 .1875em .1875em 0;-moz-border-radius:0 .1875em .1875em 0;border-radius:0 .1875em .1875em 0}.ui.vertical.menu .active.item .menu .active.item{border-left:0}.ui.vertical.menu .active.item .menu .active.item{padding-left:1.5rem}.ui.vertical.menu .item .menu .active.item{background-color:rgba(0,0,0,.03);border-left:0}.ui.menu .item.disabled,.ui.menu .item.disabled:hover,.ui.menu .item.disabled.hover{cursor:default;color:rgba(0,0,0,.2);background-color:transparent}.ui.menu.loading{position:relative}.ui.menu.loading:after{position:absolute;top:0;left:0;content:'';width:100%;height:100%;background:rgba(255,255,255,.8) url(../images/loader-large.gif) no-repeat 50% 50%;visibility:visible}.ui.vertical.menu .item{display:block;border-top:0;border-left:0 solid rgba(0,0,0,0);border-right:0}.ui.vertical.menu>.item:first-child{border-radius:.1875em .1875em 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .1875em .1875em}.ui.vertical.menu .item>.icon{float:right;width:1.22em;margin:0 0 0 .5em}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-moz-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-ms-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%)}.ui.vertical.menu .item:first-child:before{background-image:none}.ui.vertical.menu .item:last-child::before{display:block}.ui.vertical.menu .dropdown.item>i{float:right}.ui.vertical.menu .simple.dropdown.item .menu{top:0!important;left:100%;margin:0}.ui.vertical.menu .dropdown.item .menu .item{font-size:.875em;padding:.75em 1em}.ui.vertical.menu .dropdown.item .menu .item .icon{margin-right:0}.ui.vertical.menu .item>.menu{margin:.5em -.95em 0}.ui.vertical.menu .item>.menu>.item{padding:.5rem 1.5rem;font-size:.875em}.ui.vertical.menu .item>.menu>.item:before{display:none}.ui.vertical.menu .item>.menu>.item>a{margin:-.5rem -1.5rem;padding:.5rem 1.5rem}.ui.tiered.menu>.menu>.item{color:rgba(0,0,0,.5)}.ui.tiered.menu>.menu>.item:hover,.ui.tiered.menu>.menu>.item.hover{color:rgba(0,0,0,.8)}.ui.tiered.menu .item.active{box-shadow:0 1px 0 0 #FBFBFB;color:rgba(0,0,0,.8)}.ui.tiered.menu .sub.menu{background-color:rgba(0,0,0,.01);border-radius:0;border-top:1px solid rgba(0,0,0,.1);box-shadow:none;color:#FFF}.ui.tiered.menu .sub.menu .item{font-size:.875rem}.ui.tiered.menu .sub.menu .item:before{background-image:none}.ui.tiered.menu .sub.menu .active.item{padding-top:.75em;background-color:transparent;border-radius:0;border-top:medium none;box-shadow:none;color:rgba(0,0,0,.7)}.ui.inverted.tiered.menu>.menu>.item{color:rgba(255,255,255,.5)}.ui.inverted.tiered.menu .sub.menu{background-color:rgba(0,0,0,.2)}.ui.inverted.tiered.menu .sub.menu .item{color:rgba(255,255,255,.6)}.ui.inverted.tiered.menu>.menu>.item:hover,.ui.inverted.tiered.menu>.menu>.item.hover{color:rgba(255,255,255,.9)}.ui.inverted.tiered.menu>.sub.menu>.active.item,.ui.inverted.tiered.menu>.menu>.active.item{color:#fff;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.pointing.tiered.menu>.menu>.item:after{display:none}.ui.pointing.tiered.menu>.sub.menu>.item:after{display:block}.ui.tabular.menu{background-color:transparent;border-bottom:1px solid #DCDDDE;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.tabular.menu .item{background-color:transparent;font-weight:700;padding-left:1.4em;padding-right:1.4em;color:#9DA6AB}.ui.tabular.menu .item:hover{background-color:transparent;color:#5D6266}.ui.tabular.menu .item:before{display:none}.ui.tabular.menu .active.item{position:relative;top:1px;background-color:#F8F8F8;color:#5D6266;border-left:1px solid #DCDDDE;border-right:1px solid #DCDDDE;border-top:1px solid #DCDDDE;padding-top:.75em;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.ui.pagination.menu{margin:0;display:inline-block}.ui.pagination.menu .item{min-width:2.7em;min-height:2.55em;text-align:center}.ui.pagination.menu.floated{display:block}.ui.pagination.menu .active.item{border-top:0;padding-top:.75em;background-color:rgba(0,0,0,.05)}.ui.secondary.menu{background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.menu>.item{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border:0;min-height:0!important;margin:0 .25em;padding:.5em 1em;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.secondary.menu>.item:before{display:none!important}.ui.secondary.menu .link.item,.ui.secondary.menu a.item{color:rgba(0,0,0,.4)}.ui.secondary.menu .header.item{background-color:transparent;border-right:.1em solid rgba(0,0,0,.1);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.menu>.active.item{border-top:0;padding-top:.5em;background-color:rgba(0,0,0,.08);color:rgba(0,0,0,.8)}.ui.secondary.vertical.menu>.active.item{-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.secondary.inverted.menu>.active.item{background-color:rgba(255,255,255,.2)}.ui.secondary.item.menu>.item{margin:0}.ui.secondary.attached.menu{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.secondary.pointing.menu{border-bottom:3px solid rgba(0,0,0,.1)}.ui.secondary.pointing.menu>.item{margin:0 0 -3px;padding:.6em .95em;border-bottom:3px solid rgba(0,0,0,0);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.ui.secondary.pointing.menu>.item:after{display:none}.ui.secondary.pointing.menu>.item.hover,.ui.secondary.pointing.menu>.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.pointing.menu>.item:active,.ui.secondary.pointing.menu>.item.down{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.pointing.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4)}.ui.secondary.vertical.pointing.menu{border:0;border-right:3px solid rgba(0,0,0,.1)}.ui.secondary.vertical.menu>.item{border:0;margin:0 0 .3em;padding:.6em .8em;-webkit-border-radius:.1875em;-moz-border-radius:.1875em;border-radius:.1875em}.ui.secondary.vertical.menu>.header.item{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.vertical.pointing.menu>.item{margin:0 -3px 0 0;border-bottom:0;border-right:3px solid transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui.secondary.vertical.pointing.menu>.item.hover,.ui.secondary.vertical.pointing.menu>.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.vertical.pointing.menu>.item:active,.ui.secondary.vertical.pointing.menu>.item.down{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.vertical.pointing.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4);color:rgba(0,0,0,.85)}.ui.secondary.inverted.menu{background-color:transparent}.ui.secondary.inverted.pointing.menu{border-bottom:3px solid rgba(255,255,255,.1)}.ui.secondary.inverted.pointing.menu>.item{color:rgba(255,255,255,.7)}.ui.secondary.inverted.pointing.menu>.item.hover,.ui.secondary.inverted.pointing.menu>.item:hover{color:rgba(255,255,255,.85)}.ui.secondary.inverted.pointing.menu>.item:active,.ui.secondary.inverted.pointing.menu>.item.down{border-color:rgba(255,255,255,.4)!important}.ui.secondary.inverted.pointing.menu>.item.active{border-color:rgba(255,255,255,.8)!important;color:#fff}.ui.secondary.inverted.vertical.pointing.menu{border-right:3px solid rgba(255,255,255,.1);border-bottom:0}.ui.text.menu{background-color:transparent;margin:1rem -1rem;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.text.menu>.item{opacity:.6;margin:0 1em;padding:0;min-height:0!important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.6);-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.ui.text.menu>.item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(50,50,50,.8);font-size:.875rem;padding:0;text-transform:uppercase;font-weight:700}.ui.text.menu .header.item>a{background-color:transparent}.ui.text.item.menu .item{margin:0}.ui.vertical.text.menu{margin:1rem 0}.ui.vertical.text.menu:first-child{margin-top:0rem}.ui.vertical.text.menu:last-child{margin-bottom:0rem}.ui.vertical.text.menu .item{float:left;clear:left;margin:.5em 0}.ui.vertical.text.menu .item>.icon{float:none;margin:0 .75em 0 0}.ui.vertical.text.menu .header.item{margin:.8em 0}.ui.text.menu .item.hover,.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;padding:0;border:0;opacity:1;font-weight:700}.ui.text.pointing.menu .active.item:after{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.text.attached.menu{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.green.text.menu .active.item{color:#A1CF64}.ui.red.text.menu .active.item{color:#EF4D6D}.ui.blue.text.menu .active.item{color:#6ECFF5}.ui.purple.text.menu .active.item{color:#564F8A}.ui.orange.text.menu .active.item{color:#F05940}.ui.teal.text.menu .active.item{color:#00B5AD}.ui.icon.menu,.ui.vertical.icon.menu{width:auto;display:inline-block;min-height:0}.ui.icon.menu .item{text-align:center;color:rgba(60,60,60,.7)}.ui.icon.menu .item .icon{display:block;float:none;opacity:1;margin:0 auto}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item .icon{margin:0}.ui.inverted.icon.menu .item{color:rgba(255,255,255,.8)}.ui.inverted.icon.menu .icon{color:#fff}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu .icon{display:block;font-size:1.5em;margin:0 auto .3em}.ui.menu .green.active.item,.ui.green.menu .active.item{border-color:#A1CF64!important}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#EF4D6D!important}.ui.menu .blue.active.item,.ui.blue.menu .active.item{border-color:#6ECFF5!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#564F8A!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#F05940!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00B5AD!important}.ui.inverted.menu{background-color:#333;box-shadow:none}.ui.inverted.menu .header.item{margin:0;background-color:rgba(0,0,0,.3);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a{color:#FFF}.ui.inverted.menu .item .item,.ui.inverted.menu .item .item>a{color:rgba(255,255,255,.8)}.ui.inverted.menu .item .item>a:hover{background-color:rgba(255,255,255,.03);color:rgba(255,255,255,.9)}.ui.inverted.menu .item>p:only-child{color:rgba(255,255,255,.75)}.ui.inverted.menu .dropdown.item .menu .item,.ui.inverted.menu .dropdown.item .menu .item a{color:rgba(0,0,0,.75)!important}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover,.ui.inverted.menu .item.disabled.hover{color:rgba(255,255,255,.2)}.ui.inverted.menu .item:before{background-image:-webkit-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:linear-gradient(top,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.vertical.inverted.menu .item:before{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.link.inverted.menu .item:hover,.ui.inverted.menu .item.hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.inverted.menu .dropdown.item.hover,.ui.inverted.menu .dropdown.item:hover{background-color:rgba(255,255,255,.1)}.ui.inverted.menu a.item:hover,.ui.inverted.menu .item.hover,.ui.inverted.menu .item>a:hover,.ui.inverted.menu .item .menu a.item:hover,.ui.inverted.menu .item .menu a.item.hover,.ui.inverted.menu .item .menu .link.item:hover,.ui.inverted.menu .item .menu .link.item.hover{color:#fff}.ui.inverted.menu .item.down,.ui.inverted.menu a.item:active,.ui.inverted.menu .item>a:active,.ui.inverted.menu .item.down,.ui.inverted.menu .dropdown.item:active,.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background-color:rgba(255,255,255,.15)}.ui.inverted.menu .active.item{border-color:transparent!important;background-color:rgba(255,255,255,.2)}.ui.inverted.menu .active.item,.ui.inverted.menu .active.item a{color:#fff}.ui.inverted.vertical.menu .item .menu .active.item{background-color:rgba(255,255,255,.2);color:#fff}.ui.inverted.pointing.menu .active.item:after{background-color:#505050;box-shadow:none}.ui.inverted.pointing.menu .active.item:hover:after{background-color:#3B3B3B}.ui.floated.menu{float:left;margin:0rem .5rem 0rem 0rem}.ui.right.floated.menu{float:right;margin:0rem 0rem 0rem .5rem}.ui.grey.menu{background-color:#F0F0F0}.ui.inverted.green.menu{background-color:#A1CF64}.ui.inverted.green.pointing.menu .active.item:after{background-color:#A1CF64}.ui.inverted.red.menu{background-color:#EF4D6D}.ui.inverted.red.pointing.menu .active.item:after{background-color:#F16883}.ui.inverted.blue.menu{background-color:#6ECFF5}.ui.inverted.blue.pointing.menu .active.item:after{background-color:#6ECFF5}.ui.inverted.purple.menu{background-color:#564F8A}.ui.inverted.purple.pointing.menu .active.item:after{background-color:#564F8A}.ui.inverted.orange.menu{background-color:#F05940}.ui.inverted.orange.pointing.menu .active.item:after{background-color:#F05940}.ui.inverted.teal.menu{background-color:#00B5AD}.ui.inverted.teal.pointing.menu .active.item:after{background-color:#00B5AD}.ui.fitted.menu .item,.ui.fitted.menu .item>a,.ui.fitted.menu .item .menu .item,.ui.fitted.menu .item .menu .item>a,.ui.menu .fitted.item,.ui.menu .fitted.item>a{padding-top:0;padding-bottom:0}.ui.tight.menu .item,.ui.tight.menu .item>a,.ui.tight.menu .item .menu .item,.ui.tight.menu .item .menu .item>a,.ui.menu .tight.item,.ui.menu .tight.item>a{padding:0}.ui.borderless.menu .item:before,.ui.borderless.menu .item>a:before,.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item .menu .item>a:before,.ui.menu .borderless.item:before,.ui.menu .borderless.item>a:before{background-image:none}.ui.compact.menu{display:inline-block;margin:0;vertical-align:middle}.ui.vertical.compact.menu{width:auto!important}.ui.menu.fluid,.ui.vertical.menu.fluid{display:block!important;width:100%}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;text-align:center}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:10;margin:0;border:0;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.ui.menu.fixed.top{top:0;left:0;right:auto;bottom:auto}.ui.menu.fixed.right{top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui.menu.fixed.bottom{bottom:0;left:0;top:auto;right:auto}.ui.menu.fixed.left{top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.pointing.menu .active.item:after{position:absolute;bottom:-.35em;left:50%;content:"";margin-left:-.3em;width:.6em;height:.6em;border:0;border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);background-image:none;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-transition:background .2s ease;-moz-transition:background .2s ease;-o-transition:background .2s ease;-ms-transition:background .2s ease;transition:background .2s ease}.ui.pointing.menu .active.item .menu .active.item:after{display:none}.ui.vertical.pointing.menu .active.item:after{position:absolute;top:50%;margin-top:-.3em;right:-.4em;bottom:auto;left:auto;border:0;border-top:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ui.pointing.menu .active.item:after{background-color:#FCFCFC}.ui.pointing.menu .active.item.hover:after,.ui.pointing.menu .active.item:hover:after{background-color:#FAFAFA}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#F4F4F4}.ui.pointing.menu .active.item.down:after,.ui.pointing.menu .active.item:active:after{background-color:#F0F0F0}.ui.menu.attached{margin:0rem;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-moz-box-shadow:0 0 0 1px #DDD;-webkit-box-shadow:0 0 0 1px #DDD;box-shadow:0 0 0 1px #DDD}.ui.top.attached.menu{-moz-border-radius:.1875em .1875em 0 0;-webkit-border-radius:.1875em .1875em 0 0;border-radius:.1875em .1875em 0 0}.ui.menu.bottom.attached{-moz-border-radius:0 0 .1875em .1875em;-webkit-border-radius:0 0 .1875em .1875em;border-radius:0 0 .1875em .1875em}.ui.vertical.menu .item{min-height:0!important}.ui.small.menu .item{font-size:.875rem;min-height:2.25rem}.ui.small.vertical.menu{width:13rem}.ui.menu .item{font-size:1rem;min-height:2.5em}.ui.vertical.menu{width:15rem}.ui.large.menu .item{font-size:1.125rem}.ui.large.vertical.menu{width:18rem} \ No newline at end of file diff --git a/build/minified/modules/video.js b/build/minified/modules/video.js index 8dd11a6d0..a3ec3ba54 100644 --- a/build/minified/modules/video.js +++ b/build/minified/modules/video.js @@ -11,381 +11,416 @@ ;(function ($, window, document, undefined) { - $.fn.video = function(parameters) { - - var - settings = $.extend(true, {}, $.fn.video.settings, parameters), - // make arguments available - moduleArguments = arguments || false, - invokedResponse - ; - - $(this) - .each(function() { - var - $module = $(this), - $placeholder = $module.find(settings.selector.placeholder), - $playButton = $module.find(settings.selector.playButton), - $embed = $module.find(settings.selector.embed), - - element = this, - instance = $module.data('module-' + settings.namespace), - methodInvoked = (typeof parameters == 'string'), - - namespace = settings.namespace, - metadata = settings.metadata, - className = settings.className, - - module - ; - - module = { - - initialize: function() { - module.debug('Initializing video'); - $placeholder - .off('.video') - .on('click.' + namespace, module.play) - ; - $playButton - .off('.video') - .on('click.' + namespace, module.play) - ; - $module - .data('module-' + namespace, module) - ; - }, - - // sets new video - change: function(source, flv) { - module.debug('Changing video to ', flv); - $module - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - settings.onChange(); - }, - - // clears video embed - reset: function() { - module.debug('Clearing video embed and showing placeholder'); - $module - .removeClass(className.active) - ; - $embed - .html(' ') - ; - $placeholder - .show() - ; - settings.onReset(); - }, +$.fn.video = function(parameters) { + + var + $allModules = $(this), + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.video.settings, parameters) + : $.fn.video.settings, + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + invokedResponse + ; + + $(this) + .each(function() { + var + $module = $(this), + $placeholder = $module.find(settings.selector.placeholder), + $playButton = $module.find(settings.selector.playButton), + $embed = $module.find(settings.selector.embed), + + eventNamespace = '.' + settings.namespace, + moduleNamespace = settings.namespace + '-module', + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + element = this, + instance = $module.data(moduleNamespace), + module + ; - // plays current video - play: function() { - module.debug('Playing video'); + module = { + + initialize: function() { + module.debug('Initializing video'); + $placeholder + .on('click' + eventNamespace, module.play) + ; + $playButton + .on('click' + eventNamespace, module.play) + ; + module.instantiate(); + }, + + instantiate: function() { + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance of video'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + // sets new video + change: function(source, id, url) { + module.debug('Changing video to ', source, id, url); + $module + .data(metadata.source, source) + .data(metadata.id, id) + .data(metadata.url, url) + ; + settings.onChange(); + }, + + // clears video embed + reset: function() { + module.debug('Clearing video embed and showing placeholder'); + $module + .removeClass(className.active) + ; + $embed + .html(' ') + ; + $placeholder + .show() + ; + settings.onReset(); + }, + + // plays current video + play: function() { + module.debug('Playing video'); + var + source = $module.data(metadata.source) || false, + url = $module.data(metadata.url) || false, + id = $module.data(metadata.id) || false + ; + $embed + .html( module.generate.html(source, id, url) ) + ; + $module + .addClass(className.active) + ; + settings.onPlay(); + }, + + generate: { + // generates iframe html + html: function(source, id, url) { + module.debug('Generating embed html'); var - source = $module.data(metadata.source), - flv = $module.data(metadata.flv) + width = (settings.width == 'auto') + ? $module.width() + : settings.width, + height = (settings.height == 'auto') + ? $module.height() + : settings.height, + html ; - $embed - .html( module.generate.html(source, flv) ) - ; - $module - .addClass(className.active) - ; - settings.onPlay(); - }, - - generate: { - // generates iframe html - html: function(source, flv) { - module.debug('Generating embed html'); - var - width = (settings.width == 'auto') - ? $module.width() - : settings.width, - height = (settings.height == 'auto') - ? $module.height() - : settings.height, - html - ; + if(source && id) { if(source == 'vimeo') { html = '' - + '' ; } else if(source == 'youtube') { html = '' - + '' ; } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' + } + else if(url) { + html = '' + + '' ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; } + else { + module.error(error.noVideo); + } + return html; }, - /* standard module */ - debug: function(message, variableName) { - if(settings.debug) { - if(variableName !== undefined) { - console.info(settings.moduleName + ': ' + message, variableName); + // generate url parameters + url: function(source) { + var + api = (settings.api) + ? 1 + : 0, + autoplay = (settings.autoplay) + ? 1 + : 0, + hd = (settings.hd) + ? 1 + : 0, + showUI = (settings.showUI) + ? 1 + : 0, + // opposite used for some params + hideUI = !(settings.showUI) + ? 1 + : 0, + url = '' + ; + if(source == 'vimeo') { + url = '' + + 'api=' + api + + '&title=' + showUI + + '&byline=' + showUI + + '&portrait=' + showUI + + '&autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } - else { - console.info(settings.moduleName + ': ' + message); + } + if(source == 'ustream') { + url = '' + + 'autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } } - }, - error: function(errorMessage) { - console.warn(settings.moduleName + ': ' + errorMessage); - }, - invoke: function(methodName, context, methodArguments) { + else if(source == 'youtube') { + url = '' + + 'enablejsapi=' + api + + '&autoplay=' + autoplay + + '&autohide=' + hideUI + + '&hq=' + hd + + '&modestbranding=1' + ; + if(settings.color) { + url += '&color=' + settings.color; + } + } + return url; + } + }, + + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.warn, console, settings.moduleName + ':'); + }, + performance: { + log: function(message) { var - method + currentTime, + executionTime, + previousTime ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.errors.method); - return false; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime, + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime }); } - if ( $.isFunction( method ) ) { - return method.apply(context, methodArguments); + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); + }, + display: function() { + var + title = settings.moduleName + ':', + totalTime = 0 + ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); } - // return retrieved variable or chain - return method; + performance = []; } - }; - // check for invoking internal method - if(methodInvoked) { - invokedResponse = module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); - } - // otherwise initialize - else { - if(instance) { - module.destroy(); + }, + invoke: function(query, passedArguments, context) { + var + maxDepth, + found + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && instance !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { + instance = instance[value]; + } + else if( instance[value] !== undefined ) { + found = instance[value]; + } + else { + module.error(error.method); + } + }); } - module.initialize(); + if ( $.isFunction( found ) ) { + return found.apply(context, passedArguments); + } + return found || false; } + }; - }) - ; - // chain or return queried method - return (invokedResponse !== undefined) - ? invokedResponse - : this - ; - }; - - - $.fn.videoPlaylist = function(video, parameters) { - var - $allModules = $(this), - $video = $(video), - $iframe = $video.find('.embed iframe'), - - settings = $.extend({}, $.fn.videoPlaylist.settings, parameters, true) - ; - $allModules - .each(function() { - var - $element = $(this), - - metadata = settings.metadata, - namespace = settings.namespace, - className = settings.className, - - module = { - initialize: function() { - $element - .on('click.' + namespace , module.changeVideo) - ; - }, - changeVideo: function() { - var - flv = $element.data(metadata.flv) || false, - source = $element.data(metadata.source) || false, - placeholder = $element.data(metadata.placeholder) || false - ; - if(flv && source) { - $video - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - if(settings.showPlaceholder) { - $video - .removeClass(className.active) - .find($.fn.video.selector.placeholder) - .attr('src', placeholder) - ; - } - else { - try { - $video - .video('play') - ; - } - catch(error) { - console.warn('Video Playlist Module: ' + settings.error.init); - } - } - $allModules - .removeClass(className.active) - ; - $element - .addClass(className.active) - ; - } - } - } - ; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + invokedResponse = module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); + } module.initialize(); - }) - ; - - if(settings.playFirst) { - $allModules - .eq(0) - .trigger('click') - ; - // we all like a good hack - if($iframe.size() > 0) { - $iframe - .attr('src', $iframe.attr('src').replace('autoplay=1', 'autoplay=0') ) - ; } + }) + ; + + return (invokedResponse) + ? invokedResponse + : this + ; +}; + +$.fn.video.settings = { + + moduleName : 'Video', + namespace : 'video', + + debug : true, + verbose : true, + performance : true, + + + metadata : { + source : 'source', + id : 'id', + url : 'url' + }, + + onPlay : function(){}, + onReset : function(){}, + onChange : function(){}, + + // callbacks not coded yet (needs to use jsapi) + onPause : function() {}, + onStop : function() {}, + + width : 'auto', + height : 'auto', + + autoplay : false, + color : '#442359', + hd : true, + showUI : false, + api : true, + + error : { + noVideo : 'No video specified', + method : 'The method you called is not defined' + }, + + className : { + active : 'active' + }, + + selector : { + embed : '.embed', + placeholder : '.placeholder', + playButton : '.play' + } +}; - } - - }; - - $.fn.video.settings = { - - moduleName : 'Video', - namespace : 'video', - debug : false, - - metadata : { - source : 'source', - flv : 'flv' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - play : function() {}, - pause : function() {}, - stop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - errors : { - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } - }; - - $.fn.videoPlaylist.settings = { - moduleName : 'Video Playlist', - namespace : 'videoPlaylist', - - source : 'vimeo', - showPlaceholder : false, - playFirst : true, - - metadata: { - flv : 'flv', - source : 'source', - placeholder : 'placeholder' - }, - - errors: { - init : 'The video player you specified was not yet initialized' - }, - - className : { - active : 'active' - } - - }; })( jQuery, window , document ); diff --git a/build/minified/modules/video.min.css b/build/minified/modules/video.min.css index 14fc4b9e3..c58046587 100644 --- a/build/minified/modules/video.min.css +++ b/build/minified/modules/video.min.css @@ -1 +1 @@ -.video.module{position:relative;background:#333 url(../images/placeholder.png) no-repeat center center}.video.module .play{cursor:pointer;position:absolute;top:0;left:0;z-index:100;-ms-filter:"alpha(Opacity=60)";filter:alpha(opacity=60);opacity:.6;width:100%;height:100%;background:url(/images/modules/video-play.png) no-repeat center center;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-o-transition:opacity .3s;-ms-transition:opacity .3s;transition:opacity .3s}.video.module .play:hover{opacity:1}.video.module .placeholder{width:100%;height:100%}.video.module .embed{display:none}.video.module.active .play,.video.module.active .placeholder{display:none}.video.module.active .embed{display:block} \ No newline at end of file +.ui.video{position:relative;max-width:100%}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;-ms-filter:"alpha(Opacity=60)";filter:alpha(opacity=60);opacity:.6;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-o-transition:opacity .3s;-ms-transition:opacity .3s;transition:opacity .3s}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;font-size:6rem;margin:-3rem 0 0 -3rem;color:#FFF;text-shadow:0 3px 3px rgba(0,0,0,.4)}.ui.video .placeholder{display:block;width:100%;height:100%}.ui.video .embed{display:none}.ui.video .play:hover{opacity:1}.ui.video.active .play,.ui.video.active .placeholder{display:none}.ui.video.active .embed{display:block} \ No newline at end of file diff --git a/build/minified/modules/video.min.js b/build/minified/modules/video.min.js index 2eea08e6c..990ec5359 100644 --- a/build/minified/modules/video.min.js +++ b/build/minified/modules/video.min.js @@ -1 +1 @@ -!function(a,b,c,d){a.fn.video=function(b){var c,e=a.extend(!0,{},a.fn.video.settings,b),f=arguments||!1;return a(this).each(function(){var g,h=a(this),i=h.find(e.selector.placeholder),j=h.find(e.selector.playButton),k=h.find(e.selector.embed),l=h.data("module-"+e.namespace),m="string"==typeof b,n=e.namespace,o=e.metadata,p=e.className;g={initialize:function(){g.debug("Initializing video"),i.off(".video").on("click."+n,g.play),j.off(".video").on("click."+n,g.play),h.data("module-"+n,g)},change:function(a,b){g.debug("Changing video to ",b),h.data(o.source,a).data(o.flv,b),e.onChange()},reset:function(){g.debug("Clearing video embed and showing placeholder"),h.removeClass(p.active),k.html(" "),i.show(),e.onReset()},play:function(){g.debug("Playing video");var a=h.data(o.source),b=h.data(o.flv);k.html(g.generate.html(a,b)),h.addClass(p.active),e.onPlay()},generate:{html:function(a,b){g.debug("Generating embed html");var c,d="auto"==e.width?h.width():e.width,f="auto"==e.height?h.height():e.height;return"vimeo"==a?c='':"youtube"==a&&(c=''),c},url:function(a){var b=e.api?1:0,c=e.autoplay?1:0,d=e.hd?1:0,f=e.showUI?1:0,g=e.showUI?0:1,h="";return"vimeo"==a?(h="api="+b+"&title="+f+"&byline="+f+"&portrait="+f+"&autoplay="+c,e.color&&(h+="&color="+e.color)):"youtube"==a&&(h="enablejsapi="+b+"&autoplay="+c+"&autohide="+g+"&hq="+d+"&modestbranding=1",e.color&&(h+="&color="+e.color)),h}},debug:function(a,b){e.debug&&(b!==d?console.info(e.moduleName+": "+a,b):console.info(e.moduleName+": "+a))},error:function(a){console.warn(e.moduleName+": "+a)},invoke:function(b,c,f){var h;return f=f||Array.prototype.slice.call(arguments,2),"string"==typeof b&&l!==d&&(b=b.split("."),a.each(b,function(b,c){return a.isPlainObject(l[c])?(l=l[c],!0):a.isFunction(l[c])?(h=l[c],!0):(g.error(e.errors.method),!1)})),a.isFunction(h)?h.apply(c,f):h}},m?c=g.invoke(f[0],this,Array.prototype.slice.call(f,1)):(l&&g.destroy(),g.initialize())}),c!==d?c:this},a.fn.videoPlaylist=function(b,c){var d=a(this),e=a(b),f=e.find(".embed iframe"),g=a.extend({},a.fn.videoPlaylist.settings,c,!0);d.each(function(){var b=a(this),c=g.metadata,f=g.namespace,h=g.className,i={initialize:function(){b.on("click."+f,i.changeVideo)},changeVideo:function(){var f=b.data(c.flv)||!1,i=b.data(c.source)||!1,j=b.data(c.placeholder)||!1;if(f&&i){if(e.data(c.source,i).data(c.flv,f),g.showPlaceholder)e.removeClass(h.active).find(a.fn.video.selector.placeholder).attr("src",j);else try{e.video("play")}catch(k){console.warn("Video Playlist Module: "+g.error.init)}d.removeClass(h.active),b.addClass(h.active)}}};i.initialize()}),g.playFirst&&(d.eq(0).trigger("click"),f.size()>0&&f.attr("src",f.attr("src").replace("autoplay=1","autoplay=0")))},a.fn.video.settings={moduleName:"Video",namespace:"video",debug:!1,metadata:{source:"source",flv:"flv"},onPlay:function(){},onReset:function(){},onChange:function(){},play:function(){},pause:function(){},stop:function(){},width:"auto",height:"auto",autoplay:!1,color:"#442359",hd:!0,showUI:!1,api:!0,errors:{method:"The method you called is not defined"},className:{active:"active"},selector:{embed:".embed",placeholder:".placeholder",playButton:".play"}},a.fn.videoPlaylist.settings={moduleName:"Video Playlist",namespace:"videoPlaylist",source:"vimeo",showPlaceholder:!1,playFirst:!0,metadata:{flv:"flv",source:"source",placeholder:"placeholder"},errors:{init:"The video player you specified was not yet initialized"},className:{active:"active"}}}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.video=function(b){var c,e=a(this),f=a.isPlainObject(b)?a.extend(!0,{},a.fn.video.settings,b):a.fn.video.settings,g=e.selector||"",h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1);return a(this).each(function(){var b,e=a(this),m=e.find(f.selector.placeholder),n=e.find(f.selector.playButton),o=e.find(f.selector.embed),p="."+f.namespace,q=f.namespace+"-module",r=(f.selector,f.className),s=f.error,t=f.metadata,u=(f.namespace,this),v=e.data(q);b={initialize:function(){b.debug("Initializing video"),m.on("click"+p,b.play),n.on("click"+p,b.play),b.instantiate()},instantiate:function(){v=b,e.data(q,b)},destroy:function(){b.verbose("Destroying previous instance of video"),e.removeData(q).off(p)},change:function(a,c,d){b.debug("Changing video to ",a,c,d),e.data(t.source,a).data(t.id,c).data(t.url,d),f.onChange()},reset:function(){b.debug("Clearing video embed and showing placeholder"),e.removeClass(r.active),o.html(" "),m.show(),f.onReset()},play:function(){b.debug("Playing video");var a=e.data(t.source)||!1,c=e.data(t.url)||!1,d=e.data(t.id)||!1;o.html(b.generate.html(a,d,c)),e.addClass(r.active),f.onPlay()},generate:{html:function(a,c,d){b.debug("Generating embed html");var g,h="auto"==f.width?e.width():f.width,i="auto"==f.height?e.height():f.height;return a&&c?"vimeo"==a?g='':"youtube"==a&&(g=''):d?g='':b.error(s.noVideo),g},url:function(a){var b=f.api?1:0,c=f.autoplay?1:0,d=f.hd?1:0,e=f.showUI?1:0,g=f.showUI?0:1,h="";return"vimeo"==a&&(h="api="+b+"&title="+e+"&byline="+e+"&portrait="+e+"&autoplay="+c,f.color&&(h+="&color="+f.color)),"ustream"==a?(h="autoplay="+c,f.color&&(h+="&color="+f.color)):"youtube"==a&&(h="enablejsapi="+b+"&autoplay="+c+"&autohide="+g+"&hq="+d+"&modestbranding=1",f.color&&(h+="&color="+f.color)),h}},setting:function(b,c){return c===d?f[b]:(a.isPlainObject(b)?a.extend(!0,f,b):f[b]=c,void 0)},internal:function(c,e){return e===d?b[c]:(a.isPlainObject(c)?a.extend(!0,b,c):b[c]=e,void 0)},debug:function(){f.debug&&(f.performance?b.performance.log(arguments):b.debug=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},verbose:function(){f.verbose&&f.debug&&(f.performance?b.performance.log(arguments):b.verbose=Function.prototype.bind.call(console.info,console,f.moduleName+":"))},error:function(){b.error=Function.prototype.bind.call(console.warn,console,f.moduleName+":")},performance:{log:function(a){var c,d,e;f.performance&&(c=(new Date).getTime(),e=h||c,d=c-e,h=c,i.push({Element:u,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":d})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,100)},display:function(){var b=f.moduleName+":",c=0;h=!1,a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",g&&(b+=" '"+g+"'"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(c,e,f){var g,h;return e=e||l,f=u||f,"string"==typeof c&&v!==d&&(c=c.split(/[\. ]/),g=c.length-1,a.each(c,function(c,e){a.isPlainObject(v[e])&&c!=g?v=v[e]:v[e]!==d?h=v[e]:b.error(s.method)})),a.isFunction(h)?h.apply(f,e):h||!1}},k?(v===d&&b.initialize(),c=b.invoke(j)):(v!==d&&b.destroy(),b.initialize())}),c?c:this},a.fn.video.settings={moduleName:"Video",namespace:"video",debug:!0,verbose:!0,performance:!0,metadata:{source:"source",id:"id",url:"url"},onPlay:function(){},onReset:function(){},onChange:function(){},onPause:function(){},onStop:function(){},width:"auto",height:"auto",autoplay:!1,color:"#442359",hd:!0,showUI:!1,api:!0,error:{noVideo:"No video specified",method:"The method you called is not defined"},className:{active:"active"},selector:{embed:".embed",placeholder:".placeholder",playButton:".play"}}}(jQuery,window,document); \ No newline at end of file diff --git a/build/packaged/modules/video.js b/build/packaged/modules/video.js index 8dd11a6d0..a3ec3ba54 100644 --- a/build/packaged/modules/video.js +++ b/build/packaged/modules/video.js @@ -11,381 +11,416 @@ ;(function ($, window, document, undefined) { - $.fn.video = function(parameters) { - - var - settings = $.extend(true, {}, $.fn.video.settings, parameters), - // make arguments available - moduleArguments = arguments || false, - invokedResponse - ; - - $(this) - .each(function() { - var - $module = $(this), - $placeholder = $module.find(settings.selector.placeholder), - $playButton = $module.find(settings.selector.playButton), - $embed = $module.find(settings.selector.embed), - - element = this, - instance = $module.data('module-' + settings.namespace), - methodInvoked = (typeof parameters == 'string'), - - namespace = settings.namespace, - metadata = settings.metadata, - className = settings.className, - - module - ; - - module = { - - initialize: function() { - module.debug('Initializing video'); - $placeholder - .off('.video') - .on('click.' + namespace, module.play) - ; - $playButton - .off('.video') - .on('click.' + namespace, module.play) - ; - $module - .data('module-' + namespace, module) - ; - }, - - // sets new video - change: function(source, flv) { - module.debug('Changing video to ', flv); - $module - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - settings.onChange(); - }, - - // clears video embed - reset: function() { - module.debug('Clearing video embed and showing placeholder'); - $module - .removeClass(className.active) - ; - $embed - .html(' ') - ; - $placeholder - .show() - ; - settings.onReset(); - }, +$.fn.video = function(parameters) { + + var + $allModules = $(this), + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.video.settings, parameters) + : $.fn.video.settings, + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + invokedResponse + ; + + $(this) + .each(function() { + var + $module = $(this), + $placeholder = $module.find(settings.selector.placeholder), + $playButton = $module.find(settings.selector.playButton), + $embed = $module.find(settings.selector.embed), + + eventNamespace = '.' + settings.namespace, + moduleNamespace = settings.namespace + '-module', + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + element = this, + instance = $module.data(moduleNamespace), + module + ; - // plays current video - play: function() { - module.debug('Playing video'); + module = { + + initialize: function() { + module.debug('Initializing video'); + $placeholder + .on('click' + eventNamespace, module.play) + ; + $playButton + .on('click' + eventNamespace, module.play) + ; + module.instantiate(); + }, + + instantiate: function() { + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance of video'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + // sets new video + change: function(source, id, url) { + module.debug('Changing video to ', source, id, url); + $module + .data(metadata.source, source) + .data(metadata.id, id) + .data(metadata.url, url) + ; + settings.onChange(); + }, + + // clears video embed + reset: function() { + module.debug('Clearing video embed and showing placeholder'); + $module + .removeClass(className.active) + ; + $embed + .html(' ') + ; + $placeholder + .show() + ; + settings.onReset(); + }, + + // plays current video + play: function() { + module.debug('Playing video'); + var + source = $module.data(metadata.source) || false, + url = $module.data(metadata.url) || false, + id = $module.data(metadata.id) || false + ; + $embed + .html( module.generate.html(source, id, url) ) + ; + $module + .addClass(className.active) + ; + settings.onPlay(); + }, + + generate: { + // generates iframe html + html: function(source, id, url) { + module.debug('Generating embed html'); var - source = $module.data(metadata.source), - flv = $module.data(metadata.flv) + width = (settings.width == 'auto') + ? $module.width() + : settings.width, + height = (settings.height == 'auto') + ? $module.height() + : settings.height, + html ; - $embed - .html( module.generate.html(source, flv) ) - ; - $module - .addClass(className.active) - ; - settings.onPlay(); - }, - - generate: { - // generates iframe html - html: function(source, flv) { - module.debug('Generating embed html'); - var - width = (settings.width == 'auto') - ? $module.width() - : settings.width, - height = (settings.height == 'auto') - ? $module.height() - : settings.height, - html - ; + if(source && id) { if(source == 'vimeo') { html = '' - + '' ; } else if(source == 'youtube') { html = '' - + '' ; } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' + } + else if(url) { + html = '' + + '' ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; } + else { + module.error(error.noVideo); + } + return html; }, - /* standard module */ - debug: function(message, variableName) { - if(settings.debug) { - if(variableName !== undefined) { - console.info(settings.moduleName + ': ' + message, variableName); + // generate url parameters + url: function(source) { + var + api = (settings.api) + ? 1 + : 0, + autoplay = (settings.autoplay) + ? 1 + : 0, + hd = (settings.hd) + ? 1 + : 0, + showUI = (settings.showUI) + ? 1 + : 0, + // opposite used for some params + hideUI = !(settings.showUI) + ? 1 + : 0, + url = '' + ; + if(source == 'vimeo') { + url = '' + + 'api=' + api + + '&title=' + showUI + + '&byline=' + showUI + + '&portrait=' + showUI + + '&autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } - else { - console.info(settings.moduleName + ': ' + message); + } + if(source == 'ustream') { + url = '' + + 'autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } } - }, - error: function(errorMessage) { - console.warn(settings.moduleName + ': ' + errorMessage); - }, - invoke: function(methodName, context, methodArguments) { + else if(source == 'youtube') { + url = '' + + 'enablejsapi=' + api + + '&autoplay=' + autoplay + + '&autohide=' + hideUI + + '&hq=' + hd + + '&modestbranding=1' + ; + if(settings.color) { + url += '&color=' + settings.color; + } + } + return url; + } + }, + + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.warn, console, settings.moduleName + ':'); + }, + performance: { + log: function(message) { var - method + currentTime, + executionTime, + previousTime ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.errors.method); - return false; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime, + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime }); } - if ( $.isFunction( method ) ) { - return method.apply(context, methodArguments); + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); + }, + display: function() { + var + title = settings.moduleName + ':', + totalTime = 0 + ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); } - // return retrieved variable or chain - return method; + performance = []; } - }; - // check for invoking internal method - if(methodInvoked) { - invokedResponse = module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); - } - // otherwise initialize - else { - if(instance) { - module.destroy(); + }, + invoke: function(query, passedArguments, context) { + var + maxDepth, + found + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && instance !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { + instance = instance[value]; + } + else if( instance[value] !== undefined ) { + found = instance[value]; + } + else { + module.error(error.method); + } + }); } - module.initialize(); + if ( $.isFunction( found ) ) { + return found.apply(context, passedArguments); + } + return found || false; } + }; - }) - ; - // chain or return queried method - return (invokedResponse !== undefined) - ? invokedResponse - : this - ; - }; - - - $.fn.videoPlaylist = function(video, parameters) { - var - $allModules = $(this), - $video = $(video), - $iframe = $video.find('.embed iframe'), - - settings = $.extend({}, $.fn.videoPlaylist.settings, parameters, true) - ; - $allModules - .each(function() { - var - $element = $(this), - - metadata = settings.metadata, - namespace = settings.namespace, - className = settings.className, - - module = { - initialize: function() { - $element - .on('click.' + namespace , module.changeVideo) - ; - }, - changeVideo: function() { - var - flv = $element.data(metadata.flv) || false, - source = $element.data(metadata.source) || false, - placeholder = $element.data(metadata.placeholder) || false - ; - if(flv && source) { - $video - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - if(settings.showPlaceholder) { - $video - .removeClass(className.active) - .find($.fn.video.selector.placeholder) - .attr('src', placeholder) - ; - } - else { - try { - $video - .video('play') - ; - } - catch(error) { - console.warn('Video Playlist Module: ' + settings.error.init); - } - } - $allModules - .removeClass(className.active) - ; - $element - .addClass(className.active) - ; - } - } - } - ; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + invokedResponse = module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); + } module.initialize(); - }) - ; - - if(settings.playFirst) { - $allModules - .eq(0) - .trigger('click') - ; - // we all like a good hack - if($iframe.size() > 0) { - $iframe - .attr('src', $iframe.attr('src').replace('autoplay=1', 'autoplay=0') ) - ; } + }) + ; + + return (invokedResponse) + ? invokedResponse + : this + ; +}; + +$.fn.video.settings = { + + moduleName : 'Video', + namespace : 'video', + + debug : true, + verbose : true, + performance : true, + + + metadata : { + source : 'source', + id : 'id', + url : 'url' + }, + + onPlay : function(){}, + onReset : function(){}, + onChange : function(){}, + + // callbacks not coded yet (needs to use jsapi) + onPause : function() {}, + onStop : function() {}, + + width : 'auto', + height : 'auto', + + autoplay : false, + color : '#442359', + hd : true, + showUI : false, + api : true, + + error : { + noVideo : 'No video specified', + method : 'The method you called is not defined' + }, + + className : { + active : 'active' + }, + + selector : { + embed : '.embed', + placeholder : '.placeholder', + playButton : '.play' + } +}; - } - - }; - - $.fn.video.settings = { - - moduleName : 'Video', - namespace : 'video', - debug : false, - - metadata : { - source : 'source', - flv : 'flv' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - play : function() {}, - pause : function() {}, - stop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - errors : { - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } - }; - - $.fn.videoPlaylist.settings = { - moduleName : 'Video Playlist', - namespace : 'videoPlaylist', - - source : 'vimeo', - showPlaceholder : false, - playFirst : true, - - metadata: { - flv : 'flv', - source : 'source', - placeholder : 'placeholder' - }, - - errors: { - init : 'The video player you specified was not yet initialized' - }, - - className : { - active : 'active' - } - - }; })( jQuery, window , document ); diff --git a/build/packaged/semantic.min.css.REMOVED.git-id b/build/packaged/semantic.min.css.REMOVED.git-id index 32fefc7eb..7139123ca 100644 --- a/build/packaged/semantic.min.css.REMOVED.git-id +++ b/build/packaged/semantic.min.css.REMOVED.git-id @@ -1 +1 @@ -8c596e6e4141b4d7bf798a158e1bed529b4acfa0 \ No newline at end of file +f05f79b6aa3852bb634fb30470be2d7d3a9d1252 \ No newline at end of file diff --git a/build/packaged/semantic.min.js.REMOVED.git-id b/build/packaged/semantic.min.js.REMOVED.git-id index 80a8db321..090b898ba 100644 --- a/build/packaged/semantic.min.js.REMOVED.git-id +++ b/build/packaged/semantic.min.js.REMOVED.git-id @@ -1 +1 @@ -4c459f0ed9e411259862a2f2d362b31525c72e20 \ No newline at end of file +9b2adc4ea09fd0c31850e9b42e74daf20107c1b2 \ No newline at end of file diff --git a/build/uncompressed/collections/menu.css b/build/uncompressed/collections/menu.css index 1a68db45b..4ab34891a 100644 --- a/build/uncompressed/collections/menu.css +++ b/build/uncompressed/collections/menu.css @@ -338,7 +338,7 @@ visibility: visible; } /******************************* - Variations + Types *******************************/ /*-------------- Vertical @@ -475,35 +475,44 @@ display: block; } /*-------------- - Colors + Tiered ---------------*/ -/*--- Light Colors ---*/ -.ui.menu .green.active.item, -.ui.green.menu .active.item { - border-color: #A1CF64 !important; -} -.ui.menu .red.active.item, -.ui.red.menu .active.item { - border-color: #EF4D6D !important; +.ui.tabular.menu { + background-color: transparent; + border-bottom: 1px solid #DCDDDE; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -.ui.menu .blue.active.item, -.ui.blue.menu .active.item { - border-color: #6ECFF5 !important; +.ui.tabular.menu .item { + background-color: transparent; + font-weight: bold; + padding-left: 1.4em; + padding-right: 1.4em; + color: #9DA6AB; } -.ui.menu .purple.active.item, -.ui.purple.menu .active.item { - border-color: #564F8A !important; +.ui.tabular.menu .item:hover { + background-color: transparent; + color: #5D6266; } -.ui.menu .orange.active.item, -.ui.orange.menu .active.item { - border-color: #F05940 !important; +.ui.tabular.menu .item:before { + display: none; } -.ui.menu .teal.active.item, -.ui.teal.menu .active.item { - border-color: #00B5AD !important; +.ui.tabular.menu .active.item { + position: relative; + top: 1px; + background-color: #F8F8F8; + color: #5D6266; + border-left: 1px solid #DCDDDE; + border-right: 1px solid #DCDDDE; + border-top: 1px solid #DCDDDE; + padding-top: 0.75em; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; } /*-------------- - Pagination + Pagination ---------------*/ .ui.pagination.menu { margin: 0em; @@ -523,284 +532,6 @@ padding-top: 0.75em; background-color: rgba(0, 0, 0, 0.05); } -/*-------------- - Inverted ----------------*/ -.ui.inverted.menu { - background-color: #333333; - box-shadow: none; -} -.ui.inverted.menu .header.item { - margin: 0em; - background-color: rgba(0, 0, 0, 0.3); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.inverted.menu .item, -.ui.inverted.menu .item > a { - color: #FFFFFF; -} -.ui.inverted.menu .item .item, -.ui.inverted.menu .item .item > a { - color: rgba(255, 255, 255, 0.8); -} -.ui.inverted.menu .item .item > a:hover { - background-color: rgba(255, 255, 255, 0.03); - color: rgba(255, 255, 255, 0.9); -} -.ui.inverted.menu .item > p:only-child { - color: rgba(255, 255, 255, 0.75); -} -.ui.inverted.menu .dropdown.item .menu .item, -.ui.inverted.menu .dropdown.item .menu .item a { - color: rgba(0, 0, 0, 0.75) !important; -} -.ui.inverted.menu .item.disabled, -.ui.inverted.menu .item.disabled:hover, -.ui.inverted.menu .item.disabled.hover { - color: rgba(255, 255, 255, 0.2); -} -/*--- Border ---*/ -.ui.inverted.menu .item:before { - background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} -.ui.vertical.inverted.menu .item:before { - background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -ms-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} -/*--- Hover ---*/ -.ui.link.inverted.menu .item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .link.item:hover, -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .dropdown.item.hover, -.ui.inverted.menu .dropdown.item:hover { - background-color: rgba(255, 255, 255, 0.1); -} -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .item > a:hover, -.ui.inverted.menu .item .menu a.item:hover, -.ui.inverted.menu .item .menu a.item.hover, -.ui.inverted.menu .item .menu .link.item:hover, -.ui.inverted.menu .item .menu .link.item.hover { - color: #ffffff; -} -/*--- Down ---*/ -.ui.inverted.menu .item.down, -.ui.inverted.menu a.item:active, -.ui.inverted.menu .item > a:active, -.ui.inverted.menu .item.down, -.ui.inverted.menu .dropdown.item:active, -.ui.inverted.menu .link.item:active, -.ui.inverted.menu a.item:active { - background-color: rgba(255, 255, 255, 0.15); -} -/*--- Active ---*/ -.ui.inverted.menu .active.item { - border-color: transparent !important; - background-color: rgba(255, 255, 255, 0.2); -} -.ui.inverted.menu .active.item, -.ui.inverted.menu .active.item a { - color: #ffffff; -} -.ui.inverted.vertical.menu .item .menu .active.item { - background-color: rgba(255, 255, 255, 0.2); - color: #ffffff; -} -/*--- Pointers ---*/ -.ui.inverted.pointing.menu .active.item:after { - background-color: #505050; - box-shadow: none; -} -.ui.inverted.pointing.menu .active.item:hover:after { - background-color: #3B3B3B; -} -/*-------------- - Floated ----------------*/ -.ui.floated.menu { - float: left; - margin: 0rem 0.5rem 0rem 0rem; -} -.ui.right.floated.menu { - float: right; - margin: 0rem 0rem 0rem 0.5rem; -} -/*-------------- - Inverted Colors ----------------*/ -/*--- Light Colors ---*/ -.ui.grey.menu { - background-color: #F0F0F0; -} -/*--- Inverted Colors ---*/ -.ui.inverted.green.menu { - background-color: #A1CF64; -} -.ui.inverted.green.pointing.menu .active.item:after { - background-color: #A1CF64; -} -.ui.inverted.red.menu { - background-color: #EF4D6D; -} -.ui.inverted.red.pointing.menu .active.item:after { - background-color: #F16883; -} -.ui.inverted.blue.menu { - background-color: #6ECFF5; -} -.ui.inverted.blue.pointing.menu .active.item:after { - background-color: #6ECFF5; -} -.ui.inverted.purple.menu { - background-color: #564F8A; -} -.ui.inverted.purple.pointing.menu .active.item:after { - background-color: #564F8A; -} -.ui.inverted.orange.menu { - background-color: #F05940; -} -.ui.inverted.orange.pointing.menu .active.item:after { - background-color: #F05940; -} -.ui.inverted.teal.menu { - background-color: #00B5AD; -} -.ui.inverted.teal.pointing.menu .active.item:after { - background-color: #00B5AD; -} -/*-------------- - Text Menu ----------------*/ -.ui.text.menu { - background-color: transparent; - margin: 1rem -1rem; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.text.menu > .item { - opacity: 0.6; - margin: 0em 1em; - padding: 0em; - min-height: 0em !important; - -webkit-border-radius: 0px; - -moz-border-radius: 0px; - border-radius: 0px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - color: rgba(0, 0, 0, 0.6); - -webkit-transition: opacity 0.2s ease - ; - -moz-transition: opacity 0.2s ease - ; - -o-transition: opacity 0.2s ease - ; - -ms-transition: opacity 0.2s ease - ; - transition: opacity 0.2s ease - ; -} -.ui.text.menu > .item:before { - display: none !important; -} -.ui.text.menu .header.item { - background-color: transparent; - opacity: 1; - color: rgba(50, 50, 50, 0.8); - font-size: 0.875rem; - padding: 0em; - text-transform: uppercase; - font-weight: bold; -} -.ui.text.menu .header.item > a { - background-color: transparent; -} -/*--- fluid text ---*/ -.ui.text.item.menu .item { - margin: 0em; -} -/*--- vertical text ---*/ -.ui.vertical.text.menu { - margin: 1rem 0em; -} -.ui.vertical.text.menu:first-child { - margin-top: 0rem; -} -.ui.vertical.text.menu:last-child { - margin-bottom: 0rem; -} -.ui.vertical.text.menu .item { - float: left; - clear: left; - margin: 0.5em 0em; -} -.ui.vertical.text.menu .item > .icon { - float: none; - margin: 0em 0.75em 0em 0em; -} -.ui.vertical.text.menu .header.item { - margin: 0.8em 0em; -} -/*--- hover ---*/ -.ui.text.menu .item.hover, -.ui.text.menu .item:hover { - opacity: 1; - background-color: transparent; -} -/*--- active ---*/ -.ui.text.menu .active.item { - background-color: transparent; - padding: 0em; - border: none; - opacity: 1; - font-weight: bold; -} -/* disable variations */ -.ui.text.pointing.menu .active.item:after { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.text.attached.menu { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -/* colors */ -.ui.green.text.menu .active.item { - color: #A1CF64; -} -.ui.red.text.menu .active.item { - color: #EF4D6D; -} -.ui.blue.text.menu .active.item { - color: #6ECFF5; -} -.ui.purple.text.menu .active.item { - color: #564F8A; -} -.ui.orange.text.menu .active.item { - color: #F05940; -} -.ui.teal.text.menu .active.item { - color: #00B5AD; -} /*-------------- Secondary ---------------*/ @@ -907,7 +638,9 @@ background-color: transparent; border-color: rgba(0, 0, 0, 0.4); } -/*------- Vertical------- */ +/*--------------------- + Secondary Vertical +-----------------------*/ .ui.secondary.vertical.pointing.menu { border: none; border-right: 3px solid rgba(0, 0, 0, 0.1); @@ -933,61 +666,178 @@ -moz-border-radius: 0em; border-radius: 0em; } -/* Hover */ -.ui.secondary.vertical.pointing.menu > .item.hover, -.ui.secondary.vertical.pointing.menu > .item:hover { - background-color: transparent; - color: rgba(0, 0, 0, 0.7); +/* Hover */ +.ui.secondary.vertical.pointing.menu > .item.hover, +.ui.secondary.vertical.pointing.menu > .item:hover { + background-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +/* Down */ +.ui.secondary.vertical.pointing.menu > .item:active, +.ui.secondary.vertical.pointing.menu > .item.down { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.2); +} +/* Active */ +.ui.secondary.vertical.pointing.menu > .item.active { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.85); +} +/*-------------- + Inverted +---------------*/ +.ui.secondary.inverted.menu { + background-color: transparent; +} +.ui.secondary.inverted.pointing.menu { + border-bottom: 3px solid rgba(255, 255, 255, 0.1); +} +.ui.secondary.inverted.pointing.menu > .item { + color: rgba(255, 255, 255, 0.7); +} +/* Hover */ +.ui.secondary.inverted.pointing.menu > .item.hover, +.ui.secondary.inverted.pointing.menu > .item:hover { + color: rgba(255, 255, 255, 0.85); +} +/* Down */ +.ui.secondary.inverted.pointing.menu > .item:active, +.ui.secondary.inverted.pointing.menu > .item.down { + border-color: rgba(255, 255, 255, 0.4) !important; +} +/* Active */ +.ui.secondary.inverted.pointing.menu > .item.active { + border-color: rgba(255, 255, 255, 0.8) !important; + color: #ffffff; +} +/*--------------------- + Inverted Vertical +----------------------*/ +.ui.secondary.inverted.vertical.pointing.menu { + border-right: 3px solid rgba(255, 255, 255, 0.1); + border-bottom: none; +} +/*-------------- + Text Menu +---------------*/ +.ui.text.menu { + background-color: transparent; + margin: 1rem -1rem; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.ui.text.menu > .item { + opacity: 0.6; + margin: 0em 1em; + padding: 0em; + min-height: 0em !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: rgba(0, 0, 0, 0.6); + -webkit-transition: opacity 0.2s ease + ; + -moz-transition: opacity 0.2s ease + ; + -o-transition: opacity 0.2s ease + ; + -ms-transition: opacity 0.2s ease + ; + transition: opacity 0.2s ease + ; +} +.ui.text.menu > .item:before { + display: none !important; +} +.ui.text.menu .header.item { + background-color: transparent; + opacity: 1; + color: rgba(50, 50, 50, 0.8); + font-size: 0.875rem; + padding: 0em; + text-transform: uppercase; + font-weight: bold; +} +.ui.text.menu .header.item > a { + background-color: transparent; +} +/*--- fluid text ---*/ +.ui.text.item.menu .item { + margin: 0em; +} +/*--- vertical text ---*/ +.ui.vertical.text.menu { + margin: 1rem 0em; +} +.ui.vertical.text.menu:first-child { + margin-top: 0rem; +} +.ui.vertical.text.menu:last-child { + margin-bottom: 0rem; +} +.ui.vertical.text.menu .item { + float: left; + clear: left; + margin: 0.5em 0em; +} +.ui.vertical.text.menu .item > .icon { + float: none; + margin: 0em 0.75em 0em 0em; +} +.ui.vertical.text.menu .header.item { + margin: 0.8em 0em; } -/* Down */ -.ui.secondary.vertical.pointing.menu > .item:active, -.ui.secondary.vertical.pointing.menu > .item.down { +/*--- hover ---*/ +.ui.text.menu .item.hover, +.ui.text.menu .item:hover { + opacity: 1; background-color: transparent; - border-color: rgba(0, 0, 0, 0.2); } -/* Active */ -.ui.secondary.vertical.pointing.menu > .item.active { +/*--- active ---*/ +.ui.text.menu .active.item { background-color: transparent; - border-color: rgba(0, 0, 0, 0.4); - color: rgba(0, 0, 0, 0.85); + padding: 0em; + border: none; + opacity: 1; + font-weight: bold; } -/*------- Inverted------- */ -.ui.secondary.inverted.pointing.menu { - border-bottom: 3px solid rgba(255, 255, 255, 0.1); +/* disable variations */ +.ui.text.pointing.menu .active.item:after { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -.ui.secondary.inverted.pointing.menu > .item { - color: rgba(255, 255, 255, 0.7); +.ui.text.attached.menu { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -/* Hover */ -.ui.secondary.inverted.pointing.menu > .item.hover, -.ui.secondary.inverted.pointing.menu > .item:hover { - color: rgba(255, 255, 255, 0.85); +/* colors */ +.ui.green.text.menu .active.item { + color: #A1CF64; } -/* Down */ -.ui.secondary.inverted.pointing.menu > .item:active, -.ui.secondary.inverted.pointing.menu > .item.down { - border-color: rgba(255, 255, 255, 0.4); +.ui.red.text.menu .active.item { + color: #EF4D6D; } -/* Active */ -.ui.secondary.inverted.pointing.menu > .item.active { - border-color: rgba(255, 255, 255, 0.8); - color: #ffffff; +.ui.blue.text.menu .active.item { + color: #6ECFF5; } -/*-------------- - Inverted Sec ----------------*/ -.ui.secondary.inverted.vertical.pointing.menu { - border-right: 3px solid rgba(255, 255, 255, 0.1); - border-bottom: none; +.ui.purple.text.menu .active.item { + color: #564F8A; } -/* Down */ -.ui.secondary.inverted.vertical.pointing.menu .item:active, -.ui.secondary.inverted.vertical.pointing.menu .item.down { - box-shadow: 0.2em 0em 0em 0em rgba(255, 255, 255, 0.2); +.ui.orange.text.menu .active.item { + color: #F05940; } -/* Active */ -.ui.secondary.inverted.vertical.pointing.menu .item.active { - box-shadow: 0.2em 0em 0em 0em rgba(255, 255, 255, 0.4); +.ui.teal.text.menu .active.item { + color: #00B5AD; } /*-------------- Icon Only @@ -1033,6 +883,194 @@ font-size: 1.5em; margin: 0em auto 0.3em; } +/******************************* + Variations +*******************************/ +/*-------------- + Colors +---------------*/ +/*--- Light Colors ---*/ +.ui.menu .green.active.item, +.ui.green.menu .active.item { + border-color: #A1CF64 !important; +} +.ui.menu .red.active.item, +.ui.red.menu .active.item { + border-color: #EF4D6D !important; +} +.ui.menu .blue.active.item, +.ui.blue.menu .active.item { + border-color: #6ECFF5 !important; +} +.ui.menu .purple.active.item, +.ui.purple.menu .active.item { + border-color: #564F8A !important; +} +.ui.menu .orange.active.item, +.ui.orange.menu .active.item { + border-color: #F05940 !important; +} +.ui.menu .teal.active.item, +.ui.teal.menu .active.item { + border-color: #00B5AD !important; +} +/*-------------- + Inverted +---------------*/ +.ui.inverted.menu { + background-color: #333333; + box-shadow: none; +} +.ui.inverted.menu .header.item { + margin: 0em; + background-color: rgba(0, 0, 0, 0.3); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.ui.inverted.menu .item, +.ui.inverted.menu .item > a { + color: #FFFFFF; +} +.ui.inverted.menu .item .item, +.ui.inverted.menu .item .item > a { + color: rgba(255, 255, 255, 0.8); +} +.ui.inverted.menu .item .item > a:hover { + background-color: rgba(255, 255, 255, 0.03); + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.menu .item > p:only-child { + color: rgba(255, 255, 255, 0.75); +} +.ui.inverted.menu .dropdown.item .menu .item, +.ui.inverted.menu .dropdown.item .menu .item a { + color: rgba(0, 0, 0, 0.75) !important; +} +.ui.inverted.menu .item.disabled, +.ui.inverted.menu .item.disabled:hover, +.ui.inverted.menu .item.disabled.hover { + color: rgba(255, 255, 255, 0.2); +} +/*--- Border ---*/ +.ui.inverted.menu .item:before { + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); +} +.ui.vertical.inverted.menu .item:before { + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -ms-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); +} +/*--- Hover ---*/ +.ui.link.inverted.menu .item:hover, +.ui.inverted.menu .item.hover, +.ui.inverted.menu .link.item:hover, +.ui.inverted.menu a.item:hover, +.ui.inverted.menu .dropdown.item.hover, +.ui.inverted.menu .dropdown.item:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.ui.inverted.menu a.item:hover, +.ui.inverted.menu .item.hover, +.ui.inverted.menu .item > a:hover, +.ui.inverted.menu .item .menu a.item:hover, +.ui.inverted.menu .item .menu a.item.hover, +.ui.inverted.menu .item .menu .link.item:hover, +.ui.inverted.menu .item .menu .link.item.hover { + color: #ffffff; +} +/*--- Down ---*/ +.ui.inverted.menu .item.down, +.ui.inverted.menu a.item:active, +.ui.inverted.menu .item > a:active, +.ui.inverted.menu .item.down, +.ui.inverted.menu .dropdown.item:active, +.ui.inverted.menu .link.item:active, +.ui.inverted.menu a.item:active { + background-color: rgba(255, 255, 255, 0.15); +} +/*--- Active ---*/ +.ui.inverted.menu .active.item { + border-color: transparent !important; + background-color: rgba(255, 255, 255, 0.2); +} +.ui.inverted.menu .active.item, +.ui.inverted.menu .active.item a { + color: #ffffff; +} +.ui.inverted.vertical.menu .item .menu .active.item { + background-color: rgba(255, 255, 255, 0.2); + color: #ffffff; +} +/*--- Pointers ---*/ +.ui.inverted.pointing.menu .active.item:after { + background-color: #505050; + box-shadow: none; +} +.ui.inverted.pointing.menu .active.item:hover:after { + background-color: #3B3B3B; +} +/*-------------- + Floated +---------------*/ +.ui.floated.menu { + float: left; + margin: 0rem 0.5rem 0rem 0rem; +} +.ui.right.floated.menu { + float: right; + margin: 0rem 0rem 0rem 0.5rem; +} +/*-------------- + Inverted Colors +---------------*/ +/*--- Light Colors ---*/ +.ui.grey.menu { + background-color: #F0F0F0; +} +/*--- Inverted Colors ---*/ +.ui.inverted.green.menu { + background-color: #A1CF64; +} +.ui.inverted.green.pointing.menu .active.item:after { + background-color: #A1CF64; +} +.ui.inverted.red.menu { + background-color: #EF4D6D; +} +.ui.inverted.red.pointing.menu .active.item:after { + background-color: #F16883; +} +.ui.inverted.blue.menu { + background-color: #6ECFF5; +} +.ui.inverted.blue.pointing.menu .active.item:after { + background-color: #6ECFF5; +} +.ui.inverted.purple.menu { + background-color: #564F8A; +} +.ui.inverted.purple.pointing.menu .active.item:after { + background-color: #564F8A; +} +.ui.inverted.orange.menu { + background-color: #F05940; +} +.ui.inverted.orange.pointing.menu .active.item:after { + background-color: #F05940; +} +.ui.inverted.teal.menu { + background-color: #00B5AD; +} +.ui.inverted.teal.pointing.menu .active.item:after { + background-color: #00B5AD; +} /*-------------- Fitted ---------------*/ diff --git a/build/uncompressed/modules/video.css b/build/uncompressed/modules/video.css index f57b9b944..57d278e91 100644 --- a/build/uncompressed/modules/video.css +++ b/build/uncompressed/modules/video.css @@ -1,43 +1,81 @@ -/*--------------- - Video Embed -----------------*/ -.video.module { +/* + * # Semantic Video + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: July 30, 2013 + */ +/******************************* + Video +*******************************/ +.ui.video { position: relative; - background: #333333 url(../images/placeholder.png) no-repeat center center; + max-width: 100%; } -.video.module .play { +/*-------------- + Content +---------------*/ +/* Placeholder Image */ +.ui.video .placeholder { + background-color: #333333; +} +/* Play Icon Overlay */ +.ui.video .play { cursor: pointer; position: absolute; top: 0px; left: 0px; - z-index: 100; + z-index: 10; + width: 100%; + height: 100%; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; filter: alpha(opacity=60); opacity: 0.6; - width: 100%; - height: 100%; - background: url(/images/modules/video-play.png) no-repeat center center; -webkit-transition: opacity 0.3s; -moz-transition: opacity 0.3s; -o-transition: opacity 0.3s; -ms-transition: opacity 0.3s; transition: opacity 0.3s; } -.video.module .play:hover { - opacity: 1; +.ui.video .play.icon:before { + position: absolute; + top: 50%; + left: 50%; + z-index: 11; + font-size: 6rem; + margin: -3rem 0em 0em -3rem; + color: #FFFFFF; + text-shadow: 0px 3px 3px rgba(0, 0, 0, 0.4); } -.video.module .placeholder { +.ui.video .placeholder { + display: block; width: 100%; height: 100%; } -.video.module .embed { +/* IFrame Embed */ +.ui.video .embed { display: none; } -/* Video Active */ -.video.module.active .play, -.video.module.active .placeholder { +/******************************* + States +*******************************/ +/*-------------- + Hover +---------------*/ +.ui.video .play:hover { + opacity: 1; +} +/*-------------- + Active +---------------*/ +.ui.video.active .play, +.ui.video.active .placeholder { display: none; } -.video.module.active .embed { +.ui.video.active .embed { display: block; } diff --git a/build/uncompressed/modules/video.js b/build/uncompressed/modules/video.js index 8dd11a6d0..a3ec3ba54 100644 --- a/build/uncompressed/modules/video.js +++ b/build/uncompressed/modules/video.js @@ -11,381 +11,416 @@ ;(function ($, window, document, undefined) { - $.fn.video = function(parameters) { - - var - settings = $.extend(true, {}, $.fn.video.settings, parameters), - // make arguments available - moduleArguments = arguments || false, - invokedResponse - ; - - $(this) - .each(function() { - var - $module = $(this), - $placeholder = $module.find(settings.selector.placeholder), - $playButton = $module.find(settings.selector.playButton), - $embed = $module.find(settings.selector.embed), - - element = this, - instance = $module.data('module-' + settings.namespace), - methodInvoked = (typeof parameters == 'string'), - - namespace = settings.namespace, - metadata = settings.metadata, - className = settings.className, - - module - ; - - module = { - - initialize: function() { - module.debug('Initializing video'); - $placeholder - .off('.video') - .on('click.' + namespace, module.play) - ; - $playButton - .off('.video') - .on('click.' + namespace, module.play) - ; - $module - .data('module-' + namespace, module) - ; - }, - - // sets new video - change: function(source, flv) { - module.debug('Changing video to ', flv); - $module - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - settings.onChange(); - }, - - // clears video embed - reset: function() { - module.debug('Clearing video embed and showing placeholder'); - $module - .removeClass(className.active) - ; - $embed - .html(' ') - ; - $placeholder - .show() - ; - settings.onReset(); - }, +$.fn.video = function(parameters) { + + var + $allModules = $(this), + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.video.settings, parameters) + : $.fn.video.settings, + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + invokedResponse + ; + + $(this) + .each(function() { + var + $module = $(this), + $placeholder = $module.find(settings.selector.placeholder), + $playButton = $module.find(settings.selector.playButton), + $embed = $module.find(settings.selector.embed), + + eventNamespace = '.' + settings.namespace, + moduleNamespace = settings.namespace + '-module', + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + element = this, + instance = $module.data(moduleNamespace), + module + ; - // plays current video - play: function() { - module.debug('Playing video'); + module = { + + initialize: function() { + module.debug('Initializing video'); + $placeholder + .on('click' + eventNamespace, module.play) + ; + $playButton + .on('click' + eventNamespace, module.play) + ; + module.instantiate(); + }, + + instantiate: function() { + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance of video'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + // sets new video + change: function(source, id, url) { + module.debug('Changing video to ', source, id, url); + $module + .data(metadata.source, source) + .data(metadata.id, id) + .data(metadata.url, url) + ; + settings.onChange(); + }, + + // clears video embed + reset: function() { + module.debug('Clearing video embed and showing placeholder'); + $module + .removeClass(className.active) + ; + $embed + .html(' ') + ; + $placeholder + .show() + ; + settings.onReset(); + }, + + // plays current video + play: function() { + module.debug('Playing video'); + var + source = $module.data(metadata.source) || false, + url = $module.data(metadata.url) || false, + id = $module.data(metadata.id) || false + ; + $embed + .html( module.generate.html(source, id, url) ) + ; + $module + .addClass(className.active) + ; + settings.onPlay(); + }, + + generate: { + // generates iframe html + html: function(source, id, url) { + module.debug('Generating embed html'); var - source = $module.data(metadata.source), - flv = $module.data(metadata.flv) + width = (settings.width == 'auto') + ? $module.width() + : settings.width, + height = (settings.height == 'auto') + ? $module.height() + : settings.height, + html ; - $embed - .html( module.generate.html(source, flv) ) - ; - $module - .addClass(className.active) - ; - settings.onPlay(); - }, - - generate: { - // generates iframe html - html: function(source, flv) { - module.debug('Generating embed html'); - var - width = (settings.width == 'auto') - ? $module.width() - : settings.width, - height = (settings.height == 'auto') - ? $module.height() - : settings.height, - html - ; + if(source && id) { if(source == 'vimeo') { html = '' - + '' ; } else if(source == 'youtube') { html = '' - + '' ; } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' + } + else if(url) { + html = '' + + '' ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; } + else { + module.error(error.noVideo); + } + return html; }, - /* standard module */ - debug: function(message, variableName) { - if(settings.debug) { - if(variableName !== undefined) { - console.info(settings.moduleName + ': ' + message, variableName); + // generate url parameters + url: function(source) { + var + api = (settings.api) + ? 1 + : 0, + autoplay = (settings.autoplay) + ? 1 + : 0, + hd = (settings.hd) + ? 1 + : 0, + showUI = (settings.showUI) + ? 1 + : 0, + // opposite used for some params + hideUI = !(settings.showUI) + ? 1 + : 0, + url = '' + ; + if(source == 'vimeo') { + url = '' + + 'api=' + api + + '&title=' + showUI + + '&byline=' + showUI + + '&portrait=' + showUI + + '&autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } - else { - console.info(settings.moduleName + ': ' + message); + } + if(source == 'ustream') { + url = '' + + 'autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } } - }, - error: function(errorMessage) { - console.warn(settings.moduleName + ': ' + errorMessage); - }, - invoke: function(methodName, context, methodArguments) { + else if(source == 'youtube') { + url = '' + + 'enablejsapi=' + api + + '&autoplay=' + autoplay + + '&autohide=' + hideUI + + '&hq=' + hd + + '&modestbranding=1' + ; + if(settings.color) { + url += '&color=' + settings.color; + } + } + return url; + } + }, + + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.warn, console, settings.moduleName + ':'); + }, + performance: { + log: function(message) { var - method + currentTime, + executionTime, + previousTime ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.errors.method); - return false; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime, + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime }); } - if ( $.isFunction( method ) ) { - return method.apply(context, methodArguments); + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); + }, + display: function() { + var + title = settings.moduleName + ':', + totalTime = 0 + ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); } - // return retrieved variable or chain - return method; + performance = []; } - }; - // check for invoking internal method - if(methodInvoked) { - invokedResponse = module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); - } - // otherwise initialize - else { - if(instance) { - module.destroy(); + }, + invoke: function(query, passedArguments, context) { + var + maxDepth, + found + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && instance !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { + instance = instance[value]; + } + else if( instance[value] !== undefined ) { + found = instance[value]; + } + else { + module.error(error.method); + } + }); } - module.initialize(); + if ( $.isFunction( found ) ) { + return found.apply(context, passedArguments); + } + return found || false; } + }; - }) - ; - // chain or return queried method - return (invokedResponse !== undefined) - ? invokedResponse - : this - ; - }; - - - $.fn.videoPlaylist = function(video, parameters) { - var - $allModules = $(this), - $video = $(video), - $iframe = $video.find('.embed iframe'), - - settings = $.extend({}, $.fn.videoPlaylist.settings, parameters, true) - ; - $allModules - .each(function() { - var - $element = $(this), - - metadata = settings.metadata, - namespace = settings.namespace, - className = settings.className, - - module = { - initialize: function() { - $element - .on('click.' + namespace , module.changeVideo) - ; - }, - changeVideo: function() { - var - flv = $element.data(metadata.flv) || false, - source = $element.data(metadata.source) || false, - placeholder = $element.data(metadata.placeholder) || false - ; - if(flv && source) { - $video - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - if(settings.showPlaceholder) { - $video - .removeClass(className.active) - .find($.fn.video.selector.placeholder) - .attr('src', placeholder) - ; - } - else { - try { - $video - .video('play') - ; - } - catch(error) { - console.warn('Video Playlist Module: ' + settings.error.init); - } - } - $allModules - .removeClass(className.active) - ; - $element - .addClass(className.active) - ; - } - } - } - ; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + invokedResponse = module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); + } module.initialize(); - }) - ; - - if(settings.playFirst) { - $allModules - .eq(0) - .trigger('click') - ; - // we all like a good hack - if($iframe.size() > 0) { - $iframe - .attr('src', $iframe.attr('src').replace('autoplay=1', 'autoplay=0') ) - ; } + }) + ; + + return (invokedResponse) + ? invokedResponse + : this + ; +}; + +$.fn.video.settings = { + + moduleName : 'Video', + namespace : 'video', + + debug : true, + verbose : true, + performance : true, + + + metadata : { + source : 'source', + id : 'id', + url : 'url' + }, + + onPlay : function(){}, + onReset : function(){}, + onChange : function(){}, + + // callbacks not coded yet (needs to use jsapi) + onPause : function() {}, + onStop : function() {}, + + width : 'auto', + height : 'auto', + + autoplay : false, + color : '#442359', + hd : true, + showUI : false, + api : true, + + error : { + noVideo : 'No video specified', + method : 'The method you called is not defined' + }, + + className : { + active : 'active' + }, + + selector : { + embed : '.embed', + placeholder : '.placeholder', + playButton : '.play' + } +}; - } - - }; - - $.fn.video.settings = { - - moduleName : 'Video', - namespace : 'video', - debug : false, - - metadata : { - source : 'source', - flv : 'flv' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - play : function() {}, - pause : function() {}, - stop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - errors : { - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } - }; - - $.fn.videoPlaylist.settings = { - moduleName : 'Video Playlist', - namespace : 'videoPlaylist', - - source : 'vimeo', - showPlaceholder : false, - playFirst : true, - - metadata: { - flv : 'flv', - source : 'source', - placeholder : 'placeholder' - }, - - errors: { - init : 'The video player you specified was not yet initialized' - }, - - className : { - active : 'active' - } - - }; })( jQuery, window , document ); diff --git a/node/src/files/components/semantic/collections/menu.css b/node/src/files/components/semantic/collections/menu.css index 1a68db45b..4ab34891a 100644 --- a/node/src/files/components/semantic/collections/menu.css +++ b/node/src/files/components/semantic/collections/menu.css @@ -338,7 +338,7 @@ visibility: visible; } /******************************* - Variations + Types *******************************/ /*-------------- Vertical @@ -475,35 +475,44 @@ display: block; } /*-------------- - Colors + Tiered ---------------*/ -/*--- Light Colors ---*/ -.ui.menu .green.active.item, -.ui.green.menu .active.item { - border-color: #A1CF64 !important; -} -.ui.menu .red.active.item, -.ui.red.menu .active.item { - border-color: #EF4D6D !important; +.ui.tabular.menu { + background-color: transparent; + border-bottom: 1px solid #DCDDDE; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -.ui.menu .blue.active.item, -.ui.blue.menu .active.item { - border-color: #6ECFF5 !important; +.ui.tabular.menu .item { + background-color: transparent; + font-weight: bold; + padding-left: 1.4em; + padding-right: 1.4em; + color: #9DA6AB; } -.ui.menu .purple.active.item, -.ui.purple.menu .active.item { - border-color: #564F8A !important; +.ui.tabular.menu .item:hover { + background-color: transparent; + color: #5D6266; } -.ui.menu .orange.active.item, -.ui.orange.menu .active.item { - border-color: #F05940 !important; +.ui.tabular.menu .item:before { + display: none; } -.ui.menu .teal.active.item, -.ui.teal.menu .active.item { - border-color: #00B5AD !important; +.ui.tabular.menu .active.item { + position: relative; + top: 1px; + background-color: #F8F8F8; + color: #5D6266; + border-left: 1px solid #DCDDDE; + border-right: 1px solid #DCDDDE; + border-top: 1px solid #DCDDDE; + padding-top: 0.75em; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; } /*-------------- - Pagination + Pagination ---------------*/ .ui.pagination.menu { margin: 0em; @@ -523,284 +532,6 @@ padding-top: 0.75em; background-color: rgba(0, 0, 0, 0.05); } -/*-------------- - Inverted ----------------*/ -.ui.inverted.menu { - background-color: #333333; - box-shadow: none; -} -.ui.inverted.menu .header.item { - margin: 0em; - background-color: rgba(0, 0, 0, 0.3); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.inverted.menu .item, -.ui.inverted.menu .item > a { - color: #FFFFFF; -} -.ui.inverted.menu .item .item, -.ui.inverted.menu .item .item > a { - color: rgba(255, 255, 255, 0.8); -} -.ui.inverted.menu .item .item > a:hover { - background-color: rgba(255, 255, 255, 0.03); - color: rgba(255, 255, 255, 0.9); -} -.ui.inverted.menu .item > p:only-child { - color: rgba(255, 255, 255, 0.75); -} -.ui.inverted.menu .dropdown.item .menu .item, -.ui.inverted.menu .dropdown.item .menu .item a { - color: rgba(0, 0, 0, 0.75) !important; -} -.ui.inverted.menu .item.disabled, -.ui.inverted.menu .item.disabled:hover, -.ui.inverted.menu .item.disabled.hover { - color: rgba(255, 255, 255, 0.2); -} -/*--- Border ---*/ -.ui.inverted.menu .item:before { - background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} -.ui.vertical.inverted.menu .item:before { - background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -ms-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} -/*--- Hover ---*/ -.ui.link.inverted.menu .item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .link.item:hover, -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .dropdown.item.hover, -.ui.inverted.menu .dropdown.item:hover { - background-color: rgba(255, 255, 255, 0.1); -} -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .item > a:hover, -.ui.inverted.menu .item .menu a.item:hover, -.ui.inverted.menu .item .menu a.item.hover, -.ui.inverted.menu .item .menu .link.item:hover, -.ui.inverted.menu .item .menu .link.item.hover { - color: #ffffff; -} -/*--- Down ---*/ -.ui.inverted.menu .item.down, -.ui.inverted.menu a.item:active, -.ui.inverted.menu .item > a:active, -.ui.inverted.menu .item.down, -.ui.inverted.menu .dropdown.item:active, -.ui.inverted.menu .link.item:active, -.ui.inverted.menu a.item:active { - background-color: rgba(255, 255, 255, 0.15); -} -/*--- Active ---*/ -.ui.inverted.menu .active.item { - border-color: transparent !important; - background-color: rgba(255, 255, 255, 0.2); -} -.ui.inverted.menu .active.item, -.ui.inverted.menu .active.item a { - color: #ffffff; -} -.ui.inverted.vertical.menu .item .menu .active.item { - background-color: rgba(255, 255, 255, 0.2); - color: #ffffff; -} -/*--- Pointers ---*/ -.ui.inverted.pointing.menu .active.item:after { - background-color: #505050; - box-shadow: none; -} -.ui.inverted.pointing.menu .active.item:hover:after { - background-color: #3B3B3B; -} -/*-------------- - Floated ----------------*/ -.ui.floated.menu { - float: left; - margin: 0rem 0.5rem 0rem 0rem; -} -.ui.right.floated.menu { - float: right; - margin: 0rem 0rem 0rem 0.5rem; -} -/*-------------- - Inverted Colors ----------------*/ -/*--- Light Colors ---*/ -.ui.grey.menu { - background-color: #F0F0F0; -} -/*--- Inverted Colors ---*/ -.ui.inverted.green.menu { - background-color: #A1CF64; -} -.ui.inverted.green.pointing.menu .active.item:after { - background-color: #A1CF64; -} -.ui.inverted.red.menu { - background-color: #EF4D6D; -} -.ui.inverted.red.pointing.menu .active.item:after { - background-color: #F16883; -} -.ui.inverted.blue.menu { - background-color: #6ECFF5; -} -.ui.inverted.blue.pointing.menu .active.item:after { - background-color: #6ECFF5; -} -.ui.inverted.purple.menu { - background-color: #564F8A; -} -.ui.inverted.purple.pointing.menu .active.item:after { - background-color: #564F8A; -} -.ui.inverted.orange.menu { - background-color: #F05940; -} -.ui.inverted.orange.pointing.menu .active.item:after { - background-color: #F05940; -} -.ui.inverted.teal.menu { - background-color: #00B5AD; -} -.ui.inverted.teal.pointing.menu .active.item:after { - background-color: #00B5AD; -} -/*-------------- - Text Menu ----------------*/ -.ui.text.menu { - background-color: transparent; - margin: 1rem -1rem; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.text.menu > .item { - opacity: 0.6; - margin: 0em 1em; - padding: 0em; - min-height: 0em !important; - -webkit-border-radius: 0px; - -moz-border-radius: 0px; - border-radius: 0px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - color: rgba(0, 0, 0, 0.6); - -webkit-transition: opacity 0.2s ease - ; - -moz-transition: opacity 0.2s ease - ; - -o-transition: opacity 0.2s ease - ; - -ms-transition: opacity 0.2s ease - ; - transition: opacity 0.2s ease - ; -} -.ui.text.menu > .item:before { - display: none !important; -} -.ui.text.menu .header.item { - background-color: transparent; - opacity: 1; - color: rgba(50, 50, 50, 0.8); - font-size: 0.875rem; - padding: 0em; - text-transform: uppercase; - font-weight: bold; -} -.ui.text.menu .header.item > a { - background-color: transparent; -} -/*--- fluid text ---*/ -.ui.text.item.menu .item { - margin: 0em; -} -/*--- vertical text ---*/ -.ui.vertical.text.menu { - margin: 1rem 0em; -} -.ui.vertical.text.menu:first-child { - margin-top: 0rem; -} -.ui.vertical.text.menu:last-child { - margin-bottom: 0rem; -} -.ui.vertical.text.menu .item { - float: left; - clear: left; - margin: 0.5em 0em; -} -.ui.vertical.text.menu .item > .icon { - float: none; - margin: 0em 0.75em 0em 0em; -} -.ui.vertical.text.menu .header.item { - margin: 0.8em 0em; -} -/*--- hover ---*/ -.ui.text.menu .item.hover, -.ui.text.menu .item:hover { - opacity: 1; - background-color: transparent; -} -/*--- active ---*/ -.ui.text.menu .active.item { - background-color: transparent; - padding: 0em; - border: none; - opacity: 1; - font-weight: bold; -} -/* disable variations */ -.ui.text.pointing.menu .active.item:after { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.ui.text.attached.menu { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -/* colors */ -.ui.green.text.menu .active.item { - color: #A1CF64; -} -.ui.red.text.menu .active.item { - color: #EF4D6D; -} -.ui.blue.text.menu .active.item { - color: #6ECFF5; -} -.ui.purple.text.menu .active.item { - color: #564F8A; -} -.ui.orange.text.menu .active.item { - color: #F05940; -} -.ui.teal.text.menu .active.item { - color: #00B5AD; -} /*-------------- Secondary ---------------*/ @@ -907,7 +638,9 @@ background-color: transparent; border-color: rgba(0, 0, 0, 0.4); } -/*------- Vertical------- */ +/*--------------------- + Secondary Vertical +-----------------------*/ .ui.secondary.vertical.pointing.menu { border: none; border-right: 3px solid rgba(0, 0, 0, 0.1); @@ -933,61 +666,178 @@ -moz-border-radius: 0em; border-radius: 0em; } -/* Hover */ -.ui.secondary.vertical.pointing.menu > .item.hover, -.ui.secondary.vertical.pointing.menu > .item:hover { - background-color: transparent; - color: rgba(0, 0, 0, 0.7); +/* Hover */ +.ui.secondary.vertical.pointing.menu > .item.hover, +.ui.secondary.vertical.pointing.menu > .item:hover { + background-color: transparent; + color: rgba(0, 0, 0, 0.7); +} +/* Down */ +.ui.secondary.vertical.pointing.menu > .item:active, +.ui.secondary.vertical.pointing.menu > .item.down { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.2); +} +/* Active */ +.ui.secondary.vertical.pointing.menu > .item.active { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.85); +} +/*-------------- + Inverted +---------------*/ +.ui.secondary.inverted.menu { + background-color: transparent; +} +.ui.secondary.inverted.pointing.menu { + border-bottom: 3px solid rgba(255, 255, 255, 0.1); +} +.ui.secondary.inverted.pointing.menu > .item { + color: rgba(255, 255, 255, 0.7); +} +/* Hover */ +.ui.secondary.inverted.pointing.menu > .item.hover, +.ui.secondary.inverted.pointing.menu > .item:hover { + color: rgba(255, 255, 255, 0.85); +} +/* Down */ +.ui.secondary.inverted.pointing.menu > .item:active, +.ui.secondary.inverted.pointing.menu > .item.down { + border-color: rgba(255, 255, 255, 0.4) !important; +} +/* Active */ +.ui.secondary.inverted.pointing.menu > .item.active { + border-color: rgba(255, 255, 255, 0.8) !important; + color: #ffffff; +} +/*--------------------- + Inverted Vertical +----------------------*/ +.ui.secondary.inverted.vertical.pointing.menu { + border-right: 3px solid rgba(255, 255, 255, 0.1); + border-bottom: none; +} +/*-------------- + Text Menu +---------------*/ +.ui.text.menu { + background-color: transparent; + margin: 1rem -1rem; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.ui.text.menu > .item { + opacity: 0.6; + margin: 0em 1em; + padding: 0em; + min-height: 0em !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: rgba(0, 0, 0, 0.6); + -webkit-transition: opacity 0.2s ease + ; + -moz-transition: opacity 0.2s ease + ; + -o-transition: opacity 0.2s ease + ; + -ms-transition: opacity 0.2s ease + ; + transition: opacity 0.2s ease + ; +} +.ui.text.menu > .item:before { + display: none !important; +} +.ui.text.menu .header.item { + background-color: transparent; + opacity: 1; + color: rgba(50, 50, 50, 0.8); + font-size: 0.875rem; + padding: 0em; + text-transform: uppercase; + font-weight: bold; +} +.ui.text.menu .header.item > a { + background-color: transparent; +} +/*--- fluid text ---*/ +.ui.text.item.menu .item { + margin: 0em; +} +/*--- vertical text ---*/ +.ui.vertical.text.menu { + margin: 1rem 0em; +} +.ui.vertical.text.menu:first-child { + margin-top: 0rem; +} +.ui.vertical.text.menu:last-child { + margin-bottom: 0rem; +} +.ui.vertical.text.menu .item { + float: left; + clear: left; + margin: 0.5em 0em; +} +.ui.vertical.text.menu .item > .icon { + float: none; + margin: 0em 0.75em 0em 0em; +} +.ui.vertical.text.menu .header.item { + margin: 0.8em 0em; } -/* Down */ -.ui.secondary.vertical.pointing.menu > .item:active, -.ui.secondary.vertical.pointing.menu > .item.down { +/*--- hover ---*/ +.ui.text.menu .item.hover, +.ui.text.menu .item:hover { + opacity: 1; background-color: transparent; - border-color: rgba(0, 0, 0, 0.2); } -/* Active */ -.ui.secondary.vertical.pointing.menu > .item.active { +/*--- active ---*/ +.ui.text.menu .active.item { background-color: transparent; - border-color: rgba(0, 0, 0, 0.4); - color: rgba(0, 0, 0, 0.85); + padding: 0em; + border: none; + opacity: 1; + font-weight: bold; } -/*------- Inverted------- */ -.ui.secondary.inverted.pointing.menu { - border-bottom: 3px solid rgba(255, 255, 255, 0.1); +/* disable variations */ +.ui.text.pointing.menu .active.item:after { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -.ui.secondary.inverted.pointing.menu > .item { - color: rgba(255, 255, 255, 0.7); +.ui.text.attached.menu { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } -/* Hover */ -.ui.secondary.inverted.pointing.menu > .item.hover, -.ui.secondary.inverted.pointing.menu > .item:hover { - color: rgba(255, 255, 255, 0.85); +/* colors */ +.ui.green.text.menu .active.item { + color: #A1CF64; } -/* Down */ -.ui.secondary.inverted.pointing.menu > .item:active, -.ui.secondary.inverted.pointing.menu > .item.down { - border-color: rgba(255, 255, 255, 0.4); +.ui.red.text.menu .active.item { + color: #EF4D6D; } -/* Active */ -.ui.secondary.inverted.pointing.menu > .item.active { - border-color: rgba(255, 255, 255, 0.8); - color: #ffffff; +.ui.blue.text.menu .active.item { + color: #6ECFF5; } -/*-------------- - Inverted Sec ----------------*/ -.ui.secondary.inverted.vertical.pointing.menu { - border-right: 3px solid rgba(255, 255, 255, 0.1); - border-bottom: none; +.ui.purple.text.menu .active.item { + color: #564F8A; } -/* Down */ -.ui.secondary.inverted.vertical.pointing.menu .item:active, -.ui.secondary.inverted.vertical.pointing.menu .item.down { - box-shadow: 0.2em 0em 0em 0em rgba(255, 255, 255, 0.2); +.ui.orange.text.menu .active.item { + color: #F05940; } -/* Active */ -.ui.secondary.inverted.vertical.pointing.menu .item.active { - box-shadow: 0.2em 0em 0em 0em rgba(255, 255, 255, 0.4); +.ui.teal.text.menu .active.item { + color: #00B5AD; } /*-------------- Icon Only @@ -1033,6 +883,194 @@ font-size: 1.5em; margin: 0em auto 0.3em; } +/******************************* + Variations +*******************************/ +/*-------------- + Colors +---------------*/ +/*--- Light Colors ---*/ +.ui.menu .green.active.item, +.ui.green.menu .active.item { + border-color: #A1CF64 !important; +} +.ui.menu .red.active.item, +.ui.red.menu .active.item { + border-color: #EF4D6D !important; +} +.ui.menu .blue.active.item, +.ui.blue.menu .active.item { + border-color: #6ECFF5 !important; +} +.ui.menu .purple.active.item, +.ui.purple.menu .active.item { + border-color: #564F8A !important; +} +.ui.menu .orange.active.item, +.ui.orange.menu .active.item { + border-color: #F05940 !important; +} +.ui.menu .teal.active.item, +.ui.teal.menu .active.item { + border-color: #00B5AD !important; +} +/*-------------- + Inverted +---------------*/ +.ui.inverted.menu { + background-color: #333333; + box-shadow: none; +} +.ui.inverted.menu .header.item { + margin: 0em; + background-color: rgba(0, 0, 0, 0.3); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.ui.inverted.menu .item, +.ui.inverted.menu .item > a { + color: #FFFFFF; +} +.ui.inverted.menu .item .item, +.ui.inverted.menu .item .item > a { + color: rgba(255, 255, 255, 0.8); +} +.ui.inverted.menu .item .item > a:hover { + background-color: rgba(255, 255, 255, 0.03); + color: rgba(255, 255, 255, 0.9); +} +.ui.inverted.menu .item > p:only-child { + color: rgba(255, 255, 255, 0.75); +} +.ui.inverted.menu .dropdown.item .menu .item, +.ui.inverted.menu .dropdown.item .menu .item a { + color: rgba(0, 0, 0, 0.75) !important; +} +.ui.inverted.menu .item.disabled, +.ui.inverted.menu .item.disabled:hover, +.ui.inverted.menu .item.disabled.hover { + color: rgba(255, 255, 255, 0.2); +} +/*--- Border ---*/ +.ui.inverted.menu .item:before { + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: linear-gradient(top, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); +} +.ui.vertical.inverted.menu .item:before { + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: -ms-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); + background-image: linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); +} +/*--- Hover ---*/ +.ui.link.inverted.menu .item:hover, +.ui.inverted.menu .item.hover, +.ui.inverted.menu .link.item:hover, +.ui.inverted.menu a.item:hover, +.ui.inverted.menu .dropdown.item.hover, +.ui.inverted.menu .dropdown.item:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.ui.inverted.menu a.item:hover, +.ui.inverted.menu .item.hover, +.ui.inverted.menu .item > a:hover, +.ui.inverted.menu .item .menu a.item:hover, +.ui.inverted.menu .item .menu a.item.hover, +.ui.inverted.menu .item .menu .link.item:hover, +.ui.inverted.menu .item .menu .link.item.hover { + color: #ffffff; +} +/*--- Down ---*/ +.ui.inverted.menu .item.down, +.ui.inverted.menu a.item:active, +.ui.inverted.menu .item > a:active, +.ui.inverted.menu .item.down, +.ui.inverted.menu .dropdown.item:active, +.ui.inverted.menu .link.item:active, +.ui.inverted.menu a.item:active { + background-color: rgba(255, 255, 255, 0.15); +} +/*--- Active ---*/ +.ui.inverted.menu .active.item { + border-color: transparent !important; + background-color: rgba(255, 255, 255, 0.2); +} +.ui.inverted.menu .active.item, +.ui.inverted.menu .active.item a { + color: #ffffff; +} +.ui.inverted.vertical.menu .item .menu .active.item { + background-color: rgba(255, 255, 255, 0.2); + color: #ffffff; +} +/*--- Pointers ---*/ +.ui.inverted.pointing.menu .active.item:after { + background-color: #505050; + box-shadow: none; +} +.ui.inverted.pointing.menu .active.item:hover:after { + background-color: #3B3B3B; +} +/*-------------- + Floated +---------------*/ +.ui.floated.menu { + float: left; + margin: 0rem 0.5rem 0rem 0rem; +} +.ui.right.floated.menu { + float: right; + margin: 0rem 0rem 0rem 0.5rem; +} +/*-------------- + Inverted Colors +---------------*/ +/*--- Light Colors ---*/ +.ui.grey.menu { + background-color: #F0F0F0; +} +/*--- Inverted Colors ---*/ +.ui.inverted.green.menu { + background-color: #A1CF64; +} +.ui.inverted.green.pointing.menu .active.item:after { + background-color: #A1CF64; +} +.ui.inverted.red.menu { + background-color: #EF4D6D; +} +.ui.inverted.red.pointing.menu .active.item:after { + background-color: #F16883; +} +.ui.inverted.blue.menu { + background-color: #6ECFF5; +} +.ui.inverted.blue.pointing.menu .active.item:after { + background-color: #6ECFF5; +} +.ui.inverted.purple.menu { + background-color: #564F8A; +} +.ui.inverted.purple.pointing.menu .active.item:after { + background-color: #564F8A; +} +.ui.inverted.orange.menu { + background-color: #F05940; +} +.ui.inverted.orange.pointing.menu .active.item:after { + background-color: #F05940; +} +.ui.inverted.teal.menu { + background-color: #00B5AD; +} +.ui.inverted.teal.pointing.menu .active.item:after { + background-color: #00B5AD; +} /*-------------- Fitted ---------------*/ diff --git a/node/src/files/components/semantic/modules/video.css b/node/src/files/components/semantic/modules/video.css index f57b9b944..57d278e91 100644 --- a/node/src/files/components/semantic/modules/video.css +++ b/node/src/files/components/semantic/modules/video.css @@ -1,43 +1,81 @@ -/*--------------- - Video Embed -----------------*/ -.video.module { +/* + * # Semantic Video + * http://github.com/quirkyinc/semantic + * + * + * Copyright 2013 Contributors + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + * Released: July 30, 2013 + */ +/******************************* + Video +*******************************/ +.ui.video { position: relative; - background: #333333 url(../images/placeholder.png) no-repeat center center; + max-width: 100%; } -.video.module .play { +/*-------------- + Content +---------------*/ +/* Placeholder Image */ +.ui.video .placeholder { + background-color: #333333; +} +/* Play Icon Overlay */ +.ui.video .play { cursor: pointer; position: absolute; top: 0px; left: 0px; - z-index: 100; + z-index: 10; + width: 100%; + height: 100%; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; filter: alpha(opacity=60); opacity: 0.6; - width: 100%; - height: 100%; - background: url(/images/modules/video-play.png) no-repeat center center; -webkit-transition: opacity 0.3s; -moz-transition: opacity 0.3s; -o-transition: opacity 0.3s; -ms-transition: opacity 0.3s; transition: opacity 0.3s; } -.video.module .play:hover { - opacity: 1; +.ui.video .play.icon:before { + position: absolute; + top: 50%; + left: 50%; + z-index: 11; + font-size: 6rem; + margin: -3rem 0em 0em -3rem; + color: #FFFFFF; + text-shadow: 0px 3px 3px rgba(0, 0, 0, 0.4); } -.video.module .placeholder { +.ui.video .placeholder { + display: block; width: 100%; height: 100%; } -.video.module .embed { +/* IFrame Embed */ +.ui.video .embed { display: none; } -/* Video Active */ -.video.module.active .play, -.video.module.active .placeholder { +/******************************* + States +*******************************/ +/*-------------- + Hover +---------------*/ +.ui.video .play:hover { + opacity: 1; +} +/*-------------- + Active +---------------*/ +.ui.video.active .play, +.ui.video.active .placeholder { display: none; } -.video.module.active .embed { +.ui.video.active .embed { display: block; } diff --git a/node/src/files/components/semantic/modules/video.js b/node/src/files/components/semantic/modules/video.js index 8dd11a6d0..a3ec3ba54 100644 --- a/node/src/files/components/semantic/modules/video.js +++ b/node/src/files/components/semantic/modules/video.js @@ -11,381 +11,416 @@ ;(function ($, window, document, undefined) { - $.fn.video = function(parameters) { - - var - settings = $.extend(true, {}, $.fn.video.settings, parameters), - // make arguments available - moduleArguments = arguments || false, - invokedResponse - ; - - $(this) - .each(function() { - var - $module = $(this), - $placeholder = $module.find(settings.selector.placeholder), - $playButton = $module.find(settings.selector.playButton), - $embed = $module.find(settings.selector.embed), - - element = this, - instance = $module.data('module-' + settings.namespace), - methodInvoked = (typeof parameters == 'string'), - - namespace = settings.namespace, - metadata = settings.metadata, - className = settings.className, - - module - ; - - module = { - - initialize: function() { - module.debug('Initializing video'); - $placeholder - .off('.video') - .on('click.' + namespace, module.play) - ; - $playButton - .off('.video') - .on('click.' + namespace, module.play) - ; - $module - .data('module-' + namespace, module) - ; - }, - - // sets new video - change: function(source, flv) { - module.debug('Changing video to ', flv); - $module - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - settings.onChange(); - }, - - // clears video embed - reset: function() { - module.debug('Clearing video embed and showing placeholder'); - $module - .removeClass(className.active) - ; - $embed - .html(' ') - ; - $placeholder - .show() - ; - settings.onReset(); - }, +$.fn.video = function(parameters) { + + var + $allModules = $(this), + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.video.settings, parameters) + : $.fn.video.settings, + + moduleSelector = $allModules.selector || '', + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + + invokedResponse + ; + + $(this) + .each(function() { + var + $module = $(this), + $placeholder = $module.find(settings.selector.placeholder), + $playButton = $module.find(settings.selector.playButton), + $embed = $module.find(settings.selector.embed), + + eventNamespace = '.' + settings.namespace, + moduleNamespace = settings.namespace + '-module', + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + element = this, + instance = $module.data(moduleNamespace), + module + ; - // plays current video - play: function() { - module.debug('Playing video'); + module = { + + initialize: function() { + module.debug('Initializing video'); + $placeholder + .on('click' + eventNamespace, module.play) + ; + $playButton + .on('click' + eventNamespace, module.play) + ; + module.instantiate(); + }, + + instantiate: function() { + instance = module; + $module + .data(moduleNamespace, module) + ; + }, + + destroy: function() { + module.verbose('Destroying previous instance of video'); + $module + .removeData(moduleNamespace) + .off(eventNamespace) + ; + }, + + // sets new video + change: function(source, id, url) { + module.debug('Changing video to ', source, id, url); + $module + .data(metadata.source, source) + .data(metadata.id, id) + .data(metadata.url, url) + ; + settings.onChange(); + }, + + // clears video embed + reset: function() { + module.debug('Clearing video embed and showing placeholder'); + $module + .removeClass(className.active) + ; + $embed + .html(' ') + ; + $placeholder + .show() + ; + settings.onReset(); + }, + + // plays current video + play: function() { + module.debug('Playing video'); + var + source = $module.data(metadata.source) || false, + url = $module.data(metadata.url) || false, + id = $module.data(metadata.id) || false + ; + $embed + .html( module.generate.html(source, id, url) ) + ; + $module + .addClass(className.active) + ; + settings.onPlay(); + }, + + generate: { + // generates iframe html + html: function(source, id, url) { + module.debug('Generating embed html'); var - source = $module.data(metadata.source), - flv = $module.data(metadata.flv) + width = (settings.width == 'auto') + ? $module.width() + : settings.width, + height = (settings.height == 'auto') + ? $module.height() + : settings.height, + html ; - $embed - .html( module.generate.html(source, flv) ) - ; - $module - .addClass(className.active) - ; - settings.onPlay(); - }, - - generate: { - // generates iframe html - html: function(source, flv) { - module.debug('Generating embed html'); - var - width = (settings.width == 'auto') - ? $module.width() - : settings.width, - height = (settings.height == 'auto') - ? $module.height() - : settings.height, - html - ; + if(source && id) { if(source == 'vimeo') { html = '' - + '' ; } else if(source == 'youtube') { html = '' - + '' ; } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' + } + else if(url) { + html = '' + + '' ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; } + else { + module.error(error.noVideo); + } + return html; }, - /* standard module */ - debug: function(message, variableName) { - if(settings.debug) { - if(variableName !== undefined) { - console.info(settings.moduleName + ': ' + message, variableName); + // generate url parameters + url: function(source) { + var + api = (settings.api) + ? 1 + : 0, + autoplay = (settings.autoplay) + ? 1 + : 0, + hd = (settings.hd) + ? 1 + : 0, + showUI = (settings.showUI) + ? 1 + : 0, + // opposite used for some params + hideUI = !(settings.showUI) + ? 1 + : 0, + url = '' + ; + if(source == 'vimeo') { + url = '' + + 'api=' + api + + '&title=' + showUI + + '&byline=' + showUI + + '&portrait=' + showUI + + '&autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } - else { - console.info(settings.moduleName + ': ' + message); + } + if(source == 'ustream') { + url = '' + + 'autoplay=' + autoplay + ; + if(settings.color) { + url += '&color=' + settings.color; } } - }, - error: function(errorMessage) { - console.warn(settings.moduleName + ': ' + errorMessage); - }, - invoke: function(methodName, context, methodArguments) { + else if(source == 'youtube') { + url = '' + + 'enablejsapi=' + api + + '&autoplay=' + autoplay + + '&autohide=' + hideUI + + '&hq=' + hd + + '&modestbranding=1' + ; + if(settings.color) { + url += '&color=' + settings.color; + } + } + return url; + } + }, + + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.warn, console, settings.moduleName + ':'); + }, + performance: { + log: function(message) { var - method + currentTime, + executionTime, + previousTime ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.errors.method); - return false; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime, + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime }); } - if ( $.isFunction( method ) ) { - return method.apply(context, methodArguments); + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); + }, + display: function() { + var + title = settings.moduleName + ':', + totalTime = 0 + ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); } - // return retrieved variable or chain - return method; + performance = []; } - }; - // check for invoking internal method - if(methodInvoked) { - invokedResponse = module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); - } - // otherwise initialize - else { - if(instance) { - module.destroy(); + }, + invoke: function(query, passedArguments, context) { + var + maxDepth, + found + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && instance !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { + instance = instance[value]; + } + else if( instance[value] !== undefined ) { + found = instance[value]; + } + else { + module.error(error.method); + } + }); } - module.initialize(); + if ( $.isFunction( found ) ) { + return found.apply(context, passedArguments); + } + return found || false; } + }; - }) - ; - // chain or return queried method - return (invokedResponse !== undefined) - ? invokedResponse - : this - ; - }; - - - $.fn.videoPlaylist = function(video, parameters) { - var - $allModules = $(this), - $video = $(video), - $iframe = $video.find('.embed iframe'), - - settings = $.extend({}, $.fn.videoPlaylist.settings, parameters, true) - ; - $allModules - .each(function() { - var - $element = $(this), - - metadata = settings.metadata, - namespace = settings.namespace, - className = settings.className, - - module = { - initialize: function() { - $element - .on('click.' + namespace , module.changeVideo) - ; - }, - changeVideo: function() { - var - flv = $element.data(metadata.flv) || false, - source = $element.data(metadata.source) || false, - placeholder = $element.data(metadata.placeholder) || false - ; - if(flv && source) { - $video - .data(metadata.source, source) - .data(metadata.flv, flv) - ; - if(settings.showPlaceholder) { - $video - .removeClass(className.active) - .find($.fn.video.selector.placeholder) - .attr('src', placeholder) - ; - } - else { - try { - $video - .video('play') - ; - } - catch(error) { - console.warn('Video Playlist Module: ' + settings.error.init); - } - } - $allModules - .removeClass(className.active) - ; - $element - .addClass(className.active) - ; - } - } - } - ; + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + invokedResponse = module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); + } module.initialize(); - }) - ; - - if(settings.playFirst) { - $allModules - .eq(0) - .trigger('click') - ; - // we all like a good hack - if($iframe.size() > 0) { - $iframe - .attr('src', $iframe.attr('src').replace('autoplay=1', 'autoplay=0') ) - ; } + }) + ; + + return (invokedResponse) + ? invokedResponse + : this + ; +}; + +$.fn.video.settings = { + + moduleName : 'Video', + namespace : 'video', + + debug : true, + verbose : true, + performance : true, + + + metadata : { + source : 'source', + id : 'id', + url : 'url' + }, + + onPlay : function(){}, + onReset : function(){}, + onChange : function(){}, + + // callbacks not coded yet (needs to use jsapi) + onPause : function() {}, + onStop : function() {}, + + width : 'auto', + height : 'auto', + + autoplay : false, + color : '#442359', + hd : true, + showUI : false, + api : true, + + error : { + noVideo : 'No video specified', + method : 'The method you called is not defined' + }, + + className : { + active : 'active' + }, + + selector : { + embed : '.embed', + placeholder : '.placeholder', + playButton : '.play' + } +}; - } - - }; - - $.fn.video.settings = { - - moduleName : 'Video', - namespace : 'video', - debug : false, - - metadata : { - source : 'source', - flv : 'flv' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - play : function() {}, - pause : function() {}, - stop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - errors : { - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } - }; - - $.fn.videoPlaylist.settings = { - moduleName : 'Video Playlist', - namespace : 'videoPlaylist', - - source : 'vimeo', - showPlaceholder : false, - playFirst : true, - - metadata: { - flv : 'flv', - source : 'source', - placeholder : 'placeholder' - }, - - errors: { - init : 'The video player you specified was not yet initialized' - }, - - className : { - active : 'active' - } - - }; })( jQuery, window , document ); diff --git a/node/src/layouts/default.html.eco b/node/src/layouts/default.html.eco index c75b3de45..9bd6ac3af 100755 --- a/node/src/layouts/default.html.eco +++ b/node/src/layouts/default.html.eco @@ -84,10 +84,9 @@