diff --git a/UI/WebServerResources/css/styles.css b/UI/WebServerResources/css/styles.css index d95d12589..172aa6fae 100644 --- a/UI/WebServerResources/css/styles.css +++ b/UI/WebServerResources/css/styles.css @@ -481,7 +481,7 @@ html * { 960 <= size < 1200 Tablet-Landscape 1200 <= size PC */ -[layout], .md-layout { +.layout { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; @@ -489,548 +489,532 @@ html * { display: -ms-flexbox; display: flex; } -[layout=column] { +.layout-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-flex-direction: column; } -[layout=row] { +.layout-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-flex-direction: row; } -[layout-padding] > [flex-sm], -.md-layout-padding > [flex-sm], -[layout-padding] > [flex-lt-md], .md-layout-padding > [flex-lt-md] { +.layout-padding > .flex-sm, +.layout-padding > .flex-lt-md { padding: 4px; } -[layout-padding], -.md-layout-padding, -[layout-padding] > [flex], -.md-layout-padding > [flex], -[layout-padding] > .md-flex, -.md-layout-padding > .md-flex, -[layout-padding] > [flex-gt-sm], -.md-layout-padding > [flex-gt-sm], -[layout-padding] > [flex-md], -.md-layout-padding > [flex-md], -[layout-padding] > [flex-lt-lg], .md-layout-padding > [flex-lt-lg] { +.layout-padding, +.layout-padding > .flex, +.layout-padding > .flex-gt-sm, +.layout-padding > .flex-md, +.layout-padding > .flex-lt-lg { padding: 8px; } -[layout-padding] > [flex-gt-md], -.md-layout-padding > [flex-gt-md], -[layout-padding] > [flex-lg], .md-layout-padding > [flex-lg] { +.layout-padding > .flex-gt-md, +.layout-padding > .flex-lg { padding: 16px; } -[layout-margin] > [flex-sm], -.md-layout-margin > [flex-sm], -[layout-margin] > [flex-lt-md], .md-layout-margin > [flex-lt-md] { +.layout-margin > .flex-sm, +.layout-margin > .flex-lt-md { margin: 4px; } -[layout-margin], -.md-layout-margin, -[layout-margin] > [flex], -.md-layout-margin > [flex], -[layout-margin] > .md-flex, -.md-layout-margin > .md-flex, -[layout-margin] > [flex-gt-sm], -.md-layout-margin > [flex-gt-sm], -[layout-margin] > [flex-md], -.md-layout-margin > [flex-md], -[layout-margin] > [flex-lt-lg], .md-layout-margin > [flex-lt-lg] { +.layout-margin, +.layout-margin > .flex, +.layout-margin > .flex-gt-sm, +.layout-margin > .flex-md, +.layout-margin > .flex-lt-lg { margin: 8px; } -[layout-margin] > [flex-gt-md], -.md-layout-margin > [flex-gt-md], -[layout-margin] > [flex-lg], .md-layout-margin > [flex-lg] { +.layout-margin > .flex-gt-md, +.layout-margin > .flex-lg { margin: 16px; } -[layout-wrap], .md-layout-wrap { +.layout-wrap { -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; } -[layout-fill], .md-layout-fill { +.layout-fill { margin: 0; min-height: 100%; width: 100%; } @-moz-document url-prefix() { - [layout-fill], .md-layout-fill { + .layout-fill { margin: 0; width: 100%; min-height: auto; height: inherit; } } -[flex], .md-flex { +.flex { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } -[flex="0"] { +.flex-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } -[layout="row"] > [flex="0"] { +.layout-row > .flex-0 { max-width: 0%; } -[layout="column"] > [flex="0"] { +.layout-column > .flex-0 { max-height: 0%; } -[flex="5"] { +.flex-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } -[layout="row"] > [flex="5"] { +.layout-row > .flex-5 { max-width: 5%; } -[layout="column"] > [flex="5"] { +.layout-column > .flex-5 { max-height: 5%; } -[flex="10"] { +.flex-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } -[layout="row"] > [flex="10"] { +.layout-row > .flex-10 { max-width: 10%; } -[layout="column"] > [flex="10"] { +.layout-column > .flex-10 { max-height: 10%; } -[flex="15"] { +.flex-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } -[layout="row"] > [flex="15"] { +.layout-row > .flex-15 { max-width: 15%; } -[layout="column"] > [flex="15"] { +.layout-column > .flex-15 { max-height: 15%; } -[flex="20"] { +.flex-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } -[layout="row"] > [flex="20"] { +.layout-row > .flex-20 { max-width: 20%; } -[layout="column"] > [flex="20"] { +.layout-column > .flex-20 { max-height: 20%; } -[flex="25"] { +.flex-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } -[layout="row"] > [flex="25"] { +.layout-row > .flex-25 { max-width: 25%; } -[layout="column"] > [flex="25"] { +.layout-column > .flex-25 { max-height: 25%; } -[flex="30"] { +.flex-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } -[layout="row"] > [flex="30"] { +.layout-row > .flex-30 { max-width: 30%; } -[layout="column"] > [flex="30"] { +.layout-column > .flex-30 { max-height: 30%; } -[flex="35"] { +.flex-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } -[layout="row"] > [flex="35"] { +.layout-row > .flex-35 { max-width: 35%; } -[layout="column"] > [flex="35"] { +.layout-column > .flex-35 { max-height: 35%; } -[flex="40"] { +.flex-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } -[layout="row"] > [flex="40"] { +.layout-row > .flex-40 { max-width: 40%; } -[layout="column"] > [flex="40"] { +.layout-column > .flex-40 { max-height: 40%; } -[flex="45"] { +.flex-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } -[layout="row"] > [flex="45"] { +.layout-row > .flex-45 { max-width: 45%; } -[layout="column"] > [flex="45"] { +.layout-column > .flex-45 { max-height: 45%; } -[flex="50"] { +.flex-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } -[layout="row"] > [flex="50"] { +.layout-row > .flex-50 { max-width: 50%; } -[layout="column"] > [flex="50"] { +.layout-column > .flex-50 { max-height: 50%; } -[flex="55"] { +.flex-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } -[layout="row"] > [flex="55"] { +.layout-row > .flex-55 { max-width: 55%; } -[layout="column"] > [flex="55"] { +.layout-column > .flex-55 { max-height: 55%; } -[flex="60"] { +.flex-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } -[layout="row"] > [flex="60"] { +.layout-row > .flex-60 { max-width: 60%; } -[layout="column"] > [flex="60"] { +.layout-column > .flex-60 { max-height: 60%; } -[flex="65"] { +.flex-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } -[layout="row"] > [flex="65"] { +.layout-row > .flex-65 { max-width: 65%; } -[layout="column"] > [flex="65"] { +.layout-column > .flex-65 { max-height: 65%; } -[flex="70"] { +.flex-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } -[layout="row"] > [flex="70"] { +.layout-row > .flex-70 { max-width: 70%; } -[layout="column"] > [flex="70"] { +.layout-column > .flex-70 { max-height: 70%; } -[flex="75"] { +.flex-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } -[layout="row"] > [flex="75"] { +.layout-row > .flex-75 { max-width: 75%; } -[layout="column"] > [flex="75"] { +.layout-column > .flex-75 { max-height: 75%; } -[flex="80"] { +.flex-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } -[layout="row"] > [flex="80"] { +.layout-row > .flex-80 { max-width: 80%; } -[layout="column"] > [flex="80"] { +.layout-column > .flex-80 { max-height: 80%; } -[flex="85"] { +.flex-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } -[layout="row"] > [flex="85"] { +.layout-row > .flex-85 { max-width: 85%; } -[layout="column"] > [flex="85"] { +.layout-column > .flex-85 { max-height: 85%; } -[flex="90"] { +.flex-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } -[layout="row"] > [flex="90"] { +.layout-row > .flex-90 { max-width: 90%; } -[layout="column"] > [flex="90"] { +.layout-column > .flex-90 { max-height: 90%; } -[flex="95"] { +.flex-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } -[layout="row"] > [flex="95"] { +.layout-row > .flex-95 { max-width: 95%; } -[layout="column"] > [flex="95"] { +.layout-column > .flex-95 { max-height: 95%; } -[flex="100"] { +.flex-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } -[layout="row"] > [flex="100"] { +.layout-row > .flex-100 { max-width: 100%; } -[layout="column"] > [flex="100"] { +.layout-column > .flex-100 { max-height: 100%; } -[flex="33"], [flex="34"] { +.flex-33, .flex-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } -[flex="66"], [flex="67"] { +.flex-66, .flex-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } -[layout="row"] > [flex="33"], [layout="row"] > [flex="34"] { +.layout-row > .flex-33, .layout-row > .flex-34 { max-width: 33.33%; } -[layout="row"] > [flex="66"], [layout="row"] > [flex="67"] { +.layout-row > .flex-66, .layout-row > .flex-67 { max-width: 66.66%; } -[layout="column"] > [flex="33"], [layout="column"] > [flex="34"] { +.layout-column > .flex-33, .layout-column > .flex-34 { max-height: 33.33%; } -[layout="column"] > [flex="66"], [layout="column"] > [flex="67"] { +.layout-column > .flex-66, .layout-column > .flex-67 { max-height: 66.66%; } -[layout-align="center"], [layout-align="center center"], -[layout-align="center start"], -[layout-align="center end"] { +.layout-align-center, .layout-align-center-center, +.layout-align-center-start, +.layout-align-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } -[layout-align="end"], [layout-align="end center"], -[layout-align="end start"], -[layout-align="end end"] { +.layout-align-end, .layout-align-end-center, +.layout-align-end-start, +.layout-align-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } -[layout-align="space-around"], [layout-align="space-around center"], -[layout-align="space-around start"], -[layout-align="space-around end"] { +.layout-align-space-around, .layout-align-space-around-center, +.layout-align-space-around-start, +.layout-align-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } -[layout-align="space-between"], [layout-align="space-between center"], -[layout-align="space-between start"], -[layout-align="space-between end"] { +.layout-align-space-between, .layout-align-space-between-center, +.layout-align-space-between-start, +.layout-align-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } -[layout-align="center center"], -[layout-align="start center"], -[layout-align="end center"], -[layout-align="space-between center"], -[layout-align="space-around center"] { +.layout-align-center-center, +.layout-align-start-center, +.layout-align-end-center, +.layout-align-space-between-center, +.layout-align-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } -[layout-align="center start"], -[layout-align="start start"], -[layout-align="end start"], -[layout-align="space-between start"], -[layout-align="space-around start"] { +.layout-align-center-start, +.layout-align-start-start, +.layout-align-end-start, +.layout-align-space-between-start, +.layout-align-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } -[layout-align="center end"], -[layout-align="start end"], -[layout-align="end end"], -[layout-align="space-between end"], -[layout-align="space-around end"] { +.layout-align-center-end, +.layout-align-start-end, +.layout-align-end-end, +.layout-align-space-between-end, +.layout-align-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } -[flex-order="0"] { +.flex-order-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } -[flex-order="1"] { +.flex-order-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } -[flex-order="2"] { +.flex-order-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } -[flex-order="3"] { +.flex-order-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } -[flex-order="4"] { +.flex-order-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } -[flex-order="5"] { +.flex-order-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } -[flex-order="6"] { +.flex-order-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } -[flex-order="7"] { +.flex-order-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } -[flex-order="8"] { +.flex-order-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } -[flex-order="9"] { +.flex-order-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } -[offset="5"] { +.offset-5 { margin-left: 5%; } -[offset="10"] { +.offset-10 { margin-left: 10%; } -[offset="15"] { +.offset-15 { margin-left: 15%; } -[offset="20"] { +.offset-20 { margin-left: 20%; } -[offset="25"] { +.offset-25 { margin-left: 25%; } -[offset="30"] { +.offset-30 { margin-left: 30%; } -[offset="35"] { +.offset-35 { margin-left: 35%; } -[offset="40"] { +.offset-40 { margin-left: 40%; } -[offset="45"] { +.offset-45 { margin-left: 45%; } -[offset="50"] { +.offset-50 { margin-left: 50%; } -[offset="55"] { +.offset-55 { margin-left: 55%; } -[offset="60"] { +.offset-60 { margin-left: 60%; } -[offset="65"] { +.offset-65 { margin-left: 65%; } -[offset="70"] { +.offset-70 { margin-left: 70%; } -[offset="75"] { +.offset-75 { margin-left: 75%; } -[offset="80"] { +.offset-80 { margin-left: 80%; } -[offset="85"] { +.offset-85 { margin-left: 85%; } -[offset="90"] { +.offset-90 { margin-left: 90%; } -[offset="95"] { +.offset-95 { margin-left: 95%; } -[offset="33"], [offset="34"] { +.offset-33, .offset-34 { margin-left: 33.33%; } -[offset="66"], [offset="67"] { +.offset-66, .offset-67 { margin-left: 66.66%; } /** @@ -1039,2295 +1023,2295 @@ html * { * `hide-gt-md show-gt-sm` should show everywhere (show overrides hide)` */ @media (max-width: 599px) { - [hide-sm]:not([show-sm]):not([show]), [hide]:not([show-sm]):not([show]), .md-hide:not([show-sm]):not([show]) { + .hide-sm:not(.show-sm):not(.show), .hide:not(.show-sm):not(.show) { display: none; } - [flex-order-sm="0"] { + .flex-order-sm-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-sm="1"] { + .flex-order-sm-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-sm="2"] { + .flex-order-sm-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-sm="3"] { + .flex-order-sm-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-sm="4"] { + .flex-order-sm-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-sm="5"] { + .flex-order-sm-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-sm="6"] { + .flex-order-sm-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-sm="7"] { + .flex-order-sm-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-sm="8"] { + .flex-order-sm-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-sm="9"] { + .flex-order-sm-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-sm="center"], [layout-align-sm="center center"], - [layout-align-sm="center start"], - [layout-align-sm="center end"] { + .layout-align-sm-center, .layout-align-sm-center-center, + .layout-align-sm-center-start, + .layout-align-sm-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-sm="end"], [layout-align-sm="end center"], - [layout-align-sm="end start"], - [layout-align-sm="end end"] { + .layout-align-sm-end, .layout-align-sm-end-center, + .layout-align-sm-end-start, + .layout-align-sm-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-sm="space-around"], [layout-align-sm="space-around center"], - [layout-align-sm="space-around start"], - [layout-align-sm="space-around end"] { + .layout-align-sm-space-around, .layout-align-sm-space-around-center, + .layout-align-sm-space-around-start, + .layout-align-sm-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-sm="space-between"], [layout-align-sm="space-between center"], - [layout-align-sm="space-between start"], - [layout-align-sm="space-between end"] { + .layout-align-sm-space-between, .layout-align-sm-space-between-center, + .layout-align-sm-space-between-start, + .layout-align-sm-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-sm="center center"], - [layout-align-sm="start center"], - [layout-align-sm="end center"], - [layout-align-sm="space-between center"], - [layout-align-sm="space-around center"] { + .layout-align-sm-center-center, + .layout-align-sm-start-center, + .layout-align-sm-end-center, + .layout-align-sm-space-between-center, + .layout-align-sm-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-sm="center start"], - [layout-align-sm="start start"], - [layout-align-sm="end start"], - [layout-align-sm="space-between start"], - [layout-align-sm="space-around start"] { + .layout-align-sm-center-start, + .layout-align-sm-start-start, + .layout-align-sm-end-start, + .layout-align-sm-space-between-start, + .layout-align-sm-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-sm="center end"], - [layout-align-sm="start end"], - [layout-align-sm="end end"], - [layout-align-sm="space-between end"], - [layout-align-sm="space-around end"] { + .layout-align-sm-center-end, + .layout-align-sm-start-end, + .layout-align-sm-end-end, + .layout-align-sm-space-between-end, + .layout-align-sm-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-sm] { + .layout-sm { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-sm=column] { + .layout-sm-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-sm=row] { + .layout-sm-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-sm="5"] { + .offset-sm-5 { margin-left: 5%; } - [offset-sm="10"] { + .offset-sm-10 { margin-left: 10%; } - [offset-sm="15"] { + .offset-sm-15 { margin-left: 15%; } - [offset-sm="20"] { + .offset-sm-20 { margin-left: 20%; } - [offset-sm="25"] { + .offset-sm-25 { margin-left: 25%; } - [offset-sm="30"] { + .offset-sm-30 { margin-left: 30%; } - [offset-sm="35"] { + .offset-sm-35 { margin-left: 35%; } - [offset-sm="40"] { + .offset-sm-40 { margin-left: 40%; } - [offset-sm="45"] { + .offset-sm-45 { margin-left: 45%; } - [offset-sm="50"] { + .offset-sm-50 { margin-left: 50%; } - [offset-sm="55"] { + .offset-sm-55 { margin-left: 55%; } - [offset-sm="60"] { + .offset-sm-60 { margin-left: 60%; } - [offset-sm="65"] { + .offset-sm-65 { margin-left: 65%; } - [offset-sm="70"] { + .offset-sm-70 { margin-left: 70%; } - [offset-sm="75"] { + .offset-sm-75 { margin-left: 75%; } - [offset-sm="80"] { + .offset-sm-80 { margin-left: 80%; } - [offset-sm="85"] { + .offset-sm-85 { margin-left: 85%; } - [offset-sm="90"] { + .offset-sm-90 { margin-left: 90%; } - [offset-sm="95"] { + .offset-sm-95 { margin-left: 95%; } - [offset-sm="33"], [offset-sm="34"] { + .offset-sm-33, .offset-sm-34 { margin-left: 33.33%; } - [offset-sm="66"], [offset-sm="67"] { + .offset-sm-66, .offset-sm-67 { margin-left: 66.66%; } - [flex-sm] { + .flex-sm { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-sm="0"] { + .flex-sm-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-sm="0"] { + .layout-row > .flex-sm-0 { max-width: 0%; } - [layout="column"] > [flex-sm="0"] { + .layout-column > .flex-sm-0 { max-height: 0%; } - [flex-sm="5"] { + .flex-sm-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-sm="5"] { + .layout-row > .flex-sm-5 { max-width: 5%; } - [layout="column"] > [flex-sm="5"] { + .layout-column > .flex-sm-5 { max-height: 5%; } - [flex-sm="10"] { + .flex-sm-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-sm="10"] { + .layout-row > .flex-sm-10 { max-width: 10%; } - [layout="column"] > [flex-sm="10"] { + .layout-column > .flex-sm-10 { max-height: 10%; } - [flex-sm="15"] { + .flex-sm-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-sm="15"] { + .layout-row > .flex-sm-15 { max-width: 15%; } - [layout="column"] > [flex-sm="15"] { + .layout-column > .flex-sm-15 { max-height: 15%; } - [flex-sm="20"] { + .flex-sm-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-sm="20"] { + .layout-row > .flex-sm-20 { max-width: 20%; } - [layout="column"] > [flex-sm="20"] { + .layout-column > .flex-sm-20 { max-height: 20%; } - [flex-sm="25"] { + .flex-sm-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-sm="25"] { + .layout-row > .flex-sm-25 { max-width: 25%; } - [layout="column"] > [flex-sm="25"] { + .layout-column > .flex-sm-25 { max-height: 25%; } - [flex-sm="30"] { + .flex-sm-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-sm="30"] { + .layout-row > .flex-sm-30 { max-width: 30%; } - [layout="column"] > [flex-sm="30"] { + .layout-column > .flex-sm-30 { max-height: 30%; } - [flex-sm="35"] { + .flex-sm-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-sm="35"] { + .layout-row > .flex-sm-35 { max-width: 35%; } - [layout="column"] > [flex-sm="35"] { + .layout-column > .flex-sm-35 { max-height: 35%; } - [flex-sm="40"] { + .flex-sm-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-sm="40"] { + .layout-row > .flex-sm-40 { max-width: 40%; } - [layout="column"] > [flex-sm="40"] { + .layout-column > .flex-sm-40 { max-height: 40%; } - [flex-sm="45"] { + .flex-sm-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-sm="45"] { + .layout-row > .flex-sm-45 { max-width: 45%; } - [layout="column"] > [flex-sm="45"] { + .layout-column > .flex-sm-45 { max-height: 45%; } - [flex-sm="50"] { + .flex-sm-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-sm="50"] { + .layout-row > .flex-sm-50 { max-width: 50%; } - [layout="column"] > [flex-sm="50"] { + .layout-column > .flex-sm-50 { max-height: 50%; } - [flex-sm="55"] { + .flex-sm-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-sm="55"] { + .layout-row > .flex-sm-55 { max-width: 55%; } - [layout="column"] > [flex-sm="55"] { + .layout-column > .flex-sm-55 { max-height: 55%; } - [flex-sm="60"] { + .flex-sm-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-sm="60"] { + .layout-row > .flex-sm-60 { max-width: 60%; } - [layout="column"] > [flex-sm="60"] { + .layout-column > .flex-sm-60 { max-height: 60%; } - [flex-sm="65"] { + .flex-sm-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-sm="65"] { + .layout-row > .flex-sm-65 { max-width: 65%; } - [layout="column"] > [flex-sm="65"] { + .layout-column > .flex-sm-65 { max-height: 65%; } - [flex-sm="70"] { + .flex-sm-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-sm="70"] { + .layout-row > .flex-sm-70 { max-width: 70%; } - [layout="column"] > [flex-sm="70"] { + .layout-column > .flex-sm-70 { max-height: 70%; } - [flex-sm="75"] { + .flex-sm-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-sm="75"] { + .layout-row > .flex-sm-75 { max-width: 75%; } - [layout="column"] > [flex-sm="75"] { + .layout-column > .flex-sm-75 { max-height: 75%; } - [flex-sm="80"] { + .flex-sm-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-sm="80"] { + .layout-row > .flex-sm-80 { max-width: 80%; } - [layout="column"] > [flex-sm="80"] { + .layout-column > .flex-sm-80 { max-height: 80%; } - [flex-sm="85"] { + .flex-sm-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-sm="85"] { + .layout-row > .flex-sm-85 { max-width: 85%; } - [layout="column"] > [flex-sm="85"] { + .layout-column > .flex-sm-85 { max-height: 85%; } - [flex-sm="90"] { + .flex-sm-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-sm="90"] { + .layout-row > .flex-sm-90 { max-width: 90%; } - [layout="column"] > [flex-sm="90"] { + .layout-column > .flex-sm-90 { max-height: 90%; } - [flex-sm="95"] { + .flex-sm-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-sm="95"] { + .layout-row > .flex-sm-95 { max-width: 95%; } - [layout="column"] > [flex-sm="95"] { + .layout-column > .flex-sm-95 { max-height: 95%; } - [flex-sm="100"] { + .flex-sm-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-sm="100"] { + .layout-row > .flex-sm-100 { max-width: 100%; } - [layout="column"] > [flex-sm="100"] { + .layout-column > .flex-sm-100 { max-height: 100%; } - [flex-sm="33"], [flex-sm="34"] { + .flex-sm-33, .flex-sm-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-sm="66"], [flex-sm="67"] { + .flex-sm-66, .flex-sm-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-sm="33"], [layout="row"] > [flex-sm="34"] { + .layout-row > .flex-sm-33, .layout-row > .flex-sm-34 { max-width: 33.33%; } - [layout="row"] > [flex-sm="66"], [layout="row"] > [flex-sm="67"] { + .layout-row > .flex-sm-66, .layout-row > .flex-sm-67 { max-width: 66.66%; } - [layout="column"] > [flex-sm="33"], [layout="column"] > [flex-sm="34"] { + .layout-column > .flex-sm-33, .layout-column > .flex-sm-34 { max-height: 33.33%; } - [layout="column"] > [flex-sm="66"], [layout="column"] > [flex-sm="67"] { + .layout-column > .flex-sm-66, .layout-column > .flex-sm-67 { max-height: 66.66%; } } @media (min-width: 600px) { - [flex-order-gt-sm="0"] { + .flex-order-gt-sm-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-sm="1"] { + .flex-order-gt-sm-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-sm="2"] { + .flex-order-gt-sm-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-sm="3"] { + .flex-order-gt-sm-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-sm="4"] { + .flex-order-gt-sm-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-sm="5"] { + .flex-order-gt-sm-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-sm="6"] { + .flex-order-gt-sm-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-sm="7"] { + .flex-order-gt-sm-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-sm="8"] { + .flex-order-gt-sm-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-sm="9"] { + .flex-order-gt-sm-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-sm="center"], [layout-align-gt-sm="center center"], - [layout-align-gt-sm="center start"], - [layout-align-gt-sm="center end"] { + .layout-align-gt-sm-center, .layout-align-gt-sm-center-center, + .layout-align-gt-sm-center-start, + .layout-align-gt-sm-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-sm="end"], [layout-align-gt-sm="end center"], - [layout-align-gt-sm="end start"], - [layout-align-gt-sm="end end"] { + .layout-align-gt-sm-end, .layout-align-gt-sm-end-center, + .layout-align-gt-sm-end-start, + .layout-align-gt-sm-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-sm="space-around"], [layout-align-gt-sm="space-around center"], - [layout-align-gt-sm="space-around start"], - [layout-align-gt-sm="space-around end"] { + .layout-align-gt-sm-space-around, .layout-align-gt-sm-space-around-center, + .layout-align-gt-sm-space-around-start, + .layout-align-gt-sm-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-sm="space-between"], [layout-align-gt-sm="space-between center"], - [layout-align-gt-sm="space-between start"], - [layout-align-gt-sm="space-between end"] { + .layout-align-gt-sm-space-between, .layout-align-gt-sm-space-between-center, + .layout-align-gt-sm-space-between-start, + .layout-align-gt-sm-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-sm="center center"], - [layout-align-gt-sm="start center"], - [layout-align-gt-sm="end center"], - [layout-align-gt-sm="space-between center"], - [layout-align-gt-sm="space-around center"] { + .layout-align-gt-sm-center-center, + .layout-align-gt-sm-start-center, + .layout-align-gt-sm-end-center, + .layout-align-gt-sm-space-between-center, + .layout-align-gt-sm-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-sm="center start"], - [layout-align-gt-sm="start start"], - [layout-align-gt-sm="end start"], - [layout-align-gt-sm="space-between start"], - [layout-align-gt-sm="space-around start"] { + .layout-align-gt-sm-center-start, + .layout-align-gt-sm-start-start, + .layout-align-gt-sm-end-start, + .layout-align-gt-sm-space-between-start, + .layout-align-gt-sm-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-sm="center end"], - [layout-align-gt-sm="start end"], - [layout-align-gt-sm="end end"], - [layout-align-gt-sm="space-between end"], - [layout-align-gt-sm="space-around end"] { + .layout-align-gt-sm-center-end, + .layout-align-gt-sm-start-end, + .layout-align-gt-sm-end-end, + .layout-align-gt-sm-space-between-end, + .layout-align-gt-sm-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-sm] { + .layout-gt-sm { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-sm=column] { + .layout-gt-sm-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-sm=row] { + .layout-gt-sm-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-gt-sm="5"] { + .offset-gt-sm-5 { margin-left: 5%; } - [offset-gt-sm="10"] { + .offset-gt-sm-10 { margin-left: 10%; } - [offset-gt-sm="15"] { + .offset-gt-sm-15 { margin-left: 15%; } - [offset-gt-sm="20"] { + .offset-gt-sm-20 { margin-left: 20%; } - [offset-gt-sm="25"] { + .offset-gt-sm-25 { margin-left: 25%; } - [offset-gt-sm="30"] { + .offset-gt-sm-30 { margin-left: 30%; } - [offset-gt-sm="35"] { + .offset-gt-sm-35 { margin-left: 35%; } - [offset-gt-sm="40"] { + .offset-gt-sm-40 { margin-left: 40%; } - [offset-gt-sm="45"] { + .offset-gt-sm-45 { margin-left: 45%; } - [offset-gt-sm="50"] { + .offset-gt-sm-50 { margin-left: 50%; } - [offset-gt-sm="55"] { + .offset-gt-sm-55 { margin-left: 55%; } - [offset-gt-sm="60"] { + .offset-gt-sm-60 { margin-left: 60%; } - [offset-gt-sm="65"] { + .offset-gt-sm-65 { margin-left: 65%; } - [offset-gt-sm="70"] { + .offset-gt-sm-70 { margin-left: 70%; } - [offset-gt-sm="75"] { + .offset-gt-sm-75 { margin-left: 75%; } - [offset-gt-sm="80"] { + .offset-gt-sm-80 { margin-left: 80%; } - [offset-gt-sm="85"] { + .offset-gt-sm-85 { margin-left: 85%; } - [offset-gt-sm="90"] { + .offset-gt-sm-90 { margin-left: 90%; } - [offset-gt-sm="95"] { + .offset-gt-sm-95 { margin-left: 95%; } - [offset-gt-sm="33"], [offset-gt-sm="34"] { + .offset-gt-sm-33, .offset-gt-sm-34 { margin-left: 33.33%; } - [offset-gt-sm="66"], [offset-gt-sm="67"] { + .offset-gt-sm-66, .offset-gt-sm-67 { margin-left: 66.66%; } - [flex-gt-sm] { + .flex-gt-sm { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-sm="0"] { + .flex-gt-sm-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-sm="0"] { + .layout-row > .flex-gt-sm-0 { max-width: 0%; } - [layout="column"] > [flex-gt-sm="0"] { + .layout-column > .flex-gt-sm-0 { max-height: 0%; } - [flex-gt-sm="5"] { + .flex-gt-sm-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-sm="5"] { + .layout-row > .flex-gt-sm-5 { max-width: 5%; } - [layout="column"] > [flex-gt-sm="5"] { + .layout-column > .flex-gt-sm-5 { max-height: 5%; } - [flex-gt-sm="10"] { + .flex-gt-sm-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-sm="10"] { + .layout-row > .flex-gt-sm-10 { max-width: 10%; } - [layout="column"] > [flex-gt-sm="10"] { + .layout-column > .flex-gt-sm-10 { max-height: 10%; } - [flex-gt-sm="15"] { + .flex-gt-sm-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-sm="15"] { + .layout-row > .flex-gt-sm-15 { max-width: 15%; } - [layout="column"] > [flex-gt-sm="15"] { + .layout-column > .flex-gt-sm-15 { max-height: 15%; } - [flex-gt-sm="20"] { + .flex-gt-sm-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-sm="20"] { + .layout-row > .flex-gt-sm-20 { max-width: 20%; } - [layout="column"] > [flex-gt-sm="20"] { + .layout-column > .flex-gt-sm-20 { max-height: 20%; } - [flex-gt-sm="25"] { + .flex-gt-sm-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-sm="25"] { + .layout-row > .flex-gt-sm-25 { max-width: 25%; } - [layout="column"] > [flex-gt-sm="25"] { + .layout-column > .flex-gt-sm-25 { max-height: 25%; } - [flex-gt-sm="30"] { + .flex-gt-sm-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-sm="30"] { + .layout-row > .flex-gt-sm-30 { max-width: 30%; } - [layout="column"] > [flex-gt-sm="30"] { + .layout-column > .flex-gt-sm-30 { max-height: 30%; } - [flex-gt-sm="35"] { + .flex-gt-sm-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-sm="35"] { + .layout-row > .flex-gt-sm-35 { max-width: 35%; } - [layout="column"] > [flex-gt-sm="35"] { + .layout-column > .flex-gt-sm-35 { max-height: 35%; } - [flex-gt-sm="40"] { + .flex-gt-sm-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-sm="40"] { + .layout-row > .flex-gt-sm-40 { max-width: 40%; } - [layout="column"] > [flex-gt-sm="40"] { + .layout-column > .flex-gt-sm-40 { max-height: 40%; } - [flex-gt-sm="45"] { + .flex-gt-sm-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-sm="45"] { + .layout-row > .flex-gt-sm-45 { max-width: 45%; } - [layout="column"] > [flex-gt-sm="45"] { + .layout-column > .flex-gt-sm-45 { max-height: 45%; } - [flex-gt-sm="50"] { + .flex-gt-sm-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-sm="50"] { + .layout-row > .flex-gt-sm-50 { max-width: 50%; } - [layout="column"] > [flex-gt-sm="50"] { + .layout-column > .flex-gt-sm-50 { max-height: 50%; } - [flex-gt-sm="55"] { + .flex-gt-sm-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-sm="55"] { + .layout-row > .flex-gt-sm-55 { max-width: 55%; } - [layout="column"] > [flex-gt-sm="55"] { + .layout-column > .flex-gt-sm-55 { max-height: 55%; } - [flex-gt-sm="60"] { + .flex-gt-sm-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-sm="60"] { + .layout-row > .flex-gt-sm-60 { max-width: 60%; } - [layout="column"] > [flex-gt-sm="60"] { + .layout-column > .flex-gt-sm-60 { max-height: 60%; } - [flex-gt-sm="65"] { + .flex-gt-sm-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-sm="65"] { + .layout-row > .flex-gt-sm-65 { max-width: 65%; } - [layout="column"] > [flex-gt-sm="65"] { + .layout-column > .flex-gt-sm-65 { max-height: 65%; } - [flex-gt-sm="70"] { + .flex-gt-sm-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-sm="70"] { + .layout-row > .flex-gt-sm-70 { max-width: 70%; } - [layout="column"] > [flex-gt-sm="70"] { + .layout-column > .flex-gt-sm-70 { max-height: 70%; } - [flex-gt-sm="75"] { + .flex-gt-sm-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-sm="75"] { + .layout-row > .flex-gt-sm-75 { max-width: 75%; } - [layout="column"] > [flex-gt-sm="75"] { + .layout-column > .flex-gt-sm-75 { max-height: 75%; } - [flex-gt-sm="80"] { + .flex-gt-sm-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-sm="80"] { + .layout-row > .flex-gt-sm-80 { max-width: 80%; } - [layout="column"] > [flex-gt-sm="80"] { + .layout-column > .flex-gt-sm-80 { max-height: 80%; } - [flex-gt-sm="85"] { + .flex-gt-sm-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-sm="85"] { + .layout-row > .flex-gt-sm-85 { max-width: 85%; } - [layout="column"] > [flex-gt-sm="85"] { + .layout-column > .flex-gt-sm-85 { max-height: 85%; } - [flex-gt-sm="90"] { + .flex-gt-sm-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-sm="90"] { + .layout-row > .flex-gt-sm-90 { max-width: 90%; } - [layout="column"] > [flex-gt-sm="90"] { + .layout-column > .flex-gt-sm-90 { max-height: 90%; } - [flex-gt-sm="95"] { + .flex-gt-sm-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-sm="95"] { + .layout-row > .flex-gt-sm-95 { max-width: 95%; } - [layout="column"] > [flex-gt-sm="95"] { + .layout-column > .flex-gt-sm-95 { max-height: 95%; } - [flex-gt-sm="100"] { + .flex-gt-sm-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-sm="100"] { + .layout-row > .flex-gt-sm-100 { max-width: 100%; } - [layout="column"] > [flex-gt-sm="100"] { + .layout-column > .flex-gt-sm-100 { max-height: 100%; } - [flex-gt-sm="33"], [flex-gt-sm="34"] { + .flex-gt-sm-33, .flex-gt-sm-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-sm="66"], [flex-gt-sm="67"] { + .flex-gt-sm-66, .flex-gt-sm-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-sm="33"], [layout="row"] > [flex-gt-sm="34"] { + .layout-row > .flex-gt-sm-33, .layout-row > .flex-gt-sm-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-sm="66"], [layout="row"] > [flex-gt-sm="67"] { + .layout-row > .flex-gt-sm-66, .layout-row > .flex-gt-sm-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-sm="33"], [layout="column"] > [flex-gt-sm="34"] { + .layout-column > .flex-gt-sm-33, .layout-column > .flex-gt-sm-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-sm="66"], [layout="column"] > [flex-gt-sm="67"] { + .layout-column > .flex-gt-sm-66, .layout-column > .flex-gt-sm-67 { max-height: 66.66%; } } @media (min-width: 600px) and (max-width: 1023px) { - [hide]:not([show-gt-sm]):not([show-md]):not([show]), .md-hide:not([show-gt-sm]):not([show-md]):not([show]), [hide-gt-sm]:not([show-gt-sm]):not([show-md]):not([show]) { + .hide:not(.show-gt-sm):not(.show-md):not(.show), .hide-gt-sm:not(.show-gt-sm):not(.show-md):not(.show) { display: none; } - [hide-md]:not([show-md]):not([show]) { + .hide-md:not(.show-md):not(.show) { display: none; } - [flex-order-md="0"] { + .flex-order-md-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-md="1"] { + .flex-order-md-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-md="2"] { + .flex-order-md-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-md="3"] { + .flex-order-md-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-md="4"] { + .flex-order-md-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-md="5"] { + .flex-order-md-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-md="6"] { + .flex-order-md-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-md="7"] { + .flex-order-md-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-md="8"] { + .flex-order-md-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-md="9"] { + .flex-order-md-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-md="center"], [layout-align-md="center center"], - [layout-align-md="center start"], - [layout-align-md="center end"] { + .layout-align-md-center, .layout-align-md-center-center, + .layout-align-md-center-start, + .layout-align-md-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-md="end"], [layout-align-md="end center"], - [layout-align-md="end start"], - [layout-align-md="end end"] { + .layout-align-md-end, .layout-align-md-end-center, + .layout-align-md-end-start, + .layout-align-md-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-md="space-around"], [layout-align-md="space-around center"], - [layout-align-md="space-around start"], - [layout-align-md="space-around end"] { + .layout-align-md-space-around, .layout-align-md-space-around-center, + .layout-align-md-space-around-start, + .layout-align-md-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-md="space-between"], [layout-align-md="space-between center"], - [layout-align-md="space-between start"], - [layout-align-md="space-between end"] { + .layout-align-md-space-between, .layout-align-md-space-between-center, + .layout-align-md-space-between-start, + .layout-align-md-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-md="center center"], - [layout-align-md="start center"], - [layout-align-md="end center"], - [layout-align-md="space-between center"], - [layout-align-md="space-around center"] { + .layout-align-md-center-center, + .layout-align-md-start-center, + .layout-align-md-end-center, + .layout-align-md-space-between-center, + .layout-align-md-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-md="center start"], - [layout-align-md="start start"], - [layout-align-md="end start"], - [layout-align-md="space-between start"], - [layout-align-md="space-around start"] { + .layout-align-md-center-start, + .layout-align-md-start-start, + .layout-align-md-end-start, + .layout-align-md-space-between-start, + .layout-align-md-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-md="center end"], - [layout-align-md="start end"], - [layout-align-md="end end"], - [layout-align-md="space-between end"], - [layout-align-md="space-around end"] { + .layout-align-md-center-end, + .layout-align-md-start-end, + .layout-align-md-end-end, + .layout-align-md-space-between-end, + .layout-align-md-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-md] { + .layout-md { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-md=column] { + .layout-md-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-md=row] { + .layout-md-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-md="5"] { + .offset-md-5 { margin-left: 5%; } - [offset-md="10"] { + .offset-md-10 { margin-left: 10%; } - [offset-md="15"] { + .offset-md-15 { margin-left: 15%; } - [offset-md="20"] { + .offset-md-20 { margin-left: 20%; } - [offset-md="25"] { + .offset-md-25 { margin-left: 25%; } - [offset-md="30"] { + .offset-md-30 { margin-left: 30%; } - [offset-md="35"] { + .offset-md-35 { margin-left: 35%; } - [offset-md="40"] { + .offset-md-40 { margin-left: 40%; } - [offset-md="45"] { + .offset-md-45 { margin-left: 45%; } - [offset-md="50"] { + .offset-md-50 { margin-left: 50%; } - [offset-md="55"] { + .offset-md-55 { margin-left: 55%; } - [offset-md="60"] { + .offset-md-60 { margin-left: 60%; } - [offset-md="65"] { + .offset-md-65 { margin-left: 65%; } - [offset-md="70"] { + .offset-md-70 { margin-left: 70%; } - [offset-md="75"] { + .offset-md-75 { margin-left: 75%; } - [offset-md="80"] { + .offset-md-80 { margin-left: 80%; } - [offset-md="85"] { + .offset-md-85 { margin-left: 85%; } - [offset-md="90"] { + .offset-md-90 { margin-left: 90%; } - [offset-md="95"] { + .offset-md-95 { margin-left: 95%; } - [offset-md="33"], [offset-md="34"] { + .offset-md-33, .offset-md-34 { margin-left: 33.33%; } - [offset-md="66"], [offset-md="67"] { + .offset-md-66, .offset-md-67 { margin-left: 66.66%; } - [flex-md] { + .flex-md { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-md="0"] { + .flex-md-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-md="0"] { + .layout-row > .flex-md-0 { max-width: 0%; } - [layout="column"] > [flex-md="0"] { + .layout-column > .flex-md-0 { max-height: 0%; } - [flex-md="5"] { + .flex-md-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-md="5"] { + .layout-row > .flex-md-5 { max-width: 5%; } - [layout="column"] > [flex-md="5"] { + .layout-column > .flex-md-5 { max-height: 5%; } - [flex-md="10"] { + .flex-md-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-md="10"] { + .layout-row > .flex-md-10 { max-width: 10%; } - [layout="column"] > [flex-md="10"] { + .layout-column > .flex-md-10 { max-height: 10%; } - [flex-md="15"] { + .flex-md-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-md="15"] { + .layout-row > .flex-md-15 { max-width: 15%; } - [layout="column"] > [flex-md="15"] { + .layout-column > .flex-md-15 { max-height: 15%; } - [flex-md="20"] { + .flex-md-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-md="20"] { + .layout-row > .flex-md-20 { max-width: 20%; } - [layout="column"] > [flex-md="20"] { + .layout-column > .flex-md-20 { max-height: 20%; } - [flex-md="25"] { + .flex-md-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-md="25"] { + .layout-row > .flex-md-25 { max-width: 25%; } - [layout="column"] > [flex-md="25"] { + .layout-column > .flex-md-25 { max-height: 25%; } - [flex-md="30"] { + .flex-md-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-md="30"] { + .layout-row > .flex-md-30 { max-width: 30%; } - [layout="column"] > [flex-md="30"] { + .layout-column > .flex-md-30 { max-height: 30%; } - [flex-md="35"] { + .flex-md-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-md="35"] { + .layout-row > .flex-md-35 { max-width: 35%; } - [layout="column"] > [flex-md="35"] { + .layout-column > .flex-md-35 { max-height: 35%; } - [flex-md="40"] { + .flex-md-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-md="40"] { + .layout-row > .flex-md-40 { max-width: 40%; } - [layout="column"] > [flex-md="40"] { + .layout-column > .flex-md-40 { max-height: 40%; } - [flex-md="45"] { + .flex-md-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-md="45"] { + .layout-row > .flex-md-45 { max-width: 45%; } - [layout="column"] > [flex-md="45"] { + .layout-column > .flex-md-45 { max-height: 45%; } - [flex-md="50"] { + .flex-md-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-md="50"] { + .layout-row > .flex-md-50 { max-width: 50%; } - [layout="column"] > [flex-md="50"] { + .layout-column > .flex-md-50 { max-height: 50%; } - [flex-md="55"] { + .flex-md-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-md="55"] { + .layout-row > .flex-md-55 { max-width: 55%; } - [layout="column"] > [flex-md="55"] { + .layout-column > .flex-md-55 { max-height: 55%; } - [flex-md="60"] { + .flex-md-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-md="60"] { + .layout-row > .flex-md-60 { max-width: 60%; } - [layout="column"] > [flex-md="60"] { + .layout-column > .flex-md-60 { max-height: 60%; } - [flex-md="65"] { + .flex-md-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-md="65"] { + .layout-row > .flex-md-65 { max-width: 65%; } - [layout="column"] > [flex-md="65"] { + .layout-column > .flex-md-65 { max-height: 65%; } - [flex-md="70"] { + .flex-md-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-md="70"] { + .layout-row > .flex-md-70 { max-width: 70%; } - [layout="column"] > [flex-md="70"] { + .layout-column > .flex-md-70 { max-height: 70%; } - [flex-md="75"] { + .flex-md-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-md="75"] { + .layout-row > .flex-md-75 { max-width: 75%; } - [layout="column"] > [flex-md="75"] { + .layout-column > .flex-md-75 { max-height: 75%; } - [flex-md="80"] { + .flex-md-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-md="80"] { + .layout-row > .flex-md-80 { max-width: 80%; } - [layout="column"] > [flex-md="80"] { + .layout-column > .flex-md-80 { max-height: 80%; } - [flex-md="85"] { + .flex-md-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-md="85"] { + .layout-row > .flex-md-85 { max-width: 85%; } - [layout="column"] > [flex-md="85"] { + .layout-column > .flex-md-85 { max-height: 85%; } - [flex-md="90"] { + .flex-md-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-md="90"] { + .layout-row > .flex-md-90 { max-width: 90%; } - [layout="column"] > [flex-md="90"] { + .layout-column > .flex-md-90 { max-height: 90%; } - [flex-md="95"] { + .flex-md-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-md="95"] { + .layout-row > .flex-md-95 { max-width: 95%; } - [layout="column"] > [flex-md="95"] { + .layout-column > .flex-md-95 { max-height: 95%; } - [flex-md="100"] { + .flex-md-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-md="100"] { + .layout-row > .flex-md-100 { max-width: 100%; } - [layout="column"] > [flex-md="100"] { + .layout-column > .flex-md-100 { max-height: 100%; } - [flex-md="33"], [flex-md="34"] { + .flex-md-33, .flex-md-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-md="66"], [flex-md="67"] { + .flex-md-66, .flex-md-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-md="33"], [layout="row"] > [flex-md="34"] { + .layout-row > .flex-md-33, .layout-row > .flex-md-34 { max-width: 33.33%; } - [layout="row"] > [flex-md="66"], [layout="row"] > [flex-md="67"] { + .layout-row > .flex-md-66, .layout-row > .flex-md-67 { max-width: 66.66%; } - [layout="column"] > [flex-md="33"], [layout="column"] > [flex-md="34"] { + .layout-column > .flex-md-33, .layout-column > .flex-md-34 { max-height: 33.33%; } - [layout="column"] > [flex-md="66"], [layout="column"] > [flex-md="67"] { + .layout-column > .flex-md-66, .layout-column > .flex-md-67 { max-height: 66.66%; } } @media (min-width: 1024px) { - [flex-order-gt-md="0"] { + .flex-order-gt-md-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-md="1"] { + .flex-order-gt-md-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-md="2"] { + .flex-order-gt-md-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-md="3"] { + .flex-order-gt-md-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-md="4"] { + .flex-order-gt-md-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-md="5"] { + .flex-order-gt-md-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-md="6"] { + .flex-order-gt-md-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-md="7"] { + .flex-order-gt-md-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-md="8"] { + .flex-order-gt-md-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-md="9"] { + .flex-order-gt-md-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-md="center"], [layout-align-gt-md="center center"], - [layout-align-gt-md="center start"], - [layout-align-gt-md="center end"] { + .layout-align-gt-md-center, .layout-align-gt-md-center-center, + .layout-align-gt-md-center-start, + .layout-align-gt-md-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-md="end"], [layout-align-gt-md="end center"], - [layout-align-gt-md="end start"], - [layout-align-gt-md="end end"] { + .layout-align-gt-md-end, .layout-align-gt-md-end-center, + .layout-align-gt-md-end-start, + .layout-align-gt-md-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-md="space-around"], [layout-align-gt-md="space-around center"], - [layout-align-gt-md="space-around start"], - [layout-align-gt-md="space-around end"] { + .layout-align-gt-md-space-around, .layout-align-gt-md-space-around-center, + .layout-align-gt-md-space-around-start, + .layout-align-gt-md-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-md="space-between"], [layout-align-gt-md="space-between center"], - [layout-align-gt-md="space-between start"], - [layout-align-gt-md="space-between end"] { + .layout-align-gt-md-space-between, .layout-align-gt-md-space-between-center, + .layout-align-gt-md-space-between-start, + .layout-align-gt-md-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-md="center center"], - [layout-align-gt-md="start center"], - [layout-align-gt-md="end center"], - [layout-align-gt-md="space-between center"], - [layout-align-gt-md="space-around center"] { + .layout-align-gt-md-center-center, + .layout-align-gt-md-start-center, + .layout-align-gt-md-end-center, + .layout-align-gt-md-space-between-center, + .layout-align-gt-md-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-md="center start"], - [layout-align-gt-md="start start"], - [layout-align-gt-md="end start"], - [layout-align-gt-md="space-between start"], - [layout-align-gt-md="space-around start"] { + .layout-align-gt-md-center-start, + .layout-align-gt-md-start-start, + .layout-align-gt-md-end-start, + .layout-align-gt-md-space-between-start, + .layout-align-gt-md-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-md="center end"], - [layout-align-gt-md="start end"], - [layout-align-gt-md="end end"], - [layout-align-gt-md="space-between end"], - [layout-align-gt-md="space-around end"] { + .layout-align-gt-md-center-end, + .layout-align-gt-md-start-end, + .layout-align-gt-md-end-end, + .layout-align-gt-md-space-between-end, + .layout-align-gt-md-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-md] { + .layout-gt-md { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-md=column] { + .layout-gt-md-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-md=row] { + .layout-gt-md-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-gt-md="5"] { + .offset-gt-md-5 { margin-left: 5%; } - [offset-gt-md="10"] { + .offset-gt-md-10 { margin-left: 10%; } - [offset-gt-md="15"] { + .offset-gt-md-15 { margin-left: 15%; } - [offset-gt-md="20"] { + .offset-gt-md-20 { margin-left: 20%; } - [offset-gt-md="25"] { + .offset-gt-md-25 { margin-left: 25%; } - [offset-gt-md="30"] { + .offset-gt-md-30 { margin-left: 30%; } - [offset-gt-md="35"] { + .offset-gt-md-35 { margin-left: 35%; } - [offset-gt-md="40"] { + .offset-gt-md-40 { margin-left: 40%; } - [offset-gt-md="45"] { + .offset-gt-md-45 { margin-left: 45%; } - [offset-gt-md="50"] { + .offset-gt-md-50 { margin-left: 50%; } - [offset-gt-md="55"] { + .offset-gt-md-55 { margin-left: 55%; } - [offset-gt-md="60"] { + .offset-gt-md-60 { margin-left: 60%; } - [offset-gt-md="65"] { + .offset-gt-md-65 { margin-left: 65%; } - [offset-gt-md="70"] { + .offset-gt-md-70 { margin-left: 70%; } - [offset-gt-md="75"] { + .offset-gt-md-75 { margin-left: 75%; } - [offset-gt-md="80"] { + .offset-gt-md-80 { margin-left: 80%; } - [offset-gt-md="85"] { + .offset-gt-md-85 { margin-left: 85%; } - [offset-gt-md="90"] { + .offset-gt-md-90 { margin-left: 90%; } - [offset-gt-md="95"] { + .offset-gt-md-95 { margin-left: 95%; } - [offset-gt-md="33"], [offset-gt-md="34"] { + .offset-gt-md-33, .offset-gt-md-34 { margin-left: 33.33%; } - [offset-gt-md="66"], [offset-gt-md="67"] { + .offset-gt-md-66, .offset-gt-md-67 { margin-left: 66.66%; } - [flex-gt-md] { + .flex-gt-md { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-md="0"] { + .flex-gt-md-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-md="0"] { + .layout-row > .flex-gt-md-0 { max-width: 0%; } - [layout="column"] > [flex-gt-md="0"] { + .layout-column > .flex-gt-md-0 { max-height: 0%; } - [flex-gt-md="5"] { + .flex-gt-md-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-md="5"] { + .layout-row > .flex-gt-md-5 { max-width: 5%; } - [layout="column"] > [flex-gt-md="5"] { + .layout-column > .flex-gt-md-5 { max-height: 5%; } - [flex-gt-md="10"] { + .flex-gt-md-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-md="10"] { + .layout-row > .flex-gt-md-10 { max-width: 10%; } - [layout="column"] > [flex-gt-md="10"] { + .layout-column > .flex-gt-md-10 { max-height: 10%; } - [flex-gt-md="15"] { + .flex-gt-md-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-md="15"] { + .layout-row > .flex-gt-md-15 { max-width: 15%; } - [layout="column"] > [flex-gt-md="15"] { + .layout-column > .flex-gt-md-15 { max-height: 15%; } - [flex-gt-md="20"] { + .flex-gt-md-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-md="20"] { + .layout-row > .flex-gt-md-20 { max-width: 20%; } - [layout="column"] > [flex-gt-md="20"] { + .layout-column > .flex-gt-md-20 { max-height: 20%; } - [flex-gt-md="25"] { + .flex-gt-md-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-md="25"] { + .layout-row > .flex-gt-md-25 { max-width: 25%; } - [layout="column"] > [flex-gt-md="25"] { + .layout-column > .flex-gt-md-25 { max-height: 25%; } - [flex-gt-md="30"] { + .flex-gt-md-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-md="30"] { + .layout-row > .flex-gt-md-30 { max-width: 30%; } - [layout="column"] > [flex-gt-md="30"] { + .layout-column > .flex-gt-md-30 { max-height: 30%; } - [flex-gt-md="35"] { + .flex-gt-md-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-md="35"] { + .layout-row > .flex-gt-md-35 { max-width: 35%; } - [layout="column"] > [flex-gt-md="35"] { + .layout-column > .flex-gt-md-35 { max-height: 35%; } - [flex-gt-md="40"] { + .flex-gt-md-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-md="40"] { + .layout-row > .flex-gt-md-40 { max-width: 40%; } - [layout="column"] > [flex-gt-md="40"] { + .layout-column > .flex-gt-md-40 { max-height: 40%; } - [flex-gt-md="45"] { + .flex-gt-md-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-md="45"] { + .layout-row > .flex-gt-md-45 { max-width: 45%; } - [layout="column"] > [flex-gt-md="45"] { + .layout-column > .flex-gt-md-45 { max-height: 45%; } - [flex-gt-md="50"] { + .flex-gt-md-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-md="50"] { + .layout-row > .flex-gt-md-50 { max-width: 50%; } - [layout="column"] > [flex-gt-md="50"] { + .layout-column > .flex-gt-md-50 { max-height: 50%; } - [flex-gt-md="55"] { + .flex-gt-md-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-md="55"] { + .layout-row > .flex-gt-md-55 { max-width: 55%; } - [layout="column"] > [flex-gt-md="55"] { + .layout-column > .flex-gt-md-55 { max-height: 55%; } - [flex-gt-md="60"] { + .flex-gt-md-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-md="60"] { + .layout-row > .flex-gt-md-60 { max-width: 60%; } - [layout="column"] > [flex-gt-md="60"] { + .layout-column > .flex-gt-md-60 { max-height: 60%; } - [flex-gt-md="65"] { + .flex-gt-md-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-md="65"] { + .layout-row > .flex-gt-md-65 { max-width: 65%; } - [layout="column"] > [flex-gt-md="65"] { + .layout-column > .flex-gt-md-65 { max-height: 65%; } - [flex-gt-md="70"] { + .flex-gt-md-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-md="70"] { + .layout-row > .flex-gt-md-70 { max-width: 70%; } - [layout="column"] > [flex-gt-md="70"] { + .layout-column > .flex-gt-md-70 { max-height: 70%; } - [flex-gt-md="75"] { + .flex-gt-md-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-md="75"] { + .layout-row > .flex-gt-md-75 { max-width: 75%; } - [layout="column"] > [flex-gt-md="75"] { + .layout-column > .flex-gt-md-75 { max-height: 75%; } - [flex-gt-md="80"] { + .flex-gt-md-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-md="80"] { + .layout-row > .flex-gt-md-80 { max-width: 80%; } - [layout="column"] > [flex-gt-md="80"] { + .layout-column > .flex-gt-md-80 { max-height: 80%; } - [flex-gt-md="85"] { + .flex-gt-md-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-md="85"] { + .layout-row > .flex-gt-md-85 { max-width: 85%; } - [layout="column"] > [flex-gt-md="85"] { + .layout-column > .flex-gt-md-85 { max-height: 85%; } - [flex-gt-md="90"] { + .flex-gt-md-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-md="90"] { + .layout-row > .flex-gt-md-90 { max-width: 90%; } - [layout="column"] > [flex-gt-md="90"] { + .layout-column > .flex-gt-md-90 { max-height: 90%; } - [flex-gt-md="95"] { + .flex-gt-md-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-md="95"] { + .layout-row > .flex-gt-md-95 { max-width: 95%; } - [layout="column"] > [flex-gt-md="95"] { + .layout-column > .flex-gt-md-95 { max-height: 95%; } - [flex-gt-md="100"] { + .flex-gt-md-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-md="100"] { + .layout-row > .flex-gt-md-100 { max-width: 100%; } - [layout="column"] > [flex-gt-md="100"] { + .layout-column > .flex-gt-md-100 { max-height: 100%; } - [flex-gt-md="33"], [flex-gt-md="34"] { + .flex-gt-md-33, .flex-gt-md-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-md="66"], [flex-gt-md="67"] { + .flex-gt-md-66, .flex-gt-md-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-md="33"], [layout="row"] > [flex-gt-md="34"] { + .layout-row > .flex-gt-md-33, .layout-row > .flex-gt-md-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-md="66"], [layout="row"] > [flex-gt-md="67"] { + .layout-row > .flex-gt-md-66, .layout-row > .flex-gt-md-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-md="33"], [layout="column"] > [flex-gt-md="34"] { + .layout-column > .flex-gt-md-33, .layout-column > .flex-gt-md-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-md="66"], [layout="column"] > [flex-gt-md="67"] { + .layout-column > .flex-gt-md-66, .layout-column > .flex-gt-md-67 { max-height: 66.66%; } } @media (min-width: 1024px) and (max-width: 1279px) { - [hide]:not([show-gt-sm]):not([show-gt-md]):not([show-lg]):not([show]), .md-hide:not([show-gt-sm]):not([show-gt-md]):not([show-lg]):not([show]), [hide-gt-sm]:not([show-gt-sm]):not([show-gt-md]):not([show-lg]):not([show]), [hide-gt-md]:not([show-gt-sm]):not([show-gt-md]):not([show-lg]):not([show]) { + .hide:not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show), .hide-gt-sm:not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show), .hide-gt-md:not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show) { display: none; } - [hide-lg]:not([show-lg]):not([show]) { + .hide-lg:not(.show-lg):not(.show) { display: none; } - [flex-order-lg="0"] { + .flex-order-lg-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-lg="1"] { + .flex-order-lg-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-lg="2"] { + .flex-order-lg-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-lg="3"] { + .flex-order-lg-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-lg="4"] { + .flex-order-lg-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-lg="5"] { + .flex-order-lg-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-lg="6"] { + .flex-order-lg-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-lg="7"] { + .flex-order-lg-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-lg="8"] { + .flex-order-lg-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-lg="9"] { + .flex-order-lg-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-lg="center"], [layout-align-lg="center center"], - [layout-align-lg="center start"], - [layout-align-lg="center end"] { + .layout-align-lg-center, .layout-align-lg-center-center, + .layout-align-lg-center-start, + .layout-align-lg-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-lg="end"], [layout-align-lg="end center"], - [layout-align-lg="end start"], - [layout-align-lg="end end"] { + .layout-align-lg-end, .layout-align-lg-end-center, + .layout-align-lg-end-start, + .layout-align-lg-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-lg="space-around"], [layout-align-lg="space-around center"], - [layout-align-lg="space-around start"], - [layout-align-lg="space-around end"] { + .layout-align-lg-space-around, .layout-align-lg-space-around-center, + .layout-align-lg-space-around-start, + .layout-align-lg-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-lg="space-between"], [layout-align-lg="space-between center"], - [layout-align-lg="space-between start"], - [layout-align-lg="space-between end"] { + .layout-align-lg-space-between, .layout-align-lg-space-between-center, + .layout-align-lg-space-between-start, + .layout-align-lg-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-lg="center center"], - [layout-align-lg="start center"], - [layout-align-lg="end center"], - [layout-align-lg="space-between center"], - [layout-align-lg="space-around center"] { + .layout-align-lg-center-center, + .layout-align-lg-start-center, + .layout-align-lg-end-center, + .layout-align-lg-space-between-center, + .layout-align-lg-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-lg="center start"], - [layout-align-lg="start start"], - [layout-align-lg="end start"], - [layout-align-lg="space-between start"], - [layout-align-lg="space-around start"] { + .layout-align-lg-center-start, + .layout-align-lg-start-start, + .layout-align-lg-end-start, + .layout-align-lg-space-between-start, + .layout-align-lg-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-lg="center end"], - [layout-align-lg="start end"], - [layout-align-lg="end end"], - [layout-align-lg="space-between end"], - [layout-align-lg="space-around end"] { + .layout-align-lg-center-end, + .layout-align-lg-start-end, + .layout-align-lg-end-end, + .layout-align-lg-space-between-end, + .layout-align-lg-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-lg] { + .layout-lg { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-lg=column] { + .layout-lg-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-lg=row] { + .layout-lg-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-lg="5"] { + .offset-lg-5 { margin-left: 5%; } - [offset-lg="10"] { + .offset-lg-10 { margin-left: 10%; } - [offset-lg="15"] { + .offset-lg-15 { margin-left: 15%; } - [offset-lg="20"] { + .offset-lg-20 { margin-left: 20%; } - [offset-lg="25"] { + .offset-lg-25 { margin-left: 25%; } - [offset-lg="30"] { + .offset-lg-30 { margin-left: 30%; } - [offset-lg="35"] { + .offset-lg-35 { margin-left: 35%; } - [offset-lg="40"] { + .offset-lg-40 { margin-left: 40%; } - [offset-lg="45"] { + .offset-lg-45 { margin-left: 45%; } - [offset-lg="50"] { + .offset-lg-50 { margin-left: 50%; } - [offset-lg="55"] { + .offset-lg-55 { margin-left: 55%; } - [offset-lg="60"] { + .offset-lg-60 { margin-left: 60%; } - [offset-lg="65"] { + .offset-lg-65 { margin-left: 65%; } - [offset-lg="70"] { + .offset-lg-70 { margin-left: 70%; } - [offset-lg="75"] { + .offset-lg-75 { margin-left: 75%; } - [offset-lg="80"] { + .offset-lg-80 { margin-left: 80%; } - [offset-lg="85"] { + .offset-lg-85 { margin-left: 85%; } - [offset-lg="90"] { + .offset-lg-90 { margin-left: 90%; } - [offset-lg="95"] { + .offset-lg-95 { margin-left: 95%; } - [offset-lg="33"], [offset-lg="34"] { + .offset-lg-33, .offset-lg-34 { margin-left: 33.33%; } - [offset-lg="66"], [offset-lg="67"] { + .offset-lg-66, .offset-lg-67 { margin-left: 66.66%; } - [flex-lg] { + .flex-lg { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-lg="0"] { + .flex-lg-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-lg="0"] { + .layout-row > .flex-lg-0 { max-width: 0%; } - [layout="column"] > [flex-lg="0"] { + .layout-column > .flex-lg-0 { max-height: 0%; } - [flex-lg="5"] { + .flex-lg-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-lg="5"] { + .layout-row > .flex-lg-5 { max-width: 5%; } - [layout="column"] > [flex-lg="5"] { + .layout-column > .flex-lg-5 { max-height: 5%; } - [flex-lg="10"] { + .flex-lg-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-lg="10"] { + .layout-row > .flex-lg-10 { max-width: 10%; } - [layout="column"] > [flex-lg="10"] { + .layout-column > .flex-lg-10 { max-height: 10%; } - [flex-lg="15"] { + .flex-lg-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-lg="15"] { + .layout-row > .flex-lg-15 { max-width: 15%; } - [layout="column"] > [flex-lg="15"] { + .layout-column > .flex-lg-15 { max-height: 15%; } - [flex-lg="20"] { + .flex-lg-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-lg="20"] { + .layout-row > .flex-lg-20 { max-width: 20%; } - [layout="column"] > [flex-lg="20"] { + .layout-column > .flex-lg-20 { max-height: 20%; } - [flex-lg="25"] { + .flex-lg-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-lg="25"] { + .layout-row > .flex-lg-25 { max-width: 25%; } - [layout="column"] > [flex-lg="25"] { + .layout-column > .flex-lg-25 { max-height: 25%; } - [flex-lg="30"] { + .flex-lg-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-lg="30"] { + .layout-row > .flex-lg-30 { max-width: 30%; } - [layout="column"] > [flex-lg="30"] { + .layout-column > .flex-lg-30 { max-height: 30%; } - [flex-lg="35"] { + .flex-lg-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-lg="35"] { + .layout-row > .flex-lg-35 { max-width: 35%; } - [layout="column"] > [flex-lg="35"] { + .layout-column > .flex-lg-35 { max-height: 35%; } - [flex-lg="40"] { + .flex-lg-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-lg="40"] { + .layout-row > .flex-lg-40 { max-width: 40%; } - [layout="column"] > [flex-lg="40"] { + .layout-column > .flex-lg-40 { max-height: 40%; } - [flex-lg="45"] { + .flex-lg-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-lg="45"] { + .layout-row > .flex-lg-45 { max-width: 45%; } - [layout="column"] > [flex-lg="45"] { + .layout-column > .flex-lg-45 { max-height: 45%; } - [flex-lg="50"] { + .flex-lg-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-lg="50"] { + .layout-row > .flex-lg-50 { max-width: 50%; } - [layout="column"] > [flex-lg="50"] { + .layout-column > .flex-lg-50 { max-height: 50%; } - [flex-lg="55"] { + .flex-lg-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-lg="55"] { + .layout-row > .flex-lg-55 { max-width: 55%; } - [layout="column"] > [flex-lg="55"] { + .layout-column > .flex-lg-55 { max-height: 55%; } - [flex-lg="60"] { + .flex-lg-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-lg="60"] { + .layout-row > .flex-lg-60 { max-width: 60%; } - [layout="column"] > [flex-lg="60"] { + .layout-column > .flex-lg-60 { max-height: 60%; } - [flex-lg="65"] { + .flex-lg-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-lg="65"] { + .layout-row > .flex-lg-65 { max-width: 65%; } - [layout="column"] > [flex-lg="65"] { + .layout-column > .flex-lg-65 { max-height: 65%; } - [flex-lg="70"] { + .flex-lg-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-lg="70"] { + .layout-row > .flex-lg-70 { max-width: 70%; } - [layout="column"] > [flex-lg="70"] { + .layout-column > .flex-lg-70 { max-height: 70%; } - [flex-lg="75"] { + .flex-lg-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-lg="75"] { + .layout-row > .flex-lg-75 { max-width: 75%; } - [layout="column"] > [flex-lg="75"] { + .layout-column > .flex-lg-75 { max-height: 75%; } - [flex-lg="80"] { + .flex-lg-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-lg="80"] { + .layout-row > .flex-lg-80 { max-width: 80%; } - [layout="column"] > [flex-lg="80"] { + .layout-column > .flex-lg-80 { max-height: 80%; } - [flex-lg="85"] { + .flex-lg-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-lg="85"] { + .layout-row > .flex-lg-85 { max-width: 85%; } - [layout="column"] > [flex-lg="85"] { + .layout-column > .flex-lg-85 { max-height: 85%; } - [flex-lg="90"] { + .flex-lg-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-lg="90"] { + .layout-row > .flex-lg-90 { max-width: 90%; } - [layout="column"] > [flex-lg="90"] { + .layout-column > .flex-lg-90 { max-height: 90%; } - [flex-lg="95"] { + .flex-lg-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-lg="95"] { + .layout-row > .flex-lg-95 { max-width: 95%; } - [layout="column"] > [flex-lg="95"] { + .layout-column > .flex-lg-95 { max-height: 95%; } - [flex-lg="100"] { + .flex-lg-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-lg="100"] { + .layout-row > .flex-lg-100 { max-width: 100%; } - [layout="column"] > [flex-lg="100"] { + .layout-column > .flex-lg-100 { max-height: 100%; } - [flex-lg="33"], [flex-lg="34"] { + .flex-lg-33, .flex-lg-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-lg="66"], [flex-lg="67"] { + .flex-lg-66, .flex-lg-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-lg="33"], [layout="row"] > [flex-lg="34"] { + .layout-row > .flex-lg-33, .layout-row > .flex-lg-34 { max-width: 33.33%; } - [layout="row"] > [flex-lg="66"], [layout="row"] > [flex-lg="67"] { + .layout-row > .flex-lg-66, .layout-row > .flex-lg-67 { max-width: 66.66%; } - [layout="column"] > [flex-lg="33"], [layout="column"] > [flex-lg="34"] { + .layout-column > .flex-lg-33, .layout-column > .flex-lg-34 { max-height: 33.33%; } - [layout="column"] > [flex-lg="66"], [layout="column"] > [flex-lg="67"] { + .layout-column > .flex-lg-66, .layout-column > .flex-lg-67 { max-height: 66.66%; } } @media (min-width: 1280px) { - [hide-gt-sm]:not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show]), [hide-gt-md]:not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show]), [hide-gt-lg]:not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show]), [hide]:not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show]), .md-hide:not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show]) { + .hide-gt-sm:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide-gt-md:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide-gt-lg:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show) { display: none; } - [flex-order-gt-lg="0"] { + .flex-order-gt-lg-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-lg="1"] { + .flex-order-gt-lg-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-lg="2"] { + .flex-order-gt-lg-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-lg="3"] { + .flex-order-gt-lg-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-lg="4"] { + .flex-order-gt-lg-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-lg="5"] { + .flex-order-gt-lg-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-lg="6"] { + .flex-order-gt-lg-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-lg="7"] { + .flex-order-gt-lg-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-lg="8"] { + .flex-order-gt-lg-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-lg="9"] { + .flex-order-gt-lg-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-lg="center"], [layout-align-gt-lg="center center"], - [layout-align-gt-lg="center start"], - [layout-align-gt-lg="center end"] { + .layout-align-gt-lg-center, .layout-align-gt-lg-center-center, + .layout-align-gt-lg-center-start, + .layout-align-gt-lg-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-lg="end"], [layout-align-gt-lg="end center"], - [layout-align-gt-lg="end start"], - [layout-align-gt-lg="end end"] { + .layout-align-gt-lg-end, .layout-align-gt-lg-end-center, + .layout-align-gt-lg-end-start, + .layout-align-gt-lg-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-lg="space-around"], [layout-align-gt-lg="space-around center"], - [layout-align-gt-lg="space-around start"], - [layout-align-gt-lg="space-around end"] { + .layout-align-gt-lg-space-around, .layout-align-gt-lg-space-around-center, + .layout-align-gt-lg-space-around-start, + .layout-align-gt-lg-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-lg="space-between"], [layout-align-gt-lg="space-between center"], - [layout-align-gt-lg="space-between start"], - [layout-align-gt-lg="space-between end"] { + .layout-align-gt-lg-space-between, .layout-align-gt-lg-space-between-center, + .layout-align-gt-lg-space-between-start, + .layout-align-gt-lg-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-lg="center center"], - [layout-align-gt-lg="start center"], - [layout-align-gt-lg="end center"], - [layout-align-gt-lg="space-between center"], - [layout-align-gt-lg="space-around center"] { + .layout-align-gt-lg-center-center, + .layout-align-gt-lg-start-center, + .layout-align-gt-lg-end-center, + .layout-align-gt-lg-space-between-center, + .layout-align-gt-lg-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-lg="center start"], - [layout-align-gt-lg="start start"], - [layout-align-gt-lg="end start"], - [layout-align-gt-lg="space-between start"], - [layout-align-gt-lg="space-around start"] { + .layout-align-gt-lg-center-start, + .layout-align-gt-lg-start-start, + .layout-align-gt-lg-end-start, + .layout-align-gt-lg-space-between-start, + .layout-align-gt-lg-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-lg="center end"], - [layout-align-gt-lg="start end"], - [layout-align-gt-lg="end end"], - [layout-align-gt-lg="space-between end"], - [layout-align-gt-lg="space-around end"] { + .layout-align-gt-lg-center-end, + .layout-align-gt-lg-start-end, + .layout-align-gt-lg-end-end, + .layout-align-gt-lg-space-between-end, + .layout-align-gt-lg-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-lg] { + .layout-gt-lg { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-lg=column] { + .layout-gt-lg-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-lg=row] { + .layout-gt-lg-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [offset-gt-lg="5"] { + .offset-gt-lg-5 { margin-left: 5%; } - [offset-gt-lg="10"] { + .offset-gt-lg-10 { margin-left: 10%; } - [offset-gt-lg="15"] { + .offset-gt-lg-15 { margin-left: 15%; } - [offset-gt-lg="20"] { + .offset-gt-lg-20 { margin-left: 20%; } - [offset-gt-lg="25"] { + .offset-gt-lg-25 { margin-left: 25%; } - [offset-gt-lg="30"] { + .offset-gt-lg-30 { margin-left: 30%; } - [offset-gt-lg="35"] { + .offset-gt-lg-35 { margin-left: 35%; } - [offset-gt-lg="40"] { + .offset-gt-lg-40 { margin-left: 40%; } - [offset-gt-lg="45"] { + .offset-gt-lg-45 { margin-left: 45%; } - [offset-gt-lg="50"] { + .offset-gt-lg-50 { margin-left: 50%; } - [offset-gt-lg="55"] { + .offset-gt-lg-55 { margin-left: 55%; } - [offset-gt-lg="60"] { + .offset-gt-lg-60 { margin-left: 60%; } - [offset-gt-lg="65"] { + .offset-gt-lg-65 { margin-left: 65%; } - [offset-gt-lg="70"] { + .offset-gt-lg-70 { margin-left: 70%; } - [offset-gt-lg="75"] { + .offset-gt-lg-75 { margin-left: 75%; } - [offset-gt-lg="80"] { + .offset-gt-lg-80 { margin-left: 80%; } - [offset-gt-lg="85"] { + .offset-gt-lg-85 { margin-left: 85%; } - [offset-gt-lg="90"] { + .offset-gt-lg-90 { margin-left: 90%; } - [offset-gt-lg="95"] { + .offset-gt-lg-95 { margin-left: 95%; } - [offset-gt-lg="33"], [offset-gt-lg="34"] { + .offset-gt-lg-33, .offset-gt-lg-34 { margin-left: 33.33%; } - [offset-gt-lg="66"], [offset-gt-lg="67"] { + .offset-gt-lg-66, .offset-gt-lg-67 { margin-left: 66.66%; } - [flex-gt-lg] { + .flex-gt-lg { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-lg="0"] { + .flex-gt-lg-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-lg="0"] { + .layout-row > .flex-gt-lg-0 { max-width: 0%; } - [layout="column"] > [flex-gt-lg="0"] { + .layout-column > .flex-gt-lg-0 { max-height: 0%; } - [flex-gt-lg="5"] { + .flex-gt-lg-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-lg="5"] { + .layout-row > .flex-gt-lg-5 { max-width: 5%; } - [layout="column"] > [flex-gt-lg="5"] { + .layout-column > .flex-gt-lg-5 { max-height: 5%; } - [flex-gt-lg="10"] { + .flex-gt-lg-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-lg="10"] { + .layout-row > .flex-gt-lg-10 { max-width: 10%; } - [layout="column"] > [flex-gt-lg="10"] { + .layout-column > .flex-gt-lg-10 { max-height: 10%; } - [flex-gt-lg="15"] { + .flex-gt-lg-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-lg="15"] { + .layout-row > .flex-gt-lg-15 { max-width: 15%; } - [layout="column"] > [flex-gt-lg="15"] { + .layout-column > .flex-gt-lg-15 { max-height: 15%; } - [flex-gt-lg="20"] { + .flex-gt-lg-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-lg="20"] { + .layout-row > .flex-gt-lg-20 { max-width: 20%; } - [layout="column"] > [flex-gt-lg="20"] { + .layout-column > .flex-gt-lg-20 { max-height: 20%; } - [flex-gt-lg="25"] { + .flex-gt-lg-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-lg="25"] { + .layout-row > .flex-gt-lg-25 { max-width: 25%; } - [layout="column"] > [flex-gt-lg="25"] { + .layout-column > .flex-gt-lg-25 { max-height: 25%; } - [flex-gt-lg="30"] { + .flex-gt-lg-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-lg="30"] { + .layout-row > .flex-gt-lg-30 { max-width: 30%; } - [layout="column"] > [flex-gt-lg="30"] { + .layout-column > .flex-gt-lg-30 { max-height: 30%; } - [flex-gt-lg="35"] { + .flex-gt-lg-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-lg="35"] { + .layout-row > .flex-gt-lg-35 { max-width: 35%; } - [layout="column"] > [flex-gt-lg="35"] { + .layout-column > .flex-gt-lg-35 { max-height: 35%; } - [flex-gt-lg="40"] { + .flex-gt-lg-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-lg="40"] { + .layout-row > .flex-gt-lg-40 { max-width: 40%; } - [layout="column"] > [flex-gt-lg="40"] { + .layout-column > .flex-gt-lg-40 { max-height: 40%; } - [flex-gt-lg="45"] { + .flex-gt-lg-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-lg="45"] { + .layout-row > .flex-gt-lg-45 { max-width: 45%; } - [layout="column"] > [flex-gt-lg="45"] { + .layout-column > .flex-gt-lg-45 { max-height: 45%; } - [flex-gt-lg="50"] { + .flex-gt-lg-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-lg="50"] { + .layout-row > .flex-gt-lg-50 { max-width: 50%; } - [layout="column"] > [flex-gt-lg="50"] { + .layout-column > .flex-gt-lg-50 { max-height: 50%; } - [flex-gt-lg="55"] { + .flex-gt-lg-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-lg="55"] { + .layout-row > .flex-gt-lg-55 { max-width: 55%; } - [layout="column"] > [flex-gt-lg="55"] { + .layout-column > .flex-gt-lg-55 { max-height: 55%; } - [flex-gt-lg="60"] { + .flex-gt-lg-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-lg="60"] { + .layout-row > .flex-gt-lg-60 { max-width: 60%; } - [layout="column"] > [flex-gt-lg="60"] { + .layout-column > .flex-gt-lg-60 { max-height: 60%; } - [flex-gt-lg="65"] { + .flex-gt-lg-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-lg="65"] { + .layout-row > .flex-gt-lg-65 { max-width: 65%; } - [layout="column"] > [flex-gt-lg="65"] { + .layout-column > .flex-gt-lg-65 { max-height: 65%; } - [flex-gt-lg="70"] { + .flex-gt-lg-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-lg="70"] { + .layout-row > .flex-gt-lg-70 { max-width: 70%; } - [layout="column"] > [flex-gt-lg="70"] { + .layout-column > .flex-gt-lg-70 { max-height: 70%; } - [flex-gt-lg="75"] { + .flex-gt-lg-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-lg="75"] { + .layout-row > .flex-gt-lg-75 { max-width: 75%; } - [layout="column"] > [flex-gt-lg="75"] { + .layout-column > .flex-gt-lg-75 { max-height: 75%; } - [flex-gt-lg="80"] { + .flex-gt-lg-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-lg="80"] { + .layout-row > .flex-gt-lg-80 { max-width: 80%; } - [layout="column"] > [flex-gt-lg="80"] { + .layout-column > .flex-gt-lg-80 { max-height: 80%; } - [flex-gt-lg="85"] { + .flex-gt-lg-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-lg="85"] { + .layout-row > .flex-gt-lg-85 { max-width: 85%; } - [layout="column"] > [flex-gt-lg="85"] { + .layout-column > .flex-gt-lg-85 { max-height: 85%; } - [flex-gt-lg="90"] { + .flex-gt-lg-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-lg="90"] { + .layout-row > .flex-gt-lg-90 { max-width: 90%; } - [layout="column"] > [flex-gt-lg="90"] { + .layout-column > .flex-gt-lg-90 { max-height: 90%; } - [flex-gt-lg="95"] { + .flex-gt-lg-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-lg="95"] { + .layout-row > .flex-gt-lg-95 { max-width: 95%; } - [layout="column"] > [flex-gt-lg="95"] { + .layout-column > .flex-gt-lg-95 { max-height: 95%; } - [flex-gt-lg="100"] { + .flex-gt-lg-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-lg="100"] { + .layout-row > .flex-gt-lg-100 { max-width: 100%; } - [layout="column"] > [flex-gt-lg="100"] { + .layout-column > .flex-gt-lg-100 { max-height: 100%; } - [flex-gt-lg="33"], [flex-gt-lg="34"] { + .flex-gt-lg-33, .flex-gt-lg-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-lg="66"], [flex-gt-lg="67"] { + .flex-gt-lg-66, .flex-gt-lg-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-lg="33"], [layout="row"] > [flex-gt-lg="34"] { + .layout-row > .flex-gt-lg-33, .layout-row > .flex-gt-lg-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-lg="66"], [layout="row"] > [flex-gt-lg="67"] { + .layout-row > .flex-gt-lg-66, .layout-row > .flex-gt-lg-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-lg="33"], [layout="column"] > [flex-gt-lg="34"] { + .layout-column > .flex-gt-lg-33, .layout-column > .flex-gt-lg-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-lg="66"], [layout="column"] > [flex-gt-lg="67"] { + .layout-column > .flex-gt-lg-66, .layout-column > .flex-gt-lg-67 { max-height: 66.66%; } } /** @@ -3345,341 +3329,341 @@ html * { @media (min-width: 1) and (max-width: 600px) { .hide-sm:not(.show-sm):not(.show), .hide:not(.show-sm):not(.show) { display: none !important; } - [flex-order-sm="0"] { + .flex-order-sm-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-sm="1"] { + .flex-order-sm-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-sm="2"] { + .flex-order-sm-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-sm="3"] { + .flex-order-sm-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-sm="4"] { + .flex-order-sm-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-sm="5"] { + .flex-order-sm-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-sm="6"] { + .flex-order-sm-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-sm="7"] { + .flex-order-sm-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-sm="8"] { + .flex-order-sm-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-sm="9"] { + .flex-order-sm-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-sm="center"], [layout-align-sm="center center"], - [layout-align-sm="center start"], - [layout-align-sm="center end"] { + .layout-align-sm-center, .layout-align-sm-center-center, + .layout-align-sm-center-start, + .layout-align-sm-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-sm="end"], [layout-align-sm="end center"], - [layout-align-sm="end start"], - [layout-align-sm="end end"] { + .layout-align-sm-end, .layout-align-sm-end-center, + .layout-align-sm-end-start, + .layout-align-sm-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-sm="space-around"], [layout-align-sm="space-around center"], - [layout-align-sm="space-around start"], - [layout-align-sm="space-around end"] { + .layout-align-sm-space-around, .layout-align-sm-space-around-center, + .layout-align-sm-space-around-start, + .layout-align-sm-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-sm="space-between"], [layout-align-sm="space-between center"], - [layout-align-sm="space-between start"], - [layout-align-sm="space-between end"] { + .layout-align-sm-space-between, .layout-align-sm-space-between-center, + .layout-align-sm-space-between-start, + .layout-align-sm-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-sm="center center"], - [layout-align-sm="start center"], - [layout-align-sm="end center"], - [layout-align-sm="space-between center"], - [layout-align-sm="space-around center"] { + .layout-align-sm-center-center, + .layout-align-sm-start-center, + .layout-align-sm-end-center, + .layout-align-sm-space-between-center, + .layout-align-sm-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-sm="center start"], - [layout-align-sm="start start"], - [layout-align-sm="end start"], - [layout-align-sm="space-between start"], - [layout-align-sm="space-around start"] { + .layout-align-sm-center-start, + .layout-align-sm-start-start, + .layout-align-sm-end-start, + .layout-align-sm-space-between-start, + .layout-align-sm-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-sm="center end"], - [layout-align-sm="start end"], - [layout-align-sm="end end"], - [layout-align-sm="space-between end"], - [layout-align-sm="space-around end"] { + .layout-align-sm-center-end, + .layout-align-sm-start-end, + .layout-align-sm-end-end, + .layout-align-sm-space-between-end, + .layout-align-sm-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-sm] { + .layout-sm { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-sm=column] { + .layout-sm-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-sm=row] { + .layout-sm-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-sm] { + .flex-sm { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-sm="0"] { + .flex-sm-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-sm="0"] { + .layout-row > .flex-sm-0 { max-width: 0%; } - [layout="column"] > [flex-sm="0"] { + .layout-column > .flex-sm-0 { max-height: 0%; } - [flex-sm="5"] { + .flex-sm-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-sm="5"] { + .layout-row > .flex-sm-5 { max-width: 5%; } - [layout="column"] > [flex-sm="5"] { + .layout-column > .flex-sm-5 { max-height: 5%; } - [flex-sm="10"] { + .flex-sm-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-sm="10"] { + .layout-row > .flex-sm-10 { max-width: 10%; } - [layout="column"] > [flex-sm="10"] { + .layout-column > .flex-sm-10 { max-height: 10%; } - [flex-sm="15"] { + .flex-sm-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-sm="15"] { + .layout-row > .flex-sm-15 { max-width: 15%; } - [layout="column"] > [flex-sm="15"] { + .layout-column > .flex-sm-15 { max-height: 15%; } - [flex-sm="20"] { + .flex-sm-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-sm="20"] { + .layout-row > .flex-sm-20 { max-width: 20%; } - [layout="column"] > [flex-sm="20"] { + .layout-column > .flex-sm-20 { max-height: 20%; } - [flex-sm="25"] { + .flex-sm-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-sm="25"] { + .layout-row > .flex-sm-25 { max-width: 25%; } - [layout="column"] > [flex-sm="25"] { + .layout-column > .flex-sm-25 { max-height: 25%; } - [flex-sm="30"] { + .flex-sm-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-sm="30"] { + .layout-row > .flex-sm-30 { max-width: 30%; } - [layout="column"] > [flex-sm="30"] { + .layout-column > .flex-sm-30 { max-height: 30%; } - [flex-sm="35"] { + .flex-sm-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-sm="35"] { + .layout-row > .flex-sm-35 { max-width: 35%; } - [layout="column"] > [flex-sm="35"] { + .layout-column > .flex-sm-35 { max-height: 35%; } - [flex-sm="40"] { + .flex-sm-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-sm="40"] { + .layout-row > .flex-sm-40 { max-width: 40%; } - [layout="column"] > [flex-sm="40"] { + .layout-column > .flex-sm-40 { max-height: 40%; } - [flex-sm="45"] { + .flex-sm-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-sm="45"] { + .layout-row > .flex-sm-45 { max-width: 45%; } - [layout="column"] > [flex-sm="45"] { + .layout-column > .flex-sm-45 { max-height: 45%; } - [flex-sm="50"] { + .flex-sm-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-sm="50"] { + .layout-row > .flex-sm-50 { max-width: 50%; } - [layout="column"] > [flex-sm="50"] { + .layout-column > .flex-sm-50 { max-height: 50%; } - [flex-sm="55"] { + .flex-sm-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-sm="55"] { + .layout-row > .flex-sm-55 { max-width: 55%; } - [layout="column"] > [flex-sm="55"] { + .layout-column > .flex-sm-55 { max-height: 55%; } - [flex-sm="60"] { + .flex-sm-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-sm="60"] { + .layout-row > .flex-sm-60 { max-width: 60%; } - [layout="column"] > [flex-sm="60"] { + .layout-column > .flex-sm-60 { max-height: 60%; } - [flex-sm="65"] { + .flex-sm-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-sm="65"] { + .layout-row > .flex-sm-65 { max-width: 65%; } - [layout="column"] > [flex-sm="65"] { + .layout-column > .flex-sm-65 { max-height: 65%; } - [flex-sm="70"] { + .flex-sm-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-sm="70"] { + .layout-row > .flex-sm-70 { max-width: 70%; } - [layout="column"] > [flex-sm="70"] { + .layout-column > .flex-sm-70 { max-height: 70%; } - [flex-sm="75"] { + .flex-sm-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-sm="75"] { + .layout-row > .flex-sm-75 { max-width: 75%; } - [layout="column"] > [flex-sm="75"] { + .layout-column > .flex-sm-75 { max-height: 75%; } - [flex-sm="80"] { + .flex-sm-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-sm="80"] { + .layout-row > .flex-sm-80 { max-width: 80%; } - [layout="column"] > [flex-sm="80"] { + .layout-column > .flex-sm-80 { max-height: 80%; } - [flex-sm="85"] { + .flex-sm-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-sm="85"] { + .layout-row > .flex-sm-85 { max-width: 85%; } - [layout="column"] > [flex-sm="85"] { + .layout-column > .flex-sm-85 { max-height: 85%; } - [flex-sm="90"] { + .flex-sm-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-sm="90"] { + .layout-row > .flex-sm-90 { max-width: 90%; } - [layout="column"] > [flex-sm="90"] { + .layout-column > .flex-sm-90 { max-height: 90%; } - [flex-sm="95"] { + .flex-sm-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-sm="95"] { + .layout-row > .flex-sm-95 { max-width: 95%; } - [layout="column"] > [flex-sm="95"] { + .layout-column > .flex-sm-95 { max-height: 95%; } - [flex-sm="100"] { + .flex-sm-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-sm="100"] { + .layout-row > .flex-sm-100 { max-width: 100%; } - [layout="column"] > [flex-sm="100"] { + .layout-column > .flex-sm-100 { max-height: 100%; } - [flex-sm="33"], [flex-sm="34"] { + .flex-sm-33, .flex-sm-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-sm="66"], [flex-sm="67"] { + .flex-sm-66, .flex-sm-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-sm="33"], [layout="row"] > [flex-sm="34"] { + .layout-row > .flex-sm-33, .layout-row > .flex-sm-34 { max-width: 33.33%; } - [layout="row"] > [flex-sm="66"], [layout="row"] > [flex-sm="67"] { + .layout-row > .flex-sm-66, .layout-row > .flex-sm-67 { max-width: 66.66%; } - [layout="column"] > [flex-sm="33"], [layout="column"] > [flex-sm="34"] { + .layout-column > .flex-sm-33, .layout-column > .flex-sm-34 { max-height: 33.33%; } - [layout="column"] > [flex-sm="66"], [layout="column"] > [flex-sm="67"] { + .layout-column > .flex-sm-66, .layout-column > .flex-sm-67 { max-height: 66.66%; } } @media (min-width: 601px) { @@ -3687,341 +3671,341 @@ html * { display: none !important; } } @media (min-width: 601px) { - [flex-order-gt-sm="0"] { + .flex-order-gt-sm-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-sm="1"] { + .flex-order-gt-sm-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-sm="2"] { + .flex-order-gt-sm-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-sm="3"] { + .flex-order-gt-sm-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-sm="4"] { + .flex-order-gt-sm-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-sm="5"] { + .flex-order-gt-sm-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-sm="6"] { + .flex-order-gt-sm-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-sm="7"] { + .flex-order-gt-sm-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-sm="8"] { + .flex-order-gt-sm-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-sm="9"] { + .flex-order-gt-sm-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-sm="center"], [layout-align-gt-sm="center center"], - [layout-align-gt-sm="center start"], - [layout-align-gt-sm="center end"] { + .layout-align-gt-sm-center, .layout-align-gt-sm-center-center, + .layout-align-gt-sm-center-start, + .layout-align-gt-sm-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-sm="end"], [layout-align-gt-sm="end center"], - [layout-align-gt-sm="end start"], - [layout-align-gt-sm="end end"] { + .layout-align-gt-sm-end, .layout-align-gt-sm-end-center, + .layout-align-gt-sm-end-start, + .layout-align-gt-sm-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-sm="space-around"], [layout-align-gt-sm="space-around center"], - [layout-align-gt-sm="space-around start"], - [layout-align-gt-sm="space-around end"] { + .layout-align-gt-sm-space-around, .layout-align-gt-sm-space-around-center, + .layout-align-gt-sm-space-around-start, + .layout-align-gt-sm-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-sm="space-between"], [layout-align-gt-sm="space-between center"], - [layout-align-gt-sm="space-between start"], - [layout-align-gt-sm="space-between end"] { + .layout-align-gt-sm-space-between, .layout-align-gt-sm-space-between-center, + .layout-align-gt-sm-space-between-start, + .layout-align-gt-sm-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-sm="center center"], - [layout-align-gt-sm="start center"], - [layout-align-gt-sm="end center"], - [layout-align-gt-sm="space-between center"], - [layout-align-gt-sm="space-around center"] { + .layout-align-gt-sm-center-center, + .layout-align-gt-sm-start-center, + .layout-align-gt-sm-end-center, + .layout-align-gt-sm-space-between-center, + .layout-align-gt-sm-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-sm="center start"], - [layout-align-gt-sm="start start"], - [layout-align-gt-sm="end start"], - [layout-align-gt-sm="space-between start"], - [layout-align-gt-sm="space-around start"] { + .layout-align-gt-sm-center-start, + .layout-align-gt-sm-start-start, + .layout-align-gt-sm-end-start, + .layout-align-gt-sm-space-between-start, + .layout-align-gt-sm-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-sm="center end"], - [layout-align-gt-sm="start end"], - [layout-align-gt-sm="end end"], - [layout-align-gt-sm="space-between end"], - [layout-align-gt-sm="space-around end"] { + .layout-align-gt-sm-center-end, + .layout-align-gt-sm-start-end, + .layout-align-gt-sm-end-end, + .layout-align-gt-sm-space-between-end, + .layout-align-gt-sm-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-sm] { + .layout-gt-sm { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-sm=column] { + .layout-gt-sm-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-sm=row] { + .layout-gt-sm-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-gt-sm] { + .flex-gt-sm { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-sm="0"] { + .flex-gt-sm-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-sm="0"] { + .layout-row > .flex-gt-sm-0 { max-width: 0%; } - [layout="column"] > [flex-gt-sm="0"] { + .layout-column > .flex-gt-sm-0 { max-height: 0%; } - [flex-gt-sm="5"] { + .flex-gt-sm-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-sm="5"] { + .layout-row > .flex-gt-sm-5 { max-width: 5%; } - [layout="column"] > [flex-gt-sm="5"] { + .layout-column > .flex-gt-sm-5 { max-height: 5%; } - [flex-gt-sm="10"] { + .flex-gt-sm-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-sm="10"] { + .layout-row > .flex-gt-sm-10 { max-width: 10%; } - [layout="column"] > [flex-gt-sm="10"] { + .layout-column > .flex-gt-sm-10 { max-height: 10%; } - [flex-gt-sm="15"] { + .flex-gt-sm-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-sm="15"] { + .layout-row > .flex-gt-sm-15 { max-width: 15%; } - [layout="column"] > [flex-gt-sm="15"] { + .layout-column > .flex-gt-sm-15 { max-height: 15%; } - [flex-gt-sm="20"] { + .flex-gt-sm-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-sm="20"] { + .layout-row > .flex-gt-sm-20 { max-width: 20%; } - [layout="column"] > [flex-gt-sm="20"] { + .layout-column > .flex-gt-sm-20 { max-height: 20%; } - [flex-gt-sm="25"] { + .flex-gt-sm-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-sm="25"] { + .layout-row > .flex-gt-sm-25 { max-width: 25%; } - [layout="column"] > [flex-gt-sm="25"] { + .layout-column > .flex-gt-sm-25 { max-height: 25%; } - [flex-gt-sm="30"] { + .flex-gt-sm-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-sm="30"] { + .layout-row > .flex-gt-sm-30 { max-width: 30%; } - [layout="column"] > [flex-gt-sm="30"] { + .layout-column > .flex-gt-sm-30 { max-height: 30%; } - [flex-gt-sm="35"] { + .flex-gt-sm-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-sm="35"] { + .layout-row > .flex-gt-sm-35 { max-width: 35%; } - [layout="column"] > [flex-gt-sm="35"] { + .layout-column > .flex-gt-sm-35 { max-height: 35%; } - [flex-gt-sm="40"] { + .flex-gt-sm-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-sm="40"] { + .layout-row > .flex-gt-sm-40 { max-width: 40%; } - [layout="column"] > [flex-gt-sm="40"] { + .layout-column > .flex-gt-sm-40 { max-height: 40%; } - [flex-gt-sm="45"] { + .flex-gt-sm-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-sm="45"] { + .layout-row > .flex-gt-sm-45 { max-width: 45%; } - [layout="column"] > [flex-gt-sm="45"] { + .layout-column > .flex-gt-sm-45 { max-height: 45%; } - [flex-gt-sm="50"] { + .flex-gt-sm-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-sm="50"] { + .layout-row > .flex-gt-sm-50 { max-width: 50%; } - [layout="column"] > [flex-gt-sm="50"] { + .layout-column > .flex-gt-sm-50 { max-height: 50%; } - [flex-gt-sm="55"] { + .flex-gt-sm-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-sm="55"] { + .layout-row > .flex-gt-sm-55 { max-width: 55%; } - [layout="column"] > [flex-gt-sm="55"] { + .layout-column > .flex-gt-sm-55 { max-height: 55%; } - [flex-gt-sm="60"] { + .flex-gt-sm-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-sm="60"] { + .layout-row > .flex-gt-sm-60 { max-width: 60%; } - [layout="column"] > [flex-gt-sm="60"] { + .layout-column > .flex-gt-sm-60 { max-height: 60%; } - [flex-gt-sm="65"] { + .flex-gt-sm-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-sm="65"] { + .layout-row > .flex-gt-sm-65 { max-width: 65%; } - [layout="column"] > [flex-gt-sm="65"] { + .layout-column > .flex-gt-sm-65 { max-height: 65%; } - [flex-gt-sm="70"] { + .flex-gt-sm-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-sm="70"] { + .layout-row > .flex-gt-sm-70 { max-width: 70%; } - [layout="column"] > [flex-gt-sm="70"] { + .layout-column > .flex-gt-sm-70 { max-height: 70%; } - [flex-gt-sm="75"] { + .flex-gt-sm-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-sm="75"] { + .layout-row > .flex-gt-sm-75 { max-width: 75%; } - [layout="column"] > [flex-gt-sm="75"] { + .layout-column > .flex-gt-sm-75 { max-height: 75%; } - [flex-gt-sm="80"] { + .flex-gt-sm-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-sm="80"] { + .layout-row > .flex-gt-sm-80 { max-width: 80%; } - [layout="column"] > [flex-gt-sm="80"] { + .layout-column > .flex-gt-sm-80 { max-height: 80%; } - [flex-gt-sm="85"] { + .flex-gt-sm-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-sm="85"] { + .layout-row > .flex-gt-sm-85 { max-width: 85%; } - [layout="column"] > [flex-gt-sm="85"] { + .layout-column > .flex-gt-sm-85 { max-height: 85%; } - [flex-gt-sm="90"] { + .flex-gt-sm-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-sm="90"] { + .layout-row > .flex-gt-sm-90 { max-width: 90%; } - [layout="column"] > [flex-gt-sm="90"] { + .layout-column > .flex-gt-sm-90 { max-height: 90%; } - [flex-gt-sm="95"] { + .flex-gt-sm-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-sm="95"] { + .layout-row > .flex-gt-sm-95 { max-width: 95%; } - [layout="column"] > [flex-gt-sm="95"] { + .layout-column > .flex-gt-sm-95 { max-height: 95%; } - [flex-gt-sm="100"] { + .flex-gt-sm-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-sm="100"] { + .layout-row > .flex-gt-sm-100 { max-width: 100%; } - [layout="column"] > [flex-gt-sm="100"] { + .layout-column > .flex-gt-sm-100 { max-height: 100%; } - [flex-gt-sm="33"], [flex-gt-sm="34"] { + .flex-gt-sm-33, .flex-gt-sm-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-sm="66"], [flex-gt-sm="67"] { + .flex-gt-sm-66, .flex-gt-sm-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-sm="33"], [layout="row"] > [flex-gt-sm="34"] { + .layout-row > .flex-gt-sm-33, .layout-row > .flex-gt-sm-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-sm="66"], [layout="row"] > [flex-gt-sm="67"] { + .layout-row > .flex-gt-sm-66, .layout-row > .flex-gt-sm-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-sm="33"], [layout="column"] > [flex-gt-sm="34"] { + .layout-column > .flex-gt-sm-33, .layout-column > .flex-gt-sm-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-sm="66"], [layout="column"] > [flex-gt-sm="67"] { + .layout-column > .flex-gt-sm-66, .layout-column > .flex-gt-sm-67 { max-height: 66.66%; } } @media (min-width: 601px) and (max-width: 1024px) { @@ -4029,1015 +4013,1015 @@ html * { display: none; } .hide-md:not(.show-md):not(.show) { display: none; } - [flex-order-md="0"] { + .flex-order-md-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-md="1"] { + .flex-order-md-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-md="2"] { + .flex-order-md-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-md="3"] { + .flex-order-md-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-md="4"] { + .flex-order-md-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-md="5"] { + .flex-order-md-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-md="6"] { + .flex-order-md-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-md="7"] { + .flex-order-md-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-md="8"] { + .flex-order-md-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-md="9"] { + .flex-order-md-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-md="center"], [layout-align-md="center center"], - [layout-align-md="center start"], - [layout-align-md="center end"] { + .layout-align-md-center, .layout-align-md-center-center, + .layout-align-md-center-start, + .layout-align-md-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-md="end"], [layout-align-md="end center"], - [layout-align-md="end start"], - [layout-align-md="end end"] { + .layout-align-md-end, .layout-align-md-end-center, + .layout-align-md-end-start, + .layout-align-md-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-md="space-around"], [layout-align-md="space-around center"], - [layout-align-md="space-around start"], - [layout-align-md="space-around end"] { + .layout-align-md-space-around, .layout-align-md-space-around-center, + .layout-align-md-space-around-start, + .layout-align-md-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-md="space-between"], [layout-align-md="space-between center"], - [layout-align-md="space-between start"], - [layout-align-md="space-between end"] { + .layout-align-md-space-between, .layout-align-md-space-between-center, + .layout-align-md-space-between-start, + .layout-align-md-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-md="center center"], - [layout-align-md="start center"], - [layout-align-md="end center"], - [layout-align-md="space-between center"], - [layout-align-md="space-around center"] { + .layout-align-md-center-center, + .layout-align-md-start-center, + .layout-align-md-end-center, + .layout-align-md-space-between-center, + .layout-align-md-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-md="center start"], - [layout-align-md="start start"], - [layout-align-md="end start"], - [layout-align-md="space-between start"], - [layout-align-md="space-around start"] { + .layout-align-md-center-start, + .layout-align-md-start-start, + .layout-align-md-end-start, + .layout-align-md-space-between-start, + .layout-align-md-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-md="center end"], - [layout-align-md="start end"], - [layout-align-md="end end"], - [layout-align-md="space-between end"], - [layout-align-md="space-around end"] { + .layout-align-md-center-end, + .layout-align-md-start-end, + .layout-align-md-end-end, + .layout-align-md-space-between-end, + .layout-align-md-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-md] { + .layout-md { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-md=column] { + .layout-md-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-md=row] { + .layout-md-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-md] { + .flex-md { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-md="0"] { + .flex-md-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-md="0"] { + .layout-row > .flex-md-0 { max-width: 0%; } - [layout="column"] > [flex-md="0"] { + .layout-column > .flex-md-0 { max-height: 0%; } - [flex-md="5"] { + .flex-md-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-md="5"] { + .layout-row > .flex-md-5 { max-width: 5%; } - [layout="column"] > [flex-md="5"] { + .layout-column > .flex-md-5 { max-height: 5%; } - [flex-md="10"] { + .flex-md-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-md="10"] { + .layout-row > .flex-md-10 { max-width: 10%; } - [layout="column"] > [flex-md="10"] { + .layout-column > .flex-md-10 { max-height: 10%; } - [flex-md="15"] { + .flex-md-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-md="15"] { + .layout-row > .flex-md-15 { max-width: 15%; } - [layout="column"] > [flex-md="15"] { + .layout-column > .flex-md-15 { max-height: 15%; } - [flex-md="20"] { + .flex-md-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-md="20"] { + .layout-row > .flex-md-20 { max-width: 20%; } - [layout="column"] > [flex-md="20"] { + .layout-column > .flex-md-20 { max-height: 20%; } - [flex-md="25"] { + .flex-md-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-md="25"] { + .layout-row > .flex-md-25 { max-width: 25%; } - [layout="column"] > [flex-md="25"] { + .layout-column > .flex-md-25 { max-height: 25%; } - [flex-md="30"] { + .flex-md-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-md="30"] { + .layout-row > .flex-md-30 { max-width: 30%; } - [layout="column"] > [flex-md="30"] { + .layout-column > .flex-md-30 { max-height: 30%; } - [flex-md="35"] { + .flex-md-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-md="35"] { + .layout-row > .flex-md-35 { max-width: 35%; } - [layout="column"] > [flex-md="35"] { + .layout-column > .flex-md-35 { max-height: 35%; } - [flex-md="40"] { + .flex-md-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-md="40"] { + .layout-row > .flex-md-40 { max-width: 40%; } - [layout="column"] > [flex-md="40"] { + .layout-column > .flex-md-40 { max-height: 40%; } - [flex-md="45"] { + .flex-md-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-md="45"] { + .layout-row > .flex-md-45 { max-width: 45%; } - [layout="column"] > [flex-md="45"] { + .layout-column > .flex-md-45 { max-height: 45%; } - [flex-md="50"] { + .flex-md-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-md="50"] { + .layout-row > .flex-md-50 { max-width: 50%; } - [layout="column"] > [flex-md="50"] { + .layout-column > .flex-md-50 { max-height: 50%; } - [flex-md="55"] { + .flex-md-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-md="55"] { + .layout-row > .flex-md-55 { max-width: 55%; } - [layout="column"] > [flex-md="55"] { + .layout-column > .flex-md-55 { max-height: 55%; } - [flex-md="60"] { + .flex-md-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-md="60"] { + .layout-row > .flex-md-60 { max-width: 60%; } - [layout="column"] > [flex-md="60"] { + .layout-column > .flex-md-60 { max-height: 60%; } - [flex-md="65"] { + .flex-md-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-md="65"] { + .layout-row > .flex-md-65 { max-width: 65%; } - [layout="column"] > [flex-md="65"] { + .layout-column > .flex-md-65 { max-height: 65%; } - [flex-md="70"] { + .flex-md-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-md="70"] { + .layout-row > .flex-md-70 { max-width: 70%; } - [layout="column"] > [flex-md="70"] { + .layout-column > .flex-md-70 { max-height: 70%; } - [flex-md="75"] { + .flex-md-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-md="75"] { + .layout-row > .flex-md-75 { max-width: 75%; } - [layout="column"] > [flex-md="75"] { + .layout-column > .flex-md-75 { max-height: 75%; } - [flex-md="80"] { + .flex-md-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-md="80"] { + .layout-row > .flex-md-80 { max-width: 80%; } - [layout="column"] > [flex-md="80"] { + .layout-column > .flex-md-80 { max-height: 80%; } - [flex-md="85"] { + .flex-md-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-md="85"] { + .layout-row > .flex-md-85 { max-width: 85%; } - [layout="column"] > [flex-md="85"] { + .layout-column > .flex-md-85 { max-height: 85%; } - [flex-md="90"] { + .flex-md-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-md="90"] { + .layout-row > .flex-md-90 { max-width: 90%; } - [layout="column"] > [flex-md="90"] { + .layout-column > .flex-md-90 { max-height: 90%; } - [flex-md="95"] { + .flex-md-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-md="95"] { + .layout-row > .flex-md-95 { max-width: 95%; } - [layout="column"] > [flex-md="95"] { + .layout-column > .flex-md-95 { max-height: 95%; } - [flex-md="100"] { + .flex-md-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-md="100"] { + .layout-row > .flex-md-100 { max-width: 100%; } - [layout="column"] > [flex-md="100"] { + .layout-column > .flex-md-100 { max-height: 100%; } - [flex-md="33"], [flex-md="34"] { + .flex-md-33, .flex-md-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-md="66"], [flex-md="67"] { + .flex-md-66, .flex-md-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-md="33"], [layout="row"] > [flex-md="34"] { + .layout-row > .flex-md-33, .layout-row > .flex-md-34 { max-width: 33.33%; } - [layout="row"] > [flex-md="66"], [layout="row"] > [flex-md="67"] { + .layout-row > .flex-md-66, .layout-row > .flex-md-67 { max-width: 66.66%; } - [layout="column"] > [flex-md="33"], [layout="column"] > [flex-md="34"] { + .layout-column > .flex-md-33, .layout-column > .flex-md-34 { max-height: 33.33%; } - [layout="column"] > [flex-md="66"], [layout="column"] > [flex-md="67"] { + .layout-column > .flex-md-66, .layout-column > .flex-md-67 { max-height: 66.66%; } } @media (min-width: 1025px) { - [flex-order-gt-md="0"] { + .flex-order-gt-md-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-md="1"] { + .flex-order-gt-md-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-md="2"] { + .flex-order-gt-md-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-md="3"] { + .flex-order-gt-md-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-md="4"] { + .flex-order-gt-md-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-md="5"] { + .flex-order-gt-md-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-md="6"] { + .flex-order-gt-md-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-md="7"] { + .flex-order-gt-md-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-md="8"] { + .flex-order-gt-md-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-md="9"] { + .flex-order-gt-md-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-md="center"], [layout-align-gt-md="center center"], - [layout-align-gt-md="center start"], - [layout-align-gt-md="center end"] { + .layout-align-gt-md-center, .layout-align-gt-md-center-center, + .layout-align-gt-md-center-start, + .layout-align-gt-md-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-md="end"], [layout-align-gt-md="end center"], - [layout-align-gt-md="end start"], - [layout-align-gt-md="end end"] { + .layout-align-gt-md-end, .layout-align-gt-md-end-center, + .layout-align-gt-md-end-start, + .layout-align-gt-md-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-md="space-around"], [layout-align-gt-md="space-around center"], - [layout-align-gt-md="space-around start"], - [layout-align-gt-md="space-around end"] { + .layout-align-gt-md-space-around, .layout-align-gt-md-space-around-center, + .layout-align-gt-md-space-around-start, + .layout-align-gt-md-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-md="space-between"], [layout-align-gt-md="space-between center"], - [layout-align-gt-md="space-between start"], - [layout-align-gt-md="space-between end"] { + .layout-align-gt-md-space-between, .layout-align-gt-md-space-between-center, + .layout-align-gt-md-space-between-start, + .layout-align-gt-md-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-md="center center"], - [layout-align-gt-md="start center"], - [layout-align-gt-md="end center"], - [layout-align-gt-md="space-between center"], - [layout-align-gt-md="space-around center"] { + .layout-align-gt-md-center-center, + .layout-align-gt-md-start-center, + .layout-align-gt-md-end-center, + .layout-align-gt-md-space-between-center, + .layout-align-gt-md-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-md="center start"], - [layout-align-gt-md="start start"], - [layout-align-gt-md="end start"], - [layout-align-gt-md="space-between start"], - [layout-align-gt-md="space-around start"] { + .layout-align-gt-md-center-start, + .layout-align-gt-md-start-start, + .layout-align-gt-md-end-start, + .layout-align-gt-md-space-between-start, + .layout-align-gt-md-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-md="center end"], - [layout-align-gt-md="start end"], - [layout-align-gt-md="end end"], - [layout-align-gt-md="space-between end"], - [layout-align-gt-md="space-around end"] { + .layout-align-gt-md-center-end, + .layout-align-gt-md-start-end, + .layout-align-gt-md-end-end, + .layout-align-gt-md-space-between-end, + .layout-align-gt-md-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-md] { + .layout-gt-md { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-md=column] { + .layout-gt-md-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-md=row] { + .layout-gt-md-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-gt-md] { + .flex-gt-md { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-md="0"] { + .flex-gt-md-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-md="0"] { + .layout-row > .flex-gt-md-0 { max-width: 0%; } - [layout="column"] > [flex-gt-md="0"] { + .layout-column > .flex-gt-md-0 { max-height: 0%; } - [flex-gt-md="5"] { + .flex-gt-md-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-md="5"] { + .layout-row > .flex-gt-md-5 { max-width: 5%; } - [layout="column"] > [flex-gt-md="5"] { + .layout-column > .flex-gt-md-5 { max-height: 5%; } - [flex-gt-md="10"] { + .flex-gt-md-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-md="10"] { + .layout-row > .flex-gt-md-10 { max-width: 10%; } - [layout="column"] > [flex-gt-md="10"] { + .layout-column > .flex-gt-md-10 { max-height: 10%; } - [flex-gt-md="15"] { + .flex-gt-md-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-md="15"] { + .layout-row > .flex-gt-md-15 { max-width: 15%; } - [layout="column"] > [flex-gt-md="15"] { + .layout-column > .flex-gt-md-15 { max-height: 15%; } - [flex-gt-md="20"] { + .flex-gt-md-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-md="20"] { + .layout-row > .flex-gt-md-20 { max-width: 20%; } - [layout="column"] > [flex-gt-md="20"] { + .layout-column > .flex-gt-md-20 { max-height: 20%; } - [flex-gt-md="25"] { + .flex-gt-md-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-md="25"] { + .layout-row > .flex-gt-md-25 { max-width: 25%; } - [layout="column"] > [flex-gt-md="25"] { + .layout-column > .flex-gt-md-25 { max-height: 25%; } - [flex-gt-md="30"] { + .flex-gt-md-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-md="30"] { + .layout-row > .flex-gt-md-30 { max-width: 30%; } - [layout="column"] > [flex-gt-md="30"] { + .layout-column > .flex-gt-md-30 { max-height: 30%; } - [flex-gt-md="35"] { + .flex-gt-md-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-md="35"] { + .layout-row > .flex-gt-md-35 { max-width: 35%; } - [layout="column"] > [flex-gt-md="35"] { + .layout-column > .flex-gt-md-35 { max-height: 35%; } - [flex-gt-md="40"] { + .flex-gt-md-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-md="40"] { + .layout-row > .flex-gt-md-40 { max-width: 40%; } - [layout="column"] > [flex-gt-md="40"] { + .layout-column > .flex-gt-md-40 { max-height: 40%; } - [flex-gt-md="45"] { + .flex-gt-md-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-md="45"] { + .layout-row > .flex-gt-md-45 { max-width: 45%; } - [layout="column"] > [flex-gt-md="45"] { + .layout-column > .flex-gt-md-45 { max-height: 45%; } - [flex-gt-md="50"] { + .flex-gt-md-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-md="50"] { + .layout-row > .flex-gt-md-50 { max-width: 50%; } - [layout="column"] > [flex-gt-md="50"] { + .layout-column > .flex-gt-md-50 { max-height: 50%; } - [flex-gt-md="55"] { + .flex-gt-md-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-md="55"] { + .layout-row > .flex-gt-md-55 { max-width: 55%; } - [layout="column"] > [flex-gt-md="55"] { + .layout-column > .flex-gt-md-55 { max-height: 55%; } - [flex-gt-md="60"] { + .flex-gt-md-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-md="60"] { + .layout-row > .flex-gt-md-60 { max-width: 60%; } - [layout="column"] > [flex-gt-md="60"] { + .layout-column > .flex-gt-md-60 { max-height: 60%; } - [flex-gt-md="65"] { + .flex-gt-md-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-md="65"] { + .layout-row > .flex-gt-md-65 { max-width: 65%; } - [layout="column"] > [flex-gt-md="65"] { + .layout-column > .flex-gt-md-65 { max-height: 65%; } - [flex-gt-md="70"] { + .flex-gt-md-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-md="70"] { + .layout-row > .flex-gt-md-70 { max-width: 70%; } - [layout="column"] > [flex-gt-md="70"] { + .layout-column > .flex-gt-md-70 { max-height: 70%; } - [flex-gt-md="75"] { + .flex-gt-md-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-md="75"] { + .layout-row > .flex-gt-md-75 { max-width: 75%; } - [layout="column"] > [flex-gt-md="75"] { + .layout-column > .flex-gt-md-75 { max-height: 75%; } - [flex-gt-md="80"] { + .flex-gt-md-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-md="80"] { + .layout-row > .flex-gt-md-80 { max-width: 80%; } - [layout="column"] > [flex-gt-md="80"] { + .layout-column > .flex-gt-md-80 { max-height: 80%; } - [flex-gt-md="85"] { + .flex-gt-md-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-md="85"] { + .layout-row > .flex-gt-md-85 { max-width: 85%; } - [layout="column"] > [flex-gt-md="85"] { + .layout-column > .flex-gt-md-85 { max-height: 85%; } - [flex-gt-md="90"] { + .flex-gt-md-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-md="90"] { + .layout-row > .flex-gt-md-90 { max-width: 90%; } - [layout="column"] > [flex-gt-md="90"] { + .layout-column > .flex-gt-md-90 { max-height: 90%; } - [flex-gt-md="95"] { + .flex-gt-md-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-md="95"] { + .layout-row > .flex-gt-md-95 { max-width: 95%; } - [layout="column"] > [flex-gt-md="95"] { + .layout-column > .flex-gt-md-95 { max-height: 95%; } - [flex-gt-md="100"] { + .flex-gt-md-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-md="100"] { + .layout-row > .flex-gt-md-100 { max-width: 100%; } - [layout="column"] > [flex-gt-md="100"] { + .layout-column > .flex-gt-md-100 { max-height: 100%; } - [flex-gt-md="33"], [flex-gt-md="34"] { + .flex-gt-md-33, .flex-gt-md-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-md="66"], [flex-gt-md="67"] { + .flex-gt-md-66, .flex-gt-md-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-md="33"], [layout="row"] > [flex-gt-md="34"] { + .layout-row > .flex-gt-md-33, .layout-row > .flex-gt-md-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-md="66"], [layout="row"] > [flex-gt-md="67"] { + .layout-row > .flex-gt-md-66, .layout-row > .flex-gt-md-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-md="33"], [layout="column"] > [flex-gt-md="34"] { + .layout-column > .flex-gt-md-33, .layout-column > .flex-gt-md-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-md="66"], [layout="column"] > [flex-gt-md="67"] { + .layout-column > .flex-gt-md-66, .layout-column > .flex-gt-md-67 { max-height: 66.66%; } - [flex-order-lg="0"] { + .flex-order-lg-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-lg="1"] { + .flex-order-lg-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-lg="2"] { + .flex-order-lg-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-lg="3"] { + .flex-order-lg-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-lg="4"] { + .flex-order-lg-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-lg="5"] { + .flex-order-lg-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-lg="6"] { + .flex-order-lg-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-lg="7"] { + .flex-order-lg-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-lg="8"] { + .flex-order-lg-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-lg="9"] { + .flex-order-lg-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-lg="center"], [layout-align-lg="center center"], - [layout-align-lg="center start"], - [layout-align-lg="center end"] { + .layout-align-lg-center, .layout-align-lg-center-center, + .layout-align-lg-center-start, + .layout-align-lg-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-lg="end"], [layout-align-lg="end center"], - [layout-align-lg="end start"], - [layout-align-lg="end end"] { + .layout-align-lg-end, .layout-align-lg-end-center, + .layout-align-lg-end-start, + .layout-align-lg-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-lg="space-around"], [layout-align-lg="space-around center"], - [layout-align-lg="space-around start"], - [layout-align-lg="space-around end"] { + .layout-align-lg-space-around, .layout-align-lg-space-around-center, + .layout-align-lg-space-around-start, + .layout-align-lg-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-lg="space-between"], [layout-align-lg="space-between center"], - [layout-align-lg="space-between start"], - [layout-align-lg="space-between end"] { + .layout-align-lg-space-between, .layout-align-lg-space-between-center, + .layout-align-lg-space-between-start, + .layout-align-lg-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-lg="center center"], - [layout-align-lg="start center"], - [layout-align-lg="end center"], - [layout-align-lg="space-between center"], - [layout-align-lg="space-around center"] { + .layout-align-lg-center-center, + .layout-align-lg-start-center, + .layout-align-lg-end-center, + .layout-align-lg-space-between-center, + .layout-align-lg-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-lg="center start"], - [layout-align-lg="start start"], - [layout-align-lg="end start"], - [layout-align-lg="space-between start"], - [layout-align-lg="space-around start"] { + .layout-align-lg-center-start, + .layout-align-lg-start-start, + .layout-align-lg-end-start, + .layout-align-lg-space-between-start, + .layout-align-lg-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-lg="center end"], - [layout-align-lg="start end"], - [layout-align-lg="end end"], - [layout-align-lg="space-between end"], - [layout-align-lg="space-around end"] { + .layout-align-lg-center-end, + .layout-align-lg-start-end, + .layout-align-lg-end-end, + .layout-align-lg-space-between-end, + .layout-align-lg-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-lg] { + .layout-lg { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-lg=column] { + .layout-lg-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-lg=row] { + .layout-lg-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-lg] { + .flex-lg { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-lg="0"] { + .flex-lg-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-lg="0"] { + .layout-row > .flex-lg-0 { max-width: 0%; } - [layout="column"] > [flex-lg="0"] { + .layout-column > .flex-lg-0 { max-height: 0%; } - [flex-lg="5"] { + .flex-lg-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-lg="5"] { + .layout-row > .flex-lg-5 { max-width: 5%; } - [layout="column"] > [flex-lg="5"] { + .layout-column > .flex-lg-5 { max-height: 5%; } - [flex-lg="10"] { + .flex-lg-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-lg="10"] { + .layout-row > .flex-lg-10 { max-width: 10%; } - [layout="column"] > [flex-lg="10"] { + .layout-column > .flex-lg-10 { max-height: 10%; } - [flex-lg="15"] { + .flex-lg-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-lg="15"] { + .layout-row > .flex-lg-15 { max-width: 15%; } - [layout="column"] > [flex-lg="15"] { + .layout-column > .flex-lg-15 { max-height: 15%; } - [flex-lg="20"] { + .flex-lg-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-lg="20"] { + .layout-row > .flex-lg-20 { max-width: 20%; } - [layout="column"] > [flex-lg="20"] { + .layout-column > .flex-lg-20 { max-height: 20%; } - [flex-lg="25"] { + .flex-lg-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-lg="25"] { + .layout-row > .flex-lg-25 { max-width: 25%; } - [layout="column"] > [flex-lg="25"] { + .layout-column > .flex-lg-25 { max-height: 25%; } - [flex-lg="30"] { + .flex-lg-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-lg="30"] { + .layout-row > .flex-lg-30 { max-width: 30%; } - [layout="column"] > [flex-lg="30"] { + .layout-column > .flex-lg-30 { max-height: 30%; } - [flex-lg="35"] { + .flex-lg-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-lg="35"] { + .layout-row > .flex-lg-35 { max-width: 35%; } - [layout="column"] > [flex-lg="35"] { + .layout-column > .flex-lg-35 { max-height: 35%; } - [flex-lg="40"] { + .flex-lg-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-lg="40"] { + .layout-row > .flex-lg-40 { max-width: 40%; } - [layout="column"] > [flex-lg="40"] { + .layout-column > .flex-lg-40 { max-height: 40%; } - [flex-lg="45"] { + .flex-lg-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-lg="45"] { + .layout-row > .flex-lg-45 { max-width: 45%; } - [layout="column"] > [flex-lg="45"] { + .layout-column > .flex-lg-45 { max-height: 45%; } - [flex-lg="50"] { + .flex-lg-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-lg="50"] { + .layout-row > .flex-lg-50 { max-width: 50%; } - [layout="column"] > [flex-lg="50"] { + .layout-column > .flex-lg-50 { max-height: 50%; } - [flex-lg="55"] { + .flex-lg-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-lg="55"] { + .layout-row > .flex-lg-55 { max-width: 55%; } - [layout="column"] > [flex-lg="55"] { + .layout-column > .flex-lg-55 { max-height: 55%; } - [flex-lg="60"] { + .flex-lg-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-lg="60"] { + .layout-row > .flex-lg-60 { max-width: 60%; } - [layout="column"] > [flex-lg="60"] { + .layout-column > .flex-lg-60 { max-height: 60%; } - [flex-lg="65"] { + .flex-lg-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-lg="65"] { + .layout-row > .flex-lg-65 { max-width: 65%; } - [layout="column"] > [flex-lg="65"] { + .layout-column > .flex-lg-65 { max-height: 65%; } - [flex-lg="70"] { + .flex-lg-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-lg="70"] { + .layout-row > .flex-lg-70 { max-width: 70%; } - [layout="column"] > [flex-lg="70"] { + .layout-column > .flex-lg-70 { max-height: 70%; } - [flex-lg="75"] { + .flex-lg-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-lg="75"] { + .layout-row > .flex-lg-75 { max-width: 75%; } - [layout="column"] > [flex-lg="75"] { + .layout-column > .flex-lg-75 { max-height: 75%; } - [flex-lg="80"] { + .flex-lg-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-lg="80"] { + .layout-row > .flex-lg-80 { max-width: 80%; } - [layout="column"] > [flex-lg="80"] { + .layout-column > .flex-lg-80 { max-height: 80%; } - [flex-lg="85"] { + .flex-lg-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-lg="85"] { + .layout-row > .flex-lg-85 { max-width: 85%; } - [layout="column"] > [flex-lg="85"] { + .layout-column > .flex-lg-85 { max-height: 85%; } - [flex-lg="90"] { + .flex-lg-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-lg="90"] { + .layout-row > .flex-lg-90 { max-width: 90%; } - [layout="column"] > [flex-lg="90"] { + .layout-column > .flex-lg-90 { max-height: 90%; } - [flex-lg="95"] { + .flex-lg-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-lg="95"] { + .layout-row > .flex-lg-95 { max-width: 95%; } - [layout="column"] > [flex-lg="95"] { + .layout-column > .flex-lg-95 { max-height: 95%; } - [flex-lg="100"] { + .flex-lg-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-lg="100"] { + .layout-row > .flex-lg-100 { max-width: 100%; } - [layout="column"] > [flex-lg="100"] { + .layout-column > .flex-lg-100 { max-height: 100%; } - [flex-lg="33"], [flex-lg="34"] { + .flex-lg-33, .flex-lg-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-lg="66"], [flex-lg="67"] { + .flex-lg-66, .flex-lg-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-lg="33"], [layout="row"] > [flex-lg="34"] { + .layout-row > .flex-lg-33, .layout-row > .flex-lg-34 { max-width: 33.33%; } - [layout="row"] > [flex-lg="66"], [layout="row"] > [flex-lg="67"] { + .layout-row > .flex-lg-66, .layout-row > .flex-lg-67 { max-width: 66.66%; } - [layout="column"] > [flex-lg="33"], [layout="column"] > [flex-lg="34"] { + .layout-column > .flex-lg-33, .layout-column > .flex-lg-34 { max-height: 33.33%; } - [layout="column"] > [flex-lg="66"], [layout="column"] > [flex-lg="67"] { + .layout-column > .flex-lg-66, .layout-column > .flex-lg-67 { max-height: 66.66%; } } @media (min-width: 1025px) { @@ -5049,341 +5033,341 @@ html * { @media (min-width: 1281px) { .hide-gt-sm:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide-gt-md:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide-gt-lg:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show), .hide:not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show) { display: none; } - [flex-order-gt-lg="0"] { + .flex-order-gt-lg-0 { -webkit-box-ordinal-group: 1; -webkit-order: 0; -ms-flex-order: 0; order: 0; } - [flex-order-gt-lg="1"] { + .flex-order-gt-lg-1 { -webkit-box-ordinal-group: 2; -webkit-order: 1; -ms-flex-order: 1; order: 1; } - [flex-order-gt-lg="2"] { + .flex-order-gt-lg-2 { -webkit-box-ordinal-group: 3; -webkit-order: 2; -ms-flex-order: 2; order: 2; } - [flex-order-gt-lg="3"] { + .flex-order-gt-lg-3 { -webkit-box-ordinal-group: 4; -webkit-order: 3; -ms-flex-order: 3; order: 3; } - [flex-order-gt-lg="4"] { + .flex-order-gt-lg-4 { -webkit-box-ordinal-group: 5; -webkit-order: 4; -ms-flex-order: 4; order: 4; } - [flex-order-gt-lg="5"] { + .flex-order-gt-lg-5 { -webkit-box-ordinal-group: 6; -webkit-order: 5; -ms-flex-order: 5; order: 5; } - [flex-order-gt-lg="6"] { + .flex-order-gt-lg-6 { -webkit-box-ordinal-group: 7; -webkit-order: 6; -ms-flex-order: 6; order: 6; } - [flex-order-gt-lg="7"] { + .flex-order-gt-lg-7 { -webkit-box-ordinal-group: 8; -webkit-order: 7; -ms-flex-order: 7; order: 7; } - [flex-order-gt-lg="8"] { + .flex-order-gt-lg-8 { -webkit-box-ordinal-group: 9; -webkit-order: 8; -ms-flex-order: 8; order: 8; } - [flex-order-gt-lg="9"] { + .flex-order-gt-lg-9 { -webkit-box-ordinal-group: 10; -webkit-order: 9; -ms-flex-order: 9; order: 9; } - [layout-align-gt-lg="center"], [layout-align-gt-lg="center center"], - [layout-align-gt-lg="center start"], - [layout-align-gt-lg="center end"] { + .layout-align-gt-lg-center, .layout-align-gt-lg-center-center, + .layout-align-gt-lg-center-start, + .layout-align-gt-lg-center-end { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } - [layout-align-gt-lg="end"], [layout-align-gt-lg="end center"], - [layout-align-gt-lg="end start"], - [layout-align-gt-lg="end end"] { + .layout-align-gt-lg-end, .layout-align-gt-lg-end-center, + .layout-align-gt-lg-end-start, + .layout-align-gt-lg-end-end { -webkit-box-pack: end; -webkit-justify-content: flex-end; -ms-flex-pack: end; justify-content: flex-end; } - [layout-align-gt-lg="space-around"], [layout-align-gt-lg="space-around center"], - [layout-align-gt-lg="space-around start"], - [layout-align-gt-lg="space-around end"] { + .layout-align-gt-lg-space-around, .layout-align-gt-lg-space-around-center, + .layout-align-gt-lg-space-around-start, + .layout-align-gt-lg-space-around-end { -webkit-justify-content: space-around; -ms-flex-pack: distribute; justify-content: space-around; } - [layout-align-gt-lg="space-between"], [layout-align-gt-lg="space-between center"], - [layout-align-gt-lg="space-between start"], - [layout-align-gt-lg="space-between end"] { + .layout-align-gt-lg-space-between, .layout-align-gt-lg-space-between-center, + .layout-align-gt-lg-space-between-start, + .layout-align-gt-lg-space-between-end { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } - [layout-align-gt-lg="center center"], - [layout-align-gt-lg="start center"], - [layout-align-gt-lg="end center"], - [layout-align-gt-lg="space-between center"], - [layout-align-gt-lg="space-around center"] { + .layout-align-gt-lg-center-center, + .layout-align-gt-lg-start-center, + .layout-align-gt-lg-end-center, + .layout-align-gt-lg-space-between-center, + .layout-align-gt-lg-space-around-center { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } - [layout-align-gt-lg="center start"], - [layout-align-gt-lg="start start"], - [layout-align-gt-lg="end start"], - [layout-align-gt-lg="space-between start"], - [layout-align-gt-lg="space-around start"] { + .layout-align-gt-lg-center-start, + .layout-align-gt-lg-start-start, + .layout-align-gt-lg-end-start, + .layout-align-gt-lg-space-between-start, + .layout-align-gt-lg-space-around-start { -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; } - [layout-align-gt-lg="center end"], - [layout-align-gt-lg="start end"], - [layout-align-gt-lg="end end"], - [layout-align-gt-lg="space-between end"], - [layout-align-gt-lg="space-around end"] { + .layout-align-gt-lg-center-end, + .layout-align-gt-lg-start-end, + .layout-align-gt-lg-end-end, + .layout-align-gt-lg-space-between-end, + .layout-align-gt-lg-space-around-end { -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; } - [layout-gt-lg] { + .layout-gt-lg { box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; } - [layout-gt-lg=column] { + .layout-gt-lg-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } - [layout-gt-lg=row] { + .layout-gt-lg-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } - [flex-gt-lg] { + .flex-gt-lg { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } - [flex-gt-lg="0"] { + .flex-gt-lg-0 { -webkit-box-flex: 0; -webkit-flex: 0 0 0%; -ms-flex: 0 0 0%; flex: 0 0 0%; } - [layout="row"] > [flex-gt-lg="0"] { + .layout-row > .flex-gt-lg-0 { max-width: 0%; } - [layout="column"] > [flex-gt-lg="0"] { + .layout-column > .flex-gt-lg-0 { max-height: 0%; } - [flex-gt-lg="5"] { + .flex-gt-lg-5 { -webkit-box-flex: 0; -webkit-flex: 0 0 5%; -ms-flex: 0 0 5%; flex: 0 0 5%; } - [layout="row"] > [flex-gt-lg="5"] { + .layout-row > .flex-gt-lg-5 { max-width: 5%; } - [layout="column"] > [flex-gt-lg="5"] { + .layout-column > .flex-gt-lg-5 { max-height: 5%; } - [flex-gt-lg="10"] { + .flex-gt-lg-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; } - [layout="row"] > [flex-gt-lg="10"] { + .layout-row > .flex-gt-lg-10 { max-width: 10%; } - [layout="column"] > [flex-gt-lg="10"] { + .layout-column > .flex-gt-lg-10 { max-height: 10%; } - [flex-gt-lg="15"] { + .flex-gt-lg-15 { -webkit-box-flex: 0; -webkit-flex: 0 0 15%; -ms-flex: 0 0 15%; flex: 0 0 15%; } - [layout="row"] > [flex-gt-lg="15"] { + .layout-row > .flex-gt-lg-15 { max-width: 15%; } - [layout="column"] > [flex-gt-lg="15"] { + .layout-column > .flex-gt-lg-15 { max-height: 15%; } - [flex-gt-lg="20"] { + .flex-gt-lg-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; } - [layout="row"] > [flex-gt-lg="20"] { + .layout-row > .flex-gt-lg-20 { max-width: 20%; } - [layout="column"] > [flex-gt-lg="20"] { + .layout-column > .flex-gt-lg-20 { max-height: 20%; } - [flex-gt-lg="25"] { + .flex-gt-lg-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; } - [layout="row"] > [flex-gt-lg="25"] { + .layout-row > .flex-gt-lg-25 { max-width: 25%; } - [layout="column"] > [flex-gt-lg="25"] { + .layout-column > .flex-gt-lg-25 { max-height: 25%; } - [flex-gt-lg="30"] { + .flex-gt-lg-30 { -webkit-box-flex: 0; -webkit-flex: 0 0 30%; -ms-flex: 0 0 30%; flex: 0 0 30%; } - [layout="row"] > [flex-gt-lg="30"] { + .layout-row > .flex-gt-lg-30 { max-width: 30%; } - [layout="column"] > [flex-gt-lg="30"] { + .layout-column > .flex-gt-lg-30 { max-height: 30%; } - [flex-gt-lg="35"] { + .flex-gt-lg-35 { -webkit-box-flex: 0; -webkit-flex: 0 0 35%; -ms-flex: 0 0 35%; flex: 0 0 35%; } - [layout="row"] > [flex-gt-lg="35"] { + .layout-row > .flex-gt-lg-35 { max-width: 35%; } - [layout="column"] > [flex-gt-lg="35"] { + .layout-column > .flex-gt-lg-35 { max-height: 35%; } - [flex-gt-lg="40"] { + .flex-gt-lg-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; } - [layout="row"] > [flex-gt-lg="40"] { + .layout-row > .flex-gt-lg-40 { max-width: 40%; } - [layout="column"] > [flex-gt-lg="40"] { + .layout-column > .flex-gt-lg-40 { max-height: 40%; } - [flex-gt-lg="45"] { + .flex-gt-lg-45 { -webkit-box-flex: 0; -webkit-flex: 0 0 45%; -ms-flex: 0 0 45%; flex: 0 0 45%; } - [layout="row"] > [flex-gt-lg="45"] { + .layout-row > .flex-gt-lg-45 { max-width: 45%; } - [layout="column"] > [flex-gt-lg="45"] { + .layout-column > .flex-gt-lg-45 { max-height: 45%; } - [flex-gt-lg="50"] { + .flex-gt-lg-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; } - [layout="row"] > [flex-gt-lg="50"] { + .layout-row > .flex-gt-lg-50 { max-width: 50%; } - [layout="column"] > [flex-gt-lg="50"] { + .layout-column > .flex-gt-lg-50 { max-height: 50%; } - [flex-gt-lg="55"] { + .flex-gt-lg-55 { -webkit-box-flex: 0; -webkit-flex: 0 0 55%; -ms-flex: 0 0 55%; flex: 0 0 55%; } - [layout="row"] > [flex-gt-lg="55"] { + .layout-row > .flex-gt-lg-55 { max-width: 55%; } - [layout="column"] > [flex-gt-lg="55"] { + .layout-column > .flex-gt-lg-55 { max-height: 55%; } - [flex-gt-lg="60"] { + .flex-gt-lg-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; } - [layout="row"] > [flex-gt-lg="60"] { + .layout-row > .flex-gt-lg-60 { max-width: 60%; } - [layout="column"] > [flex-gt-lg="60"] { + .layout-column > .flex-gt-lg-60 { max-height: 60%; } - [flex-gt-lg="65"] { + .flex-gt-lg-65 { -webkit-box-flex: 0; -webkit-flex: 0 0 65%; -ms-flex: 0 0 65%; flex: 0 0 65%; } - [layout="row"] > [flex-gt-lg="65"] { + .layout-row > .flex-gt-lg-65 { max-width: 65%; } - [layout="column"] > [flex-gt-lg="65"] { + .layout-column > .flex-gt-lg-65 { max-height: 65%; } - [flex-gt-lg="70"] { + .flex-gt-lg-70 { -webkit-box-flex: 0; -webkit-flex: 0 0 70%; -ms-flex: 0 0 70%; flex: 0 0 70%; } - [layout="row"] > [flex-gt-lg="70"] { + .layout-row > .flex-gt-lg-70 { max-width: 70%; } - [layout="column"] > [flex-gt-lg="70"] { + .layout-column > .flex-gt-lg-70 { max-height: 70%; } - [flex-gt-lg="75"] { + .flex-gt-lg-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; } - [layout="row"] > [flex-gt-lg="75"] { + .layout-row > .flex-gt-lg-75 { max-width: 75%; } - [layout="column"] > [flex-gt-lg="75"] { + .layout-column > .flex-gt-lg-75 { max-height: 75%; } - [flex-gt-lg="80"] { + .flex-gt-lg-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; } - [layout="row"] > [flex-gt-lg="80"] { + .layout-row > .flex-gt-lg-80 { max-width: 80%; } - [layout="column"] > [flex-gt-lg="80"] { + .layout-column > .flex-gt-lg-80 { max-height: 80%; } - [flex-gt-lg="85"] { + .flex-gt-lg-85 { -webkit-box-flex: 0; -webkit-flex: 0 0 85%; -ms-flex: 0 0 85%; flex: 0 0 85%; } - [layout="row"] > [flex-gt-lg="85"] { + .layout-row > .flex-gt-lg-85 { max-width: 85%; } - [layout="column"] > [flex-gt-lg="85"] { + .layout-column > .flex-gt-lg-85 { max-height: 85%; } - [flex-gt-lg="90"] { + .flex-gt-lg-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; } - [layout="row"] > [flex-gt-lg="90"] { + .layout-row > .flex-gt-lg-90 { max-width: 90%; } - [layout="column"] > [flex-gt-lg="90"] { + .layout-column > .flex-gt-lg-90 { max-height: 90%; } - [flex-gt-lg="95"] { + .flex-gt-lg-95 { -webkit-box-flex: 0; -webkit-flex: 0 0 95%; -ms-flex: 0 0 95%; flex: 0 0 95%; } - [layout="row"] > [flex-gt-lg="95"] { + .layout-row > .flex-gt-lg-95 { max-width: 95%; } - [layout="column"] > [flex-gt-lg="95"] { + .layout-column > .flex-gt-lg-95 { max-height: 95%; } - [flex-gt-lg="100"] { + .flex-gt-lg-100 { -webkit-box-flex: 0; -webkit-flex: 0 0 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } - [layout="row"] > [flex-gt-lg="100"] { + .layout-row > .flex-gt-lg-100 { max-width: 100%; } - [layout="column"] > [flex-gt-lg="100"] { + .layout-column > .flex-gt-lg-100 { max-height: 100%; } - [flex-gt-lg="33"], [flex-gt-lg="34"] { + .flex-gt-lg-33, .flex-gt-lg-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.33%; -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; } - [flex-gt-lg="66"], [flex-gt-lg="67"] { + .flex-gt-lg-66, .flex-gt-lg-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.66%; -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; } - [layout="row"] > [flex-gt-lg="33"], [layout="row"] > [flex-gt-lg="34"] { + .layout-row > .flex-gt-lg-33, .layout-row > .flex-gt-lg-34 { max-width: 33.33%; } - [layout="row"] > [flex-gt-lg="66"], [layout="row"] > [flex-gt-lg="67"] { + .layout-row > .flex-gt-lg-66, .layout-row > .flex-gt-lg-67 { max-width: 66.66%; } - [layout="column"] > [flex-gt-lg="33"], [layout="column"] > [flex-gt-lg="34"] { + .layout-column > .flex-gt-lg-33, .layout-column > .flex-gt-lg-34 { max-height: 33.33%; } - [layout="column"] > [flex-gt-lg="66"], [layout="column"] > [flex-gt-lg="67"] { + .layout-column > .flex-gt-lg-66, .layout-column > .flex-gt-lg-67 { max-height: 66.66%; } } .md-flex { @@ -6099,14 +6083,17 @@ md-autocomplete { md-autocomplete li:focus { color: #fff; } } -.md-autocomplete-suggestions { +.md-virtual-repeat-container.md-autocomplete-suggestions-container { position: absolute; - margin: 0; - list-style: none; - padding: 0; - overflow: auto; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); + height: 225.5px; max-height: 225.5px; z-index: 100; } + +.md-autocomplete-suggestions { + margin: 0; + list-style: none; + padding: 0; } .md-autocomplete-suggestions li { cursor: pointer; font-size: 14px; @@ -6119,18 +6106,6 @@ md-autocomplete { margin: 0; white-space: nowrap; text-overflow: ellipsis; } - .md-autocomplete-suggestions li.ng-enter, - .md-autocomplete-suggestions li.ng-hide-remove { - -webkit-transition: none; - transition: none; - -webkit-animation: md-autocomplete-list-in 0.2s; - animation: md-autocomplete-list-in 0.2s; } - .md-autocomplete-suggestions li.ng-leave, - .md-autocomplete-suggestions li.ng-hide-add { - -webkit-transition: none; - transition: none; - -webkit-animation: md-autocomplete-list-out 0.2s; - animation: md-autocomplete-list-out 0.2s; } .md-autocomplete-suggestions li:focus { outline: none; } @@ -6151,6 +6126,7 @@ md-backdrop { left: 0; right: 0; } md-backdrop.md-menu-backdrop { + position: fixed !important; z-index: 98; } md-backdrop.md-select-backdrop { z-index: 81; @@ -6213,217 +6189,6 @@ md-backdrop { to { opacity: 0; } } -/*! bottomSheet/_extends.scss - */ -md-bottom-sheet { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 8px 16px 88px 16px; - z-index: 70; - border-top-width: 1px; - border-top-style: solid; - -webkit-transform: translate3d(0, 80px, 0); - transform: translate3d(0, 80px, 0); - -webkit-transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); - transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); - -webkit-transition-property: -webkit-transform; - transition-property: transform; } - md-bottom-sheet.md-has-header { - padding-top: 0; } - md-bottom-sheet.ng-enter { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); } - md-bottom-sheet.ng-enter-active { - opacity: 1; - display: block; - -webkit-transform: translate3d(0, 80px, 0) !important; - transform: translate3d(0, 80px, 0) !important; } - md-bottom-sheet.ng-leave-active { - -webkit-transform: translate3d(0, 100%, 0) !important; - transform: translate3d(0, 100%, 0) !important; - -webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); - transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); } - md-bottom-sheet .md-subheader { - background-color: transparent; - font-family: "Fira sans", "Helvetica Neue", sans-serif; - line-height: 56px; - padding: 0; - white-space: nowrap; } - md-bottom-sheet md-inline-icon { - display: inline-block; - height: 24px; - width: 24px; - fill: #444; } - md-bottom-sheet md-list-item { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - outline: none; } - md-bottom-sheet md-list-item:hover { - cursor: pointer; } - md-bottom-sheet.md-list md-list-item { - padding: 0; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - height: 48px; } - md-bottom-sheet.md-list md-list-item div.md-icon-container { - display: inline-block; - height: 24px; - margin-right: 32px; } - md-bottom-sheet.md-grid { - padding-left: 24px; - padding-right: 24px; - padding-top: 0; } - md-bottom-sheet.md-grid md-list { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-transition: all 0.5s; - transition: all 0.5s; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } - md-bottom-sheet.md-grid md-list-item { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-transition: all 0.5s; - transition: all 0.5s; - height: 96px; - margin-top: 8px; - margin-bottom: 8px; - /* Mixin for how many grid items to show per row */ } - @media screen and (max-width: 600px) { - md-bottom-sheet.md-grid md-list-item { - -webkit-box-flex: 1; - -webkit-flex: 1 1 33.3333333333%; - -ms-flex: 1 1 33.3333333333%; - flex: 1 1 33.3333333333%; - max-width: 33.3333333333%; } - md-bottom-sheet.md-grid md-list-item:nth-of-type(3n + 1) { - -webkit-box-align: start; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; } - md-bottom-sheet.md-grid md-list-item:nth-of-type(3n) { - -webkit-box-align: end; - -webkit-align-items: flex-end; - -ms-flex-align: end; - align-items: flex-end; } } - @media screen and (min-width: 600px) and (max-width: 1024px) { - md-bottom-sheet.md-grid md-list-item { - -webkit-box-flex: 1; - -webkit-flex: 1 1 25%; - -ms-flex: 1 1 25%; - flex: 1 1 25%; - max-width: 25%; } } - @media screen and (min-width: 1024px) and (max-width: 1280px) { - md-bottom-sheet.md-grid md-list-item { - -webkit-box-flex: 1; - -webkit-flex: 1 1 16.6666666667%; - -ms-flex: 1 1 16.6666666667%; - flex: 1 1 16.6666666667%; - max-width: 16.6666666667%; } } - @media screen and (min-width: 1280px) { - md-bottom-sheet.md-grid md-list-item { - -webkit-box-flex: 1; - -webkit-flex: 1 1 14.2857142857%; - -ms-flex: 1 1 14.2857142857%; - flex: 1 1 14.2857142857%; - max-width: 14.2857142857%; } } - md-bottom-sheet.md-grid md-list-item .md-list-item-content { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - width: 48px; - padding-bottom: 16px; } - md-bottom-sheet.md-grid md-list-item .md-grid-item-content { - border: 1px solid transparent; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - width: 80px; } - md-bottom-sheet.md-grid md-list-item .md-icon-container { - display: inline-block; - box-sizing: border-box; - height: 48px; - width: 48px; - margin: 0 0; } - md-bottom-sheet.md-grid md-list-item .md-grid-text { - font-weight: 400; - line-height: 16px; - font-size: 13px; - margin: 0; - white-space: nowrap; - width: 64px; - text-align: center; - text-transform: none; - padding-top: 8px; } - -@media screen and (-ms-high-contrast: active) { - md-bottom-sheet { - border: 1px solid #fff; } } - -md-bottom-sheet.md-default-theme { - border: none; - background-color: inherit; - background-blend-mode: multiply; } - -md-bottom-sheet md-list-item md-icon { - margin-right: 32px; - vertical-align: text-bottom; } - -md-bottom-sheet.md-default-theme .md-button.md-default-theme:hover:not([disabled]), -md-bottom-sheet.md-default-theme .md-button.md-default-theme:hover:not([disabled]) md-icon { - background-color: inherit; - background-blend-mode: multiply; - color: #639997; } - -md-bottom-sheet.md-default-theme .md-button.md-default-theme[disabled] { - padding: 6px; - text-transform: uppercase; } - /*! button/_extends.scss - */ .md-button { border-radius: 3px; @@ -6958,7 +6723,7 @@ md-sidenav md-checkbox { /*! chips/_extends.scss - */ .md-contact-chips .md-chips .md-chip { - padding: 0 8px 0 0; } + padding: 0 25px 0 0; } .md-contact-chips .md-chips .md-chip .md-contact-avatar { float: left; } .md-contact-chips .md-chips .md-chip .md-contact-avatar img { @@ -6996,8 +6761,10 @@ md-sidenav md-checkbox { content: ''; display: table; clear: both; } - .md-chips:not('.md-readonly') { + .md-chips:not(.md-readonly) { cursor: text; } + .md-chips:not(.md-readonly) .md-chip { + padding-right: 22px; } .md-chips .md-chip { cursor: default; border-radius: 16px; @@ -7005,10 +6772,11 @@ md-sidenav md-checkbox { height: 32px; line-height: 32px; margin: 8px 8px 0 0; - padding: 0 8px 0 12px; + padding: 0 12px 0 12px; float: left; box-sizing: border-box; - max-width: 100%; } + max-width: 100%; + position: relative; } .md-chips .md-chip .md-chip-content { display: block; padding-right: 4px; @@ -7020,8 +6788,9 @@ md-sidenav md-checkbox { .md-chips .md-chip .md-chip-content:focus { outline: none; } .md-chips .md-chip .md-chip-remove-container { - display: inline-block; - margin-right: -5px; } + position: absolute; + right: 0; + line-height: 22px; } .md-chips .md-chip .md-chip-remove { text-align: center; width: 32px; @@ -7045,7 +6814,7 @@ md-sidenav md-checkbox { display: block; line-height: 32px; margin: 8px 8px 0 0; - padding: 0 8px 0 12px; + padding: 0 12px 0 12px; float: left; } .md-chips .md-chip-input-container input:not([type]), .md-chips .md-chip-input-container input[type="email"], .md-chips .md-chip-input-container input[type="number"], .md-chips .md-chip-input-container input[type="tel"], .md-chips .md-chip-input-container input[type="url"], .md-chips .md-chip-input-container input[type="text"] { border: 0; @@ -7162,16 +6931,19 @@ md-calendar { padding-left: 16px; } .md-calendar-date:last-child { padding-right: 16px; } + .md-calendar-date.md-calendar-date-disabled { + cursor: default; } .md-calendar-date-selection-indicator { -webkit-transition: background-color, color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); transition: background-color, color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); border-radius: 50%; display: inline-block; - cursor: pointer; width: 40px; height: 40px; line-height: 40px; } + .md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator { + cursor: pointer; } .md-calendar-month-label { height: 44px; @@ -8573,8 +8345,7 @@ div.md-tile-left, div.md-tile-left-card:before, div.sg-avatar:before, div.md-til top: 0; z-index: 99; opacity: 0; - border-radius: 2px; - overflow: hidden; } + border-radius: 2px; } .md-open-menu-container md-menu-divider { margin-top: 4px; margin-bottom: 4px; @@ -8621,7 +8392,8 @@ md-menu-content { md-menu-content.md-dense { max-height: 208px; } md-menu-content.md-dense md-menu-item { - height: 32px; } + height: 32px; + min-height: 0px; } md-menu-item { display: -webkit-box; @@ -9475,6 +9247,7 @@ md-sidenav { md-sidenav md-content, .md-sidenav-left md-toolbar, md-sidenav md-toolbar { background-color: inherit; + background-image: url("../img/cardboard-transp.png"); background-blend-mode: multiply; } .md-sidenav-left md-toolbar, md-sidenav md-toolbar { @@ -9820,13 +9593,6 @@ md-slider { transition: 0.2s ease-out margin; } .md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader { margin: 0; } - .md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader:after { - position: absolute; - left: 0; - bottom: 0; - top: 0; - right: -16px; - content: ''; } .md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone { z-index: 2; } .md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state="active"] { @@ -9844,8 +9610,10 @@ md-slider { margin-right: 16px; position: relative; } .md-subheader .md-subheader-inner { + display: block; padding: 16px 0px 16px 16px; } .md-subheader .md-subheader-content { + display: block; z-index: 1; position: relative; } @@ -10425,6 +10193,12 @@ md-toolbar { md-toolbar.md-whiteframe-z1-add, md-toolbar.md-whiteframe-z1-remove { -webkit-transition: box-shadow 0.5s linear; transition: box-shadow 0.5s linear; } + md-toolbar md-toolbar-filler { + width: 72px; } + md-toolbar *, + md-toolbar *:before, + md-toolbar *:after { + box-sizing: border-box; } md-toolbar.md-tall { height: 128px; min-height: 128px; @@ -10437,7 +10211,7 @@ md-toolbar { height: 48px; min-height: 48px; max-height: 48px; } - md-toolbar .md-indent { + md-toolbar > .md-indent { margin-left: 64px; } md-toolbar ~ md-content > md-list { padding: 0; } @@ -10515,6 +10289,7 @@ md-toolbar { md-toolbar { z-index: 10; font-size: 1em !important; + background-image: url("../img/felt-transp.png"); background-blend-mode: luminosity; box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.14), 0px 2px 2px 0px rgba(0, 0, 0, 0.098), 0px 1px 5px 0px rgba(0, 0, 0, 0.084); } @@ -11655,7 +11430,8 @@ textarea.plain-text { .attendees md-list .quarter.event { background-color: #bfe0dd; } -.view[layout=row] { +.view[layout=row], +.view.layout-row { max-height: 100%; } [class|="view"] { @@ -11825,21 +11601,4 @@ main { -webkit-transform: translateY(-10%); -ms-transform: translateY(-10%); transform: translateY(-10%); } - -html.dev.guide::after { - display: block; - position: absolute; - top: 0; - left: 0; - background-image: -webkit-linear-gradient(0deg, rgba(0, 255, 255, 0.1) 0, rgba(0, 255, 255, 0.1) 80%, transparent 80%); - background-image: linear-gradient(90deg, rgba(0, 255, 255, 0.1) 0, rgba(0, 255, 255, 0.1) 80%, transparent 80%); - background-size: 64px 64px; - background-repeat-x: repeat; - width: 100%; - height: 100%; - content: " "; - z-index: 1000; } - -.md-tile-left, .md-tile-left-card:before, .sg-avatar:before, .md-tile-left-list:before, .sg-list-avatar:before, .md-tile-left-selected:before, .sg-selected-avatar:before, .md-tile-left-accepted:before, .sg-accepted:before, .md-tile-left-declined:before, .sg-declined:before, .md-tile-left-delegated:before, .sg-delegated:before, .md-tile-left-needs-action:before, .sg-needs-action:before, .md-tile-left-tentative:before, .sg-tentative:before { - background-color: rgba(224, 255, 255, 0.5); } /*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/UI/WebServerResources/css/styles.css.map b/UI/WebServerResources/css/styles.css.map index 772c5faa5..70f63c92d 100644 --- a/UI/WebServerResources/css/styles.css.map +++ b/UI/WebServerResources/css/styles.css.map @@ -1 +1 @@ -{"version":3,"sources":["../scss/components/_palette.scss","../scss/core/reset.scss","styles.css","../scss/core/angular.scss","../scss/styles.scss","../angular-material/src/core/style/structure.scss","../angular-material/src/core/style/mixins.scss","../scss/core/variables.scss","../scss/core/structure.scss","../angular-material/src/core/style/layout.scss","../scss/core/layout.scss","../bower_components/breakpoint-sass/stylesheets/_breakpoint.scss","../angular-material/src/core/style/typography.scss","../scss/core/typography.scss","../scss/core/_functions.scss","../angular-material/src/components/autocomplete/autocomplete.scss","../scss/components/backdrop/_extends.scss","../angular-material/src/components/backdrop/backdrop.scss","../scss/components/backdrop/backdrop.scss","../scss/components/bottomSheet/_extends.scss","../angular-material/src/components/bottomSheet/bottomSheet.scss","../scss/components/bottomSheet/bottomSheet.scss","../scss/components/button/_extends.scss","../angular-material/src/components/button/button.scss","../scss/components/button/button.scss","../scss/components/card/_extends.scss","../angular-material/src/components/card/card.scss","../scss/components/card/card.scss","../scss/components/checkbox/_extends.scss","../angular-material/src/components/checkbox/checkbox.scss","../scss/components/checkbox/checkbox.scss","../scss/components/chips/_extends.scss","../angular-material/src/components/chips/chips.scss","../scss/components/chips/chips.scss","../scss/components/content/_extends.scss","../angular-material/src/components/content/content.scss","../scss/components/content/content.scss","../scss/components/datepicker/_extends-calendar.scss","../angular-material/src/components/datepicker/calendar.scss","../scss/components/datepicker/_extends-datePicker.scss","../angular-material/src/components/datepicker/datePicker.scss","../scss/components/datepicker/datePicker.scss","../scss/components/dialog/_extends.scss","../angular-material/src/components/dialog/dialog.scss","../scss/components/dialog/dialog.scss","../scss/components/divider/_extends.scss","../angular-material/src/components/divider/divider.scss","../scss/components/fabSpeedDial/_extends.scss","../angular-material/src/components/fabSpeedDial/fabSpeedDial.scss","../angular-material/src/components/gridList/gridList.scss","../scss/components/gridList/gridList.scss","../scss/components/icon/_extends.scss","../angular-material/src/components/icon/icon.scss","../scss/components/icon/icon.scss","../scss/components/input/_extends.scss","../angular-material/src/components/input/input.scss","../scss/components/input/input.scss","../scss/components/list/_extends.scss","../angular-material/src/components/list/list.scss","../scss/components/list/list.scss","../scss/components/menu/_extends.scss","../angular-material/src/components/menu/menu.scss","../scss/components/progressLinear/_extends.scss","../angular-material/src/components/progressLinear/progressLinear.scss","../scss/components/radioButton/_extends.scss","../angular-material/src/components/radioButton/radio-button.scss","../scss/components/select/_extends.scss","../angular-material/src/components/select/select.scss","../scss/components/select/select.scss","../scss/components/sidenav/_extends.scss","../angular-material/src/components/sidenav/sidenav.scss","../scss/components/sidenav/sidenav.scss","../scss/components/slider/_extends.scss","../angular-material/src/components/slider/slider.scss","../scss/components/sticky/_extends.scss","../angular-material/src/components/sticky/sticky.scss","../scss/components/subheader/_extends.scss","../angular-material/src/components/subheader/subheader.scss","../scss/components/subheader/subheader.scss","../scss/components/switch/_extends.scss","../angular-material/src/components/switch/switch.scss","../scss/components/tabs/_extends.scss","../angular-material/src/components/tabs/tabs.scss","../scss/components/toast/_extends.scss","../angular-material/src/components/toast/toast.scss","../scss/components/toolbar/_extends.scss","../angular-material/src/components/toolbar/toolbar.scss","../scss/components/toolbar/toolbar.scss","../scss/components/tooltip/_extends.scss","../angular-material/src/components/tooltip/tooltip.scss","../scss/components/virtualRepeat/_extends.scss","../angular-material/src/components/virtualRepeat/virtualRepeater.scss","../scss/components/virtualRepeat/virtualRepeat.scss","../scss/components/whiteframe/_extends.scss","../angular-material/src/components/whiteframe/whiteframe.scss","../scss/components/pseudo-input/pseudo-input.scss","../scss/views/LoginUI.scss","../scss/views/MailerUI.scss","../scss/views/ContactsUI.scss","../scss/views/MessageEditorUI.scss","../scss/views/SchedulerUI.scss","../scss/views/_view.scss","../scss/core/base_styles/_base_style.scss","../scss/_devtools.scss"],"names":[],"mappings":"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;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;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","file":"styles.css"} \ No newline at end of file +{"version":3,"sources":["../scss/components/_palette.scss","../scss/core/reset.scss","styles.css","../scss/core/angular.scss","../scss/styles.scss","../angular-material/src/core/style/structure.scss","../angular-material/src/core/style/mixins.scss","../scss/core/variables.scss","../scss/core/structure.scss","../angular-material/src/core/services/layout/layout.scss","../scss/core/layout.scss","../bower_components/breakpoint-sass/stylesheets/_breakpoint.scss","../angular-material/src/core/style/typography.scss","../scss/core/typography.scss","../scss/core/_functions.scss","../angular-material/src/components/autocomplete/autocomplete.scss","../scss/components/backdrop/_extends.scss","../angular-material/src/components/backdrop/backdrop.scss","../scss/components/backdrop/backdrop.scss","../scss/components/button/_extends.scss","../angular-material/src/components/button/button.scss","../scss/components/button/button.scss","../scss/components/card/_extends.scss","../angular-material/src/components/card/card.scss","../scss/components/card/card.scss","../scss/components/checkbox/_extends.scss","../angular-material/src/components/checkbox/checkbox.scss","../scss/components/checkbox/checkbox.scss","../scss/components/chips/_extends.scss","../angular-material/src/components/chips/chips.scss","../scss/components/chips/chips.scss","../scss/components/content/_extends.scss","../angular-material/src/components/content/content.scss","../scss/components/content/content.scss","../scss/components/datepicker/_extends-calendar.scss","../angular-material/src/components/datepicker/calendar.scss","../scss/components/datepicker/_extends-datePicker.scss","../angular-material/src/components/datepicker/datePicker.scss","../scss/components/datepicker/datePicker.scss","../scss/components/dialog/_extends.scss","../angular-material/src/components/dialog/dialog.scss","../scss/components/dialog/dialog.scss","../scss/components/divider/_extends.scss","../angular-material/src/components/divider/divider.scss","../scss/components/fabSpeedDial/_extends.scss","../angular-material/src/components/fabSpeedDial/fabSpeedDial.scss","../angular-material/src/components/gridList/grid-list.scss","../scss/components/gridList/grid-list.scss","../scss/components/icon/_extends.scss","../angular-material/src/components/icon/icon.scss","../scss/components/icon/icon.scss","../scss/components/input/_extends.scss","../angular-material/src/components/input/input.scss","../scss/components/input/input.scss","../scss/components/list/_extends.scss","../angular-material/src/components/list/list.scss","../scss/components/list/list.scss","../scss/components/menu/_extends.scss","../angular-material/src/components/menu/menu.scss","../scss/components/progressLinear/_extends.scss","../angular-material/src/components/progressLinear/progress-linear.scss","../scss/components/radioButton/_extends.scss","../angular-material/src/components/radioButton/radio-button.scss","../scss/components/select/_extends.scss","../angular-material/src/components/select/select.scss","../scss/components/select/select.scss","../scss/components/sidenav/_extends.scss","../angular-material/src/components/sidenav/sidenav.scss","../scss/components/sidenav/sidenav.scss","../scss/components/slider/_extends.scss","../angular-material/src/components/slider/slider.scss","../scss/components/sticky/_extends.scss","../angular-material/src/components/sticky/sticky.scss","../scss/components/subheader/_extends.scss","../angular-material/src/components/subheader/subheader.scss","../scss/components/subheader/subheader.scss","../scss/components/switch/_extends.scss","../angular-material/src/components/switch/switch.scss","../scss/components/tabs/_extends.scss","../angular-material/src/components/tabs/tabs.scss","../scss/components/toast/_extends.scss","../angular-material/src/components/toast/toast.scss","../scss/components/toolbar/_extends.scss","../angular-material/src/components/toolbar/toolbar.scss","../scss/components/toolbar/toolbar.scss","../scss/components/tooltip/_extends.scss","../angular-material/src/components/tooltip/tooltip.scss","../scss/components/virtualRepeat/_extends.scss","../angular-material/src/components/virtualRepeat/virtual-repeater.scss","../scss/components/virtualRepeat/virtual-repeat.scss","../scss/components/whiteframe/_extends.scss","../angular-material/src/components/whiteframe/whiteframe.scss","../scss/components/pseudo-input/pseudo-input.scss","../scss/views/LoginUI.scss","../scss/views/MailerUI.scss","../scss/views/ContactsUI.scss","../scss/views/MessageEditorUI.scss","../scss/views/SchedulerUI.scss","../scss/views/_view.scss","../scss/core/base_styles/_base_style.scss"],"names":[],"mappings":"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AAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WAAS,EAAV;IAAkB;MAChC,cAAY,EAAb;IADY;MAAI,WA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","file":"styles.css"} \ No newline at end of file diff --git a/UI/WebServerResources/js/Common.js b/UI/WebServerResources/js/Common.js index ab823cda8..b3214a9f6 100644 --- a/UI/WebServerResources/js/Common.js +++ b/UI/WebServerResources/js/Common.js @@ -1,3 +1,3 @@ -function l(){var key=arguments[0],value=key;labels[key]?value=labels[key]:clabels[key]&&(value=clabels[key]);for(var i=1,j=0;i-1?deferred.resolve():Acl.$$resource.fetch(this.folderId,"addUserInAcls",param).then(function(){user.wasSubscribed=!1,user.userClass=user.isGroup?"group-user":"normal-user",user.$rights=angular.bind(user,user.$acl,_this.folderId),_this.users.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Acl.prototype.$removeUser=function(uid){var _this=this,param={uid:uid};return Acl.$$resource.fetch(this.folderId,"removeUserFromAcls",param).then(function(){var i=_.indexOf(_.pluck(_this.users,"uid"),uid);i>=0&&_this.users.splice(i,1)})},Acl.prototype.$resetUsersRights=function(){angular.forEach(this.users,function(user){user.$resetRights()})},Acl.prototype.$saveUsersRights=function(){var _this=this,deferredSave=Acl.$q.defer(),deferredSubscribe=Acl.$q.defer(),param={action:"saveUserRights"},users=[];return angular.forEach(this.users,function(user){user.$rightsAreDirty()&&users.push(user.$omit())}),users.length?Acl.$$resource.save(this.folderId,users,param).then(function(){angular.forEach(_this.users,function(user){user.$rightsAreDirty()&&(user.$shadowRights=angular.copy(user.rights))}),deferredSave.resolve()},deferredSave.reject):deferredSave.resolve(),users=[],angular.forEach(this.users,function(user){!user.wasSubscribed&&user.isSubscribed&&users.push(user.uid)}),users.length?(param={uids:users.join(",")},Acl.$$resource.fetch(this.folderId,"subscribeUsers",param).then(function(){angular.forEach(_this.users,function(user){user.wasSubscribed=user.isSubscribed}),deferredSubscribe.resolve()},deferredSubscribe.reject)):deferredSubscribe.resolve(),Acl.$q.all([deferredSave.promise,deferredSubscribe.promise])}}(),function(){"use strict";function Alarm(){this.currentAlarm=null}function AlarmService($timeout,Settings,Resource,$mdToast){return angular.extend(Alarm,{$timeout:$timeout,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$toast:$mdToast}),Alarm}Alarm.getAlarms=function(){var _this=this,now=new Date,browserTime=Math.floor(now.getTime()/1e3);this.$$resource.fetch("","alarmslist?browserTime="+browserTime).then(function(data){var alarms=data.alarms.sort(function(a,b){var x=parseInt(a[2]),y=parseInt(b[2]);return y-x});if(alarms.length>0){var next=alarms.pop(),now=new Date,utc=Math.floor(now.getTime()/1e3),url=next[0]+"/"+next[1],alarmTime=parseInt(next[2]),delay=alarmTime;alarmTime>0&&(delay-=utc);var f=(new Date(1e3*alarmTime),angular.bind(_this,Alarm.showAlarm,url));_this.currentAlarm&&_this.$timeout.cancel(_this.currentAlarm),_this.currentAlarm=_this.$timeout(f,1e3*delay)}})},Alarm.showAlarm=function(url){var _this=this;this.$$resource.fetch(url,"?resetAlarm=yes").then(function(data){function AlarmController(scope,$mdToast,url){scope.reminder="10",scope.cancel=function(){$mdToast.hide()},scope.ok=function(){_this.$$resource.fetch(url,"view?snoozeAlarm="+scope.reminder),$mdToast.hide()}}_this.$toast.show({position:"top right",hideDelay:0,template:[""," ",' ",' '," ",l("5 minutes")," "," ",l("10 minutes")," "," ",l("15 minutes")," "," ",l("30 minutes")," "," ",l("45 minutes")," "," ",l("1 hour")," "," ",l("1 day")," "," "," ",' ',l("Cancel")," ",' ',l("Ok")," ",""].join(""),locals:{url:url},controller:AlarmController}),AlarmController.$inject=["scope","$mdToast","url"]})},AlarmService.$inject=["$timeout","sgSettings","Resource","$mdToast"],angular.module("SOGo.Common").factory("Alarm",AlarmService)}(),function(){"use strict";function Authentication(){function readCookie(name){var foundCookie,prefix,pairs,i,currentPair,start;for(foundCookie=null,prefix=name+"=",pairs=document.cookie.split(";"),i=0;!foundCookie&&i0&&(currentPair=currentPair.substr(start)),0===currentPair.indexOf(prefix)&&(foundCookie=currentPair.substr(prefix.length))}return foundCookie}function readLoginCookie(){var value,loginValues=null,cookie=readCookie("0xHIGHFLYxSOGo");return cookie&&cookie.length>8&&(value=decodeURIComponent(cookie.substr(8)),loginValues=value.base64decode().split(":")),loginValues}function redirectUrl(username,domain){var userName,address,baseAddress,altBaseAddress,parts,hostpart,protocol,newAddress;return userName=username,domain&&(userName+="@"+domain.value),address=""+window.location.href,baseAddress=ApplicationBaseURL+"/"+encodeURIComponent(userName),"/"==baseAddress[0]&&(parts=address.split("/"),hostpart=parts[2],protocol=parts[0],baseAddress=protocol+"//"+hostpart+baseAddress),parts=baseAddress.split("/"),parts.splice(0,3),altBaseAddress=parts.join("/"),newAddress=!address.startsWith(baseAddress)&&!address.startsWith(altBaseAddress)||address.endsWith("/logoff")?baseAddress:address}function getService($q,$http,passwordPolicyConfig){var service,_this=this;return service={login:function(data){var language,d=$q.defer(),username=data.username,password=data.password,domain=data.domain,rememberLogin=data.rememberLogin?1:0;return data.loginSuffix&&!username.endsWith(data.loginSuffix)&&(username+=loginSuffix,domain=!1),data.language&&"WONoSelectionString"!=data.language&&(language=data.language),$http({method:"POST",url:"/SOGo/connect",data:{userName:username,password:password,domain:domain,language:language,rememberLogin:rememberLogin}}).success(function(data,status){var loginCookie=readLoginCookie();loginCookie?"undefined"!=typeof data.expire&&"undefined"!=typeof data.grace?data.expire<0&&data.grace>0?d.reject({grace:data.grace}):data.expire>0&&-1==data.grace?d.reject({expire:data.expire}):d.resolve(redirectUrl(username,domain)):d.resolve(redirectUrl(username,domain)):d.reject(l("cookiesNotEnabled"))}).error(function(data,status){var msg,perr;data&&data.LDAPPasswordPolicyError?(perr=data.LDAPPasswordPolicyError,msg=perr==passwordPolicyConfig.PolicyNoError?l("Wrong username or password."):perr==passwordPolicyConfig.PolicyAccountLocked?l("Your account was locked due to too many failed attempts."):l("Login failed due to unhandled error case: ")+perr):msg=l("Unhandled error response"),d.reject({error:msg})}),d.promise},changePassword:function(newPassword){var d=$q.defer(),loginCookie=_this.readLoginCookie();return $http({method:"POST",url:"/SOGo/so/changePassword",data:{userName:loginCookie[0],password:loginCookie[1],newPassword:newPassword}}).success(function(data,status){d.resolve()}).error(function(data,status){var error,perr=data.LDAPPasswordPolicyError;perr?perr==passwordPolicyConfig.PolicyNoError?error=l("Password change failed"):perr==passwordPolicyConfig.PolicyPasswordModNotAllowed?error=l("Password change failed - Permission denied"):perr==passwordPolicyConfig.PolicyInsufficientPasswordQuality?error=l("Password change failed - Insufficient password quality"):perr==passwordPolicyConfig.PolicyPasswordTooShort?error=l("Password change failed - Password is too short"):perr==passwordPolicyConfig.PolicyPasswordTooYoung?error=l("Password change failed - Password is too young"):perr==passwordPolicyConfig.PolicyPasswordInHistory?error=l("Password change failed - Password is in history"):(error=l("Unhandled policy error: %{0}").formatted(perr),perr=passwordPolicyConfig.PolicyPasswordUnknown):(perr=passwordPolicyConfig.PolicyPasswordSystemUnknown,error=_("Unhandled error response")),d.reject(error)}),d.promise}}}this.$get=getService,getService.$inject=["$q","$http","passwordPolicyConfig"]}angular.module("SOGo.Authentication",[]).constant("passwordPolicyConfig",{PolicyPasswordChangeUnsupported:-3,PolicyPasswordSystemUnknown:-2,PolicyPasswordUnknown:-1,PolicyPasswordExpired:0,PolicyAccountLocked:1,PolicyChangeAfterReset:2,PolicyPasswordModNotAllowed:3,PolicyMustSupplyOldPassword:4,PolicyInsufficientPasswordQuality:5,PolicyPasswordTooShort:6,PolicyPasswordTooYoung:7,PolicyPasswordInHistory:8,PolicyNoError:65535}).provider("Authentication",Authentication)}(),function(){"use strict";function Dialog(){}function DialogService($q,$mdDialog){return angular.extend(Dialog,{$q:$q,$modal:$mdDialog}),Dialog}Dialog.alert=function(title,content){var alert=this.$modal.alert().title(title).content(content).ok(l("OK"));this.$modal.show(alert)},Dialog.confirm=function(title,content,options){var confirm=this.$modal.confirm().title(title).content(content).ok(options&&options.ok?options.ok:l("OK")).cancel(options&&options.cancel?options.cancel:l("Cancel"));return this.$modal.show(confirm)},Dialog.prompt=function(title,label,options){function PromptDialogController(scope,$mdDialog){scope.title=title,scope.name="",scope.cancel=function(){d.reject(),$mdDialog.hide()},scope.ok=function(){d.resolve(scope.name),$mdDialog.hide()}}var o=options||{},d=this.$q.defer();return this.$modal.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,template:['',' ','

'," "," ",' '," ","
",'
',' '," "+l("Cancel")," ",' '," "+l("OK")," ","
","
"].join(""),controller:PromptDialogController}),PromptDialogController.$inject=["scope","$mdDialog"],d.promise},DialogService.$inject=["$q","$mdDialog"],angular.module("SOGo.Common").factory("Dialog",DialogService)}(),function(){"use strict";function Gravatar(){return function(email,size){var x,y,hash,s=size;return email?(x=email.indexOf("<"),x>=0&&(y=email.indexOf(">",x),y>x&&(email=email.substring(x+1,y))),size||(s=48),hash=email.md5(),"https://www.gravatar.com/avatar/"+hash+"?s="+s+"&d=wavatar"):""}}angular.module("SOGo.Common").factory("Gravatar",Gravatar)}(),function(){"use strict";function Resource($http,$q,path,activeUser,options){angular.extend(this,{_http:$http,_q:$q,_path:path,_activeUser:activeUser}),angular.extend(this,options),this._path=this._path.replace(/\/$/,"")}Resource.$factory=["$http","$q",function($http,$q){return function(path,activeUser,options){return new Resource($http,$q,path,activeUser,options)}}],angular.module("SOGo.Common").factory("Resource",Resource.$factory),Resource.prototype.userResource=function(uid){var path=_.compact(this._activeUser.folderURL.split("/"));return path.splice(path.length-1,1,escape(uid)),new Resource(this._http,this._q,"/"+path.join("/"),this._activeUser)},Resource.prototype.fetch=function(folderId,action,params){var deferred=this._q.defer(),path=[this._path];return folderId&&path.push(folderId.split("/")),action&&path.push(action),path=_.compact(_.flatten(path)).join("/"),this._http({method:"GET",url:path,params:params}).success(deferred.resolve).error(function(data,status){return 404==status?deferred.reject():void 0}),deferred.promise},Resource.prototype.newguid=function(folderId){var deferred=this._q.defer(),path=this._path+"/"+folderId+"/newguid";return this._http.get(path).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.create=function(action,name){var deferred=this._q.defer(),path=this._path+"/"+action;return this._http.post(path,{name:name}).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.post=function(id,action,data){var deferred=this._q.defer(),path=[this._path];return id&&path.push(id),action&&path.push(action),path=_.compact(_.flatten(path)).join("/"),this._http.post(path,data).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.save=function(id,newValue,options){var action=(this._q.defer(),options&&options.action?options.action:"save");return this.post(id,action,newValue)},Resource.prototype.remove=function(uid){var deferred=this._q.defer(),path=this._path+"/"+uid+"/delete";return this._http.get(path).success(deferred.resolve).error(deferred.reject),deferred.promise}}(),function(){"use strict";function User(userData){userData&&this.init(userData)}User.factory=["$q","$log","sgSettings","Resource","Gravatar",function($q,$log,Settings,Resource,Gravatar){return angular.extend(User,{$q:$q,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL"),Settings.activeUser()),$gravatar:Gravatar,$query:"",$users:[]}),User}],angular.module("SOGo.Common").factory("User",User.factory),User.$filter=function(search,excludedUsers){var param={search:search},_this=this;return search?User.$query==search?User.$q.when(User.$users):(User.$query=search,User.$$resource.fetch(null,"usersSearch",param).then(function(response){var results,index,user,compareUids=function(data){return _this.uid==data.uid};for(results=excludedUsers?_.filter(response.users,function(data){return!_.find(excludedUsers,compareUids,user)}):response.users,index=User.$users.length-1;index>=0;index--)user=User.$users[index],_.find(results,compareUids,user)||User.$users.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(User.$users,compareUids,data))){var user=new User(data);User.$users.splice(index,0,user)}}),User.$log.debug(User.$users),User.$users})):(User.$users=[],User.$q.when(User.$users))},User.prototype.init=function(data){angular.extend(this,data),this.$$shortFormat||(this.$$shortFormat=this.$shortFormat()),this.$$image||(this.$$image=this.image||User.$gravatar(this.c_email)),this.empty=" "},User.prototype.$shortFormat=function(options){var fullname=this.cn||this.c_email,email=this.c_email,no_email=options&&options.email===!1;return!no_email&&email&&fullname!=email&&(fullname+=" <"+email+">"),fullname},User.prototype.$acl=function(folderId){var _this=this,deferred=User.$q.defer(),param={uid:this.uid};return this.$shadowRights?deferred.resolve(this.rights):User.$$resource.fetch(folderId,"userRights",param).then(function(data){return _this.rights=data,_this.$shadowRights=angular.copy(data),deferred.resolve(data),data}),deferred.promise},User.prototype.$isAnonymous=function(){return"anonymous"==this.uid},User.prototype.$isSpecial=function(){return this.userClass&&"public-user"==this.userClass},User.prototype.$confirmRights=function(){var confirmation=!1;return this.$confirmation?!1:(_.some(_.values(this.rights))&&("anonymous"==this.uid?confirmation=l("Potentially anyone on the Internet will be able to access your folder, even if they do not have an account on this system. Is this information suitable for the public Internet?"):""==this.uid&&(confirmation=l("Any user with an account on this system will be able to access your folder. Are you certain you trust them all?"))),this.$confirmation=confirmation,confirmation)},User.prototype.$rightsAreDirty=function(){return this.rights&&!_.isEqual(this.rights,this.$shadowRights)},User.prototype.$resetRights=function(zero){var _this=this;zero?_.map(_.keys(this.rights),function(key){angular.isString(_this.rights[key])?_this.rights[key]="None":_this.rights[key]=0}):this.rights=angular.copy(this.$shadowRights)},User.prototype.$folders=function(type){var _this=this,deferred=User.$q.defer(),param={type:type};return this.$$folders?deferred.resolve(this.$$folders):User.$$resource.userResource(this.uid).fetch(null,"foldersSearch",param).then(function(response){_this.$$folders=response.folders,deferred.resolve(response.folders)}),deferred.promise},User.prototype.$omit=function(){var user={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(user[key]=value)}),user},User.prototype.toString=function(){return"[User "+this.c_email+"]"}}(),function(){"use strict";function sgFocus($rootScope,$timeout){return function(name){$timeout(function(){$rootScope.$broadcast("sgFocusOn",name)})}}sgFocus.$inject=["$rootScope","$timeout"],angular.module("SOGo.Common").factory("sgFocus",sgFocus)}(),function(){"use strict";function sgAvatarImage(){return{restrict:"AE",replace:!0,scope:{size:"@",email:"=sgEmail",src:"=sgSrc"},template:'',bindToController:!0,controller:"sgAvatarImageController",controllerAs:"vm"}}function sgAvatarImageController($scope,$element,Gravatar){var vm=this;$scope.$watch("vm.email",function(email){email&&!vm.url&&(vm.url=Gravatar(email,vm.size))}),"sg-src"in $element[0].attributes&&$scope.$watch("vm.src",function(src){src&&(vm.url=src)})}sgAvatarImageController.$inject=["$scope","$element","Gravatar"],angular.module("SOGo.Common").directive("sgAvatarImage",sgAvatarImage).controller("sgAvatarImageController",sgAvatarImageController)}(),function(){"use strict";function sgColorPicker($parse){function link(scope,iElement,iAttr,controller){controller.doSelect=$parse(iElement.attr("sg-on-select"))}return{restrict:"E",template:["",' '," color_lens"," ",' ',' ',' '," "," ",""].join(""),replace:!0,bindToController:!0,controller:sgColorPickerController,controllerAs:"$sgColorPickerController",link:link}}function sgColorPickerController($scope,sgColors){var vm=this;vm.colors=sgColors.selection,vm.select=function(color){vm.doSelect($scope,{color:color})}}sgColorPicker.$inject=["$parse"],sgColorPickerController.$inject=["$scope","sgColors"],angular.module("SOGo.Common").directive("sgColorPicker",sgColorPicker)}(),function(){"use strict";function sgCompile($compile){function sgCompileLink(scope,element,attrs){var ensureCompileRunsOnce=scope.$watch(function(scope){return scope.$eval(attrs.sgCompile)},function(value){element.html(value),$compile(element.contents())(scope),ensureCompileRunsOnce()})}return{restrict:"A",link:sgCompileLink}}sgCompile.$inject=["$compile"],angular.module("SOGo.Common").directive("sgCompile",sgCompile)}(),function(){"use strict";function sgEnter(){var ENTER_KEY=13;return function(scope,element,attrs){element.bind("keydown keypress",function(event){event.which===ENTER_KEY&&(scope.$apply(function(){scope.$eval(attrs.sgEnter)}),event.preventDefault())})}}angular.module("SOGo.Common").directive("sgEnter",sgEnter)}(),function(){"use strict";function sgEscape(){var ESCAPE_KEY=27;return function(scope,elem,attrs){elem.bind("keydown",function(event){event.keyCode===ESCAPE_KEY&&scope.$apply(attrs.sgEscape)})}}angular.module("SOGo.Common").directive("sgEscape",sgEscape)}(),function(){"use strict";function sgFocusOn(){return function(scope,elem,attr){scope.$on("sgFocusOn",function(e,name){name===attr.sgFocusOn&&(elem[0].focus(),elem[0].select())})}}angular.module("SOGo.Common").directive("sgFocusOn",sgFocusOn)}(),function(){"use strict";function sgFolderStylesheet(){return{restrict:"A",require:"ngModel",scope:{ngModel:"="},template:['"].join("")}}angular.module("SOGo.Common").directive("sgFolderStylesheet",sgFolderStylesheet)}(),function(){"use strict";function sgSearchPreTransclude($parse){function compile(tElement,tAttr){var inputEl=(tElement.find("md-input-container"),tElement.find("input")),selectEl=tElement.find("md-select"),buttonEl=tElement.find("md-button");return inputEl.attr("ng-model","$sgSearchController.searchText"),inputEl.attr("ng-model-options","$sgSearchController.searchTextOptions"),inputEl.attr("ng-change","$sgSearchController.onChange()"),selectEl&&(selectEl.attr("ng-model","$sgSearchController.searchField"),selectEl.attr("ng-change","$sgSearchController.onChange()")),buttonEl&&buttonEl.attr("sg-search-cancel")?(buttonEl.attr("ng-click",buttonEl.attr("sg-search-cancel")),buttonEl.removeAttr("sg-search-cancel")):buttonEl=null,function(scope,iElement,iAttr,controller){var compiledButtonEl=iElement.find("button");controller.doSearch=$parse(iElement.attr("sg-search")),buttonEl&&compiledButtonEl&&compiledButtonEl.on("click",controller.cancelSearch)}}return{restrict:"A",controller:"sgSearchController",controllerAs:"$sgSearchController",priority:1001,compile:compile}}function sgSearch(){function compile(tElement,tAttr){return function(scope,iElement,iAttr,controller,transclude){transclude(function(clone){iElement.append(clone)})}}return{restrict:"A",priority:1e3,transclude:!0,compile:compile}}function sgSearchController($scope,$element){var vm=this;vm.previous={searchText:"",searchField:""},vm.searchText=null,vm.searchTextOptions={updateOn:"default blur",debounce:{"default":300,blur:0}},vm.onChange=function(){null!==vm.searchText&&(vm.searchText!=vm.previous.searchText||vm.searchField!=vm.previous.searchField)&&((vm.searchText.length>2||0===vm.searchText.length)&&vm.doSearch($scope,{searchText:vm.searchText,searchField:vm.searchField}),vm.previous={searchText:vm.searchText,searchField:vm.searchField})},vm.cancelSearch=function(){vm.searchText=""}}sgSearchPreTransclude.$inject=["$parse"],sgSearchController.$inject=["$scope","$element"],angular.module("SOGo.Common").controller("sgSearchController",sgSearchController).directive("sgSearch",sgSearchPreTransclude).directive("sgSearch",sgSearch)}(),function(){"use strict";function sgSubscribe(User){return{restrict:"A",scope:{folderType:"@sgSubscribe",onFolderSelect:"&sgSubscribeOnSelect"},replace:!1,bindToController:!0,controller:sgSubscribeDialogController,controllerAs:"$sgSubscribeDialogController",link:link}}function link(scope,element,attrs,controller){element.find("input");element.on("click",controller.showDialog)}function sgSubscribeDialogController($mdDialog){var vm=this;vm.showDialog=function(){$mdDialog.show({templateUrl:"../Contacts/UIxContactsUserFolders",clickOutsideToClose:!0,locals:{folderType:vm.folderType,onFolderSelect:vm.onFolderSelect},controller:sgSubscribeController,controllerAs:"subscribe"})}}function sgSubscribeController(folderType,onFolderSelect,User){var vm=this;vm.selectedUser=null,vm.users=User.$users,vm.searchTextOptions={updateOn:"default blur",debounce:{"default":300,blur:0}},vm.onChange=function(){User.$filter(vm.searchText).then(function(){vm.selectedUser&&_.isUndefined(_.find(User.$users,function(user){return user.uid==vm.selectedUser.uid}))&&(vm.selectedUser=null)})},vm.selectUser=function(i){vm.selectedUser==vm.users[i]?vm.selectedUser=null:vm.users[i].$folders(folderType).then(function(){vm.selectedUser=vm.users[i]})},vm.selectFolder=function(folder){onFolderSelect({folderData:folder})}}sgSubscribe.$inject=["User"],sgSubscribeDialogController.$inject=["$mdDialog"],sgSubscribeController.$inject=["folderType","onFolderSelect","User"],angular.module("SOGo.Common").directive("sgSubscribe",sgSubscribe)}(),function(){"use strict";function sgToggleGrid($parse){function link(scope,iElement,attrs,ctrl){function toggle(day){var i=_.findIndex(modelDays,function(o){return modelAttr?o[modelAttr]==day:o==day});if(0>i)if(modelAttr){var o={};o[modelAttr]=day,modelDays.push(o)}else modelDays.push(day);else modelDays.splice(i,1)}var tile,i,modelDays,modelAttr,ensureInitRunsOnce,toggleClass,tiles=iElement.find("md-grid-tile");for(ensureInitRunsOnce=scope.$watch(function(){ -return $parse(attrs.sgToggleGrid)(scope)},function(days){if(angular.isDefined(days)){var flattenedDays=days;modelDays=days,attrs.sgToggleGridAttr&&(modelAttr=attrs.sgToggleGridAttr,flattenedDays=_.pluck(days,attrs.sgToggleGridAttr)),_.each(tiles,function(o){var tile=angular.element(o);_.contains(flattenedDays,tile.attr("value"))&&tile.addClass("sg-active")}),ensureInitRunsOnce()}}),toggleClass=function(){var tile=angular.element(this),day=tile.attr("value");tile.toggleClass("sg-active"),toggle(day)},i=0;i>2,enc2=(3&chr1)<<4|chr2>>4,enc3=(15&chr2)<<2|chr3>>6,enc4=63&chr3,isNaN(chr2)?enc3=enc4=64:isNaN(chr3)&&(enc4=64),output=output+this._base64_keyStr.charAt(enc1)+this._base64_keyStr.charAt(enc2)+this._base64_keyStr.charAt(enc3)+this._base64_keyStr.charAt(enc4);return output},String.prototype.base64decode=function(){for(var chr1,chr2,chr3,enc1,enc2,enc3,enc4,output="",i=0,input=""+this;i>4,chr2=(15&enc2)<<4|enc3>>2,chr3=(3&enc3)<<6|enc4,output+=String.fromCharCode(chr1),64!=enc3&&(output+=String.fromCharCode(chr2)),64!=enc4&&(output+=String.fromCharCode(chr3));return output},String.prototype.md5=function(){if(this.length){var md5=function(s){function L(k,d){return k<>>32-d}function K(G,k){var I,d,F,H,x;return F=2147483648&G,H=2147483648&k,I=1073741824&G,d=1073741824&k,x=(1073741823&G)+(1073741823&k),I&d?2147483648^x^F^H:I|d?1073741824&x?3221225472^x^F^H:1073741824^x^F^H:x^F^H}function r(d,F,k){return d&F|~d&k}function q(d,F,k){return d&k|F&~k}function p(d,F,k){return d^F^k}function n(d,F,k){return F^(d|~k)}function u(G,F,aa,Z,k,H,I){return G=K(G,K(K(r(F,aa,Z),k),I)),K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){return G=K(G,K(K(q(F,aa,Z),k),I)),K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){return G=K(G,K(K(p(F,aa,Z),k),I)),K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){return G=K(G,K(K(n(F,aa,Z),k),I)),K(L(G,H),F)}function e(G){for(var Z,F=G.length,x=F+8,k=(x-x%64)/64,I=16*(k+1),aa=Array(I-1),d=0,H=0;F>H;)Z=(H-H%4)/4,d=H%4*8,aa[Z]=aa[Z]|G.charCodeAt(H)<>>29,aa}function B(x){var G,d,k="",F="";for(d=0;3>=d;d++)G=x>>>8*d&255,F="0"+G.toString(16),k+=F.substr(F.length-2,2);return k}function J(k){k=k.replace(/rn/g,"n");for(var d="",F=0;Fx?d+=String.fromCharCode(x):x>127&&2048>x?(d+=String.fromCharCode(x>>6|192),d+=String.fromCharCode(63&x|128)):(d+=String.fromCharCode(x>>12|224),d+=String.fromCharCode(x>>6&63|128),d+=String.fromCharCode(63&x|128))}return d}var P,h,E,v,g,Y,X,W,V,C=Array(),S=7,Q=12,N=17,M=22,A=5,z=9,y=14,w=20,o=4,m=11,l=16,j=23,U=6,T=10,R=15,O=21;for(s=J(s),C=e(s),Y=1732584193,X=4023233417,W=2562383102,V=271733878,P=0;P12&&(p="pm",i=hours%12),10>minutes&&(m="0"+minutes),newString=newString.replace("%H",10>hours?"0"+hours:hours),newString=newString.replace("%I",10>i?"0"+i:i),newString=newString.replace("%M",m),newString=newString.replace("%p",p)},Date.prototype.daysUpTo=function(otherDate){var days=[],day1=this.getTime(),day2=otherDate.getTime();if(day1>day2){var tmp=day1;day1=day2,day2=tmp}for(var nbrDays=Math.round((day2-day1)/864e5)+1,i=0;nbrDays>i;i++){var newDate=new Date;newDate.setTime(day1+864e5*i),days.push(newDate)}return days},String.prototype.isValidEmail=function(){var emailRE=/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i;return emailRE.test(this)},String.prototype.asCSSIdentifier=function(){for(var characters=["_","\\.","#","@","\\*",":",","," ","'","&","\\+"],escapeds=["_U_","_D_","_H_","_A_","_S_","_C_","_CO_","_SP_","_SQ_","_AM_","_P_"],newString=this,i=0;iyear&&(year=""+(year+1900)),1==month.length&&(month="0"+month),1==day.length&&(day="0"+day),"-"==separator?str=year+"-"+month+"-"+day:str=day+"/"+month+"/"+year,str},Date.prototype.addDays=function(nbrDays){var milliSeconds=this.getTime();milliSeconds+=864e5*nbrDays,this.setTime(milliSeconds)},Date.prototype.addHours=function(nbrHours){var milliSeconds=this.getTime();milliSeconds+=36e5*nbrHours,this.setTime(milliSeconds)},Date.prototype.addMinutes=function(nbrMinutes){var milliSeconds=this.getTime();milliSeconds+=6e4*nbrMinutes,this.setTime(milliSeconds)},Date.prototype.beginOfDay=function(){var beginOfDay=new Date(this.getTime());return beginOfDay.setHours(0),beginOfDay.setMinutes(0),beginOfDay.setSeconds(0),beginOfDay.setMilliseconds(0),beginOfDay},Date.prototype.beginOfWeek=function(){var offset=firstDayOfWeek-this.getDay();offset>0&&(offset-=7);var beginOfWeek=this.beginOfDay();return beginOfWeek.setHours(12),beginOfWeek.addDays(offset),beginOfWeek},Date.prototype.endOfWeek=function(){var endOfWeek=this.beginOfWeek();return endOfWeek.addDays(6),endOfWeek.setHours(23),endOfWeek.setMinutes(59),endOfWeek.setSeconds(59),endOfWeek.setMilliseconds(999),endOfWeek},Date.prototype.getDayString=function(){var newString=this.getYear();1e3>newString&&(newString+=1900);var month=""+(this.getMonth()+1);1==month.length&&(month="0"+month),newString+=month;var day=""+this.getDate();return 1==day.length&&(day="0"+day),newString+=day},Date.prototype.getHourString=function(){var newString=this.getHours()+"00";return 3==newString.length&&(newString="0"+newString),newString}; +function l(){var key=arguments[0],value=key;labels[key]?value=labels[key]:clabels[key]&&(value=clabels[key]);for(var i=1,j=0;i-1?deferred.resolve():Acl.$$resource.fetch(this.folderId,"addUserInAcls",param).then(function(){user.wasSubscribed=!1,user.userClass=user.isGroup?"group-user":"normal-user",user.$rights=angular.bind(user,user.$acl,_this.folderId),_this.users.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Acl.prototype.$removeUser=function(uid){var _this=this,param={uid:uid};return Acl.$$resource.fetch(this.folderId,"removeUserFromAcls",param).then(function(){var i=_.indexOf(_.pluck(_this.users,"uid"),uid);i>=0&&_this.users.splice(i,1)})},Acl.prototype.$resetUsersRights=function(){angular.forEach(this.users,function(user){user.$resetRights()})},Acl.prototype.$saveUsersRights=function(){var _this=this,deferredSave=Acl.$q.defer(),deferredSubscribe=Acl.$q.defer(),param={action:"saveUserRights"},users=[];return angular.forEach(this.users,function(user){user.$rightsAreDirty()&&users.push(user.$omit())}),users.length?Acl.$$resource.save(this.folderId,users,param).then(function(){angular.forEach(_this.users,function(user){user.$rightsAreDirty()&&(user.$shadowRights=angular.copy(user.rights))}),deferredSave.resolve()},deferredSave.reject):deferredSave.resolve(),users=[],angular.forEach(this.users,function(user){!user.wasSubscribed&&user.isSubscribed&&users.push(user.uid)}),users.length?(param={uids:users.join(",")},Acl.$$resource.fetch(this.folderId,"subscribeUsers",param).then(function(){angular.forEach(_this.users,function(user){user.wasSubscribed=user.isSubscribed}),deferredSubscribe.resolve()},deferredSubscribe.reject)):deferredSubscribe.resolve(),Acl.$q.all([deferredSave.promise,deferredSubscribe.promise])}}(),function(){"use strict";function Alarm(){this.currentAlarm=null}function AlarmService($timeout,Settings,Resource,$mdToast){return angular.extend(Alarm,{$timeout:$timeout,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$toast:$mdToast}),Alarm}Alarm.getAlarms=function(){var _this=this,now=new Date,browserTime=Math.floor(now.getTime()/1e3);this.$$resource.fetch("","alarmslist?browserTime="+browserTime).then(function(data){var alarms=data.alarms.sort(function(a,b){var x=parseInt(a[2]),y=parseInt(b[2]);return y-x});if(alarms.length>0){var next=alarms.pop(),now=new Date,utc=Math.floor(now.getTime()/1e3),url=next[0]+"/"+next[1],alarmTime=parseInt(next[2]),delay=alarmTime;alarmTime>0&&(delay-=utc);var f=(new Date(1e3*alarmTime),angular.bind(_this,Alarm.showAlarm,url));_this.currentAlarm&&_this.$timeout.cancel(_this.currentAlarm),_this.currentAlarm=_this.$timeout(f,1e3*delay)}})},Alarm.showAlarm=function(url){var _this=this;this.$$resource.fetch(url,"?resetAlarm=yes").then(function(data){function AlarmController(scope,$mdToast,url){scope.reminder="10",scope.cancel=function(){$mdToast.hide()},scope.ok=function(){_this.$$resource.fetch(url,"view?snoozeAlarm="+scope.reminder),$mdToast.hide()}}_this.$toast.show({position:"top right",hideDelay:0,template:[""," ",' ",' '," ",l("5 minutes")," "," ",l("10 minutes")," "," ",l("15 minutes")," "," ",l("30 minutes")," "," ",l("45 minutes")," "," ",l("1 hour")," "," ",l("1 day")," "," "," ",' ',l("Cancel")," ",' ',l("Ok")," ",""].join(""),locals:{url:url},controller:AlarmController}),AlarmController.$inject=["scope","$mdToast","url"]})},AlarmService.$inject=["$timeout","sgSettings","Resource","$mdToast"],angular.module("SOGo.Common").factory("Alarm",AlarmService)}(),function(){"use strict";function Authentication(){function readCookie(name){var foundCookie,prefix,pairs,i,currentPair,start;for(foundCookie=null,prefix=name+"=",pairs=document.cookie.split(";"),i=0;!foundCookie&&i0&&(currentPair=currentPair.substr(start)),0===currentPair.indexOf(prefix)&&(foundCookie=currentPair.substr(prefix.length))}return foundCookie}function readLoginCookie(){var value,loginValues=null,cookie=readCookie("0xHIGHFLYxSOGo");return cookie&&cookie.length>8&&(value=decodeURIComponent(cookie.substr(8)),loginValues=value.base64decode().split(":")),loginValues}function redirectUrl(username,domain){var userName,address,baseAddress,altBaseAddress,parts,hostpart,protocol,newAddress;return userName=username,domain&&(userName+="@"+domain.value),address=""+window.location.href,baseAddress=ApplicationBaseURL+"/"+encodeURIComponent(userName),"/"==baseAddress[0]&&(parts=address.split("/"),hostpart=parts[2],protocol=parts[0],baseAddress=protocol+"//"+hostpart+baseAddress),parts=baseAddress.split("/"),parts.splice(0,3),altBaseAddress=parts.join("/"),newAddress=!address.startsWith(baseAddress)&&!address.startsWith(altBaseAddress)||address.endsWith("/logoff")?baseAddress:address}function getService($q,$http,passwordPolicyConfig){var service,_this=this;return service={login:function(data){var language,d=$q.defer(),username=data.username,password=data.password,domain=data.domain,rememberLogin=data.rememberLogin?1:0;return data.loginSuffix&&!username.endsWith(data.loginSuffix)&&(username+=loginSuffix,domain=!1),data.language&&"WONoSelectionString"!=data.language&&(language=data.language),$http({method:"POST",url:"/SOGo/connect",data:{userName:username,password:password,domain:domain,language:language,rememberLogin:rememberLogin}}).success(function(data,status){var loginCookie=readLoginCookie();loginCookie?"undefined"!=typeof data.expire&&"undefined"!=typeof data.grace?data.expire<0&&data.grace>0?d.reject({grace:data.grace}):data.expire>0&&-1==data.grace?d.reject({expire:data.expire}):d.resolve(redirectUrl(username,domain)):d.resolve(redirectUrl(username,domain)):d.reject(l("cookiesNotEnabled"))}).error(function(data,status){var msg,perr;data&&data.LDAPPasswordPolicyError?(perr=data.LDAPPasswordPolicyError,msg=perr==passwordPolicyConfig.PolicyNoError?l("Wrong username or password."):perr==passwordPolicyConfig.PolicyAccountLocked?l("Your account was locked due to too many failed attempts."):l("Login failed due to unhandled error case: ")+perr):msg=l("Unhandled error response"),d.reject({error:msg})}),d.promise},changePassword:function(newPassword){var d=$q.defer(),loginCookie=_this.readLoginCookie();return $http({method:"POST",url:"/SOGo/so/changePassword",data:{userName:loginCookie[0],password:loginCookie[1],newPassword:newPassword}}).success(function(data,status){d.resolve()}).error(function(data,status){var error,perr=data.LDAPPasswordPolicyError;perr?perr==passwordPolicyConfig.PolicyNoError?error=l("Password change failed"):perr==passwordPolicyConfig.PolicyPasswordModNotAllowed?error=l("Password change failed - Permission denied"):perr==passwordPolicyConfig.PolicyInsufficientPasswordQuality?error=l("Password change failed - Insufficient password quality"):perr==passwordPolicyConfig.PolicyPasswordTooShort?error=l("Password change failed - Password is too short"):perr==passwordPolicyConfig.PolicyPasswordTooYoung?error=l("Password change failed - Password is too young"):perr==passwordPolicyConfig.PolicyPasswordInHistory?error=l("Password change failed - Password is in history"):(error=l("Unhandled policy error: %{0}").formatted(perr),perr=passwordPolicyConfig.PolicyPasswordUnknown):(perr=passwordPolicyConfig.PolicyPasswordSystemUnknown,error=_("Unhandled error response")),d.reject(error)}),d.promise}}}this.$get=getService,getService.$inject=["$q","$http","passwordPolicyConfig"]}angular.module("SOGo.Authentication",[]).constant("passwordPolicyConfig",{PolicyPasswordChangeUnsupported:-3,PolicyPasswordSystemUnknown:-2,PolicyPasswordUnknown:-1,PolicyPasswordExpired:0,PolicyAccountLocked:1,PolicyChangeAfterReset:2,PolicyPasswordModNotAllowed:3,PolicyMustSupplyOldPassword:4,PolicyInsufficientPasswordQuality:5,PolicyPasswordTooShort:6,PolicyPasswordTooYoung:7,PolicyPasswordInHistory:8,PolicyNoError:65535}).provider("Authentication",Authentication)}(),function(){"use strict";function Dialog(){}function DialogService($q,$mdDialog){return angular.extend(Dialog,{$q:$q,$modal:$mdDialog}),Dialog}Dialog.alert=function(title,content){var alert=this.$modal.alert().title(title).content(content).ok(l("OK"));this.$modal.show(alert)},Dialog.confirm=function(title,content,options){var confirm=this.$modal.confirm().title(title).content(content).ok(options&&options.ok?options.ok:l("OK")).cancel(options&&options.cancel?options.cancel:l("Cancel"));return this.$modal.show(confirm)},Dialog.prompt=function(title,label,options){function PromptDialogController(scope,$mdDialog){scope.title=title,scope.name="",scope.cancel=function(){d.reject(),$mdDialog.hide()},scope.ok=function(){d.resolve(scope.name),$mdDialog.hide()}}var o=options||{},d=this.$q.defer();return this.$modal.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,template:['',' ','

'," "," ",' '," ","
",'
',' '," "+l("Cancel")," ",' '," "+l("OK")," ","
","
"].join(""),controller:PromptDialogController}),PromptDialogController.$inject=["scope","$mdDialog"],d.promise},DialogService.$inject=["$q","$mdDialog"],angular.module("SOGo.Common").factory("Dialog",DialogService)}(),function(){"use strict";function Gravatar(){return function(email,size){var x,y,hash,s=size;return email?(x=email.indexOf("<"),x>=0&&(y=email.indexOf(">",x),y>x&&(email=email.substring(x+1,y))),size||(s=48),hash=email.md5(),"https://www.gravatar.com/avatar/"+hash+"?s="+s+"&d=wavatar"):""}}angular.module("SOGo.Common").factory("Gravatar",Gravatar)}(),function(){"use strict";function Resource($http,$q,path,activeUser,options){angular.extend(this,{_http:$http,_q:$q,_path:path,_activeUser:activeUser}),angular.extend(this,options),this._path=this._path.replace(/\/$/,"")}Resource.$factory=["$http","$q",function($http,$q){return function(path,activeUser,options){return new Resource($http,$q,path,activeUser,options)}}],angular.module("SOGo.Common").factory("Resource",Resource.$factory),Resource.prototype.userResource=function(uid){var path=_.compact(this._activeUser.folderURL.split("/"));return path.splice(path.length-1,1,escape(uid)),new Resource(this._http,this._q,"/"+path.join("/"),this._activeUser)},Resource.prototype.fetch=function(folderId,action,params){var deferred=this._q.defer(),path=[this._path];return folderId&&path.push(folderId.split("/")),action&&path.push(action),path=_.compact(_.flatten(path)).join("/"),this._http({method:"GET",url:path,params:params}).success(deferred.resolve).error(function(data,status){return 404==status?deferred.reject():void 0}),deferred.promise},Resource.prototype.newguid=function(folderId){var deferred=this._q.defer(),path=this._path+"/"+folderId+"/newguid";return this._http.get(path).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.create=function(action,name){var deferred=this._q.defer(),path=this._path+"/"+action;return this._http.post(path,{name:name}).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.post=function(id,action,data){var deferred=this._q.defer(),path=[this._path];return id&&path.push(id),action&&path.push(action),path=_.compact(_.flatten(path)).join("/"),this._http.post(path,data).success(deferred.resolve).error(deferred.reject),deferred.promise},Resource.prototype.save=function(id,newValue,options){var action=(this._q.defer(),options&&options.action?options.action:"save");return this.post(id,action,newValue)},Resource.prototype.remove=function(uid){var deferred=this._q.defer(),path=this._path+"/"+uid+"/delete";return this._http.get(path).success(deferred.resolve).error(deferred.reject),deferred.promise}}(),function(){"use strict";function User(userData){userData&&this.init(userData)}User.factory=["$q","$log","sgSettings","Resource","Gravatar",function($q,$log,Settings,Resource,Gravatar){return angular.extend(User,{$q:$q,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL"),Settings.activeUser()),$gravatar:Gravatar,$query:"",$users:[]}),User}],angular.module("SOGo.Common").factory("User",User.factory),User.$filter=function(search,excludedUsers){var param={search:search},_this=this;return search?User.$query==search?User.$q.when(User.$users):(User.$query=search,User.$$resource.fetch(null,"usersSearch",param).then(function(response){var results,index,user,compareUids=function(data){return _this.uid==data.uid};for(results=excludedUsers?_.filter(response.users,function(data){return!_.find(excludedUsers,compareUids,user)}):response.users,index=User.$users.length-1;index>=0;index--)user=User.$users[index],_.find(results,compareUids,user)||User.$users.splice(index,1);return _.each(results,function(data,index){if(_.isUndefined(_.find(User.$users,compareUids,data))){var user=new User(data);User.$users.splice(index,0,user)}}),User.$log.debug(User.$users),User.$users})):(User.$users=[],User.$q.when(User.$users))},User.prototype.init=function(data){angular.extend(this,data),this.$$shortFormat||(this.$$shortFormat=this.$shortFormat()),this.$$image||(this.$$image=this.image||User.$gravatar(this.c_email)),this.empty=" "},User.prototype.$shortFormat=function(options){var fullname=this.cn||this.c_email,email=this.c_email,no_email=options&&options.email===!1;return!no_email&&email&&fullname!=email&&(fullname+=" <"+email+">"),fullname},User.prototype.$acl=function(folderId){var _this=this,deferred=User.$q.defer(),param={uid:this.uid};return this.$shadowRights?deferred.resolve(this.rights):User.$$resource.fetch(folderId,"userRights",param).then(function(data){return _this.rights=data,_this.$shadowRights=angular.copy(data),deferred.resolve(data),data}),deferred.promise},User.prototype.$isAnonymous=function(){return"anonymous"==this.uid},User.prototype.$isSpecial=function(){return this.userClass&&"public-user"==this.userClass},User.prototype.$confirmRights=function(){var confirmation=!1;return this.$confirmation?!1:(_.some(_.values(this.rights))&&("anonymous"==this.uid?confirmation=l("Potentially anyone on the Internet will be able to access your folder, even if they do not have an account on this system. Is this information suitable for the public Internet?"):""==this.uid&&(confirmation=l("Any user with an account on this system will be able to access your folder. Are you certain you trust them all?"))),this.$confirmation=confirmation,confirmation)},User.prototype.$rightsAreDirty=function(){return this.rights&&!_.isEqual(this.rights,this.$shadowRights)},User.prototype.$resetRights=function(zero){var _this=this;zero?_.map(_.keys(this.rights),function(key){angular.isString(_this.rights[key])?_this.rights[key]="None":_this.rights[key]=0}):this.rights=angular.copy(this.$shadowRights)},User.prototype.$folders=function(type){var _this=this,deferred=User.$q.defer(),param={type:type};return this.$$folders?deferred.resolve(this.$$folders):User.$$resource.userResource(this.uid).fetch(null,"foldersSearch",param).then(function(response){_this.$$folders=response.folders,deferred.resolve(response.folders)}),deferred.promise},User.prototype.$omit=function(){var user={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(user[key]=value)}),user},User.prototype.toString=function(){return"[User "+this.c_email+"]"}}(),function(){"use strict";function sgFocus($rootScope,$timeout){return function(name){$timeout(function(){$rootScope.$broadcast("sgFocusOn",name)})}}sgFocus.$inject=["$rootScope","$timeout"],angular.module("SOGo.Common").factory("sgFocus",sgFocus)}(),function(){"use strict";function sgAvatarImage(){return{restrict:"AE",replace:!0,scope:{size:"@",email:"=sgEmail",src:"=sgSrc"},template:'',bindToController:!0,controller:"sgAvatarImageController",controllerAs:"vm"}}function sgAvatarImageController($scope,$element,Gravatar){var vm=this;$scope.$watch("vm.email",function(email){email&&!vm.url&&(vm.url=Gravatar(email,vm.size))}),"sg-src"in $element[0].attributes&&$scope.$watch("vm.src",function(src){src&&(vm.url=src)})}sgAvatarImageController.$inject=["$scope","$element","Gravatar"],angular.module("SOGo.Common").directive("sgAvatarImage",sgAvatarImage).controller("sgAvatarImageController",sgAvatarImageController)}(),function(){"use strict";function sgColorPicker($parse){function link(scope,iElement,iAttr,controller){controller.doSelect=$parse(iElement.attr("sg-on-select"))}return{restrict:"E",template:["",' '," color_lens"," ",' ',' ',' '," "," ",""].join(""),replace:!0,bindToController:!0,controller:sgColorPickerController,controllerAs:"$sgColorPickerController",link:link}}function sgColorPickerController($scope,sgColors){var vm=this;vm.colors=sgColors.selection,vm.select=function(color){vm.doSelect($scope,{color:color})}}sgColorPicker.$inject=["$parse"],sgColorPickerController.$inject=["$scope","sgColors"],angular.module("SOGo.Common").directive("sgColorPicker",sgColorPicker)}(),function(){"use strict";function sgCompile($compile){function sgCompileLink(scope,element,attrs){var ensureCompileRunsOnce=scope.$watch(function(scope){return scope.$eval(attrs.sgCompile)},function(value){element.html(value),$compile(element.contents())(scope),ensureCompileRunsOnce()})}return{restrict:"A",link:sgCompileLink}}sgCompile.$inject=["$compile"],angular.module("SOGo.Common").directive("sgCompile",sgCompile)}(),function(){"use strict";function sgEnter(){var ENTER_KEY=13;return function(scope,element,attrs){element.bind("keydown keypress",function(event){event.which===ENTER_KEY&&(scope.$apply(function(){scope.$eval(attrs.sgEnter)}),event.preventDefault())})}}angular.module("SOGo.Common").directive("sgEnter",sgEnter)}(),function(){"use strict";function sgEscape(){var ESCAPE_KEY=27;return function(scope,elem,attrs){elem.bind("keydown",function(event){event.keyCode===ESCAPE_KEY&&scope.$apply(attrs.sgEscape)})}}angular.module("SOGo.Common").directive("sgEscape",sgEscape)}(),function(){"use strict";function sgFocusOn(){return function(scope,elem,attr){scope.$on("sgFocusOn",function(e,name){name===attr.sgFocusOn&&(elem[0].focus(),elem[0].select())})}}angular.module("SOGo.Common").directive("sgFocusOn",sgFocusOn)}(),function(){"use strict";function sgFolderStylesheet(){return{restrict:"A",require:"ngModel",scope:{ngModel:"="},template:['"].join("")}}angular.module("SOGo.Common").directive("sgFolderStylesheet",sgFolderStylesheet)}(),function(){"use strict";function sgSearchPreTransclude($parse){function compile(tElement,tAttr){var inputEl=(tElement.find("md-input-container"),tElement.find("input")),selectEl=tElement.find("md-select"),buttonEl=tElement.find("md-button");return inputEl.attr("ng-model","$sgSearchController.searchText"),inputEl.attr("ng-model-options","$sgSearchController.searchTextOptions"),inputEl.attr("ng-change","$sgSearchController.onChange()"),selectEl&&(selectEl.attr("ng-model","$sgSearchController.searchField"),selectEl.attr("ng-change","$sgSearchController.onChange()")),buttonEl&&buttonEl.attr("sg-search-cancel")?(buttonEl.attr("ng-click",buttonEl.attr("sg-search-cancel")),buttonEl.removeAttr("sg-search-cancel")):buttonEl=null,function(scope,iElement,iAttr,controller){var compiledButtonEl=iElement.find("button");controller.doSearch=$parse(iElement.attr("sg-search")),buttonEl&&compiledButtonEl&&compiledButtonEl.on("click",controller.cancelSearch)}}return{restrict:"A",controller:"sgSearchController",controllerAs:"$sgSearchController",priority:1001,compile:compile}}function sgSearch(){function compile(tElement,tAttr){return function(scope,iElement,iAttr,controller,transclude){transclude(function(clone){iElement.append(clone)})}}return{restrict:"A",priority:1e3,transclude:!0,compile:compile}}function sgSearchController($scope,$element){var vm=this;vm.previous={searchText:"",searchField:""},vm.searchText=null,vm.searchTextOptions={updateOn:"default blur",debounce:{"default":300,blur:0}},vm.onChange=function(){null!==vm.searchText&&(vm.searchText!=vm.previous.searchText||vm.searchField!=vm.previous.searchField)&&((vm.searchText.length>2||0===vm.searchText.length)&&vm.doSearch($scope,{searchText:vm.searchText,searchField:vm.searchField}),vm.previous={searchText:vm.searchText,searchField:vm.searchField})},vm.cancelSearch=function(){vm.searchText=""}}sgSearchPreTransclude.$inject=["$parse"],sgSearchController.$inject=["$scope","$element"],angular.module("SOGo.Common").controller("sgSearchController",sgSearchController).directive("sgSearch",sgSearchPreTransclude).directive("sgSearch",sgSearch)}(),function(){"use strict";function sgSubscribe(User){return{restrict:"A",scope:{folderType:"@sgSubscribe",onFolderSelect:"&sgSubscribeOnSelect"},replace:!1,bindToController:!0,controller:sgSubscribeDialogController,controllerAs:"$sgSubscribeDialogController",link:link}}function link(scope,element,attrs,controller){element.find("input");element.on("click",controller.showDialog)}function sgSubscribeDialogController($mdDialog){var vm=this;vm.showDialog=function(){$mdDialog.show({templateUrl:"../Contacts/UIxContactsUserFolders",clickOutsideToClose:!0,locals:{folderType:vm.folderType,onFolderSelect:vm.onFolderSelect},controller:sgSubscribeController,controllerAs:"subscribe"})}}function sgSubscribeController(folderType,onFolderSelect,User){var vm=this;vm.selectedUser=null,vm.users=User.$users,vm.searchTextOptions={updateOn:"default blur",debounce:{"default":300,blur:0}},vm.onChange=function(){User.$filter(vm.searchText).then(function(){vm.selectedUser&&_.isUndefined(_.find(User.$users,function(user){return user.uid==vm.selectedUser.uid}))&&(vm.selectedUser=null)})},vm.selectUser=function(i){vm.selectedUser==vm.users[i]?vm.selectedUser=null:vm.users[i].$folders(folderType).then(function(){vm.selectedUser=vm.users[i]})},vm.selectFolder=function(folder){onFolderSelect({folderData:folder})}}sgSubscribe.$inject=["User"],sgSubscribeDialogController.$inject=["$mdDialog"],sgSubscribeController.$inject=["folderType","onFolderSelect","User"],angular.module("SOGo.Common").directive("sgSubscribe",sgSubscribe)}(),function(){"use strict";function sgTarget(){function sgTargetLink(scope,element,attrs){console.log("sgTargetLink...");var ensureTargetRunsOnce=scope.$watch(function(scope){return scope.$eval(attrs.sgTarget)},function(value){element.html(value),ensureTargetRunsOnce()})}return{priority:1,restrict:"A",link:sgTargetLink}}angular.module("SOGo.Common").directive("sgTarget",sgTarget)}(),function(){"use strict";function sgToggleGrid($parse){ +function link(scope,iElement,attrs,ctrl){function toggle(day){var i=_.findIndex(modelDays,function(o){return modelAttr?o[modelAttr]==day:o==day});if(0>i)if(modelAttr){var o={};o[modelAttr]=day,modelDays.push(o)}else modelDays.push(day);else modelDays.splice(i,1)}var tile,i,modelDays,modelAttr,ensureInitRunsOnce,toggleClass,tiles=iElement.find("md-grid-tile");for(ensureInitRunsOnce=scope.$watch(function(){return $parse(attrs.sgToggleGrid)(scope)},function(days){if(angular.isDefined(days)){var flattenedDays=days;modelDays=days,attrs.sgToggleGridAttr&&(modelAttr=attrs.sgToggleGridAttr,flattenedDays=_.pluck(days,attrs.sgToggleGridAttr)),_.each(tiles,function(o){var tile=angular.element(o);_.contains(flattenedDays,tile.attr("value"))&&tile.addClass("sg-active")}),ensureInitRunsOnce()}}),toggleClass=function(){var tile=angular.element(this),day=tile.attr("value");tile.toggleClass("sg-active"),toggle(day)},i=0;i>2,enc2=(3&chr1)<<4|chr2>>4,enc3=(15&chr2)<<2|chr3>>6,enc4=63&chr3,isNaN(chr2)?enc3=enc4=64:isNaN(chr3)&&(enc4=64),output=output+this._base64_keyStr.charAt(enc1)+this._base64_keyStr.charAt(enc2)+this._base64_keyStr.charAt(enc3)+this._base64_keyStr.charAt(enc4);return output},String.prototype.base64decode=function(){for(var chr1,chr2,chr3,enc1,enc2,enc3,enc4,output="",i=0,input=""+this;i>4,chr2=(15&enc2)<<4|enc3>>2,chr3=(3&enc3)<<6|enc4,output+=String.fromCharCode(chr1),64!=enc3&&(output+=String.fromCharCode(chr2)),64!=enc4&&(output+=String.fromCharCode(chr3));return output},String.prototype.md5=function(){if(this.length){var md5=function(s){function L(k,d){return k<>>32-d}function K(G,k){var I,d,F,H,x;return F=2147483648&G,H=2147483648&k,I=1073741824&G,d=1073741824&k,x=(1073741823&G)+(1073741823&k),I&d?2147483648^x^F^H:I|d?1073741824&x?3221225472^x^F^H:1073741824^x^F^H:x^F^H}function r(d,F,k){return d&F|~d&k}function q(d,F,k){return d&k|F&~k}function p(d,F,k){return d^F^k}function n(d,F,k){return F^(d|~k)}function u(G,F,aa,Z,k,H,I){return G=K(G,K(K(r(F,aa,Z),k),I)),K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){return G=K(G,K(K(q(F,aa,Z),k),I)),K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){return G=K(G,K(K(p(F,aa,Z),k),I)),K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){return G=K(G,K(K(n(F,aa,Z),k),I)),K(L(G,H),F)}function e(G){for(var Z,F=G.length,x=F+8,k=(x-x%64)/64,I=16*(k+1),aa=Array(I-1),d=0,H=0;F>H;)Z=(H-H%4)/4,d=H%4*8,aa[Z]=aa[Z]|G.charCodeAt(H)<>>29,aa}function B(x){var G,d,k="",F="";for(d=0;3>=d;d++)G=x>>>8*d&255,F="0"+G.toString(16),k+=F.substr(F.length-2,2);return k}function J(k){k=k.replace(/rn/g,"n");for(var d="",F=0;Fx?d+=String.fromCharCode(x):x>127&&2048>x?(d+=String.fromCharCode(x>>6|192),d+=String.fromCharCode(63&x|128)):(d+=String.fromCharCode(x>>12|224),d+=String.fromCharCode(x>>6&63|128),d+=String.fromCharCode(63&x|128))}return d}var P,h,E,v,g,Y,X,W,V,C=Array(),S=7,Q=12,N=17,M=22,A=5,z=9,y=14,w=20,o=4,m=11,l=16,j=23,U=6,T=10,R=15,O=21;for(s=J(s),C=e(s),Y=1732584193,X=4023233417,W=2562383102,V=271733878,P=0;P12&&(p="pm",i=hours%12),10>minutes&&(m="0"+minutes),newString=newString.replace("%H",10>hours?"0"+hours:hours),newString=newString.replace("%I",10>i?"0"+i:i),newString=newString.replace("%M",m),newString=newString.replace("%p",p)},Date.prototype.daysUpTo=function(otherDate){var days=[],day1=this.getTime(),day2=otherDate.getTime();if(day1>day2){var tmp=day1;day1=day2,day2=tmp}for(var nbrDays=Math.round((day2-day1)/864e5)+1,i=0;nbrDays>i;i++){var newDate=new Date;newDate.setTime(day1+864e5*i),days.push(newDate)}return days},String.prototype.isValidEmail=function(){var emailRE=/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i;return emailRE.test(this)},String.prototype.asCSSIdentifier=function(){for(var characters=["_","\\.","#","@","\\*",":",","," ","'","&","\\+"],escapeds=["_U_","_D_","_H_","_A_","_S_","_C_","_CO_","_SP_","_SQ_","_AM_","_P_"],newString=this,i=0;iyear&&(year=""+(year+1900)),1==month.length&&(month="0"+month),1==day.length&&(day="0"+day),"-"==separator?str=year+"-"+month+"-"+day:str=day+"/"+month+"/"+year,str},Date.prototype.addDays=function(nbrDays){var milliSeconds=this.getTime();milliSeconds+=864e5*nbrDays,this.setTime(milliSeconds)},Date.prototype.addHours=function(nbrHours){var milliSeconds=this.getTime();milliSeconds+=36e5*nbrHours,this.setTime(milliSeconds)},Date.prototype.addMinutes=function(nbrMinutes){var milliSeconds=this.getTime();milliSeconds+=6e4*nbrMinutes,this.setTime(milliSeconds)},Date.prototype.beginOfDay=function(){var beginOfDay=new Date(this.getTime());return beginOfDay.setHours(0),beginOfDay.setMinutes(0),beginOfDay.setSeconds(0),beginOfDay.setMilliseconds(0),beginOfDay},Date.prototype.beginOfWeek=function(){var offset=firstDayOfWeek-this.getDay();offset>0&&(offset-=7);var beginOfWeek=this.beginOfDay();return beginOfWeek.setHours(12),beginOfWeek.addDays(offset),beginOfWeek},Date.prototype.endOfWeek=function(){var endOfWeek=this.beginOfWeek();return endOfWeek.addDays(6),endOfWeek.setHours(23),endOfWeek.setMinutes(59),endOfWeek.setSeconds(59),endOfWeek.setMilliseconds(999),endOfWeek},Date.prototype.getDayString=function(){var newString=this.getYear();1e3>newString&&(newString+=1900);var month=""+(this.getMonth()+1);1==month.length&&(month="0"+month),newString+=month;var day=""+this.getDate();return 1==day.length&&(day="0"+day),newString+=day},Date.prototype.getHourString=function(){var newString=this.getHours()+"00";return 3==newString.length&&(newString="0"+newString),newString}; //# sourceMappingURL=Common.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Common.js.map b/UI/WebServerResources/js/Common.js.map index 77ef651c2..5d36d1809 100644 --- a/UI/WebServerResources/js/Common.js.map +++ b/UI/WebServerResources/js/Common.js.map @@ -1 +1 @@ -{"version":3,"file":"Common.js","sources":["Common/utils.js","Common/Common.app.js","Common/decodeUri.filter.js","Common/encodeUri.filter.js","Common/loc.filter.js","Common/range.filter.js","Common/AclController.js","Common/navController.js","Common/Acl.service.js","Common/Alarm.service.js","Common/Authentication.service.js","Common/Dialog.service.js","Common/Gravatar.service.js","Common/Resource.service.js","Common/User.service.js","Common/sgFocus.service.js","Common/sgAvatarImage.directive.js","Common/sgColorPicker.directive.js","Common/sgCompile.directive.js","Common/sgEnter.directive.js","Common/sgEscape.directive.js","Common/sgFocus.directive.js","Common/sgFolderStylesheet.directive.js","Common/sgSearch.directive.js","Common/sgSubscribe.directive.js","Common/sgToggleGrid.directive.js"],"names":["l","key","arguments","value","labels","clabels","i","j","length","replace","configure","$mdThemingProvider","definePalette","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","contrastDefaultColor","contrastDarkColors","contrastLightColors","1000","theme","primaryPalette","default","hue-1","hue-2","hue-3","accentPalette","backgroundPalette","angular","module","baseURL","ApplicationBaseURL","activeUser","param","settings","login","UserLogin","identification","UserIdentification","email","UserEmail","language","UserLanguage","folderURL","UserFolderURL","isSuperUser","IsSuperUser","path","calendar","UserCalendarPath","contacts","UserContactsPath","mail","UserMailPath","preferences","UserPreferencesPath","administration","UserAdministrationPath","logoff","UserLogoffPath","constant","selection","sm","gt-sm","md","gt-md","lg","gt-lg","config","$inject","decodeUri","$window","decodeURIComponent","filter","encodeUri","encodeURIComponent","loc","range","n","res","parseInt","push","AclController","$mdDialog","Dialog","usersWithACL","User","folder","userFilter","$query","$filter","$acl","users","closeModal","$resetUsersRights","hide","saveModal","$saveUsersRights","then","data","status","alert","confirmChange","user","confirmation","$confirmRights","vm","showing","message","removeUser","$removeUser","uid","addUser","$addUser","userToAdd","searchText","error","selectUser","selectedUser","$rights","this","controller","navController","$scope","$timeout","$interval","$http","$mdSidenav","$mdBottomSheet","$mdMedia","$log","sgConstant","sgSettings","Alarm","currentDay","window","get","success","secondsBeforeTomorrow","toggleLeft","toggle","debug","toggleRight","openBottomSheet","show","parent","element","document","getElementById","templateUrl","toggleDetailView","detail","toggleClass","$watch","newVal","isGtMedium","getAlarms","Acl","folderId","factory","$q","Settings","Resource","extend","$$resource","$User","prototype","$users","_this","deferred","defer","resolve","promise","fetch","response","forEach","canSubscribeUser","isSubscribed","wasSubscribed","bind","_","indexOf","pluck","userClass","isGroup","reject","splice","$resetRights","deferredSave","deferredSubscribe","action","$rightsAreDirty","$omit","save","$shadowRights","copy","rights","uids","join","all","currentAlarm","AlarmService","$mdToast","$toast","now","Date","browserTime","Math","floor","getTime","alarms","sort","a","b","x","y","next","pop","utc","url","alarmTime","delay","f","showAlarm","cancel","AlarmController","scope","reminder","ok","position","hideDelay","template","summary","locals","Authentication","readCookie","name","foundCookie","prefix","pairs","currentPair","start","cookie","split","charAt","substr","readLoginCookie","loginValues","base64decode","redirectUrl","username","domain","userName","address","baseAddress","altBaseAddress","parts","hostpart","protocol","newAddress","location","href","startsWith","endsWith","getService","passwordPolicyConfig","service","d","password","rememberLogin","loginSuffix","method","loginCookie","expire","grace","msg","perr","LDAPPasswordPolicyError","PolicyNoError","PolicyAccountLocked","changePassword","newPassword","PolicyPasswordModNotAllowed","PolicyInsufficientPasswordQuality","PolicyPasswordTooShort","PolicyPasswordTooYoung","PolicyPasswordInHistory","formatted","PolicyPasswordUnknown","PolicyPasswordSystemUnknown","$get","PolicyPasswordChangeUnsupported","PolicyPasswordExpired","PolicyChangeAfterReset","PolicyMustSupplyOldPassword","provider","DialogService","$modal","title","content","confirm","options","prompt","label","PromptDialogController","o","body","clickOutsideToClose","escapeToClose","inputType","Gravatar","size","hash","s","substring","md5","_http","_q","_path","_activeUser","$factory","userResource","compact","escape","params","flatten","newguid","create","post","id","newValue","remove","userData","init","$gravatar","search","excludedUsers","when","results","index","compareUids","find","each","isUndefined","$$shortFormat","$shortFormat","$$image","image","c_email","empty","fullname","cn","no_email","$isAnonymous","$isSpecial","$confirmation","some","values","isEqual","zero","map","keys","isString","$folders","type","$$folders","folders","toString","sgFocus","$rootScope","$broadcast","sgAvatarImage","restrict","src","bindToController","controllerAs","sgAvatarImageController","$element","attributes","directive","sgColorPicker","$parse","link","iElement","iAttr","doSelect","attr","sgColorPickerController","sgColors","colors","select","color","sgCompile","$compile","sgCompileLink","attrs","ensureCompileRunsOnce","$eval","html","contents","sgEnter","ENTER_KEY","event","which","$apply","preventDefault","sgEscape","ESCAPE_KEY","elem","keyCode","sgFocusOn","$on","e","focus","sgFolderStylesheet","require","ngModel","sgSearchPreTransclude","compile","tElement","tAttr","inputEl","selectEl","buttonEl","removeAttr","compiledButtonEl","doSearch","on","cancelSearch","priority","sgSearch","transclude","clone","append","sgSearchController","previous","searchField","searchTextOptions","updateOn","debounce","blur","onChange","sgSubscribe","folderType","onFolderSelect","sgSubscribeDialogController","showDialog","sgSubscribeController","selectFolder","folderData","sgToggleGrid","ctrl","day","findIndex","modelDays","modelAttr","tile","ensureInitRunsOnce","tiles","days","isDefined","flattenedDays","sgToggleGridAttr","contains","addClass","String","suffix","pattern","isNumber","lastIndexOf","_base64_keyStr","base64encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","input","utf8encode","charCodeAt","isNaN","fromCharCode","L","k","K","G","I","F","H","r","q","p","u","aa","Z","D","t","Array","B","J","P","h","E","v","g","Y","X","W","V","C","S","Q","N","M","A","z","w","m","U","T","R","O","toLowerCase","capitalize","toUpperCase","slice","asDate","newDate","date","formatTime","hours","minutes","newString","daysUpTo","otherDate","day1","day2","tmp","nbrDays","round","setTime","isValidEmail","emailRE","test","asCSSIdentifier","characters","escapeds","re","RegExp","timeInterval","interval","stringWithSeparator","separator","month","getMonth","getDate","year","getYear","str","addDays","milliSeconds","addHours","nbrHours","addMinutes","nbrMinutes","beginOfDay","setHours","setMinutes","setSeconds","setMilliseconds","beginOfWeek","offset","firstDayOfWeek","getDay","endOfWeek","getDayString","getHourString","getHours"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\nString.prototype.endsWith = function(suffix) {\n return this.indexOf(suffix, this.length - suffix.length) !== -1;\n};\n\nString.prototype.startsWith = function(pattern, position) {\n position = angular.isNumber(position) ? position : 0;\n return this.lastIndexOf(pattern, position) === position;\n};\n\nString.prototype._base64_keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nString.prototype.base64encode = function () {\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n \n var input = this.utf8encode();\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n \n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n \n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n \n output = output +\n this._base64_keyStr.charAt(enc1) + this._base64_keyStr.charAt(enc2) +\n this._base64_keyStr.charAt(enc3) + this._base64_keyStr.charAt(enc4);\n }\n \n return output;\n};\n\nString.prototype.base64decode = function() { \n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n \n var input = \"\" + this; // .replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\")\n while (i < input.length) {\n enc1 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc2 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc3 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc4 = this._base64_keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n \n output = output + String.fromCharCode(chr1);\n \n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n }\n\n return output;\n};\n\nString.prototype.md5 = function() {\n if (!this.length) { return; }\n // MD5 (Message-Digest Algorithm) by WebToolkit\n var md5 = function(s){function L(k,d){return(k<>>(32-d));}function K(G,k){var I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H);}if(I|d){if(x&1073741824){return(x^3221225472^F^H);}else{return(x^1073741824^F^H);}}else{return(x^F^H);}}function r(d,F,k){return(d&F)|((~d)&k);}function q(d,F,k){return(d&k)|(F&(~k));}function p(d,F,k){return(d^F^k);}function n(d,F,k){return(F^(d|(~k)));}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F);}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F);}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F);}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F);}function e(G){var Z;var F=G.length;var x=F+8;var k=(x-(x%64))/64;var I=(k+1)*16;var aa=Array(I-1);var d=0;var H=0;while(H>>29;return aa;}function B(x){var k=\"\",F=\"\",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F=\"0\"+G.toString(16);k=k+F.substr(F.length-2,2);}return k;}function J(k){k=k.replace(/rn/g,\"n\");var d=\"\";for(var F=0;F127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128);}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128);}}}return d;}var C=Array();var P,h,E,v,g,Y,X,W,V;var S=7,Q=12,N=17,M=22;var A=5,z=9,y=14,w=20;var o=4,m=11,l=16,j=23;var U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P 12) {\n p = 'pm';\n i = hours % 12;\n }\n if (minutes < 10) {\n m = '0' + minutes;\n }\n\n // %H : hour as a decimal number using 24-hour clock\n newString = newString.replace(\"%H\", hours < 10 ? '0' + hours : hours);\n // %I : hour as a decimal number using 12-hour clock\n newString = newString.replace(\"%I\", i < 10 ? '0' + i : i);\n // %M : minute as decimal number\n newString = newString.replace(\"%M\", m);\n // %p : 'am' or 'pm'\n newString = newString.replace(\"%p\", p);\n\n return newString;\n};\n\nDate.prototype.daysUpTo = function(otherDate) {\n var days = [];\n\n var day1 = this.getTime();\n var day2 = otherDate.getTime();\n if (day1 > day2) {\n var tmp = day1;\n day1 = day2;\n day2 = tmp;\n }\n\n var nbrDays = Math.round((day2 - day1) / 86400000) + 1;\n for (var i = 0; i < nbrDays; i++) {\n var newDate = new Date();\n newDate.setTime(day1 + (i * 86400000));\n days.push(newDate);\n }\n\n return days;\n};\n\nString.prototype.isValidEmail = function() {\n var emailRE = /^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$/i;\n return emailRE.test(this);\n};\n\nString.prototype.asCSSIdentifier = function() {\n var characters = [ '_' , '\\\\.', '#' , '@' , '\\\\*', ':' , ',' , ' ', \"'\", '&', '\\\\+' ];\n var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_CO_', '_SP_', '_SQ_', '_AM_', '_P_' ];\n\n var newString = this;\n for (var i = 0; i < characters.length; i++) {\n var re = new RegExp(characters[i], 'g');\n newString = newString.replace(re, escapeds[i]);\n }\n\n if (/^\\d+/.test(newString)) {\n newString = '_' + newString;\n }\n\n return newString;\n};\n\nString.prototype.timeInterval = function () {\n var interval;\n if (this == \"once_per_hour\")\n interval = 3600;\n else if (this == \"every_minute\")\n interval = 60;\n else {\n interval = parseInt(this.substr(6)) * 60;\n }\n\n return interval;\n};\n\nDate.prototype.stringWithSeparator = function(separator) {\n var month = '' + (this.getMonth() + 1);\n var day = '' + this.getDate();\n var year = this.getYear();\n if (year < 1000)\n year = '' + (year + 1900);\n if (month.length == 1)\n month = '0' + month;\n if (day.length == 1)\n day = '0' + day;\n\n if (separator == '-')\n str = year + '-' + month + '-' + day;\n else\n str = day + '/' + month + '/' + year;\n\n return str;\n};\n\nDate.prototype.addDays = function(nbrDays) {\n var milliSeconds = this.getTime();\n milliSeconds += 86400000 * nbrDays;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.addHours = function(nbrHours) {\n var milliSeconds = this.getTime();\n milliSeconds += 3600000 * nbrHours;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.addMinutes = function(nbrMinutes) {\n var milliSeconds = this.getTime();\n milliSeconds += 60000 * nbrMinutes;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.beginOfDay = function() {\n var beginOfDay = new Date(this.getTime());\n beginOfDay.setHours(0);\n beginOfDay.setMinutes(0);\n beginOfDay.setSeconds(0);\n beginOfDay.setMilliseconds(0);\n\n return beginOfDay;\n};\n\nDate.prototype.beginOfWeek = function() {\n var offset = firstDayOfWeek - this.getDay();\n if (offset > 0)\n offset -= 7;\n\n var beginOfWeek = this.beginOfDay();\n beginOfWeek.setHours(12);\n beginOfWeek.addDays(offset);\n\n return beginOfWeek;\n};\n\nDate.prototype.endOfWeek = function() {\n var endOfWeek = this.beginOfWeek();\n endOfWeek.addDays(6);\n\n endOfWeek.setHours(23);\n endOfWeek.setMinutes(59);\n endOfWeek.setSeconds(59);\n endOfWeek.setMilliseconds(999);\n\n return endOfWeek;\n};\n\n// YYYYMMDD\nDate.prototype.getDayString = function() {\n var newString = this.getYear();\n if (newString < 1000) newString += 1900;\n var month = '' + (this.getMonth() + 1);\n if (month.length == 1)\n month = '0' + month;\n newString += month;\n var day = '' + this.getDate();\n if (day.length == 1)\n day = '0' + day;\n newString += day;\n\n return newString;\n};\n\n// MMHH\nDate.prototype.getHourString = function() {\n var newString = this.getHours() + '00';\n if (newString.length == 3)\n newString = '0' + newString;\n\n return newString;\n};\n\nfunction l() {\n var key = arguments[0];\n var value = key;\n if (labels[key]) {\n value = labels[key];\n }\n else if (clabels[key]) {\n value = clabels[key];\n }\n for (var i = 1, j = 0; i < arguments.length; i++, j++) {\n value = value.replace('%{' + j + '}', arguments[i]);\n }\n\n return value;\n}\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.Common', ['ngMaterial'])\n .value('sgSettings', {\n baseURL: function() {\n return ApplicationBaseURL || null;\n },\n activeUser: function(param) {\n var settings = {\n login: UserLogin || null,\n identification: UserIdentification || null,\n email: UserEmail || null,\n language: UserLanguage || null,\n folderURL: UserFolderURL || null,\n isSuperUser: IsSuperUser || null,\n path: {\n calendar: UserCalendarPath || null,\n contacts: UserContactsPath || null,\n mail: UserMailPath || null,\n preferences: UserPreferencesPath || null,\n administration: (IsSuperUser ? UserAdministrationPath : null),\n logoff: UserLogoffPath || null\n }\n };\n if (param)\n return settings[param];\n else\n return settings;\n }\n })\n\n .constant('sgColors', {\n selection: [\n '#FFFFFF',\n '#330033',\n '#C0C0C0',\n '#999999',\n '#666666',\n '#333333',\n '#000000',\n '#FFCCCC',\n '#FF6666',\n '#FF0000',\n '#CC0000',\n '#990000',\n '#660000',\n '#330000',\n '#FFCC99',\n '#FF9966',\n '#FF9900',\n '#FF6600',\n '#CC6600',\n '#993300',\n '#663300',\n '#FFFF99',\n '#FFFF66',\n '#FFCC66',\n '#FFCC33',\n '#CC9933',\n '#996633',\n '#663333',\n '#FFFFCC',\n '#FFFF33',\n '#FFFF00',\n '#FFCC00',\n '#999900',\n '#666600',\n '#333300',\n '#CCCCCC',\n '#66FF99',\n '#33FF33',\n '#33CC00',\n '#009900',\n '#006600',\n '#003300',\n '#99FFFF',\n '#33FFFF',\n '#66CCCC',\n '#00CCCC',\n '#339999',\n '#336666',\n '#003333',\n '#CCFFFF',\n '#66FFFF',\n '#33CCFF',\n '#3366FF',\n '#3333FF',\n '#000099',\n '#000066',\n '#CCCCFF',\n '#9999FF',\n '#6666CC',\n '#6633FF',\n '#6600CC',\n '#333399',\n '#330099',\n '#FFCCFF',\n '#FF99FF',\n '#CC66CC',\n '#CC33CC',\n '#993399',\n '#663366',\n '#99FF99'\n ]\n })\n\n // md break-points values are hard-coded in angular-material/src/core/util/constant.js\n // $mdMedia has a built-in support for those values but can also evaluate others\n // For some reasons, angular-material's break-points don't match the specs\n // Here we define values according to specs\n .constant('sgConstant', {\n 'sm': '(max-width: 600px)',\n 'gt-sm': '(min-width: 600px)',\n 'md': '(min-width: 600px) and (max-width: 1024px)',\n 'gt-md': '(min-width: 1025px)',\n 'lg': '(min-width: 1024px) and (max-width: 1280px)',\n 'gt-lg': '(min-width: 1280px)'\n })\n\n .config(configure);\n\n configure.$inject = ['$mdThemingProvider'];\n function configure($mdThemingProvider) {\n $mdThemingProvider.definePalette('sogo-green', {\n '50': 'eaf5e9',\n '100': 'cbe5c8',\n '200': 'aad6a5',\n '300': '88c781',\n '400': '66b86a',\n '500': '56b04c',\n '600': '4da143',\n '700': '388e3c',\n '800': '367d2e',\n '900': '225e1b',\n 'A100': 'b9f6ca',\n 'A200': '69f0ae',\n 'A400': '00e676',\n 'A700': '00c853',\n 'contrastDefaultColor': 'dark',\n 'contrastDarkColors': '50 100 200',\n 'contrastLightColors': '300 400 500 600 700 800 900'\n });\n $mdThemingProvider.definePalette('sogo-blue', {\n '50': 'f0faf9',\n '100': 'e1f5f3',\n '200': 'ceebe8',\n '300': 'bfe0dd',\n '400': 'b2d6d3',\n '500': 'a1ccc8',\n '600': '8ebfbb',\n '700': '7db3b0',\n '800': '639997',\n '900': '4d8080',\n 'A100': 'd4f7fa',\n 'A200': 'c3f5fa',\n 'A400': '53e3f0',\n 'A700': '00b0c0',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': ['50', '100', '200'],\n 'contrastLightColors': ['300', '400', '500', '600', '700', '800', '900', 'A100', 'A200', 'A400', 'A700']\n });\n $mdThemingProvider.definePalette('sogo-paper', {\n '50': 'fcf7f8',\n '100': 'f7f1dc',\n '200': 'ede5ca',\n '300': 'e6d8ba',\n '400': 'e2d2a3',\n '500': 'd6c48d',\n '600': 'baa870',\n '700': '857545',\n '800': '524517',\n '900': '433809',\n '1000': '000000',\n 'A100': 'ffffff',\n 'A200': 'eeeeee',\n 'A400': 'bdbdbd',\n 'A700': '616161',\n 'contrastDefaultColor': 'dark',\n 'contrastLightColors': '800 900'\n });\n // Default theme definition\n // .primaryColor will soon be deprecated in favor of primaryPalette (already on dev builds https://groups.google.com/forum/m/#!topic/ngmaterial/-sXR8CYBMPg)\n $mdThemingProvider.theme('default')\n .primaryPalette('sogo-blue', {\n 'default': '300',\n 'hue-1': '100',\n 'hue-2': '400',\n 'hue-3': 'A700'\n })\n .accentPalette('sogo-green', {\n 'default': '500',\n 'hue-1': '200',\n 'hue-2': '300',\n 'hue-3': 'A700'\n })\n .backgroundPalette('sogo-paper', {\n 'default': '100',\n 'hue-1': '200',\n 'hue-2': '50',\n 'hue-3': '500'\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n decodeUri.$inject = ['$window'];\n function decodeUri($window) {\n return $window.decodeURIComponent;\n }\n\n angular.module('SOGo.Common')\n .filter('decodeUri', decodeUri);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n encodeUri.$inject = ['$window'];\n function encodeUri($window) {\n return $window.encodeURIComponent;\n }\n\n angular.module('SOGo.Common')\n .filter('encodeUri', encodeUri);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * loc - A simple filter to return the localized version of a string.\n * @memberof SOGo.Common\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n function loc() {\n return l;\n }\n\n angular.module('SOGo.Common')\n .filter('loc', loc);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * range - A simple filter that will return an array of the size of its argument.\n * @memberof SOGo.Common\n */\n(function () {\n 'use strict';\n\n function range() {\n return function(n) {\n var res = [];\n for (var i = 0; i < parseInt(n); i++) {\n res.push(i);\n }\n return res;\n };\n }\n\n angular.module('SOGo.Common')\n .filter('range', range);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AclController.$inject = ['$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder'];\n function AclController($mdDialog, Dialog, usersWithACL, User, folder) {\n var vm = this;\n\n vm.users = usersWithACL; // ACL users\n vm.folder = folder;\n vm.selectedUser = null;\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.closeModal = closeModal;\n vm.saveModal = saveModal;\n vm.confirmChange = confirmChange;\n vm.removeUser = removeUser;\n vm.addUser = addUser;\n vm.selectUser = selectUser;\n vm.confirmation = { showing: false,\n message: ''};\n\n function userFilter($query) {\n return User.$filter($query, folder.$acl.users);\n }\n\n function closeModal() {\n folder.$acl.$resetUsersRights(); // cancel changes\n $mdDialog.hide();\n }\n\n function saveModal() {\n folder.$acl.$saveUsersRights().then(function() {\n $mdDialog.hide();\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function confirmChange(user) {\n var confirmation = user.$confirmRights();\n if (confirmation) {\n vm.confirmation.showing = true;\n vm.confirmation.message = confirmation;\n }\n }\n\n function removeUser(user) {\n folder.$acl.$removeUser(user.uid).catch(function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function addUser(data) {\n if (data) {\n folder.$acl.$addUser(data).then(function() {\n vm.userToAdd = '';\n vm.searchText = '';\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n }\n\n function selectUser(user) {\n if (vm.selectedUser == user) {\n vm.selectedUser = null;\n }\n else {\n vm.selectedUser = user;\n vm.selectedUser.$rights();\n }\n }\n }\n\n angular\n .module('SOGo.Common')\n .controller('AclController', AclController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n navController.$inject = ['$scope', '$timeout', '$interval', '$http', '$mdSidenav', '$mdBottomSheet', '$mdMedia', '$log', 'sgConstant', 'sgSettings', 'Alarm'];\n function navController($scope, $timeout, $interval, $http, $mdSidenav, $mdBottomSheet, $mdMedia, $log, sgConstant, sgSettings, Alarm) {\n\n $scope.activeUser = sgSettings.activeUser();\n $scope.baseURL = sgSettings.baseURL();\n\n // Show current day in top bar\n $scope.currentDay = window.currentDay;\n $timeout(function() {\n // Update date when day ends\n $interval(function() {\n $http.get('../date').success(function(data) {\n $scope.currentDay = data;\n });\n }, 24 * 3600 * 1000);\n }, window.currentDay.secondsBeforeTomorrow * 1000);\n\n $scope.toggleLeft = function () {\n $mdSidenav('left').toggle()\n .then(function () {\n $log.debug(\"toggle left is done\");\n });\n };\n $scope.toggleRight = function () {\n $mdSidenav('right').toggle()\n .then(function () {\n $log.debug(\"toggle RIGHT is done\");\n });\n };\n $scope.openBottomSheet = function() {\n $mdBottomSheet.show({\n parent: angular.element(document.getElementById('left-sidenav')),\n templateUrl: 'bottomSheetTemplate.html'\n });\n };\n $scope.toggleDetailView = function() {\n var detail = angular.element(document.getElementById('detailView'));\n detail.toggleClass('sg-close');\n };\n $scope.$watch(function() {\n return $mdMedia(sgConstant['gt-md']);\n }, function(newVal) {\n $scope.isGtMedium = newVal;\n });\n\n Alarm.getAlarms();\n }\n\n angular.module('SOGo.Common')\n .controller('navController', navController);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name Acl\n * @constructor\n * @param {String} folderId - the folder ID associated to the ACLs\n */\n function Acl(folderId) {\n this.folderId = folderId;\n }\n\n /**\n * @memberof Acl\n * @desc The factory we'll use to register with Angular.\n * @return the Acl constructor\n */\n Acl.factory = ['$q', '$timeout', 'sgSettings', 'Resource', 'User', function($q, $timeout, Settings, Resource, User) {\n angular.extend(Acl, {\n $q: $q,\n $timeout: $timeout,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n $User: User\n });\n\n return Acl;\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of User in Angular module.\n */\n angular.module('SOGo.Common').factory('Acl', Acl.factory);\n\n /**\n * @function $users\n * @memberof Acl.prototype\n * @desc Fetch the list of users that have specific rights for the current folder.\n * @return a promise of an array of User objects\n */\n Acl.prototype.$users = function() {\n var _this = this,\n deferred = Acl.$q.defer(),\n user;\n if (this.users) {\n deferred.resolve(this.users);\n }\n else {\n return Acl.$$resource.fetch(this.folderId, 'acls').then(function(response) {\n _this.users = [];\n //console.debug(JSON.stringify(users, undefined, 2));\n angular.forEach(response.users, function(data) {\n user = new Acl.$User(data);\n user.canSubscribeUser = user.isSubscribed;\n user.wasSubscribed = user.isSubscribed;\n user.$rights = angular.bind(user, user.$acl, _this.folderId);\n _this.users.push(user);\n });\n deferred.resolve(_this.users);\n return _this.users;\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $addUser\n * @memberof Acl.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @see {@link User.$filter}\n */\n Acl.prototype.$addUser = function(user) {\n var _this = this,\n deferred = Acl.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.users, 'uid'), user.uid) > -1) {\n // No UID specified or user already in ACLs\n deferred.resolve();\n }\n else {\n Acl.$$resource.fetch(this.folderId, 'addUserInAcls', param).then(function() {\n user.wasSubscribed = false;\n user.userClass = user.isGroup ? 'group-user' : 'normal-user';\n user.$rights = angular.bind(user, user.$acl, _this.folderId);\n _this.users.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeUser\n * @memberof Acl.prototype\n * @desc Remove a user from the folder's ACL\n * @return a promise of the server call to remove the user from the folder's ACL\n */\n Acl.prototype.$removeUser = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Acl.$$resource.fetch(this.folderId, 'removeUserFromAcls', param).then(function() {\n var i = _.indexOf(_.pluck(_this.users, 'uid'), uid);\n if (i >= 0) {\n _this.users.splice(i, 1);\n }\n });\n };\n\n /**\n * @function $resetUsersRights\n * @memberof Acl.prototype\n * @desc Restore initial rights of all users.\n */\n Acl.prototype.$resetUsersRights = function() {\n angular.forEach(this.users, function(user) {\n user.$resetRights();\n });\n };\n\n /**\n * @function $saveUsersRights\n * @memberof Acl.prototype\n * @desc Save user rights that have changed and subscribe users that have been selected.\n * @return a promise that resolved only if the modifications and subscriptions were successful\n */\n Acl.prototype.$saveUsersRights = function() {\n var _this = this,\n deferredSave = Acl.$q.defer(),\n deferredSubscribe = Acl.$q.defer(),\n param = {action: 'saveUserRights'},\n users = [];\n\n // Save user rights\n angular.forEach(this.users, function(user) {\n if (user.$rightsAreDirty()) {\n users.push(user.$omit());\n // console.debug('save ' + JSON.stringify(user.$omit(), undefined, 2));\n }\n });\n if (users.length) {\n Acl.$$resource.save(this.folderId, users, param)\n .then(function() {\n // Save was successful; copy rights to shadow rights\n angular.forEach(_this.users, function(user) {\n if (user.$rightsAreDirty()) {\n user.$shadowRights = angular.copy(user.rights);\n }\n });\n deferredSave.resolve();\n }, deferredSave.reject);\n }\n else {\n deferredSave.resolve();\n }\n\n // Subscribe users\n users = [];\n angular.forEach(this.users, function(user) {\n if (!user.wasSubscribed && user.isSubscribed) {\n users.push(user.uid);\n // console.debug('subscribe ' + user.uid);\n }\n });\n if (users.length) {\n param = {uids: users.join(',')};\n Acl.$$resource.fetch(this.folderId, 'subscribeUsers', param)\n .then(function() {\n // Subscribe was successful; reset \"wasSubscribed\" attribute\n angular.forEach(_this.users, function(user) {\n user.wasSubscribed = user.isSubscribed;\n });\n deferredSubscribe.resolve();\n }, deferredSubscribe.reject);\n }\n else {\n deferredSubscribe.resolve();\n }\n return Acl.$q.all([deferredSave.promise, deferredSubscribe.promise]);\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Alarm\n * @constructor\n */\n function Alarm() {\n this.currentAlarm = null;\n }\n\n /**\n * @name getAlarms\n * @desc Fetch the list of alarms from the server and use the last one\n */\n Alarm.getAlarms = function() {\n var _this = this;\n var now = new Date();\n var browserTime = Math.floor(now.getTime()/1000);\n\n this.$$resource.fetch('', 'alarmslist?browserTime=' + browserTime).then(function(data) {\n \n var alarms = data.alarms.sort(function reverseSortByAlarmTime(a, b) {\n var x = parseInt(a[2]);\n var y = parseInt(b[2]);\n return (y - x);\n });\n\n if (alarms.length > 0) {\n var next = alarms.pop();\n var now = new Date();\n var utc = Math.floor(now.getTime()/1000);\n var url = next[0] + '/' + next[1];\n var alarmTime = parseInt(next[2]);\n var delay = alarmTime;\n if (alarmTime > 0) delay -= utc;\n var d = new Date(alarmTime*1000);\n //console.log (\"now = \" + now.toUTCString());\n //console.log (\"next event \" + url + \" in \" + delay + \" seconds (on \" + d.toUTCString() + \")\");\n\n var f = angular.bind(_this, Alarm.showAlarm, url);\n\n if (_this.currentAlarm)\n _this.$timeout.cancel(_this.currentAlarm);\n\n _this.currentAlarm = _this.$timeout(f, delay*1000);\n }\n });\n };\n \n /**\n * @name showAlarm\n * @desc Show the latest alarm using a toast\n * @param url The URL of the calendar component for snoozing\n */\n Alarm.showAlarm = function(url) {\n var _this = this;\n\n this.$$resource.fetch(url, '?resetAlarm=yes').then(function(data) {\n _this.$toast.show({\n position: 'top right',\n hideDelay: 0,\n template: [\n '',\n ' ',\n ' ',\n ' ',\n ' ',\n l('5 minutes'),\n ' ',\n ' ',\n l('10 minutes'),\n ' ',\n ' ',\n l('15 minutes'),\n ' ',\n ' ',\n l('30 minutes'),\n ' ',\n ' ',\n l('45 minutes'),\n ' ',\n ' ',\n l('1 hour'),\n ' ',\n ' ',\n l('1 day'),\n ' ',\n ' ',\n ' ',\n ' ',\n l('Cancel'),\n ' ',\n ' ',\n l('Ok'),\n ' ',\n ''\n ].join(''),\n locals: {\n url: url\n },\n controller: AlarmController\n });\n\n /**\n * @ngInject\n */\n AlarmController.$inject = ['scope', '$mdToast', 'url'];\n function AlarmController(scope, $mdToast, url) {\n scope.reminder = '10';\n scope.cancel = function() {\n $mdToast.hide();\n };\n scope.ok = function() {\n _this.$$resource.fetch(url, 'view?snoozeAlarm=' + scope.reminder);\n $mdToast.hide();\n };\n }\n });\n };\n\n /**\n * @memberof Alarm\n * @desc The factory we'll register as Alarm in the Angular module SOGo.Common\n * @ngInject\n */\n AlarmService.$inject = ['$timeout', 'sgSettings', 'Resource', '$mdToast'];\n function AlarmService($timeout, Settings, Resource, $mdToast) {\n angular.extend(Alarm, {\n $timeout: $timeout,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $toast: $mdToast\n });\n\n return Alarm; // return constructor\n }\n\n /* Factory registration in Angular module */\n angular\n .module('SOGo.Common')\n .factory('Alarm', AlarmService);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for Authentication */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n angular.module('SOGo.Authentication', [])\n\n .constant('passwordPolicyConfig', {\n PolicyPasswordChangeUnsupported: -3,\n PolicyPasswordSystemUnknown: -2,\n PolicyPasswordUnknown: -1,\n PolicyPasswordExpired: 0,\n PolicyAccountLocked: 1,\n PolicyChangeAfterReset: 2,\n PolicyPasswordModNotAllowed: 3,\n PolicyMustSupplyOldPassword: 4,\n PolicyInsufficientPasswordQuality: 5,\n PolicyPasswordTooShort: 6,\n PolicyPasswordTooYoung: 7,\n PolicyPasswordInHistory: 8,\n PolicyNoError: 65535\n })\n\n // TODO: convert to a Factory recipe?\n .provider('Authentication', Authentication);\n\n function Authentication() {\n function readCookie(name) {\n var foundCookie, prefix, pairs, i, currentPair, start;\n foundCookie = null;\n prefix = name + '=';\n pairs = document.cookie.split(';');\n for (i = 0; !foundCookie && i < pairs.length; i++) {\n currentPair = pairs[i];\n start = 0;\n while (currentPair.charAt(start) == ' ')\n start++;\n if (start > 0)\n currentPair = currentPair.substr(start);\n if (currentPair.indexOf(prefix) === 0)\n foundCookie = currentPair.substr(prefix.length);\n }\n\n return foundCookie;\n }\n\n function readLoginCookie() {\n var loginValues = null,\n cookie = readCookie('0xHIGHFLYxSOGo'),\n value;\n if (cookie && cookie.length > 8) {\n value = decodeURIComponent(cookie.substr(8));\n loginValues = value.base64decode().split(':');\n }\n\n return loginValues;\n }\n\n function redirectUrl(username, domain) {\n var userName, address, baseAddress, altBaseAddress, parts, hostpart, protocol, newAddress;\n\n userName = username;\n if (domain)\n userName += '@' + domain.value;\n address = '' + window.location.href;\n baseAddress = ApplicationBaseURL + '/' + encodeURIComponent(userName);\n if (baseAddress[0] == '/') {\n parts = address.split('/');\n hostpart = parts[2];\n protocol = parts[0];\n baseAddress = protocol + '//' + hostpart + baseAddress;\n }\n parts = baseAddress.split('/');\n parts.splice(0, 3);\n altBaseAddress = parts.join('/');\n if ((address.startsWith(baseAddress) || address.startsWith(altBaseAddress)) &&\n !address.endsWith('/logoff')) {\n newAddress = address;\n }\n else {\n newAddress = baseAddress;\n }\n\n return newAddress;\n }\n\n this.$get = getService;\n\n /**\n * @ngInject\n */\n getService.$inject = ['$q', '$http', 'passwordPolicyConfig'];\n function getService($q, $http, passwordPolicyConfig) {\n var _this = this, service;\n\n service = {\n login: function(data) {\n var d = $q.defer(),\n username = data.username,\n password = data.password,\n domain = data.domain,\n language,\n rememberLogin = data.rememberLogin ? 1 : 0;\n\n if (data.loginSuffix && !username.endsWith(data.loginSuffix)) {\n username += loginSuffix;\n domain = false;\n }\n if (data.language && data.language != 'WONoSelectionString') {\n language = data.language;\n }\n\n $http({\n method: 'POST',\n url: '/SOGo/connect',\n data: {\n userName: username,\n password: password,\n domain: domain,\n language: language,\n rememberLogin: rememberLogin\n }\n }).success(function(data, status) {\n // Make sure browser's cookies are enabled\n var loginCookie = readLoginCookie();\n if (!loginCookie) {\n d.reject(l('cookiesNotEnabled'));\n }\n else {\n // Check password policy\n if (typeof data.expire != 'undefined' && typeof data.grace != 'undefined') {\n if (data.expire < 0 && data.grace > 0) {\n d.reject({grace: data.grace});\n //showPasswordDialog('grace', createPasswordGraceDialog, data['grace']);\n } else if (data.expire > 0 && data.grace == -1) {\n d.reject({expire: data.expire});\n //showPasswordDialog('expiration', createPasswordExpirationDialog, data['expire']);\n }\n else {\n d.resolve(redirectUrl(username, domain));\n }\n }\n else {\n d.resolve(redirectUrl(username, domain));\n }\n }\n }).error(function(data, status) {\n var msg, perr;\n if (data && data.LDAPPasswordPolicyError) {\n perr = data.LDAPPasswordPolicyError;\n if (perr == passwordPolicyConfig.PolicyNoError) {\n msg = l('Wrong username or password.');\n }\n else if (perr == passwordPolicyConfig.PolicyAccountLocked) {\n msg = l('Your account was locked due to too many failed attempts.');\n }\n else {\n msg = l('Login failed due to unhandled error case: ') + perr;\n }\n }\n else {\n msg = l('Unhandled error response');\n }\n d.reject({error: msg});\n });\n return d.promise;\n }, // login: function(data) { ...\n\n changePassword: function(newPassword) {\n var d = $q.defer(),\n loginCookie = _this.readLoginCookie();\n\n $http({\n method: 'POST',\n url: '/SOGo/so/changePassword',\n data: {\n userName: loginCookie[0],\n password: loginCookie[1],\n newPassword: newPassword }\n }).success(function(data, status) {\n d.resolve();\n }).error(function(data, status) {\n var error,\n perr = data.LDAPPasswordPolicyError;\n\n if (!perr) {\n perr = passwordPolicyConfig.PolicyPasswordSystemUnknown;\n error = _(\"Unhandled error response\");\n }\n else if (perr == passwordPolicyConfig.PolicyNoError) {\n error = l(\"Password change failed\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordModNotAllowed) {\n error = l(\"Password change failed - Permission denied\");\n } else if (perr == passwordPolicyConfig.PolicyInsufficientPasswordQuality) {\n error = l(\"Password change failed - Insufficient password quality\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordTooShort) {\n error = l(\"Password change failed - Password is too short\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordTooYoung) {\n error = l(\"Password change failed - Password is too young\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordInHistory) {\n error = l(\"Password change failed - Password is in history\");\n } else {\n error = l(\"Unhandled policy error: %{0}\").formatted(perr);\n perr = passwordPolicyConfig.PolicyPasswordUnknown;\n }\n\n d.reject(error);\n });\n return d.promise;\n }\n };\n return service;\n }\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Dialog\n * @constructor\n */\n function Dialog() {\n }\n\n /**\n * @name alert\n * @desc Show an alert dialog box with a single \"OK\" button\n * @param {string} title\n * @param {string} content\n */\n Dialog.alert = function(title, content) {\n var alert = this.$modal.alert()\n .title(title)\n .content(content)\n .ok(l('OK'));\n this.$modal.show(alert);\n };\n\n /**\n * @name confirm\n * @desc Show a confirmation dialog box with buttons 'Cancel' and 'OK'\n * @param {string} title\n * @param {string} content\n * @returns a promise that resolves if the user has clicked on the 'OK' button\n */\n Dialog.confirm = function(title, content, options) {\n var confirm = this.$modal.confirm()\n .title(title)\n .content(content)\n .ok((options && options.ok)? options.ok : l('OK'))\n .cancel((options && options.cancel)? options.cancel : l('Cancel'));\n return this.$modal.show(confirm);\n };\n\n /**\n * @name prompt\n * @desc Show a primpt dialog box with a input text field and the 'Cancel' and 'OK' buttons\n * @param {string} title\n * @param {string} label\n * @param {object} [options] - use a different input type by setting 'inputType'\n * @returns a promise that resolves with the input field value\n */\n Dialog.prompt = function(title, label, options) {\n var o = options || {},\n d = this.$q.defer();\n\n this.$modal.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '

',\n ' ',\n ' ',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n ' ' + l('Cancel'),\n ' ',\n ' ',\n ' ' + l('OK'),\n ' ',\n '
',\n '
'\n ].join(''),\n controller: PromptDialogController\n });\n\n /**\n * @ngInject\n */\n PromptDialogController.$inject = ['scope', '$mdDialog'];\n function PromptDialogController(scope, $mdDialog) {\n scope.title = title;\n scope.name = \"\";\n scope.cancel = function() {\n d.reject();\n $mdDialog.hide();\n };\n scope.ok = function() {\n d.resolve(scope.name);\n $mdDialog.hide();\n };\n }\n\n return d.promise;\n };\n\n /**\n * @memberof Dialog\n * @desc The factory we'll register as Dialog in the Angular module SOGo.Common\n * @ngInject\n */\n DialogService.$inject = ['$q', '$mdDialog'];\n function DialogService($q, $mdDialog) {\n angular.extend(Dialog, { $q: $q , $modal: $mdDialog });\n\n return Dialog; // return constructor\n }\n\n /* Factory registration in Angular module */\n angular\n .module('SOGo.Common')\n .factory('Dialog', DialogService);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Gravatar - A service to build the Gravatar URL for an email address\n * @memberof SOGo.Common\n * @param {string} email\n * @param {number} [size] - the size of the image\n * @ngInject\n */\n function Gravatar() {\n return function(email, size) {\n var x, y, hash, s = size;\n if (!email) {\n return '';\n }\n x = email.indexOf('<');\n if (x >= 0) {\n y = email.indexOf('>', x);\n if (y > x)\n email = email.substring(x+1,y);\n }\n if (!size) {\n s = 48; // default to 48 pixels\n }\n hash = email.md5();\n\n // return 'https://www.gravatar.com/avatar/' + hash + '?s=' + s + '&d=identicon';\n return 'https://www.gravatar.com/avatar/' + hash + '?s=' + s + '&d=wavatar';\n };\n }\n\n angular\n .module('SOGo.Common')\n .factory('Gravatar', Gravatar);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Resource\n * @constructor\n * @param {Object} $http - the Angular HTTP service\n * @param {Object} $q - the Angular promise/deferred service\n * @param {String} path - the base path of the external resource\n * @param {Object} options - extra attributes to be associated to the object\n */\n function Resource($http, $q, path, activeUser, options) {\n angular.extend(this, {\n _http: $http,\n _q: $q,\n _path: path,\n _activeUser: activeUser\n });\n angular.extend(this, options);\n // Trim trailing slash\n this._path = this._path.replace(/\\/$/, '');\n }\n\n /**\n * @memberof Resource\n * @desc The factory we'll use to register with Angular.\n * @return a new Resource object\n */\n Resource.$factory = ['$http', '$q', function($http, $q) {\n return function(path, activeUser, options) {\n return new Resource($http, $q, path, activeUser, options);\n };\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of Resource in Angular module.\n */\n angular.module('SOGo.Common').factory('Resource', Resource.$factory);\n\n /**\n * @function userResource\n * @memberof Resource.prototype\n * @desc Create a new Resource object associated to a username different than the active user.\n * @param {String} uid - the user UID\n * @return a new Resource object\n */\n Resource.prototype.userResource = function(uid) {\n var path = _.compact(this._activeUser.folderURL.split('/'));\n path.splice(path.length - 1, 1, escape(uid));\n\n return new Resource(this._http, this._q, '/' + path.join('/'), this._activeUser);\n };\n\n /**\n * @function fetch\n * @memberof Resource.prototype\n * @desc Fetch resource using a specific folder, action and/or parameters.\n * @param {string} folderId - the folder on which the action will be applied (ex: addressbook, calendar)\n * @param {string} action - the action to be used in the URL\n * @param {Object} params - Object parameters injected through the $http service\n * @return a promise\n */\n Resource.prototype.fetch = function(folderId, action, params) {\n var deferred = this._q.defer(),\n path = [this._path];\n if (folderId) path.push(folderId.split('/'));\n if (action) path.push(action);\n path = _.compact(_.flatten(path)).join('/');\n\n this._http({\n method: 'GET',\n url: path,\n params: params\n })\n .success(deferred.resolve)\n .error(function(data, status) {\n if (status == 404)\n return deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function newguid\n * @memberof Resource.prototype\n * @desc Fetch a new GUID on the specified folder ID.\n * @return a promise of the new data structure\n */\n Resource.prototype.newguid = function(folderId) {\n var deferred = this._q.defer(),\n path = this._path + '/' + folderId + '/newguid';\n\n this._http\n .get(path)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function create\n * @memberof Resource.prototype\n * @desc Create a new resource using a specific action (post).\n * @param {string} action - the action to be used in the URL\n * @param {string} name - the new resource's name\n * @return a promise\n */\n Resource.prototype.create = function(action, name) {\n var deferred = this._q.defer(),\n path = this._path + '/' + action;\n\n this._http\n .post(path, { name: name })\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function post\n * @memberof Resource.prototype\n * @desc Post a resource attributes on the server.\n * @return a promise\n */\n Resource.prototype.post = function(id, action, data) {\n var deferred = this._q.defer(),\n path = [this._path];\n if (id) path.push(id);\n if (action) path.push(action);\n path = _.compact(_.flatten(path)).join('/');\n\n this._http\n .post(path, data)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function save\n * @memberof Resource.prototype\n * @desc Save a resource attributes on the server (post /save).\n * @return a promise\n */\n Resource.prototype.save = function(id, newValue, options) {\n var deferred = this._q.defer(),\n action = (options && options.action)? options.action : 'save';\n\n return this.post(id, action, newValue);\n };\n\n /**\n * @function remove\n * @memberof Resource.prototype\n * @desc Delete a resource (get /delete).\n * @return a promise\n */\n Resource.prototype.remove = function(uid) {\n var deferred = this._q.defer(),\n path = this._path + '/' + uid + '/delete';\n\n this._http\n .get(path)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name User\n * @constructor\n * @param {object} [userData] - some default values for the user\n */\n function User(userData) {\n if (userData) {\n this.init(userData);\n }\n }\n\n /**\n * @memberof User\n * @desc The factory we'll use to register with Angular.\n * @return the User constructor\n */\n User.factory = ['$q', '$log', 'sgSettings', 'Resource', 'Gravatar', function($q, $log, Settings, Resource, Gravatar) {\n angular.extend(User, {\n $q: $q,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n $gravatar: Gravatar,\n $query: '',\n $users: []\n });\n\n return User;\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of User in Angular module.\n */\n angular.module('SOGo.Common').factory('User', User.factory);\n\n /**\n * @memberof User\n * @desc Search for users that match a string.\n * @param {string} search - a string used to performed the search\n * @param {object[]} excludedUsers - a list of User objects that must be excluded from the results\n * @return a promise of an array of matching User objects\n */\n User.$filter = function(search, excludedUsers) {\n var param = {search: search};\n var _this = this;\n\n if (!search) {\n // No query specified\n User.$users = [];\n return User.$q.when(User.$users);\n }\n if (User.$query == search) {\n // Query hasn't changed\n return User.$q.when(User.$users);\n }\n User.$query = search;\n\n return User.$$resource.fetch(null, 'usersSearch', param).then(function(response) {\n var results, index, user,\n compareUids = function(data) {\n return _this.uid == data.uid;\n };\n if (excludedUsers) {\n // Remove excluded users from response\n results = _.filter(response.users, function(data) {\n return !_.find(excludedUsers, compareUids, user);\n });\n }\n else {\n results = response.users;\n }\n // Remove users that no longer match the search query\n for (index = User.$users.length - 1; index >= 0; index--) {\n user = User.$users[index];\n if (!_.find(results, compareUids, user)) {\n User.$users.splice(index, 1);\n }\n }\n // Add new users matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(User.$users, compareUids, data))) {\n var user = new User(data);\n User.$users.splice(index, 0, user);\n }\n });\n User.$log.debug(User.$users);\n return User.$users;\n });\n };\n\n /**\n * @function init\n * @memberof User.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of user\n */\n User.prototype.init = function(data) {\n angular.extend(this, data);\n if (!this.$$shortFormat)\n this.$$shortFormat = this.$shortFormat();\n if (!this.$$image)\n this.$$image = this.image || User.$gravatar(this.c_email);\n\n // An empty attribute to trick md-autocomplete when adding users from the ACLs editor\n this.empty = ' ';\n };\n\n /**\n * @function $shortFormat\n * @memberof User.prototype\n * @return the fullname along with the email address\n */\n User.prototype.$shortFormat = function(options) {\n var fullname = this.cn || this.c_email;\n var email = this.c_email;\n var no_email = options && options.email === false;\n if (!no_email && email && fullname != email) {\n fullname += ' <' + email + '>';\n }\n return fullname;\n };\n\n /**\n * @function $acl\n * @memberof User.prototype\n * @desc Fetch the user rights associated to a specific folder and populate the 'rights' attribute.\n * @param {string} the folder ID\n * @return a promise\n */\n User.prototype.$acl = function(folderId) {\n var _this = this,\n deferred = User.$q.defer(),\n param = {uid: this.uid};\n if (this.$shadowRights) {\n deferred.resolve(this.rights);\n }\n else {\n User.$$resource.fetch(folderId, 'userRights', param).then(function(data) {\n _this.rights = data;\n // Convert numbers (0|1) to boolean values\n //angular.forEach(_.keys(_this.rights), function(key) {\n // _this.rights[key] = _this.rights[key] ? true : false;\n //});\n // console.debug('rights ' + _this.uid + ' => ' + JSON.stringify(data, undefined, 2));\n // Keep a copy of the server's version\n _this.$shadowRights = angular.copy(data);\n deferred.resolve(data);\n return data;\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $isAnonymous\n * @memberof User.prototype\n * @return true if it's the special anonymous user\n */\n User.prototype.$isAnonymous = function() {\n return this.uid == 'anonymous';\n };\n\n /**\n * @function $isSpecial\n * @memberof User.prototype\n * @desc Only accurate from the ACL editor.\n * @return true if the user is not a regular system user\n */\n User.prototype.$isSpecial = function() {\n return this.userClass && this.userClass == 'public-user';\n };\n\n /**\n * @function $confirmRights\n * @memberof User.prototype\n * @desc Check if a confirmation is required before giving some rights.\n * @return the confirmation message or false if no confirmation is required\n */\n User.prototype.$confirmRights = function() {\n var confirmation = false;\n\n if (this.$confirmation) {\n // Don't bother the user more than once\n return false;\n }\n\n if (_.some(_.values(this.rights))) {\n if (this.uid == 'anonymous') {\n confirmation = l('Potentially anyone on the Internet will be able to access your folder, even if they do not have an account on this system. Is this information suitable for the public Internet?');\n }\n else if (this.uid == '') {\n confirmation = l('Any user with an account on this system will be able to access your folder. Are you certain you trust them all?');\n }\n }\n\n this.$confirmation = confirmation;\n\n return confirmation;\n };\n\n /**\n * @function $rightsAreDirty\n * @memberof User.prototype\n * @return whether or not the rights have changed from their initial values\n */\n User.prototype.$rightsAreDirty = function() {\n return this.rights && !_.isEqual(this.rights, this.$shadowRights);\n };\n\n /**\n * @function $resetRights\n * @memberof User.prototype\n * @desc Restore initial rights or disable all rights\n * @param {boolean} [zero] - reset all rights to zero when true\n */\n User.prototype.$resetRights = function(zero) {\n var _this = this;\n if (zero) {\n // Disable all rights\n _.map(_.keys(this.rights), function(key) {\n if (angular.isString(_this.rights[key]))\n _this.rights[key] = 'None';\n else\n _this.rights[key] = 0;\n });\n }\n else {\n // Restore initial rights\n this.rights = angular.copy(this.$shadowRights);\n }\n };\n\n /**\n * @function $folders\n * @memberof User.prototype\n * @desc Retrieve the list of folders of a specific type\n * @param {string} type - either 'contact' or 'calendar'\n * @return a promise of the HTTP query result or the cached result\n */\n User.prototype.$folders = function(type) {\n var _this = this,\n deferred = User.$q.defer(),\n param = {type: type};\n if (this.$$folders) {\n deferred.resolve(this.$$folders);\n }\n else {\n User.$$resource.userResource(this.uid).fetch(null, 'foldersSearch', param).then(function(response) {\n _this.$$folders = response.folders;\n deferred.resolve(response.folders);\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof User.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the User instance\n */\n User.prototype.$omit = function() {\n var user = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n user[key] = value;\n }\n });\n return user;\n };\n\n User.prototype.toString = function() {\n return '[User ' + this.c_email + ']';\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n \n /**\n * sgFocus - A service to set the focus on the element associated to a specific string\n * @memberof SOGo.Common\n * @param {string} name - the string identifier of the element\n * @see {@link SOGo.Common.sgFocusOn}\n * @ngInject\n */\n sgFocus.$inject = ['$rootScope', '$timeout'];\n function sgFocus($rootScope, $timeout) {\n return function(name) {\n $timeout(function() {\n $rootScope.$broadcast('sgFocusOn', name);\n });\n };\n }\n\n angular\n .module('SOGo.Common')\n .factory('sgFocus', sgFocus);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true, newcap: false */\n 'use strict';\n\n /**\n * sgAvatarImage - An avatar directive that returns un img element with either a local URL (if sg-src is specified)\n * or a Gravatar URL built from the Gravatar factory.\n * Based on http://blog.lingohub.com/2014/08/better-ux-with-angularjs-directives/.\n * @memberof SOGo.Common\n * @example:\n \n */\n function sgAvatarImage() {\n return {\n restrict: 'AE',\n replace: true,\n scope: {\n size: '@',\n email: '=sgEmail',\n src: '=sgSrc'\n },\n template: '',\n bindToController: true,\n controller: 'sgAvatarImageController',\n controllerAs: 'vm'\n };\n }\n\n /**\n * @ngInject\n */\n sgAvatarImageController.$inject = ['$scope', '$element', 'Gravatar'];\n function sgAvatarImageController($scope, $element, Gravatar) {\n var vm = this;\n\n $scope.$watch('vm.email', function(email) {\n if (email && !vm.url) {\n vm.url = Gravatar(email, vm.size);\n }\n });\n\n // If sg-src is defined, watch the expression for the URL of a local image\n if ('sg-src' in $element[0].attributes) {\n $scope.$watch('vm.src', function(src) {\n if (src) {\n vm.url = src;\n }\n });\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgAvatarImage', sgAvatarImage)\n .controller('sgAvatarImageController', sgAvatarImageController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgColorPicker - Color picker widget\n * @restrict element\n * @param {function} sgOnSelect - the function to call when clicking on a color.\n * One variable is available: color.\n * @ngInject\n * @example:\n\n \n */\n sgColorPicker.$inject = ['$parse'];\n function sgColorPicker($parse) {\n return {\n restrict: 'E',\n template: [\n '',\n ' ',\n ' color_lens',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ''\n ].join(''),\n replace: true,\n bindToController: true,\n controller: sgColorPickerController,\n controllerAs: '$sgColorPickerController',\n link: link\n };\n\n function link(scope, iElement, iAttr, controller) {\n // Associate callback to controller\n controller.doSelect = $parse(iElement.attr('sg-on-select'));\n }\n }\n \n /**\n * @ngInject\n */\n sgColorPickerController.$inject = ['$scope', 'sgColors'];\n function sgColorPickerController($scope, sgColors) {\n var vm = this;\n\n vm.colors = sgColors.selection;\n vm.select = function(color) {\n vm.doSelect($scope, { color: color });\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgColorPicker', sgColorPicker);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCompile - Assign an expression to a DOM element and compile it.\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} sgCompile - the expression to compile\n * @ngInject\n * @example:\n\n
\n */\n sgCompile.$inject = ['$compile'];\n function sgCompile($compile) {\n return {\n restrict: 'A',\n link: sgCompileLink\n };\n\n function sgCompileLink(scope, element, attrs) {\n var ensureCompileRunsOnce = scope.$watch(\n function(scope) {\n // Watch the sg-compile expression for changes\n return scope.$eval(attrs.sgCompile);\n },\n function(value) {\n // When the sg-compile expression changes, assign it into the current DOM\n element.html(value);\n \n // Compile the new DOM and link it to the current scope.\n // NOTE: we only compile .childNodes so that we don't get into infinite loop compiling ourselves\n $compile(element.contents())(scope);\n \n // Use un-watch feature to ensure compilation happens only once.\n ensureCompileRunsOnce();\n }\n );\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgCompile', sgCompile);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgEnter - A directive evaluated when the enter key is pressed\n * @memberof SOGo.Common\n * @ngInject\n * @example:\n\n \n */\n function sgEnter() {\n var ENTER_KEY = 13;\n return function(scope, element, attrs) {\n element.bind(\"keydown keypress\", function(event) {\n if (event.which === ENTER_KEY) {\n scope.$apply(function() {\n scope.$eval(attrs.sgEnter);\n });\n event.preventDefault();\n }\n });\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgEnter', sgEnter);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgEscape - A directive evaluated when the escape key is pressed\n * @memberof SOGo.Common\n * @ngInject\n * @example:\n\n \n */\n function sgEscape() {\n var ESCAPE_KEY = 27;\n return function(scope, elem, attrs) {\n elem.bind('keydown', function(event) {\n if (event.keyCode === ESCAPE_KEY) {\n scope.$apply(attrs.sgEscape);\n }\n });\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgEscape', sgEscape);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgFocusOn - A directive that sets the focus on its element when the specified string is broadcasted\n * @memberof SOGo.Common\n * @see {@link SOGo.Common.sgFocus}\n * @ngInject\n * @example:\n\n \n */\n function sgFocusOn() {\n return function(scope, elem, attr) {\n scope.$on('sgFocusOn', function(e, name) {\n if (name === attr.sgFocusOn) {\n elem[0].focus();\n elem[0].select();\n }\n });\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgFocusOn', sgFocusOn);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgFolderStylesheet - Add CSS stylesheet for folder (addressbook or calendar)\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} ngModel - the object literal describing the folder (an Addressbook or Calendar instance)\n * @example:\n\n
\n
\n */\n function sgFolderStylesheet() {\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n ngModel: '='\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgFolderStylesheet', sgFolderStylesheet);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgSearch - Search within a list of items\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {function} sgSearch - the function to call when performing a search.\n * Two variables are available: searchField and searchText.\n * @example:\n\n
\n \n arrow_back\n \n \n \n \n \n Subject\n sender\n \n
\n */\n sgSearchPreTransclude.$inject = ['$parse'];\n function sgSearchPreTransclude($parse) {\n return {\n restrict: 'A',\n controller: 'sgSearchController',\n controllerAs: '$sgSearchController',\n priority: 1001,\n compile: compile\n };\n\n function compile(tElement, tAttr) {\n var mdInputEl = tElement.find('md-input-container'),\n inputEl = tElement.find('input'),\n selectEl = tElement.find('md-select'),\n buttonEl = tElement.find('md-button');\n\n inputEl.attr('ng-model', '$sgSearchController.searchText');\n inputEl.attr('ng-model-options', '$sgSearchController.searchTextOptions');\n inputEl.attr('ng-change', '$sgSearchController.onChange()');\n if (selectEl) {\n selectEl.attr('ng-model', '$sgSearchController.searchField');\n selectEl.attr('ng-change', '$sgSearchController.onChange()');\n }\n if (buttonEl && buttonEl.attr('sg-search-cancel')) {\n buttonEl.attr('ng-click', buttonEl.attr('sg-search-cancel'));\n buttonEl.removeAttr('sg-search-cancel');\n }\n else {\n buttonEl = null;\n }\n\n return function postLink(scope, iElement, iAttr, controller) {\n var compiledButtonEl = iElement.find('button');\n\n // Associate callback to controller\n controller.doSearch = $parse(iElement.attr('sg-search'));\n\n // Reset the input field when cancelling the search\n if (buttonEl && compiledButtonEl) {\n compiledButtonEl.on('click', controller.cancelSearch);\n }\n };\n }\n }\n\n function sgSearch() {\n return {\n restrict: 'A',\n priority: 1000,\n transclude: true,\n compile: compile\n };\n\n function compile(tElement, tAttr) {\n return function postLink(scope, iElement, iAttr, controller, transclude) {\n transclude(function(clone) {\n iElement.append(clone);\n });\n };\n }\n }\n\n /**\n * @ngInject\n */\n sgSearchController.$inject = ['$scope', '$element'];\n function sgSearchController($scope, $element) {\n var vm = this;\n\n // Controller variables\n vm.previous = { searchText: '', searchField: '' };\n vm.searchText = null;\n\n // Model options\n vm.searchTextOptions = {\n updateOn: 'default blur',\n debounce: {\n default: 300,\n blur: 0\n }\n };\n\n // Method to call on data changes\n vm.onChange = function() {\n if (vm.searchText !== null) {\n if (vm.searchText != vm.previous.searchText || vm.searchField != vm.previous.searchField) {\n if (vm.searchText.length > 2 || vm.searchText.length === 0) {\n // doSearch is the compiled expression of the sg-search attribute\n vm.doSearch($scope, { searchText: vm.searchText, searchField: vm.searchField });\n }\n vm.previous = { searchText: vm.searchText, searchField: vm.searchField };\n }\n }\n };\n\n // Reset input field when cancelling the search\n vm.cancelSearch = function() {\n vm.searchText = \"\";\n };\n }\n\n angular\n .module('SOGo.Common')\n .controller('sgSearchController', sgSearchController)\n .directive('sgSearch', sgSearchPreTransclude)\n .directive('sgSearch', sgSearch);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgSubscribe - Common subscription widget\n * @restrict attribute\n * @param {string} sgSubscribe - the folder type\n * @param {function} sgSubscribeOnSelect - the function to call when subscribing to a folder.\n * One variable is available: folderData.\n * @ngInject\n * @example:\n\n Subscribe ..\n */\n sgSubscribe.$inject = ['User'];\n function sgSubscribe(User) {\n return {\n restrict: 'A',\n scope: {\n folderType: '@sgSubscribe',\n onFolderSelect: '&sgSubscribeOnSelect'\n },\n replace: false,\n bindToController: true,\n controller: sgSubscribeDialogController,\n controllerAs: '$sgSubscribeDialogController',\n link: link\n };\n }\n\n function link(scope, element, attrs, controller) {\n var inputEl = element.find('input');\n element.on('click', controller.showDialog);\n }\n\n /**\n * @ngInject\n */\n sgSubscribeDialogController.$inject = ['$mdDialog'];\n function sgSubscribeDialogController($mdDialog) {\n var vm = this;\n vm.showDialog = function() {\n $mdDialog.show({\n templateUrl: '../Contacts/UIxContactsUserFolders',\n clickOutsideToClose: true,\n locals: {\n folderType: vm.folderType,\n onFolderSelect: vm.onFolderSelect\n },\n controller: sgSubscribeController,\n controllerAs: 'subscribe'\n });\n };\n }\n\n /**\n * @ngInject\n */\n sgSubscribeController.$inject = ['folderType', 'onFolderSelect', 'User'];\n function sgSubscribeController(folderType, onFolderSelect, User) {\n var vm = this;\n\n vm.selectedUser = null;\n vm.users = User.$users;\n\n vm.searchTextOptions = {\n updateOn: 'default blur',\n debounce: {\n default: 300,\n blur: 0\n }\n };\n\n vm.onChange = function() {\n User.$filter(vm.searchText).then(function() {\n if (vm.selectedUser) {\n // If selected user is no longer part of the matching users, unselect it\n if (_.isUndefined(_.find(User.$users, function(user) {\n return user.uid == vm.selectedUser.uid;\n }))) {\n vm.selectedUser = null;\n }\n }\n });\n };\n\n vm.selectUser = function(i) {\n if (vm.selectedUser == vm.users[i]) {\n vm.selectedUser = null;\n }\n else {\n // Fetch folders of specific type for selected user\n vm.users[i].$folders(folderType).then(function() {\n vm.selectedUser = vm.users[i];\n });\n }\n };\n\n // Callback upon subscription to a folder\n vm.selectFolder = function(folder) {\n onFolderSelect({folderData: folder});\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgSubscribe', sgSubscribe);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgToggleGrid - Convert the tiles of a grid to toggle buttons\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} sgToggleGrid - the model of the source objects\n * @param {string} [sgToggleGridAttr] - the attribute that specifies if an object is enabled (toggled)\n * @ngInject\n * @example:\n\n ..\n */\n sgToggleGrid.$inject = ['$parse'];\n function sgToggleGrid($parse) {\n return {\n restrict: 'A',\n link: link\n };\n\n function link(scope, iElement, attrs, ctrl) {\n var tiles = iElement.find('md-grid-tile'),\n tile,\n i,\n modelDays,\n modelAttr,\n ensureInitRunsOnce,\n toggleClass;\n\n ensureInitRunsOnce = scope.$watch(function() {\n // Parse attribute until it returns a valid object\n return $parse(attrs.sgToggleGrid)(scope);\n }, function(days) {\n if (angular.isDefined(days)) {\n var flattenedDays = days;\n modelDays = days;\n if (attrs.sgToggleGridAttr) {\n modelAttr = attrs.sgToggleGridAttr;\n flattenedDays = _.pluck(days, attrs.sgToggleGridAttr);\n }\n _.each(tiles, function(o) {\n var tile = angular.element(o);\n if (_.contains(flattenedDays, tile.attr('value'))) {\n tile.addClass('sg-active');\n }\n });\n ensureInitRunsOnce();\n }\n });\n\n toggleClass = function() {\n // Toggle class on click event and call toggle function\n var tile = angular.element(this),\n day = tile.attr('value');\n tile.toggleClass('sg-active');\n toggle(day);\n };\n\n for (i = 0; i < tiles.length; i++) {\n tile = angular.element(tiles[i]);\n tile.addClass('iconButton');\n tile.find('figure').addClass('md-icon');\n tile.on('click', toggleClass);\n }\n\n function toggle(day) {\n var i = _.findIndex(modelDays, function(o) {\n if (modelAttr)\n return o[modelAttr] == day;\n else\n return o == day;\n });\n if (i < 0) {\n if (modelAttr) {\n var o = {};\n o[modelAttr] = day;\n modelDays.push(o);\n }\n else\n modelDays.push(day);\n }\n else\n modelDays.splice(i, 1);\n }\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgToggleGrid', sgToggleGrid);\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Common.js","sources":["Common/utils.js","Common/Common.app.js","Common/decodeUri.filter.js","Common/encodeUri.filter.js","Common/loc.filter.js","Common/range.filter.js","Common/AclController.js","Common/navController.js","Common/Acl.service.js","Common/Alarm.service.js","Common/Authentication.service.js","Common/Dialog.service.js","Common/Gravatar.service.js","Common/Resource.service.js","Common/User.service.js","Common/sgFocus.service.js","Common/sgAvatarImage.directive.js","Common/sgColorPicker.directive.js","Common/sgCompile.directive.js","Common/sgEnter.directive.js","Common/sgEscape.directive.js","Common/sgFocus.directive.js","Common/sgFolderStylesheet.directive.js","Common/sgSearch.directive.js","Common/sgSubscribe.directive.js","Common/sgTarget.directive.js","Common/sgToggleGrid.directive.js"],"names":["l","key","arguments","value","labels","clabels","i","j","length","replace","configure","$mdThemingProvider","definePalette","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","contrastDefaultColor","contrastDarkColors","contrastLightColors","1000","theme","primaryPalette","default","hue-1","hue-2","hue-3","accentPalette","backgroundPalette","angular","module","baseURL","ApplicationBaseURL","activeUser","param","settings","login","UserLogin","identification","UserIdentification","email","UserEmail","language","UserLanguage","folderURL","UserFolderURL","isSuperUser","IsSuperUser","path","calendar","UserCalendarPath","contacts","UserContactsPath","mail","UserMailPath","preferences","UserPreferencesPath","administration","UserAdministrationPath","logoff","UserLogoffPath","constant","selection","sm","gt-sm","md","gt-md","lg","gt-lg","config","$inject","decodeUri","$window","decodeURIComponent","filter","encodeUri","encodeURIComponent","loc","range","n","res","parseInt","push","AclController","$mdDialog","Dialog","usersWithACL","User","folder","userFilter","$query","$filter","$acl","users","closeModal","$resetUsersRights","hide","saveModal","$saveUsersRights","then","data","status","alert","confirmChange","user","confirmation","$confirmRights","vm","showing","message","removeUser","$removeUser","uid","addUser","$addUser","userToAdd","searchText","error","selectUser","selectedUser","$rights","this","controller","navController","$scope","$timeout","$interval","$http","$mdSidenav","$mdBottomSheet","$mdMedia","$log","sgConstant","sgSettings","Alarm","currentDay","window","get","success","secondsBeforeTomorrow","toggleLeft","toggle","debug","toggleRight","openBottomSheet","show","parent","element","document","getElementById","templateUrl","toggleDetailView","detail","toggleClass","$watch","newVal","isGtMedium","getAlarms","Acl","folderId","factory","$q","Settings","Resource","extend","$$resource","$User","prototype","$users","_this","deferred","defer","resolve","promise","fetch","response","forEach","canSubscribeUser","isSubscribed","wasSubscribed","bind","_","indexOf","pluck","userClass","isGroup","reject","splice","$resetRights","deferredSave","deferredSubscribe","action","$rightsAreDirty","$omit","save","$shadowRights","copy","rights","uids","join","all","currentAlarm","AlarmService","$mdToast","$toast","now","Date","browserTime","Math","floor","getTime","alarms","sort","a","b","x","y","next","pop","utc","url","alarmTime","delay","f","showAlarm","cancel","AlarmController","scope","reminder","ok","position","hideDelay","template","summary","locals","Authentication","readCookie","name","foundCookie","prefix","pairs","currentPair","start","cookie","split","charAt","substr","readLoginCookie","loginValues","base64decode","redirectUrl","username","domain","userName","address","baseAddress","altBaseAddress","parts","hostpart","protocol","newAddress","location","href","startsWith","endsWith","getService","passwordPolicyConfig","service","d","password","rememberLogin","loginSuffix","method","loginCookie","expire","grace","msg","perr","LDAPPasswordPolicyError","PolicyNoError","PolicyAccountLocked","changePassword","newPassword","PolicyPasswordModNotAllowed","PolicyInsufficientPasswordQuality","PolicyPasswordTooShort","PolicyPasswordTooYoung","PolicyPasswordInHistory","formatted","PolicyPasswordUnknown","PolicyPasswordSystemUnknown","$get","PolicyPasswordChangeUnsupported","PolicyPasswordExpired","PolicyChangeAfterReset","PolicyMustSupplyOldPassword","provider","DialogService","$modal","title","content","confirm","options","prompt","label","PromptDialogController","o","body","clickOutsideToClose","escapeToClose","inputType","Gravatar","size","hash","s","substring","md5","_http","_q","_path","_activeUser","$factory","userResource","compact","escape","params","flatten","newguid","create","post","id","newValue","remove","userData","init","$gravatar","search","excludedUsers","when","results","index","compareUids","find","each","isUndefined","$$shortFormat","$shortFormat","$$image","image","c_email","empty","fullname","cn","no_email","$isAnonymous","$isSpecial","$confirmation","some","values","isEqual","zero","map","keys","isString","$folders","type","$$folders","folders","toString","sgFocus","$rootScope","$broadcast","sgAvatarImage","restrict","src","bindToController","controllerAs","sgAvatarImageController","$element","attributes","directive","sgColorPicker","$parse","link","iElement","iAttr","doSelect","attr","sgColorPickerController","sgColors","colors","select","color","sgCompile","$compile","sgCompileLink","attrs","ensureCompileRunsOnce","$eval","html","contents","sgEnter","ENTER_KEY","event","which","$apply","preventDefault","sgEscape","ESCAPE_KEY","elem","keyCode","sgFocusOn","$on","e","focus","sgFolderStylesheet","require","ngModel","sgSearchPreTransclude","compile","tElement","tAttr","inputEl","selectEl","buttonEl","removeAttr","compiledButtonEl","doSearch","on","cancelSearch","priority","sgSearch","transclude","clone","append","sgSearchController","previous","searchField","searchTextOptions","updateOn","debounce","blur","onChange","sgSubscribe","folderType","onFolderSelect","sgSubscribeDialogController","showDialog","sgSubscribeController","selectFolder","folderData","sgTarget","sgTargetLink","console","log","ensureTargetRunsOnce","sgToggleGrid","ctrl","day","findIndex","modelDays","modelAttr","tile","ensureInitRunsOnce","tiles","days","isDefined","flattenedDays","sgToggleGridAttr","contains","addClass","String","suffix","pattern","isNumber","lastIndexOf","_base64_keyStr","base64encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","input","utf8encode","charCodeAt","isNaN","fromCharCode","L","k","K","G","I","F","H","r","q","p","u","aa","Z","D","t","Array","B","J","P","h","E","v","g","Y","X","W","V","C","S","Q","N","M","A","z","w","m","U","T","R","O","toLowerCase","capitalize","toUpperCase","slice","asDate","newDate","date","formatTime","hours","minutes","newString","daysUpTo","otherDate","day1","day2","tmp","nbrDays","round","setTime","isValidEmail","emailRE","test","asCSSIdentifier","characters","escapeds","re","RegExp","timeInterval","interval","stringWithSeparator","separator","month","getMonth","getDate","year","getYear","str","addDays","milliSeconds","addHours","nbrHours","addMinutes","nbrMinutes","beginOfDay","setHours","setMinutes","setSeconds","setMilliseconds","beginOfWeek","offset","firstDayOfWeek","getDay","endOfWeek","getDayString","getHourString","getHours"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\nString.prototype.endsWith = function(suffix) {\n return this.indexOf(suffix, this.length - suffix.length) !== -1;\n};\n\nString.prototype.startsWith = function(pattern, position) {\n position = angular.isNumber(position) ? position : 0;\n return this.lastIndexOf(pattern, position) === position;\n};\n\nString.prototype._base64_keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nString.prototype.base64encode = function () {\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n \n var input = this.utf8encode();\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n \n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n \n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n \n output = output +\n this._base64_keyStr.charAt(enc1) + this._base64_keyStr.charAt(enc2) +\n this._base64_keyStr.charAt(enc3) + this._base64_keyStr.charAt(enc4);\n }\n \n return output;\n};\n\nString.prototype.base64decode = function() { \n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n \n var input = \"\" + this; // .replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\")\n while (i < input.length) {\n enc1 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc2 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc3 = this._base64_keyStr.indexOf(input.charAt(i++));\n enc4 = this._base64_keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n \n output = output + String.fromCharCode(chr1);\n \n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n }\n\n return output;\n};\n\nString.prototype.md5 = function() {\n if (!this.length) { return; }\n // MD5 (Message-Digest Algorithm) by WebToolkit\n var md5 = function(s){function L(k,d){return(k<>>(32-d));}function K(G,k){var I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H);}if(I|d){if(x&1073741824){return(x^3221225472^F^H);}else{return(x^1073741824^F^H);}}else{return(x^F^H);}}function r(d,F,k){return(d&F)|((~d)&k);}function q(d,F,k){return(d&k)|(F&(~k));}function p(d,F,k){return(d^F^k);}function n(d,F,k){return(F^(d|(~k)));}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F);}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F);}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F);}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F);}function e(G){var Z;var F=G.length;var x=F+8;var k=(x-(x%64))/64;var I=(k+1)*16;var aa=Array(I-1);var d=0;var H=0;while(H>>29;return aa;}function B(x){var k=\"\",F=\"\",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F=\"0\"+G.toString(16);k=k+F.substr(F.length-2,2);}return k;}function J(k){k=k.replace(/rn/g,\"n\");var d=\"\";for(var F=0;F127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128);}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128);}}}return d;}var C=Array();var P,h,E,v,g,Y,X,W,V;var S=7,Q=12,N=17,M=22;var A=5,z=9,y=14,w=20;var o=4,m=11,l=16,j=23;var U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P 12) {\n p = 'pm';\n i = hours % 12;\n }\n if (minutes < 10) {\n m = '0' + minutes;\n }\n\n // %H : hour as a decimal number using 24-hour clock\n newString = newString.replace(\"%H\", hours < 10 ? '0' + hours : hours);\n // %I : hour as a decimal number using 12-hour clock\n newString = newString.replace(\"%I\", i < 10 ? '0' + i : i);\n // %M : minute as decimal number\n newString = newString.replace(\"%M\", m);\n // %p : 'am' or 'pm'\n newString = newString.replace(\"%p\", p);\n\n return newString;\n};\n\nDate.prototype.daysUpTo = function(otherDate) {\n var days = [];\n\n var day1 = this.getTime();\n var day2 = otherDate.getTime();\n if (day1 > day2) {\n var tmp = day1;\n day1 = day2;\n day2 = tmp;\n }\n\n var nbrDays = Math.round((day2 - day1) / 86400000) + 1;\n for (var i = 0; i < nbrDays; i++) {\n var newDate = new Date();\n newDate.setTime(day1 + (i * 86400000));\n days.push(newDate);\n }\n\n return days;\n};\n\nString.prototype.isValidEmail = function() {\n var emailRE = /^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$/i;\n return emailRE.test(this);\n};\n\nString.prototype.asCSSIdentifier = function() {\n var characters = [ '_' , '\\\\.', '#' , '@' , '\\\\*', ':' , ',' , ' ', \"'\", '&', '\\\\+' ];\n var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_CO_', '_SP_', '_SQ_', '_AM_', '_P_' ];\n\n var newString = this;\n for (var i = 0; i < characters.length; i++) {\n var re = new RegExp(characters[i], 'g');\n newString = newString.replace(re, escapeds[i]);\n }\n\n if (/^\\d+/.test(newString)) {\n newString = '_' + newString;\n }\n\n return newString;\n};\n\nString.prototype.timeInterval = function () {\n var interval;\n if (this == \"once_per_hour\")\n interval = 3600;\n else if (this == \"every_minute\")\n interval = 60;\n else {\n interval = parseInt(this.substr(6)) * 60;\n }\n\n return interval;\n};\n\nDate.prototype.stringWithSeparator = function(separator) {\n var month = '' + (this.getMonth() + 1);\n var day = '' + this.getDate();\n var year = this.getYear();\n if (year < 1000)\n year = '' + (year + 1900);\n if (month.length == 1)\n month = '0' + month;\n if (day.length == 1)\n day = '0' + day;\n\n if (separator == '-')\n str = year + '-' + month + '-' + day;\n else\n str = day + '/' + month + '/' + year;\n\n return str;\n};\n\nDate.prototype.addDays = function(nbrDays) {\n var milliSeconds = this.getTime();\n milliSeconds += 86400000 * nbrDays;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.addHours = function(nbrHours) {\n var milliSeconds = this.getTime();\n milliSeconds += 3600000 * nbrHours;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.addMinutes = function(nbrMinutes) {\n var milliSeconds = this.getTime();\n milliSeconds += 60000 * nbrMinutes;\n this.setTime(milliSeconds);\n};\n\nDate.prototype.beginOfDay = function() {\n var beginOfDay = new Date(this.getTime());\n beginOfDay.setHours(0);\n beginOfDay.setMinutes(0);\n beginOfDay.setSeconds(0);\n beginOfDay.setMilliseconds(0);\n\n return beginOfDay;\n};\n\nDate.prototype.beginOfWeek = function() {\n var offset = firstDayOfWeek - this.getDay();\n if (offset > 0)\n offset -= 7;\n\n var beginOfWeek = this.beginOfDay();\n beginOfWeek.setHours(12);\n beginOfWeek.addDays(offset);\n\n return beginOfWeek;\n};\n\nDate.prototype.endOfWeek = function() {\n var endOfWeek = this.beginOfWeek();\n endOfWeek.addDays(6);\n\n endOfWeek.setHours(23);\n endOfWeek.setMinutes(59);\n endOfWeek.setSeconds(59);\n endOfWeek.setMilliseconds(999);\n\n return endOfWeek;\n};\n\n// YYYYMMDD\nDate.prototype.getDayString = function() {\n var newString = this.getYear();\n if (newString < 1000) newString += 1900;\n var month = '' + (this.getMonth() + 1);\n if (month.length == 1)\n month = '0' + month;\n newString += month;\n var day = '' + this.getDate();\n if (day.length == 1)\n day = '0' + day;\n newString += day;\n\n return newString;\n};\n\n// MMHH\nDate.prototype.getHourString = function() {\n var newString = this.getHours() + '00';\n if (newString.length == 3)\n newString = '0' + newString;\n\n return newString;\n};\n\nfunction l() {\n var key = arguments[0];\n var value = key;\n if (labels[key]) {\n value = labels[key];\n }\n else if (clabels[key]) {\n value = clabels[key];\n }\n for (var i = 1, j = 0; i < arguments.length; i++, j++) {\n value = value.replace('%{' + j + '}', arguments[i]);\n }\n\n return value;\n}\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.Common', ['ngMaterial'])\n .value('sgSettings', {\n baseURL: function() {\n return ApplicationBaseURL || null;\n },\n activeUser: function(param) {\n var settings = {\n login: UserLogin || null,\n identification: UserIdentification || null,\n email: UserEmail || null,\n language: UserLanguage || null,\n folderURL: UserFolderURL || null,\n isSuperUser: IsSuperUser || null,\n path: {\n calendar: UserCalendarPath || null,\n contacts: UserContactsPath || null,\n mail: UserMailPath || null,\n preferences: UserPreferencesPath || null,\n administration: (IsSuperUser ? UserAdministrationPath : null),\n logoff: UserLogoffPath || null\n }\n };\n if (param)\n return settings[param];\n else\n return settings;\n }\n })\n\n .constant('sgColors', {\n selection: [\n '#FFFFFF',\n '#330033',\n '#C0C0C0',\n '#999999',\n '#666666',\n '#333333',\n '#000000',\n '#FFCCCC',\n '#FF6666',\n '#FF0000',\n '#CC0000',\n '#990000',\n '#660000',\n '#330000',\n '#FFCC99',\n '#FF9966',\n '#FF9900',\n '#FF6600',\n '#CC6600',\n '#993300',\n '#663300',\n '#FFFF99',\n '#FFFF66',\n '#FFCC66',\n '#FFCC33',\n '#CC9933',\n '#996633',\n '#663333',\n '#FFFFCC',\n '#FFFF33',\n '#FFFF00',\n '#FFCC00',\n '#999900',\n '#666600',\n '#333300',\n '#CCCCCC',\n '#66FF99',\n '#33FF33',\n '#33CC00',\n '#009900',\n '#006600',\n '#003300',\n '#99FFFF',\n '#33FFFF',\n '#66CCCC',\n '#00CCCC',\n '#339999',\n '#336666',\n '#003333',\n '#CCFFFF',\n '#66FFFF',\n '#33CCFF',\n '#3366FF',\n '#3333FF',\n '#000099',\n '#000066',\n '#CCCCFF',\n '#9999FF',\n '#6666CC',\n '#6633FF',\n '#6600CC',\n '#333399',\n '#330099',\n '#FFCCFF',\n '#FF99FF',\n '#CC66CC',\n '#CC33CC',\n '#993399',\n '#663366',\n '#99FF99'\n ]\n })\n\n // md break-points values are hard-coded in angular-material/src/core/util/constant.js\n // $mdMedia has a built-in support for those values but can also evaluate others\n // For some reasons, angular-material's break-points don't match the specs\n // Here we define values according to specs\n .constant('sgConstant', {\n 'sm': '(max-width: 600px)',\n 'gt-sm': '(min-width: 600px)',\n 'md': '(min-width: 600px) and (max-width: 1024px)',\n 'gt-md': '(min-width: 1025px)',\n 'lg': '(min-width: 1024px) and (max-width: 1280px)',\n 'gt-lg': '(min-width: 1280px)'\n })\n\n .config(configure);\n\n configure.$inject = ['$mdThemingProvider'];\n function configure($mdThemingProvider) {\n $mdThemingProvider.definePalette('sogo-green', {\n '50': 'eaf5e9',\n '100': 'cbe5c8',\n '200': 'aad6a5',\n '300': '88c781',\n '400': '66b86a',\n '500': '56b04c',\n '600': '4da143',\n '700': '388e3c',\n '800': '367d2e',\n '900': '225e1b',\n 'A100': 'b9f6ca',\n 'A200': '69f0ae',\n 'A400': '00e676',\n 'A700': '00c853',\n 'contrastDefaultColor': 'dark',\n 'contrastDarkColors': '50 100 200',\n 'contrastLightColors': '300 400 500 600 700 800 900'\n });\n $mdThemingProvider.definePalette('sogo-blue', {\n '50': 'f0faf9',\n '100': 'e1f5f3',\n '200': 'ceebe8',\n '300': 'bfe0dd',\n '400': 'b2d6d3',\n '500': 'a1ccc8',\n '600': '8ebfbb',\n '700': '7db3b0',\n '800': '639997',\n '900': '4d8080',\n 'A100': 'd4f7fa',\n 'A200': 'c3f5fa',\n 'A400': '53e3f0',\n 'A700': '00b0c0',\n 'contrastDefaultColor': 'light',\n 'contrastDarkColors': ['50', '100', '200'],\n 'contrastLightColors': ['300', '400', '500', '600', '700', '800', '900', 'A100', 'A200', 'A400', 'A700']\n });\n $mdThemingProvider.definePalette('sogo-paper', {\n '50': 'fcf7f8',\n '100': 'f7f1dc',\n '200': 'ede5ca',\n '300': 'e6d8ba',\n '400': 'e2d2a3',\n '500': 'd6c48d',\n '600': 'baa870',\n '700': '857545',\n '800': '524517',\n '900': '433809',\n '1000': '000000',\n 'A100': 'ffffff',\n 'A200': 'eeeeee',\n 'A400': 'bdbdbd',\n 'A700': '616161',\n 'contrastDefaultColor': 'dark',\n 'contrastLightColors': '800 900'\n });\n // Default theme definition\n // .primaryColor will soon be deprecated in favor of primaryPalette (already on dev builds https://groups.google.com/forum/m/#!topic/ngmaterial/-sXR8CYBMPg)\n $mdThemingProvider.theme('default')\n .primaryPalette('sogo-blue', {\n 'default': '300',\n 'hue-1': '100',\n 'hue-2': '400',\n 'hue-3': 'A700'\n })\n .accentPalette('sogo-green', {\n 'default': '500',\n 'hue-1': '200',\n 'hue-2': '300',\n 'hue-3': 'A700'\n })\n .backgroundPalette('sogo-paper', {\n 'default': '100',\n 'hue-1': '200',\n 'hue-2': '50',\n 'hue-3': '500'\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n decodeUri.$inject = ['$window'];\n function decodeUri($window) {\n return $window.decodeURIComponent;\n }\n\n angular.module('SOGo.Common')\n .filter('decodeUri', decodeUri);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n encodeUri.$inject = ['$window'];\n function encodeUri($window) {\n return $window.encodeURIComponent;\n }\n\n angular.module('SOGo.Common')\n .filter('encodeUri', encodeUri);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * loc - A simple filter to return the localized version of a string.\n * @memberof SOGo.Common\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n function loc() {\n return l;\n }\n\n angular.module('SOGo.Common')\n .filter('loc', loc);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * range - A simple filter that will return an array of the size of its argument.\n * @memberof SOGo.Common\n */\n(function () {\n 'use strict';\n\n function range() {\n return function(n) {\n var res = [];\n for (var i = 0; i < parseInt(n); i++) {\n res.push(i);\n }\n return res;\n };\n }\n\n angular.module('SOGo.Common')\n .filter('range', range);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AclController.$inject = ['$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder'];\n function AclController($mdDialog, Dialog, usersWithACL, User, folder) {\n var vm = this;\n\n vm.users = usersWithACL; // ACL users\n vm.folder = folder;\n vm.selectedUser = null;\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.closeModal = closeModal;\n vm.saveModal = saveModal;\n vm.confirmChange = confirmChange;\n vm.removeUser = removeUser;\n vm.addUser = addUser;\n vm.selectUser = selectUser;\n vm.confirmation = { showing: false,\n message: ''};\n\n function userFilter($query) {\n return User.$filter($query, folder.$acl.users);\n }\n\n function closeModal() {\n folder.$acl.$resetUsersRights(); // cancel changes\n $mdDialog.hide();\n }\n\n function saveModal() {\n folder.$acl.$saveUsersRights().then(function() {\n $mdDialog.hide();\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function confirmChange(user) {\n var confirmation = user.$confirmRights();\n if (confirmation) {\n vm.confirmation.showing = true;\n vm.confirmation.message = confirmation;\n }\n }\n\n function removeUser(user) {\n folder.$acl.$removeUser(user.uid).catch(function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function addUser(data) {\n if (data) {\n folder.$acl.$addUser(data).then(function() {\n vm.userToAdd = '';\n vm.searchText = '';\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n }\n\n function selectUser(user) {\n if (vm.selectedUser == user) {\n vm.selectedUser = null;\n }\n else {\n vm.selectedUser = user;\n vm.selectedUser.$rights();\n }\n }\n }\n\n angular\n .module('SOGo.Common')\n .controller('AclController', AclController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n/**\n * @type {angular.Module}\n */\n(function () {\n 'use strict';\n\n /**\n * @ngInject\n */\n navController.$inject = ['$scope', '$timeout', '$interval', '$http', '$mdSidenav', '$mdBottomSheet', '$mdMedia', '$log', 'sgConstant', 'sgSettings', 'Alarm'];\n function navController($scope, $timeout, $interval, $http, $mdSidenav, $mdBottomSheet, $mdMedia, $log, sgConstant, sgSettings, Alarm) {\n\n $scope.activeUser = sgSettings.activeUser();\n $scope.baseURL = sgSettings.baseURL();\n\n // Show current day in top bar\n $scope.currentDay = window.currentDay;\n $timeout(function() {\n // Update date when day ends\n $interval(function() {\n $http.get('../date').success(function(data) {\n $scope.currentDay = data;\n });\n }, 24 * 3600 * 1000);\n }, window.currentDay.secondsBeforeTomorrow * 1000);\n\n $scope.toggleLeft = function () {\n $mdSidenav('left').toggle()\n .then(function () {\n $log.debug(\"toggle left is done\");\n });\n };\n $scope.toggleRight = function () {\n $mdSidenav('right').toggle()\n .then(function () {\n $log.debug(\"toggle RIGHT is done\");\n });\n };\n $scope.openBottomSheet = function() {\n $mdBottomSheet.show({\n parent: angular.element(document.getElementById('left-sidenav')),\n templateUrl: 'bottomSheetTemplate.html'\n });\n };\n $scope.toggleDetailView = function() {\n var detail = angular.element(document.getElementById('detailView'));\n detail.toggleClass('sg-close');\n };\n $scope.$watch(function() {\n return $mdMedia(sgConstant['gt-md']);\n }, function(newVal) {\n $scope.isGtMedium = newVal;\n });\n\n Alarm.getAlarms();\n }\n\n angular.module('SOGo.Common')\n .controller('navController', navController);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name Acl\n * @constructor\n * @param {String} folderId - the folder ID associated to the ACLs\n */\n function Acl(folderId) {\n this.folderId = folderId;\n }\n\n /**\n * @memberof Acl\n * @desc The factory we'll use to register with Angular.\n * @return the Acl constructor\n */\n Acl.factory = ['$q', '$timeout', 'sgSettings', 'Resource', 'User', function($q, $timeout, Settings, Resource, User) {\n angular.extend(Acl, {\n $q: $q,\n $timeout: $timeout,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n $User: User\n });\n\n return Acl;\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of User in Angular module.\n */\n angular.module('SOGo.Common').factory('Acl', Acl.factory);\n\n /**\n * @function $users\n * @memberof Acl.prototype\n * @desc Fetch the list of users that have specific rights for the current folder.\n * @return a promise of an array of User objects\n */\n Acl.prototype.$users = function() {\n var _this = this,\n deferred = Acl.$q.defer(),\n user;\n if (this.users) {\n deferred.resolve(this.users);\n }\n else {\n return Acl.$$resource.fetch(this.folderId, 'acls').then(function(response) {\n _this.users = [];\n //console.debug(JSON.stringify(users, undefined, 2));\n angular.forEach(response.users, function(data) {\n user = new Acl.$User(data);\n user.canSubscribeUser = user.isSubscribed;\n user.wasSubscribed = user.isSubscribed;\n user.$rights = angular.bind(user, user.$acl, _this.folderId);\n _this.users.push(user);\n });\n deferred.resolve(_this.users);\n return _this.users;\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $addUser\n * @memberof Acl.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @see {@link User.$filter}\n */\n Acl.prototype.$addUser = function(user) {\n var _this = this,\n deferred = Acl.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.users, 'uid'), user.uid) > -1) {\n // No UID specified or user already in ACLs\n deferred.resolve();\n }\n else {\n Acl.$$resource.fetch(this.folderId, 'addUserInAcls', param).then(function() {\n user.wasSubscribed = false;\n user.userClass = user.isGroup ? 'group-user' : 'normal-user';\n user.$rights = angular.bind(user, user.$acl, _this.folderId);\n _this.users.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeUser\n * @memberof Acl.prototype\n * @desc Remove a user from the folder's ACL\n * @return a promise of the server call to remove the user from the folder's ACL\n */\n Acl.prototype.$removeUser = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Acl.$$resource.fetch(this.folderId, 'removeUserFromAcls', param).then(function() {\n var i = _.indexOf(_.pluck(_this.users, 'uid'), uid);\n if (i >= 0) {\n _this.users.splice(i, 1);\n }\n });\n };\n\n /**\n * @function $resetUsersRights\n * @memberof Acl.prototype\n * @desc Restore initial rights of all users.\n */\n Acl.prototype.$resetUsersRights = function() {\n angular.forEach(this.users, function(user) {\n user.$resetRights();\n });\n };\n\n /**\n * @function $saveUsersRights\n * @memberof Acl.prototype\n * @desc Save user rights that have changed and subscribe users that have been selected.\n * @return a promise that resolved only if the modifications and subscriptions were successful\n */\n Acl.prototype.$saveUsersRights = function() {\n var _this = this,\n deferredSave = Acl.$q.defer(),\n deferredSubscribe = Acl.$q.defer(),\n param = {action: 'saveUserRights'},\n users = [];\n\n // Save user rights\n angular.forEach(this.users, function(user) {\n if (user.$rightsAreDirty()) {\n users.push(user.$omit());\n // console.debug('save ' + JSON.stringify(user.$omit(), undefined, 2));\n }\n });\n if (users.length) {\n Acl.$$resource.save(this.folderId, users, param)\n .then(function() {\n // Save was successful; copy rights to shadow rights\n angular.forEach(_this.users, function(user) {\n if (user.$rightsAreDirty()) {\n user.$shadowRights = angular.copy(user.rights);\n }\n });\n deferredSave.resolve();\n }, deferredSave.reject);\n }\n else {\n deferredSave.resolve();\n }\n\n // Subscribe users\n users = [];\n angular.forEach(this.users, function(user) {\n if (!user.wasSubscribed && user.isSubscribed) {\n users.push(user.uid);\n // console.debug('subscribe ' + user.uid);\n }\n });\n if (users.length) {\n param = {uids: users.join(',')};\n Acl.$$resource.fetch(this.folderId, 'subscribeUsers', param)\n .then(function() {\n // Subscribe was successful; reset \"wasSubscribed\" attribute\n angular.forEach(_this.users, function(user) {\n user.wasSubscribed = user.isSubscribed;\n });\n deferredSubscribe.resolve();\n }, deferredSubscribe.reject);\n }\n else {\n deferredSubscribe.resolve();\n }\n return Acl.$q.all([deferredSave.promise, deferredSubscribe.promise]);\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Alarm\n * @constructor\n */\n function Alarm() {\n this.currentAlarm = null;\n }\n\n /**\n * @name getAlarms\n * @desc Fetch the list of alarms from the server and use the last one\n */\n Alarm.getAlarms = function() {\n var _this = this;\n var now = new Date();\n var browserTime = Math.floor(now.getTime()/1000);\n\n this.$$resource.fetch('', 'alarmslist?browserTime=' + browserTime).then(function(data) {\n \n var alarms = data.alarms.sort(function reverseSortByAlarmTime(a, b) {\n var x = parseInt(a[2]);\n var y = parseInt(b[2]);\n return (y - x);\n });\n\n if (alarms.length > 0) {\n var next = alarms.pop();\n var now = new Date();\n var utc = Math.floor(now.getTime()/1000);\n var url = next[0] + '/' + next[1];\n var alarmTime = parseInt(next[2]);\n var delay = alarmTime;\n if (alarmTime > 0) delay -= utc;\n var d = new Date(alarmTime*1000);\n //console.log (\"now = \" + now.toUTCString());\n //console.log (\"next event \" + url + \" in \" + delay + \" seconds (on \" + d.toUTCString() + \")\");\n\n var f = angular.bind(_this, Alarm.showAlarm, url);\n\n if (_this.currentAlarm)\n _this.$timeout.cancel(_this.currentAlarm);\n\n _this.currentAlarm = _this.$timeout(f, delay*1000);\n }\n });\n };\n \n /**\n * @name showAlarm\n * @desc Show the latest alarm using a toast\n * @param url The URL of the calendar component for snoozing\n */\n Alarm.showAlarm = function(url) {\n var _this = this;\n\n this.$$resource.fetch(url, '?resetAlarm=yes').then(function(data) {\n _this.$toast.show({\n position: 'top right',\n hideDelay: 0,\n template: [\n '',\n ' ',\n ' ',\n ' ',\n ' ',\n l('5 minutes'),\n ' ',\n ' ',\n l('10 minutes'),\n ' ',\n ' ',\n l('15 minutes'),\n ' ',\n ' ',\n l('30 minutes'),\n ' ',\n ' ',\n l('45 minutes'),\n ' ',\n ' ',\n l('1 hour'),\n ' ',\n ' ',\n l('1 day'),\n ' ',\n ' ',\n ' ',\n ' ',\n l('Cancel'),\n ' ',\n ' ',\n l('Ok'),\n ' ',\n ''\n ].join(''),\n locals: {\n url: url\n },\n controller: AlarmController\n });\n\n /**\n * @ngInject\n */\n AlarmController.$inject = ['scope', '$mdToast', 'url'];\n function AlarmController(scope, $mdToast, url) {\n scope.reminder = '10';\n scope.cancel = function() {\n $mdToast.hide();\n };\n scope.ok = function() {\n _this.$$resource.fetch(url, 'view?snoozeAlarm=' + scope.reminder);\n $mdToast.hide();\n };\n }\n });\n };\n\n /**\n * @memberof Alarm\n * @desc The factory we'll register as Alarm in the Angular module SOGo.Common\n * @ngInject\n */\n AlarmService.$inject = ['$timeout', 'sgSettings', 'Resource', '$mdToast'];\n function AlarmService($timeout, Settings, Resource, $mdToast) {\n angular.extend(Alarm, {\n $timeout: $timeout,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $toast: $mdToast\n });\n\n return Alarm; // return constructor\n }\n\n /* Factory registration in Angular module */\n angular\n .module('SOGo.Common')\n .factory('Alarm', AlarmService);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for Authentication */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n angular.module('SOGo.Authentication', [])\n\n .constant('passwordPolicyConfig', {\n PolicyPasswordChangeUnsupported: -3,\n PolicyPasswordSystemUnknown: -2,\n PolicyPasswordUnknown: -1,\n PolicyPasswordExpired: 0,\n PolicyAccountLocked: 1,\n PolicyChangeAfterReset: 2,\n PolicyPasswordModNotAllowed: 3,\n PolicyMustSupplyOldPassword: 4,\n PolicyInsufficientPasswordQuality: 5,\n PolicyPasswordTooShort: 6,\n PolicyPasswordTooYoung: 7,\n PolicyPasswordInHistory: 8,\n PolicyNoError: 65535\n })\n\n // TODO: convert to a Factory recipe?\n .provider('Authentication', Authentication);\n\n function Authentication() {\n function readCookie(name) {\n var foundCookie, prefix, pairs, i, currentPair, start;\n foundCookie = null;\n prefix = name + '=';\n pairs = document.cookie.split(';');\n for (i = 0; !foundCookie && i < pairs.length; i++) {\n currentPair = pairs[i];\n start = 0;\n while (currentPair.charAt(start) == ' ')\n start++;\n if (start > 0)\n currentPair = currentPair.substr(start);\n if (currentPair.indexOf(prefix) === 0)\n foundCookie = currentPair.substr(prefix.length);\n }\n\n return foundCookie;\n }\n\n function readLoginCookie() {\n var loginValues = null,\n cookie = readCookie('0xHIGHFLYxSOGo'),\n value;\n if (cookie && cookie.length > 8) {\n value = decodeURIComponent(cookie.substr(8));\n loginValues = value.base64decode().split(':');\n }\n\n return loginValues;\n }\n\n function redirectUrl(username, domain) {\n var userName, address, baseAddress, altBaseAddress, parts, hostpart, protocol, newAddress;\n\n userName = username;\n if (domain)\n userName += '@' + domain.value;\n address = '' + window.location.href;\n baseAddress = ApplicationBaseURL + '/' + encodeURIComponent(userName);\n if (baseAddress[0] == '/') {\n parts = address.split('/');\n hostpart = parts[2];\n protocol = parts[0];\n baseAddress = protocol + '//' + hostpart + baseAddress;\n }\n parts = baseAddress.split('/');\n parts.splice(0, 3);\n altBaseAddress = parts.join('/');\n if ((address.startsWith(baseAddress) || address.startsWith(altBaseAddress)) &&\n !address.endsWith('/logoff')) {\n newAddress = address;\n }\n else {\n newAddress = baseAddress;\n }\n\n return newAddress;\n }\n\n this.$get = getService;\n\n /**\n * @ngInject\n */\n getService.$inject = ['$q', '$http', 'passwordPolicyConfig'];\n function getService($q, $http, passwordPolicyConfig) {\n var _this = this, service;\n\n service = {\n login: function(data) {\n var d = $q.defer(),\n username = data.username,\n password = data.password,\n domain = data.domain,\n language,\n rememberLogin = data.rememberLogin ? 1 : 0;\n\n if (data.loginSuffix && !username.endsWith(data.loginSuffix)) {\n username += loginSuffix;\n domain = false;\n }\n if (data.language && data.language != 'WONoSelectionString') {\n language = data.language;\n }\n\n $http({\n method: 'POST',\n url: '/SOGo/connect',\n data: {\n userName: username,\n password: password,\n domain: domain,\n language: language,\n rememberLogin: rememberLogin\n }\n }).success(function(data, status) {\n // Make sure browser's cookies are enabled\n var loginCookie = readLoginCookie();\n if (!loginCookie) {\n d.reject(l('cookiesNotEnabled'));\n }\n else {\n // Check password policy\n if (typeof data.expire != 'undefined' && typeof data.grace != 'undefined') {\n if (data.expire < 0 && data.grace > 0) {\n d.reject({grace: data.grace});\n //showPasswordDialog('grace', createPasswordGraceDialog, data['grace']);\n } else if (data.expire > 0 && data.grace == -1) {\n d.reject({expire: data.expire});\n //showPasswordDialog('expiration', createPasswordExpirationDialog, data['expire']);\n }\n else {\n d.resolve(redirectUrl(username, domain));\n }\n }\n else {\n d.resolve(redirectUrl(username, domain));\n }\n }\n }).error(function(data, status) {\n var msg, perr;\n if (data && data.LDAPPasswordPolicyError) {\n perr = data.LDAPPasswordPolicyError;\n if (perr == passwordPolicyConfig.PolicyNoError) {\n msg = l('Wrong username or password.');\n }\n else if (perr == passwordPolicyConfig.PolicyAccountLocked) {\n msg = l('Your account was locked due to too many failed attempts.');\n }\n else {\n msg = l('Login failed due to unhandled error case: ') + perr;\n }\n }\n else {\n msg = l('Unhandled error response');\n }\n d.reject({error: msg});\n });\n return d.promise;\n }, // login: function(data) { ...\n\n changePassword: function(newPassword) {\n var d = $q.defer(),\n loginCookie = _this.readLoginCookie();\n\n $http({\n method: 'POST',\n url: '/SOGo/so/changePassword',\n data: {\n userName: loginCookie[0],\n password: loginCookie[1],\n newPassword: newPassword }\n }).success(function(data, status) {\n d.resolve();\n }).error(function(data, status) {\n var error,\n perr = data.LDAPPasswordPolicyError;\n\n if (!perr) {\n perr = passwordPolicyConfig.PolicyPasswordSystemUnknown;\n error = _(\"Unhandled error response\");\n }\n else if (perr == passwordPolicyConfig.PolicyNoError) {\n error = l(\"Password change failed\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordModNotAllowed) {\n error = l(\"Password change failed - Permission denied\");\n } else if (perr == passwordPolicyConfig.PolicyInsufficientPasswordQuality) {\n error = l(\"Password change failed - Insufficient password quality\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordTooShort) {\n error = l(\"Password change failed - Password is too short\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordTooYoung) {\n error = l(\"Password change failed - Password is too young\");\n } else if (perr == passwordPolicyConfig.PolicyPasswordInHistory) {\n error = l(\"Password change failed - Password is in history\");\n } else {\n error = l(\"Unhandled policy error: %{0}\").formatted(perr);\n perr = passwordPolicyConfig.PolicyPasswordUnknown;\n }\n\n d.reject(error);\n });\n return d.promise;\n }\n };\n return service;\n }\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Dialog\n * @constructor\n */\n function Dialog() {\n }\n\n /**\n * @name alert\n * @desc Show an alert dialog box with a single \"OK\" button\n * @param {string} title\n * @param {string} content\n */\n Dialog.alert = function(title, content) {\n var alert = this.$modal.alert()\n .title(title)\n .content(content)\n .ok(l('OK'));\n this.$modal.show(alert);\n };\n\n /**\n * @name confirm\n * @desc Show a confirmation dialog box with buttons 'Cancel' and 'OK'\n * @param {string} title\n * @param {string} content\n * @returns a promise that resolves if the user has clicked on the 'OK' button\n */\n Dialog.confirm = function(title, content, options) {\n var confirm = this.$modal.confirm()\n .title(title)\n .content(content)\n .ok((options && options.ok)? options.ok : l('OK'))\n .cancel((options && options.cancel)? options.cancel : l('Cancel'));\n return this.$modal.show(confirm);\n };\n\n /**\n * @name prompt\n * @desc Show a primpt dialog box with a input text field and the 'Cancel' and 'OK' buttons\n * @param {string} title\n * @param {string} label\n * @param {object} [options] - use a different input type by setting 'inputType'\n * @returns a promise that resolves with the input field value\n */\n Dialog.prompt = function(title, label, options) {\n var o = options || {},\n d = this.$q.defer();\n\n this.$modal.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '

',\n ' ',\n ' ',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n ' ' + l('Cancel'),\n ' ',\n ' ',\n ' ' + l('OK'),\n ' ',\n '
',\n '
'\n ].join(''),\n controller: PromptDialogController\n });\n\n /**\n * @ngInject\n */\n PromptDialogController.$inject = ['scope', '$mdDialog'];\n function PromptDialogController(scope, $mdDialog) {\n scope.title = title;\n scope.name = \"\";\n scope.cancel = function() {\n d.reject();\n $mdDialog.hide();\n };\n scope.ok = function() {\n d.resolve(scope.name);\n $mdDialog.hide();\n };\n }\n\n return d.promise;\n };\n\n /**\n * @memberof Dialog\n * @desc The factory we'll register as Dialog in the Angular module SOGo.Common\n * @ngInject\n */\n DialogService.$inject = ['$q', '$mdDialog'];\n function DialogService($q, $mdDialog) {\n angular.extend(Dialog, { $q: $q , $modal: $mdDialog });\n\n return Dialog; // return constructor\n }\n\n /* Factory registration in Angular module */\n angular\n .module('SOGo.Common')\n .factory('Dialog', DialogService);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Gravatar - A service to build the Gravatar URL for an email address\n * @memberof SOGo.Common\n * @param {string} email\n * @param {number} [size] - the size of the image\n * @ngInject\n */\n function Gravatar() {\n return function(email, size) {\n var x, y, hash, s = size;\n if (!email) {\n return '';\n }\n x = email.indexOf('<');\n if (x >= 0) {\n y = email.indexOf('>', x);\n if (y > x)\n email = email.substring(x+1,y);\n }\n if (!size) {\n s = 48; // default to 48 pixels\n }\n hash = email.md5();\n\n // return 'https://www.gravatar.com/avatar/' + hash + '?s=' + s + '&d=identicon';\n return 'https://www.gravatar.com/avatar/' + hash + '?s=' + s + '&d=wavatar';\n };\n }\n\n angular\n .module('SOGo.Common')\n .factory('Gravatar', Gravatar);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Resource\n * @constructor\n * @param {Object} $http - the Angular HTTP service\n * @param {Object} $q - the Angular promise/deferred service\n * @param {String} path - the base path of the external resource\n * @param {Object} options - extra attributes to be associated to the object\n */\n function Resource($http, $q, path, activeUser, options) {\n angular.extend(this, {\n _http: $http,\n _q: $q,\n _path: path,\n _activeUser: activeUser\n });\n angular.extend(this, options);\n // Trim trailing slash\n this._path = this._path.replace(/\\/$/, '');\n }\n\n /**\n * @memberof Resource\n * @desc The factory we'll use to register with Angular.\n * @return a new Resource object\n */\n Resource.$factory = ['$http', '$q', function($http, $q) {\n return function(path, activeUser, options) {\n return new Resource($http, $q, path, activeUser, options);\n };\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of Resource in Angular module.\n */\n angular.module('SOGo.Common').factory('Resource', Resource.$factory);\n\n /**\n * @function userResource\n * @memberof Resource.prototype\n * @desc Create a new Resource object associated to a username different than the active user.\n * @param {String} uid - the user UID\n * @return a new Resource object\n */\n Resource.prototype.userResource = function(uid) {\n var path = _.compact(this._activeUser.folderURL.split('/'));\n path.splice(path.length - 1, 1, escape(uid));\n\n return new Resource(this._http, this._q, '/' + path.join('/'), this._activeUser);\n };\n\n /**\n * @function fetch\n * @memberof Resource.prototype\n * @desc Fetch resource using a specific folder, action and/or parameters.\n * @param {string} folderId - the folder on which the action will be applied (ex: addressbook, calendar)\n * @param {string} action - the action to be used in the URL\n * @param {Object} params - Object parameters injected through the $http service\n * @return a promise\n */\n Resource.prototype.fetch = function(folderId, action, params) {\n var deferred = this._q.defer(),\n path = [this._path];\n if (folderId) path.push(folderId.split('/'));\n if (action) path.push(action);\n path = _.compact(_.flatten(path)).join('/');\n\n this._http({\n method: 'GET',\n url: path,\n params: params\n })\n .success(deferred.resolve)\n .error(function(data, status) {\n if (status == 404)\n return deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function newguid\n * @memberof Resource.prototype\n * @desc Fetch a new GUID on the specified folder ID.\n * @return a promise of the new data structure\n */\n Resource.prototype.newguid = function(folderId) {\n var deferred = this._q.defer(),\n path = this._path + '/' + folderId + '/newguid';\n\n this._http\n .get(path)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function create\n * @memberof Resource.prototype\n * @desc Create a new resource using a specific action (post).\n * @param {string} action - the action to be used in the URL\n * @param {string} name - the new resource's name\n * @return a promise\n */\n Resource.prototype.create = function(action, name) {\n var deferred = this._q.defer(),\n path = this._path + '/' + action;\n\n this._http\n .post(path, { name: name })\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function post\n * @memberof Resource.prototype\n * @desc Post a resource attributes on the server.\n * @return a promise\n */\n Resource.prototype.post = function(id, action, data) {\n var deferred = this._q.defer(),\n path = [this._path];\n if (id) path.push(id);\n if (action) path.push(action);\n path = _.compact(_.flatten(path)).join('/');\n\n this._http\n .post(path, data)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function save\n * @memberof Resource.prototype\n * @desc Save a resource attributes on the server (post /save).\n * @return a promise\n */\n Resource.prototype.save = function(id, newValue, options) {\n var deferred = this._q.defer(),\n action = (options && options.action)? options.action : 'save';\n\n return this.post(id, action, newValue);\n };\n\n /**\n * @function remove\n * @memberof Resource.prototype\n * @desc Delete a resource (get /delete).\n * @return a promise\n */\n Resource.prototype.remove = function(uid) {\n var deferred = this._q.defer(),\n path = this._path + '/' + uid + '/delete';\n\n this._http\n .get(path)\n .success(deferred.resolve)\n .error(deferred.reject);\n\n return deferred.promise;\n };\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name User\n * @constructor\n * @param {object} [userData] - some default values for the user\n */\n function User(userData) {\n if (userData) {\n this.init(userData);\n }\n }\n\n /**\n * @memberof User\n * @desc The factory we'll use to register with Angular.\n * @return the User constructor\n */\n User.factory = ['$q', '$log', 'sgSettings', 'Resource', 'Gravatar', function($q, $log, Settings, Resource, Gravatar) {\n angular.extend(User, {\n $q: $q,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n $gravatar: Gravatar,\n $query: '',\n $users: []\n });\n\n return User;\n }];\n\n /**\n * @module SOGo.Common\n * @desc Factory registration of User in Angular module.\n */\n angular.module('SOGo.Common').factory('User', User.factory);\n\n /**\n * @memberof User\n * @desc Search for users that match a string.\n * @param {string} search - a string used to performed the search\n * @param {object[]} excludedUsers - a list of User objects that must be excluded from the results\n * @return a promise of an array of matching User objects\n */\n User.$filter = function(search, excludedUsers) {\n var param = {search: search};\n var _this = this;\n\n if (!search) {\n // No query specified\n User.$users = [];\n return User.$q.when(User.$users);\n }\n if (User.$query == search) {\n // Query hasn't changed\n return User.$q.when(User.$users);\n }\n User.$query = search;\n\n return User.$$resource.fetch(null, 'usersSearch', param).then(function(response) {\n var results, index, user,\n compareUids = function(data) {\n return _this.uid == data.uid;\n };\n if (excludedUsers) {\n // Remove excluded users from response\n results = _.filter(response.users, function(data) {\n return !_.find(excludedUsers, compareUids, user);\n });\n }\n else {\n results = response.users;\n }\n // Remove users that no longer match the search query\n for (index = User.$users.length - 1; index >= 0; index--) {\n user = User.$users[index];\n if (!_.find(results, compareUids, user)) {\n User.$users.splice(index, 1);\n }\n }\n // Add new users matching the search query\n _.each(results, function(data, index) {\n if (_.isUndefined(_.find(User.$users, compareUids, data))) {\n var user = new User(data);\n User.$users.splice(index, 0, user);\n }\n });\n User.$log.debug(User.$users);\n return User.$users;\n });\n };\n\n /**\n * @function init\n * @memberof User.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of user\n */\n User.prototype.init = function(data) {\n angular.extend(this, data);\n if (!this.$$shortFormat)\n this.$$shortFormat = this.$shortFormat();\n if (!this.$$image)\n this.$$image = this.image || User.$gravatar(this.c_email);\n\n // An empty attribute to trick md-autocomplete when adding users from the ACLs editor\n this.empty = ' ';\n };\n\n /**\n * @function $shortFormat\n * @memberof User.prototype\n * @return the fullname along with the email address\n */\n User.prototype.$shortFormat = function(options) {\n var fullname = this.cn || this.c_email;\n var email = this.c_email;\n var no_email = options && options.email === false;\n if (!no_email && email && fullname != email) {\n fullname += ' <' + email + '>';\n }\n return fullname;\n };\n\n /**\n * @function $acl\n * @memberof User.prototype\n * @desc Fetch the user rights associated to a specific folder and populate the 'rights' attribute.\n * @param {string} the folder ID\n * @return a promise\n */\n User.prototype.$acl = function(folderId) {\n var _this = this,\n deferred = User.$q.defer(),\n param = {uid: this.uid};\n if (this.$shadowRights) {\n deferred.resolve(this.rights);\n }\n else {\n User.$$resource.fetch(folderId, 'userRights', param).then(function(data) {\n _this.rights = data;\n // Convert numbers (0|1) to boolean values\n //angular.forEach(_.keys(_this.rights), function(key) {\n // _this.rights[key] = _this.rights[key] ? true : false;\n //});\n // console.debug('rights ' + _this.uid + ' => ' + JSON.stringify(data, undefined, 2));\n // Keep a copy of the server's version\n _this.$shadowRights = angular.copy(data);\n deferred.resolve(data);\n return data;\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $isAnonymous\n * @memberof User.prototype\n * @return true if it's the special anonymous user\n */\n User.prototype.$isAnonymous = function() {\n return this.uid == 'anonymous';\n };\n\n /**\n * @function $isSpecial\n * @memberof User.prototype\n * @desc Only accurate from the ACL editor.\n * @return true if the user is not a regular system user\n */\n User.prototype.$isSpecial = function() {\n return this.userClass && this.userClass == 'public-user';\n };\n\n /**\n * @function $confirmRights\n * @memberof User.prototype\n * @desc Check if a confirmation is required before giving some rights.\n * @return the confirmation message or false if no confirmation is required\n */\n User.prototype.$confirmRights = function() {\n var confirmation = false;\n\n if (this.$confirmation) {\n // Don't bother the user more than once\n return false;\n }\n\n if (_.some(_.values(this.rights))) {\n if (this.uid == 'anonymous') {\n confirmation = l('Potentially anyone on the Internet will be able to access your folder, even if they do not have an account on this system. Is this information suitable for the public Internet?');\n }\n else if (this.uid == '') {\n confirmation = l('Any user with an account on this system will be able to access your folder. Are you certain you trust them all?');\n }\n }\n\n this.$confirmation = confirmation;\n\n return confirmation;\n };\n\n /**\n * @function $rightsAreDirty\n * @memberof User.prototype\n * @return whether or not the rights have changed from their initial values\n */\n User.prototype.$rightsAreDirty = function() {\n return this.rights && !_.isEqual(this.rights, this.$shadowRights);\n };\n\n /**\n * @function $resetRights\n * @memberof User.prototype\n * @desc Restore initial rights or disable all rights\n * @param {boolean} [zero] - reset all rights to zero when true\n */\n User.prototype.$resetRights = function(zero) {\n var _this = this;\n if (zero) {\n // Disable all rights\n _.map(_.keys(this.rights), function(key) {\n if (angular.isString(_this.rights[key]))\n _this.rights[key] = 'None';\n else\n _this.rights[key] = 0;\n });\n }\n else {\n // Restore initial rights\n this.rights = angular.copy(this.$shadowRights);\n }\n };\n\n /**\n * @function $folders\n * @memberof User.prototype\n * @desc Retrieve the list of folders of a specific type\n * @param {string} type - either 'contact' or 'calendar'\n * @return a promise of the HTTP query result or the cached result\n */\n User.prototype.$folders = function(type) {\n var _this = this,\n deferred = User.$q.defer(),\n param = {type: type};\n if (this.$$folders) {\n deferred.resolve(this.$$folders);\n }\n else {\n User.$$resource.userResource(this.uid).fetch(null, 'foldersSearch', param).then(function(response) {\n _this.$$folders = response.folders;\n deferred.resolve(response.folders);\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof User.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the User instance\n */\n User.prototype.$omit = function() {\n var user = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n user[key] = value;\n }\n });\n return user;\n };\n\n User.prototype.toString = function() {\n return '[User ' + this.c_email + ']';\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n \n /**\n * sgFocus - A service to set the focus on the element associated to a specific string\n * @memberof SOGo.Common\n * @param {string} name - the string identifier of the element\n * @see {@link SOGo.Common.sgFocusOn}\n * @ngInject\n */\n sgFocus.$inject = ['$rootScope', '$timeout'];\n function sgFocus($rootScope, $timeout) {\n return function(name) {\n $timeout(function() {\n $rootScope.$broadcast('sgFocusOn', name);\n });\n };\n }\n\n angular\n .module('SOGo.Common')\n .factory('sgFocus', sgFocus);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true, newcap: false */\n 'use strict';\n\n /**\n * sgAvatarImage - An avatar directive that returns un img element with either a local URL (if sg-src is specified)\n * or a Gravatar URL built from the Gravatar factory.\n * Based on http://blog.lingohub.com/2014/08/better-ux-with-angularjs-directives/.\n * @memberof SOGo.Common\n * @example:\n \n */\n function sgAvatarImage() {\n return {\n restrict: 'AE',\n replace: true,\n scope: {\n size: '@',\n email: '=sgEmail',\n src: '=sgSrc'\n },\n template: '',\n bindToController: true,\n controller: 'sgAvatarImageController',\n controllerAs: 'vm'\n };\n }\n\n /**\n * @ngInject\n */\n sgAvatarImageController.$inject = ['$scope', '$element', 'Gravatar'];\n function sgAvatarImageController($scope, $element, Gravatar) {\n var vm = this;\n\n $scope.$watch('vm.email', function(email) {\n if (email && !vm.url) {\n vm.url = Gravatar(email, vm.size);\n }\n });\n\n // If sg-src is defined, watch the expression for the URL of a local image\n if ('sg-src' in $element[0].attributes) {\n $scope.$watch('vm.src', function(src) {\n if (src) {\n vm.url = src;\n }\n });\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgAvatarImage', sgAvatarImage)\n .controller('sgAvatarImageController', sgAvatarImageController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgColorPicker - Color picker widget\n * @restrict element\n * @param {function} sgOnSelect - the function to call when clicking on a color.\n * One variable is available: color.\n * @ngInject\n * @example:\n\n \n */\n sgColorPicker.$inject = ['$parse'];\n function sgColorPicker($parse) {\n return {\n restrict: 'E',\n template: [\n '',\n ' ',\n ' color_lens',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n ''\n ].join(''),\n replace: true,\n bindToController: true,\n controller: sgColorPickerController,\n controllerAs: '$sgColorPickerController',\n link: link\n };\n\n function link(scope, iElement, iAttr, controller) {\n // Associate callback to controller\n controller.doSelect = $parse(iElement.attr('sg-on-select'));\n }\n }\n \n /**\n * @ngInject\n */\n sgColorPickerController.$inject = ['$scope', 'sgColors'];\n function sgColorPickerController($scope, sgColors) {\n var vm = this;\n\n vm.colors = sgColors.selection;\n vm.select = function(color) {\n vm.doSelect($scope, { color: color });\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgColorPicker', sgColorPicker);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgCompile - Assign an expression to a DOM element and compile it.\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} sgCompile - the expression to compile\n * @ngInject\n * @example:\n\n
\n */\n sgCompile.$inject = ['$compile'];\n function sgCompile($compile) {\n return {\n restrict: 'A',\n link: sgCompileLink\n };\n\n function sgCompileLink(scope, element, attrs) {\n var ensureCompileRunsOnce = scope.$watch(\n function(scope) {\n // Watch the sg-compile expression for changes\n return scope.$eval(attrs.sgCompile);\n },\n function(value) {\n // When the sg-compile expression changes, assign it into the current DOM\n element.html(value);\n \n // Compile the new DOM and link it to the current scope.\n // NOTE: we only compile .childNodes so that we don't get into infinite loop compiling ourselves\n $compile(element.contents())(scope);\n \n // Use un-watch feature to ensure compilation happens only once.\n ensureCompileRunsOnce();\n }\n );\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgCompile', sgCompile);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgEnter - A directive evaluated when the enter key is pressed\n * @memberof SOGo.Common\n * @ngInject\n * @example:\n\n \n */\n function sgEnter() {\n var ENTER_KEY = 13;\n return function(scope, element, attrs) {\n element.bind(\"keydown keypress\", function(event) {\n if (event.which === ENTER_KEY) {\n scope.$apply(function() {\n scope.$eval(attrs.sgEnter);\n });\n event.preventDefault();\n }\n });\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgEnter', sgEnter);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgEscape - A directive evaluated when the escape key is pressed\n * @memberof SOGo.Common\n * @ngInject\n * @example:\n\n \n */\n function sgEscape() {\n var ESCAPE_KEY = 27;\n return function(scope, elem, attrs) {\n elem.bind('keydown', function(event) {\n if (event.keyCode === ESCAPE_KEY) {\n scope.$apply(attrs.sgEscape);\n }\n });\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgEscape', sgEscape);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * sgFocusOn - A directive that sets the focus on its element when the specified string is broadcasted\n * @memberof SOGo.Common\n * @see {@link SOGo.Common.sgFocus}\n * @ngInject\n * @example:\n\n \n */\n function sgFocusOn() {\n return function(scope, elem, attr) {\n scope.$on('sgFocusOn', function(e, name) {\n if (name === attr.sgFocusOn) {\n elem[0].focus();\n elem[0].select();\n }\n });\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgFocusOn', sgFocusOn);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgFolderStylesheet - Add CSS stylesheet for folder (addressbook or calendar)\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} ngModel - the object literal describing the folder (an Addressbook or Calendar instance)\n * @example:\n\n
\n
\n */\n function sgFolderStylesheet() {\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n ngModel: '='\n },\n template: [\n ''\n ].join('')\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgFolderStylesheet', sgFolderStylesheet);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgSearch - Search within a list of items\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {function} sgSearch - the function to call when performing a search.\n * Two variables are available: searchField and searchText.\n * @example:\n\n
\n \n arrow_back\n \n \n \n \n \n Subject\n sender\n \n
\n */\n sgSearchPreTransclude.$inject = ['$parse'];\n function sgSearchPreTransclude($parse) {\n return {\n restrict: 'A',\n controller: 'sgSearchController',\n controllerAs: '$sgSearchController',\n priority: 1001,\n compile: compile\n };\n\n function compile(tElement, tAttr) {\n var mdInputEl = tElement.find('md-input-container'),\n inputEl = tElement.find('input'),\n selectEl = tElement.find('md-select'),\n buttonEl = tElement.find('md-button');\n\n inputEl.attr('ng-model', '$sgSearchController.searchText');\n inputEl.attr('ng-model-options', '$sgSearchController.searchTextOptions');\n inputEl.attr('ng-change', '$sgSearchController.onChange()');\n if (selectEl) {\n selectEl.attr('ng-model', '$sgSearchController.searchField');\n selectEl.attr('ng-change', '$sgSearchController.onChange()');\n }\n if (buttonEl && buttonEl.attr('sg-search-cancel')) {\n buttonEl.attr('ng-click', buttonEl.attr('sg-search-cancel'));\n buttonEl.removeAttr('sg-search-cancel');\n }\n else {\n buttonEl = null;\n }\n\n return function postLink(scope, iElement, iAttr, controller) {\n var compiledButtonEl = iElement.find('button');\n\n // Associate callback to controller\n controller.doSearch = $parse(iElement.attr('sg-search'));\n\n // Reset the input field when cancelling the search\n if (buttonEl && compiledButtonEl) {\n compiledButtonEl.on('click', controller.cancelSearch);\n }\n };\n }\n }\n\n function sgSearch() {\n return {\n restrict: 'A',\n priority: 1000,\n transclude: true,\n compile: compile\n };\n\n function compile(tElement, tAttr) {\n return function postLink(scope, iElement, iAttr, controller, transclude) {\n transclude(function(clone) {\n iElement.append(clone);\n });\n };\n }\n }\n\n /**\n * @ngInject\n */\n sgSearchController.$inject = ['$scope', '$element'];\n function sgSearchController($scope, $element) {\n var vm = this;\n\n // Controller variables\n vm.previous = { searchText: '', searchField: '' };\n vm.searchText = null;\n\n // Model options\n vm.searchTextOptions = {\n updateOn: 'default blur',\n debounce: {\n default: 300,\n blur: 0\n }\n };\n\n // Method to call on data changes\n vm.onChange = function() {\n if (vm.searchText !== null) {\n if (vm.searchText != vm.previous.searchText || vm.searchField != vm.previous.searchField) {\n if (vm.searchText.length > 2 || vm.searchText.length === 0) {\n // doSearch is the compiled expression of the sg-search attribute\n vm.doSearch($scope, { searchText: vm.searchText, searchField: vm.searchField });\n }\n vm.previous = { searchText: vm.searchText, searchField: vm.searchField };\n }\n }\n };\n\n // Reset input field when cancelling the search\n vm.cancelSearch = function() {\n vm.searchText = \"\";\n };\n }\n\n angular\n .module('SOGo.Common')\n .controller('sgSearchController', sgSearchController)\n .directive('sgSearch', sgSearchPreTransclude)\n .directive('sgSearch', sgSearch);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /*\n * sgSubscribe - Common subscription widget\n * @restrict attribute\n * @param {string} sgSubscribe - the folder type\n * @param {function} sgSubscribeOnSelect - the function to call when subscribing to a folder.\n * One variable is available: folderData.\n * @ngInject\n * @example:\n\n Subscribe ..\n */\n sgSubscribe.$inject = ['User'];\n function sgSubscribe(User) {\n return {\n restrict: 'A',\n scope: {\n folderType: '@sgSubscribe',\n onFolderSelect: '&sgSubscribeOnSelect'\n },\n replace: false,\n bindToController: true,\n controller: sgSubscribeDialogController,\n controllerAs: '$sgSubscribeDialogController',\n link: link\n };\n }\n\n function link(scope, element, attrs, controller) {\n var inputEl = element.find('input');\n element.on('click', controller.showDialog);\n }\n\n /**\n * @ngInject\n */\n sgSubscribeDialogController.$inject = ['$mdDialog'];\n function sgSubscribeDialogController($mdDialog) {\n var vm = this;\n vm.showDialog = function() {\n $mdDialog.show({\n templateUrl: '../Contacts/UIxContactsUserFolders',\n clickOutsideToClose: true,\n locals: {\n folderType: vm.folderType,\n onFolderSelect: vm.onFolderSelect\n },\n controller: sgSubscribeController,\n controllerAs: 'subscribe'\n });\n };\n }\n\n /**\n * @ngInject\n */\n sgSubscribeController.$inject = ['folderType', 'onFolderSelect', 'User'];\n function sgSubscribeController(folderType, onFolderSelect, User) {\n var vm = this;\n\n vm.selectedUser = null;\n vm.users = User.$users;\n\n vm.searchTextOptions = {\n updateOn: 'default blur',\n debounce: {\n default: 300,\n blur: 0\n }\n };\n\n vm.onChange = function() {\n User.$filter(vm.searchText).then(function() {\n if (vm.selectedUser) {\n // If selected user is no longer part of the matching users, unselect it\n if (_.isUndefined(_.find(User.$users, function(user) {\n return user.uid == vm.selectedUser.uid;\n }))) {\n vm.selectedUser = null;\n }\n }\n });\n };\n\n vm.selectUser = function(i) {\n if (vm.selectedUser == vm.users[i]) {\n vm.selectedUser = null;\n }\n else {\n // Fetch folders of specific type for selected user\n vm.users[i].$folders(folderType).then(function() {\n vm.selectedUser = vm.users[i];\n });\n }\n };\n\n // Callback upon subscription to a folder\n vm.selectFolder = function(folder) {\n onFolderSelect({folderData: folder});\n };\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgSubscribe', sgSubscribe);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgTarget - Replace target for in DOM.\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} sgTarget - the expression to process\n * @ngInject\n * @example:\n\n
\n */\n function sgTarget() {\n return {\n priority: 1,\n restrict: 'A',\n link: sgTargetLink\n };\n\n function sgTargetLink(scope, element, attrs) {\n console.log(\"sgTargetLink...\");\n\n var ensureTargetRunsOnce = scope.$watch(\n function(scope) {\n // Watch the sg-target expression for changes\n return scope.$eval(attrs.sgTarget);\n },\n function(value) {\n \n var onAnchorClick = function (event) {\n if (this.href)\n window.open(this.href);\n if (event) {\n if (event.preventDefault)\n event.preventDefault(); // W3C DOM\n else\n event.returnValue = false; // IE\n }\n };\n //var anchors = angular.element(value)[0].getElementsByTagName('a');\n //for (var i = 0; i < anchors.length; i++) {\n //var anchor = angular.element(anchors[i]);\n // if (!anchor.href && anchor.readAttribute(\"moz-do-not-send\")) {\n // anchor.writeAttribute(\"moz-do-not-send\", false);\n // anchor.removeClassName(\"moz-txt-link-abbreviated\");\n // anchor.href = \"mailto:\" + anchors[i].innerHTML;\n // }\n // if (anchor.href.substring(0,7) == \"mailto:\") {\n // anchor.observe(\"click\", onEmailTo);\n // if (typeof onEmailAddressClick == 'function')\n // anchor.observe(\"contextmenu\", onEmailAddressClick);\n // anchor.writeAttribute(\"moz-do-not-send\", false);\n // }\n // els\n //if (!anchor.id)\n // anchor.observe(\"click\", onAnchorClick);\n //}\n\n element.html(value);\n ensureTargetRunsOnce();\n }\n );\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgTarget', sgTarget);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /*\n * sgToggleGrid - Convert the tiles of a grid to toggle buttons\n * @memberof SOGo.Common\n * @restrict attribute\n * @param {object} sgToggleGrid - the model of the source objects\n * @param {string} [sgToggleGridAttr] - the attribute that specifies if an object is enabled (toggled)\n * @ngInject\n * @example:\n\n ..\n */\n sgToggleGrid.$inject = ['$parse'];\n function sgToggleGrid($parse) {\n return {\n restrict: 'A',\n link: link\n };\n\n function link(scope, iElement, attrs, ctrl) {\n var tiles = iElement.find('md-grid-tile'),\n tile,\n i,\n modelDays,\n modelAttr,\n ensureInitRunsOnce,\n toggleClass;\n\n ensureInitRunsOnce = scope.$watch(function() {\n // Parse attribute until it returns a valid object\n return $parse(attrs.sgToggleGrid)(scope);\n }, function(days) {\n if (angular.isDefined(days)) {\n var flattenedDays = days;\n modelDays = days;\n if (attrs.sgToggleGridAttr) {\n modelAttr = attrs.sgToggleGridAttr;\n flattenedDays = _.pluck(days, attrs.sgToggleGridAttr);\n }\n _.each(tiles, function(o) {\n var tile = angular.element(o);\n if (_.contains(flattenedDays, tile.attr('value'))) {\n tile.addClass('sg-active');\n }\n });\n ensureInitRunsOnce();\n }\n });\n\n toggleClass = function() {\n // Toggle class on click event and call toggle function\n var tile = angular.element(this),\n day = tile.attr('value');\n tile.toggleClass('sg-active');\n toggle(day);\n };\n\n for (i = 0; i < tiles.length; i++) {\n tile = angular.element(tiles[i]);\n tile.addClass('iconButton');\n tile.find('figure').addClass('md-icon');\n tile.on('click', toggleClass);\n }\n\n function toggle(day) {\n var i = _.findIndex(modelDays, function(o) {\n if (modelAttr)\n return o[modelAttr] == day;\n else\n return o == day;\n });\n if (i < 0) {\n if (modelAttr) {\n var o = {};\n o[modelAttr] = day;\n modelDays.push(o);\n }\n else\n modelDays.push(day);\n }\n else\n modelDays.splice(i, 1);\n }\n }\n }\n\n angular\n .module('SOGo.Common')\n .directive('sgToggleGrid', sgToggleGrid);\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.js b/UI/WebServerResources/js/Contacts.js index fbb6617b4..bcb3879c2 100644 --- a/UI/WebServerResources/js/Contacts.js +++ b/UI/WebServerResources/js/Contacts.js @@ -1,2 +1,2 @@ -!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("app",{url:"/addressbooks","abstract":!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:stateAddressbooks}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:stateAddressbook}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:stateNewCard}}).state("app.addressbook.card",{url:"/:cardId","abstract":!0,views:{card:{template:""}},resolve:{stateCard:stateCard}}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),$urlRouterProvider.otherwise("/addressbooks/personal")}function stateAddressbooks(AddressBook){return AddressBook.$findAll(window.contactFolders)}function stateAddressbook($stateParams,AddressBook){return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData}function stateNewCard($stateParams,stateAddressbook,Card){var tag="v"+$stateParams.contactType,card=new Card({pid:$stateParams.addressbookId,c_component:tag});return stateAddressbook.selectedCard=!0,card}function stateCard($stateParams,stateAddressbook){return stateAddressbook.selectedCard=$stateParams.cardId,stateAddressbook.$getCard($stateParams.cardId)}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.ContactsUI",["ngSanitize","ui.router","SOGo.Common","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAddressbooks.$inject=["AddressBook"],stateAddressbook.$inject=["$stateParams","AddressBook"],stateNewCard.$inject=["$stateParams","stateAddressbook","Card"],stateCard.$inject=["$stateParams","stateAddressbook"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AddressBookController($scope,$state,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,stateAddressbooks,stateAddressbook){function selectCard(card){$state.go("app.addressbook.card.view",{addressbookId:stateAddressbook.id,cardId:card.id})}function newComponent(ev){function ComponentDialogController(scope,$mdDialog,$state,addressbookId){scope.create=function(type){$mdDialog.hide(),$state.go("app.addressbook.new",{addressbookId:addressbookId,contactType:type})}}$mdDialog.show({parent:angular.element(document.body),targetEvent:ev,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ",'
'," "," "+l("Contact")," "," "," "+l("List")," ","
","
","
"].join(""),locals:{addressbookId:vm.selectedFolder.id},controller:ComponentDialogController}),ComponentDialogController.$inject=["scope","$mdDialog","$state","addressbookId"]}function notSelectedComponent(currentCard,type){return currentCard&¤tCard.c_component==type&&!currentCard.selected}function unselectCards(){_.each(vm.selectedFolder.cards,function(card){card.selected=!1})}function confirmDeleteSelectedCards(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected contacts?")).then(function(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$deleteCards(selectedCards),delete vm.selectedFolder.selectedCard},function(data,status){})}function saveSelectedCards(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected}),selectedUIDs=_.pluck(selectedCards,"id");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/export?uid="+selectedUIDs.join("&uid=")}function copySelectedCards(folder){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$copyCards(selectedCards,folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function selectAll(){_.each(vm.selectedFolder.cards,function(card){card.selected=!0})}function sort(field){vm.selectedFolder.$filter("",{sort:field})}function sortedBy(field){return AddressBook.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter("")}var vm=this;AddressBook.selectedFolder=stateAddressbook,vm.selectedFolder=stateAddressbook,vm.selectCard=selectCard,vm.newComponent=newComponent,vm.notSelectedComponent=notSelectedComponent,vm.unselectCards=unselectCards,vm.confirmDeleteSelectedCards=confirmDeleteSelectedCards,vm.saveSelectedCards=saveSelectedCards,vm.copySelectedCards=copySelectedCards,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1}}AddressBookController.$inject=["$scope","$state","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","stateAddressbooks","stateAddressbook"],angular.module("SOGo.ContactsUI").controller("AddressBookController",AddressBookController)}(),function(){"use strict";function AddressBooksController($state,$scope,$rootScope,$stateParams,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,User,stateAddressbooks){function select(folder){vm.editMode=!1,$state.go("app.addressbook",{addressbookId:folder.id})}function newAddressbook(){Dialog.prompt(l("New addressbook"),l("Name of new addressbook")).then(function(name){var addressbook=new AddressBook({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});AddressBook.$add(addressbook)})}function edit(folder){folder.isRemote||(vm.editMode=folder.id,vm.originalAddressbook=angular.extend({},folder.$omit()),focus("addressBookName_"+folder.id))}function revertEditing(folder){folder.name=vm.originalAddressbook.name,vm.editMode=!1}function save(folder){var name=folder.name;name&&name.length>0&&name!=vm.originalAddressbook.name&&folder.$rename(name).then(function(data){vm.editMode=!1},function(data,status){Dialog.alert(l("Warning"),data)})}function confirmDelete(){vm.service.selectedFolder.isSubscription?vm.service.selectedFolder.$delete().then(function(){vm.service.selectedFolder=null,$state.go("app.addressbook",{addressbookId:"personal"})},function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the addressbook %{0}?",vm.service.selectedFolder.name)).then(function(){return vm.service.selectedFolder.$delete()}).then(function(){return vm.service.selectedFolder=null,!0})["catch"](function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))})}function importCards(){}function exportCards(){window.location.href=ApplicationBaseURL+"/"+vm.service.selectedFolder.id+"/exportFolder"}function showLinks(addressbook){function LinksDialogController($mdDialog,addressbook){function close(){$mdDialog.hide()}this.addressbook=addressbook,this.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:addressbook.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{addressbook:addressbook}}),LinksDialogController.$inject=["$mdDialog","addressbook"]}function share(addressbook){addressbook.$acl.$users().then(function(){$mdDialog.show({templateUrl:addressbook.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:addressbook.$acl.users,User:User,folder:addressbook}})})}function subscribeToFolder(addressbookData){console.debug("subscribeToFolder "+addressbookData.owner+addressbookData.name),AddressBook.$subscribe(addressbookData.owner,addressbookData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=AddressBook,vm.select=select,vm.newAddressbook=newAddressbook,vm.edit=edit,vm.revertEditing=revertEditing,vm.save=save,vm.confirmDelete=confirmDelete,vm.importCards=importCards,vm.exportCards=exportCards,vm.showLinks=showLinks,vm.share=share,vm.subscribeToFolder=subscribeToFolder}AddressBooksController.$inject=["$state","$scope","$rootScope","$stateParams","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","User","stateAddressbooks"],angular.module("SOGo.ContactsUI").controller("AddressBooksController",AddressBooksController)}(),function(){"use strict";function CardController($scope,$timeout,$mdDialog,AddressBook,Card,Dialog,focus,$state,$stateParams,stateCard){function addOrgUnit(){var i=vm.card.$addOrgUnit("");focus("orgUnit_"+i)}function addBirthday(){vm.card.birthday=new Date}function addEmail(){var i=vm.card.$addEmail("");focus("email_"+i)}function addPhone(){var i=vm.card.$addPhone("");focus("phone_"+i)}function addUrl(){var i=vm.card.$addUrl("","");focus("url_"+i)}function addAddress(){var i=vm.card.$addAddress("","","","","","","","");focus("address_"+i)}function addMember(){var i=vm.card.$addMember("");focus("ref_"+i)}function userFilter($query,excludedCards){return AddressBook.selectedFolder.$filter($query,{dry:!0,excludeLists:!0},excludedCards),AddressBook.selectedFolder.$cards}function save(form){form.$valid&&vm.card.$save().then(function(data){var i=_.indexOf(_.pluck(AddressBook.selectedFolder.cards,"id"),vm.card.id);0>i?AddressBook.selectedFolder.$reload():AddressBook.selectedFolder.cards[i]=angular.copy(vm.card),$state.go("app.addressbook.card.view",{cardId:vm.card.id})})["catch"](function(err){console.log(err)})}function reset(){vm.card.$reset()}function cancel(){vm.card.$reset(),vm.card.isNew?(vm.card=null,delete AddressBook.selectedFolder.selectedCard,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})):$state.go("app.addressbook.card.view",{cardId:vm.card.id})}function confirmDelete(card){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the card of %{0}?",card.$fullname()),{ok:l("Yes"),cancel:l("No")}).then(function(){card.$delete().then(function(){AddressBook.selectedFolder.cards=_.reject(AddressBook.selectedFolder.cards,function(o){return o.id==card.id}),vm.card=null,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})},function(data,status){Dialog.alert(l("Warning"),l('An error occured while deleting the card "%{0}".',card.$fullname()))})})}function viewRawSource($event){Card.$$resource.post(vm.currentFolder.id+"/"+vm.card.id,"raw").then(function(data){function CardRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:CardRawSourceDialogController}),CardRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.card=stateCard,vm.currentFolder=AddressBook.selectedFolder,vm.allEmailTypes=Card.$EMAIL_TYPES,vm.allTelTypes=Card.$TEL_TYPES,vm.allUrlTypes=Card.$URL_TYPES,vm.allAddressTypes=Card.$ADDRESS_TYPES,vm.categories={},vm.userFilterResults=[],vm.addOrgUnit=addOrgUnit,vm.addBirthday=addBirthday,vm.addEmail=addEmail,vm.addPhone=addPhone,vm.addUrl=addUrl,vm.addAddress=addAddress,vm.addMember=addMember,vm.userFilter=userFilter,vm.save=save,vm.reset=reset,vm.cancel=cancel,vm.confirmDelete=confirmDelete,vm.viewRawSource=viewRawSource}CardController.$inject=["$scope","$timeout","$mdDialog","AddressBook","Card","Dialog","sgFocus","$state","$stateParams","stateCard"],angular.module("SOGo.ContactsUI").controller("CardController",CardController)}(),function(){"use strict";function sgAddress(){return{restrict:"A",scope:{data:"=sgAddress"},controller:["$scope",function($scope){$scope.addressLines=function(data){var lines=[],locality_region=[];return data.street&&lines.push(data.street),data.street2&&lines.push(data.street2),data.locality&&locality_region.push(data.locality),data.region&&locality_region.push(data.region),locality_region.length>0&&lines.push(locality_region.join(", ")),data.country&&lines.push(data.country),data.postalcode&&lines.push(data.postalcode),lines.join("
")}}],template:'
'}}angular.module("SOGo.Common").directive("sgAddress",sgAddress)}(); +!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("app",{url:"/addressbooks","abstract":!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:stateAddressbooks}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:stateAddressbook}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:stateNewCard}}).state("app.addressbook.card",{url:"/:cardId","abstract":!0,views:{card:{template:""}},resolve:{stateCard:stateCard}}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),$urlRouterProvider.otherwise("/addressbooks/personal")}function stateAddressbooks(AddressBook){return AddressBook.$findAll(window.contactFolders)}function stateAddressbook($stateParams,AddressBook){return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData}function stateNewCard($stateParams,stateAddressbook,Card){var tag="v"+$stateParams.contactType,card=new Card({pid:$stateParams.addressbookId,c_component:tag});return stateAddressbook.selectedCard=!0,card}function stateCard($stateParams,stateAddressbook){return stateAddressbook.selectedCard=$stateParams.cardId,stateAddressbook.$getCard($stateParams.cardId)}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.ContactsUI",["ngSanitize","ui.router","angularFileUpload","SOGo.Common","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAddressbooks.$inject=["AddressBook"],stateAddressbook.$inject=["$stateParams","AddressBook"],stateNewCard.$inject=["$stateParams","stateAddressbook","Card"],stateCard.$inject=["$stateParams","stateAddressbook"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function AddressBookController($scope,$state,$timeout,$mdDialog,focus,Card,AddressBook,Dialog,Settings,stateAddressbooks,stateAddressbook){function selectCard(card){$state.go("app.addressbook.card.view",{addressbookId:stateAddressbook.id,cardId:card.id})}function newComponent(ev){function ComponentDialogController(scope,$mdDialog,$state,addressbookId){scope.create=function(type){$mdDialog.hide(),$state.go("app.addressbook.new",{addressbookId:addressbookId,contactType:type})}}$mdDialog.show({parent:angular.element(document.body),targetEvent:ev,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ",'
'," "," "+l("Contact")," "," "," "+l("List")," ","
","
","
"].join(""),locals:{addressbookId:vm.selectedFolder.id},controller:ComponentDialogController}),ComponentDialogController.$inject=["scope","$mdDialog","$state","addressbookId"]}function notSelectedComponent(currentCard,type){return currentCard&¤tCard.c_component==type&&!currentCard.selected}function unselectCards(){_.each(vm.selectedFolder.cards,function(card){card.selected=!1})}function confirmDeleteSelectedCards(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected contacts?")).then(function(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$deleteCards(selectedCards),delete vm.selectedFolder.selectedCard},function(data,status){})}function saveSelectedCards(){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected}),selectedUIDs=_.pluck(selectedCards,"id");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/export?uid="+selectedUIDs.join("&uid=")}function copySelectedCards(folder){var selectedCards=_.filter(vm.selectedFolder.cards,function(card){return card.selected});vm.selectedFolder.$copyCards(selectedCards,folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function selectAll(){_.each(vm.selectedFolder.cards,function(card){card.selected=!0})}function sort(field){vm.selectedFolder.$filter("",{sort:field})}function sortedBy(field){return AddressBook.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter("")}var vm=this;AddressBook.selectedFolder=stateAddressbook,vm.selectedFolder=stateAddressbook,vm.selectCard=selectCard,vm.newComponent=newComponent,vm.notSelectedComponent=notSelectedComponent,vm.unselectCards=unselectCards,vm.confirmDeleteSelectedCards=confirmDeleteSelectedCards,vm.saveSelectedCards=saveSelectedCards,vm.copySelectedCards=copySelectedCards,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.mode={search:!1}}AddressBookController.$inject=["$scope","$state","$timeout","$mdDialog","sgFocus","Card","AddressBook","Dialog","sgSettings","stateAddressbooks","stateAddressbook"],angular.module("SOGo.ContactsUI").controller("AddressBookController",AddressBookController)}(),function(){"use strict";function AddressBooksController($state,$scope,$rootScope,$stateParams,$timeout,$mdDialog,$mdToast,FileUploader,focus,Card,AddressBook,Dialog,Settings,User,stateAddressbooks){function select(folder){vm.editMode=!1,AddressBook.$query.value="",$state.go("app.addressbook",{addressbookId:folder.id})}function newAddressbook(){Dialog.prompt(l("New addressbook"),l("Name of new addressbook")).then(function(name){var addressbook=new AddressBook({name:name,isEditable:!0,isRemote:!1,owner:UserLogin});AddressBook.$add(addressbook)})}function edit(folder){folder.isRemote||(vm.editMode=folder.id,vm.originalAddressbook=angular.extend({},folder.$omit()),focus("addressBookName_"+folder.id))}function revertEditing(folder){folder.name=vm.originalAddressbook.name,vm.editMode=!1}function save(folder){var name=folder.name;name&&name.length>0&&name!=vm.originalAddressbook.name&&folder.$rename(name).then(function(data){vm.editMode=!1},function(data,status){Dialog.alert(l("Warning"),data)})}function confirmDelete(){vm.service.selectedFolder.isSubscription?vm.service.selectedFolder.$delete().then(function(){vm.service.selectedFolder=null,$state.go("app.addressbook",{addressbookId:"personal"})},function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))}):Dialog.confirm(l("Warning"),l("Are you sure you want to delete the addressbook %{0}?",vm.service.selectedFolder.name)).then(function(){return vm.service.selectedFolder.$delete()}).then(function(){return vm.service.selectedFolder=null,!0})["catch"](function(data,status){Dialog.alert(l('An error occured while deleting the addressbook "%{0}".',vm.service.selectedFolder.name),l(data.error))})}function importCards($event,folder){function CardsImportDialogController(scope,$mdDialog,folder){scope.uploader=new FileUploader({url:ApplicationBaseURL+"/"+folder.id+"/import",onProgressItem:function(item,progress){console.debug(item),console.debug(progress)},onSuccessItem:function(item,response,status,headers){console.debug(item),console.debug("success = "+JSON.stringify(response,void 0,2)),$mdDialog.hide(),$mdToast.show($mdToast.simple().content(l("A total of %{0} cards were imported in the addressbook.",response.imported)).position("top right").hideDelay(3e3)),AddressBook.selectedFolder.$reload()},onCancelItem:function(item,response,status,headers){console.debug(item),console.debug("cancel = "+JSON.stringify(response,void 0,2))},onErrorItem:function(item,response,status,headers){console.debug(item),console.debug("error = "+JSON.stringify(response,void 0,2))}}),scope.close=function(){$mdDialog.hide()},scope.upload=function(){scope.uploader.uploadAll()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:['',' ','
',' import_export','
','
'+l("Import Cards")+"
","
",' ',' close'," ","
","
"," ",'
','
'," "+l("Select a vCard or LDIF file.")+"",' ",' ',"
",' '+l("No file chosen")+"",' {{ uploader.queue[0].file.name }}',"
","
",'
',' '+l("Upload")+"","
","
"].join(""),controller:CardsImportDialogController,locals:{folder:folder}}),CardsImportDialogController.$inject=["scope","$mdDialog","folder"]}function exportCards(){window.location.href=ApplicationBaseURL+"/"+vm.service.selectedFolder.id+"/exportFolder"}function showLinks(addressbook){function LinksDialogController($mdDialog,addressbook){function close(){$mdDialog.hide()}this.addressbook=addressbook,this.close=close}$mdDialog.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,templateUrl:addressbook.id+"/links",controller:LinksDialogController,controllerAs:"links",locals:{addressbook:addressbook}}),LinksDialogController.$inject=["$mdDialog","addressbook"]}function share(addressbook){addressbook.$acl.$users().then(function(){$mdDialog.show({templateUrl:addressbook.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:addressbook.$acl.users,User:User,folder:addressbook}})})}function subscribeToFolder(addressbookData){console.debug("subscribeToFolder "+addressbookData.owner+addressbookData.name),AddressBook.$subscribe(addressbookData.owner,addressbookData.name)["catch"](function(data){Dialog.alert(l("Warning"),l("An error occured please try again."))})}var vm=this;vm.activeUser=Settings.activeUser,vm.service=AddressBook,vm.select=select,vm.newAddressbook=newAddressbook,vm.edit=edit,vm.revertEditing=revertEditing,vm.save=save,vm.confirmDelete=confirmDelete,vm.importCards=importCards,vm.exportCards=exportCards,vm.showLinks=showLinks,vm.share=share,vm.subscribeToFolder=subscribeToFolder}AddressBooksController.$inject=["$state","$scope","$rootScope","$stateParams","$timeout","$mdDialog","$mdToast","FileUploader","sgFocus","Card","AddressBook","Dialog","sgSettings","User","stateAddressbooks"],angular.module("SOGo.ContactsUI").controller("AddressBooksController",AddressBooksController)}(),function(){"use strict";function CardController($scope,$timeout,$mdDialog,AddressBook,Card,Dialog,focus,$state,$stateParams,stateCard){function addOrgUnit(){var i=vm.card.$addOrgUnit("");focus("orgUnit_"+i)}function addBirthday(){vm.card.birthday=new Date}function addEmail(){var i=vm.card.$addEmail("");focus("email_"+i)}function addPhone(){var i=vm.card.$addPhone("");focus("phone_"+i)}function addUrl(){var i=vm.card.$addUrl("","");focus("url_"+i)}function addAddress(){var i=vm.card.$addAddress("","","","","","","","");focus("address_"+i)}function addMember(){var i=vm.card.$addMember("");focus("ref_"+i)}function userFilter($query,excludedCards){return AddressBook.selectedFolder.$filter($query,{dry:!0,excludeLists:!0},excludedCards),AddressBook.selectedFolder.$cards}function save(form){form.$valid&&vm.card.$save().then(function(data){var i=_.indexOf(_.pluck(AddressBook.selectedFolder.cards,"id"),vm.card.id);0>i?AddressBook.selectedFolder.$reload():AddressBook.selectedFolder.cards[i]=angular.copy(vm.card),$state.go("app.addressbook.card.view",{cardId:vm.card.id})})["catch"](function(err){console.log(err)})}function reset(){vm.card.$reset()}function cancel(){vm.card.$reset(),vm.card.isNew?(vm.card=null,delete AddressBook.selectedFolder.selectedCard,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})):$state.go("app.addressbook.card.view",{cardId:vm.card.id})}function confirmDelete(card){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the card of %{0}?",card.$fullname()),{ok:l("Yes"),cancel:l("No")}).then(function(){card.$delete().then(function(){AddressBook.selectedFolder.cards=_.reject(AddressBook.selectedFolder.cards,function(o){return o.id==card.id}),vm.card=null,$state.go("app.addressbook",{addressbookId:AddressBook.selectedFolder.id})},function(data,status){Dialog.alert(l("Warning"),l('An error occured while deleting the card "%{0}".',card.$fullname()))})})}function exportCard(){window.location.href=ApplicationBaseURL+"/"+vm.currentFolder.id+"/export?uid="+vm.card.id}function viewRawSource($event){Card.$$resource.post(vm.currentFolder.id+"/"+vm.card.id,"raw").then(function(data){function CardRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:CardRawSourceDialogController}),CardRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.card=stateCard,vm.currentFolder=AddressBook.selectedFolder,vm.allEmailTypes=Card.$EMAIL_TYPES,vm.allTelTypes=Card.$TEL_TYPES,vm.allUrlTypes=Card.$URL_TYPES,vm.allAddressTypes=Card.$ADDRESS_TYPES,vm.categories={},vm.userFilterResults=[],vm.addOrgUnit=addOrgUnit,vm.addBirthday=addBirthday,vm.addEmail=addEmail,vm.addPhone=addPhone,vm.addUrl=addUrl,vm.addAddress=addAddress,vm.addMember=addMember,vm.userFilter=userFilter,vm.save=save,vm.reset=reset,vm.cancel=cancel,vm.confirmDelete=confirmDelete,vm.exportCard=exportCard,vm.viewRawSource=viewRawSource}CardController.$inject=["$scope","$timeout","$mdDialog","AddressBook","Card","Dialog","sgFocus","$state","$stateParams","stateCard"],angular.module("SOGo.ContactsUI").controller("CardController",CardController)}(),function(){"use strict";function sgAddress(){return{restrict:"A",scope:{data:"=sgAddress"},controller:["$scope",function($scope){$scope.addressLines=function(data){var lines=[],locality_region=[];return data.street&&lines.push(data.street),data.street2&&lines.push(data.street2),data.locality&&locality_region.push(data.locality),data.region&&locality_region.push(data.region),locality_region.length>0&&lines.push(locality_region.join(", ")),data.country&&lines.push(data.country),data.postalcode&&lines.push(data.postalcode),lines.join("
")}}],template:'
'}}angular.module("SOGo.Common").directive("sgAddress",sgAddress)}(); //# sourceMappingURL=Contacts.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Contacts.js.map b/UI/WebServerResources/js/Contacts.js.map index a21f05b80..4c7382628 100644 --- a/UI/WebServerResources/js/Contacts.js.map +++ b/UI/WebServerResources/js/Contacts.js.map @@ -1 +1 @@ -{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","card","stateCard","stateNewCard","template","card@app.addressbook","otherwise","AddressBook","$findAll","window","contactFolders","$stateParams","$find","addressbookId","$futureAddressBookData","Card","tag","contactType","pid","c_component","selectedCard","cardId","$getCard","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","module","config","run","$inject","AddressBookController","$scope","$state","$timeout","$mdDialog","focus","Dialog","Settings","selectCard","go","id","newComponent","ev","ComponentDialogController","scope","create","type","hide","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","l","join","locals","vm","selectedFolder","notSelectedComponent","currentCard","selected","unselectCards","_","each","cards","confirmDeleteSelectedCards","confirm","then","selectedCards","filter","$deleteCards","data","status","saveSelectedCards","selectedUIDs","pluck","location","href","ApplicationBaseURL","copySelectedCards","folder","$copyCards","alert","selectAll","sort","field","$filter","sortedBy","$query","cancelSearch","mode","search","this","AddressBooksController","User","select","editMode","newAddressbook","prompt","name","isEditable","isRemote","owner","UserLogin","$add","edit","originalAddressbook","extend","$omit","revertEditing","save","length","$rename","confirmDelete","service","isSubscription","$delete","importCards","exportCards","showLinks","LinksDialogController","close","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","debug","$subscribe","activeUser","CardController","addOrgUnit","i","$addOrgUnit","addBirthday","birthday","Date","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","addAddress","$addAddress","addMember","$addMember","userFilter","excludedCards","dry","excludeLists","$cards","form","$valid","$save","indexOf","$reload","copy","err","log","reset","$reset","cancel","isNew","$fullname","ok","reject","o","viewRawSource","$event","$$resource","post","currentFolder","CardRawSourceDialogController","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","sgAddress","restrict","addressLines","lines","locality_region","street","push","street2","locality","region","country","postalcode","directive"],"mappings":"CAGA,WACE,YAUA,SAASA,WAAUC,eAAgBC,oBACjCD,eACGE,MAAM,OACLC,IAAK,gBACLC,YAAU,EACVC,OACEC,cACEC,YAAa,wBACbC,WAAY,yBACZC,aAAc,QAGlBC,SACEC,kBAAmBA,qBAGtBT,MAAM,mBACLC,IAAK,kBACLE,OACEO,aACEL,YAAa,cACbC,WAAY,wBACZC,aAAc,gBAGlBC,SACEG,iBAAkBA,oBAGrBX,MAAM,uBACLC,IAAK,mCACLE,OACES,MACEP,YAAa,2BACbC,WAAY,iBACZC,aAAc,WAGlBC,SACEK,UAAWC,gBAGdd,MAAM,wBACLC,IAAK,WACLC,YAAU,EACVC,OACES,MACEG,SAAU,eAGdP,SACEK,UAAWA,aAGdb,MAAM,6BACLC,IAAK,QACLE,OACEa,wBACEX,YAAa,yBACbC,WAAY,iBACZC,aAAc,aAInBP,MAAM,+BACLC,IAAK,QACLE,OACEa,wBACEX,YAAa,2BACbC,WAAY,iBACZC,aAAc,aAMtBR,mBAAmBkB,UAAU,0BAO/B,QAASR,mBAAkBS,aACzB,MAAOA,aAAYC,SAASC,OAAOC,gBAOrC,QAASV,kBAAiBW,aAAcJ,aACtC,MAAOA,aAAYK,MAAMD,aAAaE,eAAeC,uBAOvD,QAASX,cAAaQ,aAAcX,iBAAkBe,MACpD,GAAIC,KAAM,IAAML,aAAaM,YACzBhB,KAAO,GAAIc,OAAOG,IAAKP,aAAaE,cAAeM,YAAaH,KAEpE,OADAhB,kBAAiBoB,cAAe,EACzBnB,KAOT,QAASC,WAAUS,aAAcX,kBAE/B,MADAA,kBAAiBoB,aAAeT,aAAaU,OACtCrB,iBAAiBsB,SAASX,aAAaU,QAOhD,QAASE,UAASC,YAChBA,WAAWC,IAAI,oBAAqB,SAASC,MAAOC,QAASC,SAAUC,WACrEC,QAAQC,MAAML,MAAOC,QAASC,SAAUC,aAjI5CG,QAAQC,OAAO,mBAAoB,aAAc,YAAa,cAAe,uBAC1EC,OAAOhD,WACPiD,IAAIZ,UAKPrC,UAAUkD,SAAW,iBAAkB,sBAmFvCtC,kBAAkBsC,SAAW,eAQ7BpC,iBAAiBoC,SAAW,eAAgB,eAQ5CjC,aAAaiC,SAAW,eAAgB,mBAAoB,QAW5DlC,UAAUkC,SAAW,eAAgB,oBASrCb,SAASa,SAAW,iBClItB,WACE,YAMA,SAASC,uBAAsBC,OAAQC,OAAQC,SAAUC,UAAWC,MAAO3B,KAAMR,YAAaoC,OAAQC,SAAU9C,kBAAmBE,kBAmBjI,QAAS6C,YAAW5C,MAClBsC,OAAOO,GAAG,6BAA8BjC,cAAeb,iBAAiB+C,GAAI1B,OAAQpB,KAAK8C,KAG3F,QAASC,cAAaC,IA8BpB,QAASC,2BAA0BC,MAAOV,UAAWF,OAAQ1B,eAC3DsC,MAAMC,OAAS,SAASC,MACtBZ,UAAUa,OACVf,OAAOO,GAAG,uBAAyBjC,cAAeA,cAAeI,YAAaoC,QAhClFZ,UAAUc,MACRC,OAAQxB,QAAQyB,QAAQC,SAASC,MACjCC,YAAaX,GACbY,qBAAqB,EACrBC,eAAe,EACf1D,UACE,0BAA4B2D,EAAE,oBAAsB,KACpD,wBACA,4BACA,gDACA,WAAaA,EAAE,WACf,qBACA,gDACA,WAAaA,EAAE,QACf,qBACA,aACA,yBACA,gBACAC,KAAK,IACPC,QACEpD,cAAeqD,GAAGC,eAAepB,IAEnCpD,WAAYuD,4BAMdA,0BAA0Bd,SAAW,QAAS,YAAa,SAAU,iBASvE,QAASgC,sBAAqBC,YAAahB,MACzC,MAAQgB,cAAeA,YAAYlD,aAAekC,OAASgB,YAAYC,SAGzE,QAASC,iBACPC,EAAEC,KAAKP,GAAGC,eAAeO,MAAO,SAASzE,MAAQA,KAAKqE,UAAW,IAGnE,QAASK,8BACPhC,OAAOiC,QAAQb,EAAE,WACFA,EAAE,2DACdc,KAAK,WAEJ,GAAIC,eAAgBN,EAAEO,OAAOb,GAAGC,eAAeO,MAAO,SAASzE,MAAQ,MAAOA,MAAKqE,UACnFJ,IAAGC,eAAea,aAAaF,qBACxBZ,IAAGC,eAAe/C,cACvB,SAAS6D,KAAMC,WAKvB,QAASC,qBACP,GAAIL,eAAgBN,EAAEO,OAAOb,GAAGC,eAAeO,MAAO,SAASzE,MAAQ,MAAOA,MAAKqE,WAC/Ec,aAAeZ,EAAEa,MAAMP,cAAe,KAC1CrE,QAAO6E,SAASC,KAAOC,mBAAqB,IAAMtB,GAAGC,eAAepB,GAAK,eAAiBqC,aAAapB,KAAK,SAG9G,QAASyB,mBAAkBC,QACzB,GAAIZ,eAAgBN,EAAEO,OAAOb,GAAGC,eAAeO,MAAO,SAASzE,MAAQ,MAAOA,MAAKqE,UACnFJ,IAAGC,eAAewB,WAAWb,cAAeY,QAAQb,KAAK,aAEtD,SAAS9C,OACVY,OAAOiD,MAAM7B,EAAE,SAAUhC,SAI7B,QAAS8D,aACPrB,EAAEC,KAAKP,GAAGC,eAAeO,MAAO,SAASzE,MACvCA,KAAKqE,UAAW,IAIpB,QAASwB,MAAKC,OACZ7B,GAAGC,eAAe6B,QAAQ,IAAMF,KAAMC,QAGxC,QAASE,UAASF,OAChB,MAAOxF,aAAY2F,OAAOJ,MAAQC,MAGpC,QAASI,gBACPjC,GAAGkC,KAAKC,QAAS,EACjBnC,GAAGC,eAAe6B,QAAQ,IAhH5B,GAAI9B,IAAKoC,IAET/F,aAAY4D,eAAiBnE,iBAE7BkE,GAAGC,eAAiBnE,iBACpBkE,GAAGrB,WAAaA,WAChBqB,GAAGlB,aAAeA,aAClBkB,GAAGE,qBAAuBA,qBAC1BF,GAAGK,cAAgBA,cACnBL,GAAGS,2BAA6BA,2BAChCT,GAAGiB,kBAAoBA,kBACvBjB,GAAGuB,kBAAoBA,kBACvBvB,GAAG2B,UAAYA,UACf3B,GAAG4B,KAAOA,KACV5B,GAAG+B,SAAWA,SACd/B,GAAGiC,aAAeA,aAClBjC,GAAGkC,MAASC,QAAQ,GAlBtBhE,sBAAsBD,SAAW,SAAU,SAAU,WAAY,YAAa,UAAW,OAAQ,cAAe,SAAU,aAAc,oBAAqB,oBAsH7JJ,QACGC,OAAO,mBACPtC,WAAW,wBAAyB0C,0BC9HzC,WACE,YAMA,SAASkE,wBAAuBhE,OAAQD,OAAQd,WAAYb,aAAc6B,SAAUC,UAAWC,MAAO3B,KAAMR,YAAaoC,OAAQC,SAAU4D,KAAM1G,mBAiB/I,QAAS2G,QAAOf,QACdxB,GAAGwC,UAAW,EACdnE,OAAOO,GAAG,mBAAoBjC,cAAe6E,OAAO3C,KAGtD,QAAS4D,kBACPhE,OAAOiE,OAAO7C,EAAE,mBACFA,EAAE,4BACbc,KAAK,SAASgC,MACb,GAAI9G,aAAc,GAAIQ,cAElBsG,KAAMA,KACNC,YAAY,EACZC,UAAU,EACVC,MAAOC,WAGX1G,aAAY2G,KAAKnH,eAIvB,QAASoH,MAAKzB,QACPA,OAAOqB,WACV7C,GAAGwC,SAAWhB,OAAO3C,GACrBmB,GAAGkD,oBAAsBpF,QAAQqF,UAAW3B,OAAO4B,SACnD5E,MAAM,mBAAqBgD,OAAO3C,KAItC,QAASwE,eAAc7B,QACrBA,OAAOmB,KAAO3C,GAAGkD,oBAAoBP,KACrC3C,GAAGwC,UAAW,EAGhB,QAASc,MAAK9B,QACZ,GAAImB,MAAOnB,OAAOmB,IACdA,OAAQA,KAAKY,OAAS,GAAKZ,MAAQ3C,GAAGkD,oBAAoBP,MAC5DnB,OAAOgC,QAAQb,MACZhC,KAAK,SAASI,MACbf,GAAGwC,UAAW,GACb,SAASzB,KAAMC,QAChBvC,OAAOiD,MAAM7B,EAAE,WAAYkB,QAKnC,QAAS0C,iBACHzD,GAAG0D,QAAQzD,eAAe0D,eAE5B3D,GAAG0D,QAAQzD,eAAe2D,UACvBjD,KAAK,WACJX,GAAG0D,QAAQzD,eAAiB,KAC5B5B,OAAOO,GAAG,mBAAqBjC,cAAe,cAC7C,SAASoE,KAAMC,QAChBvC,OAAOiD,MAAM7B,EAAE,0DACAG,GAAG0D,QAAQzD,eAAe0C,MAC5B9C,EAAEkB,KAAKlD,UAIxBY,OAAOiC,QAAQb,EAAE,WAAYA,EAAE,iEACAG,GAAG0D,QAAQzD,eAAe0C,OACtDhC,KAAK,WACJ,MAAOX,IAAG0D,QAAQzD,eAAe2D,YAElCjD,KAAK,WAEJ,MADAX,IAAG0D,QAAQzD,eAAiB,MACrB,IAPXxB,SASS,SAASsC,KAAMC,QACpBvC,OAAOiD,MAAM7B,EAAE,0DACAG,GAAG0D,QAAQzD,eAAe0C,MAC5B9C,EAAEkB,KAAKlD,UAK5B,QAASgG,gBAIT,QAASC,eACPvH,OAAO6E,SAASC,KAAOC,mBAAqB,IAAMtB,GAAG0D,QAAQzD,eAAepB,GAAK,gBAGnF,QAASkF,WAAUlI,aAiBjB,QAASmI,uBAAsBzF,UAAW1C,aAKxC,QAASoI,SACP1F,UAAUa,OAJZgD,KAAKvG,YAAcA,YACnBuG,KAAK6B,MAAQA,MAnBf1F,UAAUc,MACRC,OAAQxB,QAAQyB,QAAQC,SAASC,MACjCE,qBAAqB,EACrBC,eAAe,EACfpE,YAAaK,YAAYgD,GAAK,SAC9BpD,WAAYuI,sBACZtI,aAAc,QACdqE,QACElE,YAAaA,eAOjBmI,sBAAsB9F,SAAW,YAAa,eAYhD,QAASgG,OAAMrI,aAEbA,YAAYsI,KAAKC,SAASzD,KAAK,WAE7BpC,UAAUc,MACR7D,YAAaK,YAAYgD,GAAK,gBAC9BpD,WAAY,gBACZC,aAAc,MACdiE,qBAAqB,EACrBC,eAAe,EACfG,QACEsE,aAAcxI,YAAYsI,KAAKG,MAC/BhC,KAAMA,KACNd,OAAQ3F,iBAShB,QAAS0I,mBAAkBC,iBACzB5G,QAAQ6G,MAAM,qBAAuBD,gBAAgB1B,MAAQ0B,gBAAgB7B,MAC7EtG,YAAYqI,WAAWF,gBAAgB1B,MAAO0B,gBAAgB7B,MAA9DtG,SAA0E,SAAS0E,MACjFtC,OAAOiD,MAAM7B,EAAE,WAAYA,EAAE,yCA1JjC,GAAIG,IAAKoC,IAETpC,IAAG2E,WAAajG,SAASiG,WACzB3E,GAAG0D,QAAUrH,YACb2D,GAAGuC,OAASA,OACZvC,GAAGyC,eAAiBA,eACpBzC,GAAGiD,KAAOA,KACVjD,GAAGqD,cAAgBA,cACnBrD,GAAGsD,KAAOA,KACVtD,GAAGyD,cAAgBA,cACnBzD,GAAG6D,YAAcA,YACjB7D,GAAG8D,YAAcA,YACjB9D,GAAG+D,UAAYA,UACf/D,GAAGkE,MAAQA,MACXlE,GAAGuE,kBAAoBA,kBAhBzBlC,uBAAuBnE,SAAW,SAAU,SAAU,aAAc,eAAgB,WAAY,YAAa,UAAW,OAAQ,cAAe,SAAU,aAAc,OAAQ,qBAiK/KJ,QACGC,OAAO,mBACPtC,WAAW,yBAA0B4G,2BCzK1C,WACE,YAOA,SAASuC,gBAAexG,OAAQE,SAAUC,UAAWlC,YAAaQ,KAAM4B,OAAQD,MAAOH,OAAQ5B,aAAcT,WA0B3G,QAAS6I,cACP,GAAIC,GAAI9E,GAAGjE,KAAKgJ,YAAY,GAC5BvG,OAAM,WAAasG,GAErB,QAASE,eACPhF,GAAGjE,KAAKkJ,SAAW,GAAIC,MAEzB,QAASC,YACP,GAAIL,GAAI9E,GAAGjE,KAAKqJ,UAAU,GAC1B5G,OAAM,SAAWsG,GAEnB,QAASO,YACP,GAAIP,GAAI9E,GAAGjE,KAAKuJ,UAAU,GAC1B9G,OAAM,SAAWsG,GAEnB,QAASS,UACP,GAAIT,GAAI9E,GAAGjE,KAAKyJ,QAAQ,GAAI,GAC5BhH,OAAM,OAASsG,GAEjB,QAASW,cACP,GAAIX,GAAI9E,GAAGjE,KAAK2J,YAAY,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxDlH,OAAM,WAAasG,GAErB,QAASa,aACP,GAAIb,GAAI9E,GAAGjE,KAAK6J,WAAW,GAC3BpH,OAAM,OAASsG,GAEjB,QAASe,YAAW7D,OAAQ8D,eAE1B,MADAzJ,aAAY4D,eAAe6B,QAAQE,QAAS+D,KAAK,EAAMC,cAAc,GAAOF,eACrEzJ,YAAY4D,eAAegG,OAEpC,QAAS3C,MAAK4C,MACRA,KAAKC,QACPnG,GAAGjE,KAAKqK,QACLzF,KAAK,SAASI,MACb,GAAI+D,GAAIxE,EAAE+F,QAAQ/F,EAAEa,MAAM9E,YAAY4D,eAAeO,MAAO,MAAOR,GAAGjE,KAAK8C,GACnE,GAAJiG,EAEFzI,YAAY4D,eAAeqG,UAI3BjK,YAAY4D,eAAeO,MAAMsE,GAAKhH,QAAQyI,KAAKvG,GAAGjE,MAExDsC,OAAOO,GAAG,6BAA+BzB,OAAQ6C,GAAGjE,KAAK8C,OAX7DmB,SAaS,SAASwG,KACd5I,QAAQ6I,IAAID,OAIpB,QAASE,SACP1G,GAAGjE,KAAK4K,SAEV,QAASC,UACP5G,GAAGjE,KAAK4K,SACJ3G,GAAGjE,KAAK8K,OAEV7G,GAAGjE,KAAO,WACHM,aAAY4D,eAAe/C,aAClCmB,OAAOO,GAAG,mBAAqBjC,cAAeN,YAAY4D,eAAepB,MAIzER,OAAOO,GAAG,6BAA+BzB,OAAQ6C,GAAGjE,KAAK8C,KAG7D,QAAS4E,eAAc1H,MACrB0C,OAAOiC,QAAQb,EAAE,WACFA,EAAE,oDAAqD9D,KAAK+K,cAC3DC,GAAIlH,EAAE,OAAQ+G,OAAQ/G,EAAE,QACrCc,KAAK,WAEJ5E,KAAK6H,UACFjD,KAAK,WAEJtE,YAAY4D,eAAeO,MAAQF,EAAE0G,OAAO3K,YAAY4D,eAAeO,MAAO,SAASyG,GACrF,MAAOA,GAAEpI,IAAM9C,KAAK8C,KAGtBmB,GAAGjE,KAAO,KACVsC,OAAOO,GAAG,mBAAqBjC,cAAeN,YAAY4D,eAAepB,MACxE,SAASkC,KAAMC,QAChBvC,OAAOiD,MAAM7B,EAAE,WAAYA,EAAE,mDACA9D,KAAK+K,kBAK5C,QAASI,eAAcC,QACrBtK,KAAKuK,WAAWC,KAAKrH,GAAGsH,cAAczI,GAAK,IAAMmB,GAAGjE,KAAK8C,GAAI,OAAO8B,KAAK,SAASI,MAyBhF,QAASwG,+BAA8BtI,MAAOV,WAC5CU,MAAMgF,MAAQ,WACZ1F,UAAUa,QA1Bdb,UAAUc,MACRC,OAAQxB,QAAQyB,QAAQC,SAASC,MACjCC,YAAayH,OACbxH,qBAAqB,EACrBC,eAAe,EACf1D,UACE,kDAAoD2D,EAAE,oBAAsB,KAC5E,wBACA,YACAkB,KACA,aACA,yBACA,6BACA,qCAAuClB,EAAE,SAAW,eACpD,WACA,gBACAC,KAAK,IACPrE,WAAY8L,gCAMdA,8BAA8BrJ,SAAW,QAAS,eA3ItD,GAAI8B,IAAKoC,IAETpC,IAAGjE,KAAOC,UAEVgE,GAAGsH,cAAgBjL,YAAY4D,eAC/BD,GAAGwH,cAAgB3K,KAAK4K,aACxBzH,GAAG0H,YAAc7K,KAAK8K,WACtB3H,GAAG4H,YAAc/K,KAAKgL,WACtB7H,GAAG8H,gBAAkBjL,KAAKkL,eAC1B/H,GAAGgI,cACHhI,GAAGiI,qBACHjI,GAAG6E,WAAaA,WAChB7E,GAAGgF,YAAcA,YACjBhF,GAAGmF,SAAWA,SACdnF,GAAGqF,SAAWA,SACdrF,GAAGuF,OAASA,OACZvF,GAAGyF,WAAaA,WAChBzF,GAAG2F,UAAYA,UACf3F,GAAG6F,WAAaA,WAChB7F,GAAGsD,KAAOA,KACVtD,GAAG0G,MAAQA,MACX1G,GAAG4G,OAASA,OACZ5G,GAAGyD,cAAgBA,cACnBzD,GAAGkH,cAAgBA,cAzBrBtC,eAAe1G,SAAW,SAAU,WAAY,YAAa,cAAe,OAAQ,SAAU,UAAW,SAAU,eAAgB,aAuJnIJ,QACGC,OAAO,mBACPtC,WAAW,iBAAkBmJ,mBChKlC,WACE,YAQA,SAASsD,aACP,OACEC,SAAU,IACVlJ,OAAS8B,KAAM,cACftF,YAAa,SAAU,SAAS2C,QAC9BA,OAAOgK,aAAe,SAASrH,MAC7B,GAAIsH,UACAC,kBAQJ,OAPIvH,MAAKwH,QAAQF,MAAMG,KAAKzH,KAAKwH,QAC7BxH,KAAK0H,SAASJ,MAAMG,KAAKzH,KAAK0H,SAC9B1H,KAAK2H,UAAUJ,gBAAgBE,KAAKzH,KAAK2H,UACzC3H,KAAK4H,QAAQL,gBAAgBE,KAAKzH,KAAK4H,QACvCL,gBAAgB/E,OAAS,GAAG8E,MAAMG,KAAKF,gBAAgBxI,KAAK,OAC5DiB,KAAK6H,SAASP,MAAMG,KAAKzH,KAAK6H,SAC9B7H,KAAK8H,YAAYR,MAAMG,KAAKzH,KAAK8H,YAC9BR,MAAMvI,KAAK,WAGtB5D,SAAU,yDAId4B,QACGC,OAAO,eACP+K,UAAU,YAAaZ","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoContacts */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('app', {\n url: '/addressbooks',\n abstract: true,\n views: {\n addressbooks: {\n templateUrl: 'UIxContactFoldersView', // UI/Templates/Contacts/UIxContactFoldersView.wox\n controller: 'AddressBooksController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAddressbooks: stateAddressbooks\n }\n })\n .state('app.addressbook', {\n url: '/:addressbookId',\n views: {\n addressbook: {\n templateUrl: 'addressbook',\n controller: 'AddressBookController',\n controllerAs: 'addressbook'\n }\n },\n resolve: {\n stateAddressbook: stateAddressbook\n }\n })\n .state('app.addressbook.new', {\n url: '/{contactType:(?:card|list)}/new',\n views: {\n card: {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n },\n resolve: {\n stateCard: stateNewCard\n }\n })\n .state('app.addressbook.card', {\n url: '/:cardId',\n abstract: true,\n views: {\n card: {\n template: ''\n }\n },\n resolve: {\n stateCard: stateCard\n }\n })\n .state('app.addressbook.card.view', {\n url: '/view',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactViewTemplate', // UI/Templates/Contacts/UIxContactViewTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n })\n .state('app.addressbook.card.editor', {\n url: '/edit',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/addressbooks/personal');\n }\n\n /**\n * @ngInject\n */\n stateAddressbooks.$inject = ['AddressBook'];\n function stateAddressbooks(AddressBook) {\n return AddressBook.$findAll(window.contactFolders);\n }\n\n /**\n * @ngInject\n */\n stateAddressbook.$inject = ['$stateParams', 'AddressBook'];\n function stateAddressbook($stateParams, AddressBook) {\n return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData;\n }\n\n /**\n * @ngInject\n */\n stateNewCard.$inject = ['$stateParams', 'stateAddressbook', 'Card'];\n function stateNewCard($stateParams, stateAddressbook, Card) {\n var tag = 'v' + $stateParams.contactType,\n card = new Card({ pid: $stateParams.addressbookId, c_component: tag });\n stateAddressbook.selectedCard = true;\n return card;\n }\n\n /**\n * @ngInject\n */\n stateCard.$inject = ['$stateParams', 'stateAddressbook'];\n function stateCard($stateParams, stateAddressbook) {\n stateAddressbook.selectedCard = $stateParams.cardId;\n return stateAddressbook.$getCard($stateParams.cardId);\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBookController.$inject = ['$scope', '$state', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook'];\n function AddressBookController($scope, $state, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) {\n var vm = this;\n\n AddressBook.selectedFolder = stateAddressbook;\n\n vm.selectedFolder = stateAddressbook;\n vm.selectCard = selectCard;\n vm.newComponent = newComponent;\n vm.notSelectedComponent = notSelectedComponent;\n vm.unselectCards = unselectCards;\n vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;\n vm.saveSelectedCards = saveSelectedCards;\n vm.copySelectedCards = copySelectedCards;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n \n function selectCard(card) {\n $state.go('app.addressbook.card.view', {addressbookId: stateAddressbook.id, cardId: card.id});\n }\n \n function newComponent(ev) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: ev,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n ' ',\n ' ' + l('Contact'),\n ' ',\n ' ',\n ' ' + l('List'),\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n locals: {\n addressbookId: vm.selectedFolder.id\n },\n controller: ComponentDialogController\n });\n \n /**\n * @ngInject\n */\n ComponentDialogController.$inject = ['scope', '$mdDialog', '$state', 'addressbookId'];\n function ComponentDialogController(scope, $mdDialog, $state, addressbookId) {\n scope.create = function(type) {\n $mdDialog.hide();\n $state.go('app.addressbook.new', { addressbookId: addressbookId, contactType: type });\n };\n }\n }\n\n function notSelectedComponent(currentCard, type) {\n return (currentCard && currentCard.c_component == type && !currentCard.selected);\n }\n\n function unselectCards() {\n _.each(vm.selectedFolder.cards, function(card) { card.selected = false; });\n }\n \n function confirmDeleteSelectedCards() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected contacts?'))\n .then(function() {\n // User confirmed the deletion\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$deleteCards(selectedCards);\n delete vm.selectedFolder.selectedCard;\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function saveSelectedCards() {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n var selectedUIDs = _.pluck(selectedCards, 'id');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid=');\n }\n\n function copySelectedCards(folder) {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {\n // TODO: refresh target addressbook?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.cards, function(card) {\n card.selected = true;\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter('', { sort: field });\n }\n\n function sortedBy(field) {\n return AddressBook.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter('');\n }\n }\n\n angular\n .module('SOGo.ContactsUI') \n .controller('AddressBookController', AddressBookController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBooksController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];\n function AddressBooksController($state, $scope, $rootScope, $stateParams, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = AddressBook;\n vm.select = select;\n vm.newAddressbook = newAddressbook;\n vm.edit = edit;\n vm.revertEditing = revertEditing;\n vm.save = save;\n vm.confirmDelete = confirmDelete;\n vm.importCards = importCards;\n vm.exportCards = exportCards;\n vm.showLinks = showLinks;\n vm.share = share;\n vm.subscribeToFolder = subscribeToFolder;\n\n function select(folder) {\n vm.editMode = false;\n $state.go('app.addressbook', {addressbookId: folder.id});\n }\n\n function newAddressbook() {\n Dialog.prompt(l('New addressbook'),\n l('Name of new addressbook'))\n .then(function(name) {\n var addressbook = new AddressBook(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n AddressBook.$add(addressbook);\n });\n }\n\n function edit(folder) {\n if (!folder.isRemote) {\n vm.editMode = folder.id;\n vm.originalAddressbook = angular.extend({}, folder.$omit());\n focus('addressBookName_' + folder.id);\n }\n }\n\n function revertEditing(folder) {\n folder.name = vm.originalAddressbook.name;\n vm.editMode = false;\n }\n\n function save(folder) {\n var name = folder.name;\n if (name && name.length > 0 && name != vm.originalAddressbook.name) {\n folder.$rename(name)\n .then(function(data) {\n vm.editMode = false;\n }, function(data, status) {\n Dialog.alert(l('Warning'), data);\n });\n }\n }\n\n function confirmDelete() {\n if (vm.service.selectedFolder.isSubscription) {\n // Unsubscribe without confirmation\n vm.service.selectedFolder.$delete()\n .then(function() {\n vm.service.selectedFolder = null;\n $state.go('app.addressbook', { addressbookId: 'personal' });\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the addressbook %{0}?',\n vm.service.selectedFolder.name))\n .then(function() {\n return vm.service.selectedFolder.$delete();\n })\n .then(function() {\n vm.service.selectedFolder = null;\n return true;\n })\n .catch(function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n }\n\n function importCards() {\n\n }\n\n function exportCards() {\n window.location.href = ApplicationBaseURL + '/' + vm.service.selectedFolder.id + '/exportFolder';\n }\n\n function showLinks(addressbook) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: addressbook.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n addressbook: addressbook\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'addressbook'];\n function LinksDialogController($mdDialog, addressbook) {\n var vm = this;\n this.addressbook = addressbook;\n this.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(addressbook) {\n // Fetch list of ACL users\n addressbook.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: addressbook.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: addressbook.$acl.users,\n User: User,\n folder: addressbook\n }\n });\n });\n }\n\n /**\n * subscribeToFolder - Callback of sgSubscribe directive\n */\n function subscribeToFolder(addressbookData) {\n console.debug('subscribeToFolder ' + addressbookData.owner + addressbookData.name);\n AddressBook.$subscribe(addressbookData.owner, addressbookData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('AddressBooksController', AddressBooksController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Controller to view and edit a card\n * @ngInject\n */\n CardController.$inject = ['$scope', '$timeout', '$mdDialog', 'AddressBook', 'Card', 'Dialog', 'sgFocus', '$state', '$stateParams', 'stateCard'];\n function CardController($scope, $timeout, $mdDialog, AddressBook, Card, Dialog, focus, $state, $stateParams, stateCard) {\n var vm = this;\n\n vm.card = stateCard;\n\n vm.currentFolder = AddressBook.selectedFolder;\n vm.allEmailTypes = Card.$EMAIL_TYPES;\n vm.allTelTypes = Card.$TEL_TYPES;\n vm.allUrlTypes = Card.$URL_TYPES;\n vm.allAddressTypes = Card.$ADDRESS_TYPES;\n vm.categories = {};\n vm.userFilterResults = [];\n vm.addOrgUnit = addOrgUnit;\n vm.addBirthday = addBirthday;\n vm.addEmail = addEmail;\n vm.addPhone = addPhone;\n vm.addUrl = addUrl;\n vm.addAddress = addAddress;\n vm.addMember = addMember;\n vm.userFilter = userFilter;\n vm.save = save;\n vm.reset = reset;\n vm.cancel = cancel;\n vm.confirmDelete = confirmDelete;\n vm.viewRawSource = viewRawSource;\n\n function addOrgUnit() {\n var i = vm.card.$addOrgUnit('');\n focus('orgUnit_' + i);\n }\n function addBirthday() {\n vm.card.birthday = new Date();\n }\n function addEmail() {\n var i = vm.card.$addEmail('');\n focus('email_' + i);\n }\n function addPhone() {\n var i = vm.card.$addPhone('');\n focus('phone_' + i);\n }\n function addUrl() {\n var i = vm.card.$addUrl('', '');\n focus('url_' + i);\n }\n function addAddress() {\n var i = vm.card.$addAddress('', '', '', '', '', '', '', '');\n focus('address_' + i);\n }\n function addMember() {\n var i = vm.card.$addMember('');\n focus('ref_' + i);\n }\n function userFilter($query, excludedCards) {\n AddressBook.selectedFolder.$filter($query, {dry: true, excludeLists: true}, excludedCards);\n return AddressBook.selectedFolder.$cards;\n }\n function save(form) {\n if (form.$valid) {\n vm.card.$save()\n .then(function(data) {\n var i = _.indexOf(_.pluck(AddressBook.selectedFolder.cards, 'id'), vm.card.id);\n if (i < 0) {\n // New card; reload contacts list and show addressbook in which the card has been created\n AddressBook.selectedFolder.$reload();\n }\n else {\n // Update contacts list with new version of the Card object\n AddressBook.selectedFolder.cards[i] = angular.copy(vm.card);\n }\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n })\n .catch(function(err) {\n console.log(err);\n });\n }\n }\n function reset() {\n vm.card.$reset();\n }\n function cancel() {\n vm.card.$reset();\n if (vm.card.isNew) {\n // Cancelling the creation of a card\n vm.card = null;\n delete AddressBook.selectedFolder.selectedCard;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }\n else {\n // Cancelling the edition of an existing card\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n }\n }\n function confirmDelete(card) {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the card of %{0}?', card.$fullname()),\n {ok: l('Yes'), cancel: l('No')})\n .then(function() {\n // User confirmed the deletion\n card.$delete()\n .then(function() {\n // Remove card from list of addressbook\n AddressBook.selectedFolder.cards = _.reject(AddressBook.selectedFolder.cards, function(o) {\n return o.id == card.id;\n });\n // Remove card object from scope\n vm.card = null;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured while deleting the card \"%{0}\".',\n card.$fullname()));\n });\n });\n }\n\n function viewRawSource($event) {\n Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, \"raw\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: CardRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n CardRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function CardRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('CardController', CardController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name sgAddress\n * @memberof ContactsUI\n * @desc Directive to format a postal address.\n * @ngInject\n */\n function sgAddress() {\n return {\n restrict: 'A',\n scope: { data: '=sgAddress' },\n controller: ['$scope', function($scope) {\n $scope.addressLines = function(data) {\n var lines = [],\n locality_region = [];\n if (data.street) lines.push(data.street);\n if (data.street2) lines.push(data.street2);\n if (data.locality) locality_region.push(data.locality);\n if (data.region) locality_region.push(data.region);\n if (locality_region.length > 0) lines.push(locality_region.join(', '));\n if (data.country) lines.push(data.country);\n if (data.postalcode) lines.push(data.postalcode);\n return lines.join('
');\n };\n }],\n template: '
'\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgAddress', sgAddress);\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","card","stateCard","stateNewCard","template","card@app.addressbook","otherwise","AddressBook","$findAll","window","contactFolders","$stateParams","$find","addressbookId","$futureAddressBookData","Card","tag","contactType","pid","c_component","selectedCard","cardId","$getCard","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","angular","module","config","run","$inject","AddressBookController","$scope","$state","$timeout","$mdDialog","focus","Dialog","Settings","selectCard","go","id","newComponent","ev","ComponentDialogController","scope","create","type","hide","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","l","join","locals","vm","selectedFolder","notSelectedComponent","currentCard","selected","unselectCards","_","each","cards","confirmDeleteSelectedCards","confirm","then","selectedCards","filter","$deleteCards","data","status","saveSelectedCards","selectedUIDs","pluck","location","href","ApplicationBaseURL","copySelectedCards","folder","$copyCards","alert","selectAll","sort","field","$filter","sortedBy","$query","cancelSearch","mode","search","this","AddressBooksController","$mdToast","FileUploader","User","select","editMode","value","newAddressbook","prompt","name","isEditable","isRemote","owner","UserLogin","$add","edit","originalAddressbook","extend","$omit","revertEditing","save","length","$rename","confirmDelete","service","isSubscription","$delete","importCards","$event","CardsImportDialogController","uploader","onProgressItem","item","progress","debug","onSuccessItem","response","headers","JSON","stringify","undefined","simple","content","imported","position","hideDelay","$reload","onCancelItem","onErrorItem","close","upload","uploadAll","exportCards","showLinks","LinksDialogController","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","$subscribe","activeUser","CardController","addOrgUnit","i","$addOrgUnit","addBirthday","birthday","Date","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","addAddress","$addAddress","addMember","$addMember","userFilter","excludedCards","dry","excludeLists","$cards","form","$valid","$save","indexOf","copy","err","log","reset","$reset","cancel","isNew","$fullname","ok","reject","o","exportCard","currentFolder","viewRawSource","$$resource","post","CardRawSourceDialogController","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","sgAddress","restrict","addressLines","lines","locality_region","street","push","street2","locality","region","country","postalcode","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoContacts */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'angularFileUpload', 'SOGo.Common', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('app', {\n url: '/addressbooks',\n abstract: true,\n views: {\n addressbooks: {\n templateUrl: 'UIxContactFoldersView', // UI/Templates/Contacts/UIxContactFoldersView.wox\n controller: 'AddressBooksController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAddressbooks: stateAddressbooks\n }\n })\n .state('app.addressbook', {\n url: '/:addressbookId',\n views: {\n addressbook: {\n templateUrl: 'addressbook',\n controller: 'AddressBookController',\n controllerAs: 'addressbook'\n }\n },\n resolve: {\n stateAddressbook: stateAddressbook\n }\n })\n .state('app.addressbook.new', {\n url: '/{contactType:(?:card|list)}/new',\n views: {\n card: {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n },\n resolve: {\n stateCard: stateNewCard\n }\n })\n .state('app.addressbook.card', {\n url: '/:cardId',\n abstract: true,\n views: {\n card: {\n template: ''\n }\n },\n resolve: {\n stateCard: stateCard\n }\n })\n .state('app.addressbook.card.view', {\n url: '/view',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactViewTemplate', // UI/Templates/Contacts/UIxContactViewTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n })\n .state('app.addressbook.card.editor', {\n url: '/edit',\n views: {\n 'card@app.addressbook': {\n templateUrl: 'UIxContactEditorTemplate', // UI/Templates/Contacts/UIxContactEditorTemplate.wox\n controller: 'CardController',\n controllerAs: 'editor'\n }\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/addressbooks/personal');\n }\n\n /**\n * @ngInject\n */\n stateAddressbooks.$inject = ['AddressBook'];\n function stateAddressbooks(AddressBook) {\n return AddressBook.$findAll(window.contactFolders);\n }\n\n /**\n * @ngInject\n */\n stateAddressbook.$inject = ['$stateParams', 'AddressBook'];\n function stateAddressbook($stateParams, AddressBook) {\n return AddressBook.$find($stateParams.addressbookId).$futureAddressBookData;\n }\n\n /**\n * @ngInject\n */\n stateNewCard.$inject = ['$stateParams', 'stateAddressbook', 'Card'];\n function stateNewCard($stateParams, stateAddressbook, Card) {\n var tag = 'v' + $stateParams.contactType,\n card = new Card({ pid: $stateParams.addressbookId, c_component: tag });\n stateAddressbook.selectedCard = true;\n return card;\n }\n\n /**\n * @ngInject\n */\n stateCard.$inject = ['$stateParams', 'stateAddressbook'];\n function stateCard($stateParams, stateAddressbook) {\n stateAddressbook.selectedCard = $stateParams.cardId;\n return stateAddressbook.$getCard($stateParams.cardId);\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBookController.$inject = ['$scope', '$state', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook'];\n function AddressBookController($scope, $state, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) {\n var vm = this;\n\n AddressBook.selectedFolder = stateAddressbook;\n\n vm.selectedFolder = stateAddressbook;\n vm.selectCard = selectCard;\n vm.newComponent = newComponent;\n vm.notSelectedComponent = notSelectedComponent;\n vm.unselectCards = unselectCards;\n vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;\n vm.saveSelectedCards = saveSelectedCards;\n vm.copySelectedCards = copySelectedCards;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.mode = { search: false };\n \n function selectCard(card) {\n $state.go('app.addressbook.card.view', {addressbookId: stateAddressbook.id, cardId: card.id});\n }\n \n function newComponent(ev) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: ev,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n ' ',\n ' ' + l('Contact'),\n ' ',\n ' ',\n ' ' + l('List'),\n ' ',\n '
',\n '
',\n '
'\n ].join(''),\n locals: {\n addressbookId: vm.selectedFolder.id\n },\n controller: ComponentDialogController\n });\n \n /**\n * @ngInject\n */\n ComponentDialogController.$inject = ['scope', '$mdDialog', '$state', 'addressbookId'];\n function ComponentDialogController(scope, $mdDialog, $state, addressbookId) {\n scope.create = function(type) {\n $mdDialog.hide();\n $state.go('app.addressbook.new', { addressbookId: addressbookId, contactType: type });\n };\n }\n }\n\n function notSelectedComponent(currentCard, type) {\n return (currentCard && currentCard.c_component == type && !currentCard.selected);\n }\n\n function unselectCards() {\n _.each(vm.selectedFolder.cards, function(card) { card.selected = false; });\n }\n \n function confirmDeleteSelectedCards() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected contacts?'))\n .then(function() {\n // User confirmed the deletion\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$deleteCards(selectedCards);\n delete vm.selectedFolder.selectedCard;\n }, function(data, status) {\n // Delete failed\n });\n }\n\n function saveSelectedCards() {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n var selectedUIDs = _.pluck(selectedCards, 'id');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid=');\n }\n\n function copySelectedCards(folder) {\n var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; });\n vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {\n // TODO: refresh target addressbook?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.cards, function(card) {\n card.selected = true;\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter('', { sort: field });\n }\n\n function sortedBy(field) {\n return AddressBook.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter('');\n }\n }\n\n angular\n .module('SOGo.ContactsUI') \n .controller('AddressBookController', AddressBookController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n AddressBooksController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$mdDialog', '$mdToast', 'FileUploader', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];\n function AddressBooksController($state, $scope, $rootScope, $stateParams, $timeout, $mdDialog, $mdToast, FileUploader, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {\n var vm = this;\n\n vm.activeUser = Settings.activeUser;\n vm.service = AddressBook;\n vm.select = select;\n vm.newAddressbook = newAddressbook;\n vm.edit = edit;\n vm.revertEditing = revertEditing;\n vm.save = save;\n vm.confirmDelete = confirmDelete;\n vm.importCards = importCards;\n vm.exportCards = exportCards;\n vm.showLinks = showLinks;\n vm.share = share;\n vm.subscribeToFolder = subscribeToFolder;\n\n function select(folder) {\n vm.editMode = false;\n AddressBook.$query.value = '';\n $state.go('app.addressbook', {addressbookId: folder.id});\n }\n\n function newAddressbook() {\n Dialog.prompt(l('New addressbook'),\n l('Name of new addressbook'))\n .then(function(name) {\n var addressbook = new AddressBook(\n {\n name: name,\n isEditable: true,\n isRemote: false,\n owner: UserLogin\n }\n );\n AddressBook.$add(addressbook);\n });\n }\n\n function edit(folder) {\n if (!folder.isRemote) {\n vm.editMode = folder.id;\n vm.originalAddressbook = angular.extend({}, folder.$omit());\n focus('addressBookName_' + folder.id);\n }\n }\n\n function revertEditing(folder) {\n folder.name = vm.originalAddressbook.name;\n vm.editMode = false;\n }\n\n function save(folder) {\n var name = folder.name;\n if (name && name.length > 0 && name != vm.originalAddressbook.name) {\n folder.$rename(name)\n .then(function(data) {\n vm.editMode = false;\n }, function(data, status) {\n Dialog.alert(l('Warning'), data);\n });\n }\n }\n\n function confirmDelete() {\n if (vm.service.selectedFolder.isSubscription) {\n // Unsubscribe without confirmation\n vm.service.selectedFolder.$delete()\n .then(function() {\n vm.service.selectedFolder = null;\n $state.go('app.addressbook', { addressbookId: 'personal' });\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n else {\n Dialog.confirm(l('Warning'), l('Are you sure you want to delete the addressbook %{0}?',\n vm.service.selectedFolder.name))\n .then(function() {\n return vm.service.selectedFolder.$delete();\n })\n .then(function() {\n vm.service.selectedFolder = null;\n return true;\n })\n .catch(function(data, status) {\n Dialog.alert(l('An error occured while deleting the addressbook \"%{0}\".',\n vm.service.selectedFolder.name),\n l(data.error));\n });\n }\n }\n\n function importCards($event, folder) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n ' import_export',\n '
',\n '
' + l('Import Cards') + '
',\n '
',\n ' ',\n ' close',\n ' ',\n '
',\n '
',\n ' ',\n '
',\n '
',\n ' ' + l('Select a vCard or LDIF file.') + '',\n ' ',\n ' ',\n '
',\n ' ' + l('No file chosen') + '',\n ' 0\">{{ uploader.queue[0].file.name }}',\n '
',\n '
',\n '
',\n ' ' + l('Upload') + '',\n '
',\n '
'\n ].join(''),\n controller: CardsImportDialogController,\n locals: {\n folder: folder\n }\n });\n\n /**\n * @ngInject\n */\n CardsImportDialogController.$inject = ['scope', '$mdDialog', 'folder'];\n function CardsImportDialogController(scope, $mdDialog, folder) {\n\n scope.uploader = new FileUploader({\n url: ApplicationBaseURL + '/' + folder.id + '/import',\n onProgressItem: function(item, progress) {\n console.debug(item); console.debug(progress);\n },\n onSuccessItem: function(item, response, status, headers) {\n console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));\n $mdDialog.hide();\n $mdToast.show(\n $mdToast.simple()\n .content(l('A total of %{0} cards were imported in the addressbook.', response.imported))\n .position('top right')\n .hideDelay(3000));\n AddressBook.selectedFolder.$reload();\n },\n onCancelItem: function(item, response, status, headers) {\n console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));\n },\n onErrorItem: function(item, response, status, headers) {\n console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));\n }\n });\n\n scope.close = function() {\n $mdDialog.hide();\n };\n scope.upload = function() {\n scope.uploader.uploadAll();\n };\n }\n }\n\n function exportCards() {\n window.location.href = ApplicationBaseURL + '/' + vm.service.selectedFolder.id + '/exportFolder';\n }\n\n function showLinks(addressbook) {\n $mdDialog.show({\n parent: angular.element(document.body),\n clickOutsideToClose: true,\n escapeToClose: true,\n templateUrl: addressbook.id + '/links',\n controller: LinksDialogController,\n controllerAs: 'links',\n locals: {\n addressbook: addressbook\n }\n });\n \n /**\n * @ngInject\n */\n LinksDialogController.$inject = ['$mdDialog', 'addressbook'];\n function LinksDialogController($mdDialog, addressbook) {\n var vm = this;\n this.addressbook = addressbook;\n this.close = close;\n\n function close() {\n $mdDialog.hide();\n }\n }\n }\n\n function share(addressbook) {\n // Fetch list of ACL users\n addressbook.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: addressbook.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: addressbook.$acl.users,\n User: User,\n folder: addressbook\n }\n });\n });\n }\n\n /**\n * subscribeToFolder - Callback of sgSubscribe directive\n */\n function subscribeToFolder(addressbookData) {\n console.debug('subscribeToFolder ' + addressbookData.owner + addressbookData.name);\n AddressBook.$subscribe(addressbookData.owner, addressbookData.name).catch(function(data) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('AddressBooksController', AddressBooksController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * Controller to view and edit a card\n * @ngInject\n */\n CardController.$inject = ['$scope', '$timeout', '$mdDialog', 'AddressBook', 'Card', 'Dialog', 'sgFocus', '$state', '$stateParams', 'stateCard'];\n function CardController($scope, $timeout, $mdDialog, AddressBook, Card, Dialog, focus, $state, $stateParams, stateCard) {\n var vm = this;\n\n vm.card = stateCard;\n\n vm.currentFolder = AddressBook.selectedFolder;\n vm.allEmailTypes = Card.$EMAIL_TYPES;\n vm.allTelTypes = Card.$TEL_TYPES;\n vm.allUrlTypes = Card.$URL_TYPES;\n vm.allAddressTypes = Card.$ADDRESS_TYPES;\n vm.categories = {};\n vm.userFilterResults = [];\n vm.addOrgUnit = addOrgUnit;\n vm.addBirthday = addBirthday;\n vm.addEmail = addEmail;\n vm.addPhone = addPhone;\n vm.addUrl = addUrl;\n vm.addAddress = addAddress;\n vm.addMember = addMember;\n vm.userFilter = userFilter;\n vm.save = save;\n vm.reset = reset;\n vm.cancel = cancel;\n vm.confirmDelete = confirmDelete;\n vm.exportCard = exportCard;\n vm.viewRawSource = viewRawSource;\n\n function addOrgUnit() {\n var i = vm.card.$addOrgUnit('');\n focus('orgUnit_' + i);\n }\n function addBirthday() {\n vm.card.birthday = new Date();\n }\n function addEmail() {\n var i = vm.card.$addEmail('');\n focus('email_' + i);\n }\n function addPhone() {\n var i = vm.card.$addPhone('');\n focus('phone_' + i);\n }\n function addUrl() {\n var i = vm.card.$addUrl('', '');\n focus('url_' + i);\n }\n function addAddress() {\n var i = vm.card.$addAddress('', '', '', '', '', '', '', '');\n focus('address_' + i);\n }\n function addMember() {\n var i = vm.card.$addMember('');\n focus('ref_' + i);\n }\n function userFilter($query, excludedCards) {\n AddressBook.selectedFolder.$filter($query, {dry: true, excludeLists: true}, excludedCards);\n return AddressBook.selectedFolder.$cards;\n }\n function save(form) {\n if (form.$valid) {\n vm.card.$save()\n .then(function(data) {\n var i = _.indexOf(_.pluck(AddressBook.selectedFolder.cards, 'id'), vm.card.id);\n if (i < 0) {\n // New card; reload contacts list and show addressbook in which the card has been created\n AddressBook.selectedFolder.$reload();\n }\n else {\n // Update contacts list with new version of the Card object\n AddressBook.selectedFolder.cards[i] = angular.copy(vm.card);\n }\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n })\n .catch(function(err) {\n console.log(err);\n });\n }\n }\n function reset() {\n vm.card.$reset();\n }\n function cancel() {\n vm.card.$reset();\n if (vm.card.isNew) {\n // Cancelling the creation of a card\n vm.card = null;\n delete AddressBook.selectedFolder.selectedCard;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }\n else {\n // Cancelling the edition of an existing card\n $state.go('app.addressbook.card.view', { cardId: vm.card.id });\n }\n }\n function confirmDelete(card) {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the card of %{0}?', card.$fullname()),\n {ok: l('Yes'), cancel: l('No')})\n .then(function() {\n // User confirmed the deletion\n card.$delete()\n .then(function() {\n // Remove card from list of addressbook\n AddressBook.selectedFolder.cards = _.reject(AddressBook.selectedFolder.cards, function(o) {\n return o.id == card.id;\n });\n // Remove card object from scope\n vm.card = null;\n $state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });\n }, function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured while deleting the card \"%{0}\".',\n card.$fullname()));\n });\n });\n }\n\n function exportCard() {\n window.location.href = ApplicationBaseURL + '/' + vm.currentFolder.id + '/export?uid=' + vm.card.id;\n }\n\n function viewRawSource($event) {\n Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, \"raw\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: CardRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n CardRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function CardRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n\n angular\n .module('SOGo.ContactsUI')\n .controller('CardController', CardController);\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name sgAddress\n * @memberof ContactsUI\n * @desc Directive to format a postal address.\n * @ngInject\n */\n function sgAddress() {\n return {\n restrict: 'A',\n scope: { data: '=sgAddress' },\n controller: ['$scope', function($scope) {\n $scope.addressLines = function(data) {\n var lines = [],\n locality_region = [];\n if (data.street) lines.push(data.street);\n if (data.street2) lines.push(data.street2);\n if (data.locality) locality_region.push(data.locality);\n if (data.region) locality_region.push(data.region);\n if (locality_region.length > 0) lines.push(locality_region.join(', '));\n if (data.country) lines.push(data.country);\n if (data.postalcode) lines.push(data.postalcode);\n return lines.join('
');\n };\n }],\n template: '
'\n };\n }\n \n angular\n .module('SOGo.Common')\n .directive('sgAddress', sgAddress);\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Mailer.js b/UI/WebServerResources/js/Mailer.js index be9fe4486..86c1ec0b3 100644 --- a/UI/WebServerResources/js/Mailer.js +++ b/UI/WebServerResources/js/Mailer.js @@ -1,2 +1,2 @@ -!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("mail",{url:"/Mail",views:{mailboxes:{templateUrl:"UIxMailMainFrame",controller:"MailboxesController",controllerAs:"app"}},resolve:{stateAccounts:stateAccounts}}).state("mail.account",{url:"/:accountId","abstract":!0,views:{mailbox:{template:""}},resolve:{stateAccount:stateAccount}}).state("mail.account.mailbox",{url:"/:mailboxId",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:stateMailbox,stateMessages:stateMessages}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:stateMessage}}),$urlRouterProvider.otherwise("/Mail")}function stateAccounts($q,Account){var accounts=Account.$findAll(mailAccounts),promises=[];return angular.forEach(accounts,function(account,i){var mailboxes=account.$getMailboxes();promises.push(mailboxes.then(function(objects){return account}))}),$q.all(promises)}function stateAccount($stateParams,stateAccounts){return _.find(stateAccounts,function(account){return account.id==$stateParams.accountId})}function stateMailbox($stateParams,stateAccount,decodeUriFilter){var _find,mailboxId=decodeUriFilter($stateParams.mailboxId);return(_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==mailboxId});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox})(stateAccount.$mailboxes)}function stateMessages(stateMailbox){return stateMailbox.$filter()}function stateMessage(encodeUriFilter,$stateParams,$state,stateMailbox,stateMessages){var message=_.find(stateMailbox.$messages,function(messageObject){return messageObject.uid==$stateParams.messageId});return message?(stateMailbox.selectedMessage=$stateParams.messageId,message.$reload()):void $state.go("mail.account.mailbox",{accountId:stateMailbox.$account.id,mailboxId:encodeUriFilter(stateMailbox.path)})}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.MailerUI",["ngSanitize","ui.router","ck","angularFileUpload","SOGo.Common","SOGo.ContactsUI","ngAnimate","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAccounts.$inject=["$q","Account"],stateAccount.$inject=["$stateParams","stateAccounts"],stateMailbox.$inject=["$stateParams","stateAccount","decodeUriFilter"],stateMessages.$inject=["stateMailbox"],stateMessage.$inject=["encodeUriFilter","$stateParams","$state","stateMailbox","stateMessages"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function MailboxController($state,$timeout,$mdDialog,stateAccounts,stateAccount,stateMailbox,encodeUriFilter,focus,Dialog,Account,Mailbox){function selectMessage(message){$state.go("mail.account.mailbox.message",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path),messageId:message.uid})}function unselectMessages(){_.each(vm.selectedFolder.$messages,function(message){message.selected=!1})}function confirmDeleteSelectedMessages(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected messages?")).then(function(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$deleteMessages(selectedUIDs).then(function(){var unseenCount=_.filter(selectedMessages,function(message){return!message.isread});vm.selectedFolder.$messages=_.difference(vm.selectedFolder.$messages,selectedMessages),vm.selectedFolder.unseenCount=-unseenCount},function(error){Dialog.alert(l("Error"),error)})})}function copySelectedMessages(folder){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$copyMessages(selectedUIDs,"/"+folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function saveSelectedMessages(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/saveMessages?uid="+selectedUIDs.join(",")}function selectAll(){_.each(vm.selectedFolder.$messages,function(message){message.selected=!0})}function markSelectedMessagesAsFlagged(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"\\Flagged","add").then(function(d){_.forEach(selectedMessages,function(message){message.isflagged=!0})})}function markSelectedMessagesAsUnread(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"seen","remove").then(function(d){_.forEach(selectedMessages,function(message){message.isread=!1,vm.selectedFolder.unseenCount++})})}function sort(field){vm.selectedFolder.$filter({sort:field})}function sortedBy(field){return Mailbox.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter()}function newMessage($event){var message=vm.account.$newMessage();$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccounts:vm.accounts,stateMessage:message,stateRecipients:[]}})}var vm=this;Mailbox.selectedFolder=stateMailbox,vm.service=Mailbox,vm.accounts=stateAccounts,vm.account=stateAccount,vm.selectedFolder=stateMailbox,vm.selectMessage=selectMessage,vm.unselectMessages=unselectMessages,vm.confirmDeleteSelectedMessages=confirmDeleteSelectedMessages,vm.copySelectedMessages=copySelectedMessages,vm.saveSelectedMessages=saveSelectedMessages,vm.markSelectedMessagesAsFlagged=markSelectedMessagesAsFlagged,vm.markSelectedMessagesAsUnread=markSelectedMessagesAsUnread,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.newMessage=newMessage,vm.mode={search:!1}}MailboxController.$inject=["$state","$timeout","$mdDialog","stateAccounts","stateAccount","stateMailbox","encodeUriFilter","sgFocus","Dialog","Account","Mailbox"],angular.module("SOGo.MailerUI").controller("MailboxController",MailboxController)}(),function(){"use strict";function MailboxesController($state,$timeout,$mdDialog,focus,encodeUriFilter,Dialog,Settings,Account,Mailbox,User,Preferences,stateAccounts){function newFolder(parentFolder){Dialog.prompt(l("New folder"),l("Enter the new name of your folder :")).then(function(name){parentFolder.$newMailbox(parentFolder.id,name).then(function(){},function(data,status){Dialog.alert(l('An error occured while creating the mailbox "%{0}".',name),l(data.error))})})}function delegate(account){function MailboxDelegationController($scope,$mdDialog,User,account){function userFilter($query){return User.$filter($query,account.delegates)}function closeModal(){$mdDialog.hide()}function removeUser(user){account.$removeDelegate(user.uid)["catch"](function(data,status){Dialog.alert(l("Warning"),l("An error occured please try again."))})}function addUser(data){data&&account.$addDelegate(data).then(function(){vm.userToAdd="",vm.searchText=""},function(error){Dialog.alert(l("Warning"),error)})}var vm=this;vm.users=account.delegates,vm.account=account,vm.userToAdd="",vm.searchText="",vm.userFilter=userFilter,vm.closeModal=closeModal,vm.removeUser=removeUser,vm.addUser=addUser}$mdDialog.show({templateUrl:account.id+"/delegation",controller:MailboxDelegationController,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:User,account:account}}),MailboxDelegationController.$inject=["$scope","$mdDialog","User","account"]}function editFolder(folder){vm.editMode=folder.path,focus("mailboxName_"+folder.path)}function revertEditing(folder){folder.$reset(),vm.editMode=!1}function selectFolder(account,folder){vm.editMode!=folder.path&&(vm.editMode=!1,$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(folder.path)}))}function saveFolder(folder){folder.$rename()}function compactFolder(folder){folder.$compact().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function emptyTrashFolder(folder){folder.$emptyTrash().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function exportMails(folder){window.location.href=ApplicationBaseURL+"/"+folder.id+"/exportFolder"}function confirmDelete(folder){Dialog.confirm(l("Confirmation"),l("Do you really want to move this folder into the trash ?")).then(function(){folder.$delete().then(function(){$state.go("mail")},function(data,status){Dialog.alert(l('An error occured while deleting the mailbox "%{0}".',folder.name),l(data.error))})})}function markFolderRead(folder){folder.$markAsRead()}function share(folder){folder.$acl.$users().then(function(){$mdDialog.show({templateUrl:folder.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:folder.$acl.users,User:User,folder:folder}})})}function metadataForFolder(folder){return"inbox"==folder.type?{name:folder.name,icon:"inbox"}:"draft"==folder.type?{name:l("DraftsFolderName"),icon:"drafts"}:"sent"==folder.type?{name:l("SentFolderName"),icon:"send"}:"trash"==folder.type?{name:l("TrashFolderName"),icon:"delete"}:"additional"==folder.type?{name:folder.name,icon:"folder_shared"}:{name:folder.name,icon:"folder"}}function setFolderAs(folder,type){folder.$setFolderAs(type).then(function(){folder.$account.$getMailboxes({reload:!0})},function(error){Dialog.alert(l("Warning"),error)})}function refreshUnseenCount(){var unseenCountFolders=window.unseenCountFolders;_.forEach(vm.accounts,function(account){_.includes(unseenCountFolders,account.id+"/folderINBOX")||unseenCountFolders.push(account.id+"/folderINBOX"),_.forEach(account.$$flattenMailboxes,function(mailbox){angular.isDefined(mailbox.unseenCount)&&!_.includes(unseenCountFolders,mailbox.id)&&unseenCountFolders.push(mailbox.id)})}),Account.$$resource.post("","unseenCount",{mailboxes:unseenCountFolders}).then(function(data){_.forEach(vm.accounts,function(account){_.forEach(account.$$flattenMailboxes,function(mailbox){data[mailbox.id]&&(mailbox.unseenCount=data[mailbox.id])})})}),Preferences.ready().then(function(){var refreshViewCheck=Preferences.defaults.SOGoRefreshViewCheck;refreshViewCheck&&"manually"!=refreshViewCheck&&$timeout(vm.refreshUnseenCount,1e3*refreshViewCheck.timeInterval())})}var account,mailbox,vm=this;vm.service=Mailbox,vm.accounts=stateAccounts,vm.newFolder=newFolder,vm.delegate=delegate,vm.editFolder=editFolder,vm.revertEditing=revertEditing,vm.selectFolder=selectFolder,vm.saveFolder=saveFolder,vm.compactFolder=compactFolder,vm.emptyTrashFolder=emptyTrashFolder,vm.exportMails=exportMails,vm.confirmDelete=confirmDelete,vm.markFolderRead=markFolderRead,vm.share=share,vm.metadataForFolder=metadataForFolder,vm.setFolderAs=setFolderAs,vm.refreshUnseenCount=refreshUnseenCount,"mail"==$state.current.name&&vm.accounts.length>0&&vm.accounts[0].$mailboxes.length>0&&(account=vm.accounts[0],mailbox=account.$mailboxes[0],$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(mailbox.path)})),vm.refreshUnseenCount()}MailboxesController.$inject=["$state","$timeout","$mdDialog","sgFocus","encodeUriFilter","Dialog","sgSettings","Account","Mailbox","User","Preferences","stateAccounts"],angular.module("SOGo.MailerUI").controller("MailboxesController",MailboxesController)}(),function(){"use strict";function MessageController($scope,$state,$mdDialog,stateAccounts,stateAccount,stateMailbox,stateMessage,encodeUriFilter,focus,Dialog,Account,Mailbox,Message){function doDelete(){stateMailbox.$deleteMessages([stateMessage.uid]).then(function(){var index=_.findIndex(stateMailbox.$messages,function(o){return o.uid==stateMessage.uid});-1!=index&&stateMailbox.$messages.splice(index,1),vm.message=null,$state.go("mail.account.mailbox",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path)})})}function showMailEditor($event,message,recipients){angular.isDefined(recipients)||(recipients=[]),$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccounts:vm.accounts,stateMessage:message,stateRecipients:recipients}})}function reply($event){var message=vm.message.$reply();showMailEditor($event,message)}function replyAll($event){var message=vm.message.$replyAll();showMailEditor($event,message)}function forward($event){var message=vm.message.$forward();showMailEditor($event,message)}function edit($event){vm.message.$editableContent().then(function(){showMailEditor($event,vm.message)})}function newMessage($event,recipient){var message=vm.account.$newMessage();showMailEditor($event,message,[recipient])}function viewRawSource($event){Message.$$resource.post(vm.message.id,"viewsource").then(function(data){function MessageRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:MessageRawSourceDialogController}),MessageRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.accounts=stateAccounts,vm.account=stateAccount,vm.mailbox=stateMailbox,vm.message=stateMessage,vm.service=Message,vm.tags={searchText:"",selected:""},vm.doDelete=doDelete,vm.reply=reply,vm.replyAll=replyAll,vm.forward=forward,vm.edit=edit,vm.newMessage=newMessage,vm.viewRawSource=viewRawSource,$scope.$watchCollection("viewer.message.flags",function(oldTags,newTags){_.each(_.difference(newTags,oldTags),function(tag){vm.message.removeTag(tag)})})}MessageController.$inject=["$scope","$state","$mdDialog","stateAccounts","stateAccount","stateMailbox","stateMessage","encodeUriFilter","sgFocus","Dialog","Account","Mailbox","Message"],angular.module("SOGo.MailerUI").controller("MessageController",MessageController)}(),function(){"use strict";function MessageEditorController($stateParams,$state,$q,$mdDialog,FileUploader,stateAccounts,stateMessage,stateRecipients,$timeout,encodeUriFilter,focus,Dialog,Account,Mailbox,AddressBook,Preferences){function cancel(){vm.autosave&&$timeout.cancel(vm.autosave),$mdDialog.cancel()}function send(){vm.autosave&&$timeout.cancel(vm.autosave),vm.message.$send().then(function(data){$mdDialog.hide()},function(data){Dialog.alert(l(data.status),l(data.message))})}function contactFilter($query){var deferred=$q.defer();return AddressBook.$filterAll($query).then(function(results){deferred.resolve(_.invoke(results,"$shortFormat",$query))}),deferred.promise}function autosaveDrafts(){vm.message.$save(),Preferences.defaults.SOGoMailAutoSave&&(vm.autosave=$timeout(vm.autosaveDrafts,1e3*Preferences.defaults.SOGoMailAutoSave*60))}var vm=this;vm.autocomplete={to:{},cc:{},bcc:{}},vm.autosave=null,vm.autosaveDrafts=autosaveDrafts,vm.hideCc=!0,vm.hideBcc=!0,vm.cancel=cancel,vm.send=send,vm.contactFilter=contactFilter,vm.identities=_.pluck(_.flatten(_.pluck(stateAccounts,"identities")),"full"),vm.uploader=new FileUploader({url:stateMessage.$absolutePath({asDraft:!0})+"/save",autoUpload:!0,alias:"attachments",onProgressItem:function(item,progress){console.debug(item),console.debug(progress)},onSuccessItem:function(item,response,status,headers){stateMessage.$setUID(response.uid),stateMessage.$reload(),console.debug(item),console.debug("success = "+JSON.stringify(response,void 0,2))},onCancelItem:function(item,response,status,headers){console.debug(item),console.debug("cancel = "+JSON.stringify(response,void 0,2)),stateMessage.$deleteAttachment(item.file.name),this.removeFromQueue(item)},onErrorItem:function(item,response,status,headers){console.debug(item),console.debug("error = "+JSON.stringify(response,void 0,2))}}),"reply"==$stateParams.actionName?stateMessage.$reply().then(function(msgObject){vm.message=msgObject,vm.hideCc=!msgObject.editable.cc||0===msgObject.editable.cc.length,vm.hideBcc=!msgObject.editable.bcc||0===msgObject.editable.bcc.length}):"replyall"==$stateParams.actionName?stateMessage.$replyAll().then(function(msgObject){vm.message=msgObject,vm.hideCc=!msgObject.editable.cc||0===msgObject.editable.cc.length,vm.hideBcc=!msgObject.editable.bcc||0===msgObject.editable.bcc.length}):"forward"==$stateParams.actionName?stateMessage.$forward().then(function(msgObject){vm.message=msgObject}):angular.isDefined(stateMessage)&&(vm.message=stateMessage),angular.isDefined(stateRecipients)&&(vm.message.editable.to=_.union(vm.message.editable.to,_.pluck(stateRecipients,"full"))),Preferences.ready().then(function(){Preferences.defaults.SOGoMailAutoSave&&(vm.autosave=$timeout(vm.autosaveDrafts,1e3*Preferences.defaults.SOGoMailAutoSave*60)),vm.localeCode=Preferences.defaults.LocaleCode})}MessageEditorController.$inject=["$stateParams","$state","$q","$mdDialog","FileUploader","stateAccounts","stateMessage","stateRecipients","$timeout","encodeUriFilter","sgFocus","Dialog","Account","Mailbox","AddressBook","Preferences"],angular.module("SOGo.MailerUI").controller("MessageEditorController",MessageEditorController)}(),function(){"use strict";function sgImip(){function link(scope,iElement,attrs,ctrl){ctrl.pathToAttachment=attrs.sgImipPath}return{restrict:"A",link:link,controller:"sgImipController"}}function sgImipController($scope,User){var vm=this;$scope.delegateInvitation=!1,$scope.delegatedTo="",$scope.searchText="",$scope.userFilter=function($query){return User.$filter($query)},$scope.iCalendarAction=function(action){var data;"delegate"==action&&(data={receiveUpdates:!1,delegatedTo:$scope.delegatedTo.c_email}),$scope.viewer.message.$imipAction(vm.pathToAttachment,action,data)}}sgImipController.$inject=["$scope","User"],angular.module("SOGo.MailerUI").controller("sgImipController",sgImipController).directive("sgImip",sgImip)}(); +!function(){"use strict";function configure($stateProvider,$urlRouterProvider){$stateProvider.state("mail",{url:"/Mail",views:{mailboxes:{templateUrl:"UIxMailMainFrame",controller:"MailboxesController",controllerAs:"app"}},resolve:{stateAccounts:stateAccounts}}).state("mail.account",{url:"/:accountId","abstract":!0,views:{mailbox:{template:""}},resolve:{stateAccount:stateAccount}}).state("mail.account.mailbox",{url:"/:mailboxId",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:stateMailbox,stateMessages:stateMessages}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:stateMessage}}),$urlRouterProvider.otherwise("/Mail")}function stateAccounts($q,Account){var accounts=Account.$findAll(mailAccounts),promises=[];return angular.forEach(accounts,function(account,i){var mailboxes=account.$getMailboxes();promises.push(mailboxes.then(function(objects){return account}))}),$q.all(promises)}function stateAccount($stateParams,stateAccounts){return _.find(stateAccounts,function(account){return account.id==$stateParams.accountId})}function stateMailbox($stateParams,stateAccount,decodeUriFilter){var _find,mailboxId=decodeUriFilter($stateParams.mailboxId);return(_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==mailboxId});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox})(stateAccount.$mailboxes)}function stateMessages(stateMailbox){return stateMailbox.$filter()}function stateMessage(encodeUriFilter,$stateParams,$state,stateMailbox,stateMessages){var message=_.find(stateMailbox.$messages,function(messageObject){return messageObject.uid==$stateParams.messageId});return message?(stateMailbox.selectedMessage=$stateParams.messageId,message.$reload()):void $state.go("mail.account.mailbox",{accountId:stateMailbox.$account.id,mailboxId:encodeUriFilter(stateMailbox.path)})}function runBlock($rootScope){$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){console.error(event,current,previous,rejection)})}angular.module("SOGo.MailerUI",["ngSanitize","ui.router","ck","angularFileUpload","SOGo.Common","SOGo.ContactsUI","ngAnimate","SOGo.PreferencesUI"]).config(configure).run(runBlock),configure.$inject=["$stateProvider","$urlRouterProvider"],stateAccounts.$inject=["$q","Account"],stateAccount.$inject=["$stateParams","stateAccounts"],stateMailbox.$inject=["$stateParams","stateAccount","decodeUriFilter"],stateMessages.$inject=["stateMailbox"],stateMessage.$inject=["encodeUriFilter","$stateParams","$state","stateMailbox","stateMessages"],runBlock.$inject=["$rootScope"]}(),function(){"use strict";function MailboxController($state,$timeout,$mdDialog,stateAccounts,stateAccount,stateMailbox,encodeUriFilter,focus,Dialog,Account,Mailbox){function selectMessage(message){$state.go("mail.account.mailbox.message",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path),messageId:message.uid})}function unselectMessages(){_.each(vm.selectedFolder.$messages,function(message){message.selected=!1})}function confirmDeleteSelectedMessages(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected messages?")).then(function(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$deleteMessages(selectedUIDs).then(function(){var unseenCount=_.filter(selectedMessages,function(message){return!message.isread});vm.selectedFolder.$messages=_.difference(vm.selectedFolder.$messages,selectedMessages),vm.selectedFolder.unseenCount=-unseenCount},function(error){Dialog.alert(l("Error"),error)})})}function copySelectedMessages(folder){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$copyMessages(selectedUIDs,"/"+folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function saveSelectedMessages(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/saveMessages?uid="+selectedUIDs.join(",")}function selectAll(){_.each(vm.selectedFolder.$messages,function(message){message.selected=!0})}function markSelectedMessagesAsFlagged(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"\\Flagged","add").then(function(d){_.forEach(selectedMessages,function(message){message.isflagged=!0})})}function markSelectedMessagesAsUnread(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected}),selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"seen","remove").then(function(d){_.forEach(selectedMessages,function(message){message.isread=!1,vm.selectedFolder.unseenCount++})})}function sort(field){vm.selectedFolder.$filter({sort:field})}function sortedBy(field){return Mailbox.$query.sort==field}function cancelSearch(){vm.mode.search=!1,vm.selectedFolder.$filter()}function newMessage($event){var message=vm.account.$newMessage();$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccounts:vm.accounts,stateMessage:message,stateRecipients:[]}})}var vm=this;Mailbox.selectedFolder=stateMailbox,vm.service=Mailbox,vm.accounts=stateAccounts,vm.account=stateAccount,vm.selectedFolder=stateMailbox,vm.selectMessage=selectMessage,vm.unselectMessages=unselectMessages,vm.confirmDeleteSelectedMessages=confirmDeleteSelectedMessages,vm.copySelectedMessages=copySelectedMessages,vm.saveSelectedMessages=saveSelectedMessages,vm.markSelectedMessagesAsFlagged=markSelectedMessagesAsFlagged,vm.markSelectedMessagesAsUnread=markSelectedMessagesAsUnread,vm.selectAll=selectAll,vm.sort=sort,vm.sortedBy=sortedBy,vm.cancelSearch=cancelSearch,vm.newMessage=newMessage,vm.mode={search:!1}}MailboxController.$inject=["$state","$timeout","$mdDialog","stateAccounts","stateAccount","stateMailbox","encodeUriFilter","sgFocus","Dialog","Account","Mailbox"],angular.module("SOGo.MailerUI").controller("MailboxController",MailboxController)}(),function(){"use strict";function MailboxesController($state,$timeout,$mdDialog,focus,encodeUriFilter,Dialog,Settings,Account,Mailbox,User,Preferences,stateAccounts){function newFolder(parentFolder){Dialog.prompt(l("New folder"),l("Enter the new name of your folder :")).then(function(name){parentFolder.$newMailbox(parentFolder.id,name).then(function(){},function(data,status){Dialog.alert(l('An error occured while creating the mailbox "%{0}".',name),l(data.error))})})}function delegate(account){function MailboxDelegationController($scope,$mdDialog,User,account){function userFilter($query){return User.$filter($query,account.delegates)}function closeModal(){$mdDialog.hide()}function removeUser(user){account.$removeDelegate(user.uid)["catch"](function(data,status){Dialog.alert(l("Warning"),l("An error occured please try again."))})}function addUser(data){data&&account.$addDelegate(data).then(function(){vm.userToAdd="",vm.searchText=""},function(error){Dialog.alert(l("Warning"),error)})}var vm=this;vm.users=account.delegates,vm.account=account,vm.userToAdd="",vm.searchText="",vm.userFilter=userFilter,vm.closeModal=closeModal,vm.removeUser=removeUser,vm.addUser=addUser}$mdDialog.show({templateUrl:account.id+"/delegation",controller:MailboxDelegationController,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:User,account:account}}),MailboxDelegationController.$inject=["$scope","$mdDialog","User","account"]}function editFolder(folder){vm.editMode=folder.path,focus("mailboxName_"+folder.path)}function revertEditing(folder){folder.$reset(),vm.editMode=!1}function selectFolder(account,folder){vm.editMode!=folder.path&&(vm.editMode=!1,$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(folder.path)}))}function saveFolder(folder){folder.$rename()}function compactFolder(folder){folder.$compact().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function emptyTrashFolder(folder){folder.$emptyTrash().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function exportMails(folder){window.location.href=ApplicationBaseURL+"/"+folder.id+"/exportFolder"}function confirmDelete(folder){Dialog.confirm(l("Confirmation"),l("Do you really want to move this folder into the trash ?")).then(function(){folder.$delete().then(function(){$state.go("mail")},function(data,status){Dialog.alert(l('An error occured while deleting the mailbox "%{0}".',folder.name),l(data.error))})})}function markFolderRead(folder){folder.$markAsRead()}function share(folder){folder.$acl.$users().then(function(){$mdDialog.show({templateUrl:folder.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:folder.$acl.users,User:User,folder:folder}})})}function metadataForFolder(folder){return"inbox"==folder.type?{name:folder.name,icon:"inbox"}:"draft"==folder.type?{name:l("DraftsFolderName"),icon:"drafts"}:"sent"==folder.type?{name:l("SentFolderName"),icon:"send"}:"trash"==folder.type?{name:l("TrashFolderName"),icon:"delete"}:"additional"==folder.type?{name:folder.name,icon:"folder_shared"}:{name:folder.name,icon:"folder"}}function setFolderAs(folder,type){folder.$setFolderAs(type).then(function(){folder.$account.$getMailboxes({reload:!0})},function(error){Dialog.alert(l("Warning"),error)})}function refreshUnseenCount(){var unseenCountFolders=window.unseenCountFolders;_.forEach(vm.accounts,function(account){_.includes(unseenCountFolders,account.id+"/folderINBOX")||unseenCountFolders.push(account.id+"/folderINBOX"),_.forEach(account.$$flattenMailboxes,function(mailbox){angular.isDefined(mailbox.unseenCount)&&!_.includes(unseenCountFolders,mailbox.id)&&unseenCountFolders.push(mailbox.id)})}),Account.$$resource.post("","unseenCount",{mailboxes:unseenCountFolders}).then(function(data){_.forEach(vm.accounts,function(account){_.forEach(account.$$flattenMailboxes,function(mailbox){data[mailbox.id]&&(mailbox.unseenCount=data[mailbox.id])})})}),Preferences.ready().then(function(){var refreshViewCheck=Preferences.defaults.SOGoRefreshViewCheck;refreshViewCheck&&"manually"!=refreshViewCheck&&$timeout(vm.refreshUnseenCount,1e3*refreshViewCheck.timeInterval())})}var account,mailbox,vm=this;vm.service=Mailbox,vm.accounts=stateAccounts,vm.newFolder=newFolder,vm.delegate=delegate,vm.editFolder=editFolder,vm.revertEditing=revertEditing,vm.selectFolder=selectFolder,vm.saveFolder=saveFolder,vm.compactFolder=compactFolder,vm.emptyTrashFolder=emptyTrashFolder,vm.exportMails=exportMails,vm.confirmDelete=confirmDelete,vm.markFolderRead=markFolderRead,vm.share=share,vm.metadataForFolder=metadataForFolder,vm.setFolderAs=setFolderAs,vm.refreshUnseenCount=refreshUnseenCount,"mail"==$state.current.name&&vm.accounts.length>0&&vm.accounts[0].$mailboxes.length>0&&(account=vm.accounts[0],mailbox=account.$mailboxes[0],$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(mailbox.path)})),vm.refreshUnseenCount()}MailboxesController.$inject=["$state","$timeout","$mdDialog","sgFocus","encodeUriFilter","Dialog","sgSettings","Account","Mailbox","User","Preferences","stateAccounts"],angular.module("SOGo.MailerUI").controller("MailboxesController",MailboxesController)}(),function(){"use strict";function MessageController($scope,$state,$mdDialog,stateAccounts,stateAccount,stateMailbox,stateMessage,encodeUriFilter,focus,Dialog,Account,Mailbox,Message){function doDelete(){stateMailbox.$deleteMessages([stateMessage.uid]).then(function(){var index=_.findIndex(stateMailbox.$messages,function(o){return o.uid==stateMessage.uid});-1!=index&&stateMailbox.$messages.splice(index,1),vm.message=null,$state.go("mail.account.mailbox",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path)})})}function showMailEditor($event,message,recipients){angular.isDefined(recipients)||(recipients=[]),$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccounts:vm.accounts,stateMessage:message,stateRecipients:recipients}})}function reply($event){var message=vm.message.$reply();showMailEditor($event,message)}function replyAll($event){var message=vm.message.$replyAll();showMailEditor($event,message)}function forward($event){var message=vm.message.$forward();showMailEditor($event,message)}function edit($event){vm.message.$editableContent().then(function(){showMailEditor($event,vm.message)})}function newMessage($event,recipient){var message=vm.account.$newMessage();showMailEditor($event,message,[recipient])}function saveMessage(){window.location.href=ApplicationBaseURL+"/"+vm.mailbox.id+"/saveMessages?uid="+vm.message.uid}function viewRawSource($event){Message.$$resource.post(vm.message.id,"viewsource").then(function(data){function MessageRawSourceDialogController(scope,$mdDialog){scope.close=function(){$mdDialog.hide()}}$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:!0,escapeToClose:!0,template:[''," ","
",data,"    
","
",'
',' '+l("Close")+"","
","
"].join(""),controller:MessageRawSourceDialogController}),MessageRawSourceDialogController.$inject=["scope","$mdDialog"]})}var vm=this;vm.accounts=stateAccounts,vm.account=stateAccount,vm.mailbox=stateMailbox,vm.message=stateMessage,vm.service=Message,vm.tags={searchText:"",selected:""},vm.doDelete=doDelete,vm.reply=reply,vm.replyAll=replyAll,vm.forward=forward,vm.edit=edit,vm.newMessage=newMessage,vm.saveMessage=saveMessage,vm.viewRawSource=viewRawSource,$scope.$watchCollection("viewer.message.flags",function(oldTags,newTags){_.each(_.difference(newTags,oldTags),function(tag){vm.message.removeTag(tag)})})}MessageController.$inject=["$scope","$state","$mdDialog","stateAccounts","stateAccount","stateMailbox","stateMessage","encodeUriFilter","sgFocus","Dialog","Account","Mailbox","Message"],angular.module("SOGo.MailerUI").controller("MessageController",MessageController)}(),function(){"use strict";function MessageEditorController($stateParams,$state,$q,$mdDialog,FileUploader,stateAccounts,stateMessage,stateRecipients,$timeout,encodeUriFilter,focus,Dialog,Account,Mailbox,AddressBook,Preferences){function cancel(){vm.autosave&&$timeout.cancel(vm.autosave),$mdDialog.cancel()}function send(){vm.autosave&&$timeout.cancel(vm.autosave),vm.message.$send().then(function(data){$mdDialog.hide()},function(data){Dialog.alert(l(data.status),l(data.message))})}function contactFilter($query){var deferred=$q.defer();return AddressBook.$filterAll($query).then(function(results){deferred.resolve(_.invoke(results,"$shortFormat",$query))}),deferred.promise}function autosaveDrafts(){vm.message.$save(),Preferences.defaults.SOGoMailAutoSave&&(vm.autosave=$timeout(vm.autosaveDrafts,1e3*Preferences.defaults.SOGoMailAutoSave*60))}var vm=this;vm.autocomplete={to:{},cc:{},bcc:{}},vm.autosave=null,vm.autosaveDrafts=autosaveDrafts,vm.hideCc=!0,vm.hideBcc=!0,vm.cancel=cancel,vm.send=send,vm.contactFilter=contactFilter,vm.identities=_.pluck(_.flatten(_.pluck(stateAccounts,"identities")),"full"),vm.uploader=new FileUploader({url:stateMessage.$absolutePath({asDraft:!0})+"/save",autoUpload:!0,alias:"attachments",onProgressItem:function(item,progress){console.debug(item),console.debug(progress)},onSuccessItem:function(item,response,status,headers){stateMessage.$setUID(response.uid),stateMessage.$reload(),console.debug(item),console.debug("success = "+JSON.stringify(response,void 0,2))},onCancelItem:function(item,response,status,headers){console.debug(item),console.debug("cancel = "+JSON.stringify(response,void 0,2)),stateMessage.$deleteAttachment(item.file.name),this.removeFromQueue(item)},onErrorItem:function(item,response,status,headers){console.debug(item),console.debug("error = "+JSON.stringify(response,void 0,2))}}),"reply"==$stateParams.actionName?stateMessage.$reply().then(function(msgObject){vm.message=msgObject,vm.hideCc=!msgObject.editable.cc||0===msgObject.editable.cc.length,vm.hideBcc=!msgObject.editable.bcc||0===msgObject.editable.bcc.length}):"replyall"==$stateParams.actionName?stateMessage.$replyAll().then(function(msgObject){vm.message=msgObject,vm.hideCc=!msgObject.editable.cc||0===msgObject.editable.cc.length,vm.hideBcc=!msgObject.editable.bcc||0===msgObject.editable.bcc.length}):"forward"==$stateParams.actionName?stateMessage.$forward().then(function(msgObject){vm.message=msgObject}):angular.isDefined(stateMessage)&&(vm.message=stateMessage),angular.isDefined(stateRecipients)&&(vm.message.editable.to=_.union(vm.message.editable.to,_.pluck(stateRecipients,"full"))),Preferences.ready().then(function(){Preferences.defaults.SOGoMailAutoSave&&(vm.autosave=$timeout(vm.autosaveDrafts,1e3*Preferences.defaults.SOGoMailAutoSave*60)),vm.localeCode=Preferences.defaults.LocaleCode})}MessageEditorController.$inject=["$stateParams","$state","$q","$mdDialog","FileUploader","stateAccounts","stateMessage","stateRecipients","$timeout","encodeUriFilter","sgFocus","Dialog","Account","Mailbox","AddressBook","Preferences"],angular.module("SOGo.MailerUI").controller("MessageEditorController",MessageEditorController)}(),function(){"use strict";function sgImip(){function link(scope,iElement,attrs,ctrl){ctrl.pathToAttachment=attrs.sgImipPath}return{restrict:"A",link:link,controller:"sgImipController"}}function sgImipController($scope,User){var vm=this;$scope.delegateInvitation=!1,$scope.delegatedTo="",$scope.searchText="",$scope.userFilter=function($query){return User.$filter($query)},$scope.iCalendarAction=function(action){var data;"delegate"==action&&(data={receiveUpdates:!1,delegatedTo:$scope.delegatedTo.c_email}),$scope.viewer.message.$imipAction(vm.pathToAttachment,action,data)}}sgImipController.$inject=["$scope","User"],angular.module("SOGo.MailerUI").controller("sgImipController",sgImipController).directive("sgImip",sgImip)}(); //# sourceMappingURL=Mailer.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Mailer.js.map b/UI/WebServerResources/js/Mailer.js.map index 8ec71846f..3145f748f 100644 --- a/UI/WebServerResources/js/Mailer.js.map +++ b/UI/WebServerResources/js/Mailer.js.map @@ -1 +1 @@ -{"version":3,"file":"Mailer.js","sources":["Mailer/Mailer.app.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgIMIP.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","views","mailboxes","templateUrl","controller","controllerAs","resolve","stateAccounts","abstract","mailbox","template","stateAccount","mailbox@mail","stateMailbox","stateMessages","message","stateMessage","otherwise","$q","Account","accounts","$findAll","mailAccounts","promises","angular","forEach","account","i","$getMailboxes","push","then","objects","all","$stateParams","_","find","id","accountId","decodeUriFilter","_find","mailboxId","o","path","children","length","$mailboxes","$filter","encodeUriFilter","$state","$messages","messageObject","uid","messageId","selectedMessage","$reload","go","$account","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","module","config","run","$inject","MailboxController","$timeout","$mdDialog","focus","Dialog","Mailbox","selectMessage","unselectMessages","each","vm","selectedFolder","selected","confirmDeleteSelectedMessages","confirm","l","selectedMessages","filter","selectedUIDs","pluck","$deleteMessages","unseenCount","isread","difference","alert","copySelectedMessages","folder","$copyMessages","saveSelectedMessages","window","location","href","ApplicationBaseURL","join","selectAll","markSelectedMessagesAsFlagged","$flagMessages","d","isflagged","markSelectedMessagesAsUnread","sort","field","sortedBy","$query","cancelSearch","mode","search","newMessage","$event","$newMessage","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","stateRecipients","this","service","MailboxesController","Settings","User","Preferences","newFolder","parentFolder","prompt","name","$newMailbox","data","status","delegate","MailboxDelegationController","$scope","userFilter","delegates","closeModal","hide","removeUser","user","$removeDelegate","addUser","$addDelegate","userToAdd","searchText","users","editFolder","editMode","revertEditing","$reset","selectFolder","saveFolder","$rename","compactFolder","$compact","emptyTrashFolder","$emptyTrash","exportMails","confirmDelete","$delete","markFolderRead","$markAsRead","share","$acl","$users","usersWithACL","metadataForFolder","type","icon","setFolderAs","$setFolderAs","reload","refreshUnseenCount","unseenCountFolders","includes","$$flattenMailboxes","isDefined","$$resource","post","ready","refreshViewCheck","defaults","SOGoRefreshViewCheck","timeInterval","MessageController","Message","doDelete","index","findIndex","splice","showMailEditor","recipients","reply","$reply","replyAll","$replyAll","forward","$forward","edit","$editableContent","recipient","viewRawSource","MessageRawSourceDialogController","scope","close","tags","$watchCollection","oldTags","newTags","tag","removeTag","MessageEditorController","FileUploader","AddressBook","cancel","autosave","send","$send","contactFilter","deferred","defer","$filterAll","results","invoke","promise","autosaveDrafts","$save","SOGoMailAutoSave","autocomplete","to","cc","bcc","hideCc","hideBcc","identities","flatten","uploader","$absolutePath","asDraft","autoUpload","alias","onProgressItem","item","progress","debug","onSuccessItem","response","headers","$setUID","JSON","stringify","undefined","onCancelItem","$deleteAttachment","file","removeFromQueue","onErrorItem","actionName","msgObject","editable","union","localeCode","LocaleCode","sgImip","link","iElement","attrs","ctrl","pathToAttachment","sgImipPath","restrict","sgImipController","delegateInvitation","delegatedTo","iCalendarAction","action","receiveUpdates","c_email","viewer","$imipAction","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGo.MailerUI module */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'ngAnimate', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('mail', {\n url: '/Mail',\n views: {\n mailboxes: {\n templateUrl: 'UIxMailMainFrame', // UI/Templates/MailerUI/UIxMailMainFrame.wox\n controller: 'MailboxesController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAccounts: stateAccounts\n }\n })\n .state('mail.account', {\n url: '/:accountId',\n abstract: true,\n views: {\n mailbox: {\n template: ''\n }\n },\n resolve: {\n stateAccount: stateAccount\n }\n })\n .state('mail.account.mailbox', {\n url: '/:mailboxId',\n views: {\n 'mailbox@mail': {\n templateUrl: 'UIxMailFolderTemplate', // UI/Templates/MailerUI/UIxMailFolderTemplate.wox\n controller: 'MailboxController',\n controllerAs: 'mailbox'\n }\n },\n resolve: {\n stateMailbox: stateMailbox,\n stateMessages: stateMessages\n }\n })\n // .state('mail.account.mailbox.newMessage', {\n // url: '/new',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateMessage: stateNewMessage\n // }\n // })\n .state('mail.account.mailbox.message', {\n url: '/:messageId',\n views: {\n message: {\n templateUrl: 'UIxMailViewTemplate', // UI/Templates/MailerUI/UIxMailViewTemplate.wox\n controller: 'MessageController',\n controllerAs: 'viewer'\n }\n },\n resolve: {\n stateMessage: stateMessage\n }\n });\n // .state('mail.account.mailbox.message.edit', {\n // url: '/edit',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateContent: stateContent\n // }\n // })\n // .state('mail.account.mailbox.message.action', {\n // url: '/{actionName:(?:reply|replyall|forward)}',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // }\n // });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/Mail');\n\n // Set default configuration for tags input\n // tagsInputConfigProvider.setDefaults('tagsInput', {\n // addOnComma: false,\n // replaceSpacesWithDashes: false,\n // allowedTagsPattern: /([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)/i\n // });\n }\n\n /**\n * @ngInject\n */\n stateAccounts.$inject = ['$q', 'Account'];\n function stateAccounts($q, Account) {\n var accounts = Account.$findAll(mailAccounts),\n promises = [];\n // Fetch list of mailboxes for each account\n angular.forEach(accounts, function(account, i) {\n var mailboxes = account.$getMailboxes();\n promises.push(mailboxes.then(function(objects) {\n return account;\n }));\n });\n return $q.all(promises);\n }\n\n /**\n * @ngInject\n */\n stateAccount.$inject = ['$stateParams', 'stateAccounts'];\n function stateAccount($stateParams, stateAccounts) {\n return _.find(stateAccounts, function(account) {\n return account.id == $stateParams.accountId;\n });\n }\n\n /**\n * @ngInject\n */\n stateMailbox.$inject = ['$stateParams', 'stateAccount', 'decodeUriFilter'];\n function stateMailbox($stateParams, stateAccount, decodeUriFilter) {\n var mailboxId = decodeUriFilter($stateParams.mailboxId),\n _find;\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == mailboxId;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n return _find(stateAccount.$mailboxes);\n }\n\n /**\n * @ngInject\n */\n stateMessages.$inject = ['stateMailbox'];\n function stateMessages(stateMailbox) {\n return stateMailbox.$filter();\n }\n\n /**\n * @ngInject\n */\n // stateNewMessage.$inject = ['stateAccount'];\n // function stateNewMessage(stateAccount) {\n // return stateAccount.$newMessage();\n // }\n\n /**\n * @ngInject\n */\n stateMessage.$inject = ['encodeUriFilter', '$stateParams', '$state', 'stateMailbox', 'stateMessages'];\n function stateMessage(encodeUriFilter, $stateParams, $state, stateMailbox, stateMessages) {\n var message = _.find(stateMailbox.$messages, function(messageObject) {\n return messageObject.uid == $stateParams.messageId;\n });\n\n if (message) {\n stateMailbox.selectedMessage = $stateParams.messageId;\n return message.$reload();\n }\n else {\n // Message not found\n $state.go('mail.account.mailbox', { accountId: stateMailbox.$account.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n }\n }\n\n /**\n * @ngInject\n */\n // stateContent.$inject = ['stateMessage'];\n // function stateContent(stateMessage) {\n // return stateMessage.$editableContent();\n // }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxController.$inject = ['$state', '$timeout', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox'];\n function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) {\n var vm = this;\n\n Mailbox.selectedFolder = stateMailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.selectedFolder = stateMailbox;\n vm.selectMessage = selectMessage;\n vm.unselectMessages = unselectMessages;\n vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages;\n vm.copySelectedMessages = copySelectedMessages;\n // vm.moveSelectedMessages = moveSelectedMessages;\n vm.saveSelectedMessages = saveSelectedMessages;\n vm.markSelectedMessagesAsFlagged = markSelectedMessagesAsFlagged;\n vm.markSelectedMessagesAsUnread = markSelectedMessagesAsUnread;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.newMessage = newMessage;\n vm.mode = { search: false };\n\n function selectMessage(message) {\n $state.go('mail.account.mailbox.message', {accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path), messageId: message.uid});\n }\n\n function unselectMessages() {\n _.each(vm.selectedFolder.$messages, function(message) { message.selected = false; });\n }\n\n function confirmDeleteSelectedMessages() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected messages?'))\n .then(function() {\n // User confirmed the deletion\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$deleteMessages(selectedUIDs).then(function() {\n // Decrement the unseenCount accordingly\n var unseenCount = _.filter(selectedMessages, function(message) { return !message.isread; });\n vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n vm.selectedFolder.unseenCount =- unseenCount;\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n });\n }\n\n function copySelectedMessages(folder) {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$copyMessages(selectedUIDs, '/' + folder).then(function() {\n // TODO: refresh target mailbox?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n // function moveSelectedMessages(folder) {\n // var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected });\n // var selectedUIDs = _.pluck(selectedMessages, 'uid');\n // vm.selectedFolder.$moveMessages(selectedUIDs, '/' + folder).then(function() {\n // // TODO: refresh target mailbox?\n // vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n // });\n // }\n\n function saveSelectedMessages() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/saveMessages?uid=' + selectedUIDs.join(\",\");\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.$messages, function(message) {\n message.selected = true;\n });\n }\n\n function markSelectedMessagesAsFlagged() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, '\\\\Flagged', 'add').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isflagged = true;\n });\n });\n }\n\n function markSelectedMessagesAsUnread() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, 'seen', 'remove').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isread = false;\n vm.selectedFolder.unseenCount++;\n });\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter({ sort: field });\n }\n\n function sortedBy(field) {\n return Mailbox.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter();\n }\n\n function newMessage($event) {\n var message = vm.account.$newMessage();\n\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: message,\n stateRecipients: [] \n }\n });\n }\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxController', MailboxController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxesController.$inject = ['$state', '$timeout', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'Preferences', 'stateAccounts'];\n function MailboxesController($state, $timeout, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, Preferences, stateAccounts) {\n var vm = this,\n account,\n mailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.newFolder = newFolder;\n vm.delegate = delegate;\n vm.editFolder = editFolder;\n vm.revertEditing = revertEditing;\n vm.selectFolder = selectFolder;\n vm.saveFolder = saveFolder;\n vm.compactFolder = compactFolder;\n vm.emptyTrashFolder = emptyTrashFolder;\n vm.exportMails = exportMails;\n vm.confirmDelete = confirmDelete;\n vm.markFolderRead = markFolderRead;\n vm.share = share;\n vm.metadataForFolder = metadataForFolder;\n vm.setFolderAs = setFolderAs;\n vm.refreshUnseenCount = refreshUnseenCount;\n\n if ($state.current.name == 'mail' && vm.accounts.length > 0 && vm.accounts[0].$mailboxes.length > 0) {\n // Redirect to first mailbox of first account if no mailbox is selected\n account = vm.accounts[0];\n mailbox = account.$mailboxes[0];\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(mailbox.path) });\n }\n\n function newFolder(parentFolder) {\n Dialog.prompt(l('New folder'),\n l('Enter the new name of your folder :'))\n .then(function(name) {\n parentFolder.$newMailbox(parentFolder.id, name)\n .then(function() {\n // success\n }, function(data, status) {\n Dialog.alert(l('An error occured while creating the mailbox \"%{0}\".', name),\n l(data.error));\n });\n });\n }\n\n function delegate(account) {\n $mdDialog.show({\n templateUrl: account.id + '/delegation', // UI/Templates/MailerUI/UIxMailUserDelegation.wox\n controller: MailboxDelegationController,\n controllerAs: 'delegate',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n User: User,\n account: account\n }\n });\n\n /**\n * @ngInject\n */\n MailboxDelegationController.$inject = ['$scope', '$mdDialog', 'User', 'account'];\n function MailboxDelegationController($scope, $mdDialog, User, account) {\n var vm = this;\n\n vm.users = account.delegates;\n vm.account = account;\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.closeModal = closeModal;\n vm.removeUser = removeUser;\n vm.addUser = addUser;\n\n function userFilter($query) {\n return User.$filter($query, account.delegates);\n }\n\n function closeModal() {\n $mdDialog.hide();\n }\n\n function removeUser(user) {\n account.$removeDelegate(user.uid).catch(function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function addUser(data) {\n if (data) {\n account.$addDelegate(data).then(function() {\n vm.userToAdd = '';\n vm.searchText = '';\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n }\n }\n } // delegate\n\n function editFolder(folder) {\n vm.editMode = folder.path;\n focus('mailboxName_' + folder.path);\n }\n\n function revertEditing(folder) {\n folder.$reset();\n vm.editMode = false;\n }\n\n function selectFolder(account, folder) {\n if (vm.editMode == folder.path)\n return;\n vm.editMode = false;\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(folder.path) });\n }\n\n function saveFolder(folder) {\n folder.$rename();\n }\n\n function compactFolder(folder) {\n folder.$compact().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function emptyTrashFolder(folder) {\n folder.$emptyTrash().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function exportMails(folder) {\n window.location.href = ApplicationBaseURL + '/' + folder.id + '/exportFolder';\n }\n\n function confirmDelete(folder) {\n Dialog.confirm(l('Confirmation'), l('Do you really want to move this folder into the trash ?'))\n .then(function() {\n folder.$delete()\n .then(function() {\n $state.go('mail');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the mailbox \"%{0}\".', folder.name),\n l(data.error));\n });\n });\n }\n\n function markFolderRead(folder) {\n folder.$markAsRead();\n }\n\n function share(folder) {\n // Fetch list of ACL users\n folder.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: folder.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: folder.$acl.users,\n User: User,\n folder: folder\n }\n });\n });\n } // share\n\n function metadataForFolder(folder) {\n if (folder.type == 'inbox')\n return {name: folder.name, icon:'inbox'};\n else if (folder.type == 'draft')\n return {name: l('DraftsFolderName'), icon: 'drafts'};\n else if (folder.type == 'sent')\n return {name: l('SentFolderName'), icon: 'send'};\n else if (folder.type == 'trash')\n return {name: l('TrashFolderName'), icon: 'delete'};\n else if (folder.type == 'additional')\n return {name: folder.name, icon: 'folder_shared'};\n\n //if ($rootScope.currentFolder == folder)\n // return 'folder_open';\n\n return {name: folder.name, icon: 'folder'};\n }\n\n function setFolderAs(folder, type) {\n folder.$setFolderAs(type).then(function() {\n folder.$account.$getMailboxes({reload: true});\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function refreshUnseenCount() {\n var unseenCountFolders = window.unseenCountFolders;\n\n _.forEach(vm.accounts, function(account) {\n\n // Always include the INBOX\n if (!_.includes(unseenCountFolders, account.id + '/folderINBOX'))\n unseenCountFolders.push(account.id + '/folderINBOX');\n\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (angular.isDefined(mailbox.unseenCount) &&\n !_.includes(unseenCountFolders, mailbox.id))\n unseenCountFolders.push(mailbox.id);\n });\n });\n\n Account.$$resource.post('', 'unseenCount', {mailboxes: unseenCountFolders}).then(function(data) {\n _.forEach(vm.accounts, function(account) {\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (data[mailbox.id])\n mailbox.unseenCount = data[mailbox.id];\n });\n });\n });\n\n Preferences.ready().then(function() {\n var refreshViewCheck = Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually')\n $timeout(vm.refreshUnseenCount, refreshViewCheck.timeInterval()*1000);\n });\n }\n\n vm.refreshUnseenCount();\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxesController', MailboxesController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageController.$inject = ['$scope', '$state', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'Message'];\n function MessageController($scope, $state, $mdDialog, stateAccounts, stateAccount, stateMailbox, stateMessage, encodeUriFilter, focus, Dialog, Account, Mailbox, Message) {\n var vm = this;\n\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.mailbox = stateMailbox;\n vm.message = stateMessage;\n vm.service = Message;\n vm.tags = { searchText: '', selected: '' };\n vm.doDelete = doDelete;\n vm.reply = reply;\n vm.replyAll = replyAll;\n vm.forward = forward;\n vm.edit = edit;\n vm.newMessage = newMessage;\n vm.viewRawSource = viewRawSource;\n\n // Watch the message model \"flags\" attribute to remove on-the-fly a tag from the IMAP message\n // when removed from the message viewer.\n // TODO: this approach should be reviewed once md-chips supports ng-change.\n $scope.$watchCollection('viewer.message.flags', function(oldTags, newTags) {\n _.each(_.difference(newTags, oldTags), function(tag) {\n vm.message.removeTag(tag);\n });\n });\n\n function doDelete() {\n stateMailbox.$deleteMessages([stateMessage.uid]).then(function() {\n // Remove message from list of messages\n var index = _.findIndex(stateMailbox.$messages, function(o) {\n return o.uid == stateMessage.uid;\n });\n if (index != -1)\n stateMailbox.$messages.splice(index, 1);\n // Remove message object from scope\n vm.message = null;\n $state.go('mail.account.mailbox', { accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n });\n }\n\n function showMailEditor($event, message, recipients) {\n\n if (!angular.isDefined(recipients))\n recipients = [];\n\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: message,\n stateRecipients: recipients\n }\n });\n }\n\n function reply($event) {\n var message = vm.message.$reply();\n showMailEditor($event, message);\n }\n\n function replyAll($event) {\n var message = vm.message.$replyAll();\n showMailEditor($event, message);\n }\n\n function forward($event) {\n var message = vm.message.$forward();\n showMailEditor($event, message);\n }\n\n function edit($event) {\n vm.message.$editableContent().then(function() {\n showMailEditor($event, vm.message);\n });\n }\n\n function newMessage($event, recipient) {\n var message = vm.account.$newMessage();\n showMailEditor($event, message, [recipient]);\n }\n\n\n function viewRawSource($event) {\n Message.$$resource.post(vm.message.id, \"viewsource\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: MessageRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n MessageRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function MessageRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n \n angular\n .module('SOGo.MailerUI') \n .controller('MessageController', MessageController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageEditorController.$inject = ['$stateParams', '$state', '$q', '$mdDialog', 'FileUploader', 'stateAccounts', 'stateMessage', 'stateRecipients', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences'];\n function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, stateRecipients, $timeout, encodeUriFilter, focus, Dialog, Account, Mailbox, AddressBook, Preferences) {\n var vm = this;\n\n vm.autocomplete = {to: {}, cc: {}, bcc: {}};\n vm.autosave = null;\n vm.autosaveDrafts = autosaveDrafts;\n vm.hideCc = true;\n vm.hideBcc = true;\n vm.cancel = cancel;\n vm.send = send;\n vm.contactFilter = contactFilter;\n vm.identities = _.pluck(_.flatten(_.pluck(stateAccounts, 'identities')), 'full');\n vm.uploader = new FileUploader({\n url: stateMessage.$absolutePath({asDraft: true}) + '/save',\n autoUpload: true,\n alias: 'attachments',\n onProgressItem: function(item, progress) {\n console.debug(item); console.debug(progress);\n },\n onSuccessItem: function(item, response, status, headers) {\n stateMessage.$setUID(response.uid);\n stateMessage.$reload();\n console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));\n },\n onCancelItem: function(item, response, status, headers) {\n console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));\n\n // We remove the attachment\n stateMessage.$deleteAttachment(item.file.name);\n this.removeFromQueue(item);\n },\n onErrorItem: function(item, response, status, headers) {\n console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));\n }\n });\n\n if ($stateParams.actionName == 'reply') {\n stateMessage.$reply().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'replyall') {\n stateMessage.$replyAll().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'forward') {\n stateMessage.$forward().then(function(msgObject) {\n vm.message = msgObject;\n });\n }\n else if (angular.isDefined(stateMessage)) {\n vm.message = stateMessage;\n }\n\n if (angular.isDefined(stateRecipients)) {\n vm.message.editable.to = _.union(vm.message.editable.to, _.pluck(stateRecipients, 'full'));\n }\n\n function cancel() {\n // TODO: delete draft?\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n $mdDialog.cancel();\n }\n\n function send() {\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n vm.message.$send().then(function(data) {\n $mdDialog.hide();\n }, function(data) {\n Dialog.alert(l(data.status), l(data.message));\n });\n }\n\n function contactFilter($query) {\n var deferred = $q.defer();\n AddressBook.$filterAll($query).then(function(results) {\n deferred.resolve(_.invoke(results, '$shortFormat', $query));\n });\n return deferred.promise;\n }\n\n // Drafts autosaving\n function autosaveDrafts() {\n vm.message.$save();\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n }\n\n // Select list based on user's settings\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n vm.localeCode = Preferences.defaults.LocaleCode;\n });\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MessageEditorController', MessageEditorController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /**\n * sgIMIP - A directive to handle IMIP actions on emails\n * @memberof SOGo.MailerUI\n * @example:\n\n */\n function sgImip() {\n return {\n restrict: 'A',\n link: link,\n controller: 'sgImipController'\n };\n\n function link(scope, iElement, attrs, ctrl) {\n ctrl.pathToAttachment = attrs.sgImipPath;\n }\n }\n\n /**\n * @ngInject\n */\n sgImipController.$inject = ['$scope', 'User'];\n function sgImipController($scope, User) {\n var vm = this;\n\n $scope.delegateInvitation = false;\n $scope.delegatedTo = '';\n $scope.searchText = '';\n\n $scope.userFilter = function($query) {\n return User.$filter($query);\n };\n\n $scope.iCalendarAction = function(action) {\n var data;\n\n if (action == 'delegate') {\n data = {\n receiveUpdates: false,\n delegatedTo: $scope.delegatedTo.c_email\n };\n }\n\n $scope.viewer.message.$imipAction(vm.pathToAttachment, action, data);\n };\n }\n\n angular\n .module('SOGo.MailerUI')\n .controller('sgImipController', sgImipController)\n .directive('sgImip', sgImip);\n})();\n\n"]} \ No newline at end of file +{"version":3,"file":"Mailer.js","sources":["Mailer/Mailer.app.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgIMIP.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","views","mailboxes","templateUrl","controller","controllerAs","resolve","stateAccounts","abstract","mailbox","template","stateAccount","mailbox@mail","stateMailbox","stateMessages","message","stateMessage","otherwise","$q","Account","accounts","$findAll","mailAccounts","promises","angular","forEach","account","i","$getMailboxes","push","then","objects","all","$stateParams","_","find","id","accountId","decodeUriFilter","_find","mailboxId","o","path","children","length","$mailboxes","$filter","encodeUriFilter","$state","$messages","messageObject","uid","messageId","selectedMessage","$reload","go","$account","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","module","config","run","$inject","MailboxController","$timeout","$mdDialog","focus","Dialog","Mailbox","selectMessage","unselectMessages","each","vm","selectedFolder","selected","confirmDeleteSelectedMessages","confirm","l","selectedMessages","filter","selectedUIDs","pluck","$deleteMessages","unseenCount","isread","difference","alert","copySelectedMessages","folder","$copyMessages","saveSelectedMessages","window","location","href","ApplicationBaseURL","join","selectAll","markSelectedMessagesAsFlagged","$flagMessages","d","isflagged","markSelectedMessagesAsUnread","sort","field","sortedBy","$query","cancelSearch","mode","search","newMessage","$event","$newMessage","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","stateRecipients","this","service","MailboxesController","Settings","User","Preferences","newFolder","parentFolder","prompt","name","$newMailbox","data","status","delegate","MailboxDelegationController","$scope","userFilter","delegates","closeModal","hide","removeUser","user","$removeDelegate","addUser","$addDelegate","userToAdd","searchText","users","editFolder","editMode","revertEditing","$reset","selectFolder","saveFolder","$rename","compactFolder","$compact","emptyTrashFolder","$emptyTrash","exportMails","confirmDelete","$delete","markFolderRead","$markAsRead","share","$acl","$users","usersWithACL","metadataForFolder","type","icon","setFolderAs","$setFolderAs","reload","refreshUnseenCount","unseenCountFolders","includes","$$flattenMailboxes","isDefined","$$resource","post","ready","refreshViewCheck","defaults","SOGoRefreshViewCheck","timeInterval","MessageController","Message","doDelete","index","findIndex","splice","showMailEditor","recipients","reply","$reply","replyAll","$replyAll","forward","$forward","edit","$editableContent","recipient","saveMessage","viewRawSource","MessageRawSourceDialogController","scope","close","tags","$watchCollection","oldTags","newTags","tag","removeTag","MessageEditorController","FileUploader","AddressBook","cancel","autosave","send","$send","contactFilter","deferred","defer","$filterAll","results","invoke","promise","autosaveDrafts","$save","SOGoMailAutoSave","autocomplete","to","cc","bcc","hideCc","hideBcc","identities","flatten","uploader","$absolutePath","asDraft","autoUpload","alias","onProgressItem","item","progress","debug","onSuccessItem","response","headers","$setUID","JSON","stringify","undefined","onCancelItem","$deleteAttachment","file","removeFromQueue","onErrorItem","actionName","msgObject","editable","union","localeCode","LocaleCode","sgImip","link","iElement","attrs","ctrl","pathToAttachment","sgImipPath","restrict","sgImipController","delegateInvitation","delegatedTo","iCalendarAction","action","receiveUpdates","c_email","viewer","$imipAction","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGo.MailerUI module */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'ngAnimate', 'SOGo.PreferencesUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('mail', {\n url: '/Mail',\n views: {\n mailboxes: {\n templateUrl: 'UIxMailMainFrame', // UI/Templates/MailerUI/UIxMailMainFrame.wox\n controller: 'MailboxesController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAccounts: stateAccounts\n }\n })\n .state('mail.account', {\n url: '/:accountId',\n abstract: true,\n views: {\n mailbox: {\n template: ''\n }\n },\n resolve: {\n stateAccount: stateAccount\n }\n })\n .state('mail.account.mailbox', {\n url: '/:mailboxId',\n views: {\n 'mailbox@mail': {\n templateUrl: 'UIxMailFolderTemplate', // UI/Templates/MailerUI/UIxMailFolderTemplate.wox\n controller: 'MailboxController',\n controllerAs: 'mailbox'\n }\n },\n resolve: {\n stateMailbox: stateMailbox,\n stateMessages: stateMessages\n }\n })\n // .state('mail.account.mailbox.newMessage', {\n // url: '/new',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateMessage: stateNewMessage\n // }\n // })\n .state('mail.account.mailbox.message', {\n url: '/:messageId',\n views: {\n message: {\n templateUrl: 'UIxMailViewTemplate', // UI/Templates/MailerUI/UIxMailViewTemplate.wox\n controller: 'MessageController',\n controllerAs: 'viewer'\n }\n },\n resolve: {\n stateMessage: stateMessage\n }\n });\n // .state('mail.account.mailbox.message.edit', {\n // url: '/edit',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateContent: stateContent\n // }\n // })\n // .state('mail.account.mailbox.message.action', {\n // url: '/{actionName:(?:reply|replyall|forward)}',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // }\n // });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/Mail');\n\n // Set default configuration for tags input\n // tagsInputConfigProvider.setDefaults('tagsInput', {\n // addOnComma: false,\n // replaceSpacesWithDashes: false,\n // allowedTagsPattern: /([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)/i\n // });\n }\n\n /**\n * @ngInject\n */\n stateAccounts.$inject = ['$q', 'Account'];\n function stateAccounts($q, Account) {\n var accounts = Account.$findAll(mailAccounts),\n promises = [];\n // Fetch list of mailboxes for each account\n angular.forEach(accounts, function(account, i) {\n var mailboxes = account.$getMailboxes();\n promises.push(mailboxes.then(function(objects) {\n return account;\n }));\n });\n return $q.all(promises);\n }\n\n /**\n * @ngInject\n */\n stateAccount.$inject = ['$stateParams', 'stateAccounts'];\n function stateAccount($stateParams, stateAccounts) {\n return _.find(stateAccounts, function(account) {\n return account.id == $stateParams.accountId;\n });\n }\n\n /**\n * @ngInject\n */\n stateMailbox.$inject = ['$stateParams', 'stateAccount', 'decodeUriFilter'];\n function stateMailbox($stateParams, stateAccount, decodeUriFilter) {\n var mailboxId = decodeUriFilter($stateParams.mailboxId),\n _find;\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == mailboxId;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n return _find(stateAccount.$mailboxes);\n }\n\n /**\n * @ngInject\n */\n stateMessages.$inject = ['stateMailbox'];\n function stateMessages(stateMailbox) {\n return stateMailbox.$filter();\n }\n\n /**\n * @ngInject\n */\n // stateNewMessage.$inject = ['stateAccount'];\n // function stateNewMessage(stateAccount) {\n // return stateAccount.$newMessage();\n // }\n\n /**\n * @ngInject\n */\n stateMessage.$inject = ['encodeUriFilter', '$stateParams', '$state', 'stateMailbox', 'stateMessages'];\n function stateMessage(encodeUriFilter, $stateParams, $state, stateMailbox, stateMessages) {\n var message = _.find(stateMailbox.$messages, function(messageObject) {\n return messageObject.uid == $stateParams.messageId;\n });\n\n if (message) {\n stateMailbox.selectedMessage = $stateParams.messageId;\n return message.$reload();\n }\n else {\n // Message not found\n $state.go('mail.account.mailbox', { accountId: stateMailbox.$account.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n }\n }\n\n /**\n * @ngInject\n */\n // stateContent.$inject = ['stateMessage'];\n // function stateContent(stateMessage) {\n // return stateMessage.$editableContent();\n // }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxController.$inject = ['$state', '$timeout', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox'];\n function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) {\n var vm = this;\n\n Mailbox.selectedFolder = stateMailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.selectedFolder = stateMailbox;\n vm.selectMessage = selectMessage;\n vm.unselectMessages = unselectMessages;\n vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages;\n vm.copySelectedMessages = copySelectedMessages;\n // vm.moveSelectedMessages = moveSelectedMessages;\n vm.saveSelectedMessages = saveSelectedMessages;\n vm.markSelectedMessagesAsFlagged = markSelectedMessagesAsFlagged;\n vm.markSelectedMessagesAsUnread = markSelectedMessagesAsUnread;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.newMessage = newMessage;\n vm.mode = { search: false };\n\n function selectMessage(message) {\n $state.go('mail.account.mailbox.message', {accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path), messageId: message.uid});\n }\n\n function unselectMessages() {\n _.each(vm.selectedFolder.$messages, function(message) { message.selected = false; });\n }\n\n function confirmDeleteSelectedMessages() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected messages?'))\n .then(function() {\n // User confirmed the deletion\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$deleteMessages(selectedUIDs).then(function() {\n // Decrement the unseenCount accordingly\n var unseenCount = _.filter(selectedMessages, function(message) { return !message.isread; });\n vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n vm.selectedFolder.unseenCount =- unseenCount;\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n });\n }\n\n function copySelectedMessages(folder) {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$copyMessages(selectedUIDs, '/' + folder).then(function() {\n // TODO: refresh target mailbox?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n // function moveSelectedMessages(folder) {\n // var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected });\n // var selectedUIDs = _.pluck(selectedMessages, 'uid');\n // vm.selectedFolder.$moveMessages(selectedUIDs, '/' + folder).then(function() {\n // // TODO: refresh target mailbox?\n // vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n // });\n // }\n\n function saveSelectedMessages() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/saveMessages?uid=' + selectedUIDs.join(\",\");\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.$messages, function(message) {\n message.selected = true;\n });\n }\n\n function markSelectedMessagesAsFlagged() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, '\\\\Flagged', 'add').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isflagged = true;\n });\n });\n }\n\n function markSelectedMessagesAsUnread() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, 'seen', 'remove').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isread = false;\n vm.selectedFolder.unseenCount++;\n });\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter({ sort: field });\n }\n\n function sortedBy(field) {\n return Mailbox.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter();\n }\n\n function newMessage($event) {\n var message = vm.account.$newMessage();\n\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: message,\n stateRecipients: [] \n }\n });\n }\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxController', MailboxController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxesController.$inject = ['$state', '$timeout', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'Preferences', 'stateAccounts'];\n function MailboxesController($state, $timeout, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, Preferences, stateAccounts) {\n var vm = this,\n account,\n mailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.newFolder = newFolder;\n vm.delegate = delegate;\n vm.editFolder = editFolder;\n vm.revertEditing = revertEditing;\n vm.selectFolder = selectFolder;\n vm.saveFolder = saveFolder;\n vm.compactFolder = compactFolder;\n vm.emptyTrashFolder = emptyTrashFolder;\n vm.exportMails = exportMails;\n vm.confirmDelete = confirmDelete;\n vm.markFolderRead = markFolderRead;\n vm.share = share;\n vm.metadataForFolder = metadataForFolder;\n vm.setFolderAs = setFolderAs;\n vm.refreshUnseenCount = refreshUnseenCount;\n\n if ($state.current.name == 'mail' && vm.accounts.length > 0 && vm.accounts[0].$mailboxes.length > 0) {\n // Redirect to first mailbox of first account if no mailbox is selected\n account = vm.accounts[0];\n mailbox = account.$mailboxes[0];\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(mailbox.path) });\n }\n\n function newFolder(parentFolder) {\n Dialog.prompt(l('New folder'),\n l('Enter the new name of your folder :'))\n .then(function(name) {\n parentFolder.$newMailbox(parentFolder.id, name)\n .then(function() {\n // success\n }, function(data, status) {\n Dialog.alert(l('An error occured while creating the mailbox \"%{0}\".', name),\n l(data.error));\n });\n });\n }\n\n function delegate(account) {\n $mdDialog.show({\n templateUrl: account.id + '/delegation', // UI/Templates/MailerUI/UIxMailUserDelegation.wox\n controller: MailboxDelegationController,\n controllerAs: 'delegate',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n User: User,\n account: account\n }\n });\n\n /**\n * @ngInject\n */\n MailboxDelegationController.$inject = ['$scope', '$mdDialog', 'User', 'account'];\n function MailboxDelegationController($scope, $mdDialog, User, account) {\n var vm = this;\n\n vm.users = account.delegates;\n vm.account = account;\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.closeModal = closeModal;\n vm.removeUser = removeUser;\n vm.addUser = addUser;\n\n function userFilter($query) {\n return User.$filter($query, account.delegates);\n }\n\n function closeModal() {\n $mdDialog.hide();\n }\n\n function removeUser(user) {\n account.$removeDelegate(user.uid).catch(function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function addUser(data) {\n if (data) {\n account.$addDelegate(data).then(function() {\n vm.userToAdd = '';\n vm.searchText = '';\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n }\n }\n } // delegate\n\n function editFolder(folder) {\n vm.editMode = folder.path;\n focus('mailboxName_' + folder.path);\n }\n\n function revertEditing(folder) {\n folder.$reset();\n vm.editMode = false;\n }\n\n function selectFolder(account, folder) {\n if (vm.editMode == folder.path)\n return;\n vm.editMode = false;\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(folder.path) });\n }\n\n function saveFolder(folder) {\n folder.$rename();\n }\n\n function compactFolder(folder) {\n folder.$compact().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function emptyTrashFolder(folder) {\n folder.$emptyTrash().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function exportMails(folder) {\n window.location.href = ApplicationBaseURL + '/' + folder.id + '/exportFolder';\n }\n\n function confirmDelete(folder) {\n Dialog.confirm(l('Confirmation'), l('Do you really want to move this folder into the trash ?'))\n .then(function() {\n folder.$delete()\n .then(function() {\n $state.go('mail');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the mailbox \"%{0}\".', folder.name),\n l(data.error));\n });\n });\n }\n\n function markFolderRead(folder) {\n folder.$markAsRead();\n }\n\n function share(folder) {\n // Fetch list of ACL users\n folder.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: folder.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: folder.$acl.users,\n User: User,\n folder: folder\n }\n });\n });\n } // share\n\n function metadataForFolder(folder) {\n if (folder.type == 'inbox')\n return {name: folder.name, icon:'inbox'};\n else if (folder.type == 'draft')\n return {name: l('DraftsFolderName'), icon: 'drafts'};\n else if (folder.type == 'sent')\n return {name: l('SentFolderName'), icon: 'send'};\n else if (folder.type == 'trash')\n return {name: l('TrashFolderName'), icon: 'delete'};\n else if (folder.type == 'additional')\n return {name: folder.name, icon: 'folder_shared'};\n\n //if ($rootScope.currentFolder == folder)\n // return 'folder_open';\n\n return {name: folder.name, icon: 'folder'};\n }\n\n function setFolderAs(folder, type) {\n folder.$setFolderAs(type).then(function() {\n folder.$account.$getMailboxes({reload: true});\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function refreshUnseenCount() {\n var unseenCountFolders = window.unseenCountFolders;\n\n _.forEach(vm.accounts, function(account) {\n\n // Always include the INBOX\n if (!_.includes(unseenCountFolders, account.id + '/folderINBOX'))\n unseenCountFolders.push(account.id + '/folderINBOX');\n\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (angular.isDefined(mailbox.unseenCount) &&\n !_.includes(unseenCountFolders, mailbox.id))\n unseenCountFolders.push(mailbox.id);\n });\n });\n\n Account.$$resource.post('', 'unseenCount', {mailboxes: unseenCountFolders}).then(function(data) {\n _.forEach(vm.accounts, function(account) {\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (data[mailbox.id])\n mailbox.unseenCount = data[mailbox.id];\n });\n });\n });\n\n Preferences.ready().then(function() {\n var refreshViewCheck = Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually')\n $timeout(vm.refreshUnseenCount, refreshViewCheck.timeInterval()*1000);\n });\n }\n\n vm.refreshUnseenCount();\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxesController', MailboxesController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageController.$inject = ['$scope', '$state', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'Message'];\n function MessageController($scope, $state, $mdDialog, stateAccounts, stateAccount, stateMailbox, stateMessage, encodeUriFilter, focus, Dialog, Account, Mailbox, Message) {\n var vm = this;\n\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.mailbox = stateMailbox;\n vm.message = stateMessage;\n vm.service = Message;\n vm.tags = { searchText: '', selected: '' };\n vm.doDelete = doDelete;\n vm.reply = reply;\n vm.replyAll = replyAll;\n vm.forward = forward;\n vm.edit = edit;\n vm.newMessage = newMessage;\n vm.saveMessage = saveMessage;\n vm.viewRawSource = viewRawSource;\n\n // Watch the message model \"flags\" attribute to remove on-the-fly a tag from the IMAP message\n // when removed from the message viewer.\n // TODO: this approach should be reviewed once md-chips supports ng-change.\n $scope.$watchCollection('viewer.message.flags', function(oldTags, newTags) {\n _.each(_.difference(newTags, oldTags), function(tag) {\n vm.message.removeTag(tag);\n });\n });\n\n function doDelete() {\n stateMailbox.$deleteMessages([stateMessage.uid]).then(function() {\n // Remove message from list of messages\n var index = _.findIndex(stateMailbox.$messages, function(o) {\n return o.uid == stateMessage.uid;\n });\n if (index != -1)\n stateMailbox.$messages.splice(index, 1);\n // Remove message object from scope\n vm.message = null;\n $state.go('mail.account.mailbox', { accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n });\n }\n\n function showMailEditor($event, message, recipients) {\n\n if (!angular.isDefined(recipients))\n recipients = [];\n\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: message,\n stateRecipients: recipients\n }\n });\n }\n\n function reply($event) {\n var message = vm.message.$reply();\n showMailEditor($event, message);\n }\n\n function replyAll($event) {\n var message = vm.message.$replyAll();\n showMailEditor($event, message);\n }\n\n function forward($event) {\n var message = vm.message.$forward();\n showMailEditor($event, message);\n }\n\n function edit($event) {\n vm.message.$editableContent().then(function() {\n showMailEditor($event, vm.message);\n });\n }\n\n function newMessage($event, recipient) {\n var message = vm.account.$newMessage();\n showMailEditor($event, message, [recipient]);\n }\n\n function saveMessage() {\n window.location.href = ApplicationBaseURL + '/' + vm.mailbox.id + '/saveMessages?uid=' + vm.message.uid;\n }\n\n function viewRawSource($event) {\n Message.$$resource.post(vm.message.id, \"viewsource\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '',\n ' ',\n '
',\n            data,\n            '    
',\n '
',\n '
',\n ' ' + l('Close') + '',\n '
',\n '
'\n ].join(''),\n controller: MessageRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n MessageRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function MessageRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n \n angular\n .module('SOGo.MailerUI') \n .controller('MessageController', MessageController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageEditorController.$inject = ['$stateParams', '$state', '$q', '$mdDialog', 'FileUploader', 'stateAccounts', 'stateMessage', 'stateRecipients', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences'];\n function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, stateRecipients, $timeout, encodeUriFilter, focus, Dialog, Account, Mailbox, AddressBook, Preferences) {\n var vm = this;\n\n vm.autocomplete = {to: {}, cc: {}, bcc: {}};\n vm.autosave = null;\n vm.autosaveDrafts = autosaveDrafts;\n vm.hideCc = true;\n vm.hideBcc = true;\n vm.cancel = cancel;\n vm.send = send;\n vm.contactFilter = contactFilter;\n vm.identities = _.pluck(_.flatten(_.pluck(stateAccounts, 'identities')), 'full');\n vm.uploader = new FileUploader({\n url: stateMessage.$absolutePath({asDraft: true}) + '/save',\n autoUpload: true,\n alias: 'attachments',\n onProgressItem: function(item, progress) {\n console.debug(item); console.debug(progress);\n },\n onSuccessItem: function(item, response, status, headers) {\n stateMessage.$setUID(response.uid);\n stateMessage.$reload();\n console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));\n },\n onCancelItem: function(item, response, status, headers) {\n console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));\n\n // We remove the attachment\n stateMessage.$deleteAttachment(item.file.name);\n this.removeFromQueue(item);\n },\n onErrorItem: function(item, response, status, headers) {\n console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));\n }\n });\n\n if ($stateParams.actionName == 'reply') {\n stateMessage.$reply().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'replyall') {\n stateMessage.$replyAll().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'forward') {\n stateMessage.$forward().then(function(msgObject) {\n vm.message = msgObject;\n });\n }\n else if (angular.isDefined(stateMessage)) {\n vm.message = stateMessage;\n }\n\n if (angular.isDefined(stateRecipients)) {\n vm.message.editable.to = _.union(vm.message.editable.to, _.pluck(stateRecipients, 'full'));\n }\n\n function cancel() {\n // TODO: delete draft?\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n $mdDialog.cancel();\n }\n\n function send() {\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n vm.message.$send().then(function(data) {\n $mdDialog.hide();\n }, function(data) {\n Dialog.alert(l(data.status), l(data.message));\n });\n }\n\n function contactFilter($query) {\n var deferred = $q.defer();\n AddressBook.$filterAll($query).then(function(results) {\n deferred.resolve(_.invoke(results, '$shortFormat', $query));\n });\n return deferred.promise;\n }\n\n // Drafts autosaving\n function autosaveDrafts() {\n vm.message.$save();\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n }\n\n // Select list based on user's settings\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n vm.localeCode = Preferences.defaults.LocaleCode;\n });\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MessageEditorController', MessageEditorController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /**\n * sgIMIP - A directive to handle IMIP actions on emails\n * @memberof SOGo.MailerUI\n * @example:\n\n */\n function sgImip() {\n return {\n restrict: 'A',\n link: link,\n controller: 'sgImipController'\n };\n\n function link(scope, iElement, attrs, ctrl) {\n ctrl.pathToAttachment = attrs.sgImipPath;\n }\n }\n\n /**\n * @ngInject\n */\n sgImipController.$inject = ['$scope', 'User'];\n function sgImipController($scope, User) {\n var vm = this;\n\n $scope.delegateInvitation = false;\n $scope.delegatedTo = '';\n $scope.searchText = '';\n\n $scope.userFilter = function($query) {\n return User.$filter($query);\n };\n\n $scope.iCalendarAction = function(action) {\n var data;\n\n if (action == 'delegate') {\n data = {\n receiveUpdates: false,\n delegatedTo: $scope.delegatedTo.c_email\n };\n }\n\n $scope.viewer.message.$imipAction(vm.pathToAttachment, action, data);\n };\n }\n\n angular\n .module('SOGo.MailerUI')\n .controller('sgImipController', sgImipController)\n .directive('sgImip', sgImip);\n})();\n\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Mailer.services.js b/UI/WebServerResources/js/Mailer.services.js index 0cec70fd6..79a413ba1 100644 --- a/UI/WebServerResources/js/Mailer.services.js +++ b/UI/WebServerResources/js/Mailer.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function Account(futureAccountData){"function"!=typeof futureAccountData.then&&(angular.extend(this,futureAccountData),_.each(this.identities,function(identity){identity.fullName?identity.full=identity.fullName+" <"+identity.email+">":identity.full="<"+identity.email+">"}),Account.$log.debug("Account: "+JSON.stringify(futureAccountData,void 0,2)))}Account.$factory=["$q","$timeout","$log","sgSettings","Resource","Mailbox","Message",function($q,$timeout,$log,Settings,Resource,Mailbox,Message){return angular.extend(Account,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),$Mailbox:Mailbox,$Message:Message}),Account}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",Account.$factory),Account.$findAll=function(data){var collection=[];return data&&angular.forEach(data,function(o,i){o.id=i,collection[i]=new Account(o)}),collection},Account.prototype.$getMailboxes=function(options){var _this=this,deferred=Account.$q.defer();return!this.$mailboxes||options&&options.reload?Account.$Mailbox.$find(this).then(function(data){_this.$mailboxes=data,_this.$flattenMailboxes({reload:!0}),deferred.resolve(_this.$mailboxes)}):deferred.resolve(this.$mailboxes),deferred.promise},Account.prototype.$flattenMailboxes=function(options){var _this=this,allMailboxes=[],_visit=function(mailboxes){_.each(mailboxes,function(o){allMailboxes.push(o),o.children&&o.children.length>0&&_visit(o.children)})};return!this.$$flattenMailboxes||options&&options.reload?(_visit(this.$mailboxes),_this.$$flattenMailboxes=allMailboxes):allMailboxes=this.$$flattenMailboxes,allMailboxes},Account.prototype.$getMailboxByType=function(type){var mailbox,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.type==type});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};mailbox=_find(this.$mailboxes),console.debug(mailbox),console.debug(this.specialMailboxes)},Account.prototype.$getMailboxByPath=function(path){var mailbox=null,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==path});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};return mailbox=_find(this.$mailboxes)},Account.prototype.$newMailbox=function(path,name){var _this=this;return Account.$$resource.post(path.toString(),"createFolder",{name:name}).then(function(){_this.$getMailboxes({reload:!0})})},Account.prototype.$newMessage=function(){var _this=this;return Account.$$resource.fetch(this.id.toString(),"compose").then(function(data){Account.$log.debug("New message (compose): "+JSON.stringify(data,void 0,2));var message=new Account.$Message(data.accountId,_this.$getMailboxByPath(data.mailboxPath),data);return message}).then(function(message){return Account.$$resource.fetch(message.$absolutePath({asDraft:!0}),"edit").then(function(data){return Account.$log.debug("New message (edit): "+JSON.stringify(data,void 0,2)),angular.extend(message.editable,data),message})})},Account.prototype.$addDelegate=function(user){var _this=this,deferred=Account.$q.defer(),param={uid:user.uid};return!user.uid||_.indexOf(_.pluck(this.delegates,"uid"),user.uid)>-1?deferred.resolve():Account.$$resource.fetch(this.id.toString(),"addDelegate",param).then(function(){_this.delegates.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Account.prototype.$removeDelegate=function(uid){var _this=this,param={uid:uid};return Account.$$resource.fetch(this.id.toString(),"removeDelegate",param).then(function(){var i=_.indexOf(_.pluck(_this.delegates,"uid"),uid);i>=0&&_this.delegates.splice(i,1)})}}(),function(){"use strict";function Mailbox(account,futureMailboxData){if(this.$account=account,"function"!=typeof futureMailboxData.then){if(this.init(futureMailboxData),this.name&&!this.path){var newMailboxData=Mailbox.$$resource.create("createFolder",this.name);this.$unwrap(newMailboxData)}}else this.$unwrap(futureMailboxData)}Mailbox.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Resource,Message,Acl,Preferences,PRELOAD){return angular.extend(Mailbox,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Message:Message,$$Acl:Acl,$Preferences:Preferences,$query:{sort:"date",asc:0},selectedFolder:null,$refreshTimeout:null,PRELOAD:PRELOAD}),Preferences.ready().then(function(){Preferences.settings.Mail.SortingState&&(Mailbox.$query.sort=Preferences.settings.Mail.SortingState[0],Mailbox.$query.asc=parseInt(Preferences.settings.Mail.SortingState[1]))}),Mailbox}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",Mailbox.$factory),Mailbox.$find=function(account){var futureMailboxData;return futureMailboxData=this.$$resource.fetch(account.id.toString(),"view"),Mailbox.$unwrapCollection(account,futureMailboxData)},Mailbox.$unwrapCollection=function(account,futureMailboxData){var collection=[],createMailboxes=function(level,mailbox){for(var i=0;istartIndex&&max>startIndex;startIndex++)angular.isDefined(this.$messages[startIndex].subject)||this.$messages[startIndex].loading?endIndex++:(uids.push(this.$messages[startIndex].uid),this.$messages[startIndex].loading=!0);Mailbox.$log.debug("Loading UIDs "+uids.join(" ")),futureHeadersData=Mailbox.$$resource.post(this.id,"headers",{uids:uids}),this.$unwrapHeaders(futureHeadersData)}return loaded},Mailbox.prototype.isEditable=function(){return"folder"==this.type},Mailbox.prototype.$rename=function(){var findParent,parent,children,i,_this=this,deferred=Mailbox.$q.defer();return this.name==this.$shadowData.name?(deferred.resolve(),deferred.promise):(findParent=function(parent,children){var parentMailbox=null,mailbox=_.find(children,function(o){return o.path==_this.path});return mailbox?parentMailbox=parent:angular.forEach(children,function(o){!parentMailbox&&o.children&&o.children.length>0&&(parentMailbox=findParent(o,o.children))}),parentMailbox},parent=findParent(null,this.$account.$mailboxes),children=null===parent?this.$account.$mailboxes:parent.children,i=_.indexOf(_.pluck(children,"id"),this.id),this.$save().then(function(data){var sibling;angular.extend(_this,data),_this.id=_this.$id(),children.splice(i,1),sibling=_.find(children,function(o){return Mailbox.$log.debug(o.name+" ? "+_this.name),"folder"==o.type&&o.name.localeCompare(_this.name)>0}),i=sibling?_.indexOf(_.pluck(children,"id"),sibling.id):children.length,children.splice(i,0,_this),deferred.resolve()},function(data){deferred.reject(data)}),deferred.promise)},Mailbox.prototype.$compact=function(){return Mailbox.$$resource.post(this.id,"expunge")},Mailbox.prototype.$setFolderAs=function(type){return Mailbox.$$resource.post(this.id,"setAs"+type+"Folder")},Mailbox.prototype.$emptyTrash=function(){var _this=this;return Mailbox.$$resource.post(this.id,"emptyTrash").then(function(){_this.$messages=[],_this.uidsMap={},_this.unseenCount=0,angular.isDefined(_this.children)&&_this.children.length&&_this.$account.$getMailboxes({reload:!0})})},Mailbox.prototype.$markAsRead=function(){return Mailbox.$$resource.post(this.id,"markRead")},Mailbox.prototype.$flagMessages=function(uids,flags,operation){var data={msgUIDs:uids,flags:flags,operation:operation};return Mailbox.$$resource.post(this.id,"addOrRemoveLabel",data)},Mailbox.prototype.$delete=function(){var promise,_this=this,deferred=Mailbox.$q.defer();return promise=Mailbox.$$resource.remove(this.id),promise.then(function(){_this.$account.$getMailboxes({reload:!0}),deferred.resolve(!0)},function(data,status){deferred.reject(data)}),deferred.promise},Mailbox.prototype.$deleteMessages=function(uids){return Mailbox.$$resource.post(this.id,"batchDelete",{uids:uids})},Mailbox.prototype.$copyMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"copyMessages",{uids:uids,folder:folder})},Mailbox.prototype.$moveMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"moveMessages",{uids:uids,folder:folder})},Mailbox.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit()},Mailbox.prototype.$save=function(){var _this=this;return Mailbox.$$resource.save(this.id,this.$omit()).then(function(data){return _this.$shadowData=_this.$omit(),Mailbox.$log.debug(JSON.stringify(data,void 0,2)),data},function(data){Mailbox.$log.error(JSON.stringify(data,void 0,2)),_this.$reset()})},Mailbox.prototype.$newMailbox=function(path,name){return this.$account.$newMailbox(path,name)},Mailbox.prototype.$omit=function(){var mailbox={};return angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&(mailbox[key]=value)}),mailbox},Mailbox.prototype.$unwrap=function(futureMailboxData){var _this=this,deferred=Mailbox.$q.defer();return this.$futureMailboxData=futureMailboxData,this.$futureMailboxData.then(function(data){Mailbox.$timeout(function(){var uids,headers;_this.init(data),_this.uids&&(Mailbox.$log.debug("unwrapping "+data.uids.length+" messages"),headers=_.invoke(_this.headers[0],"toLowerCase"),_this.headers.splice(0,1),_this.threaded&&(uids=_this.uids[0],_this.uids.splice(0,1)),_.reduce(_this.uids,function(msgs,msg,i){var data;return data=_this.threaded?_.object(uids,msg):{uid:msg.toString()},_this.uidsMap[data.uid]=i,msgs.push(new Mailbox.$Message(_this.$account.id,_this,data)),msgs},_this.$messages),_.each(_this.headers,function(data){var msg=_.object(headers,data),i=_this.uidsMap[msg.uid.toString()];_.extend(_this.$messages[i],msg)})),Mailbox.$log.debug("mailbox "+_this.id+" ready"),_this.$isLoading=!1,deferred.resolve(_this.$messages)})},function(data){angular.extend(_this,data),_this.isError=!0,deferred.reject()}),deferred.promise},Mailbox.prototype.$unwrapHeaders=function(futureHeadersData){var _this=this;futureHeadersData.then(function(data){Mailbox.$timeout(function(){var headers,j;data.length>0&&(headers=_.invoke(data[0],"toLowerCase"),data.splice(0,1),_.each(data,function(messageHeaders){messageHeaders=_.object(headers,messageHeaders),j=_this.uidsMap[messageHeaders.uid.toString()],angular.isDefined(j)&&_.extend(_this.$messages[j],messageHeaders)}))})})}}(),function(){"use strict";function Message(accountId,mailbox,futureMessageData){this.accountId=accountId,this.$mailbox=mailbox,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.$showDetailedRecipients=!1,this.editable={to:[],cc:[],bcc:[]},"function"!=typeof futureMessageData.then?(angular.extend(this,futureMessageData),this.id=this.$absolutePath(),this.$formatFullAddresses()):this.$unwrap(futureMessageData),this.selected=!1}Message.$factory=["$q","$timeout","$log","$sce","sgSettings","Gravatar","Resource","Preferences",function($q,$timeout,$log,$sce,Settings,Gravatar,Resource,Preferences){return angular.extend(Message,{$q:$q,$timeout:$timeout,$log:$log,$sce:$sce,$gravatar:Gravatar,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser())}),Preferences.ready().then(function(){Preferences.defaults.SOGoMailLabelsColors&&(Message.$tags=Preferences.defaults.SOGoMailLabelsColors)}),Message}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Message",Message.$factory),Message.filterTags=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Message.$tags),function(tag){var value=Message.$tags[tag];return-1!=value[0].search(re)})},Message.prototype.$absolutePath=function(options){var path;return path=_.map(this.$mailbox.path.split("/"),function(component){return"folder"+component.asCSSIdentifier()}),path.splice(0,0,this.accountId),options&&options.asDraft&&this.draftId?path.push(this.draftId):path.push(this.uid),path.join("/")},Message.prototype.$setUID=function(uid){var oldUID=this.uid||-1;oldUID!=uid&&(this.uid=uid,this.id=this.$absolutePath(),oldUID>-1&&this.$mailbox.uidsMap[oldUID]&&(this.$mailbox.uidsMap[uid]=this.$mailbox.uidsMap[oldUID],this.$mailbox.uidsMap[oldUID]=null))},Message.prototype.$formatFullAddresses=function(){var _this=this,identities=_.pluck(_this.$mailbox.$account.identities,"email");_.each(["from","to","cc","bcc","reply-to"],function(type){_.each(_this[type],function(data,i){data.name&&data.name!=data.email?(data.full=data.name+" <"+data.email+">",data.name.split(" ").length&&(data.shortname=data.name.split(" ")[0].replace("'",""))):(data.full="<"+data.email+">",data.shortname=data.email.split("@")[0]),data.image=Message.$gravatar(data.email,32),_.indexOf(identities,data.email)>=0&&(data.shortname="me")})})},Message.prototype.$shortRecipients=function(){var _this=this,result=[];return _.each(["to","cc","bcc"],function(type){_.each(_this[type],function(data,i){result.push(data.shortname)})}),result.join(", ")},Message.prototype.$shortAddress=function(type){var address="";return this[type]&&this[type].length>0&&(address=this[type][0].name||this[type][0].email||""),address},Message.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},Message.prototype.showDetailedRecipients=function(){this.$showDetailedRecipients=!0},Message.prototype.$content=function(){var _this=this,parts=[],_visit=function(part){part.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==part.type?_visit(_.find(part.content,function(alternatePart){return part.preferredPart==alternatePart.contentType})):angular.isArray(part.content)?_.each(part.content,function(mixedPart){_visit(mixedPart)}):(angular.isUndefined(part.safeContent)&&(part.safeContent=part.content,_this.$hasUnsafeContent=part.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==part.type?(part.html=!0,_this.$loadUnsafeContent?(angular.isUndefined(part.unsafeContent)&&(part.unsafeContent=document.createElement("div"),part.unsafeContent.innerHTML=part.safeContent,angular.forEach(["src","data","classid","background","style"],function(suffix){var element,value,i,elements=part.unsafeContent.querySelectorAll("[unsafe-"+suffix+"]");for(i=0;i":identity.full="<"+identity.email+">"}),Account.$log.debug("Account: "+JSON.stringify(futureAccountData,void 0,2)))}Account.$factory=["$q","$timeout","$log","sgSettings","Resource","Mailbox","Message",function($q,$timeout,$log,Settings,Resource,Mailbox,Message){return angular.extend(Account,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),$Mailbox:Mailbox,$Message:Message}),Account}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",Account.$factory),Account.$findAll=function(data){var collection=[];return data&&angular.forEach(data,function(o,i){o.id=i,collection[i]=new Account(o)}),collection},Account.prototype.$getMailboxes=function(options){var _this=this,deferred=Account.$q.defer();return!this.$mailboxes||options&&options.reload?Account.$Mailbox.$find(this).then(function(data){_this.$mailboxes=data,_this.$flattenMailboxes({reload:!0}),deferred.resolve(_this.$mailboxes)}):deferred.resolve(this.$mailboxes),deferred.promise},Account.prototype.$flattenMailboxes=function(options){var _this=this,allMailboxes=[],_visit=function(mailboxes){_.each(mailboxes,function(o){allMailboxes.push(o),o.children&&o.children.length>0&&_visit(o.children)})};return!this.$$flattenMailboxes||options&&options.reload?(_visit(this.$mailboxes),_this.$$flattenMailboxes=allMailboxes):allMailboxes=this.$$flattenMailboxes,allMailboxes},Account.prototype.$getMailboxByType=function(type){var mailbox,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.type==type});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};mailbox=_find(this.$mailboxes),console.debug(mailbox),console.debug(this.specialMailboxes)},Account.prototype.$getMailboxByPath=function(path){var mailbox=null,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==path});return mailbox||angular.forEach(mailboxes,function(o){!mailbox&&o.children&&o.children.length>0&&(mailbox=_find(o.children))}),mailbox};return mailbox=_find(this.$mailboxes)},Account.prototype.$newMailbox=function(path,name){var _this=this;return Account.$$resource.post(path.toString(),"createFolder",{name:name}).then(function(){_this.$getMailboxes({reload:!0})})},Account.prototype.$newMessage=function(){var _this=this;return Account.$$resource.fetch(this.id.toString(),"compose").then(function(data){Account.$log.debug("New message (compose): "+JSON.stringify(data,void 0,2));var message=new Account.$Message(data.accountId,_this.$getMailboxByPath(data.mailboxPath),data);return message}).then(function(message){return Account.$$resource.fetch(message.$absolutePath({asDraft:!0}),"edit").then(function(data){return Account.$log.debug("New message (edit): "+JSON.stringify(data,void 0,2)),angular.extend(message.editable,data),message})})},Account.prototype.$addDelegate=function(user){var _this=this,deferred=Account.$q.defer(),param={uid:user.uid};return!user.uid||_.indexOf(_.pluck(this.delegates,"uid"),user.uid)>-1?deferred.resolve():Account.$$resource.fetch(this.id.toString(),"addDelegate",param).then(function(){_this.delegates.push(user),deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))}),deferred.promise},Account.prototype.$removeDelegate=function(uid){var _this=this,param={uid:uid};return Account.$$resource.fetch(this.id.toString(),"removeDelegate",param).then(function(){var i=_.indexOf(_.pluck(_this.delegates,"uid"),uid);i>=0&&_this.delegates.splice(i,1)})}}(),function(){"use strict";function Mailbox(account,futureMailboxData){if(this.$account=account,"function"!=typeof futureMailboxData.then){if(this.init(futureMailboxData),this.name&&!this.path){var newMailboxData=Mailbox.$$resource.create("createFolder",this.name);this.$unwrap(newMailboxData)}}else this.$unwrap(futureMailboxData)}Mailbox.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Resource,Message,Acl,Preferences,PRELOAD){return angular.extend(Mailbox,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Message:Message,$$Acl:Acl,$Preferences:Preferences,$query:{sort:"date",asc:0},selectedFolder:null,$refreshTimeout:null,PRELOAD:PRELOAD}),Preferences.ready().then(function(){Preferences.settings.Mail.SortingState&&(Mailbox.$query.sort=Preferences.settings.Mail.SortingState[0],Mailbox.$query.asc=parseInt(Preferences.settings.Mail.SortingState[1]))}),Mailbox}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",Mailbox.$factory),Mailbox.$find=function(account){var futureMailboxData;return futureMailboxData=this.$$resource.fetch(account.id.toString(),"view"),Mailbox.$unwrapCollection(account,futureMailboxData)},Mailbox.$unwrapCollection=function(account,futureMailboxData){var collection=[],createMailboxes=function(level,mailbox){for(var i=0;i=0&&indexstartIndex&&max>startIndex;startIndex++)angular.isDefined(this.$messages[startIndex].subject)||this.$messages[startIndex].loading?endIndex++:(uids.push(this.$messages[startIndex].uid),this.$messages[startIndex].loading=!0);Mailbox.$log.debug("Loading UIDs "+uids.join(" ")),futureHeadersData=Mailbox.$$resource.post(this.id,"headers",{uids:uids}),this.$unwrapHeaders(futureHeadersData)}return loaded},Mailbox.prototype.isEditable=function(){return"folder"==this.type},Mailbox.prototype.$rename=function(){var findParent,parent,children,i,_this=this,deferred=Mailbox.$q.defer();return this.name==this.$shadowData.name?(deferred.resolve(),deferred.promise):(findParent=function(parent,children){var parentMailbox=null,mailbox=_.find(children,function(o){return o.path==_this.path});return mailbox?parentMailbox=parent:angular.forEach(children,function(o){!parentMailbox&&o.children&&o.children.length>0&&(parentMailbox=findParent(o,o.children))}),parentMailbox},parent=findParent(null,this.$account.$mailboxes),children=null===parent?this.$account.$mailboxes:parent.children,i=_.indexOf(_.pluck(children,"id"),this.id),this.$save().then(function(data){var sibling;angular.extend(_this,data),_this.id=_this.$id(),children.splice(i,1),sibling=_.find(children,function(o){return Mailbox.$log.debug(o.name+" ? "+_this.name),"folder"==o.type&&o.name.localeCompare(_this.name)>0}),i=sibling?_.indexOf(_.pluck(children,"id"),sibling.id):children.length,children.splice(i,0,_this),deferred.resolve()},function(data){deferred.reject(data)}),deferred.promise)},Mailbox.prototype.$compact=function(){return Mailbox.$$resource.post(this.id,"expunge")},Mailbox.prototype.$setFolderAs=function(type){return Mailbox.$$resource.post(this.id,"setAs"+type+"Folder")},Mailbox.prototype.$emptyTrash=function(){var _this=this;return Mailbox.$$resource.post(this.id,"emptyTrash").then(function(){_this.$messages=[],_this.uidsMap={},_this.unseenCount=0,angular.isDefined(_this.children)&&_this.children.length&&_this.$account.$getMailboxes({reload:!0})})},Mailbox.prototype.$markAsRead=function(){return Mailbox.$$resource.post(this.id,"markRead")},Mailbox.prototype.$flagMessages=function(uids,flags,operation){var data={msgUIDs:uids,flags:flags,operation:operation};return Mailbox.$$resource.post(this.id,"addOrRemoveLabel",data)},Mailbox.prototype.$delete=function(){var promise,_this=this,deferred=Mailbox.$q.defer();return promise=Mailbox.$$resource.remove(this.id),promise.then(function(){_this.$account.$getMailboxes({reload:!0}),deferred.resolve(!0)},function(data,status){deferred.reject(data)}),deferred.promise},Mailbox.prototype.$deleteMessages=function(uids){return Mailbox.$$resource.post(this.id,"batchDelete",{uids:uids})},Mailbox.prototype.$copyMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"copyMessages",{uids:uids,folder:folder})},Mailbox.prototype.$moveMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"moveMessages",{uids:uids,folder:folder})},Mailbox.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit()},Mailbox.prototype.$save=function(){var _this=this;return Mailbox.$$resource.save(this.id,this.$omit()).then(function(data){return _this.$shadowData=_this.$omit(),Mailbox.$log.debug(JSON.stringify(data,void 0,2)),data},function(data){Mailbox.$log.error(JSON.stringify(data,void 0,2)),_this.$reset()})},Mailbox.prototype.$newMailbox=function(path,name){return this.$account.$newMailbox(path,name)},Mailbox.prototype.$omit=function(){var mailbox={};return angular.forEach(this,function(value,key){"constructor"!=key&&"children"!=key&&"$"!=key[0]&&(mailbox[key]=value)}),mailbox},Mailbox.prototype.$unwrap=function(futureMailboxData){var _this=this,deferred=Mailbox.$q.defer();return this.$futureMailboxData=futureMailboxData,this.$futureMailboxData.then(function(data){Mailbox.$timeout(function(){var uids,headers;_this.init(data),_this.uids&&(Mailbox.$log.debug("unwrapping "+data.uids.length+" messages"),headers=_.invoke(_this.headers[0],"toLowerCase"),_this.headers.splice(0,1),_this.threaded&&(uids=_this.uids[0],_this.uids.splice(0,1)),_.reduce(_this.uids,function(msgs,msg,i){var data;return data=_this.threaded?_.object(uids,msg):{uid:msg.toString()},_this.uidsMap[data.uid]=i,msgs.push(new Mailbox.$Message(_this.$account.id,_this,data)),msgs},_this.$messages),_.each(_this.headers,function(data){var msg=_.object(headers,data),i=_this.uidsMap[msg.uid.toString()];_.extend(_this.$messages[i],msg)})),Mailbox.$log.debug("mailbox "+_this.id+" ready"),_this.$isLoading=!1,deferred.resolve(_this.$messages)})},function(data){angular.extend(_this,data),_this.isError=!0,deferred.reject()}),deferred.promise},Mailbox.prototype.$unwrapHeaders=function(futureHeadersData){var _this=this;futureHeadersData.then(function(data){Mailbox.$timeout(function(){var headers,j;data.length>0&&(headers=_.invoke(data[0],"toLowerCase"),data.splice(0,1),_.each(data,function(messageHeaders){messageHeaders=_.object(headers,messageHeaders),j=_this.uidsMap[messageHeaders.uid.toString()],angular.isDefined(j)&&_.extend(_this.$messages[j],messageHeaders)}))})})}}(),function(){"use strict";function Message(accountId,mailbox,futureMessageData){this.accountId=accountId,this.$mailbox=mailbox,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.$showDetailedRecipients=!1,this.editable={to:[],cc:[],bcc:[]},"function"!=typeof futureMessageData.then?(angular.extend(this,futureMessageData),this.id=this.$absolutePath(),this.$formatFullAddresses()):this.$unwrap(futureMessageData),this.selected=!1,this.$tapette+=1}Message.$factory=["$q","$timeout","$log","$sce","sgSettings","Gravatar","Resource","Preferences",function($q,$timeout,$log,$sce,Settings,Gravatar,Resource,Preferences){return angular.extend(Message,{$q:$q,$timeout:$timeout,$log:$log,$sce:$sce,$gravatar:Gravatar,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$tapette:0}),Preferences.ready().then(function(){Preferences.defaults.SOGoMailLabelsColors&&(Message.$tags=Preferences.defaults.SOGoMailLabelsColors)}),Message}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Message",Message.$factory),Message.filterTags=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Message.$tags),function(tag){var value=Message.$tags[tag];return-1!=value[0].search(re)})},Message.prototype.$absolutePath=function(options){var path;return path=_.map(this.$mailbox.path.split("/"),function(component){return"folder"+component.asCSSIdentifier()}),path.splice(0,0,this.accountId),options&&options.asDraft&&this.draftId?path.push(this.draftId):path.push(this.uid),path.join("/")},Message.prototype.$setUID=function(uid){var oldUID=this.uid||-1;oldUID!=uid&&(this.uid=uid,this.id=this.$absolutePath(),oldUID>-1&&this.$mailbox.uidsMap[oldUID]&&(this.$mailbox.uidsMap[uid]=this.$mailbox.uidsMap[oldUID],this.$mailbox.uidsMap[oldUID]=null))},Message.prototype.$formatFullAddresses=function(){var _this=this,identities=_.pluck(_this.$mailbox.$account.identities,"email");_.each(["from","to","cc","bcc","reply-to"],function(type){_.each(_this[type],function(data,i){data.name&&data.name!=data.email?(data.full=data.name+" <"+data.email+">",data.name.split(" ").length&&(data.shortname=data.name.split(" ")[0].replace("'",""))):(data.full="<"+data.email+">",data.shortname=data.email.split("@")[0]),data.image=Message.$gravatar(data.email,32),_.indexOf(identities,data.email)>=0&&(data.shortname=l("me"))})})},Message.prototype.$shortRecipients=function(){var _this=this,result=[];return _.each(["to","cc","bcc"],function(type){_.each(_this[type],function(data,i){result.push(data.shortname)})}),result.join(", ")},Message.prototype.$shortAddress=function(type){var address="";return this[type]&&this[type].length>0&&(address=this[type][0].name||this[type][0].email||""),address},Message.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},Message.prototype.showDetailedRecipients=function(){this.$showDetailedRecipients=!0},Message.prototype.$content=function(){var _this=this,parts=[],_visit=function(part){part.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==part.type?_visit(_.find(part.content,function(alternatePart){return part.preferredPart==alternatePart.contentType})):angular.isArray(part.content)?_.each(part.content,function(mixedPart){_visit(mixedPart)}):(angular.isUndefined(part.safeContent)&&(part.safeContent=part.content,_this.$hasUnsafeContent=part.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==part.type?(part.html=!0,_this.$loadUnsafeContent?(angular.isUndefined(part.unsafeContent)&&(part.unsafeContent=document.createElement("div"),part.unsafeContent.innerHTML=part.safeContent,angular.forEach(["src","data","classid","background","style"],function(suffix){var element,value,i,elements=part.unsafeContent.querySelectorAll("[unsafe-"+suffix+"]");for(i=0;i';\n else\n identity.full = '<' + identity.email + '>';\n });\n Account.$log.debug('Account: ' + JSON.stringify(futureAccountData, undefined, 2));\n }\n else {\n // The promise will be unwrapped first\n //this.$unwrap(futureAccountData);\n }\n }\n\n /**\n * @memberof Account\n * @desc The factory we'll use to register with Angular\n * @returns the Account constructor\n */\n Account.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Mailbox', 'Message', function($q, $timeout, $log, Settings, Resource, Mailbox, Message) {\n angular.extend(Account, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n $Mailbox: Mailbox,\n $Message: Message\n });\n\n return Account; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Account in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Account', Account.$factory);\n\n /**\n * @memberof Account\n * @desc Set the list of accounts and instanciate a new Account object for each item.\n * @param {array} [data] - the metadata of the accounts\n * @returns the list of accounts\n */\n Account.$findAll = function(data) {\n var collection = [];\n if (data) {\n // Each entry is spun up as an Account instance\n angular.forEach(data, function(o, i) {\n o.id = i;\n collection[i] = new Account(o);\n });\n }\n return collection;\n };\n\n /**\n * @function $getMailboxes\n * @memberof Account.prototype\n * @desc Fetch the list of mailboxes for the current account.\n * @param {object} [options] - force a reload by setting 'reload' to true\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxes = function(options) {\n var _this = this,\n deferred = Account.$q.defer();\n\n if (this.$mailboxes && !(options && options.reload)) {\n deferred.resolve(this.$mailboxes);\n }\n else {\n Account.$Mailbox.$find(this).then(function(data) {\n _this.$mailboxes = data;\n _this.$flattenMailboxes({reload: true});\n deferred.resolve(_this.$mailboxes);\n });\n }\n\n return deferred.promise;\n };\n\n /**\n * @function $flattenMailboxes\n * @memberof Account.prototype\n * @desc Get a flatten array of the mailboxes.\n * @param {object} [options] - force a reload\n * @returns an array of Mailbox instances\n */\n Account.prototype.$flattenMailboxes = function(options) {\n var _this = this,\n allMailboxes = [],\n _visit = function(mailboxes) {\n _.each(mailboxes, function(o) {\n allMailboxes.push(o);\n if (o.children && o.children.length > 0) {\n _visit(o.children);\n }\n });\n };\n\n if (this.$$flattenMailboxes && !(options && options.reload)) {\n allMailboxes = this.$$flattenMailboxes;\n }\n else {\n _visit(this.$mailboxes);\n _this.$$flattenMailboxes = allMailboxes;\n }\n\n return allMailboxes;\n };\n\n Account.prototype.$getMailboxByType = function(type) {\n var mailbox,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.type == type;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n console.debug(mailbox);\n console.debug(this.specialMailboxes);\n };\n\n /**\n * @function $getMailboxByPath\n * @memberof Account.prototype\n * @desc Recursively find a mailbox using its path\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxByPath = function(path) {\n var mailbox = null,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == path;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n return mailbox;\n };\n\n /**\n * @function $newMailbox\n * @memberof Account.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMailbox = function(path, name) {\n var _this = this;\n\n return Account.$$resource.post(path.toString(), 'createFolder', {name: name}).then(function() {\n _this.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $newMessage\n * @memberof Account.prototype\n * @desc Prepare a new Message object associated to the appropriate mailbox.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMessage = function() {\n var _this = this;\n\n // Query account for draft folder and draft UID\n return Account.$$resource.fetch(this.id.toString(), 'compose').then(function(data) {\n Account.$log.debug('New message (compose): ' + JSON.stringify(data, undefined, 2));\n var message = new Account.$Message(data.accountId, _this.$getMailboxByPath(data.mailboxPath), data);\n return message;\n }).then(function(message) {\n // Fetch draft initial data\n return Account.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Account.$log.debug('New message (edit): ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $addDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @see {@link User.$filter}\n */\n Account.prototype.$addDelegate = function(user) {\n var _this = this,\n deferred = Account.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.delegates, 'uid'), user.uid) > -1) {\n // No UID specified or user already in delegates\n deferred.resolve();\n }\n else {\n Account.$$resource.fetch(this.id.toString(), 'addDelegate', param).then(function() {\n _this.delegates.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @return a promise of the server call to remove the user from the account's delegates\n */\n Account.prototype.$removeDelegate = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Account.$$resource.fetch(this.id.toString(), 'removeDelegate', param).then(function() {\n var i = _.indexOf(_.pluck(_this.delegates, 'uid'), uid);\n if (i >= 0) {\n _this.delegates.splice(i, 1);\n }\n });\n };\n \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Mailbox\n * @constructor\n * @param {object} futureMailboxData - either an object literal or a promise\n */\n function Mailbox(account, futureMailboxData) {\n this.$account = account;\n // Data is immediately available\n if (typeof futureMailboxData.then !== 'function') {\n this.init(futureMailboxData);\n if (this.name && !this.path) {\n // Create a new mailbox on the server\n var newMailboxData = Mailbox.$$resource.create('createFolder', this.name);\n this.$unwrap(newMailboxData);\n }\n }\n else {\n // The promise will be unwrapped first\n // NOTE: this condition never happen for the moment\n this.$unwrap(futureMailboxData);\n }\n }\n\n /**\n * @memberof Mailbox\n * @desc The factory we'll use to register with Angular\n * @returns the Mailbox constructor\n */\n Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'Acl', 'Preferences', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, Acl, Preferences, PRELOAD) {\n angular.extend(Mailbox, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser()),\n $Message: Message,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: { sort: 'date', asc: 0 },\n selectedFolder: null,\n $refreshTimeout: null,\n PRELOAD: PRELOAD\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Mail.SortingState) {\n Mailbox.$query.sort = Preferences.settings.Mail.SortingState[0];\n Mailbox.$query.asc = parseInt(Preferences.settings.Mail.SortingState[1]);\n }\n });\n\n return Mailbox; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Mailbox in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .constant('sgMailbox_PRELOAD', {\n LOOKAHEAD: 50,\n SIZE: 100\n })\n .factory('Mailbox', Mailbox.$factory);\n\n /**\n * @memberof Mailbox\n * @desc Fetch list of mailboxes of a specific account\n * @param {string} accountId - the account\n * @return a promise of the HTTP operation\n * @see {@link Account.$getMailboxes}\n */\n Mailbox.$find = function(account) {\n var path, futureMailboxData;\n\n futureMailboxData = this.$$resource.fetch(account.id.toString(), 'view');\n\n return Mailbox.$unwrapCollection(account, futureMailboxData); // a collection of mailboxes\n };\n\n /**\n * @memberof Mailbox\n * @desc Unwrap to a collection of Mailbox instances.\n * @param {string} account - the account\n * @param {promise} futureMailboxData - a promise of the mailboxes metadata\n * @returns a promise of a collection of Mailbox objects\n */\n Mailbox.$unwrapCollection = function(account, futureMailboxData) {\n var collection = [],\n // Local recursive function\n createMailboxes = function(level, mailbox) {\n for (var i = 0; i < mailbox.children.length; i++) {\n mailbox.children[i].level = level;\n mailbox.children[i] = new Mailbox(account, mailbox.children[i]);\n createMailboxes(level+1, mailbox.children[i]);\n }\n };\n //collection.$futureMailboxData = futureMailboxData;\n\n return futureMailboxData.then(function(data) {\n return Mailbox.$timeout(function() {\n // Each entry is spun up as a Mailbox instance\n angular.forEach(data.mailboxes, function(data, index) {\n data.level = 0;\n var mailbox = new Mailbox(account, data);\n createMailboxes(1, mailbox); // recursively create all sub-mailboxes\n collection.push(mailbox);\n });\n return collection;\n });\n });\n };\n\n /**\n * @memberof Mailbox\n * @desc Build the path of the mailbox (or account only).\n * @param {string} accountId - the account ID\n * @param {string} [mailboxPath] - the mailbox path\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.$absolutePath = function(accountId, mailboxPath) {\n var path = [];\n\n if (mailboxPath) {\n path = _.map(mailboxPath.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n }\n\n path.splice(0, 0, accountId); // insert account ID\n\n return path.join('/');\n };\n\n /**\n * @function init\n * @memberof Mailbox.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of mailbox\n */\n Mailbox.prototype.init = function(data) {\n var _this = this;\n this.$isLoading = false;\n this.$messages = [];\n this.uidsMap = {};\n angular.extend(this, data);\n if (this.path) {\n this.id = this.$id();\n this.$acl = new Mailbox.$$Acl('Mail/' + this.id);\n }\n if (this.type) {\n this.$isEditable = this.isEditable();\n }\n if (angular.isUndefined(this.$shadowData)) {\n // Make a copy of the data for an eventual reset\n this.$shadowData = this.$omit();\n }\n };\n\n /**\n * @function $id\n * @memberof Mailbox.prototype\n * @desc Build the unique ID to identified the mailbox.\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.prototype.$id = function() {\n return Mailbox.$absolutePath(this.$account.id, this.path);\n };\n\n /**\n * @function $selectedCount\n * @memberof Mailbox.prototype\n * @desc Return the number of messages selected by the user.\n * @returns the number of selected messages\n */\n Mailbox.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.$messages) {\n count = (_.filter(this.$messages, function(message) { return message.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Mailbox.prototype\n * @desc Fetch the messages metadata of the mailbox\n * @param {object} [sort] - sort preferences. Defaults to descendent by date.\n * @param {string} sort.match - either AND or OR\n * @param {string} sort.sort - either arrival, subject, from, to, date, or size\n * @param {boolean} sort.asc - sort is ascendant if true\n * @param {object[]} [filters] - list of filters for the query\n * @param {string} filters.searchBy - either subject, from, to, cc, or body\n * @param {string} filters.searchInput - the search string to match\n * @param {boolean} filters.negative - negate the condition\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$filter = function(sortingAttributes, filters) {\n var _this = this, options = {};\n\n if (!angular.isDefined(this.unseenCount))\n this.unseenCount = 0;\n\n this.$isLoading = true;\n\n return Mailbox.$Preferences.ready().then(function() {\n\n if (Mailbox.$refreshTimeout)\n Mailbox.$timeout.cancel(Mailbox.$refreshTimeout);\n\n if (sortingAttributes)\n // Sorting preferences are common to all mailboxes\n angular.extend(Mailbox.$query, sortingAttributes);\n\n angular.extend(options, { sortingAttributes: Mailbox.$query });\n if (angular.isDefined(filters)) {\n options.filters = _.reject(filters, function(filter) {\n return angular.isUndefined(filter.searchInput) || filter.searchInput.length === 0;\n });\n _.each(options.filters, function(filter) {\n var secondFilter,\n match = filter.searchBy.match(/(\\w+)_or_(\\w+)/);\n if (match) {\n options.sortingAttributes.match = 'OR';\n filter.searchBy = match[1];\n secondFilter = angular.copy(filter);\n secondFilter.searchBy = match[2];\n options.filters.push(secondFilter);\n }\n });\n }\n\n // Restart the refresh timer, if needed\n var refreshViewCheck = Mailbox.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, Mailbox.prototype.$filter);\n Mailbox.$refreshTimeout = Mailbox.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n\n var futureMailboxData = Mailbox.$$resource.post(_this.id, 'view', options);\n return _this.$unwrap(futureMailboxData);\n });\n };\n\n /**\n * @function $loadMessage\n * @memberof Mailbox.prototype\n * @desc Check if the message is loaded and in any case, fetch more messages headers from the server.\n * @returns true if the message metadata are already fetched\n */\n Mailbox.prototype.$loadMessage = function(messageId) {\n var startIndex = this.uidsMap[messageId],\n endIndex,\n max = this.$messages.length,\n loaded = false,\n uids,\n futureHeadersData;\n if (angular.isDefined(this.uidsMap[messageId]) && startIndex < this.$messages.length) {\n // Index is valid\n if (angular.isDefined(this.$messages[startIndex].subject)) {// || this.$messages[startIndex].loading) {\n // Message headers are loaded or data is coming\n loaded = true;\n }\n\n // Preload more headers if possible\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.LOOKAHEAD, max - 1);\n if (!angular.isDefined(this.$messages[endIndex].subject) &&\n !angular.isDefined(this.$messages[endIndex].loading)) {\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.SIZE, max);\n for (uids = []; startIndex < endIndex && startIndex < max; startIndex++) {\n if (angular.isDefined(this.$messages[startIndex].subject) || this.$messages[startIndex].loading) {\n // Message at this index is already loaded; increase the end index\n endIndex++;\n }\n else {\n // Message at this index will be loaded\n uids.push(this.$messages[startIndex].uid);\n this.$messages[startIndex].loading = true;\n }\n }\n\n Mailbox.$log.debug('Loading UIDs ' + uids.join(' '));\n futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids});\n this.$unwrapHeaders(futureHeadersData);\n }\n }\n return loaded;\n };\n\n /**\n * @function isEditable\n * @memberof Mailbox.prototype\n * @desc Checks if the mailbox is editable based on its type.\n * @returns true if the mailbox is not a special folder.\n */\n Mailbox.prototype.isEditable = function() {\n return this.type == 'folder';\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$rename = function() {\n var _this = this,\n findParent,\n deferred = Mailbox.$q.defer(),\n parent,\n children,\n i;\n\n if (this.name == this.$shadowData.name) {\n // Name hasn't changed\n deferred.resolve();\n return deferred.promise;\n }\n\n // Local recursive function\n findParent = function(parent, children) {\n var parentMailbox = null,\n mailbox = _.find(children, function(o) {\n return o.path == _this.path;\n });\n if (mailbox) {\n parentMailbox = parent;\n }\n else {\n angular.forEach(children, function(o) {\n if (!parentMailbox && o.children && o.children.length > 0) {\n parentMailbox = findParent(o, o.children);\n }\n });\n }\n return parentMailbox;\n };\n\n // Find mailbox parent\n parent = findParent(null, this.$account.$mailboxes);\n if (parent === null)\n children = this.$account.$mailboxes;\n else\n children = parent.children;\n\n // Find index of mailbox among siblings\n i = _.indexOf(_.pluck(children, 'id'), this.id);\n\n this.$save().then(function(data) {\n var sibling;\n angular.extend(_this, data); // update the path attribute\n _this.id = _this.$id();\n\n // Move mailbox among its siblings according to its new name\n children.splice(i, 1);\n sibling = _.find(children, function(o) {\n Mailbox.$log.debug(o.name + ' ? ' + _this.name);\n return (o.type == 'folder' && o.name.localeCompare(_this.name) > 0);\n });\n if (sibling) {\n i = _.indexOf(_.pluck(children, 'id'), sibling.id);\n }\n else {\n i = children.length;\n }\n children.splice(i, 0, _this);\n\n deferred.resolve();\n }, function(data) {\n deferred.reject(data);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $compact\n * @memberof Mailbox.prototype\n * @desc Compact the mailbox\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$compact = function() {\n return Mailbox.$$resource.post(this.id, 'expunge');\n };\n\n /**\n * @function $setFolderAs\n * @memberof Mailbox.prototype\n * @desc Set a folder as Drafts/Sent/Trash\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$setFolderAs = function(type) {\n return Mailbox.$$resource.post(this.id, 'setAs' + type + 'Folder');\n };\n\n /**\n * @function $emptyTrash\n * @memberof Mailbox.prototype\n * @desc Empty the Trash folder.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$emptyTrash = function() {\n var _this = this;\n\n return Mailbox.$$resource.post(this.id, 'emptyTrash').then(function() {\n // Remove all messages from the mailbox\n _this.$messages = [];\n _this.uidsMap = {};\n _this.unseenCount = 0;\n\n // If we had any submailboxes, lets do a refresh of the mailboxes list\n if (angular.isDefined(_this.children) && _this.children.length)\n _this.$account.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $markAsRead\n * @memberof Mailbox.prototype\n * @desc Mark all messages from folder as read\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$markAsRead = function() {\n return Mailbox.$$resource.post(this.id, 'markRead');\n };\n\n /**\n * @function $flagMessages\n * @memberof Mailbox.prototype\n * @desc Add or remove a flag on a message set\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$flagMessages = function(uids, flags, operation) {\n var data = {msgUIDs: uids,\n flags: flags,\n operation: operation};\n\n return Mailbox.$$resource.post(this.id, 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $delete\n * @memberof Mailbox.prototype\n * @desc Delete the mailbox from the server\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$delete = function() {\n var _this = this,\n deferred = Mailbox.$q.defer(),\n promise;\n\n promise = Mailbox.$$resource.remove(this.id);\n\n promise.then(function() {\n _this.$account.$getMailboxes({reload: true});\n deferred.resolve(true);\n }, function(data, status) {\n deferred.reject(data);\n });\n return deferred.promise;\n };\n\n /**\n * @function $deleteMessages\n * @memberof Mailbox.prototype\n * @desc Delete multiple messages from mailbox.\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$deleteMessages = function(uids) {\n return Mailbox.$$resource.post(this.id, 'batchDelete', {uids: uids});\n };\n\n /**\n * @function $copyMessages\n * @memberof Mailbox.prototype\n * @desc Copy multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$copyMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'copyMessages', {uids: uids, folder: folder});\n };\n\n /**\n * @function $moveMessages\n * @memberof Mailbox.prototype\n * @desc Move multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$moveMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'moveMessages', {uids: uids, folder: folder});\n };\n \n /**\n * @function $reset\n * @memberof Mailbox.prototype\n * @desc Reset the original state the mailbox's data.\n */\n Mailbox.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key != 'children' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit();\n };\n\n /**\n * @function $save\n * @memberof Mailbox.prototype\n * @desc Save the mailbox to the server. This currently can only affect the name of the mailbox.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$save = function() {\n var _this = this;\n\n return Mailbox.$$resource.save(this.id, this.$omit()).then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n Mailbox.$log.debug(JSON.stringify(data, undefined, 2));\n return data;\n }, function(data) {\n Mailbox.$log.error(JSON.stringify(data, undefined, 2));\n // Restore previous version\n _this.$reset();\n });\n };\n\n /**\n * @function $newMailbox\n * @memberof Mailbox.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Mailbox.prototype.$newMailbox = function(path, name) {\n return this.$account.$newMailbox(path, name);\n };\n\n /**\n * @function $omit\n * @memberof Mailbox.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Mailbox instance\n */\n Mailbox.prototype.$omit = function() {\n var mailbox = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'children' &&\n key[0] != '$') {\n mailbox[key] = value;\n }\n });\n return mailbox;\n };\n\n /**\n * @function $unwrap\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and instanciate new Message objects using received data.\n * @param {promise} futureMailboxData - a promise of the Mailbox's metadata\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$unwrap = function(futureMailboxData) {\n var _this = this,\n deferred = Mailbox.$q.defer();\n\n this.$futureMailboxData = futureMailboxData;\n this.$futureMailboxData.then(function(data) {\n Mailbox.$timeout(function() {\n var uids, headers;\n\n _this.init(data);\n\n if (_this.uids) {\n Mailbox.$log.debug('unwrapping ' + data.uids.length + ' messages');\n \n // First entry of 'headers' are keys\n headers = _.invoke(_this.headers[0], 'toLowerCase');\n _this.headers.splice(0, 1);\n\n // First entry of 'uids' are keys when threaded view is enabled\n if (_this.threaded) {\n uids = _this.uids[0];\n _this.uids.splice(0, 1);\n }\n\n // Instanciate Message objects\n _.reduce(_this.uids, function(msgs, msg, i) {\n var data;\n if (_this.threaded)\n data = _.object(uids, msg);\n else\n data = {uid: msg.toString()};\n\n // Build map of UID <=> index\n _this.uidsMap[data.uid] = i;\n\n msgs.push(new Mailbox.$Message(_this.$account.id, _this, data));\n\n return msgs;\n }, _this.$messages);\n\n // Extend Message objects with received headers\n _.each(_this.headers, function(data) {\n var msg = _.object(headers, data),\n i = _this.uidsMap[msg.uid.toString()];\n _.extend(_this.$messages[i], msg);\n });\n }\n Mailbox.$log.debug('mailbox ' + _this.id + ' ready');\n _this.$isLoading = false;\n deferred.resolve(_this.$messages);\n });\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapHeaders\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and extend matching Message objects using received data.\n * @param {promise} futureHeadersData - a promise of some messages metadata\n */\n Mailbox.prototype.$unwrapHeaders = function(futureHeadersData) {\n var _this = this;\n\n futureHeadersData.then(function(data) {\n Mailbox.$timeout(function() {\n var headers, j;\n if (data.length > 0) {\n // First entry of 'headers' are keys\n headers = _.invoke(data[0], 'toLowerCase');\n data.splice(0, 1);\n _.each(data, function(messageHeaders) {\n messageHeaders = _.object(headers, messageHeaders);\n j = _this.uidsMap[messageHeaders.uid.toString()];\n if (angular.isDefined(j)) {\n _.extend(_this.$messages[j], messageHeaders);\n }\n });\n }\n });\n });\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Message\n * @constructor\n * @param {string} accountId - the account ID\n * @param {string} mailboxPath - an array of the mailbox path components\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function Message(accountId, mailbox, futureMessageData) {\n this.accountId = accountId;\n this.$mailbox = mailbox;\n this.$hasUnsafeContent = false;\n this.$loadUnsafeContent = false;\n this.$showDetailedRecipients = false;\n this.editable = {to: [], cc: [], bcc: []};\n // Data is immediately available\n if (typeof futureMessageData.then !== 'function') {\n //console.debug(JSON.stringify(futureMessageData, undefined, 2));\n angular.extend(this, futureMessageData);\n this.id = this.$absolutePath();\n this.$formatFullAddresses();\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureMessageData);\n }\n this.selected = false;\n }\n\n /**\n * @memberof Message\n * @desc The factory we'll use to register with Angular\n * @returns the Message constructor\n */\n Message.$factory = ['$q', '$timeout', '$log', '$sce', 'sgSettings', 'Gravatar', 'Resource', 'Preferences', function($q, $timeout, $log, $sce, Settings, Gravatar, Resource, Preferences) {\n angular.extend(Message, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $sce: $sce,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser())\n });\n // Initialize tags form user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailLabelsColors) {\n Message.$tags = Preferences.defaults.SOGoMailLabelsColors;\n }\n });\n\n return Message; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Message in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Message', Message.$factory);\n\n /**\n * @function filterTags\n * @memberof Message.prototype\n * @desc Search for tags (ie., mail labels) matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Message.filterTags = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Message.$tags), function(tag) {\n var value = Message.$tags[tag];\n return value[0].search(re) != -1;\n });\n };\n\n /**\n * @function $absolutePath\n * @memberof Message.prototype\n * @desc Build the path of the message\n * @returns a string representing the path relative to the mail module\n */\n Message.prototype.$absolutePath = function(options) {\n var path;\n\n path = _.map(this.$mailbox.path.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n path.splice(0, 0, this.accountId); // insert account ID\n if (options && options.asDraft && this.draftId) {\n path.push(this.draftId); // add draft ID\n }\n else {\n path.push(this.uid); // add message UID\n }\n\n return path.join('/');\n };\n\n /**\n * @function $setUID\n * @memberof Message.prototype\n * @desc Change the UID of the message. This happens when saving a draft.\n * @param {number} uid - the new message UID\n */\n Message.prototype.$setUID = function(uid) {\n var oldUID = this.uid || -1;\n\n if (oldUID != uid) {\n this.uid = uid;\n this.id = this.$absolutePath();\n if (oldUID > -1 && this.$mailbox.uidsMap[oldUID]) {\n this.$mailbox.uidsMap[uid] = this.$mailbox.uidsMap[oldUID];\n this.$mailbox.uidsMap[oldUID] = null;\n }\n }\n };\n\n /**\n * @function $formatFullAddresses\n * @memberof Message.prototype\n * @desc Format all sender and recipients addresses with a complete description (name ).\n * This function also generates a gravatar for each email address, and a short name\n */\n Message.prototype.$formatFullAddresses = function() {\n var _this = this;\n var identities = _.pluck(_this.$mailbox.$account.identities, 'email');\n\n // Build long representation of email addresses\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n _.each(_this[type], function(data, i) {\n if (data.name && data.name != data.email) {\n data.full = data.name + ' <' + data.email + '>';\n\n // If we have \"Alice Foo\" as name, we grab \"Alice\"\n if (data.name.split(' ').length)\n data.shortname = data.name.split(' ')[0].replace('\\'','');\n }\n else {\n data.full = '<' + data.email + '>';\n data.shortname = data.email.split('@')[0];\n }\n\n // Generate the gravatar\n data.image = Message.$gravatar(data.email, 32);\n\n // If the current user is the recepient, overwrite\n // the short name with 'me'\n if (_.indexOf(identities, data.email) >= 0)\n data.shortname = 'me';\n });\n });\n };\n\n /**\n * @function $shortRecipients\n * @memberof Message.prototype\n * @desc Format all recipients into a very compact string\n * @returns a compacted string of all recipients\n */\n Message.prototype.$shortRecipients = function() {\n var _this = this;\n var result = [];\n\n // Build long representation of email addresses\n _.each(['to', 'cc', 'bcc'], function(type) {\n _.each(_this[type], function(data, i) {\n result.push(data.shortname);\n });\n });\n\n return result.join(', ');\n };\n\n /**\n * @function $shortAddress\n * @memberof Message.prototype\n * @desc Format the first address of a specific type with a short description.\n * @returns a string of the name or the email of the envelope address type\n */\n Message.prototype.$shortAddress = function(type) {\n var address = '';\n if (this[type] && this[type].length > 0) {\n address = this[type][0].name || this[type][0].email || '';\n }\n\n return address;\n };\n\n /**\n * @function loadUnsafeContent\n * @memberof Message.prototype\n * @desc Mark the message to load unsafe resources when calling $content().\n */\n Message.prototype.loadUnsafeContent = function() {\n this.$loadUnsafeContent = true;\n };\n\n /**\n * @function showDetailedRecipients\n * @memberof Message.prototype\n * @desc Mark the message to show all to/cc recipients.\n */\n Message.prototype.showDetailedRecipients = function() {\n this.$showDetailedRecipients = true;\n };\n\n /**\n * @function $content\n * @memberof Message.prototype\n * @desc Get the message body as accepted by SCE (Angular Strict Contextual Escaping).\n * @returns the HTML representation of the body\n */\n Message.prototype.$content = function() {\n var _this = this,\n parts = [],\n _visit = function(part) {\n part.msgclass = 'msg-attachment-other';\n if (part.type == 'UIxMailPartAlternativeViewer') {\n _visit(_.find(part.content, function(alternatePart) {\n return part.preferredPart == alternatePart.contentType;\n }));\n }\n // Can be used for UIxMailPartMixedViewer and UIxMailPartMessageViewer\n else if (angular.isArray(part.content)) {\n _.each(part.content, function(mixedPart) {\n _visit(mixedPart);\n });\n }\n else {\n if (angular.isUndefined(part.safeContent)) {\n // Keep a copy of the original content\n part.safeContent = part.content;\n _this.$hasUnsafeContent = (part.safeContent.indexOf(' unsafe-') > -1);\n }\n if (part.type == 'UIxMailPartHTMLViewer') {\n part.html = true;\n if (_this.$loadUnsafeContent) {\n if (angular.isUndefined(part.unsafeContent)) {\n part.unsafeContent = document.createElement('div');\n part.unsafeContent.innerHTML = part.safeContent;\n angular.forEach(['src', 'data', 'classid', 'background', 'style'], function(suffix) {\n var elements = part.unsafeContent.querySelectorAll('[unsafe-' + suffix + ']'),\n element,\n value,\n i;\n for (i = 0; i < elements.length; i++) {\n element = angular.element(elements[i]);\n value = element.attr('unsafe-' + suffix);\n element.attr(suffix, value);\n element.removeAttr('unsafe-' + suffix);\n }\n });\n }\n part.content = Message.$sce.trustAs('html', part.unsafeContent.innerHTML);\n }\n else {\n part.content = Message.$sce.trustAs('html', part.safeContent);\n }\n parts.push(part);\n }\n else if (part.type == 'UIxMailPartICalViewer' ||\n part.type == 'UIxMailPartImageViewer' ||\n part.type == 'UIxMailPartLinkViewer') {\n\n // UIxMailPartICalViewer injects 'participants'\n if (part.participants) {\n _.each(part.participants, function(participant) {\n participant.image = Message.$gravatar(participant.email, 32);\n });\n }\n\n if (part.type == 'UIxMailPartImageViewer')\n part.msgclass = 'msg-attachment-image';\n\n // Trusted content that can be compiled (Angularly-speaking)\n part.compile = true;\n parts.push(part);\n }\n else {\n part.html = true;\n part.content = Message.$sce.trustAs('html', part.safeContent);\n parts.push(part);\n }\n }\n };\n _visit(this.parts);\n\n return parts;\n };\n\n /**\n * @function $editableContent\n * @memberof Message.prototype\n * @desc First, fetch the draft ID that corresponds to the temporary draft object on the SOGo server.\n * Secondly, fetch the editable message body along with other metadata such as the recipients.\n * @returns the HTML representation of the body\n */\n Message.prototype.$editableContent = function() {\n var _this = this;\n\n return Message.$$resource.fetch(this.id, 'edit').then(function(data) {\n angular.extend(_this, data);\n return Message.$$resource.fetch(_this.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('editable = ' + JSON.stringify(data, undefined, 2));\n angular.extend(_this.editable, data);\n return data.text;\n });\n });\n };\n\n /**\n * @function addTag\n * @memberof Message.prototype\n * @desc Add a mail tag on the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.addTag = function(tag) {\n return this.$addOrRemoveTag('add', tag);\n };\n\n /**\n * @function removeTag\n * @memberof Message.prototype\n * @desc Remove a mail tag from the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.removeTag = function(tag) {\n return this.$addOrRemoveTag('remove', tag);\n };\n\n /**\n * @function $addOrRemoveTag\n * @memberof Message.prototype\n * @desc Add or remove a mail tag on the current message.\n * @param {string} operation - the operation name to perform\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$addOrRemoveTag = function(operation, tag) {\n var data = {\n operation: operation,\n msgUIDs: [this.uid],\n flags: tag\n };\n\n if (tag)\n return Message.$$resource.post(this.$mailbox.$id(), 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $imipAction\n * @memberof Message.prototype\n * @desc Perform IMIP actions on the current message.\n * @param {string} path - the path of the IMIP calendar part \n * @param {string} action - the the IMIP action to perform\n * @param {object} data - the delegation info \n */\n Message.prototype.$imipAction = function(path, action, data) {\n var _this = this;\n Message.$$resource.post([this.id, path].join('/'), action, data).then(function(data) {\n Message.$timeout(function() {\n _this.$reload();\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $sendMDN\n * @memberof Message.prototype\n * @desc Send MDN response for current email message\n */\n Message.prototype.$sendMDN = function() {\n this.shouldAskReceipt = 0;\n return Message.$$resource.post(this.id, 'sendMDN');\n };\n\n /**\n * @function $deleteAttachment\n * @memberof Message.prototype\n * @desc Delete an attachment from a message being composed\n * @param {string} filename - the filename of the attachment to delete\n */\n Message.prototype.$deleteAttachment = function(filename) {\n var action = 'deleteAttachment?filename=' + filename;\n var _this = this;\n Message.$$resource.post(this.$absolutePath({asDraft: true}), action).then(function(data) {\n Message.$timeout(function() {\n _this.editable.attachmentAttrs = _.filter(_this.editable.attachmentAttrs, function(attachment) {\n return attachment.filename != filename;\n });\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $markAsFlaggedOrUnflagged\n * @memberof Message.prototype\n * @desc Add or remove a the \\\\Flagged flag on the current message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.toggleFlag = function() {\n var _this = this,\n action = 'markMessageFlagged';\n\n if (this.isflagged)\n action = 'markMessageUnflagged';\n\n return Message.$$resource.post(this.id, action).then(function(data) {\n Message.$timeout(function() {\n _this.isflagged = !_this.isflagged;\n });\n });\n };\n\n /**\n * @function $reload\n * @memberof Message.prototype\n * @desc Fetch the viewable message body along with other metadata such as the list of attachments.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$reload = function() {\n var futureMessageData;\n\n futureMessageData = Message.$$resource.fetch(this.id, 'view');\n\n return this.$unwrap(futureMessageData);\n };\n\n /**\n * @function $reply\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$reply = function() {\n return this.$newDraft('reply');\n };\n\n /**\n * @function $replyAll\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender and all recipients.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$replyAll = function() {\n return this.$newDraft('replyall');\n };\n\n /**\n * @function $forward\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a forward.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$forward = function() {\n return this.$newDraft('forward');\n };\n\n /**\n * @function $newDraft\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply or a forward of the current message and associated\n * to the draft mailbox.\n * @see {@link Account.$newMessage}\n * @see {@link Message.$editableContent}\n * @see {@link Message.$reply}\n * @see {@link Message.$replyAll}\n * @see {@link Message.$forwad}\n * @param {string} action - the HTTP action to perform on the message\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$newDraft = function(action) {\n var _this = this;\n\n // Query server for draft folder and draft UID\n return Message.$$resource.fetch(this.id, action).then(function(data) {\n var mailbox, message;\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n mailbox = _this.$mailbox.$account.$getMailboxByPath(data.mailboxPath);\n message = new Message(data.accountId, mailbox, data);\n // Fetch draft initial data\n return Message.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $save\n * @memberof Message.prototype\n * @desc Save the message to the server.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$save = function() {\n var _this = this,\n data = this.editable;\n\n Message.$log.debug('save = ' + JSON.stringify(data, undefined, 2));\n\n return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {\n Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));\n _this.$setUID(response.uid);\n _this.$reload(); // fetch a new viewable version of the message\n });\n };\n\n /**\n * @function $send\n * @memberof Message.prototype\n * @desc Send the message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$send = function() {\n var data = angular.copy(this.editable),\n deferred = Message.$q.defer();\n\n Message.$log.debug('send = ' + JSON.stringify(data, undefined, 2));\n\n Message.$$resource.post(this.$absolutePath({asDraft: true}), 'send', data).then(function(data) {\n if (data.status == 'success') {\n deferred.resolve(data);\n }\n else {\n deferred.reject(data);\n }\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrap\n * @memberof Message.prototype\n * @desc Unwrap a promise. \n * @param {promise} futureMessageData - a promise of some of the Message's data\n */\n Message.prototype.$unwrap = function(futureMessageData) {\n var _this = this,\n deferred = Message.$q.defer();\n\n // Expose the promise\n this.$futureMessageData = futureMessageData;\n\n // Resolve the promise\n this.$futureMessageData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Message.$timeout(function() {\n angular.extend(_this, data);\n _this.id = _this.$absolutePath();\n _this.$formatFullAddresses();\n _this.$loadUnsafeContent = false;\n deferred.resolve(_this);\n });\n if (!_this.isread) {\n Message.$$resource.fetch(_this.id, 'markMessageRead').then(function() {\n Message.$timeout(function() {\n _this.isread = true;\n _this.$mailbox.unseenCount--;\n });\n });\n }\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Message.$log.error(_this.error);\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof Message.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Message instance\n */\n Message.prototype.$omit = function() {\n var message = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n message[key] = value;\n }\n });\n\n // Format addresses as arrays\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n if (message[type])\n message[type] = _.invoke(message[type].split(','), 'trim');\n });\n\n //Message.$log.debug(JSON.stringify(message, undefined, 2));\n return message;\n };\n\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Mailer.services.js","sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js"],"names":["Account","futureAccountData","then","angular","extend","this","_","each","identities","identity","fullName","full","email","$log","debug","JSON","stringify","undefined","$factory","$q","$timeout","Settings","Resource","Mailbox","Message","$$resource","baseURL","activeUser","$Mailbox","$Message","module","e","factory","$findAll","data","collection","forEach","o","i","id","prototype","$getMailboxes","options","_this","deferred","defer","$mailboxes","reload","$find","$flattenMailboxes","resolve","promise","allMailboxes","_visit","mailboxes","push","children","length","$$flattenMailboxes","$getMailboxByType","type","mailbox","_find","find","console","specialMailboxes","$getMailboxByPath","path","$newMailbox","name","post","toString","$newMessage","fetch","message","accountId","mailboxPath","$absolutePath","asDraft","editable","$addDelegate","user","param","uid","indexOf","pluck","delegates","users","status","reject","l","$removeDelegate","splice","account","futureMailboxData","$account","init","newMailboxData","create","$unwrap","Acl","Preferences","PRELOAD","$$Acl","$Preferences","$query","sort","asc","selectedFolder","$refreshTimeout","ready","settings","Mail","SortingState","parseInt","constant","LOOKAHEAD","SIZE","$unwrapCollection","createMailboxes","level","index","map","split","component","asCSSIdentifier","join","$isLoading","$messages","uidsMap","$id","$acl","$isEditable","isEditable","isUndefined","$shadowData","$omit","getLength","getItemAtIndex","$loadMessage","$selectedCount","count","filter","selected","$filter","sortingAttributes","filters","isDefined","unseenCount","cancel","searchInput","secondFilter","match","searchBy","copy","refreshViewCheck","defaults","SOGoRefreshViewCheck","f","bind","timeInterval","messageId","endIndex","uids","futureHeadersData","startIndex","max","loaded","subject","Math","min","loading","$unwrapHeaders","$rename","findParent","parent","parentMailbox","$save","sibling","localeCompare","$compact","$setFolderAs","$emptyTrash","$markAsRead","$flagMessages","flags","operation","msgUIDs","$delete","remove","$deleteMessages","$copyMessages","folder","$moveMessages","$reset","value","key","save","error","$futureMailboxData","headers","invoke","threaded","reduce","msgs","msg","object","isError","j","messageHeaders","futureMessageData","$mailbox","$hasUnsafeContent","$loadUnsafeContent","$showDetailedRecipients","to","cc","bcc","$formatFullAddresses","$tapette","$sce","Gravatar","$gravatar","SOGoMailLabelsColors","$tags","filterTags","query","re","RegExp","keys","tag","search","draftId","$setUID","oldUID","shortname","replace","image","$shortRecipients","result","$shortAddress","address","loadUnsafeContent","showDetailedRecipients","$content","parts","part","msgclass","content","alternatePart","preferredPart","contentType","isArray","mixedPart","safeContent","html","unsafeContent","document","createElement","innerHTML","suffix","element","elements","querySelectorAll","attr","removeAttr","trustAs","participants","participant","compile","$editableContent","text","addTag","$addOrRemoveTag","removeTag","$imipAction","action","$reload","$sendMDN","shouldAskReceipt","$deleteAttachment","filename","attachmentAttrs","attachment","toggleFlag","isflagged","$reply","$newDraft","$replyAll","$forward","response","$send","$futureMessageData","isread"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Account\n * @constructor\n * @param {object} futureAccountData\n */\n function Account(futureAccountData) {\n // Data is immediately available\n if (typeof futureAccountData.then !== 'function') {\n angular.extend(this, futureAccountData);\n _.each(this.identities, function(identity) {\n if (identity.fullName)\n identity.full = identity.fullName + ' <' + identity.email + '>';\n else\n identity.full = '<' + identity.email + '>';\n });\n Account.$log.debug('Account: ' + JSON.stringify(futureAccountData, undefined, 2));\n }\n else {\n // The promise will be unwrapped first\n //this.$unwrap(futureAccountData);\n }\n }\n\n /**\n * @memberof Account\n * @desc The factory we'll use to register with Angular\n * @returns the Account constructor\n */\n Account.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Mailbox', 'Message', function($q, $timeout, $log, Settings, Resource, Mailbox, Message) {\n angular.extend(Account, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n $Mailbox: Mailbox,\n $Message: Message\n });\n\n return Account; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Account in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Account', Account.$factory);\n\n /**\n * @memberof Account\n * @desc Set the list of accounts and instanciate a new Account object for each item.\n * @param {array} [data] - the metadata of the accounts\n * @returns the list of accounts\n */\n Account.$findAll = function(data) {\n var collection = [];\n if (data) {\n // Each entry is spun up as an Account instance\n angular.forEach(data, function(o, i) {\n o.id = i;\n collection[i] = new Account(o);\n });\n }\n return collection;\n };\n\n /**\n * @function $getMailboxes\n * @memberof Account.prototype\n * @desc Fetch the list of mailboxes for the current account.\n * @param {object} [options] - force a reload by setting 'reload' to true\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxes = function(options) {\n var _this = this,\n deferred = Account.$q.defer();\n\n if (this.$mailboxes && !(options && options.reload)) {\n deferred.resolve(this.$mailboxes);\n }\n else {\n Account.$Mailbox.$find(this).then(function(data) {\n _this.$mailboxes = data;\n _this.$flattenMailboxes({reload: true});\n deferred.resolve(_this.$mailboxes);\n });\n }\n\n return deferred.promise;\n };\n\n /**\n * @function $flattenMailboxes\n * @memberof Account.prototype\n * @desc Get a flatten array of the mailboxes.\n * @param {object} [options] - force a reload\n * @returns an array of Mailbox instances\n */\n Account.prototype.$flattenMailboxes = function(options) {\n var _this = this,\n allMailboxes = [],\n _visit = function(mailboxes) {\n _.each(mailboxes, function(o) {\n allMailboxes.push(o);\n if (o.children && o.children.length > 0) {\n _visit(o.children);\n }\n });\n };\n\n if (this.$$flattenMailboxes && !(options && options.reload)) {\n allMailboxes = this.$$flattenMailboxes;\n }\n else {\n _visit(this.$mailboxes);\n _this.$$flattenMailboxes = allMailboxes;\n }\n\n return allMailboxes;\n };\n\n Account.prototype.$getMailboxByType = function(type) {\n var mailbox,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.type == type;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n console.debug(mailbox);\n console.debug(this.specialMailboxes);\n };\n\n /**\n * @function $getMailboxByPath\n * @memberof Account.prototype\n * @desc Recursively find a mailbox using its path\n * @returns a promise of the HTTP operation\n */\n Account.prototype.$getMailboxByPath = function(path) {\n var mailbox = null,\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == path;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n mailbox = _find(this.$mailboxes);\n\n return mailbox;\n };\n\n /**\n * @function $newMailbox\n * @memberof Account.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMailbox = function(path, name) {\n var _this = this;\n\n return Account.$$resource.post(path.toString(), 'createFolder', {name: name}).then(function() {\n _this.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $newMessage\n * @memberof Account.prototype\n * @desc Prepare a new Message object associated to the appropriate mailbox.\n * @returns a promise of the HTTP operations\n */\n Account.prototype.$newMessage = function() {\n var _this = this;\n\n // Query account for draft folder and draft UID\n return Account.$$resource.fetch(this.id.toString(), 'compose').then(function(data) {\n Account.$log.debug('New message (compose): ' + JSON.stringify(data, undefined, 2));\n var message = new Account.$Message(data.accountId, _this.$getMailboxByPath(data.mailboxPath), data);\n return message;\n }).then(function(message) {\n // Fetch draft initial data\n return Account.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Account.$log.debug('New message (edit): ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $addDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @see {@link User.$filter}\n */\n Account.prototype.$addDelegate = function(user) {\n var _this = this,\n deferred = Account.$q.defer(),\n param = {uid: user.uid};\n if (!user.uid || _.indexOf(_.pluck(this.delegates, 'uid'), user.uid) > -1) {\n // No UID specified or user already in delegates\n deferred.resolve();\n }\n else {\n Account.$$resource.fetch(this.id.toString(), 'addDelegate', param).then(function() {\n _this.delegates.push(user);\n deferred.resolve(_this.users);\n }, function(data, status) {\n deferred.reject(l('An error occured please try again.'));\n });\n }\n return deferred.promise;\n };\n\n /**\n * @function $removeDelegate\n * @memberof Account.prototype\n * @param {Object} user - a User object with minimal set of attributes (uid, isGroup, cn, c_email)\n * @desc Remove a user from the account's delegates\n * @return a promise of the server call to remove the user from the account's delegates\n */\n Account.prototype.$removeDelegate = function(uid) {\n var _this = this,\n param = {uid: uid};\n return Account.$$resource.fetch(this.id.toString(), 'removeDelegate', param).then(function() {\n var i = _.indexOf(_.pluck(_this.delegates, 'uid'), uid);\n if (i >= 0) {\n _this.delegates.splice(i, 1);\n }\n });\n };\n \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Mailbox\n * @constructor\n * @param {object} futureMailboxData - either an object literal or a promise\n */\n function Mailbox(account, futureMailboxData) {\n this.$account = account;\n // Data is immediately available\n if (typeof futureMailboxData.then !== 'function') {\n this.init(futureMailboxData);\n if (this.name && !this.path) {\n // Create a new mailbox on the server\n var newMailboxData = Mailbox.$$resource.create('createFolder', this.name);\n this.$unwrap(newMailboxData);\n }\n }\n else {\n // The promise will be unwrapped first\n // NOTE: this condition never happen for the moment\n this.$unwrap(futureMailboxData);\n }\n }\n\n /**\n * @memberof Mailbox\n * @desc The factory we'll use to register with Angular\n * @returns the Mailbox constructor\n */\n Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'Acl', 'Preferences', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, Acl, Preferences, PRELOAD) {\n angular.extend(Mailbox, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser()),\n $Message: Message,\n $$Acl: Acl,\n $Preferences: Preferences,\n $query: { sort: 'date', asc: 0 },\n selectedFolder: null,\n $refreshTimeout: null,\n PRELOAD: PRELOAD\n });\n // Initialize sort parameters from user's settings\n Preferences.ready().then(function() {\n if (Preferences.settings.Mail.SortingState) {\n Mailbox.$query.sort = Preferences.settings.Mail.SortingState[0];\n Mailbox.$query.asc = parseInt(Preferences.settings.Mail.SortingState[1]);\n }\n });\n\n return Mailbox; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Mailbox in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .constant('sgMailbox_PRELOAD', {\n LOOKAHEAD: 50,\n SIZE: 100\n })\n .factory('Mailbox', Mailbox.$factory);\n\n /**\n * @memberof Mailbox\n * @desc Fetch list of mailboxes of a specific account\n * @param {string} accountId - the account\n * @return a promise of the HTTP operation\n * @see {@link Account.$getMailboxes}\n */\n Mailbox.$find = function(account) {\n var path, futureMailboxData;\n\n futureMailboxData = this.$$resource.fetch(account.id.toString(), 'view');\n\n return Mailbox.$unwrapCollection(account, futureMailboxData); // a collection of mailboxes\n };\n\n /**\n * @memberof Mailbox\n * @desc Unwrap to a collection of Mailbox instances.\n * @param {string} account - the account\n * @param {promise} futureMailboxData - a promise of the mailboxes metadata\n * @returns a promise of a collection of Mailbox objects\n */\n Mailbox.$unwrapCollection = function(account, futureMailboxData) {\n var collection = [],\n // Local recursive function\n createMailboxes = function(level, mailbox) {\n for (var i = 0; i < mailbox.children.length; i++) {\n mailbox.children[i].level = level;\n mailbox.children[i] = new Mailbox(account, mailbox.children[i]);\n createMailboxes(level+1, mailbox.children[i]);\n }\n };\n //collection.$futureMailboxData = futureMailboxData;\n\n return futureMailboxData.then(function(data) {\n return Mailbox.$timeout(function() {\n // Each entry is spun up as a Mailbox instance\n angular.forEach(data.mailboxes, function(data, index) {\n data.level = 0;\n var mailbox = new Mailbox(account, data);\n createMailboxes(1, mailbox); // recursively create all sub-mailboxes\n collection.push(mailbox);\n });\n return collection;\n });\n });\n };\n\n /**\n * @memberof Mailbox\n * @desc Build the path of the mailbox (or account only).\n * @param {string} accountId - the account ID\n * @param {string} [mailboxPath] - the mailbox path\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.$absolutePath = function(accountId, mailboxPath) {\n var path = [];\n\n if (mailboxPath) {\n path = _.map(mailboxPath.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n }\n\n path.splice(0, 0, accountId); // insert account ID\n\n return path.join('/');\n };\n\n /**\n * @function init\n * @memberof Mailbox.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of mailbox\n */\n Mailbox.prototype.init = function(data) {\n var _this = this;\n this.$isLoading = false;\n this.$messages = [];\n this.uidsMap = {};\n angular.extend(this, data);\n if (this.path) {\n this.id = this.$id();\n this.$acl = new Mailbox.$$Acl('Mail/' + this.id);\n }\n if (this.type) {\n this.$isEditable = this.isEditable();\n }\n if (angular.isUndefined(this.$shadowData)) {\n // Make a copy of the data for an eventual reset\n this.$shadowData = this.$omit();\n }\n };\n\n /**\n * @function getLength\n * @memberof Mailbox.prototype\n * @desc Used by md-virtual-repeat / md-on-demand\n * @returns the number of items in the mailbox\n */\n Mailbox.prototype.getLength = function() {\n return this.$messages.length;\n };\n\n /**\n * @function getItemAtIndex\n * @memberof Mailbox.prototype\n * @desc Used by md-virtual-repeat / md-on-demand\n * @returns the message as the specified index\n */\n Mailbox.prototype.getItemAtIndex = function(index) {\n var message;\n\n if (index >= 0 && index < this.$messages.length) {\n message = this.$messages[index];\n \n if (this.$loadMessage(message.uid))\n return message;\n }\n\n return null;\n };\n\n /**\n * @function $id\n * @memberof Mailbox.prototype\n * @desc Build the unique ID to identified the mailbox.\n * @returns a string representing the path relative to the mail module\n */\n Mailbox.prototype.$id = function() {\n return Mailbox.$absolutePath(this.$account.id, this.path);\n };\n\n /**\n * @function $selectedCount\n * @memberof Mailbox.prototype\n * @desc Return the number of messages selected by the user.\n * @returns the number of selected messages\n */\n Mailbox.prototype.$selectedCount = function() {\n var count;\n\n count = 0;\n if (this.$messages) {\n count = (_.filter(this.$messages, function(message) { return message.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Mailbox.prototype\n * @desc Fetch the messages metadata of the mailbox\n * @param {object} [sort] - sort preferences. Defaults to descendent by date.\n * @param {string} sort.match - either AND or OR\n * @param {string} sort.sort - either arrival, subject, from, to, date, or size\n * @param {boolean} sort.asc - sort is ascendant if true\n * @param {object[]} [filters] - list of filters for the query\n * @param {string} filters.searchBy - either subject, from, to, cc, or body\n * @param {string} filters.searchInput - the search string to match\n * @param {boolean} filters.negative - negate the condition\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$filter = function(sortingAttributes, filters) {\n var _this = this, options = {};\n\n if (!angular.isDefined(this.unseenCount))\n this.unseenCount = 0;\n\n this.$isLoading = true;\n\n return Mailbox.$Preferences.ready().then(function() {\n\n if (Mailbox.$refreshTimeout)\n Mailbox.$timeout.cancel(Mailbox.$refreshTimeout);\n\n if (sortingAttributes)\n // Sorting preferences are common to all mailboxes\n angular.extend(Mailbox.$query, sortingAttributes);\n\n angular.extend(options, { sortingAttributes: Mailbox.$query });\n if (angular.isDefined(filters)) {\n options.filters = _.reject(filters, function(filter) {\n return angular.isUndefined(filter.searchInput) || filter.searchInput.length === 0;\n });\n _.each(options.filters, function(filter) {\n var secondFilter,\n match = filter.searchBy.match(/(\\w+)_or_(\\w+)/);\n if (match) {\n options.sortingAttributes.match = 'OR';\n filter.searchBy = match[1];\n secondFilter = angular.copy(filter);\n secondFilter.searchBy = match[2];\n options.filters.push(secondFilter);\n }\n });\n }\n\n // Restart the refresh timer, if needed\n var refreshViewCheck = Mailbox.$Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually') {\n var f = angular.bind(_this, Mailbox.prototype.$filter);\n Mailbox.$refreshTimeout = Mailbox.$timeout(f, refreshViewCheck.timeInterval()*1000);\n }\n\n var futureMailboxData = Mailbox.$$resource.post(_this.id, 'view', options);\n return _this.$unwrap(futureMailboxData);\n });\n };\n\n /**\n * @function $loadMessage\n * @memberof Mailbox.prototype\n * @desc Check if the message is loaded and in any case, fetch more messages headers from the server.\n * @returns true if the message metadata are already fetched\n */\n Mailbox.prototype.$loadMessage = function(messageId) {\n var startIndex = this.uidsMap[messageId],\n endIndex,\n max = this.$messages.length,\n loaded = false,\n uids,\n futureHeadersData;\n if (angular.isDefined(this.uidsMap[messageId]) && startIndex < this.$messages.length) {\n // Index is valid\n if (angular.isDefined(this.$messages[startIndex].subject)) {// || this.$messages[startIndex].loading) {\n // Message headers are loaded or data is coming\n loaded = true;\n }\n\n // Preload more headers if possible\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.LOOKAHEAD, max - 1);\n if (!angular.isDefined(this.$messages[endIndex].subject) &&\n !angular.isDefined(this.$messages[endIndex].loading)) {\n endIndex = Math.min(startIndex + Mailbox.PRELOAD.SIZE, max);\n for (uids = []; startIndex < endIndex && startIndex < max; startIndex++) {\n if (angular.isDefined(this.$messages[startIndex].subject) || this.$messages[startIndex].loading) {\n // Message at this index is already loaded; increase the end index\n endIndex++;\n }\n else {\n // Message at this index will be loaded\n uids.push(this.$messages[startIndex].uid);\n this.$messages[startIndex].loading = true;\n }\n }\n\n Mailbox.$log.debug('Loading UIDs ' + uids.join(' '));\n futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids});\n this.$unwrapHeaders(futureHeadersData);\n }\n }\n return loaded;\n };\n\n /**\n * @function isEditable\n * @memberof Mailbox.prototype\n * @desc Checks if the mailbox is editable based on its type.\n * @returns true if the mailbox is not a special folder.\n */\n Mailbox.prototype.isEditable = function() {\n return this.type == 'folder';\n };\n\n /**\n * @function $rename\n * @memberof AddressBook.prototype\n * @desc Rename the addressbook and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$rename = function() {\n var _this = this,\n findParent,\n deferred = Mailbox.$q.defer(),\n parent,\n children,\n i;\n\n if (this.name == this.$shadowData.name) {\n // Name hasn't changed\n deferred.resolve();\n return deferred.promise;\n }\n\n // Local recursive function\n findParent = function(parent, children) {\n var parentMailbox = null,\n mailbox = _.find(children, function(o) {\n return o.path == _this.path;\n });\n if (mailbox) {\n parentMailbox = parent;\n }\n else {\n angular.forEach(children, function(o) {\n if (!parentMailbox && o.children && o.children.length > 0) {\n parentMailbox = findParent(o, o.children);\n }\n });\n }\n return parentMailbox;\n };\n\n // Find mailbox parent\n parent = findParent(null, this.$account.$mailboxes);\n if (parent === null)\n children = this.$account.$mailboxes;\n else\n children = parent.children;\n\n // Find index of mailbox among siblings\n i = _.indexOf(_.pluck(children, 'id'), this.id);\n\n this.$save().then(function(data) {\n var sibling;\n angular.extend(_this, data); // update the path attribute\n _this.id = _this.$id();\n\n // Move mailbox among its siblings according to its new name\n children.splice(i, 1);\n sibling = _.find(children, function(o) {\n Mailbox.$log.debug(o.name + ' ? ' + _this.name);\n return (o.type == 'folder' && o.name.localeCompare(_this.name) > 0);\n });\n if (sibling) {\n i = _.indexOf(_.pluck(children, 'id'), sibling.id);\n }\n else {\n i = children.length;\n }\n children.splice(i, 0, _this);\n\n deferred.resolve();\n }, function(data) {\n deferred.reject(data);\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $compact\n * @memberof Mailbox.prototype\n * @desc Compact the mailbox\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$compact = function() {\n return Mailbox.$$resource.post(this.id, 'expunge');\n };\n\n /**\n * @function $setFolderAs\n * @memberof Mailbox.prototype\n * @desc Set a folder as Drafts/Sent/Trash\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$setFolderAs = function(type) {\n return Mailbox.$$resource.post(this.id, 'setAs' + type + 'Folder');\n };\n\n /**\n * @function $emptyTrash\n * @memberof Mailbox.prototype\n * @desc Empty the Trash folder.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$emptyTrash = function() {\n var _this = this;\n\n return Mailbox.$$resource.post(this.id, 'emptyTrash').then(function() {\n // Remove all messages from the mailbox\n _this.$messages = [];\n _this.uidsMap = {};\n _this.unseenCount = 0;\n\n // If we had any submailboxes, lets do a refresh of the mailboxes list\n if (angular.isDefined(_this.children) && _this.children.length)\n _this.$account.$getMailboxes({reload: true});\n });\n };\n\n /**\n * @function $markAsRead\n * @memberof Mailbox.prototype\n * @desc Mark all messages from folder as read\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$markAsRead = function() {\n return Mailbox.$$resource.post(this.id, 'markRead');\n };\n\n /**\n * @function $flagMessages\n * @memberof Mailbox.prototype\n * @desc Add or remove a flag on a message set\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$flagMessages = function(uids, flags, operation) {\n var data = {msgUIDs: uids,\n flags: flags,\n operation: operation};\n\n return Mailbox.$$resource.post(this.id, 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $delete\n * @memberof Mailbox.prototype\n * @desc Delete the mailbox from the server\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$delete = function() {\n var _this = this,\n deferred = Mailbox.$q.defer(),\n promise;\n\n promise = Mailbox.$$resource.remove(this.id);\n\n promise.then(function() {\n _this.$account.$getMailboxes({reload: true});\n deferred.resolve(true);\n }, function(data, status) {\n deferred.reject(data);\n });\n return deferred.promise;\n };\n\n /**\n * @function $deleteMessages\n * @memberof Mailbox.prototype\n * @desc Delete multiple messages from mailbox.\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$deleteMessages = function(uids) {\n return Mailbox.$$resource.post(this.id, 'batchDelete', {uids: uids});\n };\n\n /**\n * @function $copyMessages\n * @memberof Mailbox.prototype\n * @desc Copy multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$copyMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'copyMessages', {uids: uids, folder: folder});\n };\n\n /**\n * @function $moveMessages\n * @memberof Mailbox.prototype\n * @desc Move multiple messages from the current mailbox to a target one\n * @return a promise of the HTTP operation\n */\n Mailbox.prototype.$moveMessages = function(uids, folder) {\n return Mailbox.$$resource.post(this.id, 'moveMessages', {uids: uids, folder: folder});\n };\n \n /**\n * @function $reset\n * @memberof Mailbox.prototype\n * @desc Reset the original state the mailbox's data.\n */\n Mailbox.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key != 'children' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit();\n };\n\n /**\n * @function $save\n * @memberof Mailbox.prototype\n * @desc Save the mailbox to the server. This currently can only affect the name of the mailbox.\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$save = function() {\n var _this = this;\n\n return Mailbox.$$resource.save(this.id, this.$omit()).then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n Mailbox.$log.debug(JSON.stringify(data, undefined, 2));\n return data;\n }, function(data) {\n Mailbox.$log.error(JSON.stringify(data, undefined, 2));\n // Restore previous version\n _this.$reset();\n });\n };\n\n /**\n * @function $newMailbox\n * @memberof Mailbox.prototype\n * @desc Create a new mailbox on the server and refresh the list of mailboxes.\n * @returns a promise of the HTTP operations\n */\n Mailbox.prototype.$newMailbox = function(path, name) {\n return this.$account.$newMailbox(path, name);\n };\n\n /**\n * @function $omit\n * @memberof Mailbox.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Mailbox instance\n */\n Mailbox.prototype.$omit = function() {\n var mailbox = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key != 'children' &&\n key[0] != '$') {\n mailbox[key] = value;\n }\n });\n return mailbox;\n };\n\n /**\n * @function $unwrap\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and instanciate new Message objects using received data.\n * @param {promise} futureMailboxData - a promise of the Mailbox's metadata\n * @returns a promise of the HTTP operation\n */\n Mailbox.prototype.$unwrap = function(futureMailboxData) {\n var _this = this,\n deferred = Mailbox.$q.defer();\n\n this.$futureMailboxData = futureMailboxData;\n this.$futureMailboxData.then(function(data) {\n Mailbox.$timeout(function() {\n var uids, headers;\n\n _this.init(data);\n\n if (_this.uids) {\n Mailbox.$log.debug('unwrapping ' + data.uids.length + ' messages');\n\n // First entry of 'headers' are keys\n headers = _.invoke(_this.headers[0], 'toLowerCase');\n _this.headers.splice(0, 1);\n\n // First entry of 'uids' are keys when threaded view is enabled\n if (_this.threaded) {\n uids = _this.uids[0];\n _this.uids.splice(0, 1);\n }\n\n // Instanciate Message objects\n _.reduce(_this.uids, function(msgs, msg, i) {\n var data;\n if (_this.threaded)\n data = _.object(uids, msg);\n else\n data = {uid: msg.toString()};\n\n // Build map of UID <=> index\n _this.uidsMap[data.uid] = i;\n\n msgs.push(new Mailbox.$Message(_this.$account.id, _this, data));\n\n return msgs;\n }, _this.$messages);\n\n // Extend Message objects with received headers\n _.each(_this.headers, function(data) {\n var msg = _.object(headers, data),\n i = _this.uidsMap[msg.uid.toString()];\n _.extend(_this.$messages[i], msg);\n });\n }\n Mailbox.$log.debug('mailbox ' + _this.id + ' ready');\n _this.$isLoading = false;\n deferred.resolve(_this.$messages);\n });\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapHeaders\n * @memberof Mailbox.prototype\n * @desc Unwrap a promise and extend matching Message objects using received data.\n * @param {promise} futureHeadersData - a promise of some messages metadata\n */\n Mailbox.prototype.$unwrapHeaders = function(futureHeadersData) {\n var _this = this;\n\n futureHeadersData.then(function(data) {\n Mailbox.$timeout(function() {\n var headers, j;\n if (data.length > 0) {\n // First entry of 'headers' are keys\n headers = _.invoke(data[0], 'toLowerCase');\n data.splice(0, 1);\n _.each(data, function(messageHeaders) {\n messageHeaders = _.object(headers, messageHeaders);\n j = _this.uidsMap[messageHeaders.uid.toString()];\n if (angular.isDefined(j)) {\n _.extend(_this.$messages[j], messageHeaders);\n }\n });\n }\n });\n });\n };\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Message\n * @constructor\n * @param {string} accountId - the account ID\n * @param {string} mailboxPath - an array of the mailbox path components\n * @param {object} futureAddressBookData - either an object literal or a promise\n */\n function Message(accountId, mailbox, futureMessageData) {\n this.accountId = accountId;\n this.$mailbox = mailbox;\n this.$hasUnsafeContent = false;\n this.$loadUnsafeContent = false;\n this.$showDetailedRecipients = false;\n this.editable = {to: [], cc: [], bcc: []};\n // Data is immediately available\n if (typeof futureMessageData.then !== 'function') {\n //console.debug(JSON.stringify(futureMessageData, undefined, 2));\n angular.extend(this, futureMessageData);\n this.id = this.$absolutePath();\n this.$formatFullAddresses();\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureMessageData);\n }\n this.selected = false;\n\n //console.log(\"new message instance! \" + this.$tapette);\n this.$tapette += 1;\n }\n\n /**\n * @memberof Message\n * @desc The factory we'll use to register with Angular\n * @returns the Message constructor\n */\n Message.$factory = ['$q', '$timeout', '$log', '$sce', 'sgSettings', 'Gravatar', 'Resource', 'Preferences', function($q, $timeout, $log, $sce, Settings, Gravatar, Resource, Preferences) {\n angular.extend(Message, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $sce: $sce,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Mail', Settings.activeUser()),\n $tapette: 0\n });\n // Initialize tags form user's defaults\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailLabelsColors) {\n Message.$tags = Preferences.defaults.SOGoMailLabelsColors;\n }\n });\n\n return Message; // return constructor\n }];\n\n /**\n * @module SOGo.MailerUI\n * @desc Factory registration of Message in Angular module.\n */\n try {\n angular.module('SOGo.MailerUI');\n }\n catch(e) {\n angular.module('SOGo.MailerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.MailerUI')\n .factory('Message', Message.$factory);\n\n /**\n * @function filterTags\n * @memberof Message.prototype\n * @desc Search for tags (ie., mail labels) matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Message.filterTags = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Message.$tags), function(tag) {\n var value = Message.$tags[tag];\n return value[0].search(re) != -1;\n });\n };\n\n /**\n * @function $absolutePath\n * @memberof Message.prototype\n * @desc Build the path of the message\n * @returns a string representing the path relative to the mail module\n */\n Message.prototype.$absolutePath = function(options) {\n var path;\n\n path = _.map(this.$mailbox.path.split('/'), function(component) {\n return 'folder' + component.asCSSIdentifier();\n });\n path.splice(0, 0, this.accountId); // insert account ID\n if (options && options.asDraft && this.draftId) {\n path.push(this.draftId); // add draft ID\n }\n else {\n path.push(this.uid); // add message UID\n }\n\n return path.join('/');\n };\n\n /**\n * @function $setUID\n * @memberof Message.prototype\n * @desc Change the UID of the message. This happens when saving a draft.\n * @param {number} uid - the new message UID\n */\n Message.prototype.$setUID = function(uid) {\n var oldUID = this.uid || -1;\n\n if (oldUID != uid) {\n this.uid = uid;\n this.id = this.$absolutePath();\n if (oldUID > -1 && this.$mailbox.uidsMap[oldUID]) {\n this.$mailbox.uidsMap[uid] = this.$mailbox.uidsMap[oldUID];\n this.$mailbox.uidsMap[oldUID] = null;\n }\n }\n };\n\n /**\n * @function $formatFullAddresses\n * @memberof Message.prototype\n * @desc Format all sender and recipients addresses with a complete description (name ).\n * This function also generates a gravatar for each email address, and a short name\n */\n Message.prototype.$formatFullAddresses = function() {\n var _this = this;\n var identities = _.pluck(_this.$mailbox.$account.identities, 'email');\n\n // Build long representation of email addresses\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n _.each(_this[type], function(data, i) {\n if (data.name && data.name != data.email) {\n data.full = data.name + ' <' + data.email + '>';\n\n // If we have \"Alice Foo\" as name, we grab \"Alice\"\n if (data.name.split(' ').length)\n data.shortname = data.name.split(' ')[0].replace('\\'','');\n }\n else {\n data.full = '<' + data.email + '>';\n data.shortname = data.email.split('@')[0];\n }\n\n // Generate the gravatar\n data.image = Message.$gravatar(data.email, 32);\n\n // If the current user is the recepient, overwrite\n // the short name with 'me'\n if (_.indexOf(identities, data.email) >= 0)\n data.shortname = l('me');\n });\n });\n };\n\n /**\n * @function $shortRecipients\n * @memberof Message.prototype\n * @desc Format all recipients into a very compact string\n * @returns a compacted string of all recipients\n */\n Message.prototype.$shortRecipients = function() {\n var _this = this;\n var result = [];\n\n // Build long representation of email addresses\n _.each(['to', 'cc', 'bcc'], function(type) {\n _.each(_this[type], function(data, i) {\n result.push(data.shortname);\n });\n });\n\n return result.join(', ');\n };\n\n /**\n * @function $shortAddress\n * @memberof Message.prototype\n * @desc Format the first address of a specific type with a short description.\n * @returns a string of the name or the email of the envelope address type\n */\n Message.prototype.$shortAddress = function(type) {\n var address = '';\n if (this[type] && this[type].length > 0) {\n address = this[type][0].name || this[type][0].email || '';\n }\n\n return address;\n };\n\n /**\n * @function loadUnsafeContent\n * @memberof Message.prototype\n * @desc Mark the message to load unsafe resources when calling $content().\n */\n Message.prototype.loadUnsafeContent = function() {\n this.$loadUnsafeContent = true;\n };\n\n /**\n * @function showDetailedRecipients\n * @memberof Message.prototype\n * @desc Mark the message to show all to/cc recipients.\n */\n Message.prototype.showDetailedRecipients = function() {\n this.$showDetailedRecipients = true;\n };\n\n /**\n * @function $content\n * @memberof Message.prototype\n * @desc Get the message body as accepted by SCE (Angular Strict Contextual Escaping).\n * @returns the HTML representation of the body\n */\n Message.prototype.$content = function() {\n var _this = this,\n parts = [],\n _visit = function(part) {\n part.msgclass = 'msg-attachment-other';\n if (part.type == 'UIxMailPartAlternativeViewer') {\n _visit(_.find(part.content, function(alternatePart) {\n return part.preferredPart == alternatePart.contentType;\n }));\n }\n // Can be used for UIxMailPartMixedViewer and UIxMailPartMessageViewer\n else if (angular.isArray(part.content)) {\n _.each(part.content, function(mixedPart) {\n _visit(mixedPart);\n });\n }\n else {\n if (angular.isUndefined(part.safeContent)) {\n // Keep a copy of the original content\n part.safeContent = part.content;\n _this.$hasUnsafeContent = (part.safeContent.indexOf(' unsafe-') > -1);\n }\n if (part.type == 'UIxMailPartHTMLViewer') {\n part.html = true;\n if (_this.$loadUnsafeContent) {\n if (angular.isUndefined(part.unsafeContent)) {\n part.unsafeContent = document.createElement('div');\n part.unsafeContent.innerHTML = part.safeContent;\n angular.forEach(['src', 'data', 'classid', 'background', 'style'], function(suffix) {\n var elements = part.unsafeContent.querySelectorAll('[unsafe-' + suffix + ']'),\n element,\n value,\n i;\n for (i = 0; i < elements.length; i++) {\n element = angular.element(elements[i]);\n value = element.attr('unsafe-' + suffix);\n element.attr(suffix, value);\n element.removeAttr('unsafe-' + suffix);\n }\n });\n }\n part.content = Message.$sce.trustAs('html', part.unsafeContent.innerHTML);\n }\n else {\n part.content = Message.$sce.trustAs('html', part.safeContent);\n }\n parts.push(part);\n }\n else if (part.type == 'UIxMailPartICalViewer' ||\n part.type == 'UIxMailPartImageViewer' ||\n part.type == 'UIxMailPartLinkViewer') {\n\n // UIxMailPartICalViewer injects 'participants'\n if (part.participants) {\n _.each(part.participants, function(participant) {\n participant.image = Message.$gravatar(participant.email, 32);\n });\n }\n\n if (part.type == 'UIxMailPartImageViewer')\n part.msgclass = 'msg-attachment-image';\n\n // Trusted content that can be compiled (Angularly-speaking)\n part.compile = true;\n parts.push(part);\n }\n else {\n part.html = true;\n part.content = Message.$sce.trustAs('html', part.safeContent);\n parts.push(part);\n }\n }\n };\n _visit(this.parts);\n\n return parts;\n };\n\n /**\n * @function $editableContent\n * @memberof Message.prototype\n * @desc First, fetch the draft ID that corresponds to the temporary draft object on the SOGo server.\n * Secondly, fetch the editable message body along with other metadata such as the recipients.\n * @returns the HTML representation of the body\n */\n Message.prototype.$editableContent = function() {\n var _this = this;\n\n return Message.$$resource.fetch(this.id, 'edit').then(function(data) {\n angular.extend(_this, data);\n return Message.$$resource.fetch(_this.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('editable = ' + JSON.stringify(data, undefined, 2));\n angular.extend(_this.editable, data);\n return data.text;\n });\n });\n };\n\n /**\n * @function addTag\n * @memberof Message.prototype\n * @desc Add a mail tag on the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.addTag = function(tag) {\n return this.$addOrRemoveTag('add', tag);\n };\n\n /**\n * @function removeTag\n * @memberof Message.prototype\n * @desc Remove a mail tag from the current message.\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.removeTag = function(tag) {\n return this.$addOrRemoveTag('remove', tag);\n };\n\n /**\n * @function $addOrRemoveTag\n * @memberof Message.prototype\n * @desc Add or remove a mail tag on the current message.\n * @param {string} operation - the operation name to perform\n * @param {string} tag - the tag name\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$addOrRemoveTag = function(operation, tag) {\n var data = {\n operation: operation,\n msgUIDs: [this.uid],\n flags: tag\n };\n\n if (tag)\n return Message.$$resource.post(this.$mailbox.$id(), 'addOrRemoveLabel', data);\n };\n\n /**\n * @function $imipAction\n * @memberof Message.prototype\n * @desc Perform IMIP actions on the current message.\n * @param {string} path - the path of the IMIP calendar part \n * @param {string} action - the the IMIP action to perform\n * @param {object} data - the delegation info \n */\n Message.prototype.$imipAction = function(path, action, data) {\n var _this = this;\n Message.$$resource.post([this.id, path].join('/'), action, data).then(function(data) {\n Message.$timeout(function() {\n _this.$reload();\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $sendMDN\n * @memberof Message.prototype\n * @desc Send MDN response for current email message\n */\n Message.prototype.$sendMDN = function() {\n this.shouldAskReceipt = 0;\n return Message.$$resource.post(this.id, 'sendMDN');\n };\n\n /**\n * @function $deleteAttachment\n * @memberof Message.prototype\n * @desc Delete an attachment from a message being composed\n * @param {string} filename - the filename of the attachment to delete\n */\n Message.prototype.$deleteAttachment = function(filename) {\n var action = 'deleteAttachment?filename=' + filename;\n var _this = this;\n Message.$$resource.post(this.$absolutePath({asDraft: true}), action).then(function(data) {\n Message.$timeout(function() {\n _this.editable.attachmentAttrs = _.filter(_this.editable.attachmentAttrs, function(attachment) {\n return attachment.filename != filename;\n });\n }, function() {\n // TODO: show toast\n });\n });\n };\n\n /**\n * @function $markAsFlaggedOrUnflagged\n * @memberof Message.prototype\n * @desc Add or remove a the \\\\Flagged flag on the current message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.toggleFlag = function() {\n var _this = this,\n action = 'markMessageFlagged';\n\n if (this.isflagged)\n action = 'markMessageUnflagged';\n\n return Message.$$resource.post(this.id, action).then(function(data) {\n Message.$timeout(function() {\n _this.isflagged = !_this.isflagged;\n });\n });\n };\n\n /**\n * @function $reload\n * @memberof Message.prototype\n * @desc Fetch the viewable message body along with other metadata such as the list of attachments.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$reload = function() {\n var futureMessageData;\n\n futureMessageData = Message.$$resource.fetch(this.id, 'view');\n\n return this.$unwrap(futureMessageData);\n };\n\n /**\n * @function $reply\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$reply = function() {\n return this.$newDraft('reply');\n };\n\n /**\n * @function $replyAll\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply to the sender and all recipients.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$replyAll = function() {\n return this.$newDraft('replyall');\n };\n\n /**\n * @function $forward\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a forward.\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$forward = function() {\n return this.$newDraft('forward');\n };\n\n /**\n * @function $newDraft\n * @memberof Message.prototype\n * @desc Prepare a new Message object as a reply or a forward of the current message and associated\n * to the draft mailbox.\n * @see {@link Account.$newMessage}\n * @see {@link Message.$editableContent}\n * @see {@link Message.$reply}\n * @see {@link Message.$replyAll}\n * @see {@link Message.$forwad}\n * @param {string} action - the HTTP action to perform on the message\n * @returns a promise of the HTTP operations\n */\n Message.prototype.$newDraft = function(action) {\n var _this = this;\n\n // Query server for draft folder and draft UID\n return Message.$$resource.fetch(this.id, action).then(function(data) {\n var mailbox, message;\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n mailbox = _this.$mailbox.$account.$getMailboxByPath(data.mailboxPath);\n message = new Message(data.accountId, mailbox, data);\n // Fetch draft initial data\n return Message.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) {\n Message.$log.debug('New ' + action + ': ' + JSON.stringify(data, undefined, 2));\n angular.extend(message.editable, data);\n return message;\n });\n });\n };\n\n /**\n * @function $save\n * @memberof Message.prototype\n * @desc Save the message to the server.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$save = function() {\n var _this = this,\n data = this.editable;\n\n Message.$log.debug('save = ' + JSON.stringify(data, undefined, 2));\n\n return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {\n Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));\n _this.$setUID(response.uid);\n _this.$reload(); // fetch a new viewable version of the message\n });\n };\n\n /**\n * @function $send\n * @memberof Message.prototype\n * @desc Send the message.\n * @returns a promise of the HTTP operation\n */\n Message.prototype.$send = function() {\n var data = angular.copy(this.editable),\n deferred = Message.$q.defer();\n\n Message.$log.debug('send = ' + JSON.stringify(data, undefined, 2));\n\n Message.$$resource.post(this.$absolutePath({asDraft: true}), 'send', data).then(function(data) {\n if (data.status == 'success') {\n deferred.resolve(data);\n }\n else {\n deferred.reject(data);\n }\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrap\n * @memberof Message.prototype\n * @desc Unwrap a promise. \n * @param {promise} futureMessageData - a promise of some of the Message's data\n */\n Message.prototype.$unwrap = function(futureMessageData) {\n var _this = this,\n deferred = Message.$q.defer();\n\n // Expose the promise\n this.$futureMessageData = futureMessageData;\n\n // Resolve the promise\n this.$futureMessageData.then(function(data) {\n // Calling $timeout will force Angular to refresh the view\n Message.$timeout(function() {\n angular.extend(_this, data);\n _this.id = _this.$absolutePath();\n _this.$formatFullAddresses();\n _this.$loadUnsafeContent = false;\n deferred.resolve(_this);\n });\n if (!_this.isread) {\n Message.$$resource.fetch(_this.id, 'markMessageRead').then(function() {\n Message.$timeout(function() {\n _this.isread = true;\n _this.$mailbox.unseenCount--;\n });\n });\n }\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Message.$log.error(_this.error);\n deferred.reject();\n });\n\n return deferred.promise;\n };\n\n /**\n * @function $omit\n * @memberof Message.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Message instance\n */\n Message.prototype.$omit = function() {\n var message = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n message[key] = value;\n }\n });\n\n // Format addresses as arrays\n _.each(['from', 'to', 'cc', 'bcc', 'reply-to'], function(type) {\n if (message[type])\n message[type] = _.invoke(message[type].split(','), 'trim');\n });\n\n //Message.$log.debug(JSON.stringify(message, undefined, 2));\n return message;\n };\n\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.services.js b/UI/WebServerResources/js/Scheduler.services.js index d514697de..991a7e733 100644 --- a/UI/WebServerResources/js/Scheduler.services.js +++ b/UI/WebServerResources/js/Scheduler.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function Calendar(futureCalendarData){if(this.init(futureCalendarData),this.name&&!this.id){var newCalendarData=Calendar.$$resource.create("createFolder",this.name);angular.extend(this,newCalendarData)}this.id&&(this.$acl=new Calendar.$$Acl("Calendar/"+this.id))}Calendar.$factory=["$q","$timeout","$log","sgSettings","Resource","Component","Acl",function($q,$timeout,$log,Settings,Resource,Component,Acl){return angular.extend(Calendar,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$Component:Component,$$Acl:Acl,activeUser:Settings.activeUser()}),Calendar}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Calendar",Calendar.$factory),Calendar.$add=function(calendar){var list,sibling,i;list=calendar.isWebCalendar?this.$webcalendars:calendar.isSubscription?this.$subscriptions:this.$calendars,sibling=_.find(list,function(o){return"personal"!=o.id&&1===o.name.localeCompare(calendar.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,calendar)},Calendar.$findAll=function(data){var _this=this;return data&&(this.$calendars=[],this.$subscriptions=[],this.$webcalendars=[],angular.forEach(data,function(o,i){var calendar=new Calendar(o);calendar.isWebCalendar?_this.$webcalendars.push(calendar):calendar.isSubscription?_this.$subscriptions.push(calendar):_this.$calendars.push(calendar)})),_.union(this.$calendars,this.$subscriptions,this.$webcalendars)},Calendar.$get=function(id){var calendar;return calendar=_.find(Calendar.$calendars,function(o){return o.id==id}),calendar||(calendar=_.find(Calendar.$subscriptions,function(o){return o.id==id})),calendar||(calendar=_.find(Calendar.$webcalendars,function(o){return o.id==id})),calendar},Calendar.$subscribe=function(uid,path){var _this=this;return Calendar.$$resource.userResource(uid).fetch(path,"subscribe").then(function(calendarData){var calendar=new Calendar(calendarData);return _.find(_this.$subscriptions,function(o){return o.id==calendarData.id})||Calendar.$add(calendar),calendar})},Calendar.$addWebCalendar=function(url){var _this=this,d=Calendar.$q.defer();return _.find(_this.$webcalendars,function(o){return o.urls.webCalendarURL==url})?d.reject():Calendar.$$resource.post(null,"addWebCalendar",{url:url}).then(function(calendarData){angular.extend(calendarData,{isWebCalendar:!0,isEditable:!0,isRemote:!1,owner:Calendar.activeUser.login,urls:{webCalendarURL:url}});var calendar=new Calendar(calendarData);Calendar.$add(calendar),Calendar.$$resource.fetch(calendar.id,"reload").then(function(data){Calendar.$log.debug(JSON.stringify(data,void 0,2))}),d.resolve()},function(){d.reject()}),d.promise},Calendar.prototype.init=function(data){angular.extend(this,data),this.isOwned=Calendar.activeUser.isSuperUser||this.owner==Calendar.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=Calendar.activeUser.login},Calendar.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+this.id},Calendar.prototype.$rename=function(name){var i=_.indexOf(_.pluck(Calendar.$calendars,"id"),this.id);return this.name=name,Calendar.$calendars.splice(i,1),Calendar.$add(this),this.$save()},Calendar.prototype.$delete=function(){var list,promise,_this=this,d=Calendar.$q.defer();return this.isSubscription?(promise=Calendar.$$resource.fetch(this.id,"unsubscribe"),list=Calendar.$subscriptions):(promise=Calendar.$$resource.remove(this.id),list=this.isWebCalendar?Calendar.$webcalendars:Calendar.$calendars),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},Calendar.$deleteComponents=function(components){var calendars={},_this=this;_.forEach(components,function(component){angular.isDefined(calendars[component.c_folder])||(calendars[component.c_folder]=[]),calendars[component.c_folder].push(component.c_name)}),_.forEach(calendars,function(uids,c_folder){Calendar.$$resource.post(c_folder,"batchDelete",{uids:uids})}),_this.$Component.$events=_.difference(_this.$Component.$events,components),_this.$Component.$tasks=_.difference(_this.$Component.$tasks,components)},Calendar.prototype.$save=function(){return Calendar.$$resource.save(this.id,this.$omit()).then(function(data){return data})},Calendar.prototype.$setActivation=function(){return Calendar.$$resource.fetch(this.id,(this.active?"":"de")+"activateFolder")},Calendar.prototype.$getComponent=function(componentId,recurrenceId){return Calendar.$Component.$find(this.id,componentId,recurrenceId)},Calendar.prototype.$omit=function(){var calendar={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(calendar[key]=value)}),calendar}}(),function(){"use strict";function Component(futureComponentData){if("function"!=typeof futureComponentData.then){if(this.init(futureComponentData),this.pid&&!this.id){var newComponentData=Component.$$resource.newguid(this.pid);this.$unwrap(newComponentData),this.isNew=!0}}else this.$unwrap(futureComponentData)}Component.$factory=["$q","$timeout","$log","sgSettings","Preferences","Gravatar","Resource",function($q,$timeout,$log,Settings,Preferences,Gravatar,Resource){return angular.extend(Component,{$q:$q,$timeout:$timeout,$log:$log,$Preferences:Preferences,$gravatar:Gravatar,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),timeFormat:"%H:%M",$query:{value:"",search:"title_Category_Location"},$queryEvents:{sort:"start",asc:1,filterpopup:"view_next7"},$queryTasks:{sort:"status",asc:1,filterpopup:"view_incomplete"}}),Preferences.ready().then(function(){Preferences.settings.Calendar.EventsFilterState&&(Component.$queryEvents.filterpopup=Preferences.settings.Calendar.EventsFilterState),Preferences.settings.Calendar.TasksFilterState&&(Component.$queryTasks.filterpopup=Preferences.settings.Calendar.TasksFilterState),Preferences.settings.Calendar.EventsSortingState&&(Component.$queryEvents.sort=Preferences.settings.Calendar.EventsSortingState[0],Component.$queryEvents.asc=parseInt(Preferences.settings.Calendar.EventsSortingState[1])),Preferences.settings.Calendar.TasksSortingState&&(Component.$queryTasks.sort=Preferences.settings.Calendar.TasksSortingState[0],Component.$queryTasks.asc=parseInt(Preferences.settings.Calendar.TasksSortingState[1])),Component.$queryTasks.show_completed=parseInt(Preferences.settings.ShowCompletedTasks),Component.$categories=Preferences.defaults.SOGoCalendarCategoriesColors,Preferences.defaults.SOGoTimeFormat&&(Component.timeFormat=Preferences.defaults.SOGoTimeFormat)}),Component}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Component",Component.$factory),Component.$selectedCount=function(){var count;return count=0,Component.$events&&(count=_.filter(Component.$events,function(event){return event.selected}).length),Component.$tasks&&(count=_.filter(Component.$tasks,function(event){return event.selected}).length),count},Component.$filter=function(type,options){var _this=this,now=new Date,day=now.getDate(),month=now.getMonth()+1,year=now.getFullYear(),queryKey="$query"+type.capitalize(),params={day:""+year+(10>month?"0":"")+month+(10>day?"0":"")+day};return this.$Preferences.ready().then(function(){var futureComponentData,otherType,dirty=!1;return angular.extend(_this.$query,params),options&&_.each(_.keys(options),function(key){dirty|=_this.$query[key]&&options[key]!=Component.$query[key],"reload"==key&&options[key]?dirty=!0:angular.isDefined(_this.$query[key])?_this.$query[key]=options[key]:_this[queryKey][key]=options[key]}),futureComponentData=_this.$$resource.fetch(null,type+"list",angular.extend(_this[queryKey],_this.$query)),otherType="tasks"==type?"$events":"$tasks",dirty&&(delete Component[otherType],Component.$log.debug("force reload of "+otherType)),_this.$unwrapCollection(type,futureComponentData)})},Component.$find=function(calendarId,componentId,occurrenceId){var futureComponentData,path=[calendarId,componentId];return occurrenceId&&path.push(occurrenceId),futureComponentData=this.$$resource.fetch(path.join("/"),"view"),new Component(futureComponentData)},Component.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Component.$categories),function(category){return-1!=category.search(re)})},Component.saveSelectedList=function(componentType){return this.$$resource.post(null,"saveSelectedList",{list:componentType+"ListView"})},Component.$eventsBlocksForView=function(view,date){var viewAction,startDate,endDate;return"day"==view?(viewAction="dayView",startDate=endDate=date):"week"==view?(viewAction="weekView",startDate=date.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.addDays(6)):"month"==view&&(viewAction="monthView",startDate=date,startDate.setDate(1),startDate=startDate.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.setMonth(endDate.getMonth()+1),endDate.addDays(-1),endDate=endDate.endOfWeek()),this.$eventsBlocks(viewAction,startDate,endDate)},Component.$eventsBlocks=function(view,startDate,endDate){var params,futureComponentData,i,deferred=Component.$q.defer();return params={view:view.toLowerCase(),sd:startDate.getDayString(),ed:endDate.getDayString()},Component.$log.debug("eventsblocks "+JSON.stringify(params,void 0,2)),futureComponentData=this.$$resource.fetch(null,"eventsblocks",params),futureComponentData.then(function(data){Component.$timeout(function(){var components=[],blocks={};for(_.reduce(data.events,function(objects,eventData,i){var componentData=_.object(data.eventsFields,eventData),start=new Date(1e3*componentData.c_startdate);return componentData.hour=start.getHourString(),objects.push(new Component(componentData)),objects},components),_.each(_.flatten(data.blocks),function(block){block.component=components[block.nbr]}),i=0;i1||this.repeat.days&&this.repeat.days.length>0||this.repeat.monthdays&&this.repeat.monthdays.length>0||this.repeat.months&&this.repeat.months.length>0);return b},Component.prototype.isEditable=function(){return!this.occurrenceId&&!this.isReadOnly},Component.prototype.isEditableOccurrence=function(){return this.occurrenceId&&!this.isReadOnly},Component.prototype.isInvitation=function(){return!this.occurrenceId&&this.userHasRSVP},Component.prototype.isInvitationOccurrence=function(){return this.occurrenceId&&this.userHasRSVP},Component.prototype.isReadOnly=function(){return this.isReadOnly&&!this.userHasRSVP},Component.prototype.enablePercentComplete=function(){return this.component="not-specified"!=this.status&&"cancelled"!=this.status},Component.prototype.coversFreeBusy=function(day,hour,quarter){var b=angular.isDefined(this.freebusy[day])&&angular.isDefined(this.freebusy[day][hour])&&1==this.freebusy[day][hour][quarter];return b},Component.prototype.updateFreeBusyCoverage=function(){var _this=this,freebusy={};if(this.start&&this.end){var roundedStart=new Date(this.start.getTime()),roundedEnd=new Date(this.end.getTime()),startQuarter=parseInt(roundedStart.getMinutes()/15+.5),endQuarter=parseInt(roundedEnd.getMinutes()/15+.5);return roundedStart.setMinutes(15*startQuarter),roundedEnd.setMinutes(15*endQuarter),_.each(roundedStart.daysUpTo(roundedEnd),function(date,index){var hourKey,currentDay=date.getDate(),dayKey=date.getDayString();if(dayKey==_this.start.getDayString())for(hourKey=date.getHours().toString(),freebusy[dayKey]={},freebusy[dayKey][hourKey]=[];startQuarter>0;)freebusy[dayKey][hourKey].push(0),startQuarter--;else date=date.beginOfDay(),freebusy[dayKey]={};for(;date.getTime()<_this.end.getTime()&&date.getDate()==currentDay;)hourKey=date.getHours().toString(),angular.isUndefined(freebusy[dayKey][hourKey])&&(freebusy[dayKey][hourKey]=[]),freebusy[dayKey][hourKey].push(1),date.addMinutes(15)}),freebusy}},Component.prototype.updateFreeBusy=function(attendee){var params,url,days;attendee.uid&&(params={sday:this.start.getDayString(),eday:this.end.getDayString()},url=["..","..",attendee.uid,"freebusy.ifb"],days=_.map(this.start.daysUpTo(this.end),function(day){return day.getDayString()}),angular.isUndefined(attendee.freebusy)&&(attendee.freebusy={}),Component.$$resource.fetch(url.join("/"),"ajaxRead",params).then(function(data){_.each(days,function(day){var hour;angular.isUndefined(attendee.freebusy[day])&&(attendee.freebusy[day]={}),angular.isUndefined(data[day])&&(data[day]={});for(var i=0;23>=i;i++)hour=i.toString(),data[day][hour]?attendee.freebusy[day][hour]=[data[day][hour][0],data[day][hour][15],data[day][hour][30],data[day][hour][45]]:attendee.freebusy[day][hour]=[0,0,0,0]})}))},Component.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+(this.destinationCalendar||this.c_folder)},Component.prototype.addAttendee=function(card){var attendee;card&&(attendee={name:card.c_cn,email:card.$preferredEmail(),role:"req-participant",status:"needs-action",uid:card.c_uid},_.find(this.attendees,function(o){return o.email==attendee.email})||(attendee.image=Component.$gravatar(attendee.email,32),this.attendees?this.attendees.push(attendee):this.attendees=[attendee],this.updateFreeBusy(attendee)))},Component.prototype.hasAttendee=function(card){var attendee=_.find(this.attendees,function(attendee){return _.find(card.emails,function(email){return email.value==attendee.email})});return angular.isDefined(attendee)},Component.prototype.canRemindAttendeesByEmail=function(){return"email"==this.alarm.action&&!this.isReadOnly&&this.attendees&&this.attendees.length>0},Component.prototype.addAttachUrl=function(attachUrl){if(angular.isUndefined(this.attachUrls))this.attachUrls=[{value:attachUrl}];else{for(var i=0;i-1&&this.attachUrls.length>index&&this.attachUrls.splice(index,1)},Component.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&delete _this[key]}),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit(!0)},Component.prototype.$reply=function(){var data,_this=this,path=[this.pid,this.id];return this.occurrenceId&&path.push(this.occurrenceId),data={reply:this.reply,delegatedTo:this.delegatedTo,alarm:this.$hasAlarm?this.alarm:{}},Component.$$resource.save(path.join("/"),data,{action:"rsvpAppointment"}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$save=function(){var options,_this=this,path=[this.pid,this.id];return this.isNew&&(options={action:"saveAs"+this.type.capitalize()}),this.occurrenceId&&path.push(this.occurrenceId),Component.$$resource.save(path.join("/"),this.$omit(),options).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$unwrap=function(futureComponentData){var _this=this;this.$futureComponentData=futureComponentData,this.$futureComponentData.then(function(data){_this.init(data),_this.$shadowData=_this.$omit()},function(data){angular.extend(_this,data),_this.isError=!0,Component.$log.error(_this.error)})},Component.prototype.$omit=function(){function formatTime(dateString){var date=new Date(dateString.substring(0,10)+" "+dateString.substring(11,16)),hours=date.getHours(),minutes=date.getMinutes();return 10>hours&&(hours="0"+hours),10>minutes&&(minutes="0"+minutes),hours+":"+minutes}var component={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(component[key]=angular.copy(value))}),component.startTime=component.startDate?formatTime(component.startDate):"",component.endTime=component.endDate?formatTime(component.endDate):"",this.$hasCustomRepeat?"monthly"==this.repeat.frequency&&this.repeat.month.type&&"byday"==this.repeat.month.type||"yearly"==this.repeat.frequency&&this.repeat.year.byday?(delete component.repeat.monthdays,component.repeat.days=[{day:this.repeat.month.day,occurrence:this.repeat.month.occurrence.toString()}]):this.repeat.month.type&&delete component.repeat.days:this.repeat.frequency&&(component.repeat={frequency:this.repeat.frequency}),this.repeat.frequency?"until"==this.repeat.end&&this.repeat.until?component.repeat.until=this.repeat.until.stringWithSeparator("-"):"count"==this.repeat.end&&this.repeat.count?component.repeat.count=this.repeat.count:(delete component.repeat.until,delete component.repeat.count):delete component.repeat,this.$hasAlarm?!this.alarm.action||"email"!=this.alarm.action||this.attendees&&this.attendees.length>0||(this.alarm.attendees=0,this.alarm.organizer=1):component.alarm={},component}}(); +!function(){"use strict";function Calendar(futureCalendarData){if(this.init(futureCalendarData),this.name&&!this.id){var newCalendarData=Calendar.$$resource.create("createFolder",this.name);angular.extend(this,newCalendarData)}this.id&&(this.$acl=new Calendar.$$Acl("Calendar/"+this.id))}Calendar.$factory=["$q","$timeout","$log","sgSettings","Resource","Component","Acl",function($q,$timeout,$log,Settings,Resource,Component,Acl){return angular.extend(Calendar,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Calendar",Settings.activeUser()),$Component:Component,$$Acl:Acl,activeUser:Settings.activeUser()}),Calendar}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Calendar",Calendar.$factory),Calendar.$add=function(calendar){var list,sibling,i;list=calendar.isWebCalendar?this.$webcalendars:calendar.isSubscription?this.$subscriptions:this.$calendars,sibling=_.find(list,function(o){return"personal"!=o.id&&1===o.name.localeCompare(calendar.name)}),i=sibling?_.indexOf(_.pluck(list,"id"),sibling.id):1,list.splice(i,0,calendar)},Calendar.$findAll=function(data){var _this=this;return data&&(this.$calendars=[],this.$subscriptions=[],this.$webcalendars=[],angular.forEach(data,function(o,i){var calendar=new Calendar(o);calendar.isWebCalendar?_this.$webcalendars.push(calendar):calendar.isSubscription?_this.$subscriptions.push(calendar):_this.$calendars.push(calendar)})),_.union(this.$calendars,this.$subscriptions,this.$webcalendars)},Calendar.$get=function(id){var calendar;return calendar=_.find(Calendar.$calendars,function(o){return o.id==id}),calendar||(calendar=_.find(Calendar.$subscriptions,function(o){return o.id==id})),calendar||(calendar=_.find(Calendar.$webcalendars,function(o){return o.id==id})),calendar},Calendar.$subscribe=function(uid,path){var _this=this;return Calendar.$$resource.userResource(uid).fetch(path,"subscribe").then(function(calendarData){var calendar=new Calendar(calendarData);return _.find(_this.$subscriptions,function(o){return o.id==calendarData.id})||Calendar.$add(calendar),calendar})},Calendar.$addWebCalendar=function(url){var _this=this,d=Calendar.$q.defer();return _.find(_this.$webcalendars,function(o){return o.urls.webCalendarURL==url})?d.reject():Calendar.$$resource.post(null,"addWebCalendar",{url:url}).then(function(calendarData){angular.extend(calendarData,{isWebCalendar:!0,isEditable:!0,isRemote:!1,owner:Calendar.activeUser.login,urls:{webCalendarURL:url}});var calendar=new Calendar(calendarData);Calendar.$add(calendar),Calendar.$$resource.fetch(calendar.id,"reload").then(function(data){Calendar.$log.debug(JSON.stringify(data,void 0,2))}),d.resolve()},function(){d.reject()}),d.promise},Calendar.prototype.init=function(data){angular.extend(this,data),this.isOwned=Calendar.activeUser.isSuperUser||this.owner==Calendar.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=Calendar.activeUser.login},Calendar.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+this.id},Calendar.prototype.$rename=function(name){var i=_.indexOf(_.pluck(Calendar.$calendars,"id"),this.id);return this.name=name,Calendar.$calendars.splice(i,1),Calendar.$add(this),this.$save()},Calendar.prototype.$delete=function(){var list,promise,_this=this,d=Calendar.$q.defer();return this.isSubscription?(promise=Calendar.$$resource.fetch(this.id,"unsubscribe"),list=Calendar.$subscriptions):(promise=Calendar.$$resource.remove(this.id),list=this.isWebCalendar?Calendar.$webcalendars:Calendar.$calendars),promise.then(function(){var i=_.indexOf(_.pluck(list,"id"),_this.id);list.splice(i,1),d.resolve()},function(data,status){d.reject(data)}),d.promise},Calendar.$deleteComponents=function(components){var calendars={},_this=this;_.forEach(components,function(component){angular.isDefined(calendars[component.c_folder])||(calendars[component.c_folder]=[]),calendars[component.c_folder].push(component.c_name)}),_.forEach(calendars,function(uids,c_folder){Calendar.$$resource.post(c_folder,"batchDelete",{uids:uids})}),_this.$Component.$events=_.difference(_this.$Component.$events,components),_this.$Component.$tasks=_.difference(_this.$Component.$tasks,components)},Calendar.prototype.$save=function(){return Calendar.$$resource.save(this.id,this.$omit()).then(function(data){return data})},Calendar.prototype.$setActivation=function(){return Calendar.$$resource.fetch(this.id,(this.active?"":"de")+"activateFolder")},Calendar.prototype.$getComponent=function(componentId,recurrenceId){return Calendar.$Component.$find(this.id,componentId,recurrenceId)},Calendar.prototype.$omit=function(){var calendar={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(calendar[key]=value)}),calendar}}(),function(){"use strict";function Component(futureComponentData){if("function"!=typeof futureComponentData.then){if(this.init(futureComponentData),this.pid&&!this.id){var newComponentData=Component.$$resource.newguid(this.pid);this.$unwrap(newComponentData),this.isNew=!0}}else this.$unwrap(futureComponentData)}Component.$factory=["$q","$timeout","$log","sgSettings","Preferences","Gravatar","Resource",function($q,$timeout,$log,Settings,Preferences,Gravatar,Resource){return angular.extend(Component,{$q:$q,$timeout:$timeout,$log:$log,$Preferences:Preferences,$gravatar:Gravatar,$$resource:new Resource(Settings.baseURL(),Settings.activeUser()),timeFormat:"%H:%M",$query:{value:"",search:"title_Category_Location"},$queryEvents:{sort:"start",asc:1,filterpopup:"view_next7"},$queryTasks:{sort:"status",asc:1,filterpopup:"view_incomplete"}}),Preferences.ready().then(function(){Preferences.settings.Calendar.EventsFilterState&&(Component.$queryEvents.filterpopup=Preferences.settings.Calendar.EventsFilterState),Preferences.settings.Calendar.TasksFilterState&&(Component.$queryTasks.filterpopup=Preferences.settings.Calendar.TasksFilterState),Preferences.settings.Calendar.EventsSortingState&&(Component.$queryEvents.sort=Preferences.settings.Calendar.EventsSortingState[0],Component.$queryEvents.asc=parseInt(Preferences.settings.Calendar.EventsSortingState[1])),Preferences.settings.Calendar.TasksSortingState&&(Component.$queryTasks.sort=Preferences.settings.Calendar.TasksSortingState[0],Component.$queryTasks.asc=parseInt(Preferences.settings.Calendar.TasksSortingState[1])),Component.$queryTasks.show_completed=parseInt(Preferences.settings.ShowCompletedTasks),Component.$categories=Preferences.defaults.SOGoCalendarCategoriesColors,Preferences.defaults.SOGoTimeFormat&&(Component.timeFormat=Preferences.defaults.SOGoTimeFormat)}),Component}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").factory("Component",Component.$factory),Component.$selectedCount=function(){var count;return count=0,Component.$events&&(count=_.filter(Component.$events,function(event){return event.selected}).length),Component.$tasks&&(count=_.filter(Component.$tasks,function(event){return event.selected}).length),count},Component.$filter=function(type,options){var _this=this,now=new Date,day=now.getDate(),month=now.getMonth()+1,year=now.getFullYear(),queryKey="$query"+type.capitalize(),params={day:""+year+(10>month?"0":"")+month+(10>day?"0":"")+day};return this.$Preferences.ready().then(function(){var futureComponentData,otherType,dirty=!1;return angular.extend(_this.$query,params),options&&_.each(_.keys(options),function(key){dirty|=_this.$query[key]&&options[key]!=Component.$query[key],"reload"==key&&options[key]?dirty=!0:angular.isDefined(_this.$query[key])?_this.$query[key]=options[key]:_this[queryKey][key]=options[key]}),futureComponentData=_this.$$resource.fetch(null,type+"list",angular.extend(_this[queryKey],_this.$query)),otherType="tasks"==type?"$events":"$tasks",dirty&&(delete Component[otherType],Component.$log.debug("force reload of "+otherType)),_this.$unwrapCollection(type,futureComponentData)})},Component.$find=function(calendarId,componentId,occurrenceId){var futureComponentData,path=[calendarId,componentId];return occurrenceId&&path.push(occurrenceId),futureComponentData=this.$$resource.fetch(path.join("/"),"view"),new Component(futureComponentData)},Component.filterCategories=function(query){var re=new RegExp(query,"i");return _.filter(_.keys(Component.$categories),function(category){return-1!=category.search(re)})},Component.saveSelectedList=function(componentType){return this.$$resource.post(null,"saveSelectedList",{list:componentType+"ListView"})},Component.$eventsBlocksForView=function(view,date){var viewAction,startDate,endDate;return"day"==view?(viewAction="dayView",startDate=endDate=date):"week"==view?(viewAction="weekView",startDate=date.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.addDays(6)):"month"==view&&(viewAction="monthView",startDate=date,startDate.setDate(1),startDate=startDate.beginOfWeek(),endDate=new Date,endDate.setTime(startDate.getTime()),endDate.setMonth(endDate.getMonth()+1),endDate.addDays(-1),endDate=endDate.endOfWeek()),this.$eventsBlocks(viewAction,startDate,endDate)},Component.$eventsBlocks=function(view,startDate,endDate){var params,futureComponentData,i,deferred=Component.$q.defer();return params={view:view.toLowerCase(),sd:startDate.getDayString(),ed:endDate.getDayString()},Component.$log.debug("eventsblocks "+JSON.stringify(params,void 0,2)),futureComponentData=this.$$resource.fetch(null,"eventsblocks",params),futureComponentData.then(function(data){Component.$timeout(function(){var components=[],blocks={};for(_.reduce(data.events,function(objects,eventData,i){var componentData=_.object(data.eventsFields,eventData),start=new Date(1e3*componentData.c_startdate);return componentData.hour=start.getHourString(),objects.push(new Component(componentData)),objects},components),_.each(_.flatten(data.blocks),function(block){block.component=components[block.nbr]}),i=0;i1||this.repeat.days&&this.repeat.days.length>0||this.repeat.monthdays&&this.repeat.monthdays.length>0||this.repeat.months&&this.repeat.months.length>0);return b},Component.prototype.isEditable=function(){return!this.occurrenceId&&!this.isReadOnly},Component.prototype.isEditableOccurrence=function(){return this.occurrenceId&&!this.isReadOnly},Component.prototype.isInvitation=function(){return!this.occurrenceId&&this.userHasRSVP},Component.prototype.isInvitationOccurrence=function(){return this.occurrenceId&&this.userHasRSVP},Component.prototype.isReadOnly=function(){return this.isReadOnly&&!this.userHasRSVP},Component.prototype.enablePercentComplete=function(){return this.component="not-specified"!=this.status&&"cancelled"!=this.status},Component.prototype.coversFreeBusy=function(day,hour,quarter){var b=angular.isDefined(this.freebusy[day])&&angular.isDefined(this.freebusy[day][hour])&&1==this.freebusy[day][hour][quarter];return b},Component.prototype.updateFreeBusyCoverage=function(){var _this=this,freebusy={};if(this.start&&this.end){var roundedStart=new Date(this.start.getTime()),roundedEnd=new Date(this.end.getTime()),startQuarter=parseInt(roundedStart.getMinutes()/15+.5),endQuarter=parseInt(roundedEnd.getMinutes()/15+.5);return roundedStart.setMinutes(15*startQuarter),roundedEnd.setMinutes(15*endQuarter),_.each(roundedStart.daysUpTo(roundedEnd),function(date,index){var hourKey,currentDay=date.getDate(),dayKey=date.getDayString();if(dayKey==_this.start.getDayString())for(hourKey=date.getHours().toString(),freebusy[dayKey]={},freebusy[dayKey][hourKey]=[];startQuarter>0;)freebusy[dayKey][hourKey].push(0),startQuarter--;else date=date.beginOfDay(),freebusy[dayKey]={};for(;date.getTime()<_this.end.getTime()&&date.getDate()==currentDay;)hourKey=date.getHours().toString(),angular.isUndefined(freebusy[dayKey][hourKey])&&(freebusy[dayKey][hourKey]=[]),freebusy[dayKey][hourKey].push(1),date.addMinutes(15)}),freebusy}},Component.prototype.updateFreeBusy=function(attendee){var params,url,days;attendee.uid&&(params={sday:this.start.getDayString(),eday:this.end.getDayString()},url=["..","..",attendee.uid,"freebusy.ifb"],days=_.map(this.start.daysUpTo(this.end),function(day){return day.getDayString()}),angular.isUndefined(attendee.freebusy)&&(attendee.freebusy={}),Component.$$resource.fetch(url.join("/"),"ajaxRead",params).then(function(data){_.each(days,function(day){var hour;angular.isUndefined(attendee.freebusy[day])&&(attendee.freebusy[day]={}),angular.isUndefined(data[day])&&(data[day]={});for(var i=0;23>=i;i++)hour=i.toString(),data[day][hour]?attendee.freebusy[day][hour]=[data[day][hour][0],data[day][hour][15],data[day][hour][30],data[day][hour][45]]:attendee.freebusy[day][hour]=[0,0,0,0]})}))},Component.prototype.getClassName=function(base){return angular.isUndefined(base)&&(base="fg"),base+"-folder"+(this.destinationCalendar||this.c_folder)},Component.prototype.addAttendee=function(card){var attendee;card&&(attendee={name:card.c_cn,email:card.$preferredEmail(),role:"req-participant",status:"needs-action",uid:card.c_uid},_.find(this.attendees,function(o){return o.email==attendee.email})||(attendee.image=Component.$gravatar(attendee.email,32),this.attendees?this.attendees.push(attendee):this.attendees=[attendee],this.updateFreeBusy(attendee)))},Component.prototype.hasAttendee=function(card){var attendee=_.find(this.attendees,function(attendee){return _.find(card.emails,function(email){return email.value==attendee.email})});return angular.isDefined(attendee)},Component.prototype.canRemindAttendeesByEmail=function(){return"email"==this.alarm.action&&!this.isReadOnly&&this.attendees&&this.attendees.length>0},Component.prototype.addAttachUrl=function(attachUrl){if(angular.isUndefined(this.attachUrls))this.attachUrls=[{value:attachUrl}];else{for(var i=0;i-1&&this.attachUrls.length>index&&this.attachUrls.splice(index,1)},Component.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&delete _this[key]}),this.init(this.$shadowData),this.$shadowData=this.$omit(!0)},Component.prototype.$reply=function(){var data,_this=this,path=[this.pid,this.id];return this.occurrenceId&&path.push(this.occurrenceId),data={reply:this.reply,delegatedTo:this.delegatedTo,alarm:this.$hasAlarm?this.alarm:{}},Component.$$resource.save(path.join("/"),data,{action:"rsvpAppointment"}).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$save=function(){var options,_this=this,path=[this.pid,this.id];return this.isNew&&(options={action:"saveAs"+this.type.capitalize()}),this.occurrenceId&&path.push(this.occurrenceId),Component.$$resource.save(path.join("/"),this.$omit(),options).then(function(data){return _this.$shadowData=_this.$omit(!0),data})},Component.prototype.$unwrap=function(futureComponentData){var _this=this;this.$futureComponentData=futureComponentData,this.$futureComponentData.then(function(data){_this.init(data),_this.$shadowData=_this.$omit()},function(data){angular.extend(_this,data),_this.isError=!0,Component.$log.error(_this.error)})},Component.prototype.$omit=function(){function formatTime(dateString){var date=new Date(dateString.substring(0,10)+" "+dateString.substring(11,16)),hours=date.getHours(),minutes=date.getMinutes();return 10>hours&&(hours="0"+hours),10>minutes&&(minutes="0"+minutes),hours+":"+minutes}var component={};return angular.forEach(this,function(value,key){"constructor"!=key&&"$"!=key[0]&&(component[key]=angular.copy(value))}),component.startTime=component.startDate?formatTime(component.startDate):"",component.endTime=component.endDate?formatTime(component.endDate):"",this.$hasCustomRepeat?"monthly"==this.repeat.frequency&&this.repeat.month.type&&"byday"==this.repeat.month.type||"yearly"==this.repeat.frequency&&this.repeat.year.byday?(delete component.repeat.monthdays,component.repeat.days=[{day:this.repeat.month.day,occurrence:this.repeat.month.occurrence.toString()}]):this.repeat.month.type&&delete component.repeat.days:this.repeat.frequency&&(component.repeat={frequency:this.repeat.frequency}),this.repeat.frequency?"until"==this.repeat.end&&this.repeat.until?component.repeat.until=this.repeat.until.stringWithSeparator("-"):"count"==this.repeat.end&&this.repeat.count?component.repeat.count=this.repeat.count:(delete component.repeat.until,delete component.repeat.count):delete component.repeat,this.$hasAlarm?!this.alarm.action||"email"!=this.alarm.action||this.attendees&&this.attendees.length>0||(this.alarm.attendees=0,this.alarm.organizer=1):component.alarm={},component}}(); //# sourceMappingURL=Scheduler.services.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Scheduler.services.js.map b/UI/WebServerResources/js/Scheduler.services.js.map index 85e5eff93..b723be1a3 100644 --- a/UI/WebServerResources/js/Scheduler.services.js.map +++ b/UI/WebServerResources/js/Scheduler.services.js.map @@ -1 +1 @@ -{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Calendar.service.js","Scheduler/Component.service.js"],"names":["Calendar","futureCalendarData","this","init","name","id","newCalendarData","$$resource","create","angular","extend","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Component","Acl","activeUser","$Component","module","e","factory","$add","calendar","list","sibling","i","isWebCalendar","$webcalendars","isSubscription","$subscriptions","$calendars","_","find","o","localeCompare","indexOf","pluck","splice","$findAll","data","_this","forEach","push","union","$get","$subscribe","uid","path","userResource","fetch","then","calendarData","$addWebCalendar","url","d","defer","urls","webCalendarURL","reject","post","isEditable","isRemote","owner","login","debug","JSON","stringify","undefined","resolve","promise","prototype","isOwned","isSuperUser","getClassName","base","isUndefined","$rename","$save","$delete","remove","status","$deleteComponents","components","calendars","component","isDefined","c_folder","c_name","uids","$events","difference","$tasks","save","$omit","$setActivation","active","$getComponent","componentId","recurrenceId","$find","value","key","futureComponentData","pid","newComponentData","newguid","$unwrap","isNew","Preferences","Gravatar","$Preferences","$gravatar","baseURL","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","ready","settings","EventsFilterState","TasksFilterState","EventsSortingState","parseInt","TasksSortingState","show_completed","ShowCompletedTasks","$categories","defaults","SOGoCalendarCategoriesColors","SOGoTimeFormat","$selectedCount","count","filter","event","selected","length","$filter","type","options","now","Date","day","getDate","month","getMonth","year","getFullYear","queryKey","capitalize","params","otherType","dirty","each","keys","$unwrapCollection","calendarId","occurrenceId","join","filterCategories","query","re","RegExp","category","saveSelectedList","componentType","$eventsBlocksForView","view","date","viewAction","startDate","endDate","beginOfWeek","setTime","getTime","addDays","setDate","setMonth","endOfWeek","$eventsBlocks","deferred","toLowerCase","sd","getDayString","ed","blocks","reduce","events","objects","eventData","componentData","object","eventsFields","start","c_startdate","hour","getHourString","flatten","block","nbr","$blocks","fields","invoke","categories","repeat","alarm","action","quantity","unit","reference","relation","classification","substring","end","dueDate","due","$isRecurrent","days","byDayMask","occurrence","frequency","byday","toString","interval","monthdays","months","until","asDate","$hasCustomRepeat","hasCustomRepeat","units","M","H","D","W","match","exec","SOGoCalendarDefaultReminder","$hasAlarm","destinationCalendar","organizer","email","$image","freebusy","updateFreeBusyCoverage","attendees","attendee","image","updateFreeBusy","b","isReadOnly","isEditableOccurrence","isInvitation","userHasRSVP","isInvitationOccurrence","enablePercentComplete","coversFreeBusy","quarter","roundedStart","roundedEnd","startQuarter","getMinutes","endQuarter","setMinutes","daysUpTo","index","hourKey","currentDay","dayKey","getHours","beginOfDay","addMinutes","sday","eday","map","addAttendee","card","c_cn","$preferredEmail","role","c_uid","hasAttendee","emails","canRemindAttendeesByEmail","addAttachUrl","attachUrl","attachUrls","deleteAttachUrl","$reset","$shadowData","$reply","reply","delegatedTo","$futureComponentData","isError","error","formatTime","dateString","hours","minutes","copy","startTime","endTime","stringWithSeparator"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Calendar\n * @constructor\n * @param {object} futureCalendarData - either an object literal or a promise\n */\n function Calendar(futureCalendarData) {\n // Data is immediately available\n this.init(futureCalendarData);\n if (this.name && !this.id) {\n // Create a new calendar on the server\n var newCalendarData = Calendar.$$resource.create('createFolder', this.name);\n angular.extend(this, newCalendarData);\n }\n if (this.id) {\n this.$acl = new Calendar.$$Acl('Calendar/' + this.id);\n }\n }\n\n /**\n * @memberof Calendar\n * @desc The factory we'll use to register with Angular\n * @returns the Calendar constructor\n */\n Calendar.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Component', 'Acl', function($q, $timeout, $log, Settings, Resource, Component, Acl) {\n angular.extend(Calendar, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $Component: Component,\n $$Acl: Acl,\n activeUser: Settings.activeUser()\n });\n\n return Calendar; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Calendar in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Calendar', Calendar.$factory);\n\n /**\n * @memberof Calendar\n * @desc Add a new calendar to the static list of calendars\n * @param {Calendar} calendar - an Calendar object instance\n */\n Calendar.$add = function(calendar) {\n // Insert new calendar at proper index\n var list, sibling, i;\n\n if (calendar.isWebCalendar)\n list = this.$webcalendars;\n else if (calendar.isSubscription)\n list = this.$subscriptions;\n else\n list = this.$calendars;\n\n sibling = _.find(list, function(o) {\n return (o.id != 'personal' &&\n o.name.localeCompare(calendar.name) === 1);\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, calendar);\n };\n\n /**\n * @memberof Calendar\n * @desc Set or get the list of calendars. Will instanciate a new Calendar object for each item.\n * @param {object[]} [data] - the metadata of the calendars\n * @returns the list of calendars\n */\n Calendar.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$calendars = [];\n this.$subscriptions = [];\n this.$webcalendars = [];\n // Instanciate Calendar objects\n angular.forEach(data, function(o, i) {\n var calendar = new Calendar(o);\n if (calendar.isWebCalendar)\n _this.$webcalendars.push(calendar);\n else if (calendar.isSubscription)\n _this.$subscriptions.push(calendar);\n else\n _this.$calendars.push(calendar);\n });\n }\n return _.union(this.$calendars, this.$subscriptions, this.$webcalendars);\n };\n\n /**\n * @memberof Calendar\n * @desc Find a calendar among local instances (personal calendars, subscriptions and Web calendars).\n * @param {string} id - the calendar ID\n * @returns an object literal of the matching Calendar instance\n */\n Calendar.$get = function(id) {\n var calendar;\n\n calendar = _.find(Calendar.$calendars, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$subscriptions, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$webcalendars, function(o) { return o.id == id; });\n\n return calendar;\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to another user's calendar and add it to the list of calendars.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n Calendar.$subscribe = function(uid, path) {\n var _this = this;\n return Calendar.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(calendarData) {\n var calendar = new Calendar(calendarData);\n if (!_.find(_this.$subscriptions, function(o) {\n return o.id == calendarData.id;\n })) {\n Calendar.$add(calendar);\n }\n return calendar;\n });\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to a remote Web calendar\n * @param {string} url - URL of .ics file\n * @returns a promise of the HTTP query result\n */\n Calendar.$addWebCalendar = function(url) {\n var _this = this,\n d = Calendar.$q.defer();\n\n if (_.find(_this.$webcalendars, function(o) {\n return o.urls.webCalendarURL == url;\n })) {\n // Already subscribed\n d.reject();\n }\n else {\n Calendar.$$resource.post(null, 'addWebCalendar', { url: url }).then(function(calendarData) {\n angular.extend(calendarData, {\n isWebCalendar: true,\n isEditable: true,\n isRemote: false,\n owner: Calendar.activeUser.login,\n urls: { webCalendarURL: url }\n });\n var calendar = new Calendar(calendarData);\n Calendar.$add(calendar);\n Calendar.$$resource.fetch(calendar.id, 'reload').then(function(data) {\n // TODO: show a toast of the reload status\n Calendar.$log.debug(JSON.stringify(data, undefined, 2));\n });\n d.resolve();\n }, function() {\n d.reject();\n });\n }\n\n return d.promise;\n };\n\n /**\n * @function init\n * @memberof Calendar.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of calendar\n */\n Calendar.prototype.init = function(data) {\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = Calendar.activeUser.isSuperUser || this.owner == Calendar.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != Calendar.activeUser.login;\n };\n\n /**\n * @function getClassName\n * @memberof Calendar.prototype\n * @desc Return the calendar CSS class name based on its ID.\n * @returns a string representing the foreground CSS class name\n */\n Calendar.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + this.id;\n };\n\n /**\n * @function $rename\n * @memberof Calendar.prototype\n * @desc Rename the calendar and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(Calendar.$calendars, 'id'), this.id);\n this.name = name;\n Calendar.$calendars.splice(i, 1);\n Calendar.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof Calendar.prototype\n * @desc Delete the calendar from the server and the static list of calendars.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$delete = function() {\n var _this = this,\n d = Calendar.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = Calendar.$$resource.fetch(this.id, 'unsubscribe');\n list = Calendar.$subscriptions;\n }\n else {\n promise = Calendar.$$resource.remove(this.id);\n if (this.isWebCalendar)\n list = Calendar.$webcalendars;\n else\n list = Calendar.$calendars;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteComponents\n * @memberof Calendar\n * @desc Delete multiple components from calendar.\n * @return a promise of the HTTP operation\n */\n Calendar.$deleteComponents = function(components) {\n\n // We create a c_folder -> event hash\n var calendars = {}, _this = this;\n\n _.forEach(components, function(component) {\n if (!angular.isDefined(calendars[component.c_folder]))\n calendars[component.c_folder] = [];\n\n calendars[component.c_folder].push(component.c_name);\n });\n\n _.forEach(calendars, function(uids, c_folder) {\n Calendar.$$resource.post(c_folder, 'batchDelete', {uids: uids});\n });\n\n // We slice both arrays - might be useful if in the future, we can delete\n // events and tasks at the same time.\n _this.$Component.$events = _.difference(_this.$Component.$events, components);\n _this.$Component.$tasks = _.difference(_this.$Component.$tasks, components);\n };\n\n /**\n * @function $save\n * @memberof Calendar.prototype\n * @desc Save the calendar properties to the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$save = function() {\n return Calendar.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $setActivation\n * @memberof Calendar.prototype\n * @desc Either activate or deactivate the calendar.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$setActivation = function() {\n return Calendar.$$resource.fetch(this.id, (this.active?'':'de') + 'activateFolder');\n };\n\n /**\n * @function $getComponent\n * @memberof Calendar.prototype\n * @desc Fetch a component attributes from the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$getComponent = function(componentId, recurrenceId) {\n return Calendar.$Component.$find(this.id, componentId, recurrenceId);\n };\n\n /**\n * @function $omit\n * @memberof Calendar.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Calendar instance\n */\n Calendar.prototype.$omit = function() {\n var calendar = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key[0] != '$') {\n calendar[key] = value;\n }\n });\n return calendar;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Component\n * @constructor\n * @param {object} futureComponentData - either an object literal or a promise\n */\n function Component(futureComponentData) {\n // Data is immediately available\n if (typeof futureComponentData.then !== 'function') {\n this.init(futureComponentData);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new component;\n // Get UID from the server.\n var newComponentData = Component.$$resource.newguid(this.pid);\n this.$unwrap(newComponentData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureComponentData);\n }\n }\n\n /**\n * @memberof Component\n * @desc The factory we'll use to register with Angular\n * @returns the Component constructor\n */\n Component.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Preferences', 'Gravatar', 'Resource', function($q, $timeout, $log, Settings, Preferences, Gravatar, Resource) {\n angular.extend(Component, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $Preferences: Preferences,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n timeFormat: \"%H:%M\",\n // Filter parameters common to events and tasks\n $query: { value: '', search: 'title_Category_Location' },\n // Filter paramaters specific to events\n $queryEvents: { sort: 'start', asc: 1, filterpopup: 'view_next7' },\n // Filter parameters specific to tasks\n $queryTasks: { sort: 'status', asc: 1, filterpopup: 'view_incomplete' }\n });\n Preferences.ready().then(function() {\n // Initialize filter parameters from user's settings\n if (Preferences.settings.Calendar.EventsFilterState)\n Component.$queryEvents.filterpopup = Preferences.settings.Calendar.EventsFilterState;\n if (Preferences.settings.Calendar.TasksFilterState)\n Component.$queryTasks.filterpopup = Preferences.settings.Calendar.TasksFilterState;\n if (Preferences.settings.Calendar.EventsSortingState) {\n Component.$queryEvents.sort = Preferences.settings.Calendar.EventsSortingState[0];\n Component.$queryEvents.asc = parseInt(Preferences.settings.Calendar.EventsSortingState[1]);\n }\n if (Preferences.settings.Calendar.TasksSortingState) {\n Component.$queryTasks.sort = Preferences.settings.Calendar.TasksSortingState[0];\n Component.$queryTasks.asc = parseInt(Preferences.settings.Calendar.TasksSortingState[1]);\n }\n Component.$queryTasks.show_completed = parseInt(Preferences.settings.ShowCompletedTasks);\n // Initialize categories from user's defaults\n Component.$categories = Preferences.defaults.SOGoCalendarCategoriesColors;\n // Initialize time format from user's defaults\n if (Preferences.defaults.SOGoTimeFormat) {\n Component.timeFormat = Preferences.defaults.SOGoTimeFormat;\n }\n });\n\n return Component; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Component in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Component', Component.$factory);\n\n /**\n * @function $selectedCount\n * @memberof Component\n * @desc Return the number of events or tasks selected by the user.\n * @returns the number of selected events or tasks\n */\n Component.$selectedCount = function() {\n var count;\n\n count = 0;\n if (Component.$events) {\n count = (_.filter(Component.$events, function(event) { return event.selected; })).length;\n }\n if (Component.$tasks) {\n count = (_.filter(Component.$tasks, function(event) { return event.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Component\n * @desc Search for components matching some criterias\n * @param {string} type - either 'events' or 'tasks'\n * @param {object} [options] - additional options to the query\n * @returns a collection of Components instances\n */\n Component.$filter = function(type, options) {\n var _this = this,\n now = new Date(),\n day = now.getDate(),\n month = now.getMonth() + 1,\n year = now.getFullYear(),\n queryKey = '$query' + type.capitalize(),\n params = {\n day: '' + year + (month < 10?'0':'') + month + (day < 10?'0':'') + day,\n };\n\n return this.$Preferences.ready().then(function() {\n var futureComponentData,\n dirty = false,\n otherType;\n\n angular.extend(_this.$query, params);\n\n if (options) {\n _.each(_.keys(options), function(key) {\n // Query parameters common to events and tasks are compared\n dirty |= (_this.$query[key] && options[key] != Component.$query[key]);\n if (key == 'reload' && options[key])\n dirty = true;\n // Update either the common parameters or the type-specific parameters\n else if (angular.isDefined(_this.$query[key]))\n _this.$query[key] = options[key];\n else\n _this[queryKey][key] = options[key];\n });\n }\n\n // Perform query with both common and type-specific parameters\n futureComponentData = _this.$$resource.fetch(null, type + 'list',\n angular.extend(_this[queryKey], _this.$query));\n\n // Invalidate cached results of other type if $query has changed\n otherType = (type == 'tasks')? '$events' : '$tasks';\n if (dirty) {\n delete Component[otherType];\n Component.$log.debug('force reload of ' + otherType);\n }\n\n return _this.$unwrapCollection(type, futureComponentData);\n });\n };\n\n /**\n * @function $find\n * @desc Fetch a component from a specific calendar.\n * @param {string} calendarId - the calendar ID\n * @param {string} componentId - the component ID\n * @param {string} [occurrenceId] - the component ID\n * @see {@link Calendar.$getComponent}\n */\n Component.$find = function(calendarId, componentId, occurrenceId) {\n var futureComponentData, path = [calendarId, componentId];\n\n if (occurrenceId)\n path.push(occurrenceId);\n\n futureComponentData = this.$$resource.fetch(path.join('/'), 'view');\n\n return new Component(futureComponentData);\n };\n\n /**\n * @function filterCategories\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Component.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Component.$categories), function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @function saveSelectedList\n * @desc Save to the user's settings the currently selected list.\n * @param {string} componentType - either \"events\" or \"tasks\"\n * @returns a promise of the HTTP operation\n */\n Component.saveSelectedList = function(componentType) {\n return this.$$resource.post(null, 'saveSelectedList', { list: componentType + 'ListView' });\n };\n\n /**\n * @function $eventsBlocksForView\n * @desc Events blocks for a specific week\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} type - Date of any day of the desired period\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocksForView = function(view, date) {\n var viewAction, startDate, endDate, params;\n\n if (view == 'day') {\n viewAction = 'dayView';\n startDate = endDate = date;\n }\n else if (view == 'week') {\n viewAction = 'weekView';\n startDate = date.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.addDays(6);\n }\n else if (view == 'month') {\n viewAction = 'monthView';\n startDate = date;\n startDate.setDate(1);\n startDate = startDate.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.addDays(-1);\n endDate = endDate.endOfWeek();\n }\n return this.$eventsBlocks(viewAction, startDate, endDate);\n };\n\n /**\n * @function $eventsBlocks\n * @desc Events blocks for a specific view and period\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} startDate - period's start date\n * @param {Date} endDate - period's end date\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocks = function(view, startDate, endDate) {\n var params, futureComponentData, i,\n deferred = Component.$q.defer();\n\n params = { view: view.toLowerCase(), sd: startDate.getDayString(), ed: endDate.getDayString() };\n Component.$log.debug('eventsblocks ' + JSON.stringify(params, undefined, 2));\n futureComponentData = this.$$resource.fetch(null, 'eventsblocks', params);\n futureComponentData.then(function(data) {\n Component.$timeout(function() {\n var components = [], blocks = {};\n\n // Instantiate Component objects\n _.reduce(data.events, function(objects, eventData, i) {\n var componentData = _.object(data.eventsFields, eventData),\n start = new Date(componentData.c_startdate * 1000);\n componentData.hour = start.getHourString();\n objects.push(new Component(componentData));\n return objects;\n }, components);\n\n // Associate Component objects to blocks positions\n _.each(_.flatten(data.blocks), function(block) {\n block.component = components[block.nbr];\n });\n\n // Convert array of blocks to object with days as keys\n for (i = 0; i < data.blocks.length; i++) {\n blocks[startDate.getDayString()] = data.blocks[i];\n startDate.addDays(1);\n }\n\n Component.$log.debug('blocks ready (' + _.keys(blocks).length + ')');\n\n // Save the blocks to the object model\n Component.$blocks = blocks;\n\n deferred.resolve(blocks);\n });\n }, deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapCollection\n * @desc Unwrap a promise and instanciate new Component objects using received data.\n * @param {string} type - either 'events' or 'tasks'\n * @param {promise} futureComponentData - a promise of the components' metadata\n * @returns a promise of the HTTP operation\n */\n Component.$unwrapCollection = function(type, futureComponentData) {\n var _this = this,\n components = [];\n\n return futureComponentData.then(function(data) {\n return Component.$timeout(function() {\n var fields = _.invoke(data.fields, 'toLowerCase');\n\n // Instanciate Component objects\n _.reduce(data[type], function(components, componentData, i) {\n var data = _.object(fields, componentData);\n components.push(new Component(data));\n return components;\n }, components);\n\n Component.$log.debug('list of ' + type + ' ready (' + components.length + ')');\n\n // Save the list of components to the object model\n Component['$' + type] = components;\n\n return components;\n });\n });\n };\n\n /**\n * @function init\n * @memberof Component.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of component\n */\n Component.prototype.init = function(data) {\n var _this = this;\n\n this.categories = [];\n this.repeat = {};\n this.alarm = { action: 'display', quantity: 5, unit: 'MINUTES', reference: 'BEFORE', relation: 'START' };\n this.status = 'not-specified';\n angular.extend(this, data);\n\n Component.$Preferences.ready().then(function() {\n var type = (_this.type == 'appointment')? 'Events' : 'Tasks';\n\n // Set default values from user's defaults\n _this.classification = _this.classification ||\n Component.$Preferences.defaults['SOGoCalendar' + type + 'DefaultClassification'].toLowerCase();\n });\n\n if (this.startDate)\n this.start = new Date(this.startDate.substring(0,10) + ' ' + this.startDate.substring(11,16));\n if (this.endDate)\n this.end = new Date(this.endDate.substring(0,10) + ' ' + this.endDate.substring(11,16));\n if (this.dueDate)\n this.due = new Date(this.dueDate.substring(0,10) + ' ' + this.dueDate.substring(11,16));\n\n // Parse recurrence rule definition and initialize default values\n this.$isRecurrent = angular.isDefined(data.repeat);\n if (this.repeat.days) {\n var byDayMask = _.find(this.repeat.days, function(o) {\n return angular.isDefined(o.occurrence);\n });\n if (byDayMask)\n if (this.repeat.frequency == 'yearly')\n this.repeat.year = { byday: true };\n this.repeat.month = {\n type: 'byday',\n occurrence: byDayMask.occurrence.toString(),\n day: byDayMask.day\n };\n }\n else {\n this.repeat.days = [];\n }\n if (angular.isUndefined(this.repeat.frequency))\n this.repeat.frequency = 'never';\n if (angular.isUndefined(this.repeat.interval))\n this.repeat.interval = 1;\n if (angular.isUndefined(this.repeat.month))\n this.repeat.month = { occurrence: '1', day: 'SU', type: 'bymonthday' };\n if (angular.isUndefined(this.repeat.monthdays))\n this.repeat.monthdays = [];\n if (angular.isUndefined(this.repeat.months))\n this.repeat.months = [];\n if (angular.isUndefined(this.repeat.year))\n this.repeat.year = {};\n if (this.repeat.count)\n this.repeat.end = 'count';\n else if (this.repeat.until) {\n this.repeat.end = 'until';\n this.repeat.until = this.repeat.until.substring(0,10).asDate();\n }\n else\n this.repeat.end = 'never';\n this.$hasCustomRepeat = this.hasCustomRepeat();\n\n if (this.isNew) {\n // Set default alarm\n Component.$Preferences.ready().then(function() {\n var units = { M: 'MINUTES', H: 'HOURS', D: 'DAYS', W: 'WEEKS' };\n var match = /-PT?([0-9]+)([MHDW])/.exec(Component.$Preferences.defaults.SOGoCalendarDefaultReminder);\n if (match) {\n _this.$hasAlarm = true;\n _this.alarm.quantity = parseInt(match[1]);\n _this.alarm.unit = units[match[2]];\n }\n });\n }\n else {\n this.$hasAlarm = angular.isDefined(data.alarm);\n }\n\n // Allow the component to be moved to a different calendar\n this.destinationCalendar = this.pid;\n\n if (this.organizer && this.organizer.email) {\n this.organizer.$image = Component.$gravatar(this.organizer.email, 32);\n }\n\n // Load freebusy of attendees\n this.freebusy = this.updateFreeBusyCoverage();\n\n if (this.attendees) {\n _.each(this.attendees, function(attendee) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n _this.updateFreeBusy(attendee);\n });\n }\n\n this.selected = false;\n };\n\n /**\n * @function hasCustomRepeat\n * @memberof Component.prototype\n * @desc Check if the component has a custom recurrence rule.\n * @returns true if the recurrence rule requires the full recurrence editor\n */\n Component.prototype.hasCustomRepeat = function() {\n var b = angular.isDefined(this.repeat) &&\n (this.repeat.interval > 1 ||\n this.repeat.days && this.repeat.days.length > 0 ||\n this.repeat.monthdays && this.repeat.monthdays.length > 0 ||\n this.repeat.months && this.repeat.months.length > 0);\n return b;\n };\n\n /**\n * @function isEditable\n * @memberof Component.prototype\n * @desc Check if the component is editable and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditable = function() {\n return (!this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isEditableOccurrence\n * @memberof Component.prototype\n * @desc Check if the component is editable and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditableOccurrence = function() {\n return (this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isInvitation\n * @memberof Component.prototype\n * @desc Check if the component an invitation and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitation = function() {\n return (!this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isInvitationOccurrence\n * @memberof Component.prototype\n * @desc Check if the component an invitation and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitationOccurrence = function() {\n return (this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isReadOnly\n * @memberof Component.prototype\n * @desc Check if the component is not editable and not an invitation\n * @returns true or false\n */\n Component.prototype.isReadOnly = function() {\n return (this.isReadOnly && !this.userHasRSVP);\n };\n\n /**\n * @function enablePercentComplete\n * @memberof Component.prototype\n * @desc Check if the percent completion should be enabled with respect to the\n * component's type and status.\n * @returns true if the percent completion should be displayed\n */\n Component.prototype.enablePercentComplete = function() {\n return (this.component = 'vtodo' &&\n this.status != 'not-specified' &&\n this.status != 'cancelled');\n };\n\n /**\n * @function coversFreeBusy\n * @memberof Component.prototype\n * @desc Check if a specific quarter matches the component's period\n * @returns true if the quarter covers the component's period\n */\n Component.prototype.coversFreeBusy = function(day, hour, quarter) {\n var b = (angular.isDefined(this.freebusy[day]) &&\n angular.isDefined(this.freebusy[day][hour]) &&\n this.freebusy[day][hour][quarter] == 1);\n return b;\n };\n\n /**\n * @function updateFreeBusyCoverage\n * @memberof Component.prototype\n * @desc Build a 15-minute-based representation of the component's period.\n * @returns an object literal hashed by days and hours and arrays of four 1's and 0's\n */\n Component.prototype.updateFreeBusyCoverage = function() {\n var _this = this, freebusy = {};\n\n if (this.start && this.end) {\n var roundedStart = new Date(this.start.getTime()),\n roundedEnd = new Date(this.end.getTime()),\n startQuarter = parseInt(roundedStart.getMinutes()/15 + 0.5),\n endQuarter = parseInt(roundedEnd.getMinutes()/15 + 0.5);\n roundedStart.setMinutes(15*startQuarter);\n roundedEnd.setMinutes(15*endQuarter);\n\n _.each(roundedStart.daysUpTo(roundedEnd), function(date, index) {\n var currentDay = date.getDate(),\n dayKey = date.getDayString(),\n hourKey;\n if (dayKey == _this.start.getDayString()) {\n hourKey = date.getHours().toString();\n freebusy[dayKey] = {};\n freebusy[dayKey][hourKey] = [];\n while (startQuarter > 0) {\n freebusy[dayKey][hourKey].push(0);\n startQuarter--;\n }\n }\n else {\n date = date.beginOfDay();\n freebusy[dayKey] = {};\n }\n while (date.getTime() < _this.end.getTime() &&\n date.getDate() == currentDay) {\n hourKey = date.getHours().toString();\n if (angular.isUndefined(freebusy[dayKey][hourKey]))\n freebusy[dayKey][hourKey] = [];\n freebusy[dayKey][hourKey].push(1);\n date.addMinutes(15);\n }\n });\n return freebusy;\n }\n };\n\n /**\n * @function updateFreeBusy\n * @memberof Component.prototype\n * @desc Update the freebusy information for the component's period for a specific attendee.\n * @param {Object} card - an Card object instance of the attendee\n */\n Component.prototype.updateFreeBusy = function(attendee) {\n var params, url, days;\n if (attendee.uid) {\n params =\n {\n sday: this.start.getDayString(),\n eday: this.end.getDayString()\n };\n url = ['..', '..', attendee.uid, 'freebusy.ifb'];\n days = _.map(this.start.daysUpTo(this.end), function(day) { return day.getDayString(); });\n\n if (angular.isUndefined(attendee.freebusy))\n attendee.freebusy = {};\n\n // Fetch FreeBusy information\n Component.$$resource.fetch(url.join('/'), 'ajaxRead', params).then(function(data) {\n _.each(days, function(day) {\n var hour;\n\n if (angular.isUndefined(attendee.freebusy[day]))\n attendee.freebusy[day] = {};\n\n if (angular.isUndefined(data[day]))\n data[day] = {};\n\n for (var i = 0; i <= 23; i++) {\n hour = i.toString();\n if (data[day][hour])\n attendee.freebusy[day][hour] = [\n data[day][hour][\"0\"],\n data[day][hour][\"15\"],\n data[day][hour][\"30\"],\n data[day][hour][\"45\"]\n ];\n else\n attendee.freebusy[day][hour] = [0, 0, 0, 0];\n }\n });\n });\n }\n };\n\n /**\n * @function getClassName\n * @memberof Component.prototype\n * @desc Return the component CSS class name based on its container (calendar) ID.\n * @param {string} [base] - the prefix to add to the class name (defaults to \"fg\")\n * @returns a string representing the foreground CSS class name\n */\n Component.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + (this.destinationCalendar || this.c_folder);\n };\n\n /**\n * @function addAttendee\n * @memberof Component.prototype\n * @desc Add an attendee and fetch his freebusy info.\n * @param {Object} card - an Card object instance to be added to the attendees list\n */\n Component.prototype.addAttendee = function(card) {\n var attendee, url, params;\n if (card) {\n attendee = {\n name: card.c_cn,\n email: card.$preferredEmail(),\n role: 'req-participant',\n status: 'needs-action',\n uid: card.c_uid\n };\n if (!_.find(this.attendees, function(o) {\n return o.email == attendee.email;\n })) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n if (this.attendees)\n this.attendees.push(attendee);\n else\n this.attendees = [attendee];\n this.updateFreeBusy(attendee);\n }\n }\n };\n\n /**\n * @function hasAttendee\n * @memberof Component.prototype\n * @desc Verify if one of the email addresses of a Card instance matches an attendee.\n * @param {Object} card - an Card object instance\n * @returns true if the Card matches an attendee\n */\n Component.prototype.hasAttendee = function(card) {\n var attendee = _.find(this.attendees, function(attendee) {\n return _.find(card.emails, function(email) {\n return email.value == attendee.email;\n });\n });\n return angular.isDefined(attendee);\n };\n\n /**\n * @function canRemindAttendeesByEmail\n * @memberof Component.prototype\n * @desc Verify if the component's reminder must be send by email and if it has at least one attendee.\n * @returns true if attendees can receive a reminder by email\n */\n Component.prototype.canRemindAttendeesByEmail = function() {\n return this.alarm.action == 'email' &&\n !this.isReadOnly &&\n this.attendees && this.attendees.length > 0;\n };\n\n /**\n * @function addAttachUrl\n * @memberof Component.prototype\n * @desc Add a new attach URL if not already defined\n * @param {string} attachUrl - the URL\n * @returns the number of values in the list of attach URLs\n */\n Component.prototype.addAttachUrl = function(attachUrl) {\n if (angular.isUndefined(this.attachUrls)) {\n this.attachUrls = [{value: attachUrl}];\n }\n else {\n for (var i = 0; i < this.attachUrls.length; i++) {\n if (this.attachUrls[i].value == attachUrl) {\n break;\n }\n }\n if (i == this.attachUrls.length)\n this.attachUrls.push({value: attachUrl});\n }\n return this.attachUrls.length - 1;\n };\n\n /**\n * @function deleteAttachUrl\n * @memberof Component.prototype\n * @desc Remove an attach URL\n * @param {number} index - the URL index in the list of attach URLs\n */\n Component.prototype.deleteAttachUrl = function(index) {\n if (index > -1 && this.attachUrls.length > index) {\n this.attachUrls.splice(index, 1);\n }\n };\n\n /**\n * @function $reset\n * @memberof Component.prototype\n * @desc Reset the original state the component's data.\n */\n Component.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n angular.extend(this, this.$shadowData);\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function reply\n * @memberof Component.prototype\n * @desc Reply to an invitation.\n * @returns a promise of the HTTP operation\n */\n Component.prototype.$reply = function() {\n var _this = this, data, path = [this.pid, this.id];\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n data = {\n reply: this.reply,\n delegatedTo: this.delegatedTo,\n alarm: this.$hasAlarm? this.alarm : {}\n };\n\n return Component.$$resource.save(path.join('/'), data, { action: 'rsvpAppointment' })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $save\n * @memberof Component.prototype\n * @desc Save the component to the server.\n */\n Component.prototype.$save = function() {\n var _this = this, options, path = [this.pid, this.id];\n\n if (this.isNew)\n options = { action: 'saveAs' + this.type.capitalize() };\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n return Component.$$resource.save(path.join('/'), this.$omit(), options)\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $unwrap\n * @memberof Component.prototype\n * @desc Unwrap a promise.\n * @param {promise} futureComponentData - a promise of some of the Component's data\n */\n Component.prototype.$unwrap = function(futureComponentData) {\n var _this = this;\n\n // Expose the promise\n this.$futureComponentData = futureComponentData;\n\n // Resolve the promise\n this.$futureComponentData.then(function(data) {\n _this.init(data);\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Component.$log.error(_this.error);\n });\n };\n\n /**\n * @function $omit\n * @memberof Component.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Component instance\n */\n Component.prototype.$omit = function() {\n var component = {}, date;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n component[key] = angular.copy(value);\n }\n });\n\n // Format times\n component.startTime = component.startDate ? formatTime(component.startDate) : '';\n component.endTime = component.endDate ? formatTime(component.endDate) : '';\n\n // Update recurrence definition depending on selections\n if (this.$hasCustomRepeat) {\n if (this.repeat.frequency == 'monthly' && this.repeat.month.type && this.repeat.month.type == 'byday' ||\n this.repeat.frequency == 'yearly' && this.repeat.year.byday) {\n // BYDAY mask for a monthly or yearly recurrence\n delete component.repeat.monthdays;\n component.repeat.days = [{ day: this.repeat.month.day, occurrence: this.repeat.month.occurrence.toString() }];\n }\n else if (this.repeat.month.type) {\n // montly recurrence by month days or yearly by month\n delete component.repeat.days;\n }\n }\n else if (this.repeat.frequency) {\n component.repeat = { frequency: this.repeat.frequency };\n }\n if (this.repeat.frequency) {\n if (this.repeat.end == 'until' && this.repeat.until)\n component.repeat.until = this.repeat.until.stringWithSeparator('-');\n else if (this.repeat.end == 'count' && this.repeat.count)\n component.repeat.count = this.repeat.count;\n else {\n delete component.repeat.until;\n delete component.repeat.count;\n }\n }\n else {\n delete component.repeat;\n }\n\n if (this.$hasAlarm) {\n if (this.alarm.action && this.alarm.action == 'email' &&\n !(this.attendees && this.attendees.length > 0)) {\n // No attendees; email reminder must be sent to organizer only\n this.alarm.attendees = 0;\n this.alarm.organizer = 1;\n }\n }\n else {\n component.alarm = {};\n }\n\n function formatTime(dateString) {\n // YYYY-MM-DDTHH:MM-ZZ:00 => YYYY-MM-DD HH:MM\n var date = new Date(dateString.substring(0,10) + ' ' + dateString.substring(11,16)),\n hours = date.getHours(),\n minutes = date.getMinutes();\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n\n return hours + ':' + minutes;\n }\n\n return component;\n };\n\n})();\n"]} \ No newline at end of file +{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Calendar.service.js","Scheduler/Component.service.js"],"names":["Calendar","futureCalendarData","this","init","name","id","newCalendarData","$$resource","create","angular","extend","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","Resource","Component","Acl","activeUser","$Component","module","e","factory","$add","calendar","list","sibling","i","isWebCalendar","$webcalendars","isSubscription","$subscriptions","$calendars","_","find","o","localeCompare","indexOf","pluck","splice","$findAll","data","_this","forEach","push","union","$get","$subscribe","uid","path","userResource","fetch","then","calendarData","$addWebCalendar","url","d","defer","urls","webCalendarURL","reject","post","isEditable","isRemote","owner","login","debug","JSON","stringify","undefined","resolve","promise","prototype","isOwned","isSuperUser","getClassName","base","isUndefined","$rename","$save","$delete","remove","status","$deleteComponents","components","calendars","component","isDefined","c_folder","c_name","uids","$events","difference","$tasks","save","$omit","$setActivation","active","$getComponent","componentId","recurrenceId","$find","value","key","futureComponentData","pid","newComponentData","newguid","$unwrap","isNew","Preferences","Gravatar","$Preferences","$gravatar","baseURL","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","ready","settings","EventsFilterState","TasksFilterState","EventsSortingState","parseInt","TasksSortingState","show_completed","ShowCompletedTasks","$categories","defaults","SOGoCalendarCategoriesColors","SOGoTimeFormat","$selectedCount","count","filter","event","selected","length","$filter","type","options","now","Date","day","getDate","month","getMonth","year","getFullYear","queryKey","capitalize","params","otherType","dirty","each","keys","$unwrapCollection","calendarId","occurrenceId","join","filterCategories","query","re","RegExp","category","saveSelectedList","componentType","$eventsBlocksForView","view","date","viewAction","startDate","endDate","beginOfWeek","setTime","getTime","addDays","setDate","setMonth","endOfWeek","$eventsBlocks","deferred","toLowerCase","sd","getDayString","ed","blocks","reduce","events","objects","eventData","componentData","object","eventsFields","start","c_startdate","hour","getHourString","flatten","block","nbr","$blocks","fields","invoke","categories","repeat","alarm","action","quantity","unit","reference","relation","classification","substring","end","dueDate","due","$isRecurrent","days","byDayMask","occurrence","frequency","byday","toString","interval","monthdays","months","until","asDate","$hasCustomRepeat","hasCustomRepeat","units","M","H","D","W","match","exec","SOGoCalendarDefaultReminder","$hasAlarm","destinationCalendar","organizer","email","$image","freebusy","updateFreeBusyCoverage","attendees","attendee","image","updateFreeBusy","b","isReadOnly","isEditableOccurrence","isInvitation","userHasRSVP","isInvitationOccurrence","enablePercentComplete","coversFreeBusy","quarter","roundedStart","roundedEnd","startQuarter","getMinutes","endQuarter","setMinutes","daysUpTo","index","hourKey","currentDay","dayKey","getHours","beginOfDay","addMinutes","sday","eday","map","addAttendee","card","c_cn","$preferredEmail","role","c_uid","hasAttendee","emails","canRemindAttendeesByEmail","addAttachUrl","attachUrl","attachUrls","deleteAttachUrl","$reset","$shadowData","$reply","reply","delegatedTo","$futureComponentData","isError","error","formatTime","dateString","hours","minutes","copy","startTime","endTime","stringWithSeparator"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Calendar\n * @constructor\n * @param {object} futureCalendarData - either an object literal or a promise\n */\n function Calendar(futureCalendarData) {\n // Data is immediately available\n this.init(futureCalendarData);\n if (this.name && !this.id) {\n // Create a new calendar on the server\n var newCalendarData = Calendar.$$resource.create('createFolder', this.name);\n angular.extend(this, newCalendarData);\n }\n if (this.id) {\n this.$acl = new Calendar.$$Acl('Calendar/' + this.id);\n }\n }\n\n /**\n * @memberof Calendar\n * @desc The factory we'll use to register with Angular\n * @returns the Calendar constructor\n */\n Calendar.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Component', 'Acl', function($q, $timeout, $log, Settings, Resource, Component, Acl) {\n angular.extend(Calendar, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL') + 'Calendar', Settings.activeUser()),\n $Component: Component,\n $$Acl: Acl,\n activeUser: Settings.activeUser()\n });\n\n return Calendar; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Calendar in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Calendar', Calendar.$factory);\n\n /**\n * @memberof Calendar\n * @desc Add a new calendar to the static list of calendars\n * @param {Calendar} calendar - an Calendar object instance\n */\n Calendar.$add = function(calendar) {\n // Insert new calendar at proper index\n var list, sibling, i;\n\n if (calendar.isWebCalendar)\n list = this.$webcalendars;\n else if (calendar.isSubscription)\n list = this.$subscriptions;\n else\n list = this.$calendars;\n\n sibling = _.find(list, function(o) {\n return (o.id != 'personal' &&\n o.name.localeCompare(calendar.name) === 1);\n });\n i = sibling ? _.indexOf(_.pluck(list, 'id'), sibling.id) : 1;\n list.splice(i, 0, calendar);\n };\n\n /**\n * @memberof Calendar\n * @desc Set or get the list of calendars. Will instanciate a new Calendar object for each item.\n * @param {object[]} [data] - the metadata of the calendars\n * @returns the list of calendars\n */\n Calendar.$findAll = function(data) {\n var _this = this;\n if (data) {\n this.$calendars = [];\n this.$subscriptions = [];\n this.$webcalendars = [];\n // Instanciate Calendar objects\n angular.forEach(data, function(o, i) {\n var calendar = new Calendar(o);\n if (calendar.isWebCalendar)\n _this.$webcalendars.push(calendar);\n else if (calendar.isSubscription)\n _this.$subscriptions.push(calendar);\n else\n _this.$calendars.push(calendar);\n });\n }\n return _.union(this.$calendars, this.$subscriptions, this.$webcalendars);\n };\n\n /**\n * @memberof Calendar\n * @desc Find a calendar among local instances (personal calendars, subscriptions and Web calendars).\n * @param {string} id - the calendar ID\n * @returns an object literal of the matching Calendar instance\n */\n Calendar.$get = function(id) {\n var calendar;\n\n calendar = _.find(Calendar.$calendars, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$subscriptions, function(o) { return o.id == id; });\n if (!calendar)\n calendar = _.find(Calendar.$webcalendars, function(o) { return o.id == id; });\n\n return calendar;\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to another user's calendar and add it to the list of calendars.\n * @param {string} uid - user id\n * @param {string} path - path of folder for specified user\n * @returns a promise of the HTTP query result\n */\n Calendar.$subscribe = function(uid, path) {\n var _this = this;\n return Calendar.$$resource.userResource(uid).fetch(path, 'subscribe').then(function(calendarData) {\n var calendar = new Calendar(calendarData);\n if (!_.find(_this.$subscriptions, function(o) {\n return o.id == calendarData.id;\n })) {\n Calendar.$add(calendar);\n }\n return calendar;\n });\n };\n\n /**\n * @memberOf Calendar\n * @desc Subscribe to a remote Web calendar\n * @param {string} url - URL of .ics file\n * @returns a promise of the HTTP query result\n */\n Calendar.$addWebCalendar = function(url) {\n var _this = this,\n d = Calendar.$q.defer();\n\n if (_.find(_this.$webcalendars, function(o) {\n return o.urls.webCalendarURL == url;\n })) {\n // Already subscribed\n d.reject();\n }\n else {\n Calendar.$$resource.post(null, 'addWebCalendar', { url: url }).then(function(calendarData) {\n angular.extend(calendarData, {\n isWebCalendar: true,\n isEditable: true,\n isRemote: false,\n owner: Calendar.activeUser.login,\n urls: { webCalendarURL: url }\n });\n var calendar = new Calendar(calendarData);\n Calendar.$add(calendar);\n Calendar.$$resource.fetch(calendar.id, 'reload').then(function(data) {\n // TODO: show a toast of the reload status\n Calendar.$log.debug(JSON.stringify(data, undefined, 2));\n });\n d.resolve();\n }, function() {\n d.reject();\n });\n }\n\n return d.promise;\n };\n\n /**\n * @function init\n * @memberof Calendar.prototype\n * @desc Extend instance with new data and compute additional attributes.\n * @param {object} data - attributes of calendar\n */\n Calendar.prototype.init = function(data) {\n angular.extend(this, data);\n // Add 'isOwned' and 'isSubscription' attributes based on active user (TODO: add it server-side?)\n this.isOwned = Calendar.activeUser.isSuperUser || this.owner == Calendar.activeUser.login;\n this.isSubscription = !this.isRemote && this.owner != Calendar.activeUser.login;\n };\n\n /**\n * @function getClassName\n * @memberof Calendar.prototype\n * @desc Return the calendar CSS class name based on its ID.\n * @returns a string representing the foreground CSS class name\n */\n Calendar.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + this.id;\n };\n\n /**\n * @function $rename\n * @memberof Calendar.prototype\n * @desc Rename the calendar and keep the list sorted\n * @param {string} name - the new name\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$rename = function(name) {\n var i = _.indexOf(_.pluck(Calendar.$calendars, 'id'), this.id);\n this.name = name;\n Calendar.$calendars.splice(i, 1);\n Calendar.$add(this);\n return this.$save();\n };\n\n /**\n * @function $delete\n * @memberof Calendar.prototype\n * @desc Delete the calendar from the server and the static list of calendars.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$delete = function() {\n var _this = this,\n d = Calendar.$q.defer(),\n list,\n promise;\n\n if (this.isSubscription) {\n promise = Calendar.$$resource.fetch(this.id, 'unsubscribe');\n list = Calendar.$subscriptions;\n }\n else {\n promise = Calendar.$$resource.remove(this.id);\n if (this.isWebCalendar)\n list = Calendar.$webcalendars;\n else\n list = Calendar.$calendars;\n }\n\n promise.then(function() {\n var i = _.indexOf(_.pluck(list, 'id'), _this.id);\n list.splice(i, 1);\n d.resolve();\n }, function(data, status) {\n d.reject(data);\n });\n return d.promise;\n };\n\n /**\n * @function $deleteComponents\n * @memberof Calendar\n * @desc Delete multiple components from calendar.\n * @return a promise of the HTTP operation\n */\n Calendar.$deleteComponents = function(components) {\n\n // We create a c_folder -> event hash\n var calendars = {}, _this = this;\n\n _.forEach(components, function(component) {\n if (!angular.isDefined(calendars[component.c_folder]))\n calendars[component.c_folder] = [];\n\n calendars[component.c_folder].push(component.c_name);\n });\n\n _.forEach(calendars, function(uids, c_folder) {\n Calendar.$$resource.post(c_folder, 'batchDelete', {uids: uids});\n });\n\n // We slice both arrays - might be useful if in the future, we can delete\n // events and tasks at the same time.\n _this.$Component.$events = _.difference(_this.$Component.$events, components);\n _this.$Component.$tasks = _.difference(_this.$Component.$tasks, components);\n };\n\n /**\n * @function $save\n * @memberof Calendar.prototype\n * @desc Save the calendar properties to the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$save = function() {\n return Calendar.$$resource.save(this.id, this.$omit()).then(function(data) {\n return data;\n });\n };\n\n /**\n * @function $setActivation\n * @memberof Calendar.prototype\n * @desc Either activate or deactivate the calendar.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$setActivation = function() {\n return Calendar.$$resource.fetch(this.id, (this.active?'':'de') + 'activateFolder');\n };\n\n /**\n * @function $getComponent\n * @memberof Calendar.prototype\n * @desc Fetch a component attributes from the server.\n * @returns a promise of the HTTP operation\n */\n Calendar.prototype.$getComponent = function(componentId, recurrenceId) {\n return Calendar.$Component.$find(this.id, componentId, recurrenceId);\n };\n\n /**\n * @function $omit\n * @memberof Calendar.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Calendar instance\n */\n Calendar.prototype.$omit = function() {\n var calendar = {};\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' &&\n key[0] != '$') {\n calendar[key] = value;\n }\n });\n return calendar;\n };\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Component\n * @constructor\n * @param {object} futureComponentData - either an object literal or a promise\n */\n function Component(futureComponentData) {\n // Data is immediately available\n if (typeof futureComponentData.then !== 'function') {\n this.init(futureComponentData);\n if (this.pid && !this.id) {\n // Prepare for the creation of a new component;\n // Get UID from the server.\n var newComponentData = Component.$$resource.newguid(this.pid);\n this.$unwrap(newComponentData);\n this.isNew = true;\n }\n }\n else {\n // The promise will be unwrapped first\n this.$unwrap(futureComponentData);\n }\n }\n\n /**\n * @memberof Component\n * @desc The factory we'll use to register with Angular\n * @returns the Component constructor\n */\n Component.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Preferences', 'Gravatar', 'Resource', function($q, $timeout, $log, Settings, Preferences, Gravatar, Resource) {\n angular.extend(Component, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $Preferences: Preferences,\n $gravatar: Gravatar,\n $$resource: new Resource(Settings.baseURL(), Settings.activeUser()),\n timeFormat: \"%H:%M\",\n // Filter parameters common to events and tasks\n $query: { value: '', search: 'title_Category_Location' },\n // Filter paramaters specific to events\n $queryEvents: { sort: 'start', asc: 1, filterpopup: 'view_next7' },\n // Filter parameters specific to tasks\n $queryTasks: { sort: 'status', asc: 1, filterpopup: 'view_incomplete' }\n });\n Preferences.ready().then(function() {\n // Initialize filter parameters from user's settings\n if (Preferences.settings.Calendar.EventsFilterState)\n Component.$queryEvents.filterpopup = Preferences.settings.Calendar.EventsFilterState;\n if (Preferences.settings.Calendar.TasksFilterState)\n Component.$queryTasks.filterpopup = Preferences.settings.Calendar.TasksFilterState;\n if (Preferences.settings.Calendar.EventsSortingState) {\n Component.$queryEvents.sort = Preferences.settings.Calendar.EventsSortingState[0];\n Component.$queryEvents.asc = parseInt(Preferences.settings.Calendar.EventsSortingState[1]);\n }\n if (Preferences.settings.Calendar.TasksSortingState) {\n Component.$queryTasks.sort = Preferences.settings.Calendar.TasksSortingState[0];\n Component.$queryTasks.asc = parseInt(Preferences.settings.Calendar.TasksSortingState[1]);\n }\n Component.$queryTasks.show_completed = parseInt(Preferences.settings.ShowCompletedTasks);\n // Initialize categories from user's defaults\n Component.$categories = Preferences.defaults.SOGoCalendarCategoriesColors;\n // Initialize time format from user's defaults\n if (Preferences.defaults.SOGoTimeFormat) {\n Component.timeFormat = Preferences.defaults.SOGoTimeFormat;\n }\n });\n\n return Component; // return constructor\n }];\n\n /**\n * @module SOGo.SchedulerUI\n * @desc Factory registration of Component in Angular module.\n */\n try {\n angular.module('SOGo.SchedulerUI');\n }\n catch(e) {\n angular.module('SOGo.SchedulerUI', ['SOGo.Common']);\n }\n angular.module('SOGo.SchedulerUI')\n .factory('Component', Component.$factory);\n\n /**\n * @function $selectedCount\n * @memberof Component\n * @desc Return the number of events or tasks selected by the user.\n * @returns the number of selected events or tasks\n */\n Component.$selectedCount = function() {\n var count;\n\n count = 0;\n if (Component.$events) {\n count = (_.filter(Component.$events, function(event) { return event.selected; })).length;\n }\n if (Component.$tasks) {\n count = (_.filter(Component.$tasks, function(event) { return event.selected; })).length;\n }\n return count;\n };\n\n /**\n * @function $filter\n * @memberof Component\n * @desc Search for components matching some criterias\n * @param {string} type - either 'events' or 'tasks'\n * @param {object} [options] - additional options to the query\n * @returns a collection of Components instances\n */\n Component.$filter = function(type, options) {\n var _this = this,\n now = new Date(),\n day = now.getDate(),\n month = now.getMonth() + 1,\n year = now.getFullYear(),\n queryKey = '$query' + type.capitalize(),\n params = {\n day: '' + year + (month < 10?'0':'') + month + (day < 10?'0':'') + day,\n };\n\n return this.$Preferences.ready().then(function() {\n var futureComponentData,\n dirty = false,\n otherType;\n\n angular.extend(_this.$query, params);\n\n if (options) {\n _.each(_.keys(options), function(key) {\n // Query parameters common to events and tasks are compared\n dirty |= (_this.$query[key] && options[key] != Component.$query[key]);\n if (key == 'reload' && options[key])\n dirty = true;\n // Update either the common parameters or the type-specific parameters\n else if (angular.isDefined(_this.$query[key]))\n _this.$query[key] = options[key];\n else\n _this[queryKey][key] = options[key];\n });\n }\n\n // Perform query with both common and type-specific parameters\n futureComponentData = _this.$$resource.fetch(null, type + 'list',\n angular.extend(_this[queryKey], _this.$query));\n\n // Invalidate cached results of other type if $query has changed\n otherType = (type == 'tasks')? '$events' : '$tasks';\n if (dirty) {\n delete Component[otherType];\n Component.$log.debug('force reload of ' + otherType);\n }\n\n return _this.$unwrapCollection(type, futureComponentData);\n });\n };\n\n /**\n * @function $find\n * @desc Fetch a component from a specific calendar.\n * @param {string} calendarId - the calendar ID\n * @param {string} componentId - the component ID\n * @param {string} [occurrenceId] - the component ID\n * @see {@link Calendar.$getComponent}\n */\n Component.$find = function(calendarId, componentId, occurrenceId) {\n var futureComponentData, path = [calendarId, componentId];\n\n if (occurrenceId)\n path.push(occurrenceId);\n\n futureComponentData = this.$$resource.fetch(path.join('/'), 'view');\n\n return new Component(futureComponentData);\n };\n\n /**\n * @function filterCategories\n * @desc Search for categories matching some criterias\n * @param {string} search - the search string to match\n * @returns a collection of strings\n */\n Component.filterCategories = function(query) {\n var re = new RegExp(query, 'i');\n return _.filter(_.keys(Component.$categories), function(category) {\n return category.search(re) != -1;\n });\n };\n\n /**\n * @function saveSelectedList\n * @desc Save to the user's settings the currently selected list.\n * @param {string} componentType - either \"events\" or \"tasks\"\n * @returns a promise of the HTTP operation\n */\n Component.saveSelectedList = function(componentType) {\n return this.$$resource.post(null, 'saveSelectedList', { list: componentType + 'ListView' });\n };\n\n /**\n * @function $eventsBlocksForView\n * @desc Events blocks for a specific week\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} type - Date of any day of the desired period\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocksForView = function(view, date) {\n var viewAction, startDate, endDate, params;\n\n if (view == 'day') {\n viewAction = 'dayView';\n startDate = endDate = date;\n }\n else if (view == 'week') {\n viewAction = 'weekView';\n startDate = date.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.addDays(6);\n }\n else if (view == 'month') {\n viewAction = 'monthView';\n startDate = date;\n startDate.setDate(1);\n startDate = startDate.beginOfWeek();\n endDate = new Date();\n endDate.setTime(startDate.getTime());\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.addDays(-1);\n endDate = endDate.endOfWeek();\n }\n return this.$eventsBlocks(viewAction, startDate, endDate);\n };\n\n /**\n * @function $eventsBlocks\n * @desc Events blocks for a specific view and period\n * @param {string} view - Either 'day' or 'week'\n * @param {Date} startDate - period's start date\n * @param {Date} endDate - period's end date\n * @returns a promise of a collection of objects describing the events blocks\n */\n Component.$eventsBlocks = function(view, startDate, endDate) {\n var params, futureComponentData, i,\n deferred = Component.$q.defer();\n\n params = { view: view.toLowerCase(), sd: startDate.getDayString(), ed: endDate.getDayString() };\n Component.$log.debug('eventsblocks ' + JSON.stringify(params, undefined, 2));\n futureComponentData = this.$$resource.fetch(null, 'eventsblocks', params);\n futureComponentData.then(function(data) {\n Component.$timeout(function() {\n var components = [], blocks = {};\n\n // Instantiate Component objects\n _.reduce(data.events, function(objects, eventData, i) {\n var componentData = _.object(data.eventsFields, eventData),\n start = new Date(componentData.c_startdate * 1000);\n componentData.hour = start.getHourString();\n objects.push(new Component(componentData));\n return objects;\n }, components);\n\n // Associate Component objects to blocks positions\n _.each(_.flatten(data.blocks), function(block) {\n block.component = components[block.nbr];\n });\n\n // Convert array of blocks to object with days as keys\n for (i = 0; i < data.blocks.length; i++) {\n blocks[startDate.getDayString()] = data.blocks[i];\n startDate.addDays(1);\n }\n\n Component.$log.debug('blocks ready (' + _.keys(blocks).length + ')');\n\n // Save the blocks to the object model\n Component.$blocks = blocks;\n\n deferred.resolve(blocks);\n });\n }, deferred.reject);\n\n return deferred.promise;\n };\n\n /**\n * @function $unwrapCollection\n * @desc Unwrap a promise and instanciate new Component objects using received data.\n * @param {string} type - either 'events' or 'tasks'\n * @param {promise} futureComponentData - a promise of the components' metadata\n * @returns a promise of the HTTP operation\n */\n Component.$unwrapCollection = function(type, futureComponentData) {\n var _this = this,\n components = [];\n\n return futureComponentData.then(function(data) {\n return Component.$timeout(function() {\n var fields = _.invoke(data.fields, 'toLowerCase');\n\n // Instanciate Component objects\n _.reduce(data[type], function(components, componentData, i) {\n var data = _.object(fields, componentData);\n components.push(new Component(data));\n return components;\n }, components);\n\n Component.$log.debug('list of ' + type + ' ready (' + components.length + ')');\n\n // Save the list of components to the object model\n Component['$' + type] = components;\n\n return components;\n });\n });\n };\n\n /**\n * @function init\n * @memberof Component.prototype\n * @desc Extend instance with required attributes and new data.\n * @param {object} data - attributes of component\n */\n Component.prototype.init = function(data) {\n var _this = this;\n\n this.categories = [];\n this.repeat = {};\n this.alarm = { action: 'display', quantity: 5, unit: 'MINUTES', reference: 'BEFORE', relation: 'START' };\n this.status = 'not-specified';\n angular.extend(this, data);\n\n Component.$Preferences.ready().then(function() {\n var type = (_this.type == 'appointment')? 'Events' : 'Tasks';\n\n // Set default values from user's defaults\n _this.classification = _this.classification ||\n Component.$Preferences.defaults['SOGoCalendar' + type + 'DefaultClassification'].toLowerCase();\n });\n\n if (this.startDate)\n this.start = new Date(this.startDate.substring(0,10) + ' ' + this.startDate.substring(11,16));\n if (this.endDate)\n this.end = new Date(this.endDate.substring(0,10) + ' ' + this.endDate.substring(11,16));\n if (this.dueDate)\n this.due = new Date(this.dueDate.substring(0,10) + ' ' + this.dueDate.substring(11,16));\n\n // Parse recurrence rule definition and initialize default values\n this.$isRecurrent = angular.isDefined(data.repeat);\n if (this.repeat.days) {\n var byDayMask = _.find(this.repeat.days, function(o) {\n return angular.isDefined(o.occurrence);\n });\n if (byDayMask)\n if (this.repeat.frequency == 'yearly')\n this.repeat.year = { byday: true };\n this.repeat.month = {\n type: 'byday',\n occurrence: byDayMask.occurrence.toString(),\n day: byDayMask.day\n };\n }\n else {\n this.repeat.days = [];\n }\n if (angular.isUndefined(this.repeat.frequency))\n this.repeat.frequency = 'never';\n if (angular.isUndefined(this.repeat.interval))\n this.repeat.interval = 1;\n if (angular.isUndefined(this.repeat.month))\n this.repeat.month = { occurrence: '1', day: 'SU', type: 'bymonthday' };\n if (angular.isUndefined(this.repeat.monthdays))\n // TODO: initialize this.repeat.monthdays with month day of start date\n this.repeat.monthdays = [];\n if (angular.isUndefined(this.repeat.months))\n // TODO: initialize this.repeat.months with month of start date\n this.repeat.months = [];\n if (angular.isUndefined(this.repeat.year))\n this.repeat.year = {};\n if (this.repeat.count)\n this.repeat.end = 'count';\n else if (this.repeat.until) {\n this.repeat.end = 'until';\n this.repeat.until = this.repeat.until.substring(0,10).asDate();\n }\n else\n this.repeat.end = 'never';\n this.$hasCustomRepeat = this.hasCustomRepeat();\n\n if (this.isNew) {\n // Set default alarm\n Component.$Preferences.ready().then(function() {\n var units = { M: 'MINUTES', H: 'HOURS', D: 'DAYS', W: 'WEEKS' };\n var match = /-PT?([0-9]+)([MHDW])/.exec(Component.$Preferences.defaults.SOGoCalendarDefaultReminder);\n if (match) {\n _this.$hasAlarm = true;\n _this.alarm.quantity = parseInt(match[1]);\n _this.alarm.unit = units[match[2]];\n }\n });\n }\n else {\n this.$hasAlarm = angular.isDefined(data.alarm);\n }\n\n // Allow the component to be moved to a different calendar\n this.destinationCalendar = this.pid;\n\n if (this.organizer && this.organizer.email) {\n this.organizer.$image = Component.$gravatar(this.organizer.email, 32);\n }\n\n // Load freebusy of attendees\n this.freebusy = this.updateFreeBusyCoverage();\n\n if (this.attendees) {\n _.each(this.attendees, function(attendee) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n _this.updateFreeBusy(attendee);\n });\n }\n\n this.selected = false;\n };\n\n /**\n * @function hasCustomRepeat\n * @memberof Component.prototype\n * @desc Check if the component has a custom recurrence rule.\n * @returns true if the recurrence rule requires the full recurrence editor\n */\n Component.prototype.hasCustomRepeat = function() {\n var b = angular.isDefined(this.repeat) &&\n (this.repeat.interval > 1 ||\n this.repeat.days && this.repeat.days.length > 0 ||\n this.repeat.monthdays && this.repeat.monthdays.length > 0 ||\n this.repeat.months && this.repeat.months.length > 0);\n return b;\n };\n\n /**\n * @function isEditable\n * @memberof Component.prototype\n * @desc Check if the component is editable and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditable = function() {\n return (!this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isEditableOccurrence\n * @memberof Component.prototype\n * @desc Check if the component is editable and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isEditableOccurrence = function() {\n return (this.occurrenceId && !this.isReadOnly);\n };\n\n /**\n * @function isInvitation\n * @memberof Component.prototype\n * @desc Check if the component an invitation and not an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitation = function() {\n return (!this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isInvitationOccurrence\n * @memberof Component.prototype\n * @desc Check if the component an invitation and an occurrence of a recurrent component\n * @returns true or false\n */\n Component.prototype.isInvitationOccurrence = function() {\n return (this.occurrenceId && this.userHasRSVP);\n };\n\n /**\n * @function isReadOnly\n * @memberof Component.prototype\n * @desc Check if the component is not editable and not an invitation\n * @returns true or false\n */\n Component.prototype.isReadOnly = function() {\n return (this.isReadOnly && !this.userHasRSVP);\n };\n\n /**\n * @function enablePercentComplete\n * @memberof Component.prototype\n * @desc Check if the percent completion should be enabled with respect to the\n * component's type and status.\n * @returns true if the percent completion should be displayed\n */\n Component.prototype.enablePercentComplete = function() {\n return (this.component = 'vtodo' &&\n this.status != 'not-specified' &&\n this.status != 'cancelled');\n };\n\n /**\n * @function coversFreeBusy\n * @memberof Component.prototype\n * @desc Check if a specific quarter matches the component's period\n * @returns true if the quarter covers the component's period\n */\n Component.prototype.coversFreeBusy = function(day, hour, quarter) {\n var b = (angular.isDefined(this.freebusy[day]) &&\n angular.isDefined(this.freebusy[day][hour]) &&\n this.freebusy[day][hour][quarter] == 1);\n return b;\n };\n\n /**\n * @function updateFreeBusyCoverage\n * @memberof Component.prototype\n * @desc Build a 15-minute-based representation of the component's period.\n * @returns an object literal hashed by days and hours and arrays of four 1's and 0's\n */\n Component.prototype.updateFreeBusyCoverage = function() {\n var _this = this, freebusy = {};\n\n if (this.start && this.end) {\n var roundedStart = new Date(this.start.getTime()),\n roundedEnd = new Date(this.end.getTime()),\n startQuarter = parseInt(roundedStart.getMinutes()/15 + 0.5),\n endQuarter = parseInt(roundedEnd.getMinutes()/15 + 0.5);\n roundedStart.setMinutes(15*startQuarter);\n roundedEnd.setMinutes(15*endQuarter);\n\n _.each(roundedStart.daysUpTo(roundedEnd), function(date, index) {\n var currentDay = date.getDate(),\n dayKey = date.getDayString(),\n hourKey;\n if (dayKey == _this.start.getDayString()) {\n hourKey = date.getHours().toString();\n freebusy[dayKey] = {};\n freebusy[dayKey][hourKey] = [];\n while (startQuarter > 0) {\n freebusy[dayKey][hourKey].push(0);\n startQuarter--;\n }\n }\n else {\n date = date.beginOfDay();\n freebusy[dayKey] = {};\n }\n while (date.getTime() < _this.end.getTime() &&\n date.getDate() == currentDay) {\n hourKey = date.getHours().toString();\n if (angular.isUndefined(freebusy[dayKey][hourKey]))\n freebusy[dayKey][hourKey] = [];\n freebusy[dayKey][hourKey].push(1);\n date.addMinutes(15);\n }\n });\n return freebusy;\n }\n };\n\n /**\n * @function updateFreeBusy\n * @memberof Component.prototype\n * @desc Update the freebusy information for the component's period for a specific attendee.\n * @param {Object} card - an Card object instance of the attendee\n */\n Component.prototype.updateFreeBusy = function(attendee) {\n var params, url, days;\n if (attendee.uid) {\n params =\n {\n sday: this.start.getDayString(),\n eday: this.end.getDayString()\n };\n url = ['..', '..', attendee.uid, 'freebusy.ifb'];\n days = _.map(this.start.daysUpTo(this.end), function(day) { return day.getDayString(); });\n\n if (angular.isUndefined(attendee.freebusy))\n attendee.freebusy = {};\n\n // Fetch FreeBusy information\n Component.$$resource.fetch(url.join('/'), 'ajaxRead', params).then(function(data) {\n _.each(days, function(day) {\n var hour;\n\n if (angular.isUndefined(attendee.freebusy[day]))\n attendee.freebusy[day] = {};\n\n if (angular.isUndefined(data[day]))\n data[day] = {};\n\n for (var i = 0; i <= 23; i++) {\n hour = i.toString();\n if (data[day][hour])\n attendee.freebusy[day][hour] = [\n data[day][hour][\"0\"],\n data[day][hour][\"15\"],\n data[day][hour][\"30\"],\n data[day][hour][\"45\"]\n ];\n else\n attendee.freebusy[day][hour] = [0, 0, 0, 0];\n }\n });\n });\n }\n };\n\n /**\n * @function getClassName\n * @memberof Component.prototype\n * @desc Return the component CSS class name based on its container (calendar) ID.\n * @param {string} [base] - the prefix to add to the class name (defaults to \"fg\")\n * @returns a string representing the foreground CSS class name\n */\n Component.prototype.getClassName = function(base) {\n if (angular.isUndefined(base))\n base = 'fg';\n return base + '-folder' + (this.destinationCalendar || this.c_folder);\n };\n\n /**\n * @function addAttendee\n * @memberof Component.prototype\n * @desc Add an attendee and fetch his freebusy info.\n * @param {Object} card - an Card object instance to be added to the attendees list\n */\n Component.prototype.addAttendee = function(card) {\n var attendee, url, params;\n if (card) {\n attendee = {\n name: card.c_cn,\n email: card.$preferredEmail(),\n role: 'req-participant',\n status: 'needs-action',\n uid: card.c_uid\n };\n if (!_.find(this.attendees, function(o) {\n return o.email == attendee.email;\n })) {\n attendee.image = Component.$gravatar(attendee.email, 32);\n if (this.attendees)\n this.attendees.push(attendee);\n else\n this.attendees = [attendee];\n this.updateFreeBusy(attendee);\n }\n }\n };\n\n /**\n * @function hasAttendee\n * @memberof Component.prototype\n * @desc Verify if one of the email addresses of a Card instance matches an attendee.\n * @param {Object} card - an Card object instance\n * @returns true if the Card matches an attendee\n */\n Component.prototype.hasAttendee = function(card) {\n var attendee = _.find(this.attendees, function(attendee) {\n return _.find(card.emails, function(email) {\n return email.value == attendee.email;\n });\n });\n return angular.isDefined(attendee);\n };\n\n /**\n * @function canRemindAttendeesByEmail\n * @memberof Component.prototype\n * @desc Verify if the component's reminder must be send by email and if it has at least one attendee.\n * @returns true if attendees can receive a reminder by email\n */\n Component.prototype.canRemindAttendeesByEmail = function() {\n return this.alarm.action == 'email' &&\n !this.isReadOnly &&\n this.attendees && this.attendees.length > 0;\n };\n\n /**\n * @function addAttachUrl\n * @memberof Component.prototype\n * @desc Add a new attach URL if not already defined\n * @param {string} attachUrl - the URL\n * @returns the number of values in the list of attach URLs\n */\n Component.prototype.addAttachUrl = function(attachUrl) {\n if (angular.isUndefined(this.attachUrls)) {\n this.attachUrls = [{value: attachUrl}];\n }\n else {\n for (var i = 0; i < this.attachUrls.length; i++) {\n if (this.attachUrls[i].value == attachUrl) {\n break;\n }\n }\n if (i == this.attachUrls.length)\n this.attachUrls.push({value: attachUrl});\n }\n return this.attachUrls.length - 1;\n };\n\n /**\n * @function deleteAttachUrl\n * @memberof Component.prototype\n * @desc Remove an attach URL\n * @param {number} index - the URL index in the list of attach URLs\n */\n Component.prototype.deleteAttachUrl = function(index) {\n if (index > -1 && this.attachUrls.length > index) {\n this.attachUrls.splice(index, 1);\n }\n };\n\n /**\n * @function $reset\n * @memberof Component.prototype\n * @desc Reset the original state the component's data.\n */\n Component.prototype.$reset = function() {\n var _this = this;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n delete _this[key];\n }\n });\n this.init(this.$shadowData);\n this.$shadowData = this.$omit(true);\n };\n\n /**\n * @function reply\n * @memberof Component.prototype\n * @desc Reply to an invitation.\n * @returns a promise of the HTTP operation\n */\n Component.prototype.$reply = function() {\n var _this = this, data, path = [this.pid, this.id];\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n data = {\n reply: this.reply,\n delegatedTo: this.delegatedTo,\n alarm: this.$hasAlarm? this.alarm : {}\n };\n\n return Component.$$resource.save(path.join('/'), data, { action: 'rsvpAppointment' })\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $save\n * @memberof Component.prototype\n * @desc Save the component to the server.\n */\n Component.prototype.$save = function() {\n var _this = this, options, path = [this.pid, this.id];\n\n if (this.isNew)\n options = { action: 'saveAs' + this.type.capitalize() };\n\n if (this.occurrenceId)\n path.push(this.occurrenceId);\n\n return Component.$$resource.save(path.join('/'), this.$omit(), options)\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $unwrap\n * @memberof Component.prototype\n * @desc Unwrap a promise.\n * @param {promise} futureComponentData - a promise of some of the Component's data\n */\n Component.prototype.$unwrap = function(futureComponentData) {\n var _this = this;\n\n // Expose the promise\n this.$futureComponentData = futureComponentData;\n\n // Resolve the promise\n this.$futureComponentData.then(function(data) {\n _this.init(data);\n // Make a copy of the data for an eventual reset\n _this.$shadowData = _this.$omit();\n }, function(data) {\n angular.extend(_this, data);\n _this.isError = true;\n Component.$log.error(_this.error);\n });\n };\n\n /**\n * @function $omit\n * @memberof Component.prototype\n * @desc Return a sanitized object used to send to the server.\n * @return an object literal copy of the Component instance\n */\n Component.prototype.$omit = function() {\n var component = {}, date;\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n component[key] = angular.copy(value);\n }\n });\n\n // Format times\n component.startTime = component.startDate ? formatTime(component.startDate) : '';\n component.endTime = component.endDate ? formatTime(component.endDate) : '';\n\n // Update recurrence definition depending on selections\n if (this.$hasCustomRepeat) {\n if (this.repeat.frequency == 'monthly' && this.repeat.month.type && this.repeat.month.type == 'byday' ||\n this.repeat.frequency == 'yearly' && this.repeat.year.byday) {\n // BYDAY mask for a monthly or yearly recurrence\n delete component.repeat.monthdays;\n component.repeat.days = [{ day: this.repeat.month.day, occurrence: this.repeat.month.occurrence.toString() }];\n }\n else if (this.repeat.month.type) {\n // montly recurrence by month days or yearly by month\n delete component.repeat.days;\n }\n }\n else if (this.repeat.frequency) {\n component.repeat = { frequency: this.repeat.frequency };\n }\n if (this.repeat.frequency) {\n if (this.repeat.end == 'until' && this.repeat.until)\n component.repeat.until = this.repeat.until.stringWithSeparator('-');\n else if (this.repeat.end == 'count' && this.repeat.count)\n component.repeat.count = this.repeat.count;\n else {\n delete component.repeat.until;\n delete component.repeat.count;\n }\n }\n else {\n delete component.repeat;\n }\n\n if (this.$hasAlarm) {\n if (this.alarm.action && this.alarm.action == 'email' &&\n !(this.attendees && this.attendees.length > 0)) {\n // No attendees; email reminder must be sent to organizer only\n this.alarm.attendees = 0;\n this.alarm.organizer = 1;\n }\n }\n else {\n component.alarm = {};\n }\n\n function formatTime(dateString) {\n // YYYY-MM-DDTHH:MM-ZZ:00 => YYYY-MM-DD HH:MM\n var date = new Date(dateString.substring(0,10) + ' ' + dateString.substring(11,16)),\n hours = date.getHours(),\n minutes = date.getMinutes();\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n\n return hours + ':' + minutes;\n }\n\n return component;\n };\n\n})();\n"]} \ No newline at end of file diff --git a/UI/WebServerResources/js/vendor/angular-animate.js b/UI/WebServerResources/js/vendor/angular-animate.js index cd835d0e2..dd9b0551d 100644 --- a/UI/WebServerResources/js/vendor/angular-animate.js +++ b/UI/WebServerResources/js/vendor/angular-animate.js @@ -1,29 +1,3060 @@ /** - * @license AngularJS v1.3.18 - * (c) 2010-2014 Google, Inc. http://angularjs.org + * @license AngularJS v1.4.4 + * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular, undefined) {'use strict'; -/* jshint maxlen: false */ +/* jshint ignore:start */ +var noop = angular.noop; +var extend = angular.extend; +var jqLite = angular.element; +var forEach = angular.forEach; +var isArray = angular.isArray; +var isString = angular.isString; +var isObject = angular.isObject; +var isUndefined = angular.isUndefined; +var isDefined = angular.isDefined; +var isFunction = angular.isFunction; +var isElement = angular.isElement; + +var ELEMENT_NODE = 1; +var COMMENT_NODE = 8; + +var ADD_CLASS_SUFFIX = '-add'; +var REMOVE_CLASS_SUFFIX = '-remove'; +var EVENT_CLASS_PREFIX = 'ng-'; +var ACTIVE_CLASS_SUFFIX = '-active'; + +var NG_ANIMATE_CLASSNAME = 'ng-animate'; +var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren'; + +// Detect proper transitionend/animationend event names. +var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; + +// If unprefixed events are not supported but webkit-prefixed are, use the latter. +// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. +// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` +// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. +// Register both events in case `window.onanimationend` is not supported because of that, +// do the same for `transitionend` as Safari is likely to exhibit similar behavior. +// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit +// therefore there is no reason to test anymore for other vendor prefixes: +// http://caniuse.com/#search=transition +if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) { + CSS_PREFIX = '-webkit-'; + TRANSITION_PROP = 'WebkitTransition'; + TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; +} else { + TRANSITION_PROP = 'transition'; + TRANSITIONEND_EVENT = 'transitionend'; +} + +if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) { + CSS_PREFIX = '-webkit-'; + ANIMATION_PROP = 'WebkitAnimation'; + ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; +} else { + ANIMATION_PROP = 'animation'; + ANIMATIONEND_EVENT = 'animationend'; +} + +var DURATION_KEY = 'Duration'; +var PROPERTY_KEY = 'Property'; +var DELAY_KEY = 'Delay'; +var TIMING_KEY = 'TimingFunction'; +var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; +var ANIMATION_PLAYSTATE_KEY = 'PlayState'; +var SAFE_FAST_FORWARD_DURATION_VALUE = 9999; + +var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY; +var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY; +var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY; +var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY; + +var isPromiseLike = function(p) { + return p && p.then ? true : false; +}; + +function assertArg(arg, name, reason) { + if (!arg) { + throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required")); + } + return arg; +} + +function mergeClasses(a,b) { + if (!a && !b) return ''; + if (!a) return b; + if (!b) return a; + if (isArray(a)) a = a.join(' '); + if (isArray(b)) b = b.join(' '); + return a + ' ' + b; +} + +function packageStyles(options) { + var styles = {}; + if (options && (options.to || options.from)) { + styles.to = options.to; + styles.from = options.from; + } + return styles; +} + +function pendClasses(classes, fix, isPrefix) { + var className = ''; + classes = isArray(classes) + ? classes + : classes && isString(classes) && classes.length + ? classes.split(/\s+/) + : []; + forEach(classes, function(klass, i) { + if (klass && klass.length > 0) { + className += (i > 0) ? ' ' : ''; + className += isPrefix ? fix + klass + : klass + fix; + } + }); + return className; +} + +function removeFromArray(arr, val) { + var index = arr.indexOf(val); + if (val >= 0) { + arr.splice(index, 1); + } +} + +function stripCommentsFromElement(element) { + if (element instanceof jqLite) { + switch (element.length) { + case 0: + return []; + break; + + case 1: + // there is no point of stripping anything if the element + // is the only element within the jqLite wrapper. + // (it's important that we retain the element instance.) + if (element[0].nodeType === ELEMENT_NODE) { + return element; + } + break; + + default: + return jqLite(extractElementNode(element)); + break; + } + } + + if (element.nodeType === ELEMENT_NODE) { + return jqLite(element); + } +} + +function extractElementNode(element) { + if (!element[0]) return element; + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType == ELEMENT_NODE) { + return elm; + } + } +} + +function $$addClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.addClass(elm, className); + }); +} + +function $$removeClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.removeClass(elm, className); + }); +} + +function applyAnimationClassesFactory($$jqLite) { + return function(element, options) { + if (options.addClass) { + $$addClass($$jqLite, element, options.addClass); + options.addClass = null; + } + if (options.removeClass) { + $$removeClass($$jqLite, element, options.removeClass); + options.removeClass = null; + } + } +} + +function prepareAnimationOptions(options) { + options = options || {}; + if (!options.$$prepared) { + var domOperation = options.domOperation || noop; + options.domOperation = function() { + options.$$domOperationFired = true; + domOperation(); + domOperation = noop; + }; + options.$$prepared = true; + } + return options; +} + +function applyAnimationStyles(element, options) { + applyAnimationFromStyles(element, options); + applyAnimationToStyles(element, options); +} + +function applyAnimationFromStyles(element, options) { + if (options.from) { + element.css(options.from); + options.from = null; + } +} + +function applyAnimationToStyles(element, options) { + if (options.to) { + element.css(options.to); + options.to = null; + } +} + +function mergeAnimationOptions(element, target, newOptions) { + var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || ''); + var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || ''); + var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove); + + if (newOptions.preparationClasses) { + target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses); + delete newOptions.preparationClasses; + } + + // noop is basically when there is no callback; otherwise something has been set + var realDomOperation = target.domOperation !== noop ? target.domOperation : null; + + extend(target, newOptions); + + // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this. + if (realDomOperation) { + target.domOperation = realDomOperation; + } + + if (classes.addClass) { + target.addClass = classes.addClass; + } else { + target.addClass = null; + } + + if (classes.removeClass) { + target.removeClass = classes.removeClass; + } else { + target.removeClass = null; + } + + return target; +} + +function resolveElementClasses(existing, toAdd, toRemove) { + var ADD_CLASS = 1; + var REMOVE_CLASS = -1; + + var flags = {}; + existing = splitClassesToLookup(existing); + + toAdd = splitClassesToLookup(toAdd); + forEach(toAdd, function(value, key) { + flags[key] = ADD_CLASS; + }); + + toRemove = splitClassesToLookup(toRemove); + forEach(toRemove, function(value, key) { + flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS; + }); + + var classes = { + addClass: '', + removeClass: '' + }; + + forEach(flags, function(val, klass) { + var prop, allow; + if (val === ADD_CLASS) { + prop = 'addClass'; + allow = !existing[klass]; + } else if (val === REMOVE_CLASS) { + prop = 'removeClass'; + allow = existing[klass]; + } + if (allow) { + if (classes[prop].length) { + classes[prop] += ' '; + } + classes[prop] += klass; + } + }); + + function splitClassesToLookup(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + var obj = {}; + forEach(classes, function(klass) { + // sometimes the split leaves empty string values + // incase extra spaces were applied to the options + if (klass.length) { + obj[klass] = true; + } + }); + return obj; + } + + return classes; +} + +function getDomNode(element) { + return (element instanceof angular.element) ? element[0] : element; +} + +function applyGeneratedPreparationClasses(element, event, options) { + var classes = ''; + if (event) { + classes = pendClasses(event, EVENT_CLASS_PREFIX, true); + } + if (options.addClass) { + classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX)); + } + if (options.removeClass) { + classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX)); + } + if (classes.length) { + options.preparationClasses = classes; + element.addClass(classes); + } +} + +function clearGeneratedClasses(element, options) { + if (options.preparationClasses) { + element.removeClass(options.preparationClasses); + options.preparationClasses = null; + } + if (options.activeClasses) { + element.removeClass(options.activeClasses); + options.activeClasses = null; + } +} + +function blockTransitions(node, duration) { + // we use a negative delay value since it performs blocking + // yet it doesn't kill any existing transitions running on the + // same element which makes this safe for class-based animations + var value = duration ? '-' + duration + 's' : ''; + applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]); + return [TRANSITION_DELAY_PROP, value]; +} + +function blockKeyframeAnimations(node, applyBlock) { + var value = applyBlock ? 'paused' : ''; + var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY; + applyInlineStyle(node, [key, value]); + return [key, value]; +} + +function applyInlineStyle(node, styleTuple) { + var prop = styleTuple[0]; + var value = styleTuple[1]; + node.style[prop] = value; +} + +function concatWithSpace(a,b) { + if (!a) return b; + if (!b) return a; + return a + ' ' + b; +} + +function $$BodyProvider() { + this.$get = ['$document', function($document) { + return jqLite($document[0].body); + }]; +} + +var $$AnimateChildrenDirective = [function() { + return function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if (angular.isString(val) && val.length === 0) { //empty attribute + element.data(NG_ANIMATE_CHILDREN_DATA, true); + } else { + attrs.$observe('ngAnimateChildren', function(value) { + value = value === 'on' || value === 'true'; + element.data(NG_ANIMATE_CHILDREN_DATA, value); + }); + } + }; +}]; + +/** + * @ngdoc service + * @name $animateCss + * @kind object + * + * @description + * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes + * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT + * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or + * directives to create more complex animations that can be purely driven using CSS code. + * + * Note that only browsers that support CSS transitions and/or keyframe animations are capable of + * rendering animations triggered via `$animateCss` (bad news for IE9 and lower). + * + * ## Usage + * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that + * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however, + * any automatic control over cancelling animations and/or preventing animations from being run on + * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to + * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger + * the CSS animation. + * + * The example below shows how we can create a folding animation on an element using `ng-if`: + * + * ```html + * + *
+ * This element will go BOOM + *
+ * + * ``` + * + * Now we create the **JavaScript animation** that will trigger the CSS transition: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * ## More Advanced Uses + * + * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks + * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code. + * + * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation, + * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with + * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order + * to provide a working animation that will run in CSS. + * + * The example below showcases a more advanced version of the `.fold-animation` from the example above: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * addClass: 'red large-text pulse-twice', + * easing: 'ease-out', + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * Since we're adding/removing CSS classes then the CSS transition will also pick those up: + * + * ```css + * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code, + * the CSS classes below will be transitioned despite them being defined as regular CSS classes */ + * .red { background:red; } + * .large-text { font-size:20px; } + * + * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */ + * .pulse-twice { + * animation: 0.5s pulse linear 2; + * -webkit-animation: 0.5s pulse linear 2; + * } + * + * @keyframes pulse { + * from { transform: scale(0.5); } + * to { transform: scale(1.5); } + * } + * + * @-webkit-keyframes pulse { + * from { -webkit-transform: scale(0.5); } + * to { -webkit-transform: scale(1.5); } + * } + * ``` + * + * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen. + * + * ## How the Options are handled + * + * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation + * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline + * styles using the `from` and `to` properties. + * + * ```js + * var animator = $animateCss(element, { + * from: { background:'red' }, + * to: { background:'blue' } + * }); + * animator.start(); + * ``` + * + * ```css + * .rotating-animation { + * animation:0.5s rotate linear; + * -webkit-animation:0.5s rotate linear; + * } + * + * @keyframes rotate { + * from { transform: rotate(0deg); } + * to { transform: rotate(360deg); } + * } + * + * @-webkit-keyframes rotate { + * from { -webkit-transform: rotate(0deg); } + * to { -webkit-transform: rotate(360deg); } + * } + * ``` + * + * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is + * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition + * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition + * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied + * and spread across the transition and keyframe animation. + * + * ## What is returned + * + * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually + * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are + * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties: + * + * ```js + * var animator = $animateCss(element, { ... }); + * ``` + * + * Now what do the contents of our `animator` variable look like: + * + * ```js + * { + * // starts the animation + * start: Function, + * + * // ends (aborts) the animation + * end: Function + * } + * ``` + * + * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends. + * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and stlyes may have been + * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties + * and that changing them will not reconfigure the parameters of the animation. + * + * ### runner.done() vs runner.then() + * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the + * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**. + * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()` + * unless you really need a digest to kick off afterwards. + * + * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss + * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code). + * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works. + * + * @param {DOMElement} element the element that will be animated + * @param {object} options the animation-related options that will be applied during the animation + * + * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied + * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.) + * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both). + * * `transition` - The raw CSS transition style that will be used (e.g. `1s linear all`). + * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`). + * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation. + * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition. + * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation. + * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation. + * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0` + * is provided then the animation will be skipped entirely. + * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is + * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value + * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same + * CSS delay value. + * * `stagger` - A numeric time value representing the delay between successively animated elements + * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.}) + * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a + * * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`) + * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occuring on the classes being added and removed.) + * + * @return {object} an object with start and end methods and details about the animation. + * + * * `start` - The method to start the animation. This will return a `Promise` when called. + * * `end` - This method will cancel the animation and remove all applied CSS classes and styles. + */ +var ONE_SECOND = 1000; +var BASE_TEN = 10; + +var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; +var CLOSING_TIME_BUFFER = 1.5; + +var DETECT_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + transitionProperty: TRANSITION_PROP + PROPERTY_KEY, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP, + animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY +}; + +var DETECT_STAGGER_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP +}; + +function getCssKeyframeDurationStyle(duration) { + return [ANIMATION_DURATION_PROP, duration + 's']; +} + +function getCssDelayStyle(delay, isKeyframeAnimation) { + var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP; + return [prop, delay + 's']; +} + +function computeCssStyles($window, element, properties) { + var styles = Object.create(null); + var detectedStyles = $window.getComputedStyle(element) || {}; + forEach(properties, function(formalStyleName, actualStyleName) { + var val = detectedStyles[formalStyleName]; + if (val) { + var c = val.charAt(0); + + // only numerical-based values have a negative sign or digit as the first value + if (c === '-' || c === '+' || c >= 0) { + val = parseMaxTime(val); + } + + // by setting this to null in the event that the delay is not set or is set directly as 0 + // then we can still allow for zegative values to be used later on and not mistake this + // value for being greater than any other negative value. + if (val === 0) { + val = null; + } + styles[actualStyleName] = val; + } + }); + + return styles; +} + +function parseMaxTime(str) { + var maxValue = 0; + var values = str.split(/\s*,\s*/); + forEach(values, function(value) { + // it's always safe to consider only second values and omit `ms` values since + // getComputedStyle will always handle the conversion for us + if (value.charAt(value.length - 1) == 's') { + value = value.substring(0, value.length - 1); + } + value = parseFloat(value) || 0; + maxValue = maxValue ? Math.max(value, maxValue) : value; + }); + return maxValue; +} + +function truthyTimingValue(val) { + return val === 0 || val != null; +} + +function getCssTransitionDurationStyle(duration, applyOnlyDuration) { + var style = TRANSITION_PROP; + var value = duration + 's'; + if (applyOnlyDuration) { + style += DURATION_KEY; + } else { + value += ' linear all'; + } + return [style, value]; +} + +function createLocalCacheLookup() { + var cache = Object.create(null); + return { + flush: function() { + cache = Object.create(null); + }, + + count: function(key) { + var entry = cache[key]; + return entry ? entry.total : 0; + }, + + get: function(key) { + var entry = cache[key]; + return entry && entry.value; + }, + + put: function(key, value) { + if (!cache[key]) { + cache[key] = { total: 1, value: value }; + } else { + cache[key].total++; + } + } + }; +} + +var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { + var gcsLookup = createLocalCacheLookup(); + var gcsStaggerLookup = createLocalCacheLookup(); + + this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', '$$forceReflow', '$sniffer', '$$rAF', + function($window, $$jqLite, $$AnimateRunner, $timeout, $$forceReflow, $sniffer, $$rAF) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + var parentCounter = 0; + function gcsHashFn(node, extraClasses) { + var KEY = "$$ngAnimateParentKey"; + var parentNode = node.parentNode; + var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter); + return parentID + '-' + node.getAttribute('class') + '-' + extraClasses; + } + + function computeCachedCssStyles(node, className, cacheKey, properties) { + var timings = gcsLookup.get(cacheKey); + + if (!timings) { + timings = computeCssStyles($window, node, properties); + if (timings.animationIterationCount === 'infinite') { + timings.animationIterationCount = 1; + } + } + + // we keep putting this in multiple times even though the value and the cacheKey are the same + // because we're keeping an interal tally of how many duplicate animations are detected. + gcsLookup.put(cacheKey, timings); + return timings; + } + + function computeCachedCssStaggerStyles(node, className, cacheKey, properties) { + var stagger; + + // if we have one or more existing matches of matching elements + // containing the same parent + CSS styles (which is how cacheKey works) + // then staggering is possible + if (gcsLookup.count(cacheKey) > 0) { + stagger = gcsStaggerLookup.get(cacheKey); + + if (!stagger) { + var staggerClassName = pendClasses(className, '-stagger'); + + $$jqLite.addClass(node, staggerClassName); + + stagger = computeCssStyles($window, node, properties); + + // force the conversion of a null value to zero incase not set + stagger.animationDuration = Math.max(stagger.animationDuration, 0); + stagger.transitionDuration = Math.max(stagger.transitionDuration, 0); + + $$jqLite.removeClass(node, staggerClassName); + + gcsStaggerLookup.put(cacheKey, stagger); + } + } + + return stagger || {}; + } + + var cancelLastRAFRequest; + var rafWaitQueue = []; + function waitUntilQuiet(callback) { + if (cancelLastRAFRequest) { + cancelLastRAFRequest(); //cancels the request + } + rafWaitQueue.push(callback); + cancelLastRAFRequest = $$rAF(function() { + cancelLastRAFRequest = null; + gcsLookup.flush(); + gcsStaggerLookup.flush(); + + // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable. + // PLEASE EXAMINE THE `$$forceReflow` service to understand why. + var pageWidth = $$forceReflow(); + + // we use a for loop to ensure that if the queue is changed + // during this looping then it will consider new requests + for (var i = 0; i < rafWaitQueue.length; i++) { + rafWaitQueue[i](pageWidth); + } + rafWaitQueue.length = 0; + }); + } + + return init; + + function computeTimings(node, className, cacheKey) { + var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES); + var aD = timings.animationDelay; + var tD = timings.transitionDelay; + timings.maxDelay = aD && tD + ? Math.max(aD, tD) + : (aD || tD); + timings.maxDuration = Math.max( + timings.animationDuration * timings.animationIterationCount, + timings.transitionDuration); + + return timings; + } + + function init(element, options) { + var node = getDomNode(element); + if (!node || !node.parentNode) { + return closeAndReturnNoopAnimator(); + } + + options = prepareAnimationOptions(options); + + var temporaryStyles = []; + var classes = element.attr('class'); + var styles = packageStyles(options); + var animationClosed; + var animationPaused; + var animationCompleted; + var runner; + var runnerHost; + var maxDelay; + var maxDelayTime; + var maxDuration; + var maxDurationTime; + + if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) { + return closeAndReturnNoopAnimator(); + } + + var method = options.event && isArray(options.event) + ? options.event.join(' ') + : options.event; + + var isStructural = method && options.structural; + var structuralClassName = ''; + var addRemoveClassName = ''; + + if (isStructural) { + structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true); + } else if (method) { + structuralClassName = method; + } + + if (options.addClass) { + addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX); + } + + if (options.removeClass) { + if (addRemoveClassName.length) { + addRemoveClassName += ' '; + } + addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX); + } + + // there may be a situation where a structural animation is combined together + // with CSS classes that need to resolve before the animation is computed. + // However this means that there is no explicit CSS code to block the animation + // from happening (by setting 0s none in the class name). If this is the case + // we need to apply the classes before the first rAF so we know to continue if + // there actually is a detected transition or keyframe animation + if (options.applyClassesEarly && addRemoveClassName.length) { + applyAnimationClasses(element, options); + addRemoveClassName = ''; + } + + var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim(); + var fullClassName = classes + ' ' + preparationClasses; + var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX); + var hasToStyles = styles.to && Object.keys(styles.to).length > 0; + var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0; + + // there is no way we can trigger an animation if no styles and + // no classes are being applied which would then trigger a transition, + // unless there a is raw keyframe value that is applied to the element. + if (!containsKeyframeAnimation + && !hasToStyles + && !preparationClasses) { + return closeAndReturnNoopAnimator(); + } + + var cacheKey, stagger; + if (options.stagger > 0) { + var staggerVal = parseFloat(options.stagger); + stagger = { + transitionDelay: staggerVal, + animationDelay: staggerVal, + transitionDuration: 0, + animationDuration: 0 + }; + } else { + cacheKey = gcsHashFn(node, fullClassName); + stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES); + } + + if (!options.$$skipPreparationClasses) { + $$jqLite.addClass(element, preparationClasses); + } + + var applyOnlyDuration; + + if (options.transitionStyle) { + var transitionStyle = [TRANSITION_PROP, options.transitionStyle]; + applyInlineStyle(node, transitionStyle); + temporaryStyles.push(transitionStyle); + } + + if (options.duration >= 0) { + applyOnlyDuration = node.style[TRANSITION_PROP].length > 0; + var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration); + + // we set the duration so that it will be picked up by getComputedStyle later + applyInlineStyle(node, durationStyle); + temporaryStyles.push(durationStyle); + } + + if (options.keyframeStyle) { + var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle]; + applyInlineStyle(node, keyframeStyle); + temporaryStyles.push(keyframeStyle); + } + + var itemIndex = stagger + ? options.staggerIndex >= 0 + ? options.staggerIndex + : gcsLookup.count(cacheKey) + : 0; + + var isFirst = itemIndex === 0; + + // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY + // without causing any combination of transitions to kick in. By adding a negative delay value + // it forces the setup class' transition to end immediately. We later then remove the negative + // transition delay to allow for the transition to naturally do it's thing. The beauty here is + // that if there is no transition defined then nothing will happen and this will also allow + // other transitions to be stacked on top of each other without any chopping them out. + if (isFirst && !options.skipBlocking) { + blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); + } + + var timings = computeTimings(node, fullClassName, cacheKey); + var relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + var flags = {}; + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty == 'all'; + flags.applyTransitionDuration = hasToStyles && ( + (flags.hasTransitions && !flags.hasTransitionAll) + || (flags.hasAnimations && !flags.hasTransitions)); + flags.applyAnimationDuration = options.duration && flags.hasAnimations; + flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions); + flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations; + flags.recalculateTimingStyles = addRemoveClassName.length > 0; + + if (flags.applyTransitionDuration || flags.applyAnimationDuration) { + maxDuration = options.duration ? parseFloat(options.duration) : maxDuration; + + if (flags.applyTransitionDuration) { + flags.hasTransitions = true; + timings.transitionDuration = maxDuration; + applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0; + temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration)); + } + + if (flags.applyAnimationDuration) { + flags.hasAnimations = true; + timings.animationDuration = maxDuration; + temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration)); + } + } + + if (maxDuration === 0 && !flags.recalculateTimingStyles) { + return closeAndReturnNoopAnimator(); + } + + // we need to recalculate the delay value since we used a pre-emptive negative + // delay value and the delay value is required for the final event checking. This + // property will ensure that this will happen after the RAF phase has passed. + if (options.duration == null && timings.transitionDuration > 0) { + flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + if (!options.skipBlocking) { + flags.blockTransition = timings.transitionDuration > 0; + flags.blockKeyframeAnimation = timings.animationDuration > 0 && + stagger.animationDelay > 0 && + stagger.animationDuration === 0; + } + + applyAnimationFromStyles(element, options); + + if (flags.blockTransition || flags.blockKeyframeAnimation) { + applyBlocking(maxDuration); + } else if (!options.skipBlocking) { + blockTransitions(node, false); + } + + // TODO(matsko): for 1.5 change this code to have an animator object for better debugging + return { + $$willAnimate: true, + end: endFn, + start: function() { + if (animationClosed) return; + + runnerHost = { + end: endFn, + cancel: cancelFn, + resume: null, //this will be set during the start() phase + pause: null + }; + + runner = new $$AnimateRunner(runnerHost); + + waitUntilQuiet(start); + + // we don't have access to pause/resume the animation + // since it hasn't run yet. AnimateRunner will therefore + // set noop functions for resume and pause and they will + // later be overridden once the animation is triggered + return runner; + } + }; + + function endFn() { + close(); + } + + function cancelFn() { + close(true); + } + + function close(rejected) { // jshint ignore:line + // if the promise has been called already then we shouldn't close + // the animation again + if (animationClosed || (animationCompleted && animationPaused)) return; + animationClosed = true; + animationPaused = false; + + if (!options.$$skipPreparationClasses) { + $$jqLite.removeClass(element, preparationClasses); + } + $$jqLite.removeClass(element, activeClasses); + + blockKeyframeAnimations(node, false); + blockTransitions(node, false); + + forEach(temporaryStyles, function(entry) { + // There is only one way to remove inline style properties entirely from elements. + // By using `removeProperty` this works, but we need to convert camel-cased CSS + // styles down to hyphenated values. + node.style[entry[0]] = ''; + }); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + + // the reason why we have this option is to allow a synchronous closing callback + // that is fired as SOON as the animation ends (when the CSS is removed) or if + // the animation never takes off at all. A good example is a leave animation since + // the element must be removed just after the animation is over or else the element + // will appear on screen for one animation frame causing an overbearing flicker. + if (options.onDone) { + options.onDone(); + } + + // if the preparation function fails then the promise is not setup + if (runner) { + runner.complete(!rejected); + } + } + + function applyBlocking(duration) { + if (flags.blockTransition) { + blockTransitions(node, duration); + } + + if (flags.blockKeyframeAnimation) { + blockKeyframeAnimations(node, !!duration); + } + } + + function closeAndReturnNoopAnimator() { + runner = new $$AnimateRunner({ + end: endFn, + cancel: cancelFn + }); + + close(); + + return { + $$willAnimate: false, + start: function() { + return runner; + }, + end: endFn + }; + } + + function start() { + if (animationClosed) return; + if (!node.parentNode) { + close(); + return; + } + + var startTime, events = []; + + // even though we only pause keyframe animations here the pause flag + // will still happen when transitions are used. Only the transition will + // not be paused since that is not possible. If the animation ends when + // paused then it will not complete until unpaused or cancelled. + var playPause = function(playAnimation) { + if (!animationCompleted) { + animationPaused = !playAnimation; + if (timings.animationDuration) { + var value = blockKeyframeAnimations(node, animationPaused); + animationPaused + ? temporaryStyles.push(value) + : removeFromArray(temporaryStyles, value); + } + } else if (animationPaused && playAnimation) { + animationPaused = false; + close(); + } + }; + + // checking the stagger duration prevents an accidently cascade of the CSS delay style + // being inherited from the parent. If the transition duration is zero then we can safely + // rely that the delay value is an intential stagger delay style. + var maxStagger = itemIndex > 0 + && ((timings.transitionDuration && stagger.transitionDuration === 0) || + (timings.animationDuration && stagger.animationDuration === 0)) + && Math.max(stagger.animationDelay, stagger.transitionDelay); + if (maxStagger) { + $timeout(triggerAnimationStart, + Math.floor(maxStagger * itemIndex * ONE_SECOND), + false); + } else { + triggerAnimationStart(); + } + + // this will decorate the existing promise runner with pause/resume methods + runnerHost.resume = function() { + playPause(true); + }; + + runnerHost.pause = function() { + playPause(false); + }; + + function triggerAnimationStart() { + // just incase a stagger animation kicks in when the animation + // itself was cancelled entirely + if (animationClosed) return; + + applyBlocking(false); + + forEach(temporaryStyles, function(entry) { + var key = entry[0]; + var value = entry[1]; + node.style[key] = value; + }); + + applyAnimationClasses(element, options); + $$jqLite.addClass(element, activeClasses); + + if (flags.recalculateTimingStyles) { + fullClassName = node.className + ' ' + preparationClasses; + cacheKey = gcsHashFn(node, fullClassName); + + timings = computeTimings(node, fullClassName, cacheKey); + relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + if (maxDuration === 0) { + close(); + return; + } + + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + } + + if (flags.applyTransitionDelay || flags.applyAnimationDelay) { + relativeDelay = typeof options.delay !== "boolean" && truthyTimingValue(options.delay) + ? parseFloat(options.delay) + : relativeDelay; + + maxDelay = Math.max(relativeDelay, 0); + + var delayStyle; + if (flags.applyTransitionDelay) { + timings.transitionDelay = relativeDelay; + delayStyle = getCssDelayStyle(relativeDelay); + temporaryStyles.push(delayStyle); + node.style[delayStyle[0]] = delayStyle[1]; + } + + if (flags.applyAnimationDelay) { + timings.animationDelay = relativeDelay; + delayStyle = getCssDelayStyle(relativeDelay, true); + temporaryStyles.push(delayStyle); + node.style[delayStyle[0]] = delayStyle[1]; + } + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + + if (options.easing) { + var easeProp, easeVal = options.easing; + if (flags.hasTransitions) { + easeProp = TRANSITION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + if (flags.hasAnimations) { + easeProp = ANIMATION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + } + + if (timings.transitionDuration) { + events.push(TRANSITIONEND_EVENT); + } + + if (timings.animationDuration) { + events.push(ANIMATIONEND_EVENT); + } + + startTime = Date.now(); + element.on(events.join(' '), onAnimationProgress); + $timeout(onAnimationExpired, maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime, false); + + applyAnimationToStyles(element, options); + } + + function onAnimationExpired() { + // although an expired animation is a failed animation, getting to + // this outcome is very easy if the CSS code screws up. Therefore we + // should still continue normally as if the animation completed correctly. + close(); + } + + function onAnimationProgress(event) { + event.stopPropagation(); + var ev = event.originalEvent || event; + var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now(); + + /* Firefox (or possibly just Gecko) likes to not round values up + * when a ms measurement is used for the animation */ + var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); + + /* $manualTimeStamp is a mocked timeStamp value which is set + * within browserTrigger(). This is only here so that tests can + * mock animations properly. Real events fallback to event.timeStamp, + * or, if they don't, then a timeStamp is automatically created for them. + * We're checking to see if the timeStamp surpasses the expected delay, + * but we're using elapsedTime instead of the timeStamp on the 2nd + * pre-condition since animations sometimes close off early */ + if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { + // we set this flag to ensure that if the transition is paused then, when resumed, + // the animation will automatically close itself since transitions cannot be paused. + animationCompleted = true; + close(); + } + } + } + } + }]; +}]; + +var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationProvider) { + $$animationProvider.drivers.push('$$animateCssDriver'); + + var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim'; + var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor'; + + var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out'; + var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in'; + + this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$$body', '$sniffer', '$$jqLite', + function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $$body, $sniffer, $$jqLite) { + + // only browsers that support these properties can render animations + if (!$sniffer.animations && !$sniffer.transitions) return noop; + + var bodyNode = getDomNode($$body); + var rootNode = getDomNode($rootElement); + + var rootBodyElement = jqLite(bodyNode.parentNode === rootNode ? bodyNode : rootNode); + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + return function initDriverFn(animationDetails, onBeforeClassesAppliedCb) { + return animationDetails.from && animationDetails.to + ? prepareFromToAnchorAnimation(animationDetails.from, + animationDetails.to, + animationDetails.classes, + animationDetails.anchors) + : prepareRegularAnimation(animationDetails, onBeforeClassesAppliedCb); + }; + + function filterCssClasses(classes) { + //remove all the `ng-` stuff + return classes.replace(/\bng-\S+\b/g, ''); + } + + function getUniqueValues(a, b) { + if (isString(a)) a = a.split(' '); + if (isString(b)) b = b.split(' '); + return a.filter(function(val) { + return b.indexOf(val) === -1; + }).join(' '); + } + + function prepareAnchoredAnimation(classes, outAnchor, inAnchor) { + var clone = jqLite(getDomNode(outAnchor).cloneNode(true)); + var startingClasses = filterCssClasses(getClassVal(clone)); + + outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + + clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME); + + rootBodyElement.append(clone); + + var animatorIn, animatorOut = prepareOutAnimation(); + + // the user may not end up using the `out` animation and + // only making use of the `in` animation or vice-versa. + // In either case we should allow this and not assume the + // animation is over unless both animations are not used. + if (!animatorOut) { + animatorIn = prepareInAnimation(); + if (!animatorIn) { + return end(); + } + } + + var startingAnimator = animatorOut || animatorIn; + + return { + start: function() { + var runner; + + var currentAnimation = startingAnimator.start(); + currentAnimation.done(function() { + currentAnimation = null; + if (!animatorIn) { + animatorIn = prepareInAnimation(); + if (animatorIn) { + currentAnimation = animatorIn.start(); + currentAnimation.done(function() { + currentAnimation = null; + end(); + runner.complete(); + }); + return currentAnimation; + } + } + // in the event that there is no `in` animation + end(); + runner.complete(); + }); + + runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn + }); + + return runner; + + function endFn() { + if (currentAnimation) { + currentAnimation.end(); + } + } + } + }; + + function calculateAnchorStyles(anchor) { + var styles = {}; + + var coords = getDomNode(anchor).getBoundingClientRect(); + + // we iterate directly since safari messes up and doesn't return + // all the keys for the coods object when iterated + forEach(['width','height','top','left'], function(key) { + var value = coords[key]; + switch (key) { + case 'top': + value += bodyNode.scrollTop; + break; + case 'left': + value += bodyNode.scrollLeft; + break; + } + styles[key] = Math.floor(value) + 'px'; + }); + return styles; + } + + function prepareOutAnimation() { + var animator = $animateCss(clone, { + addClass: NG_OUT_ANCHOR_CLASS_NAME, + delay: true, + from: calculateAnchorStyles(outAnchor) + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function getClassVal(element) { + return element.attr('class') || ''; + } + + function prepareInAnimation() { + var endingClasses = filterCssClasses(getClassVal(inAnchor)); + var toAdd = getUniqueValues(endingClasses, startingClasses); + var toRemove = getUniqueValues(startingClasses, endingClasses); + + var animator = $animateCss(clone, { + to: calculateAnchorStyles(inAnchor), + addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd, + removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove, + delay: true + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function end() { + clone.remove(); + outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + } + } + + function prepareFromToAnchorAnimation(from, to, classes, anchors) { + var fromAnimation = prepareRegularAnimation(from, noop); + var toAnimation = prepareRegularAnimation(to, noop); + + var anchorAnimations = []; + forEach(anchors, function(anchor) { + var outElement = anchor['out']; + var inElement = anchor['in']; + var animator = prepareAnchoredAnimation(classes, outElement, inElement); + if (animator) { + anchorAnimations.push(animator); + } + }); + + // no point in doing anything when there are no elements to animate + if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + forEach(anchorAnimations, function(animation) { + animationRunners.push(animation.start()); + }); + + var runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn // CSS-driven animations cannot be cancelled, only ended + }); + + $$AnimateRunner.all(animationRunners, function(status) { + runner.complete(status); + }); + + return runner; + + function endFn() { + forEach(animationRunners, function(runner) { + runner.end(); + }); + } + } + }; + } + + function prepareRegularAnimation(animationDetails, onBeforeClassesAppliedCb) { + var element = animationDetails.element; + var options = animationDetails.options || {}; + + // since the ng-EVENT, class-ADD and class-REMOVE classes are applied inside + // of the animateQueue pre and postDigest stages then there is no need to add + // then them here as well. + options.$$skipPreparationClasses = true; + + // during the pre/post digest stages inside of animateQueue we also performed + // the blocking (transition:-9999s) so there is no point in doing that again. + options.skipBlocking = true; + + if (animationDetails.structural) { + options.event = animationDetails.event; + + // we special case the leave animation since we want to ensure that + // the element is removed as soon as the animation is over. Otherwise + // a flicker might appear or the element may not be removed at all + if (animationDetails.event === 'leave') { + options.onDone = options.domOperation; + } + } + + // we apply the classes right away since the pre-digest took care of the + // preparation classes. + onBeforeClassesAppliedCb(element); + applyAnimationClasses(element, options); + + // We assign the preparationClasses as the actual animation event since + // the internals of $animateCss will just suffix the event token values + // with `-active` to trigger the animation. + if (options.preparationClasses) { + options.event = concatWithSpace(options.event, options.preparationClasses); + } + + var animator = $animateCss(element, options); + + // the driver lookup code inside of $$animation attempts to spawn a + // driver one by one until a driver returns a.$$willAnimate animator object. + // $animateCss will always return an object, however, it will pass in + // a flag as a hint as to whether an animation was detected or not + return animator.$$willAnimate ? animator : null; + } + }]; +}]; + +// TODO(matsko): use caching here to speed things up for detection +// TODO(matsko): add documentation +// by the time... + +var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) { + this.$get = ['$injector', '$$AnimateRunner', '$$rAFMutex', '$$jqLite', + function($injector, $$AnimateRunner, $$rAFMutex, $$jqLite) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + // $animateJs(element, 'enter'); + return function(element, event, classes, options) { + // the `classes` argument is optional and if it is not used + // then the classes will be resolved from the element's className + // property as well as options.addClass/options.removeClass. + if (arguments.length === 3 && isObject(classes)) { + options = classes; + classes = null; + } + + options = prepareAnimationOptions(options); + if (!classes) { + classes = element.attr('class') || ''; + if (options.addClass) { + classes += ' ' + options.addClass; + } + if (options.removeClass) { + classes += ' ' + options.removeClass; + } + } + + var classesToAdd = options.addClass; + var classesToRemove = options.removeClass; + + // the lookupAnimations function returns a series of animation objects that are + // matched up with one or more of the CSS classes. These animation objects are + // defined via the module.animation factory function. If nothing is detected then + // we don't return anything which then makes $animation query the next driver. + var animations = lookupAnimations(classes); + var before, after; + if (animations.length) { + var afterFn, beforeFn; + if (event == 'leave') { + beforeFn = 'leave'; + afterFn = 'afterLeave'; // TODO(matsko): get rid of this + } else { + beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1); + afterFn = event; + } + + if (event !== 'enter' && event !== 'move') { + before = packageAnimations(element, event, options, animations, beforeFn); + } + after = packageAnimations(element, event, options, animations, afterFn); + } + + // no matching animations + if (!before && !after) return; + + function applyOptions() { + options.domOperation(); + applyAnimationClasses(element, options); + } + + return { + start: function() { + var closeActiveAnimations; + var chain = []; + + if (before) { + chain.push(function(fn) { + closeActiveAnimations = before(fn); + }); + } + + if (chain.length) { + chain.push(function(fn) { + applyOptions(); + fn(true); + }); + } else { + applyOptions(); + } + + if (after) { + chain.push(function(fn) { + closeActiveAnimations = after(fn); + }); + } + + var animationClosed = false; + var runner = new $$AnimateRunner({ + end: function() { + endAnimations(); + }, + cancel: function() { + endAnimations(true); + } + }); + + $$AnimateRunner.chain(chain, onComplete); + return runner; + + function onComplete(success) { + animationClosed = true; + applyOptions(); + applyAnimationStyles(element, options); + runner.complete(success); + } + + function endAnimations(cancelled) { + if (!animationClosed) { + (closeActiveAnimations || noop)(cancelled); + onComplete(cancelled); + } + } + } + }; + + function executeAnimationFn(fn, element, event, options, onDone) { + var args; + switch (event) { + case 'animate': + args = [element, options.from, options.to, onDone]; + break; + + case 'setClass': + args = [element, classesToAdd, classesToRemove, onDone]; + break; + + case 'addClass': + args = [element, classesToAdd, onDone]; + break; + + case 'removeClass': + args = [element, classesToRemove, onDone]; + break; + + default: + args = [element, onDone]; + break; + } + + args.push(options); + + var value = fn.apply(fn, args); + if (value) { + if (isFunction(value.start)) { + value = value.start(); + } + + if (value instanceof $$AnimateRunner) { + value.done(onDone); + } else if (isFunction(value)) { + // optional onEnd / onCancel callback + return value; + } + } + + return noop; + } + + function groupEventedAnimations(element, event, options, animations, fnName) { + var operations = []; + forEach(animations, function(ani) { + var animation = ani[fnName]; + if (!animation) return; + + // note that all of these animations will run in parallel + operations.push(function() { + var runner; + var endProgressCb; + + var resolved = false; + var onAnimationComplete = function(rejected) { + if (!resolved) { + resolved = true; + (endProgressCb || noop)(rejected); + runner.complete(!rejected); + } + }; + + runner = new $$AnimateRunner({ + end: function() { + onAnimationComplete(); + }, + cancel: function() { + onAnimationComplete(true); + } + }); + + endProgressCb = executeAnimationFn(animation, element, event, options, function(result) { + var cancelled = result === false; + onAnimationComplete(cancelled); + }); + + return runner; + }); + }); + + return operations; + } + + function packageAnimations(element, event, options, animations, fnName) { + var operations = groupEventedAnimations(element, event, options, animations, fnName); + if (operations.length === 0) { + var a,b; + if (fnName === 'beforeSetClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass'); + } else if (fnName === 'setClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass'); + } + + if (a) { + operations = operations.concat(a); + } + if (b) { + operations = operations.concat(b); + } + } + + if (operations.length === 0) return; + + // TODO(matsko): add documentation + return function startAnimation(callback) { + var runners = []; + if (operations.length) { + forEach(operations, function(animateFn) { + runners.push(animateFn()); + }); + } + + runners.length ? $$AnimateRunner.all(runners, callback) : callback(); + + return function endFn(reject) { + forEach(runners, function(runner) { + reject ? runner.cancel() : runner.end(); + }); + }; + }; + } + }; + + function lookupAnimations(classes) { + classes = isArray(classes) ? classes : classes.split(' '); + var matches = [], flagMap = {}; + for (var i=0; i < classes.length; i++) { + var klass = classes[i], + animationFactory = $animateProvider.$$registeredAnimations[klass]; + if (animationFactory && !flagMap[klass]) { + matches.push($injector.get(animationFactory)); + flagMap[klass] = true; + } + } + return matches; + } + }]; +}]; + +var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProvider) { + $$animationProvider.drivers.push('$$animateJsDriver'); + this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) { + return function initDriverFn(animationDetails) { + if (animationDetails.from && animationDetails.to) { + var fromAnimation = prepareAnimation(animationDetails.from); + var toAnimation = prepareAnimation(animationDetails.to); + if (!fromAnimation && !toAnimation) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + $$AnimateRunner.all(animationRunners, done); + + var runner = new $$AnimateRunner({ + end: endFnFactory(), + cancel: endFnFactory() + }); + + return runner; + + function endFnFactory() { + return function() { + forEach(animationRunners, function(runner) { + // at this point we cannot cancel animations for groups just yet. 1.5+ + runner.end(); + }); + }; + } + + function done(status) { + runner.complete(status); + } + } + }; + } else { + return prepareAnimation(animationDetails); + } + }; + + function prepareAnimation(animationDetails) { + // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations + var element = animationDetails.element; + var event = animationDetails.event; + var options = animationDetails.options; + var classes = animationDetails.classes; + return $$animateJs(element, event, classes, options); + } + }]; +}]; + +var NG_ANIMATE_ATTR_NAME = 'data-ng-animate'; +var NG_ANIMATE_PIN_DATA = '$ngAnimatePin'; +var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { + var PRE_DIGEST_STATE = 1; + var RUNNING_STATE = 2; + + var rules = this.rules = { + skip: [], + cancel: [], + join: [] + }; + + function isAllowed(ruleType, element, currentAnimation, previousAnimation) { + return rules[ruleType].some(function(fn) { + return fn(element, currentAnimation, previousAnimation); + }); + } + + function hasAnimationClasses(options, and) { + options = options || {}; + var a = (options.addClass || '').length > 0; + var b = (options.removeClass || '').length > 0; + return and ? a && b : a || b; + } + + rules.join.push(function(element, newAnimation, currentAnimation) { + // if the new animation is class-based then we can just tack that on + return !newAnimation.structural && hasAnimationClasses(newAnimation.options); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // there is no need to animate anything if no classes are being added and + // there is no structural animation that will be triggered + return !newAnimation.structural && !hasAnimationClasses(newAnimation.options); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // why should we trigger a new structural animation if the element will + // be removed from the DOM anyway? + return currentAnimation.event == 'leave' && newAnimation.structural; + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // if there is an ongoing current animation then don't even bother running the class-based animation + return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // there can never be two structural animations running at the same time + return currentAnimation.structural && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // if the previous animation is already running, but the new animation will + // be triggered, but the new animation is structural + return currentAnimation.state === RUNNING_STATE && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + var nO = newAnimation.options; + var cO = currentAnimation.options; + + // if the exact same CSS class is added/removed then it's safe to cancel it + return (nO.addClass && nO.addClass === cO.removeClass) || (nO.removeClass && nO.removeClass === cO.addClass); + }); + + this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$body', '$$HashMap', + '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow', + function($$rAF, $rootScope, $rootElement, $document, $$body, $$HashMap, + $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow) { + + var activeAnimationsLookup = new $$HashMap(); + var disabledElementsLookup = new $$HashMap(); + var animationsEnabled = null; + + // Wait until all directive and route-related templates are downloaded and + // compiled. The $templateRequest.totalPendingRequests variable keeps track of + // all of the remote templates being currently downloaded. If there are no + // templates currently downloading then the watcher will still fire anyway. + var deregisterWatch = $rootScope.$watch( + function() { return $templateRequest.totalPendingRequests === 0; }, + function(isEmpty) { + if (!isEmpty) return; + deregisterWatch(); + + // Now that all templates have been downloaded, $animate will wait until + // the post digest queue is empty before enabling animations. By having two + // calls to $postDigest calls we can ensure that the flag is enabled at the + // very end of the post digest queue. Since all of the animations in $animate + // use $postDigest, it's important that the code below executes at the end. + // This basically means that the page is fully downloaded and compiled before + // any animations are triggered. + $rootScope.$$postDigest(function() { + $rootScope.$$postDigest(function() { + // we check for null directly in the event that the application already called + // .enabled() with whatever arguments that it provided it with + if (animationsEnabled === null) { + animationsEnabled = true; + } + }); + }); + } + ); + + var callbackRegistry = {}; + + // remember that the classNameFilter is set during the provider/config + // stage therefore we can optimize here and setup a helper function + var classNameFilter = $animateProvider.classNameFilter(); + var isAnimatableClassName = !classNameFilter + ? function() { return true; } + : function(className) { + return classNameFilter.test(className); + }; + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function normalizeAnimationOptions(element, options) { + return mergeAnimationOptions(element, options, {}); + } + + function findCallbacks(element, event) { + var targetNode = getDomNode(element); + + var matches = []; + var entries = callbackRegistry[event]; + if (entries) { + forEach(entries, function(entry) { + if (entry.node.contains(targetNode)) { + matches.push(entry.callback); + } + }); + } + + return matches; + } + + function triggerCallback(event, element, phase, data) { + $$rAF(function() { + forEach(findCallbacks(element, event), function(callback) { + callback(element, phase, data); + }); + }); + } + + return { + on: function(event, container, callback) { + var node = extractElementNode(container); + callbackRegistry[event] = callbackRegistry[event] || []; + callbackRegistry[event].push({ + node: node, + callback: callback + }); + }, + + off: function(event, container, callback) { + var entries = callbackRegistry[event]; + if (!entries) return; + + callbackRegistry[event] = arguments.length === 1 + ? null + : filterFromRegistry(entries, container, callback); + + function filterFromRegistry(list, matchContainer, matchCallback) { + var containerNode = extractElementNode(matchContainer); + return list.filter(function(entry) { + var isMatch = entry.node === containerNode && + (!matchCallback || entry.callback === matchCallback); + return !isMatch; + }); + } + }, + + pin: function(element, parentElement) { + assertArg(isElement(element), 'element', 'not an element'); + assertArg(isElement(parentElement), 'parentElement', 'not an element'); + element.data(NG_ANIMATE_PIN_DATA, parentElement); + }, + + push: function(element, event, options, domOperation) { + options = options || {}; + options.domOperation = domOperation; + return queueAnimation(element, event, options); + }, + + // this method has four signatures: + // () - global getter + // (bool) - global setter + // (element) - element getter + // (element, bool) - element setter + enabled: function(element, bool) { + var argCount = arguments.length; + + if (argCount === 0) { + // () - Global getter + bool = !!animationsEnabled; + } else { + var hasElement = isElement(element); + + if (!hasElement) { + // (bool) - Global setter + bool = animationsEnabled = !!element; + } else { + var node = getDomNode(element); + var recordExists = disabledElementsLookup.get(node); + + if (argCount === 1) { + // (element) - Element getter + bool = !recordExists; + } else { + // (element, bool) - Element setter + bool = !!bool; + if (!bool) { + disabledElementsLookup.put(node, true); + } else if (recordExists) { + disabledElementsLookup.remove(node); + } + } + } + } + + return bool; + } + }; + + function queueAnimation(element, event, options) { + var node, parent; + element = stripCommentsFromElement(element); + if (element) { + node = getDomNode(element); + parent = element.parent(); + } + + options = prepareAnimationOptions(options); + + // we create a fake runner with a working promise. + // These methods will become available after the digest has passed + var runner = new $$AnimateRunner(); + + if (isArray(options.addClass)) { + options.addClass = options.addClass.join(' '); + } + + if (options.addClass && !isString(options.addClass)) { + options.addClass = null; + } + + if (isArray(options.removeClass)) { + options.removeClass = options.removeClass.join(' '); + } + + if (options.removeClass && !isString(options.removeClass)) { + options.removeClass = null; + } + + if (options.from && !isObject(options.from)) { + options.from = null; + } + + if (options.to && !isObject(options.to)) { + options.to = null; + } + + // there are situations where a directive issues an animation for + // a jqLite wrapper that contains only comment nodes... If this + // happens then there is no way we can perform an animation + if (!node) { + close(); + return runner; + } + + var className = [node.className, options.addClass, options.removeClass].join(' '); + if (!isAnimatableClassName(className)) { + close(); + return runner; + } + + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + // this is a hard disable of all animations for the application or on + // the element itself, therefore there is no need to continue further + // past this point if not enabled + var skipAnimations = !animationsEnabled || disabledElementsLookup.get(node); + var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; + var hasExistingAnimation = !!existingAnimation.state; + + // there is no point in traversing the same collection of parent ancestors if a followup + // animation will be run on the same element that already did all that checking work + if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state != PRE_DIGEST_STATE)) { + skipAnimations = !areAnimationsAllowed(element, parent, event); + } + + if (skipAnimations) { + close(); + return runner; + } + + if (isStructural) { + closeChildAnimations(element); + } + + var newAnimation = { + structural: isStructural, + element: element, + event: event, + close: close, + options: options, + runner: runner + }; + + if (hasExistingAnimation) { + var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation); + if (skipAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + close(); + return runner; + } else { + mergeAnimationOptions(element, existingAnimation.options, options); + return existingAnimation.runner; + } + } + + var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); + if (cancelAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + // this will end the animation right away and it is safe + // to do so since the animation is already running and the + // runner callback code will run in async + existingAnimation.runner.end(); + } else if (existingAnimation.structural) { + // this means that the animation is queued into a digest, but + // hasn't started yet. Therefore it is safe to run the close + // method which will call the runner methods in async. + existingAnimation.close(); + } else { + // this will merge the new animation options into existing animation options + mergeAnimationOptions(element, existingAnimation.options, newAnimation.options); + return existingAnimation.runner; + } + } else { + // a joined animation means that this animation will take over the existing one + // so an example would involve a leave animation taking over an enter. Then when + // the postDigest kicks in the enter will be ignored. + var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation); + if (joinAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + normalizeAnimationOptions(element, options); + } else { + applyGeneratedPreparationClasses(element, isStructural ? event : null, options); + + event = newAnimation.event = existingAnimation.event; + options = mergeAnimationOptions(element, existingAnimation.options, newAnimation.options); + + //we return the same runner since only the option values of this animation will + //be fed into the `existingAnimation`. + return existingAnimation.runner; + } + } + } + } else { + // normalization in this case means that it removes redundant CSS classes that + // already exist (addClass) or do not exist (removeClass) on the element + normalizeAnimationOptions(element, options); + } + + // when the options are merged and cleaned up we may end up not having to do + // an animation at all, therefore we should check this before issuing a post + // digest callback. Structural animations will always run no matter what. + var isValidAnimation = newAnimation.structural; + if (!isValidAnimation) { + // animate (from/to) can be quickly checked first, otherwise we check if any classes are present + isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0) + || hasAnimationClasses(newAnimation.options); + } + + if (!isValidAnimation) { + close(); + clearElementAnimationState(element); + return runner; + } + + applyGeneratedPreparationClasses(element, isStructural ? event : null, options); + blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); + + // the counter keeps track of cancelled animations + var counter = (existingAnimation.counter || 0) + 1; + newAnimation.counter = counter; + + markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation); + + $rootScope.$$postDigest(function() { + var animationDetails = activeAnimationsLookup.get(node); + var animationCancelled = !animationDetails; + animationDetails = animationDetails || {}; + + // if addClass/removeClass is called before something like enter then the + // registered parent element may not be present. The code below will ensure + // that a final value for parent element is obtained + var parentElement = element.parent() || []; + + // animate/structural/class-based animations all have requirements. Otherwise there + // is no point in performing an animation. The parent node must also be set. + var isValidAnimation = parentElement.length > 0 + && (animationDetails.event === 'animate' + || animationDetails.structural + || hasAnimationClasses(animationDetails.options)); + + // this means that the previous animation was cancelled + // even if the follow-up animation is the same event + if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) { + // if another animation did not take over then we need + // to make sure that the domOperation and options are + // handled accordingly + if (animationCancelled) { + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + } + + // if the event changed from something like enter to leave then we do + // it, otherwise if it's the same then the end result will be the same too + if (animationCancelled || (isStructural && animationDetails.event !== event)) { + options.domOperation(); + runner.end(); + } + + // in the event that the element animation was not cancelled or a follow-up animation + // isn't allowed to animate from here then we need to clear the state of the element + // so that any future animations won't read the expired animation data. + if (!isValidAnimation) { + clearElementAnimationState(element); + } + + return; + } + + // this combined multiple class to addClass / removeClass into a setClass event + // so long as a structural event did not take over the animation + event = !animationDetails.structural && hasAnimationClasses(animationDetails.options, true) + ? 'setClass' + : animationDetails.event; + + markElementAnimationState(element, RUNNING_STATE); + var realRunner = $$animation(element, event, animationDetails.options, function(e) { + $$forceReflow(); + blockTransitions(getDomNode(e), false); + }); + + realRunner.done(function(status) { + close(!status); + var animationDetails = activeAnimationsLookup.get(node); + if (animationDetails && animationDetails.counter === counter) { + clearElementAnimationState(getDomNode(element)); + } + notifyProgress(runner, event, 'close', {}); + }); + + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + }); + + return runner; + + function notifyProgress(runner, event, phase, data) { + triggerCallback(event, element, phase, data); + runner.progress(event, phase, data); + } + + function close(reject) { // jshint ignore:line + clearGeneratedClasses(element, options); + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + runner.complete(!reject); + } + } + + function closeChildAnimations(element) { + var node = getDomNode(element); + var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']'); + forEach(children, function(child) { + var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME)); + var animationDetails = activeAnimationsLookup.get(child); + switch (state) { + case RUNNING_STATE: + animationDetails.runner.end(); + /* falls through */ + case PRE_DIGEST_STATE: + if (animationDetails) { + activeAnimationsLookup.remove(child); + } + break; + } + }); + } + + function clearElementAnimationState(element) { + var node = getDomNode(element); + node.removeAttribute(NG_ANIMATE_ATTR_NAME); + activeAnimationsLookup.remove(node); + } + + function isMatchingElement(nodeOrElmA, nodeOrElmB) { + return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB); + } + + function areAnimationsAllowed(element, parentElement, event) { + var bodyElementDetected = isMatchingElement(element, $$body) || element[0].nodeName === 'HTML'; + var rootElementDetected = isMatchingElement(element, $rootElement); + var parentAnimationDetected = false; + var animateChildren; + + var parentHost = element.data(NG_ANIMATE_PIN_DATA); + if (parentHost) { + parentElement = parentHost; + } + + while (parentElement && parentElement.length) { + if (!rootElementDetected) { + // angular doesn't want to attempt to animate elements outside of the application + // therefore we need to ensure that the rootElement is an ancestor of the current element + rootElementDetected = isMatchingElement(parentElement, $rootElement); + } + + var parentNode = parentElement[0]; + if (parentNode.nodeType !== ELEMENT_NODE) { + // no point in inspecting the #document element + break; + } + + var details = activeAnimationsLookup.get(parentNode) || {}; + // either an enter, leave or move animation will commence + // therefore we can't allow any animations to take place + // but if a parent animation is class-based then that's ok + if (!parentAnimationDetected) { + parentAnimationDetected = details.structural || disabledElementsLookup.get(parentNode); + } + + if (isUndefined(animateChildren) || animateChildren === true) { + var value = parentElement.data(NG_ANIMATE_CHILDREN_DATA); + if (isDefined(value)) { + animateChildren = value; + } + } + + // there is no need to continue traversing at this point + if (parentAnimationDetected && animateChildren === false) break; + + if (!rootElementDetected) { + // angular doesn't want to attempt to animate elements outside of the application + // therefore we need to ensure that the rootElement is an ancestor of the current element + rootElementDetected = isMatchingElement(parentElement, $rootElement); + if (!rootElementDetected) { + parentHost = parentElement.data(NG_ANIMATE_PIN_DATA); + if (parentHost) { + parentElement = parentHost; + } + } + } + + if (!bodyElementDetected) { + // we also need to ensure that the element is or will be apart of the body element + // otherwise it is pointless to even issue an animation to be rendered + bodyElementDetected = isMatchingElement(parentElement, $$body); + } + + parentElement = parentElement.parent(); + } + + var allowAnimation = !parentAnimationDetected || animateChildren; + return allowAnimation && rootElementDetected && bodyElementDetected; + } + + function markElementAnimationState(element, state, details) { + details = details || {}; + details.state = state; + + var node = getDomNode(element); + node.setAttribute(NG_ANIMATE_ATTR_NAME, state); + + var oldValue = activeAnimationsLookup.get(node); + var newValue = oldValue + ? extend(oldValue, details) + : details; + activeAnimationsLookup.put(node, newValue); + } + }]; +}]; + +var $$rAFMutexFactory = ['$$rAF', function($$rAF) { + return function() { + var passed = false; + $$rAF(function() { + passed = true; + }); + return function(fn) { + passed ? fn() : $$rAF(fn); + }; + }; +}]; + +var $$AnimateRunnerFactory = ['$q', '$$rAFMutex', function($q, $$rAFMutex) { + var INITIAL_STATE = 0; + var DONE_PENDING_STATE = 1; + var DONE_COMPLETE_STATE = 2; + + AnimateRunner.chain = function(chain, callback) { + var index = 0; + + next(); + function next() { + if (index === chain.length) { + callback(true); + return; + } + + chain[index](function(response) { + if (response === false) { + callback(false); + return; + } + index++; + next(); + }); + } + }; + + AnimateRunner.all = function(runners, callback) { + var count = 0; + var status = true; + forEach(runners, function(runner) { + runner.done(onProgress); + }); + + function onProgress(response) { + status = status && response; + if (++count === runners.length) { + callback(status); + } + } + }; + + function AnimateRunner(host) { + this.setHost(host); + + this._doneCallbacks = []; + this._runInAnimationFrame = $$rAFMutex(); + this._state = 0; + } + + AnimateRunner.prototype = { + setHost: function(host) { + this.host = host || {}; + }, + + done: function(fn) { + if (this._state === DONE_COMPLETE_STATE) { + fn(); + } else { + this._doneCallbacks.push(fn); + } + }, + + progress: noop, + + getPromise: function() { + if (!this.promise) { + var self = this; + this.promise = $q(function(resolve, reject) { + self.done(function(status) { + status === false ? reject() : resolve(); + }); + }); + } + return this.promise; + }, + + then: function(resolveHandler, rejectHandler) { + return this.getPromise().then(resolveHandler, rejectHandler); + }, + + 'catch': function(handler) { + return this.getPromise()['catch'](handler); + }, + + 'finally': function(handler) { + return this.getPromise()['finally'](handler); + }, + + pause: function() { + if (this.host.pause) { + this.host.pause(); + } + }, + + resume: function() { + if (this.host.resume) { + this.host.resume(); + } + }, + + end: function() { + if (this.host.end) { + this.host.end(); + } + this._resolve(true); + }, + + cancel: function() { + if (this.host.cancel) { + this.host.cancel(); + } + this._resolve(false); + }, + + complete: function(response) { + var self = this; + if (self._state === INITIAL_STATE) { + self._state = DONE_PENDING_STATE; + self._runInAnimationFrame(function() { + self._resolve(response); + }); + } + }, + + _resolve: function(response) { + if (this._state !== DONE_COMPLETE_STATE) { + forEach(this._doneCallbacks, function(fn) { + fn(response); + }); + this._doneCallbacks.length = 0; + this._state = DONE_COMPLETE_STATE; + } + } + }; + + return AnimateRunner; +}]; + +var $$AnimationProvider = ['$animateProvider', function($animateProvider) { + var NG_ANIMATE_REF_ATTR = 'ng-animate-ref'; + + var drivers = this.drivers = []; + + var RUNNER_STORAGE_KEY = '$$animationRunner'; + + function setRunner(element, runner) { + element.data(RUNNER_STORAGE_KEY, runner); + } + + function removeRunner(element) { + element.removeData(RUNNER_STORAGE_KEY); + } + + function getRunner(element) { + return element.data(RUNNER_STORAGE_KEY); + } + + this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$HashMap', + function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$HashMap) { + + var animationQueue = []; + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function sortAnimations(animations) { + var tree = { children: [] }; + var i, lookup = new $$HashMap(); + + // this is done first beforehand so that the hashmap + // is filled with a list of the elements that will be animated + for (i = 0; i < animations.length; i++) { + var animation = animations[i]; + lookup.put(animation.domNode, animations[i] = { + domNode: animation.domNode, + fn: animation.fn, + children: [] + }); + } + + for (i = 0; i < animations.length; i++) { + processNode(animations[i]); + } + + return flatten(tree); + + function processNode(entry) { + if (entry.processed) return entry; + entry.processed = true; + + var elementNode = entry.domNode; + var parentNode = elementNode.parentNode; + lookup.put(elementNode, entry); + + var parentEntry; + while (parentNode) { + parentEntry = lookup.get(parentNode); + if (parentEntry) { + if (!parentEntry.processed) { + parentEntry = processNode(parentEntry); + } + break; + } + parentNode = parentNode.parentNode; + } + + (parentEntry || tree).children.push(entry); + return entry; + } + + function flatten(tree) { + var result = []; + var queue = []; + var i; + + for (i = 0; i < tree.children.length; i++) { + queue.push(tree.children[i]); + } + + var remainingLevelEntries = queue.length; + var nextLevelEntries = 0; + var row = []; + + for (i = 0; i < queue.length; i++) { + var entry = queue[i]; + if (remainingLevelEntries <= 0) { + remainingLevelEntries = nextLevelEntries; + nextLevelEntries = 0; + result = result.concat(row); + row = []; + } + row.push(entry.fn); + forEach(entry.children, function(childEntry) { + nextLevelEntries++; + queue.push(childEntry); + }); + remainingLevelEntries--; + } + + if (row.length) { + result = result.concat(row); + } + return result; + } + } + + // TODO(matsko): document the signature in a better way + return function(element, event, options, onBeforeClassesAppliedCb) { + options = prepareAnimationOptions(options); + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + // there is no animation at the current moment, however + // these runner methods will get later updated with the + // methods leading into the driver's end/cancel methods + // for now they just stop the animation from starting + var runner = new $$AnimateRunner({ + end: function() { close(); }, + cancel: function() { close(true); } + }); + + if (!drivers.length) { + close(); + return runner; + } + + setRunner(element, runner); + + var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass)); + var tempClasses = options.tempClasses; + if (tempClasses) { + classes += ' ' + tempClasses; + options.tempClasses = null; + } + + animationQueue.push({ + // this data is used by the postDigest code and passed into + // the driver step function + element: element, + classes: classes, + event: event, + structural: isStructural, + options: options, + beforeStart: beforeStart, + close: close + }); + + element.on('$destroy', handleDestroyedElement); + + // we only want there to be one function called within the post digest + // block. This way we can group animations for all the animations that + // were apart of the same postDigest flush call. + if (animationQueue.length > 1) return runner; + + $rootScope.$$postDigest(function() { + var animations = []; + forEach(animationQueue, function(entry) { + // the element was destroyed early on which removed the runner + // form its storage. This means we can't animate this element + // at all and it already has been closed due to destruction. + var elm = entry.element; + if (getRunner(elm) && getDomNode(elm).parentNode) { + animations.push(entry); + } else { + entry.close(); + } + }); + + // now any future animations will be in another postDigest + animationQueue.length = 0; + + var groupedAnimations = groupAnimations(animations); + var toBeSortedAnimations = []; + + forEach(groupedAnimations, function(animationEntry) { + toBeSortedAnimations.push({ + domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element), + fn: function triggerAnimationStart() { + // it's important that we apply the `ng-animate` CSS class and the + // temporary classes before we do any driver invoking since these + // CSS classes may be required for proper CSS detection. + animationEntry.beforeStart(); + + var startAnimationFn, closeFn = animationEntry.close; + + // in the event that the element was removed before the digest runs or + // during the RAF sequencing then we should not trigger the animation. + var targetElement = animationEntry.anchors + ? (animationEntry.from.element || animationEntry.to.element) + : animationEntry.element; + + if (getRunner(targetElement)) { + var operation = invokeFirstDriver(animationEntry, onBeforeClassesAppliedCb); + if (operation) { + startAnimationFn = operation.start; + } + } + + if (!startAnimationFn) { + closeFn(); + } else { + var animationRunner = startAnimationFn(); + animationRunner.done(function(status) { + closeFn(!status); + }); + updateAnimationRunners(animationEntry, animationRunner); + } + } + }); + }); + + // we need to sort each of the animations in order of parent to child + // relationships. This ensures that the parent to child classes are + // applied at the right time. + forEach(sortAnimations(toBeSortedAnimations), function(triggerAnimation) { + triggerAnimation(); + }); + }); + + return runner; + + // TODO(matsko): change to reference nodes + function getAnchorNodes(node) { + var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']'; + var items = node.hasAttribute(NG_ANIMATE_REF_ATTR) + ? [node] + : node.querySelectorAll(SELECTOR); + var anchors = []; + forEach(items, function(node) { + var attr = node.getAttribute(NG_ANIMATE_REF_ATTR); + if (attr && attr.length) { + anchors.push(node); + } + }); + return anchors; + } + + function groupAnimations(animations) { + var preparedAnimations = []; + var refLookup = {}; + forEach(animations, function(animation, index) { + var element = animation.element; + var node = getDomNode(element); + var event = animation.event; + var enterOrMove = ['enter', 'move'].indexOf(event) >= 0; + var anchorNodes = animation.structural ? getAnchorNodes(node) : []; + + if (anchorNodes.length) { + var direction = enterOrMove ? 'to' : 'from'; + + forEach(anchorNodes, function(anchor) { + var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR); + refLookup[key] = refLookup[key] || {}; + refLookup[key][direction] = { + animationID: index, + element: jqLite(anchor) + }; + }); + } else { + preparedAnimations.push(animation); + } + }); + + var usedIndicesLookup = {}; + var anchorGroups = {}; + forEach(refLookup, function(operations, key) { + var from = operations.from; + var to = operations.to; + + if (!from || !to) { + // only one of these is set therefore we can't have an + // anchor animation since all three pieces are required + var index = from ? from.animationID : to.animationID; + var indexKey = index.toString(); + if (!usedIndicesLookup[indexKey]) { + usedIndicesLookup[indexKey] = true; + preparedAnimations.push(animations[index]); + } + return; + } + + var fromAnimation = animations[from.animationID]; + var toAnimation = animations[to.animationID]; + var lookupKey = from.animationID.toString(); + if (!anchorGroups[lookupKey]) { + var group = anchorGroups[lookupKey] = { + // TODO(matsko): double-check this code + beforeStart: function() { + fromAnimation.beforeStart(); + toAnimation.beforeStart(); + }, + close: function() { + fromAnimation.close(); + toAnimation.close(); + }, + classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes), + from: fromAnimation, + to: toAnimation, + anchors: [] // TODO(matsko): change to reference nodes + }; + + // the anchor animations require that the from and to elements both have at least + // one shared CSS class which effictively marries the two elements together to use + // the same animation driver and to properly sequence the anchor animation. + if (group.classes.length) { + preparedAnimations.push(group); + } else { + preparedAnimations.push(fromAnimation); + preparedAnimations.push(toAnimation); + } + } + + anchorGroups[lookupKey].anchors.push({ + 'out': from.element, 'in': to.element + }); + }); + + return preparedAnimations; + } + + function cssClassesIntersection(a,b) { + a = a.split(' '); + b = b.split(' '); + var matches = []; + + for (var i = 0; i < a.length; i++) { + var aa = a[i]; + if (aa.substring(0,3) === 'ng-') continue; + + for (var j = 0; j < b.length; j++) { + if (aa === b[j]) { + matches.push(aa); + break; + } + } + } + + return matches.join(' '); + } + + function invokeFirstDriver(animationDetails, onBeforeClassesAppliedCb) { + // we loop in reverse order since the more general drivers (like CSS and JS) + // may attempt more elements, but custom drivers are more particular + for (var i = drivers.length - 1; i >= 0; i--) { + var driverName = drivers[i]; + if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check + + var factory = $injector.get(driverName); + var driver = factory(animationDetails, onBeforeClassesAppliedCb); + if (driver) { + return driver; + } + } + } + + function beforeStart() { + element.addClass(NG_ANIMATE_CLASSNAME); + if (tempClasses) { + $$jqLite.addClass(element, tempClasses); + } + } + + function updateAnimationRunners(animation, newRunner) { + if (animation.from && animation.to) { + update(animation.from.element); + update(animation.to.element); + } else { + update(animation.element); + } + + function update(element) { + getRunner(element).setHost(newRunner); + } + } + + function handleDestroyedElement() { + var runner = getRunner(element); + if (runner && (event !== 'leave' || !options.$$domOperationFired)) { + runner.end(); + } + } + + function close(rejected) { // jshint ignore:line + element.off('$destroy', handleDestroyedElement); + removeRunner(element); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + + if (tempClasses) { + $$jqLite.removeClass(element, tempClasses); + } + + element.removeClass(NG_ANIMATE_CLASSNAME); + runner.complete(!rejected); + } + }; + }]; +}]; + +/* global angularAnimateModule: true, + + $$BodyProvider, + $$rAFMutexFactory, + $$AnimateChildrenDirective, + $$AnimateRunnerFactory, + $$AnimateQueueProvider, + $$AnimationProvider, + $AnimateCssProvider, + $$AnimateCssDriverProvider, + $$AnimateJsProvider, + $$AnimateJsDriverProvider, +*/ /** * @ngdoc module * @name ngAnimate * @description * - * The `ngAnimate` module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives. + * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via + * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` then the animation hooks are enabled for an Angular app. * *
* * # Usage + * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based + * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For + * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within + * the HTML element that the animation will be triggered on. * - * To see animations in action, all that is required is to define the appropriate CSS classes - * or to register a JavaScript animation via the `myModule.animation()` function. The directives that support animation automatically are: - * `ngRepeat`, `ngInclude`, `ngIf`, `ngSwitch`, `ngShow`, `ngHide`, `ngView` and `ngClass`. Custom directives can take advantage of animation - * by using the `$animate` service. - * - * Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives: + * ## Directive Support + * The following directives are "animation aware": * * | Directive | Supported Animations | * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| @@ -38,192 +3069,632 @@ * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | * | {@link module:ngMessages#animations ngMessage} | enter and leave | * - * You can find out more information about animations upon visiting each directive page. + * (More information can be found by visiting each the documentation associated with each directive.) * - * Below is an example of how to apply animations to a directive that supports animation hooks: + * ## CSS-based Animations + * + * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML + * and CSS code we can create an animation that will be picked up by Angular when an the underlying directive performs an operation. + * + * The example below shows how an `enter` animation can be made possible on a element using `ng-if`: * * ```html - * - * - * - * - * ``` - * - * Keep in mind that, by default, if an animation is running, any child elements cannot be animated - * until the parent element's animation has completed. This blocking feature can be overridden by - * placing the `ng-animate-children` attribute on a parent container tag. - * - * ```html - *
- *
- *
- * ... - *
- *
+ *
+ * Fade me in out *
+ * + * * ``` * - * When the `on` expression value changes and an animation is triggered then each of the elements within - * will all animate without the block being applied to child elements. - * - * ## Are animations run when the application starts? - * No they are not. When an application is bootstrapped Angular will disable animations from running to avoid - * a frenzy of animations from being triggered as soon as the browser has rendered the screen. For this to work, - * Angular will wait for two digest cycles until enabling animations. From there on, any animation-triggering - * layout changes in the application will trigger animations as normal. - * - * In addition, upon bootstrap, if the routing system or any directives or load remote data (via $http) then Angular - * will automatically extend the wait time to enable animations once **all** of the outbound HTTP requests - * are complete. - * - * ## CSS-defined Animations - * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes - * are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported - * and can be used to play along with this naming structure. - * - * The following code below demonstrates how to perform animations using **CSS transitions** with Angular: - * - * ```html - * - * - *
- *
- *
- * ``` - * - * The following code below demonstrates how to perform animations using **CSS animations** with Angular: - * - * ```html - * - * - *
- *
- *
- * ``` - * - * Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing. - * - * Upon DOM mutation, the event class is added first (something like `ng-enter`), then the browser prepares itself to add - * the active class (in this case `ng-enter-active`) which then triggers the animation. The animation module will automatically - * detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be - * removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end - * immediately resulting in a DOM element that is at its final state. This final state is when the DOM element - * has no CSS transition/animation classes applied to it. - * - * ### Structural transition animations - * - * Structural transitions (such as enter, leave and move) will always apply a `0s none` transition - * value to force the browser into rendering the styles defined in the setup (`.ng-enter`, `.ng-leave` - * or `.ng-move`) class. This means that any active transition animations operating on the element - * will be cut off to make way for the enter, leave or move animation. - * - * ### Class-based transition animations - * - * Class-based transitions refer to transition animations that are triggered when a CSS class is - * added to or removed from the element (via `$animate.addClass`, `$animate.removeClass`, - * `$animate.setClass`, or by directives such as `ngClass`, `ngModel` and `form`). - * They are different when compared to structural animations since they **do not cancel existing - * animations** nor do they **block successive transitions** from rendering on the same element. - * This distinction allows for **multiple class-based transitions** to be performed on the same element. - * - * In addition to ngAnimate supporting the default (natural) functionality of class-based transition - * animations, ngAnimate also decorates the element with starting and ending CSS classes to aid the - * developer in further styling the element throughout the transition animation. Earlier versions - * of ngAnimate may have caused natural CSS transitions to break and not render properly due to - * $animate temporarily blocking transitions using `0s none` in order to allow the setup CSS class - * (the `-add` or `-remove` class) to be applied without triggering an animation. However, as of - * **version 1.3**, this workaround has been removed with ngAnimate and all non-ngAnimate CSS - * class transitions are compatible with ngAnimate. - * - * There is, however, one special case when dealing with class-based transitions in ngAnimate. - * When rendering class-based transitions that make use of the setup and active CSS classes - * (e.g. `.fade-add` and `.fade-add-active` for when `.fade` is added) be sure to define - * the transition value **on the active CSS class** and not the setup class. + * Notice the CSS class **fade**? We can now create the CSS transition code that references this class: * * ```css - * .fade-add { - * /* remember to place a 0s transition here - * to ensure that the styles are applied instantly - * even if the element already has a transition style */ - * transition:0s linear all; + * /* The starting CSS styles for the enter animation */ + * .fade.ng-enter { + * transition:0.5s linear all; + * opacity:0; + * } * - * /* starting CSS styles */ + * /* The finishing CSS styles for the enter animation */ + * .fade.ng-enter.ng-enter-active { * opacity:1; * } - * .fade-add.fade-add-active { - * /* this will be the length of the animation */ - * transition:1s linear all; - * opacity:0; - * } * ``` * - * The setup CSS class (in this case `.fade-add`) also has a transition style property, however, it - * has a duration of zero. This may not be required, however, incase the browser is unable to render - * the styling present in this CSS class instantly then it could be that the browser is attempting - * to perform an unnecessary transition. + * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two + * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition + * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards. * - * This workaround, however, does not apply to standard class-based transitions that are rendered - * when a CSS class containing a transition is applied to an element: + * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions: * * ```css - * /* this works as expected */ - * .fade { - * transition:1s linear all; + * /* now the element will fade out before it is removed from the DOM */ + * .fade.ng-leave { + * transition:0.5s linear all; + * opacity:1; + * } + * .fade.ng-leave.ng-leave-active { * opacity:0; * } * ``` * - * Please keep this in mind when coding the CSS markup that will be used within class-based transitions. - * Also, try not to mix the two class-based animation flavors together since the CSS code may become - * overly complex. + * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class: + * + * ```css + * /* there is no need to define anything inside of the destination + * CSS class since the keyframe will take charge of the animation */ + * .fade.ng-leave { + * animation: my_fade_animation 0.5s linear; + * -webkit-animation: my_fade_animation 0.5s linear; + * } + * + * @keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * + * @-webkit-keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * ``` + * + * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element. + * + * ### CSS Class-based Animations + * + * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different + * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added + * and removed. + * + * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class: + * + * ```html + *
+ * Show and hide me + *
+ * + * + * + * ``` + * + * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since + * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest. + * + * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation + * with CSS styles. + * + * ```html + *
+ * Highlight this box + *
+ * + * + * + * ``` + * + * We can also make use of CSS keyframes by placing them within the CSS classes. + * + * + * ### CSS Staggering Animations + * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a + * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be + * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for + * the animation. The style property expected within the stagger class can either be a **transition-delay** or an + * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). + * + * ```css + * .my-animation.ng-enter { + * /* standard transition code */ + * transition: 1s linear all; + * opacity:0; + * } + * .my-animation.ng-enter-stagger { + * /* this will have a 100ms delay between each successive leave animation */ + * transition-delay: 0.1s; + * + * /* in case the stagger doesn't work then the duration value + * must be set to 0 to avoid an accidental CSS inheritance */ + * transition-duration: 0s; + * } + * .my-animation.ng-enter.ng-enter-active { + * /* standard transition styles */ + * opacity:1; + * } + * ``` + * + * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations + * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this + * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation + * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired. + * + * The following code will issue the **ng-leave-stagger** event on the element provided: + * + * ```js + * var kids = parent.children(); + * + * $animate.leave(kids[0]); //stagger index=0 + * $animate.leave(kids[1]); //stagger index=1 + * $animate.leave(kids[2]); //stagger index=2 + * $animate.leave(kids[3]); //stagger index=3 + * $animate.leave(kids[4]); //stagger index=4 + * + * window.requestAnimationFrame(function() { + * //stagger has reset itself + * $animate.leave(kids[5]); //stagger index=0 + * $animate.leave(kids[6]); //stagger index=1 + * + * $scope.$digest(); + * }); + * ``` + * + * Stagger animations are currently only supported within CSS-defined animations. + * + * ### The `ng-animate` CSS class + * + * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation. + * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations). + * + * Therefore, animations can be applied to an element using this temporary class directly via CSS. + * + * ```css + * .zipper.ng-animate { + * transition:0.5s linear all; + * } + * .zipper.ng-enter { + * opacity:0; + * } + * .zipper.ng-enter.ng-enter-active { + * opacity:1; + * } + * .zipper.ng-leave { + * opacity:1; + * } + * .zipper.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove + * the CSS class once an animation has completed.) + * + * + * ## JavaScript-based Animations + * + * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared + * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the + * `module.animation()` module function we can register the ainmation. + * + * Let's see an example of a enter/leave animation using `ngRepeat`: + * + * ```html + *
+ * {{ item }} + *
+ * ``` + * + * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`: + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * // make note that other events (like addClass/removeClass) + * // have different function input parameters + * enter: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * + * // remember to call doneFn so that angular + * // knows that the animation has concluded + * }, + * + * move: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * }, + * + * leave: function(element, doneFn) { + * jQuery(element).fadeOut(1000, doneFn); + * } + * } + * }] + * ``` + * + * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as + * greensock.js and velocity.js. + * + * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define + * our animations inside of the same registered animation, however, the function input arguments are a bit different: + * + * ```html + *
+ * this box is moody + *
+ * + * + * + * ``` + * + * ```js + * myModule.animation('.colorful', [function() { + * return { + * addClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * removeClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * setClass: function(element, addedClass, removedClass, doneFn) { + * // do some cool animation and call the doneFn + * } + * } + * }] + * ``` + * + * ## CSS + JS Animations Together + * + * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular, + * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking + * charge of the animation**: + * + * ```html + *
+ * Slide in and out + *
+ * ``` + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * enter: function(element, doneFn) { + * jQuery(element).slideIn(1000, doneFn); + * } + * } + * }] + * ``` + * + * ```css + * .slide.ng-enter { + * transition:0.5s linear all; + * transform:translateY(-100px); + * } + * .slide.ng-enter.ng-enter-active { + * transform:translateY(0); + * } + * ``` + * + * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the + * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from + * our own JS-based animation code: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { +* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`. + * var runner = $animateCss(element, { + * event: 'enter', + * structural: true + * }).start(); +* runner.done(doneFn); + * } + * } + * }] + * ``` + * + * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework. + * + * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or + * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that + * data into `$animateCss` directly: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var runner = $animateCss(element, { + * event: 'enter', + * structural: true, + * addClass: 'maroon-setting', + * from: { height:0 }, + * to: { height: 200 } + * }).start(); + * + * runner.done(doneFn); + * } + * } + * }] + * ``` + * + * Now we can fill in the rest via our transition CSS code: + * + * ```css + * /* the transition tells ngAnimate to make the animation happen */ + * .slide.ng-enter { transition:0.5s linear all; } + * + * /* this extra CSS class will be absorbed into the transition + * since the $animateCss code is adding the class */ + * .maroon-setting { background:red; } + * ``` + * + * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over. + * + * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}. + * + * ## Animation Anchoring (via `ng-animate-ref`) + * + * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between + * structural areas of an application (like views) by pairing up elements using an attribute + * called `ng-animate-ref`. + * + * Let's say for example we have two views that are managed by `ng-view` and we want to show + * that there is a relationship between two components situated in within these views. By using the + * `ng-animate-ref` attribute we can identify that the two components are paired together and we + * can then attach an animation, which is triggered when the view changes. + * + * Say for example we have the following template code: + * + * ```html + * + *
+ *
+ * + * + *
+ * + * + * + * + * + * ``` + * + * Now, when the view changes (once the link is clicked), ngAnimate will examine the + * HTML contents to see if there is a match reference between any components in the view + * that is leaving and the view that is entering. It will scan both the view which is being + * removed (leave) and inserted (enter) to see if there are any paired DOM elements that + * contain a matching ref value. + * + * The two images match since they share the same ref value. ngAnimate will now create a + * transport element (which is a clone of the first image element) and it will then attempt + * to animate to the position of the second image element in the next view. For the animation to + * work a special CSS class called `ng-anchor` will be added to the transported element. + * + * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then + * ngAnimate will handle the entire transition for us as well as the addition and removal of + * any changes of CSS classes between the elements: + * + * ```css + * .banner.ng-anchor { + * /* this animation will last for 1 second since there are + * two phases to the animation (an `in` and an `out` phase) */ + * transition:0.5s linear all; + * } + * ``` + * + * We also **must** include animations for the views that are being entered and removed + * (otherwise anchoring wouldn't be possible since the new view would be inserted right away). + * + * ```css + * .view-animation.ng-enter, .view-animation.ng-leave { + * transition:0.5s linear all; + * position:fixed; + * left:0; + * top:0; + * width:100%; + * } + * .view-animation.ng-enter { + * transform:translateX(100%); + * } + * .view-animation.ng-leave, + * .view-animation.ng-enter.ng-enter-active { + * transform:translateX(0%); + * } + * .view-animation.ng-leave.ng-leave-active { + * transform:translateX(-100%); + * } + * ``` + * + * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur: + * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away + * from its origin. Once that animation is over then the `in` stage occurs which animates the + * element to its destination. The reason why there are two animations is to give enough time + * for the enter animation on the new element to be ready. + * + * The example above sets up a transition for both the in and out phases, but we can also target the out or + * in phases directly via `ng-anchor-out` and `ng-anchor-in`. + * + * ```css + * .banner.ng-anchor-out { + * transition: 0.5s linear all; + * + * /* the scale will be applied during the out animation, + * but will be animated away when the in animation runs */ + * transform: scale(1.2); + * } + * + * .banner.ng-anchor-in { + * transition: 1s linear all; + * } + * ``` + * + * + * + * + * ### Anchoring Demo + * + + + Home +
+
+
+
+
+ + angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'home.html', + controller: 'HomeController as home' + }); + $routeProvider.when('/profile/:id', { + templateUrl: 'profile.html', + controller: 'ProfileController as profile' + }); + }]) + .run(['$rootScope', function($rootScope) { + $rootScope.records = [ + { id:1, title: "Miss Beulah Roob" }, + { id:2, title: "Trent Morissette" }, + { id:3, title: "Miss Ava Pouros" }, + { id:4, title: "Rod Pouros" }, + { id:5, title: "Abdul Rice" }, + { id:6, title: "Laurie Rutherford Sr." }, + { id:7, title: "Nakia McLaughlin" }, + { id:8, title: "Jordon Blanda DVM" }, + { id:9, title: "Rhoda Hand" }, + { id:10, title: "Alexandrea Sauer" } + ]; + }]) + .controller('HomeController', [function() { + //empty + }]) + .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) { + var index = parseInt($routeParams.id, 10); + var record = $rootScope.records[index - 1]; + + this.title = record.title; + this.id = record.id; + }]); + + +

Welcome to the home page

+

Please click on an element

+ + {{ record.title }} + +
+ +
+ {{ profile.title }} +
+
+ + .record { + display:block; + font-size:20px; + } + .profile { + background:black; + color:white; + font-size:100px; + } + .view-container { + position:relative; + } + .view-container > .view.ng-animate { + position:absolute; + top:0; + left:0; + width:100%; + min-height:500px; + } + .view.ng-enter, .view.ng-leave, + .record.ng-anchor { + transition:0.5s linear all; + } + .view.ng-enter { + transform:translateX(100%); + } + .view.ng-enter.ng-enter-active, .view.ng-leave { + transform:translateX(0%); + } + .view.ng-leave.ng-leave-active { + transform:translateX(-100%); + } + .record.ng-anchor-out { + background:red; + } + +
+ * + * ### How is the element transported? + * + * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting + * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element + * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The + * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match + * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied + * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class + * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element + * will become visible since the shim class will be removed. + * + * ### How is the morphing handled? + * + * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out + * what CSS classes differ between the starting element and the destination element. These different CSS classes + * will be added/removed on the anchor element and a transition will be applied (the transition that is provided + * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will + * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that + * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since + * the cloned element is placed inside of root element which is likely close to the body element). + * + * Note that if the root element is on the `` element then the cloned node will be placed inside of body. + * + * + * ## Using $animate in your directive code + * + * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application? + * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's + * imagine we have a greeting box that shows and hides itself when the data changes + * + * ```html + * Hi there + * ``` + * + * ```js + * ngModule.directive('greetingBox', ['$animate', function($animate) { + * return function(scope, element, attrs) { + * attrs.$observe('active', function(value) { + * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on'); + * }); + * }); + * }]); + * ``` + * + * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element + * in our HTML code then we can trigger a CSS or JS animation to happen. + * + * ```css + * /* normally we would create a CSS class to reference on the element */ + * greeting-box.on { transition:0.5s linear all; background:green; color:white; } + * ``` + * + * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's + * possible be sure to visit the {@link ng.$animate $animate service API page}. * * * ### Preventing Collisions With Third Party Libraries @@ -247,1896 +3718,68 @@ * ```js * $animateProvider.classNameFilter(/animate-/); * ``` - *
* - * ### CSS Staggering Animations - * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a - * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be - * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for - * the animation. The style property expected within the stagger class can either be a **transition-delay** or an - * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). + * This also may provide your application with a speed boost since only specific elements containing CSS class prefix + * will be evaluated for animation when any DOM changes occur in the application. * - * ```css - * .my-animation.ng-enter { - * /* standard transition code */ - * -webkit-transition: 1s linear all; - * transition: 1s linear all; - * opacity:0; - * } - * .my-animation.ng-enter-stagger { - * /* this will have a 100ms delay between each successive leave animation */ - * -webkit-transition-delay: 0.1s; - * transition-delay: 0.1s; + * ## Callbacks and Promises * - * /* in case the stagger doesn't work then these two values - * must be set to 0 to avoid an accidental CSS inheritance */ - * -webkit-transition-duration: 0s; - * transition-duration: 0s; - * } - * .my-animation.ng-enter.ng-enter-active { - * /* standard transition styles */ - * opacity:1; - * } - * ``` - * - * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations - * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this - * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation - * will also be reset if more than 10ms has passed after the last animation has been fired. - * - * The following code will issue the **ng-leave-stagger** event on the element provided: + * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger + * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has + * ended by chaining onto the returned promise that animation method returns. * * ```js - * var kids = parent.children(); - * - * $animate.leave(kids[0]); //stagger index=0 - * $animate.leave(kids[1]); //stagger index=1 - * $animate.leave(kids[2]); //stagger index=2 - * $animate.leave(kids[3]); //stagger index=3 - * $animate.leave(kids[4]); //stagger index=4 - * - * $timeout(function() { - * //stagger has reset itself - * $animate.leave(kids[5]); //stagger index=0 - * $animate.leave(kids[6]); //stagger index=1 - * }, 100, false); - * ``` - * - * Stagger animations are currently only supported within CSS-defined animations. - * - * ## JavaScript-defined Animations - * In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not - * yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module. - * - * ```js - * //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application. - * var ngModule = angular.module('YourApp', ['ngAnimate']); - * ngModule.animation('.my-crazy-animation', function() { - * return { - * enter: function(element, done) { - * //run the animation here and call done when the animation is complete - * return function(cancelled) { - * //this (optional) function will be called when the animation - * //completes or when the animation is cancelled (the cancelled - * //flag will be set to true if cancelled). - * }; - * }, - * leave: function(element, done) { }, - * move: function(element, done) { }, - * - * //animation that can be triggered before the class is added - * beforeAddClass: function(element, className, done) { }, - * - * //animation that can be triggered after the class is added - * addClass: function(element, className, done) { }, - * - * //animation that can be triggered before the class is removed - * beforeRemoveClass: function(element, className, done) { }, - * - * //animation that can be triggered after the class is removed - * removeClass: function(element, className, done) { } - * }; + * // somewhere within the depths of the directive + * $animate.enter(element, parent).then(function() { + * //the animation has completed * }); * ``` * - * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run - * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits - * the element's CSS class attribute value and then run the matching animation event function (if found). - * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will - * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported). + * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case + * anymore.) * - * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned. - * As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run, - * and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation - * or transition code that is defined via a stylesheet). - * - * - * ### Applying Directive-specific Styles to an Animation - * In some cases a directive or service may want to provide `$animate` with extra details that the animation will - * include into its animation. Let's say for example we wanted to render an animation that animates an element - * towards the mouse coordinates as to where the user clicked last. By collecting the X/Y coordinates of the click - * (via the event parameter) we can set the `top` and `left` styles into an object and pass that into our function - * call to `$animate.addClass`. + * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering + * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view + * routing controller to hook into that: * * ```js - * canvas.on('click', function(e) { - * $animate.addClass(element, 'on', { - * to: { - * left : e.client.x + 'px', - * top : e.client.y + 'px' - * } - * }): - * }); + * ngModule.controller('HomePageController', ['$animate', function($animate) { + * $animate.on('enter', ngViewElement, function(element) { + * // the animation for this route has completed + * }]); + * }]) * ``` * - * Now when the animation runs, and a transition or keyframe animation is picked up, then the animation itself will - * also include and transition the styling of the `left` and `top` properties into its running animation. If we want - * to provide some starting animation values then we can do so by placing the starting animations styles into an object - * called `from` in the same object as the `to` animations. - * - * ```js - * canvas.on('click', function(e) { - * $animate.addClass(element, 'on', { - * from: { - * position: 'absolute', - * left: '0px', - * top: '0px' - * }, - * to: { - * left : e.client.x + 'px', - * top : e.client.y + 'px' - * } - * }): - * }); - * ``` - * - * Once the animation is complete or cancelled then the union of both the before and after styles are applied to the - * element. If `ngAnimate` is not present then the styles will be applied immediately. - * + * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.) */ -angular.module('ngAnimate', ['ng']) +/** + * @ngdoc service + * @name $animate + * @kind object + * + * @description + * The ngAnimate `$animate` service documentation is the same for the core `$animate` service. + * + * Click here {@link ng.$animate $animate to learn more about animations with `$animate`}. + */ +angular.module('ngAnimate', []) + .provider('$$body', $$BodyProvider) - /** - * @ngdoc provider - * @name $animateProvider - * @description - * - * The `$animateProvider` allows developers to register JavaScript animation event handlers directly inside of a module. - * When an animation is triggered, the $animate service will query the $animate service to find any animations that match - * the provided name value. - * - * Requires the {@link ngAnimate `ngAnimate`} module to be installed. - * - * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. - * - */ - .directive('ngAnimateChildren', function() { - var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; - return function(scope, element, attrs) { - var val = attrs.ngAnimateChildren; - if (angular.isString(val) && val.length === 0) { //empty attribute - element.data(NG_ANIMATE_CHILDREN, true); - } else { - scope.$watch(val, function(value) { - element.data(NG_ANIMATE_CHILDREN, !!value); - }); - } - }; - }) + .directive('ngAnimateChildren', $$AnimateChildrenDirective) - //this private service is only used within CSS-enabled animations - //IE8 + IE9 do not support rAF natively, but that is fine since they - //also don't support transitions and keyframes which means that the code - //below will never be used by the two browsers. - .factory('$$animateReflow', ['$$rAF', '$document', function($$rAF, $document) { - var bod = $document[0].body; - return function(fn) { - //the returned function acts as the cancellation function - return $$rAF(function() { - //the line below will force the browser to perform a repaint - //so that all the animated elements within the animation frame - //will be properly updated and drawn on screen. This is - //required to perform multi-class CSS based animations with - //Firefox. DO NOT REMOVE THIS LINE. DO NOT OPTIMIZE THIS LINE. - //THE MINIFIER WILL REMOVE IT OTHERWISE WHICH WILL RESULT IN AN - //UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND WILL - //TAKE YEARS AWAY FROM YOUR LIFE! - fn(bod.offsetWidth); - }); - }; - }]) + .factory('$$rAFMutex', $$rAFMutexFactory) - .config(['$provide', '$animateProvider', function($provide, $animateProvider) { - var noop = angular.noop; - var forEach = angular.forEach; - var selectors = $animateProvider.$$selectors; - var isArray = angular.isArray; - var isString = angular.isString; - var isObject = angular.isObject; + .factory('$$AnimateRunner', $$AnimateRunnerFactory) - var ELEMENT_NODE = 1; - var NG_ANIMATE_STATE = '$$ngAnimateState'; - var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; - var NG_ANIMATE_CLASS_NAME = 'ng-animate'; - var rootAnimateState = {running: true}; + .provider('$$animateQueue', $$AnimateQueueProvider) + .provider('$$animation', $$AnimationProvider) - function extractElementNode(element) { - for (var i = 0; i < element.length; i++) { - var elm = element[i]; - if (elm.nodeType == ELEMENT_NODE) { - return elm; - } - } - } + .provider('$animateCss', $AnimateCssProvider) + .provider('$$animateCssDriver', $$AnimateCssDriverProvider) - function prepareElement(element) { - return element && angular.element(element); - } - - function stripCommentsFromElement(element) { - return angular.element(extractElementNode(element)); - } - - function isMatchingElement(elm1, elm2) { - return extractElementNode(elm1) == extractElementNode(elm2); - } - var $$jqLite; - $provide.decorator('$animate', - ['$delegate', '$$q', '$injector', '$sniffer', '$rootElement', '$$asyncCallback', '$rootScope', '$document', '$templateRequest', '$$jqLite', - function($delegate, $$q, $injector, $sniffer, $rootElement, $$asyncCallback, $rootScope, $document, $templateRequest, $$$jqLite) { - - $$jqLite = $$$jqLite; - $rootElement.data(NG_ANIMATE_STATE, rootAnimateState); - - // Wait until all directive and route-related templates are downloaded and - // compiled. The $templateRequest.totalPendingRequests variable keeps track of - // all of the remote templates being currently downloaded. If there are no - // templates currently downloading then the watcher will still fire anyway. - var deregisterWatch = $rootScope.$watch( - function() { return $templateRequest.totalPendingRequests; }, - function(val, oldVal) { - if (val !== 0) return; - deregisterWatch(); - - // Now that all templates have been downloaded, $animate will wait until - // the post digest queue is empty before enabling animations. By having two - // calls to $postDigest calls we can ensure that the flag is enabled at the - // very end of the post digest queue. Since all of the animations in $animate - // use $postDigest, it's important that the code below executes at the end. - // This basically means that the page is fully downloaded and compiled before - // any animations are triggered. - $rootScope.$$postDigest(function() { - $rootScope.$$postDigest(function() { - rootAnimateState.running = false; - }); - }); - } - ); - - var globalAnimationCounter = 0; - var classNameFilter = $animateProvider.classNameFilter(); - var isAnimatableClassName = !classNameFilter - ? function() { return true; } - : function(className) { - return classNameFilter.test(className); - }; - - function classBasedAnimationsBlocked(element, setter) { - var data = element.data(NG_ANIMATE_STATE) || {}; - if (setter) { - data.running = true; - data.structural = true; - element.data(NG_ANIMATE_STATE, data); - } - return data.disabled || (data.running && data.structural); - } - - function runAnimationPostDigest(fn) { - var cancelFn, defer = $$q.defer(); - defer.promise.$$cancelFn = function() { - cancelFn && cancelFn(); - }; - $rootScope.$$postDigest(function() { - cancelFn = fn(function() { - defer.resolve(); - }); - }); - return defer.promise; - } - - function parseAnimateOptions(options) { - // some plugin code may still be passing in the callback - // function as the last param for the $animate methods so - // it's best to only allow string or array values for now - if (isObject(options)) { - if (options.tempClasses && isString(options.tempClasses)) { - options.tempClasses = options.tempClasses.split(/\s+/); - } - return options; - } - } - - function resolveElementClasses(element, cache, runningAnimations) { - runningAnimations = runningAnimations || {}; - - var lookup = {}; - forEach(runningAnimations, function(data, selector) { - forEach(selector.split(' '), function(s) { - lookup[s]=data; - }); - }); - - var hasClasses = Object.create(null); - forEach((element.attr('class') || '').split(/\s+/), function(className) { - hasClasses[className] = true; - }); - - var toAdd = [], toRemove = []; - forEach((cache && cache.classes) || [], function(status, className) { - var hasClass = hasClasses[className]; - var matchingAnimation = lookup[className] || {}; - - // When addClass and removeClass is called then $animate will check to - // see if addClass and removeClass cancel each other out. When there are - // more calls to removeClass than addClass then the count falls below 0 - // and then the removeClass animation will be allowed. Otherwise if the - // count is above 0 then that means an addClass animation will commence. - // Once an animation is allowed then the code will also check to see if - // there exists any on-going animation that is already adding or remvoing - // the matching CSS class. - if (status === false) { - //does it have the class or will it have the class - if (hasClass || matchingAnimation.event == 'addClass') { - toRemove.push(className); - } - } else if (status === true) { - //is the class missing or will it be removed? - if (!hasClass || matchingAnimation.event == 'removeClass') { - toAdd.push(className); - } - } - }); - - return (toAdd.length + toRemove.length) > 0 && [toAdd.join(' '), toRemove.join(' ')]; - } - - function lookup(name) { - if (name) { - var matches = [], - flagMap = {}, - classes = name.substr(1).split('.'); - - //the empty string value is the default animation - //operation which performs CSS transition and keyframe - //animations sniffing. This is always included for each - //element animation procedure if the browser supports - //transitions and/or keyframe animations. The default - //animation is added to the top of the list to prevent - //any previous animations from affecting the element styling - //prior to the element being animated. - if ($sniffer.transitions || $sniffer.animations) { - matches.push($injector.get(selectors[''])); - } - - for (var i=0; i < classes.length; i++) { - var klass = classes[i], - selectorFactoryName = selectors[klass]; - if (selectorFactoryName && !flagMap[klass]) { - matches.push($injector.get(selectorFactoryName)); - flagMap[klass] = true; - } - } - return matches; - } - } - - function animationRunner(element, animationEvent, className, options) { - //transcluded directives may sometimes fire an animation using only comment nodes - //best to catch this early on to prevent any animation operations from occurring - var node = element[0]; - if (!node) { - return; - } - - if (options) { - options.to = options.to || {}; - options.from = options.from || {}; - } - - var classNameAdd; - var classNameRemove; - if (isArray(className)) { - classNameAdd = className[0]; - classNameRemove = className[1]; - if (!classNameAdd) { - className = classNameRemove; - animationEvent = 'removeClass'; - } else if (!classNameRemove) { - className = classNameAdd; - animationEvent = 'addClass'; - } else { - className = classNameAdd + ' ' + classNameRemove; - } - } - - var isSetClassOperation = animationEvent == 'setClass'; - var isClassBased = isSetClassOperation - || animationEvent == 'addClass' - || animationEvent == 'removeClass' - || animationEvent == 'animate'; - - var currentClassName = element.attr('class'); - var classes = currentClassName + ' ' + className; - if (!isAnimatableClassName(classes)) { - return; - } - - var beforeComplete = noop, - beforeCancel = [], - before = [], - afterComplete = noop, - afterCancel = [], - after = []; - - var animationLookup = (' ' + classes).replace(/\s+/g,'.'); - forEach(lookup(animationLookup), function(animationFactory) { - var created = registerAnimation(animationFactory, animationEvent); - if (!created && isSetClassOperation) { - registerAnimation(animationFactory, 'addClass'); - registerAnimation(animationFactory, 'removeClass'); - } - }); - - function registerAnimation(animationFactory, event) { - var afterFn = animationFactory[event]; - var beforeFn = animationFactory['before' + event.charAt(0).toUpperCase() + event.substr(1)]; - if (afterFn || beforeFn) { - if (event == 'leave') { - beforeFn = afterFn; - //when set as null then animation knows to skip this phase - afterFn = null; - } - after.push({ - event: event, fn: afterFn - }); - before.push({ - event: event, fn: beforeFn - }); - return true; - } - } - - function run(fns, cancellations, allCompleteFn) { - var animations = []; - forEach(fns, function(animation) { - animation.fn && animations.push(animation); - }); - - var count = 0; - function afterAnimationComplete(index) { - if (cancellations) { - (cancellations[index] || noop)(); - if (++count < animations.length) return; - cancellations = null; - } - allCompleteFn(); - } - - //The code below adds directly to the array in order to work with - //both sync and async animations. Sync animations are when the done() - //operation is called right away. DO NOT REFACTOR! - forEach(animations, function(animation, index) { - var progress = function() { - afterAnimationComplete(index); - }; - switch (animation.event) { - case 'setClass': - cancellations.push(animation.fn(element, classNameAdd, classNameRemove, progress, options)); - break; - case 'animate': - cancellations.push(animation.fn(element, className, options.from, options.to, progress)); - break; - case 'addClass': - cancellations.push(animation.fn(element, classNameAdd || className, progress, options)); - break; - case 'removeClass': - cancellations.push(animation.fn(element, classNameRemove || className, progress, options)); - break; - default: - cancellations.push(animation.fn(element, progress, options)); - break; - } - }); - - if (cancellations && cancellations.length === 0) { - allCompleteFn(); - } - } - - return { - node: node, - event: animationEvent, - className: className, - isClassBased: isClassBased, - isSetClassOperation: isSetClassOperation, - applyStyles: function() { - if (options) { - element.css(angular.extend(options.from || {}, options.to || {})); - } - }, - before: function(allCompleteFn) { - beforeComplete = allCompleteFn; - run(before, beforeCancel, function() { - beforeComplete = noop; - allCompleteFn(); - }); - }, - after: function(allCompleteFn) { - afterComplete = allCompleteFn; - run(after, afterCancel, function() { - afterComplete = noop; - allCompleteFn(); - }); - }, - cancel: function() { - if (beforeCancel) { - forEach(beforeCancel, function(cancelFn) { - (cancelFn || noop)(true); - }); - beforeComplete(true); - } - if (afterCancel) { - forEach(afterCancel, function(cancelFn) { - (cancelFn || noop)(true); - }); - afterComplete(true); - } - } - }; - } - - /** - * @ngdoc service - * @name $animate - * @kind object - * - * @description - * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. - * When any of these operations are run, the $animate service - * will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) - * as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run. - * - * The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives - * will work out of the box without any extra configuration. - * - * Requires the {@link ngAnimate `ngAnimate`} module to be installed. - * - * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. - * ## Callback Promises - * With AngularJS 1.3, each of the animation methods, on the `$animate` service, return a promise when called. The - * promise itself is then resolved once the animation has completed itself, has been cancelled or has been - * skipped due to animations being disabled. (Note that even if the animation is cancelled it will still - * call the resolve function of the animation.) - * - * ```js - * $animate.enter(element, container).then(function() { - * //...this is called once the animation is complete... - * }); - * ``` - * - * Also note that, due to the nature of the callback promise, if any Angular-specific code (like changing the scope, - * location of the page, etc...) is executed within the callback promise then be sure to wrap the code using - * `$scope.$apply(...)`; - * - * ```js - * $animate.leave(element).then(function() { - * $scope.$apply(function() { - * $location.path('/new-page'); - * }); - * }); - * ``` - * - * An animation can also be cancelled by calling the `$animate.cancel(promise)` method with the provided - * promise that was returned when the animation was started. - * - * ```js - * var promise = $animate.addClass(element, 'super-long-animation'); - * promise.then(function() { - * //this will still be called even if cancelled - * }); - * - * element.on('click', function() { - * //tooo lazy to wait for the animation to end - * $animate.cancel(promise); - * }); - * ``` - * - * (Keep in mind that the promise cancellation is unique to `$animate` since promises in - * general cannot be cancelled.) - * - */ - return { - /** - * @ngdoc method - * @name $animate#animate - * @kind function - * - * @description - * Performs an inline animation on the element which applies the provided `to` and `from` CSS styles to the element. - * If any detected CSS transition, keyframe or JavaScript matches the provided `className` value then the animation - * will take on the provided styles. For example, if a transition animation is set for the given className then the - * provided `from` and `to` styles will be applied alongside the given transition. If a JavaScript animation is - * detected then the provided styles will be given in as function paramters. - * - * ```js - * ngModule.animation('.my-inline-animation', function() { - * return { - * animate : function(element, className, from, to, done) { - * //styles - * } - * } - * }); - * ``` - * - * Below is a breakdown of each step that occurs during the `animate` animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------| - * | 1. `$animate.animate(...)` is called | `class="my-animation"` | - * | 2. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 3. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 4. the `className` class value is added to the element | `class="my-animation ng-animate className"` | - * | 5. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate className"` | - * | 6. `$animate` blocks all CSS transitions on the element to ensure the `.className` class styling is applied right away| `class="my-animation ng-animate className"` | - * | 7. `$animate` applies the provided collection of `from` CSS styles to the element | `class="my-animation ng-animate className"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate className"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate className"` | - * | 10. the `className-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate className className-active"` | - * | 11. `$animate` applies the collection of `to` CSS styles to the element which are then handled by the transition | `class="my-animation ng-animate className className-active"` | - * | 12. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate className className-active"` | - * | 13. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 14. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the enter animation - * @param {object} from a collection of CSS styles that will be applied to the element at the start of the animation - * @param {object} to a collection of CSS styles that the element will animate towards - * @param {string=} className an optional CSS class that will be added to the element for the duration of the animation (the default class is `ng-inline-animate`) - * @param {object=} options an optional collection of options that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - animate: function(element, from, to, className, options) { - className = className || 'ng-inline-animate'; - options = parseAnimateOptions(options) || {}; - options.from = to ? from : null; - options.to = to ? to : from; - - return runAnimationPostDigest(function(done) { - return performAnimation('animate', className, stripCommentsFromElement(element), null, null, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#enter - * @kind function - * - * @description - * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once - * the animation is started, the following CSS classes will be present on the element for the duration of the animation: - * - * Below is a breakdown of each step that occurs during enter animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| - * | 1. `$animate.enter(...)` is called | `class="my-animation"` | - * | 2. element is inserted into the `parentElement` element or beside the `afterElement` element | `class="my-animation"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 5. the `.ng-enter` class is added to the element | `class="my-animation ng-animate ng-enter"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-enter"` | - * | 7. `$animate` blocks all CSS transitions on the element to ensure the `.ng-enter` class styling is applied right away | `class="my-animation ng-animate ng-enter"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-enter"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-enter"` | - * | 10. the `.ng-enter-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-enter ng-enter-active"` | - * | 11. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-enter ng-enter-active"` | - * | 12. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 13. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the enter animation - * @param {DOMElement} parentElement the parent element of the element that will be the focus of the enter animation - * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation - * @param {object=} options an optional collection of options that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - enter: function(element, parentElement, afterElement, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - parentElement = prepareElement(parentElement); - afterElement = prepareElement(afterElement); - - classBasedAnimationsBlocked(element, true); - $delegate.enter(element, parentElement, afterElement); - return runAnimationPostDigest(function(done) { - return performAnimation('enter', 'ng-enter', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#leave - * @kind function - * - * @description - * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once - * the animation is started, the following CSS classes will be added for the duration of the animation: - * - * Below is a breakdown of each step that occurs during leave animation: - * - * | Animation Step | What the element class attribute looks like | - * |-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| - * | 1. `$animate.leave(...)` is called | `class="my-animation"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. the `.ng-leave` class is added to the element | `class="my-animation ng-animate ng-leave"` | - * | 5. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-leave"` | - * | 6. `$animate` blocks all CSS transitions on the element to ensure the `.ng-leave` class styling is applied right away | `class="my-animation ng-animate ng-leave"` | - * | 7. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-leave"` | - * | 8. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-leave"` | - * | 9. the `.ng-leave-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-leave ng-leave-active"` | - * | 10. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-leave ng-leave-active"` | - * | 11. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 12. The element is removed from the DOM | ... | - * | 13. The returned promise is resolved. | ... | - * - * @param {DOMElement} element the element that will be the focus of the leave animation - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - leave: function(element, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - - cancelChildAnimations(element); - classBasedAnimationsBlocked(element, true); - return runAnimationPostDigest(function(done) { - return performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() { - $delegate.leave(element); - }, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#move - * @kind function - * - * @description - * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or - * add the element directly after the afterElement element if present. Then the move animation will be run. Once - * the animation is started, the following CSS classes will be added for the duration of the animation: - * - * Below is a breakdown of each step that occurs during move animation: - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------| - * | 1. `$animate.move(...)` is called | `class="my-animation"` | - * | 2. element is moved into the parentElement element or beside the afterElement element | `class="my-animation"` | - * | 3. `$animate` waits for the next digest to start the animation | `class="my-animation ng-animate"` | - * | 4. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 5. the `.ng-move` class is added to the element | `class="my-animation ng-animate ng-move"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate ng-move"` | - * | 7. `$animate` blocks all CSS transitions on the element to ensure the `.ng-move` class styling is applied right away | `class="my-animation ng-animate ng-move"` | - * | 8. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate ng-move"` | - * | 9. `$animate` removes the CSS transition block placed on the element | `class="my-animation ng-animate ng-move"` | - * | 10. the `.ng-move-active` class is added (this triggers the CSS transition/animation) | `class="my-animation ng-animate ng-move ng-move-active"` | - * | 11. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate ng-move ng-move-active"` | - * | 12. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 13. The returned promise is resolved. | `class="my-animation"` | - * - * @param {DOMElement} element the element that will be the focus of the move animation - * @param {DOMElement} parentElement the parentElement element of the element that will be the focus of the move animation - * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - move: function(element, parentElement, afterElement, options) { - options = parseAnimateOptions(options); - element = angular.element(element); - parentElement = prepareElement(parentElement); - afterElement = prepareElement(afterElement); - - cancelChildAnimations(element); - classBasedAnimationsBlocked(element, true); - $delegate.move(element, parentElement, afterElement); - return runAnimationPostDigest(function(done) { - return performAnimation('move', 'ng-move', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#addClass - * - * @description - * Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class. - * Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide - * the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions - * or keyframes are defined on the -add-active or base CSS class). - * - * Below is a breakdown of each step that occurs during addClass animation: - * - * | Animation Step | What the element class attribute looks like | - * |--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| - * | 1. `$animate.addClass(element, 'super')` is called | `class="my-animation"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate"` | - * | 3. the `.super-add` class is added to the element | `class="my-animation ng-animate super-add"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate super-add"` | - * | 5. the `.super` and `.super-add-active` classes are added (this triggers the CSS transition/animation) | `class="my-animation ng-animate super super-add super-add-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate super super-add super-add-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate super super-add super-add-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation super"` | - * | 9. The super class is kept on the element | `class="my-animation super"` | - * | 10. The returned promise is resolved. | `class="my-animation super"` | - * - * @param {DOMElement} element the element that will be animated - * @param {string} className the CSS class that will be added to the element and then animated - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - addClass: function(element, className, options) { - return this.setClass(element, className, [], options); - }, - - /** - * @ngdoc method - * @name $animate#removeClass - * - * @description - * Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value - * from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in - * order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if - * no CSS transitions or keyframes are defined on the -remove or base CSS classes). - * - * Below is a breakdown of each step that occurs during removeClass animation: - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| - * | 1. `$animate.removeClass(element, 'super')` is called | `class="my-animation super"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation super ng-animate"` | - * | 3. the `.super-remove` class is added to the element | `class="my-animation super ng-animate super-remove"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation super ng-animate super-remove"` | - * | 5. the `.super-remove-active` classes are added and `.super` is removed (this triggers the CSS transition/animation) | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate super-remove super-remove-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation"` | - * | 9. The returned promise is resolved. | `class="my-animation"` | - * - * - * @param {DOMElement} element the element that will be animated - * @param {string} className the CSS class that will be animated and then removed from the element - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - removeClass: function(element, className, options) { - return this.setClass(element, [], className, options); - }, - - /** - * - * @ngdoc method - * @name $animate#setClass - * - * @description Adds and/or removes the given CSS classes to and from the element. - * Once complete, the `done()` callback will be fired (if provided). - * - * | Animation Step | What the element class attribute looks like | - * |----------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| - * | 1. `$animate.setClass(element, 'on', 'off')` is called | `class="my-animation off"` | - * | 2. `$animate` runs the JavaScript-defined animations detected on the element | `class="my-animation ng-animate off"` | - * | 3. the `.on-add` and `.off-remove` classes are added to the element | `class="my-animation ng-animate on-add off-remove off"` | - * | 4. `$animate` waits for a single animation frame (this performs a reflow) | `class="my-animation ng-animate on-add off-remove off"` | - * | 5. the `.on`, `.on-add-active` and `.off-remove-active` classes are added and `.off` is removed (this triggers the CSS transition/animation) | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 6. `$animate` scans the element styles to get the CSS transition/animation duration and delay | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 7. `$animate` waits for the animation to complete (via events and timeout) | `class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active"` | - * | 8. The animation ends and all generated CSS classes are removed from the element | `class="my-animation on"` | - * | 9. The returned promise is resolved. | `class="my-animation on"` | - * - * @param {DOMElement} element the element which will have its CSS classes changed - * removed from it - * @param {string} add the CSS classes which will be added to the element - * @param {string} remove the CSS class which will be removed from the element - * CSS classes have been set on the element - * @param {object=} options an optional collection of styles that will be picked up by the CSS transition/animation - * @return {Promise} the animation callback promise - */ - setClass: function(element, add, remove, options) { - options = parseAnimateOptions(options); - - var STORAGE_KEY = '$$animateClasses'; - element = angular.element(element); - element = stripCommentsFromElement(element); - - if (classBasedAnimationsBlocked(element)) { - return $delegate.$$setClassImmediately(element, add, remove, options); - } - - // we're using a combined array for both the add and remove - // operations since the ORDER OF addClass and removeClass matters - var classes, cache = element.data(STORAGE_KEY); - var hasCache = !!cache; - if (!cache) { - cache = {}; - cache.classes = {}; - } - classes = cache.classes; - - add = isArray(add) ? add : add.split(' '); - forEach(add, function(c) { - if (c && c.length) { - classes[c] = true; - } - }); - - remove = isArray(remove) ? remove : remove.split(' '); - forEach(remove, function(c) { - if (c && c.length) { - classes[c] = false; - } - }); - - if (hasCache) { - if (options && cache.options) { - cache.options = angular.extend(cache.options || {}, options); - } - - //the digest cycle will combine all the animations into one function - return cache.promise; - } else { - element.data(STORAGE_KEY, cache = { - classes: classes, - options: options - }); - } - - return cache.promise = runAnimationPostDigest(function(done) { - var cache, parentNode, parentElement, elementNode = extractElementNode(element); - if (elementNode) { - cache = element.data(STORAGE_KEY); - element.removeData(STORAGE_KEY); - - parentElement = element.parent(); - parentNode = elementNode.parentNode; - } - - // TODO(matsko): move this code into the animationsDisabled() function once #8092 is fixed - if (!parentNode || parentNode['$$NG_REMOVED'] || elementNode['$$NG_REMOVED']) { - done(); - return; - } - - var state = element.data(NG_ANIMATE_STATE) || {}; - var classes = resolveElementClasses(element, cache, state.active); - return !classes - ? done() - : performAnimation('setClass', classes, element, parentElement, null, function() { - if (classes[0]) $delegate.$$addClassImmediately(element, classes[0]); - if (classes[1]) $delegate.$$removeClassImmediately(element, classes[1]); - }, cache.options, done); - }); - }, - - /** - * @ngdoc method - * @name $animate#cancel - * @kind function - * - * @param {Promise} animationPromise The animation promise that is returned when an animation is started. - * - * @description - * Cancels the provided animation. - */ - cancel: function(promise) { - promise.$$cancelFn(); - }, - - /** - * @ngdoc method - * @name $animate#enabled - * @kind function - * - * @param {boolean=} value If provided then set the animation on or off. - * @param {DOMElement=} element If provided then the element will be used to represent the enable/disable operation - * @return {boolean} Current animation state. - * - * @description - * Globally enables/disables animations. - * - */ - enabled: function(value, element) { - switch (arguments.length) { - case 2: - if (value) { - cleanup(element); - } else { - var data = element.data(NG_ANIMATE_STATE) || {}; - data.disabled = true; - element.data(NG_ANIMATE_STATE, data); - } - break; - - case 1: - rootAnimateState.disabled = !value; - break; - - default: - value = !rootAnimateState.disabled; - break; - } - return !!value; - } - }; - - /* - all animations call this shared animation triggering function internally. - The animationEvent variable refers to the JavaScript animation event that will be triggered - and the className value is the name of the animation that will be applied within the - CSS code. Element, `parentElement` and `afterElement` are provided DOM elements for the animation - and the onComplete callback will be fired once the animation is fully complete. - */ - function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, options, doneCallback) { - var noopCancel = noop; - var runner = animationRunner(element, animationEvent, className, options); - if (!runner) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - closeAnimation(); - return noopCancel; - } - - animationEvent = runner.event; - className = runner.className; - var elementEvents = angular.element._data(runner.node); - elementEvents = elementEvents && elementEvents.events; - - if (!parentElement) { - parentElement = afterElement ? afterElement.parent() : element.parent(); - } - - //skip the animation if animations are disabled, a parent is already being animated, - //the element is not currently attached to the document body or then completely close - //the animation if any matching animations are not found at all. - //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case an animation was found. - if (animationsDisabled(element, parentElement)) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - closeAnimation(); - return noopCancel; - } - - var ngAnimateState = element.data(NG_ANIMATE_STATE) || {}; - var runningAnimations = ngAnimateState.active || {}; - var totalActiveAnimations = ngAnimateState.totalActive || 0; - var lastAnimation = ngAnimateState.last; - var skipAnimation = false; - - if (totalActiveAnimations > 0) { - var animationsToCancel = []; - if (!runner.isClassBased) { - if (animationEvent == 'leave' && runningAnimations['ng-leave']) { - skipAnimation = true; - } else { - //cancel all animations when a structural animation takes place - for (var klass in runningAnimations) { - animationsToCancel.push(runningAnimations[klass]); - } - ngAnimateState = {}; - cleanup(element, true); - } - } else if (lastAnimation.event == 'setClass') { - animationsToCancel.push(lastAnimation); - cleanup(element, className); - } else if (runningAnimations[className]) { - var current = runningAnimations[className]; - if (current.event == animationEvent) { - skipAnimation = true; - } else { - animationsToCancel.push(current); - cleanup(element, className); - } - } - - if (animationsToCancel.length > 0) { - forEach(animationsToCancel, function(operation) { - operation.cancel(); - }); - } - } - - if (runner.isClassBased - && !runner.isSetClassOperation - && animationEvent != 'animate' - && !skipAnimation) { - skipAnimation = (animationEvent == 'addClass') == element.hasClass(className); //opposite of XOR - } - - if (skipAnimation) { - fireDOMOperation(); - fireBeforeCallbackAsync(); - fireAfterCallbackAsync(); - fireDoneCallbackAsync(); - return noopCancel; - } - - runningAnimations = ngAnimateState.active || {}; - totalActiveAnimations = ngAnimateState.totalActive || 0; - - if (animationEvent == 'leave') { - //there's no need to ever remove the listener since the element - //will be removed (destroyed) after the leave animation ends or - //is cancelled midway - element.one('$destroy', function(e) { - var element = angular.element(this); - var state = element.data(NG_ANIMATE_STATE); - if (state) { - var activeLeaveAnimation = state.active['ng-leave']; - if (activeLeaveAnimation) { - activeLeaveAnimation.cancel(); - cleanup(element, 'ng-leave'); - } - } - }); - } - - //the ng-animate class does nothing, but it's here to allow for - //parent animations to find and cancel child animations when needed - $$jqLite.addClass(element, NG_ANIMATE_CLASS_NAME); - if (options && options.tempClasses) { - forEach(options.tempClasses, function(className) { - $$jqLite.addClass(element, className); - }); - } - - var localAnimationCount = globalAnimationCounter++; - totalActiveAnimations++; - runningAnimations[className] = runner; - - element.data(NG_ANIMATE_STATE, { - last: runner, - active: runningAnimations, - index: localAnimationCount, - totalActive: totalActiveAnimations - }); - - //first we run the before animations and when all of those are complete - //then we perform the DOM operation and run the next set of animations - fireBeforeCallbackAsync(); - runner.before(function(cancelled) { - var data = element.data(NG_ANIMATE_STATE); - cancelled = cancelled || - !data || !data.active[className] || - (runner.isClassBased && data.active[className].event != animationEvent); - - fireDOMOperation(); - if (cancelled === true) { - closeAnimation(); - } else { - fireAfterCallbackAsync(); - runner.after(closeAnimation); - } - }); - - return runner.cancel; - - function fireDOMCallback(animationPhase) { - var eventName = '$animate:' + animationPhase; - if (elementEvents && elementEvents[eventName] && elementEvents[eventName].length > 0) { - $$asyncCallback(function() { - element.triggerHandler(eventName, { - event: animationEvent, - className: className - }); - }); - } - } - - function fireBeforeCallbackAsync() { - fireDOMCallback('before'); - } - - function fireAfterCallbackAsync() { - fireDOMCallback('after'); - } - - function fireDoneCallbackAsync() { - fireDOMCallback('close'); - doneCallback(); - } - - //it is less complicated to use a flag than managing and canceling - //timeouts containing multiple callbacks. - function fireDOMOperation() { - if (!fireDOMOperation.hasBeenRun) { - fireDOMOperation.hasBeenRun = true; - domOperation(); - } - } - - function closeAnimation() { - if (!closeAnimation.hasBeenRun) { - if (runner) { //the runner doesn't exist if it fails to instantiate - runner.applyStyles(); - } - - closeAnimation.hasBeenRun = true; - if (options && options.tempClasses) { - forEach(options.tempClasses, function(className) { - $$jqLite.removeClass(element, className); - }); - } - - var data = element.data(NG_ANIMATE_STATE); - if (data) { - - /* only structural animations wait for reflow before removing an - animation, but class-based animations don't. An example of this - failing would be when a parent HTML tag has a ng-class attribute - causing ALL directives below to skip animations during the digest */ - if (runner && runner.isClassBased) { - cleanup(element, className); - } else { - $$asyncCallback(function() { - var data = element.data(NG_ANIMATE_STATE) || {}; - if (localAnimationCount == data.index) { - cleanup(element, className, animationEvent); - } - }); - element.data(NG_ANIMATE_STATE, data); - } - } - fireDoneCallbackAsync(); - } - } - } - - function cancelChildAnimations(element) { - var node = extractElementNode(element); - if (node) { - var nodes = angular.isFunction(node.getElementsByClassName) ? - node.getElementsByClassName(NG_ANIMATE_CLASS_NAME) : - node.querySelectorAll('.' + NG_ANIMATE_CLASS_NAME); - forEach(nodes, function(element) { - element = angular.element(element); - var data = element.data(NG_ANIMATE_STATE); - if (data && data.active) { - forEach(data.active, function(runner) { - runner.cancel(); - }); - } - }); - } - } - - function cleanup(element, className) { - if (isMatchingElement(element, $rootElement)) { - if (!rootAnimateState.disabled) { - rootAnimateState.running = false; - rootAnimateState.structural = false; - } - } else if (className) { - var data = element.data(NG_ANIMATE_STATE) || {}; - - var removeAnimations = className === true; - if (!removeAnimations && data.active && data.active[className]) { - data.totalActive--; - delete data.active[className]; - } - - if (removeAnimations || !data.totalActive) { - $$jqLite.removeClass(element, NG_ANIMATE_CLASS_NAME); - element.removeData(NG_ANIMATE_STATE); - } - } - } - - function animationsDisabled(element, parentElement) { - if (rootAnimateState.disabled) { - return true; - } - - if (isMatchingElement(element, $rootElement)) { - return rootAnimateState.running; - } - - var allowChildAnimations, parentRunningAnimation, hasParent; - do { - //the element did not reach the root element which means that it - //is not apart of the DOM. Therefore there is no reason to do - //any animations on it - if (parentElement.length === 0) break; - - var isRoot = isMatchingElement(parentElement, $rootElement); - var state = isRoot ? rootAnimateState : (parentElement.data(NG_ANIMATE_STATE) || {}); - if (state.disabled) { - return true; - } - - //no matter what, for an animation to work it must reach the root element - //this implies that the element is attached to the DOM when the animation is run - if (isRoot) { - hasParent = true; - } - - //once a flag is found that is strictly false then everything before - //it will be discarded and all child animations will be restricted - if (allowChildAnimations !== false) { - var animateChildrenFlag = parentElement.data(NG_ANIMATE_CHILDREN); - if (angular.isDefined(animateChildrenFlag)) { - allowChildAnimations = animateChildrenFlag; - } - } - - parentRunningAnimation = parentRunningAnimation || - state.running || - (state.last && !state.last.isClassBased); - } - while (parentElement = parentElement.parent()); - - return !hasParent || (!allowChildAnimations && parentRunningAnimation); - } - }]); - - $animateProvider.register('', ['$window', '$sniffer', '$timeout', '$$animateReflow', - function($window, $sniffer, $timeout, $$animateReflow) { - // Detect proper transitionend/animationend event names. - var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; - - // If unprefixed events are not supported but webkit-prefixed are, use the latter. - // Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. - // Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` - // but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. - // Register both events in case `window.onanimationend` is not supported because of that, - // do the same for `transitionend` as Safari is likely to exhibit similar behavior. - // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit - // therefore there is no reason to test anymore for other vendor prefixes: http://caniuse.com/#search=transition - if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) { - CSS_PREFIX = '-webkit-'; - TRANSITION_PROP = 'WebkitTransition'; - TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; - } else { - TRANSITION_PROP = 'transition'; - TRANSITIONEND_EVENT = 'transitionend'; - } - - if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) { - CSS_PREFIX = '-webkit-'; - ANIMATION_PROP = 'WebkitAnimation'; - ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; - } else { - ANIMATION_PROP = 'animation'; - ANIMATIONEND_EVENT = 'animationend'; - } - - var DURATION_KEY = 'Duration'; - var PROPERTY_KEY = 'Property'; - var DELAY_KEY = 'Delay'; - var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; - var ANIMATION_PLAYSTATE_KEY = 'PlayState'; - var NG_ANIMATE_PARENT_KEY = '$$ngAnimateKey'; - var NG_ANIMATE_CSS_DATA_KEY = '$$ngAnimateCSS3Data'; - var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; - var CLOSING_TIME_BUFFER = 1.5; - var ONE_SECOND = 1000; - - var lookupCache = {}; - var parentCounter = 0; - var animationReflowQueue = []; - var cancelAnimationReflow; - function clearCacheAfterReflow() { - if (!cancelAnimationReflow) { - cancelAnimationReflow = $$animateReflow(function() { - animationReflowQueue = []; - cancelAnimationReflow = null; - lookupCache = {}; - }); - } - } - - function afterReflow(element, callback) { - if (cancelAnimationReflow) { - cancelAnimationReflow(); - } - animationReflowQueue.push(callback); - cancelAnimationReflow = $$animateReflow(function() { - forEach(animationReflowQueue, function(fn) { - fn(); - }); - - animationReflowQueue = []; - cancelAnimationReflow = null; - lookupCache = {}; - }); - } - - var closingTimer = null; - var closingTimestamp = 0; - var animationElementQueue = []; - function animationCloseHandler(element, totalTime) { - var node = extractElementNode(element); - element = angular.element(node); - - //this item will be garbage collected by the closing - //animation timeout - animationElementQueue.push(element); - - //but it may not need to cancel out the existing timeout - //if the timestamp is less than the previous one - var futureTimestamp = Date.now() + totalTime; - if (futureTimestamp <= closingTimestamp) { - return; - } - - $timeout.cancel(closingTimer); - - closingTimestamp = futureTimestamp; - closingTimer = $timeout(function() { - closeAllAnimations(animationElementQueue); - animationElementQueue = []; - }, totalTime, false); - } - - function closeAllAnimations(elements) { - forEach(elements, function(element) { - var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (elementData) { - forEach(elementData.closeAnimationFns, function(fn) { - fn(); - }); - } - }); - } - - function getElementAnimationDetails(element, cacheKey) { - var data = cacheKey ? lookupCache[cacheKey] : null; - if (!data) { - var transitionDuration = 0; - var transitionDelay = 0; - var animationDuration = 0; - var animationDelay = 0; - - //we want all the styles defined before and after - forEach(element, function(element) { - if (element.nodeType == ELEMENT_NODE) { - var elementStyles = $window.getComputedStyle(element) || {}; - - var transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY]; - transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration); - - var transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY]; - transitionDelay = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay); - - var animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY]; - animationDelay = Math.max(parseMaxTime(elementStyles[ANIMATION_PROP + DELAY_KEY]), animationDelay); - - var aDuration = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]); - - if (aDuration > 0) { - aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1; - } - animationDuration = Math.max(aDuration, animationDuration); - } - }); - data = { - total: 0, - transitionDelay: transitionDelay, - transitionDuration: transitionDuration, - animationDelay: animationDelay, - animationDuration: animationDuration - }; - if (cacheKey) { - lookupCache[cacheKey] = data; - } - } - return data; - } - - function parseMaxTime(str) { - var maxValue = 0; - var values = isString(str) ? - str.split(/\s*,\s*/) : - []; - forEach(values, function(value) { - maxValue = Math.max(parseFloat(value) || 0, maxValue); - }); - return maxValue; - } - - function getCacheKey(element) { - var parentElement = element.parent(); - var parentID = parentElement.data(NG_ANIMATE_PARENT_KEY); - if (!parentID) { - parentElement.data(NG_ANIMATE_PARENT_KEY, ++parentCounter); - parentID = parentCounter; - } - return parentID + '-' + extractElementNode(element).getAttribute('class'); - } - - function animateSetup(animationEvent, element, className, styles) { - var structural = ['ng-enter','ng-leave','ng-move'].indexOf(className) >= 0; - - var cacheKey = getCacheKey(element); - var eventCacheKey = cacheKey + ' ' + className; - var itemIndex = lookupCache[eventCacheKey] ? ++lookupCache[eventCacheKey].total : 0; - - var stagger = {}; - if (itemIndex > 0) { - var staggerClassName = className + '-stagger'; - var staggerCacheKey = cacheKey + ' ' + staggerClassName; - var applyClasses = !lookupCache[staggerCacheKey]; - - applyClasses && $$jqLite.addClass(element, staggerClassName); - - stagger = getElementAnimationDetails(element, staggerCacheKey); - - applyClasses && $$jqLite.removeClass(element, staggerClassName); - } - - $$jqLite.addClass(element, className); - - var formerData = element.data(NG_ANIMATE_CSS_DATA_KEY) || {}; - var timings = getElementAnimationDetails(element, eventCacheKey); - var transitionDuration = timings.transitionDuration; - var animationDuration = timings.animationDuration; - - if (structural && transitionDuration === 0 && animationDuration === 0) { - $$jqLite.removeClass(element, className); - return false; - } - - var blockTransition = styles || (structural && transitionDuration > 0); - var blockAnimation = animationDuration > 0 && - stagger.animationDelay > 0 && - stagger.animationDuration === 0; - - var closeAnimationFns = formerData.closeAnimationFns || []; - element.data(NG_ANIMATE_CSS_DATA_KEY, { - stagger: stagger, - cacheKey: eventCacheKey, - running: formerData.running || 0, - itemIndex: itemIndex, - blockTransition: blockTransition, - closeAnimationFns: closeAnimationFns - }); - - var node = extractElementNode(element); - - if (blockTransition) { - blockTransitions(node, true); - if (styles) { - element.css(styles); - } - } - - if (blockAnimation) { - blockAnimations(node, true); - } - - return true; - } - - function animateRun(animationEvent, element, className, activeAnimationComplete, styles) { - var node = extractElementNode(element); - var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (node.getAttribute('class').indexOf(className) == -1 || !elementData) { - activeAnimationComplete(); - return; - } - - var activeClassName = ''; - var pendingClassName = ''; - forEach(className.split(' '), function(klass, i) { - var prefix = (i > 0 ? ' ' : '') + klass; - activeClassName += prefix + '-active'; - pendingClassName += prefix + '-pending'; - }); - - var style = ''; - var appliedStyles = []; - var itemIndex = elementData.itemIndex; - var stagger = elementData.stagger; - var staggerTime = 0; - if (itemIndex > 0) { - var transitionStaggerDelay = 0; - if (stagger.transitionDelay > 0 && stagger.transitionDuration === 0) { - transitionStaggerDelay = stagger.transitionDelay * itemIndex; - } - - var animationStaggerDelay = 0; - if (stagger.animationDelay > 0 && stagger.animationDuration === 0) { - animationStaggerDelay = stagger.animationDelay * itemIndex; - appliedStyles.push(CSS_PREFIX + 'animation-play-state'); - } - - staggerTime = Math.round(Math.max(transitionStaggerDelay, animationStaggerDelay) * 100) / 100; - } - - if (!staggerTime) { - $$jqLite.addClass(element, activeClassName); - if (elementData.blockTransition) { - blockTransitions(node, false); - } - } - - var eventCacheKey = elementData.cacheKey + ' ' + activeClassName; - var timings = getElementAnimationDetails(element, eventCacheKey); - var maxDuration = Math.max(timings.transitionDuration, timings.animationDuration); - if (maxDuration === 0) { - $$jqLite.removeClass(element, activeClassName); - animateClose(element, className); - activeAnimationComplete(); - return; - } - - if (!staggerTime && styles && Object.keys(styles).length > 0) { - if (!timings.transitionDuration) { - element.css('transition', timings.animationDuration + 's linear all'); - appliedStyles.push('transition'); - } - element.css(styles); - } - - var maxDelay = Math.max(timings.transitionDelay, timings.animationDelay); - var maxDelayTime = maxDelay * ONE_SECOND; - - if (appliedStyles.length > 0) { - //the element being animated may sometimes contain comment nodes in - //the jqLite object, so we're safe to use a single variable to house - //the styles since there is always only one element being animated - var oldStyle = node.getAttribute('style') || ''; - if (oldStyle.charAt(oldStyle.length - 1) !== ';') { - oldStyle += ';'; - } - node.setAttribute('style', oldStyle + ' ' + style); - } - - var startTime = Date.now(); - var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT; - var animationTime = (maxDelay + maxDuration) * CLOSING_TIME_BUFFER; - var totalTime = (staggerTime + animationTime) * ONE_SECOND; - - var staggerTimeout; - if (staggerTime > 0) { - $$jqLite.addClass(element, pendingClassName); - staggerTimeout = $timeout(function() { - staggerTimeout = null; - - if (timings.transitionDuration > 0) { - blockTransitions(node, false); - } - if (timings.animationDuration > 0) { - blockAnimations(node, false); - } - - $$jqLite.addClass(element, activeClassName); - $$jqLite.removeClass(element, pendingClassName); - - if (styles) { - if (timings.transitionDuration === 0) { - element.css('transition', timings.animationDuration + 's linear all'); - } - element.css(styles); - appliedStyles.push('transition'); - } - }, staggerTime * ONE_SECOND, false); - } - - element.on(css3AnimationEvents, onAnimationProgress); - elementData.closeAnimationFns.push(function() { - onEnd(); - activeAnimationComplete(); - }); - - elementData.running++; - animationCloseHandler(element, totalTime); - return onEnd; - - // This will automatically be called by $animate so - // there is no need to attach this internally to the - // timeout done method. - function onEnd() { - element.off(css3AnimationEvents, onAnimationProgress); - $$jqLite.removeClass(element, activeClassName); - $$jqLite.removeClass(element, pendingClassName); - if (staggerTimeout) { - $timeout.cancel(staggerTimeout); - } - animateClose(element, className); - var node = extractElementNode(element); - for (var i in appliedStyles) { - node.style.removeProperty(appliedStyles[i]); - } - } - - function onAnimationProgress(event) { - event.stopPropagation(); - var ev = event.originalEvent || event; - var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now(); - - /* Firefox (or possibly just Gecko) likes to not round values up - * when a ms measurement is used for the animation */ - var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); - - /* $manualTimeStamp is a mocked timeStamp value which is set - * within browserTrigger(). This is only here so that tests can - * mock animations properly. Real events fallback to event.timeStamp, - * or, if they don't, then a timeStamp is automatically created for them. - * We're checking to see if the timeStamp surpasses the expected delay, - * but we're using elapsedTime instead of the timeStamp on the 2nd - * pre-condition since animations sometimes close off early */ - if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { - activeAnimationComplete(); - } - } - } - - function blockTransitions(node, bool) { - node.style[TRANSITION_PROP + PROPERTY_KEY] = bool ? 'none' : ''; - } - - function blockAnimations(node, bool) { - node.style[ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY] = bool ? 'paused' : ''; - } - - function animateBefore(animationEvent, element, className, styles) { - if (animateSetup(animationEvent, element, className, styles)) { - return function(cancelled) { - cancelled && animateClose(element, className); - }; - } - } - - function animateAfter(animationEvent, element, className, afterAnimationComplete, styles) { - if (element.data(NG_ANIMATE_CSS_DATA_KEY)) { - return animateRun(animationEvent, element, className, afterAnimationComplete, styles); - } else { - animateClose(element, className); - afterAnimationComplete(); - } - } - - function animate(animationEvent, element, className, animationComplete, options) { - //If the animateSetup function doesn't bother returning a - //cancellation function then it means that there is no animation - //to perform at all - var preReflowCancellation = animateBefore(animationEvent, element, className, options.from); - if (!preReflowCancellation) { - clearCacheAfterReflow(); - animationComplete(); - return; - } - - //There are two cancellation functions: one is before the first - //reflow animation and the second is during the active state - //animation. The first function will take care of removing the - //data from the element which will not make the 2nd animation - //happen in the first place - var cancel = preReflowCancellation; - afterReflow(element, function() { - //once the reflow is complete then we point cancel to - //the new cancellation function which will remove all of the - //animation properties from the active animation - cancel = animateAfter(animationEvent, element, className, animationComplete, options.to); - }); - - return function(cancelled) { - (cancel || noop)(cancelled); - }; - } - - function animateClose(element, className) { - $$jqLite.removeClass(element, className); - var data = element.data(NG_ANIMATE_CSS_DATA_KEY); - if (data) { - if (data.running) { - data.running--; - } - if (!data.running || data.running === 0) { - element.removeData(NG_ANIMATE_CSS_DATA_KEY); - } - } - } - - return { - animate: function(element, className, from, to, animationCompleted, options) { - options = options || {}; - options.from = from; - options.to = to; - return animate('animate', element, className, animationCompleted, options); - }, - - enter: function(element, animationCompleted, options) { - options = options || {}; - return animate('enter', element, 'ng-enter', animationCompleted, options); - }, - - leave: function(element, animationCompleted, options) { - options = options || {}; - return animate('leave', element, 'ng-leave', animationCompleted, options); - }, - - move: function(element, animationCompleted, options) { - options = options || {}; - return animate('move', element, 'ng-move', animationCompleted, options); - }, - - beforeSetClass: function(element, add, remove, animationCompleted, options) { - options = options || {}; - var className = suffixClasses(remove, '-remove') + ' ' + - suffixClasses(add, '-add'); - var cancellationMethod = animateBefore('setClass', element, className, options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - beforeAddClass: function(element, className, animationCompleted, options) { - options = options || {}; - var cancellationMethod = animateBefore('addClass', element, suffixClasses(className, '-add'), options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - beforeRemoveClass: function(element, className, animationCompleted, options) { - options = options || {}; - var cancellationMethod = animateBefore('removeClass', element, suffixClasses(className, '-remove'), options.from); - if (cancellationMethod) { - afterReflow(element, animationCompleted); - return cancellationMethod; - } - clearCacheAfterReflow(); - animationCompleted(); - }, - - setClass: function(element, add, remove, animationCompleted, options) { - options = options || {}; - remove = suffixClasses(remove, '-remove'); - add = suffixClasses(add, '-add'); - var className = remove + ' ' + add; - return animateAfter('setClass', element, className, animationCompleted, options.to); - }, - - addClass: function(element, className, animationCompleted, options) { - options = options || {}; - return animateAfter('addClass', element, suffixClasses(className, '-add'), animationCompleted, options.to); - }, - - removeClass: function(element, className, animationCompleted, options) { - options = options || {}; - return animateAfter('removeClass', element, suffixClasses(className, '-remove'), animationCompleted, options.to); - } - }; - - function suffixClasses(classes, suffix) { - var className = ''; - classes = isArray(classes) ? classes : classes.split(/\s+/); - forEach(classes, function(klass, i) { - if (klass && klass.length > 0) { - className += (i > 0 ? ' ' : '') + klass + suffix; - } - }); - return className; - } - }]); - }]); + .provider('$$animateJs', $$AnimateJsProvider) + .provider('$$animateJsDriver', $$AnimateJsDriverProvider); })(window, window.angular); diff --git a/UI/WebServerResources/js/vendor/angular-animate.min.js b/UI/WebServerResources/js/vendor/angular-animate.min.js index a9c6f841b..77179f126 100644 --- a/UI/WebServerResources/js/vendor/angular-animate.min.js +++ b/UI/WebServerResources/js/vendor/angular-animate.min.js @@ -1,33 +1,54 @@ /* - AngularJS v1.3.18 - (c) 2010-2014 Google, Inc. http://angularjs.org + AngularJS v1.4.4 + (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ -(function(N,f,W){'use strict';f.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(X,r,g){g=g.ngAnimateChildren;f.isString(g)&&0===g.length?r.data("$$ngAnimateChildren",!0):X.$watch(g,function(f){r.data("$$ngAnimateChildren",!!f)})}}).factory("$$animateReflow",["$$rAF","$document",function(f,r){var g=r[0].body;return function(r){return f(function(){r(g.offsetWidth)})}}]).config(["$provide","$animateProvider",function(X,r){function g(f){for(var n=0;n=B&&b>=y&&c()}var m=g(e);a=e.data("$$ngAnimateCSS3Data");if(-1!=m.getAttribute("class").indexOf(b)&& -a){var l="",t="";n(b.split(" "),function(a,b){var e=(0=a&&(a=e,e=0,b=b.concat(k),k=[]);k.push(v.fn);l(v.children,function(a){e++;c.push(a)});a--}k.length&&(b=b.concat(k));return b}(c)}var B=[],N=R(a);return function(z,u,t,s){function G(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];l(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function I(a){var b= +[],c={};l(a,function(a,f){var h=D(a.element),d=0<=["enter","move"].indexOf(a.event),h=a.structural?G(h):[];if(h.length){var e=d?"to":"from";l(h,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][e]={animationID:f,element:J(a)}})}else b.push(a)});var f={},d={};l(c,function(c,e){var k=c.from,y=c.to;if(k&&y){var g=a[k.animationID],v=a[y.animationID],q=k.animationID.toString();if(!d[q]){var x=d[q]={beforeStart:function(){g.beforeStart();v.beforeStart()},close:function(){g.close();v.close()}, +classes:n(g.classes,v.classes),from:g,to:v,anchors:[]};x.classes.length?b.push(x):(b.push(g),b.push(v))}d[q].anchors.push({out:k.element,"in":y.element})}else k=k?k.animationID:y.animationID,y=k.toString(),f[y]||(f[y]=!0,b.push(a[k]))});return b}function n(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],f=0;f=O&&b>=L&&(ra=!0,k())}if(!B)if(h.parentNode){var n,x=[],g=function(a){if(ra)u&&a&&(u=!1,k());else if(u=!a,C.animationDuration)if(a=ja(h,u),u)r.push(a);else{var b=r,c=b.indexOf(a);0<=a&&b.splice(c,1)}},q=0 My Content + * ``` + * + * ```css + * [layout] { + * box-sizing: border-box; + * display:flex; + * } + * [layout=column] { + * flex-direction : column + * } + * ``` + * + * Use of attribute selectors creates significant performance impacts in some + * browsers... mainly IE. + * + * This module registers directives that allow the same layout attributes to be + * interpreted and converted to class selectors. The directive will add equivalent classes to each element that + * contains a Layout directive. + * + * ```html + *
My Content
+ *``` + * + * ```css + * .layout { + * box-sizing: border-box; + * display:flex; + * } + * .layout-column { + * flex-direction : column + * } + * ``` + */ + angular.module('material.layout', [ ]) + + // Attribute directives with optional value(s) + + .directive('layout' , attribute_withValue('layout' , true) ) + .directive('layoutSm' , attribute_withValue('layout-sm' , true) ) + .directive('layoutGtSm' , attribute_withValue('layout-gt-sm', true) ) + .directive('layoutMd' , attribute_withValue('layout-md' , true) ) + .directive('layoutGtMd' , attribute_withValue('layout-gt-md', true) ) + .directive('layoutLg' , attribute_withValue('layout-lg' , true) ) + .directive('layoutGtLg' , attribute_withValue('layout-gt-lg', true) ) + + .directive('flex' , attribute_withValue('flex' , true) ) + .directive('flexSm' , attribute_withValue('flex-sm' , true) ) + .directive('flexGtSm' , attribute_withValue('flex-gt-sm' , true) ) + .directive('flexMd' , attribute_withValue('flex-md' , true) ) + .directive('flexGtMd' , attribute_withValue('flex-gt-md' , true) ) + .directive('flexLg' , attribute_withValue('flex-lg' , true) ) + .directive('flexGtLg' , attribute_withValue('flex-gt-lg' , true) ) + + // Attribute directives with optional value(s) but directiveName is NOT added as a class + + .directive('layoutAlign' , attribute_withValue('layout-align') ) + .directive('layoutAlignSm' , attribute_withValue('layout-align-sm') ) + .directive('layoutAlignGtSm' , attribute_withValue('layout-align-gt-sm') ) + .directive('layoutAlignMd' , attribute_withValue('layout-align-md') ) + .directive('layoutAlignGtMd' , attribute_withValue('layout-align-gt-md') ) + .directive('layoutAlignLg' , attribute_withValue('layout-align-lg') ) + .directive('layoutAlignGtLg' , attribute_withValue('layout-align-gt-lg') ) + + .directive('flexOrder' , attribute_withValue('flex-order') ) + .directive('flexOrderSm' , attribute_withValue('flex-order-sm') ) + .directive('flexOrderGtSm' , attribute_withValue('flex-order-gt-sm') ) + .directive('flexOrderMd' , attribute_withValue('flex-order-md') ) + .directive('flexOrderGtMd' , attribute_withValue('flex-order-gt-md') ) + .directive('flexOrderLg' , attribute_withValue('flex-order-lg') ) + .directive('flexOrderGtLg' , attribute_withValue('flex-order-gt-lg') ) + + .directive('offset' , attribute_withValue('offset') ) + .directive('offsetSm' , attribute_withValue('offset-sm') ) + .directive('offsetGtSm' , attribute_withValue('offset-gt-sm') ) + .directive('offsetMd' , attribute_withValue('offset-md') ) + .directive('offsetGtMd' , attribute_withValue('offset-gt-md') ) + .directive('offsetLg' , attribute_withValue('offset-lg') ) + .directive('offsetGtLg' , attribute_withValue('offset-gt-lg') ) + + // Attribute directives with no value(s ) + + .directive('layoutMargin' , attribute_noValue('layout-margin') ) + .directive('layoutPadding' , attribute_noValue('layout-padding') ) + .directive('layoutWrap' , attribute_noValue('layout-wrap') ) + .directive('layoutFill' , attribute_noValue('layout-fill') ) + + .directive('hide' , attribute_noValue('hide') ) + .directive('hideSm' , attribute_noValue('hide-sm') ) + .directive('hideGtSm' , attribute_noValue('hide-gt-sm') ) + .directive('hideMd' , attribute_noValue('hide-md') ) + .directive('hideGtMd' , attribute_noValue('hide-gt-md') ) + .directive('hideLg' , attribute_noValue('hide-lg') ) + .directive('hideGtLg' , attribute_noValue('hide-gt-lg') ) + .directive('show' , attribute_noValue('show') ) + .directive('showSm' , attribute_noValue('show-sm') ) + .directive('showGtSm' , attribute_noValue('show-gt-sm') ) + .directive('showMd' , attribute_noValue('show-md') ) + .directive('showGtMd' , attribute_noValue('show-gt-md') ) + .directive('showLg' , attribute_noValue('show-lg') ) + .directive('showGtLg' , attribute_noValue('show-gt-lg') ); + + /** + * Creates a registration function with for ngMaterial Layout attribute directive + * + * Note: This provides easy translation to switch ngMaterial + * attribute selectors to CLASS selectors and directives. + * + * !! This is important for IE Browser performance + * + * @param classname String attribute name; eg `layout-gt-md` with value ="row" + * @param addDirectiveAsClass Boolean + */ + function attribute_withValue(className, addDirectiveAsClass) { + return [function() { + return { + compile : function (element, attr) { + attributeValueToClass(null, element, attr); + + // !! use for postLink to account for transforms after ng-transclude + return attributeValueToClass; + } + }; + }]; + + /** + * Add as transformed class selector(s), then + * remove the deprecated attribute selector + */ + function attributeValueToClass(scope, element, attr) { + var directive = attr.$normalize(className); + + // Add transformed class selector(s) + if (addDirectiveAsClass) element.addClass(className); + if (attr[directive]) + element.addClass(className + "-" + attr[directive].replace(/\s+/g, "-")); + + try { + element.removeAttr(className); + } catch(e) { } + } + } + + /** + * Creates a registration function with for ngMaterial Layout attribute directive + * + * Simple transpose of attribute usage to class usage + */ + function attribute_noValue(className) { + return [function() { + return { + compile : function (element, attr) { + attributeToClass(null, element); + + // !! use for postLink to account for transforms after ng-transclude + return attributeToClass; + } + }; + }]; + + /** + * Add as transformed class selector, then + * remove the deprecated attribute selector + */ + function attributeToClass(scope, element) { + element.addClass(className); + try { + element.removeAttr(className); + } catch(e) { } + } + } + +})(); + })(); (function(){ "use strict"; @@ -4842,7 +5043,8 @@ if (angular.version.minor >= 4) { */ angular.module('material.components.autocomplete', [ 'material.core', - 'material.components.icon' + 'material.components.icon', + 'material.components.virtualRepeat' ]); })(); @@ -5296,7 +5498,7 @@ function MdButtonDirective($mdButtonInkRipple, $mdTheming, $mdAria, $timeout) { }, 100); }) .on('focus', function() { - if(scope.mouseActive === false) { element.addClass('md-focused'); } + if (scope.mouseActive === false) { element.addClass('md-focused'); } }) .on('blur', function() { element.removeClass('md-focused'); }); } @@ -5679,12 +5881,19 @@ function iosScrollFix(node) { */ var TBODY_HEIGHT = 265; + /** + * Height of a calendar month with a single row. This is needed to calculate the offset for + * rendering an extra month in virtual-repeat that only contains one row. + */ + var TBODY_SINGLE_ROW_HEIGHT = 45; + function calendarDirective() { return { template: '' + '
' + - '' + + '' + '' + '' + '' + '', - scope: {}, + scope: { + minDate: '=mdMinDate', + maxDate: '=mdMaxDate', + }, require: ['ngModel', 'mdCalendar'], controller: CalendarCtrl, controllerAs: 'ctrl', @@ -5732,6 +5944,15 @@ function iosScrollFix(node) { */ this.items = {length: 2000}; + if (this.maxDate && this.minDate) { + // Limit the number of months if min and max dates are set. + var numMonths = $$mdDateUtil.getMonthDistance(this.minDate, this.maxDate) + 1; + numMonths = Math.max(numMonths, 1); + // Add an additional month as the final dummy month for rendering purposes. + numMonths += 1; + this.items.length = numMonths; + } + /** @final {!angular.$animate} */ this.$animate = $animate; @@ -5768,9 +5989,19 @@ function iosScrollFix(node) { /** @final {Date} */ this.today = this.dateUtil.createDateAtMidnight(); - // Set the first renderable date once for all calendar instances. - firstRenderableDate = - firstRenderableDate || this.dateUtil.incrementMonths(this.today, -this.items.length / 2); + /** @type {Date} */ + this.firstRenderableDate = this.dateUtil.incrementMonths(this.today, -this.items.length / 2); + + if (this.minDate && this.minDate > this.firstRenderableDate) { + this.firstRenderableDate = this.minDate; + } else if (this.maxDate) { + // Calculate the difference between the start date and max date. + // Subtract 1 because it's an inclusive difference and 1 for the final dummy month. + // + var monthDifference = this.items.length - 2; + this.firstRenderableDate = this.dateUtil.incrementMonths(this.maxDate, -(this.items.length - 2)); + } + /** @final {number} Unique ID for this calendar instance. */ this.id = nextUniqueId++; @@ -5925,6 +6156,7 @@ function iosScrollFix(node) { // Selection isn't occuring, so the key event is either navigation or nothing. var date = self.getFocusDateFromKeyEvent(event); if (date) { + date = self.boundDateByMinAndMax(date); event.preventDefault(); event.stopPropagation(); @@ -5970,7 +6202,8 @@ function iosScrollFix(node) { * @returns {number} */ CalendarCtrl.prototype.getSelectedMonthIndex = function() { - return this.dateUtil.getMonthDistance(firstRenderableDate, this.selectedDate || this.today); + return this.dateUtil.getMonthDistance(this.firstRenderableDate, + this.selectedDate || this.today); }; /** @@ -5982,7 +6215,7 @@ function iosScrollFix(node) { return; } - var monthDistance = this.dateUtil.getMonthDistance(firstRenderableDate, date); + var monthDistance = this.dateUtil.getMonthDistance(this.firstRenderableDate, date); this.calendarScroller.scrollTop = monthDistance * TBODY_HEIGHT; }; @@ -6018,6 +6251,23 @@ function iosScrollFix(node) { } }; + /** + * If a date exceeds minDate or maxDate, returns date matching minDate or maxDate, respectively. + * Otherwise, returns the date. + * @param {Date} date + * @return {Date} + */ + CalendarCtrl.prototype.boundDateByMinAndMax = function(date) { + var boundDate = date; + if (this.minDate && date < this.minDate) { + boundDate = new Date(this.minDate.getTime()); + } + if (this.maxDate && date > this.maxDate) { + boundDate = new Date(this.maxDate.getTime()); + } + return boundDate; + }; + /*** Updating the displayed / selected date ***/ /** @@ -6208,8 +6458,7 @@ function iosScrollFix(node) { /** Generate and append the content for this month to the directive element. */ CalendarMonthCtrl.prototype.generateContent = function() { var calendarCtrl = this.calendarCtrl; - var offset = (-calendarCtrl.items.length / 2) + this.offset; - var date = this.dateUtil.incrementMonths(calendarCtrl.today, offset); + var date = this.dateUtil.incrementMonths(calendarCtrl.firstRenderableDate, this.offset); this.$element.empty(); this.$element.append(this.buildCalendarForMonth(date)); @@ -6238,16 +6487,9 @@ function iosScrollFix(node) { cell.setAttribute('role', 'gridcell'); if (opt_date) { - // Add a indicator for select, hover, and focus states. - var selectionIndicator = document.createElement('span'); - cell.appendChild(selectionIndicator); - selectionIndicator.classList.add('md-calendar-date-selection-indicator'); - selectionIndicator.textContent = this.dateLocale.dates[opt_date.getDate()]; - cell.setAttribute('tabindex', '-1'); cell.setAttribute('aria-label', this.dateLocale.longDateFormatter(opt_date)); cell.id = calendarCtrl.getDateId(opt_date); - cell.addEventListener('click', calendarCtrl.cellClickHandler); // Use `data-timestamp` attribute because IE10 does not support the `dataset` property. cell.setAttribute('data-timestamp', opt_date.getTime()); @@ -6264,8 +6506,24 @@ function iosScrollFix(node) { cell.setAttribute('aria-selected', 'true'); } - if (calendarCtrl.focusDate && this.dateUtil.isSameDay(opt_date, calendarCtrl.focusDate)) { - this.focusAfterAppend = cell; + var cellText = this.dateLocale.dates[opt_date.getDate()]; + + if (this.dateUtil.isDateWithinRange(opt_date, + this.calendarCtrl.minDate, this.calendarCtrl.maxDate)) { + // Add a indicator for select, hover, and focus states. + var selectionIndicator = document.createElement('span'); + cell.appendChild(selectionIndicator); + selectionIndicator.classList.add('md-calendar-date-selection-indicator'); + selectionIndicator.textContent = cellText; + + cell.addEventListener('click', calendarCtrl.cellClickHandler); + + if (calendarCtrl.focusDate && this.dateUtil.isSameDay(opt_date, calendarCtrl.focusDate)) { + this.focusAfterAppend = cell; + } + } else { + cell.classList.add('md-calendar-date-disabled'); + cell.textContent = cellText; } } @@ -6308,26 +6566,38 @@ function iosScrollFix(node) { var row = this.buildDateRow(rowNumber); monthBody.appendChild(row); + // If this is the final month in the list of items, only the first week should render, + // so we should return immediately after the first row is complete and has been + // attached to the body. + var isFinalMonth = this.offset === this.calendarCtrl.items.length - 1; + // Add a label for the month. If the month starts on a Sun/Mon/Tues, the month label // goes on a row above the first of the month. Otherwise, the month label takes up the first // two cells of the first row. var blankCellOffset = 0; var monthLabelCell = document.createElement('td'); monthLabelCell.classList.add('md-calendar-month-label'); + // If the entire month is after the max date, render the label as a disabled state. + if (this.calendarCtrl.maxDate && firstDayOfMonth > this.calendarCtrl.maxDate) { + monthLabelCell.classList.add('md-calendar-month-label-disabled'); + } + monthLabelCell.textContent = this.dateLocale.monthHeaderFormatter(date); if (firstDayOfTheWeek <= 2) { monthLabelCell.setAttribute('colspan', '7'); var monthLabelRow = this.buildDateRow(); monthLabelRow.appendChild(monthLabelCell); monthBody.insertBefore(monthLabelRow, row); + + if (isFinalMonth) { + return monthBody; + } } else { blankCellOffset = 2; monthLabelCell.setAttribute('colspan', '2'); row.appendChild(monthLabelCell); } - monthLabelCell.textContent = this.dateLocale.monthHeaderFormatter(date); - // Add a blank cell for each day of the week that occurs before the first of the month. // For example, if the first day of the month is a Tuesday, add blank cells for Sun and Mon. // The blankCellOffset is needed in cases where the first N cells are used by the month label. @@ -6342,6 +6612,10 @@ function iosScrollFix(node) { for (var d = 1; d <= numberOfDaysInMonth; d++) { // If we've reached the end of the week, start a new row. if (dayOfWeek === 7) { + // We've finished the first row, so we're done if this is the final month. + if (isFinalMonth) { + return monthBody; + } dayOfWeek = 0; rowNumber++; row = this.buildDateRow(rowNumber); @@ -6658,6 +6932,8 @@ function iosScrollFix(node) { * * @param {Date} ng-model The component's model. Expects a JavaScript Date object. * @param {expression=} ng-change Expression evaluated when the model value changes. + * @param {expression=} md-min-date Expression representing a min date (inclusive). + * @param {expression=} md-max-date Expression representing a max date (inclusive). * @param {boolean=} disabled Whether the datepicker is disabled. * * @description @@ -6701,11 +6977,15 @@ function iosScrollFix(node) { '' + '
' + '' + + 'md-min-date="ctrl.minDate" md-max-date="ctrl.maxDate"' + + 'ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen">' + + '' + '
' + '', require: ['ngModel', 'mdDatepicker'], scope: { + minDate: '=mdMinDate', + maxDate: '=mdMaxDate', placeholder: '@mdPlaceholder' }, controller: DatePickerCtrl, @@ -6763,6 +7043,9 @@ function iosScrollFix(node) { /** @type {HTMLInputElement} */ this.inputElement = $element[0].querySelector('input'); + /** @final {!angular.JQLite} */ + this.ngInputElement = angular.element(this.inputElement); + /** @type {HTMLElement} */ this.inputContainer = $element[0].querySelector('.md-datepicker-input-container'); @@ -6864,10 +7147,9 @@ function iosScrollFix(node) { self.inputContainer.classList.remove(INVALID_CLASS); }); - var ngElement = angular.element(self.inputElement); - ngElement.on('input', angular.bind(self, self.resizeInputElement)); + self.ngInputElement.on('input', angular.bind(self, self.resizeInputElement)); // TODO(chenmike): Add ability for users to specify this interval. - ngElement.on('input', self.$mdUtil.debounce(self.handleInputEvent, + self.ngInputElement.on('input', self.$mdUtil.debounce(self.handleInputEvent, DEFAULT_DEBOUNCE_INTERVAL, self)); }; @@ -6878,7 +7160,7 @@ function iosScrollFix(node) { var keyCodes = this.$mdConstant.KEY_CODE; // Add event listener through angular so that we can triggerHandler in unit tests. - angular.element(self.inputElement).on('keydown', function(event) { + self.ngInputElement.on('keydown', function(event) { if (event.altKey && event.keyCode == keyCodes.DOWN_ARROW) { self.openCalendarPane(event); $scope.$digest(); @@ -6935,8 +7217,11 @@ function iosScrollFix(node) { DatePickerCtrl.prototype.handleInputEvent = function() { var inputString = this.inputElement.value; var parsedDate = this.dateLocale.parseDate(inputString); + this.dateUtil.setDateTimeToMidnight(parsedDate); - if (this.dateUtil.isValidDate(parsedDate) && this.dateLocale.isDateComplete(inputString)) { + if (this.dateUtil.isValidDate(parsedDate) && + this.dateLocale.isDateComplete(inputString) && + this.dateUtil.isDateWithinRange(parsedDate, this.minDate, this.maxDate)) { this.ngModelCtrl.$setViewValue(parsedDate); this.date = parsedDate; this.inputContainer.classList.remove(INVALID_CLASS); @@ -7088,7 +7373,9 @@ function iosScrollFix(node) { isSameDay: isSameDay, getMonthDistance: getMonthDistance, isValidDate: isValidDate, - createDateAtMidnight: createDateAtMidnight + setDateTimeToMidnight: setDateTimeToMidnight, + createDateAtMidnight: createDateAtMidnight, + isDateWithinRange: isDateWithinRange }; /** @@ -7254,6 +7541,14 @@ function iosScrollFix(node) { return date != null && date.getTime && !isNaN(date.getTime()); } + /** + * Sets a date's time to midnight. + * @param {Date} date + */ + function setDateTimeToMidnight(date) { + date.setHours(0, 0, 0, 0); + } + /** * Creates a date with the time set to midnight. * Drop-in replacement for two forms of the Date constructor: @@ -7269,9 +7564,21 @@ function iosScrollFix(node) { } else { date = new Date(opt_value); } - date.setHours(0, 0, 0, 0); + setDateTimeToMidnight(date); return date; } + + /** + * Checks if a date is within a min and max range. + * If minDate or maxDate are not dates, they are ignored. + * @param {Date} date + * @param {Date} minDate + * @param {Date} maxDate + */ + function isDateWithinRange(date, minDate, maxDate) { + return (!angular.isDate(minDate) || minDate <= date) && + (!angular.isDate(maxDate) || maxDate >= date); + } }); })(); @@ -9754,810 +10061,7 @@ function GridTileCaptionDirective() { */ angular.module('material.components.icon', [ 'material.core' - ]) - .directive('mdIcon', mdIconDirective); - -/** - * @ngdoc directive - * @name mdIcon - * @module material.components.icon - * - * @restrict E - * - * @description - * The `md-icon` directive makes it easier to use vector-based icons in your app (as opposed to - * raster-based icons types like PNG). The directive supports both icon fonts and SVG icons. - * - * Icons should be consider view-only elements that should not be used directly as buttons; instead nest a `` - * inside a `md-button` to add hover and click features. - * - * ### Icon fonts - * Icon fonts are a technique in which you use a font where the glyphs in the font are - * your icons instead of text. Benefits include a straightforward way to bundle everything into a - * single HTTP request, simple scaling, easy color changing, and more. - * - * `md-icon` let's you consume an icon font by letting you reference specific icons in that font - * by name rather than character code. - * - * ### SVG - * For SVGs, the problem with using `` or a CSS `background-image` is that you can't take - * advantage of some SVG features, such as styling specific parts of the icon with CSS or SVG - * animation. - * - * `md-icon` makes it easier to use SVG icons by *inlining* the SVG into an `` element in the - * document. The most straightforward way of referencing an SVG icon is via URL, just like a - * traditional ``. `$mdIconProvider`, as a convenience, let's you _name_ an icon so you can - * reference it by name instead of URL throughout your templates. - * - * Additionally, you may not want to make separate HTTP requests for every icon, so you can bundle - * your SVG icons together and pre-load them with $mdIconProvider as an icon set. An icon set can - * also be given a name, which acts as a namespace for individual icons, so you can reference them - * like `"social:cake"`. - * - * When using SVGs, both external SVGs (via URLs) or sets of SVGs [from icon sets] can be - * easily loaded and used.When use font-icons, developers must following three (3) simple steps: - * - *
    - *
  1. Load the font library. e.g.
    - * <link href="https://fonts.googleapis.com/icon?family=Material+Icons" - * rel="stylesheet"> - *
  2. - *
  3. Use either (a) font-icon class names or (b) font ligatures to render the font glyph by using its textual name
  4. - *
  5. Use <md-icon md-font-icon="classname" /> or
    - * use <md-icon md-font-set="font library classname or alias"> textual_name </md-icon> or
    - * use <md-icon md-font-set="font library classname or alias"> numerical_character_reference </md-icon> - *
  6. - *
- * - * Full details for these steps can be found: - * - *
    - *
  • http://google.github.io/material-design-icons/
  • - *
  • http://google.github.io/material-design-icons/#icon-font-for-the-web
  • - *
- * - * The Material Design icon style .material-icons and the icon font references are published in - * Material Design Icons: - * - *
    - *
  • http://www.google.com/design/icons/
  • - *
  • https://www.google.com/design/icons/#ic_accessibility
  • - *
- * - *

Material Design Icons

- * Using the Material Design Icon-Selector, developers can easily and quickly search for a Material Design font-icon and - * determine its textual name and character reference code. Click on any icon to see the slide-up information - * panel with details regarding a SVG download or information on the font-icon usage. - * - * - * - * - * - * - * Click on the image above to link to the - * Material Design Icon-Selector. - * - * - * @param {string} md-font-icon String name of CSS icon associated with the font-face will be used - * to render the icon. Requires the fonts and the named CSS styles to be preloaded. - * @param {string} md-font-set CSS style name associated with the font library; which will be assigned as - * the class for the font-icon ligature. This value may also be an alias that is used to lookup the classname; - * internally use `$mdIconProvider.fontSet()` to determine the style name. - * @param {string} md-svg-src String URL (or expression) used to load, cache, and display an - * external SVG. - * @param {string} md-svg-icon md-svg-icon String name used for lookup of the icon from the internal cache; - * interpolated strings or expressions may also be used. Specific set names can be used with - * the syntax `:`.

- * To use icon sets, developers are required to pre-register the sets using the `$mdIconProvider` service. - * @param {string=} aria-label Labels icon for accessibility. If an empty string is provided, icon - * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no aria-label on the icon - * nor a label on the parent element, a warning will be logged to the console. - * @param {string=} alt Labels icon for accessibility. If an empty string is provided, icon - * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no alt on the icon - * nor a label on the parent element, a warning will be logged to the console. * - * @usage - * When using SVGs: - * - * - * - * - * - * - * - * - * - * - * - * Use the $mdIconProvider to configure your application with - * svg iconsets. - * - * - * angular.module('appSvgIconSets', ['ngMaterial']) - * .controller('DemoCtrl', function($scope) {}) - * .config(function($mdIconProvider) { - * $mdIconProvider - * .iconSet('social', 'img/icons/sets/social-icons.svg', 24) - * .defaultIconSet('img/icons/sets/core-icons.svg', 24); - * }); - * - * - * - * When using Font Icons with classnames: - * - * - * - * - * - * - * - * When using Material Font Icons with ligatures: - * - * - * - * face - * face - * #xE87C; - * - * face - * - * - * When using other Font-Icon libraries: - * - * - * // Specify a font-icon style alias - * angular.config(function($mdIconProvider) { - * $mdIconProvider.fontSet('fa', 'fontawesome'); - * }); - * - * - * - * email - * - * - */ -function mdIconDirective($mdIcon, $mdTheming, $mdAria ) { - - return { - scope: { - fontSet : '@mdFontSet', - fontIcon: '@mdFontIcon', - svgIcon : '@mdSvgIcon', - svgSrc : '@mdSvgSrc' - }, - restrict: 'E', - link : postLink - }; - - - /** - * Directive postLink - * Supports embedded SVGs, font-icons, & external SVGs - */ - function postLink(scope, element, attr) { - $mdTheming(element); - - prepareForFontIcon(); - - // If using a font-icon, then the textual name of the icon itself - // provides the aria-label. - - var label = attr.alt || scope.fontIcon || scope.svgIcon || element.text(); - var attrName = attr.$normalize(attr.$attr.mdSvgIcon || attr.$attr.mdSvgSrc || ''); - - if ( !attr['aria-label'] ) { - - if (label != '' && !parentsHaveText() ) { - - $mdAria.expect(element, 'aria-label', label); - $mdAria.expect(element, 'role', 'img'); - - } else if ( !element.text() ) { - // If not a font-icon with ligature, then - // hide from the accessibility layer. - - $mdAria.expect(element, 'aria-hidden', 'true'); - } - } - - if (attrName) { - // Use either pre-configured SVG or URL source, respectively. - attr.$observe(attrName, function(attrVal) { - - element.empty(); - if (attrVal) { - $mdIcon(attrVal).then(function(svg) { - element.append(svg); - }); - } - - }); - } - - function parentsHaveText() { - var parent = element.parent(); - if (parent.attr('aria-label') || parent.text()) { - return true; - } - else if(parent.parent().attr('aria-label') || parent.parent().text()) { - return true; - } - return false; - } - - function prepareForFontIcon () { - if (!scope.svgIcon && !scope.svgSrc) { - - if (scope.fontIcon) { - element.addClass('md-font ' + scope.fontIcon); - } - - if (scope.fontSet) { - element.addClass($mdIcon.fontSet(scope.fontSet)); - } - - if (shouldUseDefaultFontSet()) { - element.addClass($mdIcon.fontSet()); - } - - } - - function shouldUseDefaultFontSet() { - return !scope.fontIcon && !scope.fontSet; - } - } - } -} -mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria"]; - -})(); -(function(){ -"use strict"; - - angular - .module('material.components.icon' ) - .provider('$mdIcon', MdIconProvider); - - /** - * @ngdoc service - * @name $mdIconProvider - * @module material.components.icon - * - * @description - * `$mdIconProvider` is used only to register icon IDs with URLs. These configuration features allow - * icons and icon sets to be pre-registered and associated with source URLs **before** the `` - * directives are compiled. - * - * If using font-icons, the developer is repsonsible for loading the fonts. - * - * If using SVGs, loading of the actual svg files are deferred to on-demand requests and are loaded - * internally by the `$mdIcon` service using the `$http` service. When an SVG is requested by name/ID, - * the `$mdIcon` service searches its registry for the associated source URL; - * that URL is used to on-demand load and parse the SVG dynamically. - * - * @usage - * - * app.config(function($mdIconProvider) { - * - * // Configure URLs for icons specified by [set:]id. - * - * $mdIconProvider - * .defaultFontSet( 'fontawesome' ) - * .defaultIconSet('my/app/icons.svg') // Register a default set of SVG icons - * .iconSet('social', 'my/app/social.svg') // Register a named icon set of SVGs - * .icon('android', 'my/app/android.svg') // Register a specific icon (by name) - * .icon('work:chair', 'my/app/chair.svg'); // Register icon in a specific set - * }); - * - * - * SVG icons and icon sets can be easily pre-loaded and cached using either (a) a build process or (b) a runtime - * **startup** process (shown below): - * - * - * app.config(function($mdIconProvider) { - * - * // Register a default set of SVG icon definitions - * $mdIconProvider.defaultIconSet('my/app/icons.svg') - * - * }) - * .run(function($http, $templateCache){ - * - * // Pre-fetch icons sources by URL and cache in the $templateCache... - * // subsequent $http calls will look there first. - * - * var urls = [ 'imy/app/icons.svg', 'img/icons/android.svg']; - * - * angular.forEach(urls, function(url) { - * $http.get(url, {cache: $templateCache}); - * }); - * - * }); - * - * - * - * NOTE: the loaded SVG data is subsequently cached internally for future requests. - * - */ - - /** - * @ngdoc method - * @name $mdIconProvider#icon - * - * @description - * Register a source URL for a specific icon name; the name may include optional 'icon set' name prefix. - * These icons will later be retrieved from the cache using `$mdIcon( )` - * - * @param {string} id Icon name/id used to register the icon - * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the - * data or as part of the lookup in `$templateCache` if pre-loading was configured. - * @param {number=} viewBoxSize Sets the width and height the icon's viewBox. - * It is ignored for icons with an existing viewBox. Default size is 24. - * - * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API - * - * @usage - * - * app.config(function($mdIconProvider) { - * - * // Configure URLs for icons specified by [set:]id. - * - * $mdIconProvider - * .icon('android', 'my/app/android.svg') // Register a specific icon (by name) - * .icon('work:chair', 'my/app/chair.svg'); // Register icon in a specific set - * }); - * - * - */ - /** - * @ngdoc method - * @name $mdIconProvider#iconSet - * - * @description - * Register a source URL for a 'named' set of icons; group of SVG definitions where each definition - * has an icon id. Individual icons can be subsequently retrieved from this cached set using - * `$mdIcon(:)` - * - * @param {string} id Icon name/id used to register the iconset - * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the - * data or as part of the lookup in `$templateCache` if pre-loading was configured. - * @param {number=} viewBoxSize Sets the width and height of the viewBox of all icons in the set. - * It is ignored for icons with an existing viewBox. All icons in the icon set should be the same size. - * Default value is 24. - * - * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API - * - * - * @usage - * - * app.config(function($mdIconProvider) { - * - * // Configure URLs for icons specified by [set:]id. - * - * $mdIconProvider - * .iconSet('social', 'my/app/social.svg') // Register a named icon set - * }); - * - * - */ - /** - * @ngdoc method - * @name $mdIconProvider#defaultIconSet - * - * @description - * Register a source URL for the default 'named' set of icons. Unless explicitly registered, - * subsequent lookups of icons will failover to search this 'default' icon set. - * Icon can be retrieved from this cached, default set using `$mdIcon()` - * - * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the - * data or as part of the lookup in `$templateCache` if pre-loading was configured. - * @param {number=} viewBoxSize Sets the width and height of the viewBox of all icons in the set. - * It is ignored for icons with an existing viewBox. All icons in the icon set should be the same size. - * Default value is 24. - * - * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API - * - * @usage - * - * app.config(function($mdIconProvider) { - * - * // Configure URLs for icons specified by [set:]id. - * - * $mdIconProvider - * .defaultIconSet( 'my/app/social.svg' ) // Register a default icon set - * }); - * - * - */ - /** - * @ngdoc method - * @name $mdIconProvider#defaultFontSet - * - * @description - * When using Font-Icons, Angular Material assumes the the Material Design icons will be used and automatically - * configures the default font-set == 'material-icons'. Note that the font-set references the font-icon library - * class style that should be applied to the ``. - * - * Configuring the default means that the attributes - * `md-font-set="material-icons"` or `class="material-icons"` do not need to be explicitly declared on the - * `` markup. For example: - * - * ` face ` - * will render as - * ` face `, and - * - * ` face ` - * will render as - * ` face ` - * - * @param {string} name of the font-library style that should be applied to the md-icon DOM element - * - * @usage - * - * app.config(function($mdIconProvider) { - * $mdIconProvider.defaultFontSet( 'fontawesome' ); - * }); - * - * - */ - - /** - * @ngdoc method - * @name $mdIconProvider#defaultViewBoxSize - * - * @description - * While `` markup can also be style with sizing CSS, this method configures - * the default width **and** height used for all icons; unless overridden by specific CSS. - * The default sizing is (24px, 24px). - * @param {number=} viewBoxSize Sets the width and height of the viewBox for an icon or an icon set. - * All icons in a set should be the same size. The default value is 24. - * - * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API - * - * @usage - * - * app.config(function($mdIconProvider) { - * - * // Configure URLs for icons specified by [set:]id. - * - * $mdIconProvider - * .defaultViewBoxSize(36) // Register a default icon size (width == height) - * }); - * - * - */ - - var config = { - defaultViewBoxSize: 24, - defaultFontSet: 'material-icons', - fontSets : [ ] - }; - - function MdIconProvider() { } - - MdIconProvider.prototype = { - icon : function (id, url, viewBoxSize) { - if ( id.indexOf(':') == -1 ) id = '$default:' + id; - - config[id] = new ConfigurationItem(url, viewBoxSize ); - return this; - }, - - iconSet : function (id, url, viewBoxSize) { - config[id] = new ConfigurationItem(url, viewBoxSize ); - return this; - }, - - defaultIconSet : function (url, viewBoxSize) { - var setName = '$default'; - - if ( !config[setName] ) { - config[setName] = new ConfigurationItem(url, viewBoxSize ); - } - - config[setName].viewBoxSize = viewBoxSize || config.defaultViewBoxSize; - - return this; - }, - - defaultViewBoxSize : function (viewBoxSize) { - config.defaultViewBoxSize = viewBoxSize; - return this; - }, - - /** - * Register an alias name associated with a font-icon library style ; - */ - fontSet : function fontSet(alias, className) { - config.fontSets.push({ - alias : alias, - fontSet : className || alias - }); - return this; - }, - - /** - * Specify a default style name associated with a font-icon library - * fallback to Material Icons. - * - */ - defaultFontSet : function defaultFontSet(className) { - config.defaultFontSet = !className ? '' : className; - return this; - }, - - defaultIconSize : function defaultIconSize(iconSize) { - config.defaultIconSize = iconSize; - return this; - }, - - preloadIcons: function ($templateCache) { - var iconProvider = this; - var svgRegistry = [ - { - id : 'md-tabs-arrow', - url: 'md-tabs-arrow.svg', - svg: '' - }, - { - id : 'md-close', - url: 'md-close.svg', - svg: '' - }, - { - id: 'md-cancel', - url: 'md-cancel.svg', - svg: '' - }, - { - id: 'md-menu', - url: 'md-menu.svg', - svg: '' - }, - { - id: 'md-toggle-arrow', - url: 'md-toggle-arrow-svg', - svg: '' - }, - { - id: 'md-calendar', - url: 'md-calendar.svg', - svg: '' - } - ]; - - svgRegistry.forEach(function(asset){ - iconProvider.icon(asset.id, asset.url); - $templateCache.put(asset.url, asset.svg); - }); - - }, - - $get : ['$http', '$q', '$log', '$templateCache', function($http, $q, $log, $templateCache) { - this.preloadIcons($templateCache); - return MdIconService(config, $http, $q, $log, $templateCache); - }] - }; - - /** - * Configuration item stored in the Icon registry; used for lookups - * to load if not already cached in the `loaded` cache - */ - function ConfigurationItem(url, viewBoxSize) { - this.url = url; - this.viewBoxSize = viewBoxSize || config.defaultViewBoxSize; - } - - /** - * @ngdoc service - * @name $mdIcon - * @module material.components.icon - * - * @description - * The `$mdIcon` service is a function used to lookup SVG icons. - * - * @param {string} id Query value for a unique Id or URL. If the argument is a URL, then the service will retrieve the icon element - * from its internal cache or load the icon and cache it first. If the value is not a URL-type string, then an ID lookup is - * performed. The Id may be a unique icon ID or may include an iconSet ID prefix. - * - * For the **id** query to work properly, this means that all id-to-URL mappings must have been previously configured - * using the `$mdIconProvider`. - * - * @returns {obj} Clone of the initial SVG DOM element; which was created from the SVG markup in the SVG data file. - * - * @usage - * - * function SomeDirective($mdIcon) { - * - * // See if the icon has already been loaded, if not - * // then lookup the icon from the registry cache, load and cache - * // it for future requests. - * // NOTE: ID queries require configuration with $mdIconProvider - * - * $mdIcon('android').then(function(iconEl) { element.append(iconEl); }); - * $mdIcon('work:chair').then(function(iconEl) { element.append(iconEl); }); - * - * // Load and cache the external SVG using a URL - * - * $mdIcon('img/icons/android.svg').then(function(iconEl) { - * element.append(iconEl); - * }); - * }; - * - * - * NOTE: The ` ` directive internally uses the `$mdIcon` service to query, loaded, and instantiate - * SVG DOM elements. - */ - function MdIconService(config, $http, $q, $log, $templateCache) { - var iconCache = {}; - var urlRegex = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i; - - Icon.prototype = { clone : cloneSVG, prepare: prepareAndStyle }; - getIcon.fontSet = findRegisteredFontSet; - - // Publish service... - return getIcon; - - /** - * Actual $mdIcon service is essentially a lookup function - */ - function getIcon(id) { - id = id || ''; - - // If already loaded and cached, use a clone of the cached icon. - // Otherwise either load by URL, or lookup in the registry and then load by URL, and cache. - - if ( iconCache[id] ) return $q.when( iconCache[id].clone() ); - if ( urlRegex.test(id) ) return loadByURL(id).then( cacheIcon(id) ); - if ( id.indexOf(':') == -1 ) id = '$default:' + id; - - var load = config[id] ? loadByID : loadFromIconSet; - return load(id) - .then( cacheIcon(id) ); - } - - /** - * Lookup registered fontSet style using its alias... - * If not found, - */ - function findRegisteredFontSet(alias) { - var useDefault = angular.isUndefined(alias) || !(alias && alias.length); - if ( useDefault ) return config.defaultFontSet; - - var result = alias; - angular.forEach(config.fontSets, function(it){ - if ( it.alias == alias ) result = it.fontSet || result; - }); - - return result; - } - - /** - * Prepare and cache the loaded icon for the specified `id` - */ - function cacheIcon( id ) { - - return function updateCache( icon ) { - iconCache[id] = isIcon(icon) ? icon : new Icon(icon, config[id]); - - return iconCache[id].clone(); - }; - } - - /** - * Lookup the configuration in the registry, if !registered throw an error - * otherwise load the icon [on-demand] using the registered URL. - * - */ - function loadByID(id) { - var iconConfig = config[id]; - return loadByURL(iconConfig.url).then(function(icon) { - return new Icon(icon, iconConfig); - }); - } - - /** - * Loads the file as XML and uses querySelector( ) to find - * the desired node... - */ - function loadFromIconSet(id) { - var setName = id.substring(0, id.lastIndexOf(':')) || '$default'; - var iconSetConfig = config[setName]; - - return !iconSetConfig ? announceIdNotFound(id) : loadByURL(iconSetConfig.url).then(extractFromSet); - - function extractFromSet(set) { - var iconName = id.slice(id.lastIndexOf(':') + 1); - var icon = set.querySelector('#' + iconName); - return !icon ? announceIdNotFound(id) : new Icon(icon, iconSetConfig); - } - - function announceIdNotFound(id) { - var msg = 'icon ' + id + ' not found'; - $log.warn(msg); - - return $q.reject(msg || id); - } - } - - /** - * Load the icon by URL (may use the $templateCache). - * Extract the data for later conversion to Icon - */ - function loadByURL(url) { - return $http - .get(url, { cache: $templateCache }) - .then(function(response) { - return angular.element('
').append(response.data).find('svg')[0]; - }).catch(announceNotFound); - } - - /** - * Catch HTTP or generic errors not related to incorrect icon IDs. - */ - function announceNotFound(err) { - var msg = angular.isString(err) ? err : (err.message || err.data || err.statusText); - $log.warn(msg); - - return $q.reject(msg); - } - - /** - * Check target signature to see if it is an Icon instance. - */ - function isIcon(target) { - return angular.isDefined(target.element) && angular.isDefined(target.config); - } - - /** - * Define the Icon class - */ - function Icon(el, config) { - if (el.tagName != 'svg') { - el = angular.element('').append(el)[0]; - } - - // Inject the namespace if not available... - if ( !el.getAttribute('xmlns') ) { - el.setAttribute('xmlns', "http://www.w3.org/2000/svg"); - } - - this.element = el; - this.config = config; - this.prepare(); - } - - /** - * Prepare the DOM element that will be cached in the - * loaded iconCache store. - */ - function prepareAndStyle() { - var viewBoxSize = this.config ? this.config.viewBoxSize : config.defaultViewBoxSize; - angular.forEach({ - 'fit' : '', - 'height': '100%', - 'width' : '100%', - 'preserveAspectRatio': 'xMidYMid meet', - 'viewBox' : this.element.getAttribute('viewBox') || ('0 0 ' + viewBoxSize + ' ' + viewBoxSize) - }, function(val, attr) { - this.element.setAttribute(attr, val); - }, this); - - angular.forEach({ - 'pointer-events' : 'none', - 'display' : 'block' - }, function(val, style) { - this.element.style[style] = val; - }, this); - } - - /** - * Clone the Icon DOM element. - */ - function cloneSVG(){ - return this.element.cloneNode(true); - } - - } + ]); })(); (function(){ @@ -11259,735 +10763,21 @@ MdListController.$inject = ["$scope", "$element", "$mdListInkRipple"]; angular.module('material.components.menu', [ 'material.core', 'material.components.backdrop' -]) -.directive('mdMenu', MenuDirective) -.controller('mdMenuCtrl', MenuController); - -/** - * @ngdoc directive - * @name mdMenu - * @module material.components.menu - * @restrict E - * @description - * - * Menus are elements that open when clicked. They are useful for displaying - * additional options within the context of an action. - * - * Every `md-menu` must specify exactly two child elements. The first element is what is - * left in the DOM and is used to open the menu. This element is called the trigger element. - * The trigger element's scope has access to `$mdOpenMenu($event)` - * which it may call to open the menu. By passing $event as argument, the - * corresponding event is stopped from propagating up the DOM-tree. - * - * The second element is the `md-menu-content` element which represents the - * contents of the menu when it is open. Typically this will contain `md-menu-item`s, - * but you can do custom content as well. - * - * - * - * - * - * - * - * - * Do Something - * - * - * - - * ## Sizing Menus - * - * The width of the menu when it is open may be specified by specifying a `width` - * attribute on the `md-menu-content` element. - * See the [Material Design Spec](http://www.google.com/design/spec/components/menus.html#menus-specs) - * for more information. - * - * - * ## Aligning Menus - * - * When a menu opens, it is important that the content aligns with the trigger element. - * Failure to align menus can result in jarring experiences for users as content - * suddenly shifts. To help with this, `md-menu` provides serveral APIs to help - * with alignment. - * - * ### Target Mode - * - * By default, `md-menu` will attempt to align the `md-menu-content` by aligning - * designated child elements in both the trigger and the menu content. - * - * To specify the alignment element in the `trigger` you can use the `md-menu-origin` - * attribute on a child element. If no `md-menu-origin` is specified, the `md-menu` - * will be used as the origin element. - * - * Similarly, the `md-menu-content` may specify a `md-menu-align-target` for a - * `md-menu-item` to specify the node that it should try and align with. - * - * In this example code, we specify an icon to be our origin element, and an - * icon in our menu content to be our alignment target. This ensures that both - * icons are aligned when the menu opens. - * - * - * - * - * - * - * - * - * - * - * Do Something - * - * - * - * - * - * - * Sometimes we want to specify alignment on the right side of an element, for example - * if we have a menu on the right side a toolbar, we want to right align our menu content. - * - * We can specify the origin by using the `md-position-mode` attribute on both - * the `x` and `y` axis. Right now only the `x-axis` has more than one option. - * You may specify the default mode of `target target` or - * `target-right target` to specify a right-oriented alignment target. See the - * position section of the demos for more examples. - * - * ### Menu Offsets - * - * It is sometimes unavoidable to need to have a deeper level of control for - * the positioning of a menu to ensure perfect alignment. `md-menu` provides - * the `md-offset` attribute to allow pixel level specificty of adjusting the - * exact positioning. - * - * This offset is provided in the format of `x y` or `n` where `n` will be used - * in both the `x` and `y` axis. - * - * For example, to move a menu by `2px` from the top, we can use: - * - * - * - * - * - * - * @usage - * - * - * - * - * - * - * Do Something - * - * - * - * - * @param {string} md-position-mode The position mode in the form of - `x`, `y`. Default value is `target`,`target`. Right now the `x` axis - also suppports `target-right`. - * @param {string} md-offset An offset to apply to the dropdown after positioning - `x`, `y`. Default value is `0`,`0`. - * - */ - -function MenuDirective() { - var INVALID_PREFIX = 'Invalid HTML for md-menu: '; - return { - restrict: 'E', - require: 'mdMenu', - controller: 'mdMenuCtrl', // empty function to be built by link - scope: true, - compile: compile - }; - - function compile(templateElement) { - templateElement.addClass('md-menu'); - var triggerElement = templateElement.children()[0]; - if (!triggerElement.hasAttribute('ng-click')) { - triggerElement = triggerElement.querySelector('[ng-click],[ng-mouseenter]'); - } - if (templateElement.children().length != 2) { - throw Error(INVALID_PREFIX + 'Expected two children elements.'); - } - - // Default element for ARIA attributes has the ngClick or ngMouseenter expression - triggerElement && triggerElement.setAttribute('aria-haspopup', 'true'); - return link; - } - - function link(scope, element, attrs, mdMenuCtrl) { - // Move everything into a md-menu-container and pass it to the controller - var menuContainer = angular.element( - '
' - ); - var menuContents = element.children()[1]; - menuContainer.append(menuContents); - mdMenuCtrl.init(menuContainer); - - scope.$on('$destroy', function() { - menuContainer.remove(); - mdMenuCtrl.close(); - }); - - } -} - -function MenuController($mdMenu, $attrs, $element, $scope) { - var menuContainer; - var ctrl = this; - var triggerElement; - - this.init = angular.bind(this, init); - this.open = angular.bind(this, openMenu); - this.close = angular.bind(this, closeMenu); - - this.positionMode = angular.bind(this, positionMode); - this.offsets = angular.bind(this, offsets); - - // Expose a open function to the child scope for html to use - $scope.$mdOpenMenu = this.open; - - /** - * Called by our linking fn to provide access to the menu-content - * element removed during link - */ - function init(setMenuContainer) { - menuContainer = setMenuContainer; - // Default element for ARIA attributes has the ngClick or ngMouseenter expression - triggerElement = $element[0].querySelector('[ng-click],[ng-mouseenter]'); - } - - /** - * Uses the $mdMenu interim element service to open the menu contents - */ - function openMenu(ev) { - ev && ev.stopPropagation(); - - triggerElement = triggerElement || (ev ? ev.target : $element[0]); - triggerElement.setAttribute('aria-expanded', 'true'); - - ctrl.isOpen = true; - $mdMenu.show({ - scope: $scope, - mdMenuCtrl: ctrl, - element: menuContainer, - target: triggerElement - }); - } - - /** - * Use the $mdMenu interim element service to close the menu contents - */ - function closeMenu(skipFocus) { - if ( !ctrl.isOpen ) return; - - ctrl.isOpen = false; - triggerElement && triggerElement.setAttribute('aria-expanded', 'false'); - $mdMenu.hide(); - - if (!skipFocus) { - $element.children()[0].focus(); - } - } - - /** - * Build a nice object out of our string attribute which specifies the - * target mode for left and top positioning - */ - function positionMode() { - var attachment = ($attrs.mdPositionMode || 'target').split(' '); - - // If attachment is a single item, duplicate it for our second value. - // ie. 'target' -> 'target target' - if (attachment.length == 1) { - attachment.push(attachment[0]); - } - - return { - left: attachment[0], - top: attachment[1] - }; - } - - /** - * Build a nice object out of our string attribute which specifies - * the offset of top and left in pixels. - */ - function offsets() { - var offsets = ($attrs.mdOffset || '0 0').split(' ').map(parseFloat); - if (offsets.length == 2) { - return { - left: offsets[0], - top: offsets[1] - }; - } else if (offsets.length == 1) { - return { - top: offsets[0], - left: offsets[0] - }; - } else { - throw Error('Invalid offsets specified. Please follow format or '); - } - } -} -MenuController.$inject = ["$mdMenu", "$attrs", "$element", "$scope"]; +]); })(); (function(){ "use strict"; -angular.module('material.components.menu') - .provider('$mdMenu', MenuProvider); - -/* - * Interim element provider for the menu. - * Handles behavior for a menu while it is open, including: - * - handling animating the menu opening/closing - * - handling key/mouse events on the menu element - * - handling enabling/disabling scroll while the menu is open - * - handling redrawing during resizes and orientation changes - * +/** + * @ngdoc module + * @name material.components.menu-bar */ -function MenuProvider($$interimElementProvider) { - var MENU_EDGE_MARGIN = 8; - - menuDefaultOptions.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate"]; - return $$interimElementProvider('$mdMenu') - .setDefaults({ - methods: ['target'], - options: menuDefaultOptions - }); - - /* @ngInject */ - function menuDefaultOptions($mdUtil, $mdTheming, $mdConstant, $document, $window, $q, $$rAF, $animateCss, $animate) { - var animator = $mdUtil.dom.animator; - - return { - parent: 'body', - onShow: onShow, - onRemove: onRemove, - hasBackdrop: true, - disableParentScroll: true, - skipCompile: true, - preserveScope: true, - themable: true - }; - - /** - * Show modal backdrop element... - * @returns {function(): void} A function that removes this backdrop - */ - function showBackdrop(scope, element, options) { - - // If we are not within a dialog... - if (options.disableParentScroll && !$mdUtil.getClosest(options.target, 'MD-DIALOG')) { - // !! DO this before creating the backdrop; since disableScrollAround() - // configures the scroll offset; which is used by mdBackDrop postLink() - options.restoreScroll = $mdUtil.disableScrollAround(options.element, options.parent); - } else { - options.disableParentScroll = false; - } - - if (options.hasBackdrop) { - options.backdrop = $mdUtil.createBackdrop(scope, "md-menu-backdrop md-click-catcher"); - - $animate.enter(options.backdrop, options.parent); - } - - /** - * Hide and destroys the backdrop created by showBackdrop() - */ - return function hideBackdrop() { - if (options.backdrop) { - // Override duration to immediately remove invisible backdrop - $animate.leave(options.backdrop, {duration:0}); - } - if (options.disableParentScroll) { - options.restoreScroll(); - } - } - } - - /** - * Removing the menu element from the DOM and remove all associated evetn listeners - * and backdrop - */ - function onRemove(scope, element, opts) { - opts.cleanupInteraction(); - opts.cleanupResizing(); - opts.hideBackdrop(); - - return $animateCss(element, {addClass: 'md-leave'}) - .start() - .then(function() { - element.removeClass('md-active'); - - detachElement(element, opts); - opts.alreadyOpen = false; - }); - } - - /** - * Inserts and configures the staged Menu element into the DOM, positioning it, - * and wiring up various interaction events - */ - function onShow(scope, element, opts) { - sanitizeAndConfigure(opts); - - // Wire up theming on our menu element - $mdTheming.inherit(opts.menuContentEl, opts.target); - - // Register various listeners to move menu on resize/orientation change - opts.cleanupResizing = startRepositioningOnResize(); - opts.hideBackdrop = showBackdrop(scope, element, opts); - - // Return the promise for when our menu is done animating in - return showMenu() - .then(function(response) { - opts.alreadyOpen = true; - opts.cleanupInteraction = activateInteraction(); - return response; - }); - - /** - * Place the menu into the DOM and call positioning related functions - */ - function showMenu() { - opts.parent.append(element); - - return $q(function(resolve) { - var position = calculateMenuPosition(element, opts); - - element.removeClass('md-leave'); - - // Animate the menu scaling, and opacity [from its position origin (default == top-left)] - // to normal scale. - $animateCss(element, { - addClass: 'md-active', - from: animator.toCss(position), - to: animator.toCss({transform: 'scale(1.0,1.0)'}) - }) - .start() - .then(resolve); - - }); - } - - /** - * Check for valid opts and set some sane defaults - */ - function sanitizeAndConfigure() { - if (!opts.target) { - throw Error( - '$mdMenu.show() expected a target to animate from in options.target' - ); - } - angular.extend(opts, { - alreadyOpen: false, - isRemoved: false, - target: angular.element(opts.target), //make sure it's not a naked dom node - parent: angular.element(opts.parent), - menuContentEl: angular.element(element[0].querySelector('md-menu-content')) - }); - } - - /** - * Configure various resize listeners for screen changes - */ - function startRepositioningOnResize() { - - var repositionMenu = (function(target, options) { - return $$rAF.throttle(function() { - if (opts.isRemoved) return; - var position = calculateMenuPosition(target, options); - - target.css(animator.toCss(position)); - }); - })(element, opts); - - $window.addEventListener('resize', repositionMenu); - $window.addEventListener('orientationchange', repositionMenu); - - return function stopRepositioningOnResize() { - - // Disable resizing handlers - $window.removeEventListener('resize', repositionMenu); - $window.removeEventListener('orientationchange', repositionMenu); - - } - } - - /** - * Activate interaction on the menu. Wire up keyboard listerns for - * clicks, keypresses, backdrop closing, etc. - */ - function activateInteraction() { - element.addClass('md-clickable'); - - // close on backdrop click - if (opts.backdrop) opts.backdrop.on('click', onBackdropClick); - - // Wire up keyboard listeners. - // - Close on escape, - // - focus next item on down arrow, - // - focus prev item on up - opts.menuContentEl.on('keydown', onMenuKeyDown); - opts.menuContentEl[0].addEventListener('click', captureClickListener, true); - - // kick off initial focus in the menu on the first element - var focusTarget = opts.menuContentEl[0].querySelector('[md-menu-focus-target]') || - opts.menuContentEl[0].firstElementChild.firstElementChild; - focusTarget.focus(); - - return function cleanupInteraction() { - element.removeClass('md-clickable'); - if (opts.backdrop) opts.backdrop.off('click', onBackdropClick); - opts.menuContentEl.off('keydown', onMenuKeyDown); - opts.menuContentEl[0].removeEventListener('click', captureClickListener, true); - }; - - // ************************************ - // internal functions - // ************************************ - - function onMenuKeyDown(ev) { - scope.$apply(function() { - var keyCodes = $mdConstant.KEY_CODE; - switch (ev.keyCode) { - case keyCodes.ESCAPE: - opts.mdMenuCtrl.close(); - ev.stopPropagation(); - break; - case keyCodes.UP_ARROW: - focusMenuItem(ev, opts.menuContentEl, opts, -1); - ev.stopPropagation(); - break; - case keyCodes.DOWN_ARROW: - focusMenuItem(ev, opts.menuContentEl, opts, 1); - ev.stopPropagation(); - break; - } - }); - } - - function onBackdropClick(e) { - e.preventDefault(); - e.stopPropagation(); - scope.$apply(function() { - opts.mdMenuCtrl.close(true); - }); - } - - // Close menu on menu item click, if said menu-item is not disabled - function captureClickListener(e) { - var target = e.target; - // Traverse up the event until we get to the menuContentEl to see if - // there is an ng-click and that the ng-click is not disabled - do { - if (target == opts.menuContentEl[0]) return; - if (hasAnyAttribute(target, ['ng-click', 'ng-href', 'ui-sref'])) { - if (!target.hasAttribute('disabled')) { - close(); - } - break; - } - } while (target = target.parentNode) - - function close() { - scope.$apply(function() { - opts.mdMenuCtrl.close(); - }); - } - - function hasAnyAttribute(target, attrs) { - if (!target) return false; - for (var i = 0, attr; attr = attrs[i]; ++i) { - var altForms = [attr, 'data-' + attr, 'x-' + attr]; - for (var j = 0, rawAttr; rawAttr = altForms[j]; ++j) { - if (target.hasAttribute(rawAttr)) { - return true; - } - } - } - return false; - } - } - - } - } - - /** - * Takes a keypress event and focuses the next/previous menu - * item from the emitting element - * @param {event} e - The origin keypress event - * @param {angular.element} menuEl - The menu element - * @param {object} opts - The interim element options for the mdMenu - * @param {number} direction - The direction to move in (+1 = next, -1 = prev) - */ - function focusMenuItem(e, menuEl, opts, direction) { - var currentItem = $mdUtil.getClosest(e.target, 'MD-MENU-ITEM'); - - var items = $mdUtil.nodesToArray(menuEl[0].children); - var currentIndex = items.indexOf(currentItem); - - // Traverse through our elements in the specified direction (+/-1) and try to - // focus them until we find one that accepts focus - for (var i = currentIndex + direction; i >= 0 && i < items.length; i = i + direction) { - var focusTarget = items[i].firstElementChild || items[i]; - var didFocus = attemptFocus(focusTarget); - if (didFocus) { - break; - } - } - } - - /** - * Attempts to focus an element. Checks whether that element is the currently - * focused element after attempting. - * @param {HTMLElement} el - the element to attempt focus on - * @returns {bool} - whether the element was successfully focused - */ - function attemptFocus(el) { - if (el && el.getAttribute('tabindex') != -1) { - el.focus(); - return ($document[0].activeElement == el); - } - } - - /** - * Use browser to remove this element without triggering a $destory event - */ - function detachElement(element, opts) { - if (element[0].parentNode === opts.parent[0]) { - opts.parent[0].removeChild(element[0]); - } - } - - /** - * Computes menu position and sets the style on the menu container - * @param {HTMLElement} el - the menu container element - * @param {object} opts - the interim element options object - */ - function calculateMenuPosition(el, opts) { - - var containerNode = el[0], - openMenuNode = el[0].firstElementChild, - openMenuNodeRect = openMenuNode.getBoundingClientRect(), - boundryNode = opts.parent[0], - boundryNodeRect = boundryNode.getBoundingClientRect(); - - var originNode = opts.target[0].querySelector('[md-menu-origin]') || opts.target[0], - originNodeRect = originNode.getBoundingClientRect(); - - var bounds = { - left: boundryNodeRect.left + MENU_EDGE_MARGIN, - top: Math.max(boundryNodeRect.top, 0) + MENU_EDGE_MARGIN, - bottom: Math.max(boundryNodeRect.bottom, Math.max(boundryNodeRect.top, 0) + boundryNodeRect.height) - MENU_EDGE_MARGIN, - right: boundryNodeRect.right - MENU_EDGE_MARGIN - }; - - var alignTarget, alignTargetRect, existingOffsets; - var positionMode = opts.mdMenuCtrl.positionMode(); - - if (positionMode.top == 'target' || positionMode.left == 'target' || positionMode.left == 'target-right') { - // TODO: Allow centering on an arbitrary node, for now center on first menu-item's child - alignTarget = firstVisibleChild(); - if (!alignTarget) { - throw Error('Error positioning menu. No visible children.'); - } - - alignTarget = alignTarget.firstElementChild || alignTarget; - alignTarget = alignTarget.querySelector('[md-menu-align-target]') || alignTarget; - alignTargetRect = alignTarget.getBoundingClientRect(); - - existingOffsets = { - top: parseFloat(containerNode.style.top || 0), - left: parseFloat(containerNode.style.left || 0) - }; - } - - var position = {}; - var transformOrigin = 'top '; - - switch (positionMode.top) { - case 'target': - position.top = existingOffsets.top + originNodeRect.top - alignTargetRect.top; - break; - // Future support for mdMenuBar - // case 'top': - // position.top = originNodeRect.top; - // break; - case 'bottom': - position.top = originNodeRect.top + originNodeRect.height; - break; - default: - throw new Error('Invalid target mode "' + positionMode.top + '" specified for md-menu on Y axis.'); - } - - switch (positionMode.left) { - case 'target': - position.left = existingOffsets.left + originNodeRect.left - alignTargetRect.left; - transformOrigin += 'left'; - break; - case 'target-right': - position.left = originNodeRect.right - openMenuNodeRect.width + (openMenuNodeRect.right - alignTargetRect.right); - transformOrigin += 'right'; - break; - // Future support for mdMenuBar - case 'left': - position.left = originNodeRect.left; - transformOrigin += 'left'; - break; - // case 'right': - // position.left = originNodeRect.right - containerNode.offsetWidth; - // transformOrigin += 'right'; - // break; - default: - throw new Error('Invalid target mode "' + positionMode.left + '" specified for md-menu on X axis.'); - } - - var offsets = opts.mdMenuCtrl.offsets(); - position.top += offsets.top; - position.left += offsets.left; - - clamp(position); - - var scaleX = Math.round(100 * Math.min(originNodeRect.width / containerNode.offsetWidth, 1.0)) / 100; - var scaleY = Math.round(100 * Math.min(originNodeRect.height / containerNode.offsetHeight, 1.0)) / 100; - - return { - top: Math.round(position.top), - left: Math.round(position.left), - - // Animate a scale out if we aren't just repositioning - transform: !opts.alreadyOpen ? $mdUtil.supplant('scale({0},{1})', [scaleX, scaleY]) : undefined, - - transformOrigin: transformOrigin - }; - - /** - * Clamps the repositioning of the menu within the confines of - * bounding element (often the screen/body) - */ - function clamp(pos) { - pos.top = Math.max(Math.min(pos.top, bounds.bottom - containerNode.offsetHeight), bounds.top); - pos.left = Math.max(Math.min(pos.left, bounds.right - containerNode.offsetWidth), bounds.left); - } - - /** - * Gets the first visible child in the openMenuNode - * Necessary incase menu nodes are being dynamically hidden - */ - function firstVisibleChild() { - for (var i = 0; i < openMenuNode.children.length; ++i) { - if ($window.getComputedStyle(openMenuNode.children[i]).display != 'none') { - return openMenuNode.children[i]; - } - } - } - } - } -} -MenuProvider.$inject = ["$$interimElementProvider"]; +angular.module('material.components.menuBar', [ + 'material.core', + 'material.components.menu' +]); })(); (function(){ @@ -14718,7 +13508,7 @@ angular.module('material.components.sticky', [ * If not provided, it will use the result of `element.clone()`. */ -function MdSticky($document, $mdConstant, $compile, $$rAF, $mdUtil) { +function MdSticky($document, $mdConstant, $$rAF, $mdUtil) { var browserStickySupport = checkStickySupport(); @@ -14785,7 +13575,9 @@ function MdSticky($document, $mdConstant, $compile, $$rAF, $mdUtil) { }; self.items.push(item); - contentEl.parent().prepend(item.clone); + $mdUtil.nextTick(function() { + contentEl.prepend(item.clone); + }); debouncedRefreshElements(); @@ -14852,44 +13644,61 @@ function MdSticky($document, $mdConstant, $compile, $$rAF, $mdUtil) { function onScroll() { var scrollTop = contentEl.prop('scrollTop'); var isScrollingDown = scrollTop > (onScroll.prevScrollTop || 0); + + // Store the previous scroll so we know which direction we are scrolling onScroll.prevScrollTop = scrollTop; - // At the top? + // + // AT TOP (not scrolling) + // if (scrollTop === 0) { + // If we're at the top, just clear the current item and return setCurrentItem(null); + return; + } - // Going to next item? - } else if (isScrollingDown && self.next) { - if (self.next.top - scrollTop <= 0) { - // Sticky the next item if we've scrolled past its position. + // + // SCROLLING DOWN (going towards the next item) + // + if (isScrollingDown) { + + // If we've scrolled down past the next item's position, sticky it and return + if (self.next && self.next.top <= scrollTop) { setCurrentItem(self.next); - } else if (self.current) { - // Push the current item up when we're almost at the next item. - if (self.next.top - scrollTop <= self.next.height) { - translate(self.current, self.next.top - self.next.height - scrollTop); - } else { - translate(self.current, null); - } + return; } - - // Scrolling up with a current sticky item? - } else if (!isScrollingDown && self.current) { - if (scrollTop < self.current.top) { - // Sticky the previous item if we've scrolled up past - // the original position of the currently stickied item. + + // If the next item is close to the current one, push the current one up out of the way + if (self.current && self.next && self.next.top - scrollTop <= self.next.height) { + translate(self.current, scrollTop + (self.next.top - self.next.height - scrollTop)); + return; + } + } + + // + // SCROLLING UP (not at the top & not scrolling down; must be scrolling up) + // + if (!isScrollingDown) { + + // If we've scrolled up past the previous item's position, sticky it and return + if (self.current && self.prev && scrollTop < self.current.top) { setCurrentItem(self.prev); + return; } - // Scrolling up, and just bumping into the item above (just set to current)? - // If we have a next item bumping into the current item, translate - // the current item up from the top as it scrolls into view. - if (self.current && self.next) { - if (scrollTop >= self.next.top - self.current.height) { - translate(self.current, self.next.top - scrollTop - self.current.height); - } else { - translate(self.current, null); - } + + // If the next item is close to the current one, pull the current one down into view + if (self.next && scrollTop >= self.next.top - self.current.height) { + translate(self.current, scrollTop + (self.next.top - scrollTop - self.current.height)); + return; } } + + // + // Otherwise, just move the current item to the proper place (scrolling up or down) + // + if (self.current) { + translate(self.current, scrollTop); + } } function setCurrentItem(item) { @@ -14991,7 +13800,7 @@ function MdSticky($document, $mdConstant, $compile, $$rAF, $mdUtil) { } } -MdSticky.$inject = ["$document", "$mdConstant", "$compile", "$$rAF", "$mdUtil"]; +MdSticky.$inject = ["$document", "$mdConstant", "$$rAF", "$mdUtil"]; })(); (function(){ @@ -15045,11 +13854,11 @@ function MdSubheaderDirective($mdSticky, $compile, $mdTheming, $mdUtil) { replace: true, transclude: true, template: ( - '

' + + '
' + '
' + ' ' + '
' + - '

' + '
' ), link: function postLink(scope, element, attr, controllers, transclude) { $mdTheming(element); @@ -16179,6 +14988,9 @@ function VirtualRepeatContainerController($$rAF, $scope, $element, $attrs) { this.autoShrinkMin = parseInt(this.$attrs.mdAutoShrinkMin, 10) || 0; /** @type {?number} Original container size when shrank */ this.originalSize = null; + /** @type {number} Amount to offset the total scroll size by. */ + this.offsetSize = parseInt(this.$attrs.mdOffsetSize, 10) || 0; + this.scroller = $element[0].getElementsByClassName('md-virtual-repeat-scroller')[0]; this.sizer = this.scroller.getElementsByClassName('md-virtual-repeat-sizer')[0]; @@ -16312,9 +15124,10 @@ VirtualRepeatContainerController.prototype.autoShrink_ = function(size) { /** * Sets the scrollHeight or scrollWidth. Called by the repeater based on * its item count and item size. - * @param {number} size The new size. + * @param {number} itemsSize The total size of the items. */ -VirtualRepeatContainerController.prototype.setScrollSize = function(size) { +VirtualRepeatContainerController.prototype.setScrollSize = function(itemsSize) { + var size = itemsSize + this.offsetSize; if (this.scrollSize === size) return; this.sizeScroller_(size); @@ -16521,6 +15334,9 @@ VirtualRepeatController.prototype.readItemSize_ = function() { this.items = this.repeatListExpression(this.$scope); this.parentNode = this.$element[0].parentNode; var block = this.getBlock_(0); + if (!block.element[0].parentNode) { + this.parentNode.appendChild(block.element[0]); + } this.itemSize = block.element[0][ this.container.isHorizontal() ? 'offsetWidth' : 'offsetHeight'] || null; @@ -16560,7 +15376,7 @@ VirtualRepeatController.prototype.repeatListExpression_ = function(scope) { VirtualRepeatController.prototype.containerUpdated = function() { // If itemSize is unknown, attempt to measure it. if (!this.itemSize) { - this.unwatchItemSize_ = this.$scope.$watch( + this.unwatchItemSize_ = this.$scope.$watchCollection( this.repeatListExpression, angular.bind(this, function(items) { if (items && items.length) { @@ -16922,6 +15738,7 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, ctrl.getCurrentDisplayValue = getCurrentDisplayValue; ctrl.registerSelectedItemWatcher = registerSelectedItemWatcher; ctrl.unregisterSelectedItemWatcher = unregisterSelectedItemWatcher; + ctrl.notFoundVisible = notFoundVisible; return init(); @@ -16969,19 +15786,20 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, styles.bottom = 'auto'; styles.maxHeight = Math.min(MAX_HEIGHT, root.bottom - hrect.bottom - MENU_PADDING) + 'px'; } - elements.$.ul.css(styles); + + elements.$.scrollContainer.css(styles); $mdUtil.nextTick(correctHorizontalAlignment, false); /** * Makes sure that the menu doesn't go off of the screen on either side. */ function correctHorizontalAlignment () { - var dropdown = elements.ul.getBoundingClientRect(), + var dropdown = elements.scrollContainer.getBoundingClientRect(), styles = {}; if (dropdown.right > root.right - MENU_PADDING) { styles.left = (hrect.right - dropdown.width) + 'px'; } - elements.$.ul.css(styles); + elements.$.scrollContainer.css(styles); } } @@ -16990,10 +15808,10 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, */ function moveDropdown () { if (!elements.$.root.length) return; - $mdTheming(elements.$.ul); - elements.$.ul.detach(); - elements.$.root.append(elements.$.ul); - if ($animate.pin) $animate.pin(elements.$.ul, $rootElement); + $mdTheming(elements.$.scrollContainer); + elements.$.scrollContainer.detach(); + elements.$.root.append(elements.$.scrollContainer); + if ($animate.pin) $animate.pin(elements.$.scrollContainer, $rootElement); } /** @@ -17021,18 +15839,20 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, */ function cleanup () { angular.element($window).off('resize', positionDropdown); - elements.$.ul.remove(); + elements.$.scrollContainer.remove(); } /** * Gathers all of the elements needed for this controller */ function gatherElements () { - elements = { - main: $element[ 0 ], - ul: $element.find('ul')[ 0 ], - input: $element.find('input')[ 0 ], - wrap: $element.find('md-autocomplete-wrap')[ 0 ], + elements = { + main: $element[0], + scrollContainer: $element[0].getElementsByClassName('md-virtual-repeat-container')[0], + scroller: $element[0].getElementsByClassName('md-virtual-repeat-scroller')[0], + ul: $element.find('ul')[0], + input: $element.find('input')[0], + wrap: $element.find('md-autocomplete-wrap')[0], root: document.body }; elements.li = elements.ul.getElementsByTagName('li'); @@ -17442,18 +16262,27 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $mdTheming, * Makes sure that the focused element is within view. */ function updateScroll () { - if (!elements.li[ ctrl.index ]) return; - var li = elements.li[ ctrl.index ], - top = li.offsetTop, - bot = top + li.offsetHeight, - hgt = elements.ul.clientHeight; - if (top < elements.ul.scrollTop) { - elements.ul.scrollTop = top; - } else if (bot > elements.ul.scrollTop + hgt) { - elements.ul.scrollTop = bot - hgt; + if (!elements.li[0]) return; + var height = elements.li[0].offsetHeight, + top = height * ctrl.index, + bot = top + height, + hgt = elements.scroller.clientHeight, + scrollTop = elements.scroller.scrollTop; + if (top < scrollTop) { + scrollTo(top); + } else if (bot > scrollTop + hgt) { + scrollTo(bot - hgt); } } + function scrollTo (offset) { + elements.$.scrollContainer.controller('mdVirtualRepeatContainer').scrollTo(offset); + } + + function notFoundVisible () { + return !ctrl.matches.length && !ctrl.loading && ctrl.scope.searchText; + } + /** * Starts the query to gather the results for the current searchText. Attempts to return cached * results first, then forwards the process to `fetchResults` if necessary. @@ -17649,21 +16478,26 @@ function MdAutocomplete () { \ - \ + \ +
    \ +
  • \ + ' + itemTemplate + '\ +
  • ' + noItemsTemplate + '\ +
\ + \ \ {{message}}

\ '; - function getItemTemplate () { - var templateTag = element.find('md-item-template').remove(), - html = templateTag.length ? templateTag.html() : element.html(); + function getItemTemplate() { + var templateTag = element.find('md-item-template').detach(), + html = templateTag.length ? templateTag.html() : element.html(); if (!templateTag.length) element.empty(); return html; } - function getNoItemsTemplate () { - var templateTag = element.find('md-not-found').remove(), - template = templateTag.length ? templateTag.html() : ''; + function getNoItemsTemplate() { + var templateTag = element.find('md-not-found').detach(), + template = templateTag.length ? templateTag.html() : ''; return template - ? '
  • ' + template + '
  • ' + ? '
  • ' + template + '
  • ' : ''; } @@ -17759,49 +16591,33 @@ angular .module('material.components.autocomplete') .controller('MdHighlightCtrl', MdHighlightCtrl); -function MdHighlightCtrl ($scope, $element, $interpolate) { - var ctrl = this; +function MdHighlightCtrl ($scope, $element, $attrs) { + this.init = init; - ctrl.term = null; - ctrl.template = null; - ctrl.watchers = []; - ctrl.init = init; + function init (termExpr, unsafeTextExpr) { + var text = null, + regex = null, + flags = $attrs.mdHighlightFlags || '', + watcher = $scope.$watch(function($scope) { + return { + term: termExpr($scope), + unsafeText: unsafeTextExpr($scope) + }; + }, function (state, prevState) { + if (text === null || state.unsafeText !== prevState.unsafeText) { + text = angular.element('
    ').text(state.unsafeText).html() + } + if (regex === null || state.term !== prevState.term) { + regex = getRegExp(state.term, flags); + } - function init (term, template) { - createWatchers(term, template); - $element.on('$destroy', cleanup); - } - - function createWatchers (term, template) { - ctrl.watchers.push($scope.$watch(term, function (term) { - ctrl.term = term; - updateHTML(term, ctrl.template); - })); - ctrl.watchers.push($scope.$watch(compileTemplate, function (template) { - ctrl.template = template; - updateHTML(ctrl.term, template); - })); - - function compileTemplate () { return $interpolate(template)($scope); } - } - - function cleanup () { - ctrl.watchers.forEach(function (watcher) { watcher(); }); - } - - function updateHTML () { - if (ctrl.term === null || ctrl.template === null) return; - var unsafeText = $interpolate(ctrl.template)($scope), - text = angular.element('
    ').text(unsafeText).html(), - flags = $element.attr('md-highlight-flags') || '', - regex = getRegExp(ctrl.term, flags), - html = text.replace(regex, '$&'); - $element.html(html); + $element.html(text.replace(regex, '$&')); + }, true); + $element.on('$destroy', function () { watcher(); }); } function sanitize (term) { - if (!term) return term; - return term.replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g, '\\$&'); + return term && term.replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g, '\\$&'); } function getRegExp (text, flags) { @@ -17812,7 +16628,7 @@ function MdHighlightCtrl ($scope, $element, $interpolate) { return new RegExp(sanitize(str), flags.replace(/[\$\^]/g, '')); } } -MdHighlightCtrl.$inject = ["$scope", "$element", "$interpolate"]; +MdHighlightCtrl.$inject = ["$scope", "$element", "$attrs"]; })(); (function(){ @@ -17851,47 +16667,21 @@ angular * */ -function MdHighlight () { +function MdHighlight ($interpolate, $parse) { return { - terminal: true, - scope: false, + terminal: true, controller: 'MdHighlightCtrl', - compile: function (element, attr) { - var template = element.html(); - return function (scope, element, attr, ctrl) { - ctrl.init(attr.mdHighlightText, template); + compile: function mdHighlightCompile(tElement, tAttr) { + var termExpr = $parse(tAttr.mdHighlightText); + var unsafeTextExpr = $interpolate(tElement.html()); + + return function mdHighlightLink(scope, element, attr, ctrl) { + ctrl.init(termExpr, unsafeTextExpr); }; } }; } - -})(); -(function(){ -"use strict"; - -angular - .module('material.components.autocomplete') - .directive('mdAutocompleteListItem', MdAutocompleteListItem); - -function MdAutocompleteListItem ($compile, $mdUtil) { - return { - terminal: true, - link: postLink, - scope: false - }; - function postLink (scope, element, attr) { - var ctrl = scope.$parent.$mdAutocompleteCtrl, - newScope = ctrl.parent.$new(false, ctrl.parent), - itemName = ctrl.scope.$eval(attr.mdAutocompleteListItem); - newScope[ itemName ] = scope.item; - $compile(element.contents())(newScope); - element.attr({ - role: 'option', - id: 'item_' + $mdUtil.nextUid() - }); - } -} -MdAutocompleteListItem.$inject = ["$compile", "$mdUtil"]; +MdHighlight.$inject = ["$interpolate", "$parse"]; })(); (function(){ @@ -17910,6 +16700,9 @@ function MdAutocompleteParentScope ($compile) { }; function postLink (scope, element, attr) { var ctrl = scope.$parent.$mdAutocompleteCtrl; + + // TODO: transclude self might make it possible to do this without + // re-compiling, which is slow. $compile(element.contents())(ctrl.parent); if (attr.hasOwnProperty('mdAutocompleteReplace')) { element.after(element.contents()); @@ -18830,57 +17623,60 @@ MdContactChipsCtrl.prototype.filterSelectedContacts = function(contact) { (function(){ "use strict"; - angular - .module('material.components.chips') - .directive('mdContactChips', MdContactChips); +angular + .module('material.components.chips') + .directive('mdContactChips', MdContactChips); - /** - * @ngdoc directive - * @name mdContactChips - * @module material.components.chips - * - * @description - * `` is an input component based on `md-chips` and makes use of an - * `md-autocomplete` element. The component allows the caller to supply a query expression - * which returns a list of possible contacts. The user can select one of these and add it to - * the list of chips. - * - * @param {string=|object=} ng-model A model to bind the list of items to - * @param {string=} placeholder Placeholder text that will be forwarded to the input. - * @param {string=} secondary-placeholder Placeholder text that will be forwarded to the input, - * displayed when there is at least on item in the list - * @param {expression} md-contacts An expression expected to return contacts matching the search - * test, `$query`. - * @param {string} md-contact-name The field name of the contact object representing the - * contact's name. - * @param {string} md-contact-email The field name of the contact object representing the - * contact's email address. - * @param {string} md-contact-image The field name of the contact object representing the - * contact's image. - * - * - * // The following attribute has been removed but may come back. - * @param {expression=} filter-selected Whether to filter selected contacts from the list of - * suggestions shown in the autocomplete. - * - * - * - * @usage - * - * - * - * - * - */ +/** + * @ngdoc directive + * @name mdContactChips + * @module material.components.chips + * + * @description + * `` is an input component based on `md-chips` and makes use of an + * `md-autocomplete` element. The component allows the caller to supply a query expression which + * returns a list of possible contacts. The user can select one of these and add it to the list of + * chips. + * + * You may also use the `md-highlight-text` directive along with it's parameters to control the + * appearance of the matched text inside of the contacts' autocomplete popup. + * + * @param {string=|object=} ng-model A model to bind the list of items to + * @param {string=} placeholder Placeholder text that will be forwarded to the input. + * @param {string=} secondary-placeholder Placeholder text that will be forwarded to the input, + * displayed when there is at least on item in the list + * @param {expression} md-contacts An expression expected to return contacts matching the search + * test, `$query`. + * @param {string} md-contact-name The field name of the contact object representing the + * contact's name. + * @param {string} md-contact-email The field name of the contact object representing the + * contact's email address. + * @param {string} md-contact-image The field name of the contact object representing the + * contact's image. + * + * + * // The following attribute has been removed but may come back. + * @param {expression=} filter-selected Whether to filter selected contacts from the list of + * suggestions shown in the autocomplete. + * + * + * + * @usage + * + * + * + * + * + */ - var MD_CONTACT_CHIPS_TEMPLATE = '\ +var MD_CONTACT_CHIPS_TEMPLATE = '\ \ - \ + \ {{item[$mdContactChipsCtrl.contactName]}}\ \ {{item[$mdContactChipsCtrl.contactEmail]}}\ @@ -18918,46 +17715,2328 @@ MdContactChipsCtrl.prototype.filterSelectedContacts = function(contact) { '; - /** - * MDContactChips Directive Definition - * - * @param $mdTheming - * @returns {*} - * @ngInject - */ - function MdContactChips ($mdTheming, $mdUtil) { - return { - template: function(element, attrs) { - return MD_CONTACT_CHIPS_TEMPLATE; - }, - restrict: 'E', - controller: 'MdContactChipsCtrl', - controllerAs: '$mdContactChipsCtrl', - bindToController: true, - compile: compile, - scope: { - contactQuery: '&mdContacts', - placeholder: '@', - secondaryPlaceholder: '@', - contactName: '@mdContactName', - contactImage: '@mdContactImage', - contactEmail: '@mdContactEmail', - contacts: '=ngModel', - requireMatch: '=?mdRequireMatch' - } +/** + * MDContactChips Directive Definition + * + * @param $mdTheming + * @returns {*} + * @ngInject + */ +function MdContactChips($mdTheming, $mdUtil) { + return { + template: function(element, attrs) { + return MD_CONTACT_CHIPS_TEMPLATE; + }, + restrict: 'E', + controller: 'MdContactChipsCtrl', + controllerAs: '$mdContactChipsCtrl', + bindToController: true, + compile: compile, + scope: { + contactQuery: '&mdContacts', + placeholder: '@', + secondaryPlaceholder: '@', + contactName: '@mdContactName', + contactImage: '@mdContactImage', + contactEmail: '@mdContactEmail', + contacts: '=ngModel', + requireMatch: '=?mdRequireMatch', + highlightFlags: '@?mdHighlightFlags' + } + }; + + function compile(element, attr) { + return function postLink(scope, element, attrs, controllers) { + + $mdUtil.initOptionalProperties(scope, attr); + $mdTheming(element); + + element.attr('tabindex', '-1'); }; + } +} +MdContactChips.$inject = ["$mdTheming", "$mdUtil"]; - function compile(element, attr) { - return function postLink(scope, element, attrs, controllers) { +})(); +(function(){ +"use strict"; - $mdUtil.initOptionalProperties(scope, attr); - $mdTheming(element); +angular + .module('material.components.icon') + .directive('mdIcon', ['$mdIcon', '$mdTheming', '$mdAria', mdIconDirective]); - element.attr('tabindex', '-1'); - }; +/** + * @ngdoc directive + * @name mdIcon + * @module material.components.icon + * + * @restrict E + * + * @description + * The `md-icon` directive makes it easier to use vector-based icons in your app (as opposed to + * raster-based icons types like PNG). The directive supports both icon fonts and SVG icons. + * + * Icons should be consider view-only elements that should not be used directly as buttons; instead nest a `` + * inside a `md-button` to add hover and click features. + * + * ### Icon fonts + * Icon fonts are a technique in which you use a font where the glyphs in the font are + * your icons instead of text. Benefits include a straightforward way to bundle everything into a + * single HTTP request, simple scaling, easy color changing, and more. + * + * `md-icon` let's you consume an icon font by letting you reference specific icons in that font + * by name rather than character code. + * + * ### SVG + * For SVGs, the problem with using `` or a CSS `background-image` is that you can't take + * advantage of some SVG features, such as styling specific parts of the icon with CSS or SVG + * animation. + * + * `md-icon` makes it easier to use SVG icons by *inlining* the SVG into an `` element in the + * document. The most straightforward way of referencing an SVG icon is via URL, just like a + * traditional ``. `$mdIconProvider`, as a convenience, let's you _name_ an icon so you can + * reference it by name instead of URL throughout your templates. + * + * Additionally, you may not want to make separate HTTP requests for every icon, so you can bundle + * your SVG icons together and pre-load them with $mdIconProvider as an icon set. An icon set can + * also be given a name, which acts as a namespace for individual icons, so you can reference them + * like `"social:cake"`. + * + * When using SVGs, both external SVGs (via URLs) or sets of SVGs [from icon sets] can be + * easily loaded and used.When use font-icons, developers must following three (3) simple steps: + * + *
      + *
    1. Load the font library. e.g.
      + * <link href="https://fonts.googleapis.com/icon?family=Material+Icons" + * rel="stylesheet"> + *
    2. + *
    3. Use either (a) font-icon class names or (b) font ligatures to render the font glyph by using its textual name
    4. + *
    5. Use <md-icon md-font-icon="classname" /> or
      + * use <md-icon md-font-set="font library classname or alias"> textual_name </md-icon> or
      + * use <md-icon md-font-set="font library classname or alias"> numerical_character_reference </md-icon> + *
    6. + *
    + * + * Full details for these steps can be found: + * + *
      + *
    • http://google.github.io/material-design-icons/
    • + *
    • http://google.github.io/material-design-icons/#icon-font-for-the-web
    • + *
    + * + * The Material Design icon style .material-icons and the icon font references are published in + * Material Design Icons: + * + *
      + *
    • http://www.google.com/design/icons/
    • + *
    • https://www.google.com/design/icons/#ic_accessibility
    • + *
    + * + *

    Material Design Icons

    + * Using the Material Design Icon-Selector, developers can easily and quickly search for a Material Design font-icon and + * determine its textual name and character reference code. Click on any icon to see the slide-up information + * panel with details regarding a SVG download or information on the font-icon usage. + * + * + * + * + * + * + * Click on the image above to link to the + * Material Design Icon-Selector. + * + * + * @param {string} md-font-icon String name of CSS icon associated with the font-face will be used + * to render the icon. Requires the fonts and the named CSS styles to be preloaded. + * @param {string} md-font-set CSS style name associated with the font library; which will be assigned as + * the class for the font-icon ligature. This value may also be an alias that is used to lookup the classname; + * internally use `$mdIconProvider.fontSet()` to determine the style name. + * @param {string} md-svg-src String URL (or expression) used to load, cache, and display an + * external SVG. + * @param {string} md-svg-icon md-svg-icon String name used for lookup of the icon from the internal cache; + * interpolated strings or expressions may also be used. Specific set names can be used with + * the syntax `:`.

    + * To use icon sets, developers are required to pre-register the sets using the `$mdIconProvider` service. + * @param {string=} aria-label Labels icon for accessibility. If an empty string is provided, icon + * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no aria-label on the icon + * nor a label on the parent element, a warning will be logged to the console. + * @param {string=} alt Labels icon for accessibility. If an empty string is provided, icon + * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no alt on the icon + * nor a label on the parent element, a warning will be logged to the console. * + * @usage + * When using SVGs: + * + * + * + * + * + * + * + * + * + * + * + * Use the $mdIconProvider to configure your application with + * svg iconsets. + * + * + * angular.module('appSvgIconSets', ['ngMaterial']) + * .controller('DemoCtrl', function($scope) {}) + * .config(function($mdIconProvider) { + * $mdIconProvider + * .iconSet('social', 'img/icons/sets/social-icons.svg', 24) + * .defaultIconSet('img/icons/sets/core-icons.svg', 24); + * }); + * + * + * + * When using Font Icons with classnames: + * + * + * + * + * + * + * + * When using Material Font Icons with ligatures: + * + * + * + * face + * face + * #xE87C; + * + * face + * + * + * When using other Font-Icon libraries: + * + * + * // Specify a font-icon style alias + * angular.config(function($mdIconProvider) { + * $mdIconProvider.fontSet('fa', 'fontawesome'); + * }); + * + * + * + * email + * + * + */ +function mdIconDirective($mdIcon, $mdTheming, $mdAria ) { + + return { + scope: { + fontSet : '@mdFontSet', + fontIcon: '@mdFontIcon', + svgIcon : '@mdSvgIcon', + svgSrc : '@mdSvgSrc' + }, + restrict: 'E', + link : postLink + }; + + + /** + * Directive postLink + * Supports embedded SVGs, font-icons, & external SVGs + */ + function postLink(scope, element, attr) { + $mdTheming(element); + + prepareForFontIcon(); + + // If using a font-icon, then the textual name of the icon itself + // provides the aria-label. + + var label = attr.alt || scope.fontIcon || scope.svgIcon || element.text(); + var attrName = attr.$normalize(attr.$attr.mdSvgIcon || attr.$attr.mdSvgSrc || ''); + + if ( !attr['aria-label'] ) { + + if (label != '' && !parentsHaveText() ) { + + $mdAria.expect(element, 'aria-label', label); + $mdAria.expect(element, 'role', 'img'); + + } else if ( !element.text() ) { + // If not a font-icon with ligature, then + // hide from the accessibility layer. + + $mdAria.expect(element, 'aria-hidden', 'true'); + } + } + + if (attrName) { + // Use either pre-configured SVG or URL source, respectively. + attr.$observe(attrName, function(attrVal) { + + element.empty(); + if (attrVal) { + $mdIcon(attrVal).then(function(svg) { + element.append(svg); + }); + } + + }); + } + + function parentsHaveText() { + var parent = element.parent(); + if (parent.attr('aria-label') || parent.text()) { + return true; + } + else if(parent.parent().attr('aria-label') || parent.parent().text()) { + return true; + } + return false; + } + + function prepareForFontIcon () { + if (!scope.svgIcon && !scope.svgSrc) { + + if (scope.fontIcon) { + element.addClass('md-font ' + scope.fontIcon); + } + + if (scope.fontSet) { + element.addClass($mdIcon.fontSet(scope.fontSet)); + } + + if (shouldUseDefaultFontSet()) { + element.addClass($mdIcon.fontSet()); + } + + } + + function shouldUseDefaultFontSet() { + return !scope.fontIcon && !scope.fontSet; + } } } - MdContactChips.$inject = ["$mdTheming", "$mdUtil"]; +} + +})(); +(function(){ +"use strict"; + + angular + .module('material.components.icon' ) + .provider('$mdIcon', MdIconProvider); + + /** + * @ngdoc service + * @name $mdIconProvider + * @module material.components.icon + * + * @description + * `$mdIconProvider` is used only to register icon IDs with URLs. These configuration features allow + * icons and icon sets to be pre-registered and associated with source URLs **before** the `` + * directives are compiled. + * + * If using font-icons, the developer is repsonsible for loading the fonts. + * + * If using SVGs, loading of the actual svg files are deferred to on-demand requests and are loaded + * internally by the `$mdIcon` service using the `$http` service. When an SVG is requested by name/ID, + * the `$mdIcon` service searches its registry for the associated source URL; + * that URL is used to on-demand load and parse the SVG dynamically. + * + * @usage + * + * app.config(function($mdIconProvider) { + * + * // Configure URLs for icons specified by [set:]id. + * + * $mdIconProvider + * .defaultFontSet( 'fontawesome' ) + * .defaultIconSet('my/app/icons.svg') // Register a default set of SVG icons + * .iconSet('social', 'my/app/social.svg') // Register a named icon set of SVGs + * .icon('android', 'my/app/android.svg') // Register a specific icon (by name) + * .icon('work:chair', 'my/app/chair.svg'); // Register icon in a specific set + * }); + * + * + * SVG icons and icon sets can be easily pre-loaded and cached using either (a) a build process or (b) a runtime + * **startup** process (shown below): + * + * + * app.config(function($mdIconProvider) { + * + * // Register a default set of SVG icon definitions + * $mdIconProvider.defaultIconSet('my/app/icons.svg') + * + * }) + * .run(function($http, $templateCache){ + * + * // Pre-fetch icons sources by URL and cache in the $templateCache... + * // subsequent $http calls will look there first. + * + * var urls = [ 'imy/app/icons.svg', 'img/icons/android.svg']; + * + * angular.forEach(urls, function(url) { + * $http.get(url, {cache: $templateCache}); + * }); + * + * }); + * + * + * + * NOTE: the loaded SVG data is subsequently cached internally for future requests. + * + */ + + /** + * @ngdoc method + * @name $mdIconProvider#icon + * + * @description + * Register a source URL for a specific icon name; the name may include optional 'icon set' name prefix. + * These icons will later be retrieved from the cache using `$mdIcon( )` + * + * @param {string} id Icon name/id used to register the icon + * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the + * data or as part of the lookup in `$templateCache` if pre-loading was configured. + * @param {number=} viewBoxSize Sets the width and height the icon's viewBox. + * It is ignored for icons with an existing viewBox. Default size is 24. + * + * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API + * + * @usage + * + * app.config(function($mdIconProvider) { + * + * // Configure URLs for icons specified by [set:]id. + * + * $mdIconProvider + * .icon('android', 'my/app/android.svg') // Register a specific icon (by name) + * .icon('work:chair', 'my/app/chair.svg'); // Register icon in a specific set + * }); + * + * + */ + /** + * @ngdoc method + * @name $mdIconProvider#iconSet + * + * @description + * Register a source URL for a 'named' set of icons; group of SVG definitions where each definition + * has an icon id. Individual icons can be subsequently retrieved from this cached set using + * `$mdIcon(:)` + * + * @param {string} id Icon name/id used to register the iconset + * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the + * data or as part of the lookup in `$templateCache` if pre-loading was configured. + * @param {number=} viewBoxSize Sets the width and height of the viewBox of all icons in the set. + * It is ignored for icons with an existing viewBox. All icons in the icon set should be the same size. + * Default value is 24. + * + * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API + * + * + * @usage + * + * app.config(function($mdIconProvider) { + * + * // Configure URLs for icons specified by [set:]id. + * + * $mdIconProvider + * .iconSet('social', 'my/app/social.svg') // Register a named icon set + * }); + * + * + */ + /** + * @ngdoc method + * @name $mdIconProvider#defaultIconSet + * + * @description + * Register a source URL for the default 'named' set of icons. Unless explicitly registered, + * subsequent lookups of icons will failover to search this 'default' icon set. + * Icon can be retrieved from this cached, default set using `$mdIcon()` + * + * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the + * data or as part of the lookup in `$templateCache` if pre-loading was configured. + * @param {number=} viewBoxSize Sets the width and height of the viewBox of all icons in the set. + * It is ignored for icons with an existing viewBox. All icons in the icon set should be the same size. + * Default value is 24. + * + * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API + * + * @usage + * + * app.config(function($mdIconProvider) { + * + * // Configure URLs for icons specified by [set:]id. + * + * $mdIconProvider + * .defaultIconSet( 'my/app/social.svg' ) // Register a default icon set + * }); + * + * + */ + /** + * @ngdoc method + * @name $mdIconProvider#defaultFontSet + * + * @description + * When using Font-Icons, Angular Material assumes the the Material Design icons will be used and automatically + * configures the default font-set == 'material-icons'. Note that the font-set references the font-icon library + * class style that should be applied to the ``. + * + * Configuring the default means that the attributes + * `md-font-set="material-icons"` or `class="material-icons"` do not need to be explicitly declared on the + * `` markup. For example: + * + * ` face ` + * will render as + * ` face `, and + * + * ` face ` + * will render as + * ` face ` + * + * @param {string} name of the font-library style that should be applied to the md-icon DOM element + * + * @usage + * + * app.config(function($mdIconProvider) { + * $mdIconProvider.defaultFontSet( 'fontawesome' ); + * }); + * + * + */ + + /** + * @ngdoc method + * @name $mdIconProvider#defaultViewBoxSize + * + * @description + * While `` markup can also be style with sizing CSS, this method configures + * the default width **and** height used for all icons; unless overridden by specific CSS. + * The default sizing is (24px, 24px). + * @param {number=} viewBoxSize Sets the width and height of the viewBox for an icon or an icon set. + * All icons in a set should be the same size. The default value is 24. + * + * @returns {obj} an `$mdIconProvider` reference; used to support method call chains for the API + * + * @usage + * + * app.config(function($mdIconProvider) { + * + * // Configure URLs for icons specified by [set:]id. + * + * $mdIconProvider + * .defaultViewBoxSize(36) // Register a default icon size (width == height) + * }); + * + * + */ + + var config = { + defaultViewBoxSize: 24, + defaultFontSet: 'material-icons', + fontSets : [ ] + }; + + function MdIconProvider() { } + + MdIconProvider.prototype = { + icon : function (id, url, viewBoxSize) { + if ( id.indexOf(':') == -1 ) id = '$default:' + id; + + config[id] = new ConfigurationItem(url, viewBoxSize ); + return this; + }, + + iconSet : function (id, url, viewBoxSize) { + config[id] = new ConfigurationItem(url, viewBoxSize ); + return this; + }, + + defaultIconSet : function (url, viewBoxSize) { + var setName = '$default'; + + if ( !config[setName] ) { + config[setName] = new ConfigurationItem(url, viewBoxSize ); + } + + config[setName].viewBoxSize = viewBoxSize || config.defaultViewBoxSize; + + return this; + }, + + defaultViewBoxSize : function (viewBoxSize) { + config.defaultViewBoxSize = viewBoxSize; + return this; + }, + + /** + * Register an alias name associated with a font-icon library style ; + */ + fontSet : function fontSet(alias, className) { + config.fontSets.push({ + alias : alias, + fontSet : className || alias + }); + return this; + }, + + /** + * Specify a default style name associated with a font-icon library + * fallback to Material Icons. + * + */ + defaultFontSet : function defaultFontSet(className) { + config.defaultFontSet = !className ? '' : className; + return this; + }, + + defaultIconSize : function defaultIconSize(iconSize) { + config.defaultIconSize = iconSize; + return this; + }, + + preloadIcons: function ($templateCache) { + var iconProvider = this; + var svgRegistry = [ + { + id : 'md-tabs-arrow', + url: 'md-tabs-arrow.svg', + svg: '' + }, + { + id : 'md-close', + url: 'md-close.svg', + svg: '' + }, + { + id: 'md-cancel', + url: 'md-cancel.svg', + svg: '' + }, + { + id: 'md-menu', + url: 'md-menu.svg', + svg: '' + }, + { + id: 'md-toggle-arrow', + url: 'md-toggle-arrow-svg', + svg: '' + }, + { + id: 'md-calendar', + url: 'md-calendar.svg', + svg: '' + } + ]; + + svgRegistry.forEach(function(asset){ + iconProvider.icon(asset.id, asset.url); + $templateCache.put(asset.url, asset.svg); + }); + + }, + + $get : ['$http', '$q', '$log', '$templateCache', function($http, $q, $log, $templateCache) { + this.preloadIcons($templateCache); + return MdIconService(config, $http, $q, $log, $templateCache); + }] + }; + + /** + * Configuration item stored in the Icon registry; used for lookups + * to load if not already cached in the `loaded` cache + */ + function ConfigurationItem(url, viewBoxSize) { + this.url = url; + this.viewBoxSize = viewBoxSize || config.defaultViewBoxSize; + } + + /** + * @ngdoc service + * @name $mdIcon + * @module material.components.icon + * + * @description + * The `$mdIcon` service is a function used to lookup SVG icons. + * + * @param {string} id Query value for a unique Id or URL. If the argument is a URL, then the service will retrieve the icon element + * from its internal cache or load the icon and cache it first. If the value is not a URL-type string, then an ID lookup is + * performed. The Id may be a unique icon ID or may include an iconSet ID prefix. + * + * For the **id** query to work properly, this means that all id-to-URL mappings must have been previously configured + * using the `$mdIconProvider`. + * + * @returns {obj} Clone of the initial SVG DOM element; which was created from the SVG markup in the SVG data file. + * + * @usage + * + * function SomeDirective($mdIcon) { + * + * // See if the icon has already been loaded, if not + * // then lookup the icon from the registry cache, load and cache + * // it for future requests. + * // NOTE: ID queries require configuration with $mdIconProvider + * + * $mdIcon('android').then(function(iconEl) { element.append(iconEl); }); + * $mdIcon('work:chair').then(function(iconEl) { element.append(iconEl); }); + * + * // Load and cache the external SVG using a URL + * + * $mdIcon('img/icons/android.svg').then(function(iconEl) { + * element.append(iconEl); + * }); + * }; + * + * + * NOTE: The ` ` directive internally uses the `$mdIcon` service to query, loaded, and instantiate + * SVG DOM elements. + */ + + /* @ngInject */ + function MdIconService(config, $http, $q, $log, $templateCache) { + var iconCache = {}; + var urlRegex = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i; + + Icon.prototype = { clone : cloneSVG, prepare: prepareAndStyle }; + getIcon.fontSet = findRegisteredFontSet; + + // Publish service... + return getIcon; + + /** + * Actual $mdIcon service is essentially a lookup function + */ + function getIcon(id) { + id = id || ''; + + // If already loaded and cached, use a clone of the cached icon. + // Otherwise either load by URL, or lookup in the registry and then load by URL, and cache. + + if ( iconCache[id] ) return $q.when( iconCache[id].clone() ); + if ( urlRegex.test(id) ) return loadByURL(id).then( cacheIcon(id) ); + if ( id.indexOf(':') == -1 ) id = '$default:' + id; + + var load = config[id] ? loadByID : loadFromIconSet; + return load(id) + .then( cacheIcon(id) ); + } + + /** + * Lookup registered fontSet style using its alias... + * If not found, + */ + function findRegisteredFontSet(alias) { + var useDefault = angular.isUndefined(alias) || !(alias && alias.length); + if ( useDefault ) return config.defaultFontSet; + + var result = alias; + angular.forEach(config.fontSets, function(it){ + if ( it.alias == alias ) result = it.fontSet || result; + }); + + return result; + } + + /** + * Prepare and cache the loaded icon for the specified `id` + */ + function cacheIcon( id ) { + + return function updateCache( icon ) { + iconCache[id] = isIcon(icon) ? icon : new Icon(icon, config[id]); + + return iconCache[id].clone(); + }; + } + + /** + * Lookup the configuration in the registry, if !registered throw an error + * otherwise load the icon [on-demand] using the registered URL. + * + */ + function loadByID(id) { + var iconConfig = config[id]; + return loadByURL(iconConfig.url).then(function(icon) { + return new Icon(icon, iconConfig); + }); + } + + /** + * Loads the file as XML and uses querySelector( ) to find + * the desired node... + */ + function loadFromIconSet(id) { + var setName = id.substring(0, id.lastIndexOf(':')) || '$default'; + var iconSetConfig = config[setName]; + + return !iconSetConfig ? announceIdNotFound(id) : loadByURL(iconSetConfig.url).then(extractFromSet); + + function extractFromSet(set) { + var iconName = id.slice(id.lastIndexOf(':') + 1); + var icon = set.querySelector('#' + iconName); + return !icon ? announceIdNotFound(id) : new Icon(icon, iconSetConfig); + } + + function announceIdNotFound(id) { + var msg = 'icon ' + id + ' not found'; + $log.warn(msg); + + return $q.reject(msg || id); + } + } + + /** + * Load the icon by URL (may use the $templateCache). + * Extract the data for later conversion to Icon + */ + function loadByURL(url) { + return $http + .get(url, { cache: $templateCache }) + .then(function(response) { + return angular.element('
    ').append(response.data).find('svg')[0]; + }).catch(announceNotFound); + } + + /** + * Catch HTTP or generic errors not related to incorrect icon IDs. + */ + function announceNotFound(err) { + var msg = angular.isString(err) ? err : (err.message || err.data || err.statusText); + $log.warn(msg); + + return $q.reject(msg); + } + + /** + * Check target signature to see if it is an Icon instance. + */ + function isIcon(target) { + return angular.isDefined(target.element) && angular.isDefined(target.config); + } + + /** + * Define the Icon class + */ + function Icon(el, config) { + if (el.tagName != 'svg') { + el = angular.element('').append(el)[0]; + } + + // Inject the namespace if not available... + if ( !el.getAttribute('xmlns') ) { + el.setAttribute('xmlns', "http://www.w3.org/2000/svg"); + } + + this.element = el; + this.config = config; + this.prepare(); + } + + /** + * Prepare the DOM element that will be cached in the + * loaded iconCache store. + */ + function prepareAndStyle() { + var viewBoxSize = this.config ? this.config.viewBoxSize : config.defaultViewBoxSize; + angular.forEach({ + 'fit' : '', + 'height': '100%', + 'width' : '100%', + 'preserveAspectRatio': 'xMidYMid meet', + 'viewBox' : this.element.getAttribute('viewBox') || ('0 0 ' + viewBoxSize + ' ' + viewBoxSize) + }, function(val, attr) { + this.element.setAttribute(attr, val); + }, this); + + angular.forEach({ + 'pointer-events' : 'none', + 'display' : 'block' + }, function(val, style) { + this.element.style[style] = val; + }, this); + } + + /** + * Clone the Icon DOM element. + */ + function cloneSVG(){ + return this.element.cloneNode(true); + } + + } + MdIconService.$inject = ["config", "$http", "$q", "$log", "$templateCache"]; + +})(); +(function(){ +"use strict"; + + + +angular + .module('material.components.menu') + .controller('mdMenuCtrl', MenuController); + +/** + * @ngInject + */ +function MenuController($mdMenu, $attrs, $element, $scope, $mdUtil, $timeout) { + + var menuContainer; + var self = this; + var triggerElement; + + this.nestLevel = parseInt($attrs.mdNestLevel, 10) || 0; + + /** + * Called by our linking fn to provide access to the menu-content + * element removed during link + */ + this.init = function init(setMenuContainer, opts) { + opts = opts || {}; + menuContainer = setMenuContainer; + // Default element for ARIA attributes has the ngClick or ngMouseenter expression + triggerElement = $element[0].querySelector('[ng-click],[ng-mouseenter]'); + + this.isInMenuBar = opts.isInMenuBar; + this.nestedMenus = $mdUtil.nodesToArray(menuContainer[0].querySelectorAll('.md-nested-menu')); + this.enableHoverListener(); + + menuContainer.on('$mdInterimElementRemove', function() { + self.isOpen = false; + }); + }; + + this.enableHoverListener = function() { + $scope.$on('$mdMenuOpen', function(event, el) { + if (menuContainer[0].contains(el[0])) { + self.currentlyOpenMenu = el.controller('mdMenu'); + self.isAlreadyOpening = false; + self.currentlyOpenMenu.registerContainerProxy(self.triggerContainerProxy.bind(self)); + } + }); + $scope.$on('$mdMenuClose', function(event, el) { + if (menuContainer[0].contains(el[0])) { + self.currentlyOpenMenu = undefined; + } + }); + + var menuItems = angular.element($mdUtil.nodesToArray(menuContainer[0].querySelectorAll('md-menu-item'))); + + var openMenuTimeout; + menuItems.on('mouseenter', function(event) { + if (self.isAlreadyOpening) return; + var nestedMenu = ( + event.target.querySelector('md-menu') + || $mdUtil.getClosest(event.target, 'MD-MENU') + ); + openMenuTimeout = $timeout(function() { + if (nestedMenu) { + nestedMenu = angular.element(nestedMenu).controller('mdMenu'); + } + + if (self.currentlyOpenMenu && self.currentlyOpenMenu != nestedMenu) { + var closeTo = self.nestLevel + 1; + self.currentlyOpenMenu.close(true, { closeTo: closeTo }); + } else if (nestedMenu && !nestedMenu.isOpen && nestedMenu.open) { + self.isAlreadyOpening = true; + nestedMenu.open(); + } + }, nestedMenu ? 100 : 250); + var focusableTarget = event.currentTarget.querySelector('[tabindex]'); + focusableTarget && focusableTarget.focus(); + }); + menuItems.on('mouseleave', function(event) { + if (openMenuTimeout) { + $timeout.cancel(openMenuTimeout); + openMenuTimeout = undefined; + } + }); + }; + + /** + * Uses the $mdMenu interim element service to open the menu contents + */ + this.open = function openMenu(ev) { + ev && ev.stopPropagation(); + ev && ev.preventDefault(); + if (self.isOpen) return; + self.isOpen = true; + triggerElement = triggerElement || (ev ? ev.target : $element[0]); + $scope.$emit('$mdMenuOpen', $element); + $mdMenu.show({ + scope: $scope, + mdMenuCtrl: self, + nestLevel: self.nestLevel, + element: menuContainer, + target: triggerElement, + preserveElement: self.isInMenuBar || self.nestedMenus.length > 0, + parent: self.isInMenuBar ? $element : 'body' + }); + } + + // Expose a open function to the child scope for html to use + $scope.$mdOpenMenu = this.open; + + $scope.$watch(function() { return self.isOpen; }, function(isOpen) { + if (isOpen) { + triggerElement.setAttribute('aria-expanded', 'true'); + $element[0].classList.add('md-open'); + angular.forEach(self.nestedMenus, function(el) { + el.classList.remove('md-open'); + }); + } else { + triggerElement && triggerElement.setAttribute('aria-expanded', 'false'); + $element[0].classList.remove('md-open'); + } + $scope.$mdMenuIsOpen = self.isOpen; + }); + + this.focusMenuContainer = function focusMenuContainer() { + var focusTarget = menuContainer[0].querySelector('[md-menu-focus-target]'); + if (!focusTarget) focusTarget = menuContainer[0].querySelector('.md-button'); + focusTarget.focus(); + }; + + this.registerContainerProxy = function registerContainerProxy(handler) { + this.containerProxy = handler; + }; + + this.triggerContainerProxy = function triggerContainerProxy(ev) { + this.containerProxy && this.containerProxy(ev); + }; + + // Use the $mdMenu interim element service to close the menu contents + this.close = function closeMenu(skipFocus, closeOpts) { + if ( !self.isOpen ) return; + self.isOpen = false; + + $scope.$emit('$mdMenuClose', $element); + $mdMenu.hide(null, closeOpts); + if (!skipFocus) { + var el = self.restoreFocusTo || $element.find('button')[0]; + if (el instanceof angular.element) el = el[0]; + el.focus(); + } + } + + /** + * Build a nice object out of our string attribute which specifies the + * target mode for left and top positioning + */ + this.positionMode = function positionMode() { + var attachment = ($attrs.mdPositionMode || 'target').split(' '); + + // If attachment is a single item, duplicate it for our second value. + // ie. 'target' -> 'target target' + if (attachment.length == 1) { + attachment.push(attachment[0]); + } + + return { + left: attachment[0], + top: attachment[1] + }; + } + + /** + * Build a nice object out of our string attribute which specifies + * the offset of top and left in pixels. + */ + this.offsets = function offsets() { + var position = ($attrs.mdOffset || '0 0').split(' ').map(parseFloat); + if (position.length == 2) { + return { + left: position[0], + top: position[1] + }; + } else if (position.length == 1) { + return { + top: position[0], + left: position[0] + }; + } else { + throw Error('Invalid offsets specified. Please follow format or '); + } + } +} +MenuController.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout"]; + +})(); +(function(){ +"use strict"; + +/** + * @ngdoc directive + * @name mdMenu + * @module material.components.menu + * @restrict E + * @description + * + * Menus are elements that open when clicked. They are useful for displaying + * additional options within the context of an action. + * + * Every `md-menu` must specify exactly two child elements. The first element is what is + * left in the DOM and is used to open the menu. This element is called the trigger element. + * The trigger element's scope has access to `$mdOpenMenu($event)` + * which it may call to open the menu. By passing $event as argument, the + * corresponding event is stopped from propagating up the DOM-tree. + * + * The second element is the `md-menu-content` element which represents the + * contents of the menu when it is open. Typically this will contain `md-menu-item`s, + * but you can do custom content as well. + * + * + * + * + * + * + * + * + * Do Something + * + * + * + + * ## Sizing Menus + * + * The width of the menu when it is open may be specified by specifying a `width` + * attribute on the `md-menu-content` element. + * See the [Material Design Spec](http://www.google.com/design/spec/components/menus.html#menus-specs) + * for more information. + * + * + * ## Aligning Menus + * + * When a menu opens, it is important that the content aligns with the trigger element. + * Failure to align menus can result in jarring experiences for users as content + * suddenly shifts. To help with this, `md-menu` provides serveral APIs to help + * with alignment. + * + * ### Target Mode + * + * By default, `md-menu` will attempt to align the `md-menu-content` by aligning + * designated child elements in both the trigger and the menu content. + * + * To specify the alignment element in the `trigger` you can use the `md-menu-origin` + * attribute on a child element. If no `md-menu-origin` is specified, the `md-menu` + * will be used as the origin element. + * + * Similarly, the `md-menu-content` may specify a `md-menu-align-target` for a + * `md-menu-item` to specify the node that it should try and align with. + * + * In this example code, we specify an icon to be our origin element, and an + * icon in our menu content to be our alignment target. This ensures that both + * icons are aligned when the menu opens. + * + * + * + * + * + * + * + * + * + * + * Do Something + * + * + * + * + * + * + * Sometimes we want to specify alignment on the right side of an element, for example + * if we have a menu on the right side a toolbar, we want to right align our menu content. + * + * We can specify the origin by using the `md-position-mode` attribute on both + * the `x` and `y` axis. Right now only the `x-axis` has more than one option. + * You may specify the default mode of `target target` or + * `target-right target` to specify a right-oriented alignment target. See the + * position section of the demos for more examples. + * + * ### Menu Offsets + * + * It is sometimes unavoidable to need to have a deeper level of control for + * the positioning of a menu to ensure perfect alignment. `md-menu` provides + * the `md-offset` attribute to allow pixel level specificty of adjusting the + * exact positioning. + * + * This offset is provided in the format of `x y` or `n` where `n` will be used + * in both the `x` and `y` axis. + * + * For example, to move a menu by `2px` from the top, we can use: + * + * + * + * + * + * + * @usage + * + * + * + * + * + * + * Do Something + * + * + * + * + * @param {string} md-po*ition-mode The position mode in the form of + * `x`, `y`. Default value is `target`,`target`. Right now the `x` axis + * also suppports `target-right`. + * @param {string} md-offset An offset to apply to the dropdown after positioning + * `x`, `y`. Default value is `0`,`0`. + * + */ + +angular + .module('material.components.menu') + .directive('mdMenu', MenuDirective); + +/** + * @ngInject + */ +function MenuDirective($mdUtil) { + var INVALID_PREFIX = 'Invalid HTML for md-menu: '; + return { + restrict: 'E', + require: ['mdMenu', '?^mdMenuBar'], + controller: 'mdMenuCtrl', // empty function to be built by link + scope: true, + compile: compile + }; + + function compile(templateElement) { + templateElement.addClass('md-menu'); + var triggerElement = templateElement.children()[0]; + if (!triggerElement.hasAttribute('ng-click')) { + triggerElement = triggerElement.querySelector('[ng-click],[ng-mouseenter]') || triggerElement; + } + if (triggerElement && ( + triggerElement.nodeName == 'MD-BUTTON' || + triggerElement.nodeName == 'BUTTON' + ) && !triggerElement.hasAttribute('type')) { + triggerElement.setAttribute('type', 'button'); + } + + if (templateElement.children().length != 2) { + throw Error(INVALID_PREFIX + 'Expected two children elements.'); + } + + // Default element for ARIA attributes has the ngClick or ngMouseenter expression + triggerElement && triggerElement.setAttribute('aria-haspopup', 'true'); + + var nestedMenus = templateElement[0].querySelectorAll('md-menu'); + var nestingDepth = parseInt(templateElement[0].getAttribute('md-nest-level'), 10) || 0; + if (nestedMenus) { + angular.forEach($mdUtil.nodesToArray(nestedMenus), function(menuEl) { + if (!menuEl.hasAttribute('md-position-mode')) { + menuEl.setAttribute('md-position-mode', 'cascade'); + } + menuEl.classList.add('md-nested-menu'); + menuEl.setAttribute('md-nest-level', nestingDepth + 1); + menuEl.setAttribute('role', 'menu'); + }); + } + return link; + } + + function link(scope, element, attrs, ctrls) { + var mdMenuCtrl = ctrls[0]; + var isInMenuBar = ctrls[1] != undefined; + // Move everything into a md-menu-container and pass it to the controller + var menuContainer = angular.element( + '
    ' + ); + var menuContents = element.children()[1]; + menuContainer.append(menuContents); + if (isInMenuBar) { + element.append(menuContainer); + menuContainer[0].style.display = 'none'; + } + mdMenuCtrl.init(menuContainer, { isInMenuBar: isInMenuBar }); + + scope.$on('$destroy', function() { + menuContainer.remove(); + mdMenuCtrl.close(); + }); + + } +} +MenuDirective.$inject = ["$mdUtil"]; + +})(); +(function(){ +"use strict"; + +angular + .module('material.components.menu') + .provider('$mdMenu', MenuProvider); + +/* + * Interim element provider for the menu. + * Handles behavior for a menu while it is open, including: + * - handling animating the menu opening/closing + * - handling key/mouse events on the menu element + * - handling enabling/disabling scroll while the menu is open + * - handling redrawing during resizes and orientation changes + * + */ + +function MenuProvider($$interimElementProvider) { + var MENU_EDGE_MARGIN = 8; + + menuDefaultOptions.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$timeout"]; + return $$interimElementProvider('$mdMenu') + .setDefaults({ + methods: ['target'], + options: menuDefaultOptions + }); + + /* @ngInject */ + function menuDefaultOptions($mdUtil, $mdTheming, $mdConstant, $document, $window, $q, $$rAF, $animateCss, $animate, $timeout) { + var animator = $mdUtil.dom.animator; + + return { + parent: 'body', + onShow: onShow, + onRemove: onRemove, + hasBackdrop: true, + disableParentScroll: true, + skipCompile: true, + preserveScope: true, + skipHide: true, + themable: true + }; + + /** + * Show modal backdrop element... + * @returns {function(): void} A function that removes this backdrop + */ + function showBackdrop(scope, element, options) { + if (options.nestLevel) return angular.noop; + + // If we are not within a dialog... + if (options.disableParentScroll && !$mdUtil.getClosest(options.target, 'MD-DIALOG')) { + // !! DO this before creating the backdrop; since disableScrollAround() + // configures the scroll offset; which is used by mdBackDrop postLink() + options.restoreScroll = $mdUtil.disableScrollAround(options.element, options.parent); + } else { + options.disableParentScroll = false; + } + + if (options.hasBackdrop) { + options.backdrop = $mdUtil.createBackdrop(scope, "md-menu-backdrop md-click-catcher"); + + $animate.enter(options.backdrop, options.parent); + } + + /** + * Hide and destroys the backdrop created by showBackdrop() + */ + return function hideBackdrop() { + if (options.backdrop) { + // Override duration to immediately remove invisible backdrop + options.backdrop.off('click'); + $animate.leave(options.backdrop, {duration:0}); + } + if (options.disableParentScroll) { + options.restoreScroll(); + } + }; + } + + /** + * Removing the menu element from the DOM and remove all associated evetn listeners + * and backdrop + */ + function onRemove(scope, element, opts) { + opts.cleanupInteraction(); + opts.cleanupResizing(); + opts.hideBackdrop(); + + return $animateCss(element, {addClass: 'md-leave'}) + .start() + .then(function() { + element.removeClass('md-active'); + + detachElement(element, opts); + opts.alreadyOpen = false; + }); + } + + /** + * Inserts and configures the staged Menu element into the DOM, positioning it, + * and wiring up various interaction events + */ + function onShow(scope, element, opts) { + sanitizeAndConfigure(opts); + + // Wire up theming on our menu element + $mdTheming.inherit(opts.menuContentEl, opts.target); + + // Register various listeners to move menu on resize/orientation change + opts.cleanupResizing = startRepositioningOnResize(); + opts.hideBackdrop = showBackdrop(scope, element, opts); + + // Return the promise for when our menu is done animating in + return showMenu() + .then(function(response) { + opts.alreadyOpen = true; + opts.cleanupInteraction = activateInteraction(); + return response; + }); + + /** + * Place the menu into the DOM and call positioning related functions + */ + function showMenu() { + if (!opts.preserveElement) { + opts.parent.append(element); + } else { + element[0].style.display = ''; + } + + return $q(function(resolve) { + var position = calculateMenuPosition(element, opts); + + element.removeClass('md-leave'); + + // Animate the menu scaling, and opacity [from its position origin (default == top-left)] + // to normal scale. + $animateCss(element, { + addClass: 'md-active', + from: animator.toCss(position), + to: animator.toCss({transform: ''}) + }) + .start() + .then(resolve); + + }); + } + + /** + * Check for valid opts and set some sane defaults + */ + function sanitizeAndConfigure() { + if (!opts.target) { + throw Error( + '$mdMenu.show() expected a target to animate from in options.target' + ); + } + angular.extend(opts, { + alreadyOpen: false, + isRemoved: false, + target: angular.element(opts.target), //make sure it's not a naked dom node + parent: angular.element(opts.parent), + menuContentEl: angular.element(element[0].querySelector('md-menu-content')) + }); + } + + /** + * Configure various resize listeners for screen changes + */ + function startRepositioningOnResize() { + + var repositionMenu = (function(target, options) { + return $$rAF.throttle(function() { + if (opts.isRemoved) return; + var position = calculateMenuPosition(target, options); + + target.css(animator.toCss(position)); + }); + })(element, opts); + + $window.addEventListener('resize', repositionMenu); + $window.addEventListener('orientationchange', repositionMenu); + + return function stopRepositioningOnResize() { + + // Disable resizing handlers + $window.removeEventListener('resize', repositionMenu); + $window.removeEventListener('orientationchange', repositionMenu); + + } + } + + /** + * Activate interaction on the menu. Wire up keyboard listerns for + * clicks, keypresses, backdrop closing, etc. + */ + function activateInteraction() { + element.addClass('md-clickable'); + + // close on backdrop click + if (opts.backdrop) opts.backdrop.on('click', onBackdropClick); + + // Wire up keyboard listeners. + // - Close on escape, + // - focus next item on down arrow, + // - focus prev item on up + opts.menuContentEl.on('keydown', onMenuKeyDown); + opts.menuContentEl[0].addEventListener('click', captureClickListener, true); + + // kick off initial focus in the menu on the first element + var focusTarget = opts.menuContentEl[0].querySelector('[md-menu-focus-target]') || + opts.menuContentEl[0].firstElementChild.querySelector('[tabindex]') || + opts.menuContentEl[0].firstElementChild.firstElementChild; + focusTarget.focus(); + + return function cleanupInteraction() { + element.removeClass('md-clickable'); + if (opts.backdrop) opts.backdrop.off('click', onBackdropClick); + opts.menuContentEl.off('keydown', onMenuKeyDown); + opts.menuContentEl[0].removeEventListener('click', captureClickListener, true); + }; + + // ************************************ + // internal functions + // ************************************ + + function onMenuKeyDown(ev) { + var handled; + var keyCodes = $mdConstant.KEY_CODE; + switch (ev.keyCode) { + case $mdConstant.KEY_CODE.ESCAPE: + opts.mdMenuCtrl.close(true, { closeAll: true }); + handled = true; + break; + case $mdConstant.KEY_CODE.UP_ARROW: + if (!focusMenuItem(ev, opts.menuContentEl, opts, -1)) { + opts.mdMenuCtrl.triggerContainerProxy(ev); + } + handled = true; + break; + case $mdConstant.KEY_CODE.DOWN_ARROW: + if (!focusMenuItem(ev, opts.menuContentEl, opts, 1)) { + opts.mdMenuCtrl.triggerContainerProxy(ev); + } + handled = true; + break; + case $mdConstant.KEY_CODE.LEFT_ARROW: + if (opts.nestLevel) { + opts.mdMenuCtrl.close(); + } else { + opts.mdMenuCtrl.triggerContainerProxy(ev); + } + handled = true; + break; + case $mdConstant.KEY_CODE.RIGHT_ARROW: + var parentMenu = $mdUtil.getClosest(ev.target, 'MD-MENU'); + if (parentMenu && parentMenu != opts.parent[0]) { + ev.target.click(); + } else { + opts.mdMenuCtrl.triggerContainerProxy(ev); + } + handled = true; + break; + } + if (handled) { + ev.preventDefault(); + ev.stopImmediatePropagation(); + } + } + + function onBackdropClick(e) { + e.preventDefault(); + e.stopPropagation(); + scope.$apply(function() { + opts.mdMenuCtrl.close(true, { closeAll: true }); + }); + } + + // Close menu on menu item click, if said menu-item is not disabled + function captureClickListener(e) { + var target = e.target; + // Traverse up the event until we get to the menuContentEl to see if + // there is an ng-click and that the ng-click is not disabled + do { + if (target == opts.menuContentEl[0]) return; + if (hasAnyAttribute(target, ['ng-click', 'ng-href', 'ui-sref']) || + target.nodeName == 'BUTTON' || target.nodeName == 'MD-BUTTON') { + var closestMenu = $mdUtil.getClosest(target, 'MD-MENU'); + if (!target.hasAttribute('disabled') && (!closestMenu || closestMenu == opts.parent[0])) { + close(); + } + break; + } + } while (target = target.parentNode) + + function close() { + scope.$apply(function() { + opts.mdMenuCtrl.close(true, { closeAll: true }); + }); + } + + function hasAnyAttribute(target, attrs) { + if (!target) return false; + for (var i = 0, attr; attr = attrs[i]; ++i) { + var altForms = [attr, 'data-' + attr, 'x-' + attr]; + for (var j = 0, rawAttr; rawAttr = altForms[j]; ++j) { + if (target.hasAttribute(rawAttr)) { + return true; + } + } + } + return false; + } + } + + opts.menuContentEl[0].addEventListener('click', captureClickListener, true); + + return function cleanupInteraction() { + element.removeClass('md-clickable'); + opts.menuContentEl.off('keydown'); + opts.menuContentEl[0].removeEventListener('click', captureClickListener, true); + }; + } + } + + /** + * Takes a keypress event and focuses the next/previous menu + * item from the emitting element + * @param {event} e - The origin keypress event + * @param {angular.element} menuEl - The menu element + * @param {object} opts - The interim element options for the mdMenu + * @param {number} direction - The direction to move in (+1 = next, -1 = prev) + */ + function focusMenuItem(e, menuEl, opts, direction) { + var currentItem = $mdUtil.getClosest(e.target, 'MD-MENU-ITEM'); + + var items = $mdUtil.nodesToArray(menuEl[0].children); + var currentIndex = items.indexOf(currentItem); + + // Traverse through our elements in the specified direction (+/-1) and try to + // focus them until we find one that accepts focus + var didFocus; + for (var i = currentIndex + direction; i >= 0 && i < items.length; i = i + direction) { + var focusTarget = items[i].querySelector('.md-button'); + didFocus = attemptFocus(focusTarget); + if (didFocus) { + break; + } + } + return didFocus; + } + + /** + * Attempts to focus an element. Checks whether that element is the currently + * focused element after attempting. + * @param {HTMLElement} el - the element to attempt focus on + * @returns {bool} - whether the element was successfully focused + */ + function attemptFocus(el) { + if (el && el.getAttribute('tabindex') != -1) { + el.focus(); + return ($document[0].activeElement == el); + } + } + + /** + * Use browser to remove this element without triggering a $destory event + */ + function detachElement(element, opts) { + if (!opts.preserveElement) { + if (toNode(element).parentNode === toNode(opts.parent)) { + toNode(opts.parent).removeChild(toNode(element)); + } + } else { + toNode(element).style.display = 'none'; + } + } + + /** + * Computes menu position and sets the style on the menu container + * @param {HTMLElement} el - the menu container element + * @param {object} opts - the interim element options object + */ + function calculateMenuPosition(el, opts) { + + var containerNode = el[0], + openMenuNode = el[0].firstElementChild, + openMenuNodeRect = openMenuNode.getBoundingClientRect(), + boundryNode = $document[0].body, + boundryNodeRect = boundryNode.getBoundingClientRect(); + + var menuStyle = $window.getComputedStyle(openMenuNode); + + var originNode = opts.target[0].querySelector('[md-menu-origin]') || opts.target[0], + originNodeRect = originNode.getBoundingClientRect(); + + var bounds = { + left: boundryNodeRect.left + MENU_EDGE_MARGIN, + top: Math.max(boundryNodeRect.top, 0) + MENU_EDGE_MARGIN, + bottom: Math.max(boundryNodeRect.bottom, Math.max(boundryNodeRect.top, 0) + boundryNodeRect.height) - MENU_EDGE_MARGIN, + right: boundryNodeRect.right - MENU_EDGE_MARGIN + }; + + var alignTarget, alignTargetRect, existingOffsets; + var positionMode = opts.mdMenuCtrl.positionMode(); + + if (positionMode.top == 'target' || positionMode.left == 'target' || positionMode.left == 'target-right') { + // TODO: Allow centering on an arbitrary node, for now center on first menu-item's child + alignTarget = firstVisibleChild(); + if (!alignTarget) { + throw Error('Error positioning menu. No visible children.'); + } + + alignTarget = alignTarget.firstElementChild || alignTarget; + alignTarget = alignTarget.querySelector('[md-menu-align-target]') || alignTarget; + alignTargetRect = alignTarget.getBoundingClientRect(); + + existingOffsets = { + top: parseFloat(containerNode.style.top || 0), + left: parseFloat(containerNode.style.left || 0) + }; + } + + var position = {}; + var transformOrigin = 'top '; + + switch (positionMode.top) { + case 'target': + position.top = existingOffsets.top + originNodeRect.top - alignTargetRect.top; + break; + case 'cascade': + position.top = originNodeRect.top - parseFloat(menuStyle.paddingTop) - originNode.style.top; + break; + case 'bottom': + position.top = originNodeRect.top + originNodeRect.height; + break; + default: + throw new Error('Invalid target mode "' + positionMode.top + '" specified for md-menu on Y axis.'); + } + + switch (positionMode.left) { + case 'target': + position.left = existingOffsets.left + originNodeRect.left - alignTargetRect.left; + transformOrigin += 'left'; + break; + case 'target-right': + position.left = originNodeRect.right - openMenuNodeRect.width + (openMenuNodeRect.right - alignTargetRect.right); + transformOrigin += 'right'; + break; + case 'cascade': + var willFitRight = (originNodeRect.right + openMenuNodeRect.width) < bounds.right; + position.left = willFitRight ? originNodeRect.right - originNode.style.left : originNodeRect.left - originNode.style.left - openMenuNodeRect.width; + transformOrigin += willFitRight ? 'left' : 'right'; + break; + case 'left': + position.left = originNodeRect.left; + transformOrigin += 'left'; + break; + default: + throw new Error('Invalid target mode "' + positionMode.left + '" specified for md-menu on X axis.'); + } + + var offsets = opts.mdMenuCtrl.offsets(); + position.top += offsets.top; + position.left += offsets.left; + + clamp(position); + + var scaleX = Math.round(100 * Math.min(originNodeRect.width / containerNode.offsetWidth, 1.0)) / 100; + var scaleY = Math.round(100 * Math.min(originNodeRect.height / containerNode.offsetHeight, 1.0)) / 100; + + return { + top: Math.round(position.top), + left: Math.round(position.left), + // Animate a scale out if we aren't just repositioning + transform: !opts.alreadyOpen ? $mdUtil.supplant('scale({0},{1})', [scaleX, scaleY]) : undefined, + transformOrigin: transformOrigin + }; + + /** + * Clamps the repositioning of the menu within the confines of + * bounding element (often the screen/body) + */ + function clamp(pos) { + pos.top = Math.max(Math.min(pos.top, bounds.bottom - containerNode.offsetHeight), bounds.top); + pos.left = Math.max(Math.min(pos.left, bounds.right - containerNode.offsetWidth), bounds.left); + } + + /** + * Gets the first visible child in the openMenuNode + * Necessary incase menu nodes are being dynamically hidden + */ + function firstVisibleChild() { + for (var i = 0; i < openMenuNode.children.length; ++i) { + if ($window.getComputedStyle(openMenuNode.children[i]).display != 'none') { + return openMenuNode.children[i]; + } + } + } + } + } + function toNode(el) { + if (el instanceof angular.element) { + el = el[0]; + } + return el; + } +} +MenuProvider.$inject = ["$$interimElementProvider"]; + +})(); +(function(){ +"use strict"; + + +angular + .module('material.components.menuBar') + .controller('MenuBarController', MenuBarController); + +var BOUND_MENU_METHODS = ['handleKeyDown', 'handleMenuHover', 'scheduleOpenHoveredMenu', 'cancelScheduledOpen']; + +/** + * @ngInject + */ +function MenuBarController($scope, $element, $attrs, $mdConstant, $document, $mdUtil, $timeout) { + this.$element = $element; + this.$attrs = $attrs; + this.$mdConstant = $mdConstant; + this.$mdUtil = $mdUtil; + this.$document = $document; + this.$scope = $scope; + this.$timeout = $timeout; + + var self = this; + angular.forEach(BOUND_MENU_METHODS, function(methodName) { + self[methodName] = angular.bind(self, self[methodName]); + }); +} +MenuBarController.$inject = ["$scope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"]; + +MenuBarController.prototype.init = function() { + var $element = this.$element; + var $mdUtil = this.$mdUtil; + var $scope = this.$scope; + + var self = this; + $element.on('keydown', this.handleKeyDown); + this.parentToolbar = $mdUtil.getClosest($element, 'MD-TOOLBAR'); + + $scope.$on('$mdMenuOpen', function(event, el) { + if (self.getMenus().indexOf(el[0]) != -1) { + $element[0].classList.add('md-open'); + el[0].classList.add('md-open'); + self.currentlyOpenMenu = el.controller('mdMenu'); + self.currentlyOpenMenu.registerContainerProxy(self.handleKeyDown); + self.enableOpenOnHover(); + } + }); + + $scope.$on('$mdMenuClose', function(event, el) { + var rootMenus = self.getMenus(); + if (rootMenus.indexOf(el[0]) != -1) { + $element[0].classList.remove('md-open'); + el[0].classList.remove('md-open'); + } + + if ($element[0].contains(el[0])) { + var parentMenu = el[0]; + while (parentMenu && rootMenus.indexOf(parentMenu) == -1) { + parentMenu = $mdUtil.getClosest(parentMenu, 'MD-MENU', true); + } + if (parentMenu) { + parentMenu.querySelector('button').focus(); + self.currentlyOpenMenu = undefined; + self.disableOpenOnHover(); + self.setKeyboardMode(true); + } + } + }); + + angular + .element(this.getMenus()) + .on('mouseenter', this.handleMenuHover); + + this.setKeyboardMode(true); +}; + +MenuBarController.prototype.setKeyboardMode = function(enabled) { + if (enabled) this.$element[0].classList.add('md-keyboard-mode'); + else this.$element[0].classList.remove('md-keyboard-mode'); +}; + +MenuBarController.prototype.enableOpenOnHover = function() { + if (this.openOnHoverEnabled) return; + this.openOnHoverEnabled = true; + + var $element = this.$element; + + var parentToolbar; + if (parentToolbar = this.parentToolbar) { + parentToolbar.dataset.mdRestoreStyle = parentToolbar.getAttribute('style'); + parentToolbar.style.position = 'relative'; + parentToolbar.style.zIndex = 100; + } +}; + +MenuBarController.prototype.handleMenuHover = function(e) { + this.setKeyboardMode(false); + if (this.openOnHoverEnabled) { + this.scheduleOpenHoveredMenu(e); + } +}; + + +MenuBarController.prototype.disableOpenOnHover = function() { + if (!this.openOnHoverEnabled) return; + this.openOnHoverEnabled = false; + var parentToolbar; + if (parentToolbar = this.parentToolbar) { + parentToolbar.setAttribute('style', parentToolbar.dataset.mdRestoreStyle || ''); + } +}; + +MenuBarController.prototype.scheduleOpenHoveredMenu = function(e) { + var menuEl = angular.element(e.currentTarget); + var menuCtrl = menuEl.controller('mdMenu'); + this.setKeyboardMode(false); + this.scheduleOpenMenu(menuCtrl); +}; + +MenuBarController.prototype.scheduleOpenMenu = function(menuCtrl) { + var self = this; + var $timeout = this.$timeout; + if (menuCtrl != self.currentlyOpenMenu) { + $timeout.cancel(self.pendingMenuOpen); + self.pendingMenuOpen = $timeout(function() { + self.pendingMenuOpen = undefined; + if (self.currentlyOpenMenu) { + self.currentlyOpenMenu.close(true, { closeAll: true }); + } + menuCtrl.open(); + }, 200, false); + } +} + +MenuBarController.prototype.handleKeyDown = function(e) { + var keyCodes = this.$mdConstant.KEY_CODE; + var currentMenu = this.currentlyOpenMenu; + var wasOpen = currentMenu && currentMenu.isOpen; + this.setKeyboardMode(true); + var handled; + switch (e.keyCode) { + case keyCodes.DOWN_ARROW: + if (currentMenu) { + currentMenu.focusMenuContainer(); + } else { + this.openFocusedMenu(); + } + handled = true; + break; + case keyCodes.UP_ARROW: + currentMenu && currentMenu.close(); + handled = true; + break; + case keyCodes.LEFT_ARROW: + var newMenu = this.focusMenu(-1); + if (wasOpen) { + var newMenuCtrl = angular.element(newMenu).controller('mdMenu'); + this.scheduleOpenMenu(newMenuCtrl); + } + handled = true; + break; + case keyCodes.RIGHT_ARROW: + var newMenu = this.focusMenu(+1); + if (wasOpen) { + var newMenuCtrl = angular.element(newMenu).controller('mdMenu'); + this.scheduleOpenMenu(newMenuCtrl); + } + handled = true; + break; + } + if (handled) { + e && e.preventDefault && e.preventDefault(); + e && e.stopImmediatePropagation && e.stopImmediatePropagation(); + } +}; + +MenuBarController.prototype.focusMenu = function(direction) { + var menus = this.getMenus(); + var focusedIndex = this.getFocusedMenuIndex(); + + if (focusedIndex == -1) { focusedIndex = this.getOpenMenuIndex(); } + + var changed = false; + + if (focusedIndex == -1) { focusedIndex = 0; } + else if ( + direction < 0 && focusedIndex > 0 || + direction > 0 && focusedIndex < menus.length - direction + ) { + focusedIndex += direction; + changed = true; + } + if (changed) { + menus[focusedIndex].querySelector('button').focus(); + return menus[focusedIndex]; + } +}; + +MenuBarController.prototype.openFocusedMenu = function() { + var menu = this.getFocusedMenu(); + menu && angular.element(menu).controller('mdMenu').open(); +}; + +MenuBarController.prototype.getMenus = function() { + var $element = this.$element; + return this.$mdUtil.nodesToArray($element[0].children) + .filter(function(el) { return el.nodeName == 'MD-MENU'; }); +}; + +MenuBarController.prototype.getFocusedMenu = function() { + return this.getMenus()[this.getFocusedMenuIndex()]; +}; + +MenuBarController.prototype.getFocusedMenuIndex = function() { + var $mdUtil = this.$mdUtil; + var $element = this.$element; + var focusedEl = $mdUtil.getClosest( + this.$document[0].activeElement, + 'MD-MENU' + ); + if (!focusedEl) return -1; + + var focusedIndex = this.getMenus().indexOf(focusedEl); + return focusedIndex; + +}; + +MenuBarController.prototype.getOpenMenuIndex = function() { + var menus = this.getMenus(); + for (var i = 0; i < menus.length; ++i) { + if (menus[i].classList.contains('md-open')) return i; + } + return -1; +}; + + + + + + + + + +})(); +(function(){ +"use strict"; + +/** + * @ngdoc directive + * @name mdMenuBar + * @module material.components.menu-bar + * @restrict E + * @description + * + * Menu bars are containers that hold multiple menus. They change the behavior and appearence + * of the `md-menu` directive to behave similar to an operating system provided menu. + * + * @usage + * + * + * + * + * + * + * + * Share... + * + * + * + * + * + * + * New + * + * Document + * Spreadsheet + * Presentation + * Form + * Drawing + * + * + * + * + * + * + * + * + * ## Menu Bar Controls + * + * You may place `md-menu-items` that function as controls within menu bars. + * There are two modes that are exposed via the `type` attribute of the `md-menu-item`. + * `type="checkbox"` will function as a boolean control for the `ng-model` attribute of the + * `md-menu-item`. `type="radio"` will function like a radio button, setting the `ngModel` + * to the `string` value of the `value` attribute. If you need non-string values, you can use + * `ng-value` to provide an expression (this is similar to how angular's native `input[type=radio]` works. + * + * + * + * + * + * + * Allow changes + * + * Mode 1 + * Mode 2 + * Mode 3 + * + * + * + * + * + * + * ### Nesting Menus + * + * Menus may be nested within menu bars. This is commonly called cascading menus. + * To nest a menu place the nested menu inside the content of the `md-menu-item`. + * + * + * + *
    ');return e.appendChild(a[0]),a.on("wheel",r),a.on("touchmove",r),o.on("keydown",n),function(){a.off("wheel"),a.off("touchmove"),a[0].parentNode.removeChild(a[0]),o.off("keydown",n),delete p.disableScrollAround._enableScrolling}}function i(){var e=d.parentNode,t=e.getAttribute("style")||"",n=d.getAttribute("style")||"",o=p.scrollTop(d),r=d.clientWidth;return d.scrollHeight>d.clientHeight&&(a(d,{position:"fixed",width:"100%",top:-o+"px"}),a(e,{overflowY:"scroll"})),d.clientWidth
    ');o[0].body.appendChild(e[0]),this.floatingScrollbars.cached=e[0].offsetWidth==e[0].childNodes[0].offsetWidth,e.remove()}return this.floatingScrollbars.cached},forceFocus:function(t){var n=t[0]||t;document.addEventListener("click",function r(e){e.target===n&&e.$focus&&(n.focus(),e.stopImmediatePropagation(),e.preventDefault(),n.removeEventListener("click",r))},!0);var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!1,!0,e,{},0,0,0,0,!1,!1,!1,!1,0,null),o.$material=!0,o.$focus=!0,n.dispatchEvent(o)},createBackdrop:function(e,t){return a(p.supplant('',[t]))(e)},supplant:function(e,t,n){return n=n||/\{([^\{\}]*)\}/g,e.replace(n,function(e,n){var o=n.split("."),r=t;try{for(var i in o)r=r[o[i]]}catch(a){r=e}return"string"==typeof r||"number"==typeof r?r:e})},fakeNgModel:function(){return{$fake:!0,$setTouched:t.noop,$setViewValue:function(e){this.$viewValue=e,this.$render(e),this.$viewChangeListeners.forEach(function(e){e()})},$isEmpty:function(e){return 0===(""+e).length},$parsers:[],$formatters:[],$viewChangeListeners:[],$render:t.noop}},debounce:function(e,t,o,r){var a;return function(){var d=o,c=Array.prototype.slice.call(arguments);i.cancel(a),a=i(function(){a=n,e.apply(d,c)},t||10,r)}},throttle:function(e,t){var n;return function(){var o=this,r=arguments,i=p.now();(!n||i-n>t)&&(e.apply(o,r),n=i)}},time:function(e){var t=p.now();return e(),p.now()-t},valueOnUse:function(e,t,n){var o=null,r=Array.prototype.slice.call(arguments),i=r.length>3?r.slice(3):[];Object.defineProperty(e,t,{get:function(){return null===o&&(o=n.apply(e,i)),o}})},nextUid:function(){return""+r++},disconnectScope:function(e){if(e&&e.$root!==e&&!e.$$destroyed){var t=e.$parent;e.$$disconnected=!0,t.$$childHead===e&&(t.$$childHead=e.$$nextSibling),t.$$childTail===e&&(t.$$childTail=e.$$prevSibling),e.$$prevSibling&&(e.$$prevSibling.$$nextSibling=e.$$nextSibling),e.$$nextSibling&&(e.$$nextSibling.$$prevSibling=e.$$prevSibling),e.$$nextSibling=e.$$prevSibling=null}},reconnectScope:function(e){if(e&&e.$root!==e&&e.$$disconnected){var t=e,n=t.$parent;t.$$disconnected=!1,t.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=t,n.$$childTail=t):n.$$childHead=n.$$childTail=t}},getClosest:function(e,n,o){if(e instanceof t.element&&(e=e[0]),n=n.toUpperCase(),o&&(e=e.parentNode),!e)return null;do if(e.nodeName===n)return e;while(e=e.parentNode);return null},elementContains:function(n,o){var r=e.Node&&e.Node.prototype&&Node.prototype.contains,i=r?t.bind(n,n.contains):t.bind(n,function(e){return n===o||!!(16&this.compareDocumentPosition(e))});return i(o)},extractElementByName:function(e,n){for(var o=0,r=e.length;r>o;o++)if(e[o].nodeName.toLowerCase()===n)return t.element(e[o]);return e},initOptionalProperties:function(e,n,o){o=o||{},t.forEach(e.$$isolateBindings,function(r,i){if(r.optional&&t.isUndefined(e[i])){var a=t.isDefined(n[r.attrName]);e[i]=t.isDefined(o[i])?o[i]:a}})},nextTick:function(e,t){function n(){var e=o.queue,t=o.digest;o.queue=[],o.timeout=null,o.digest=!1,e.forEach(function(e){e()}),t&&d.$digest()}var o=p.nextTick,r=o.timeout,a=o.queue||[];return a.push(e),null==t&&(t=!0),o.digest=o.digest||t,o.queue=a,r||(o.timeout=i(n,0,!1))},processTemplate:function(e){return h?e:e&&t.isString(e)?e.replace(/\{\{/g,m).replace(/}}/g,u):e}};return p.dom.animator=c(p),p}var r=0;t.module("material.core").factory("$mdUtil",o),o.$inject=["$document","$timeout","$compile","$rootScope","$$mdAnimate","$interpolate"],t.element.prototype.focus=t.element.prototype.focus||function(){return this.length&&this[0].focus(),this},t.element.prototype.blur=t.element.prototype.blur||function(){return this.length&&this[0].blur(),this}}(),function(){function e(e,n,o){function r(e,o,r){var i=e[0]||e;!i||i.hasAttribute(o)&&0!==i.getAttribute(o).length||c(i,o)||(r=t.isString(r)?r.trim():"",r.length?e.attr(o,r):n.warn('ARIA: Attribute "',o,'", required for accessibility, is missing on node:',i))}function i(t,n,o){e(function(){r(t,n,o())})}function a(e,t){i(e,t,function(){return d(e)})}function d(e){return e.text().trim()}function c(e,t){function n(e){var t=e.currentStyle?e.currentStyle:o.getComputedStyle(e);return"none"===t.display}var r=e.hasChildNodes(),i=!1;if(r)for(var a=e.childNodes,d=0;d").html(o.trim()).contents(),c=r(a);return n={locals:e,element:a,link:function(o){if(e.$scope=o,s){var r=i(s,e,!0);f&&t.extend(r.instance,e);var d=r();a.data("$ngControllerController",d),a.children().data("$ngControllerController",d),m&&(o[m]=d),n.controller=d}return c(o)}}})}}t.module("material.core").service("$mdCompiler",e),e.$inject=["$q","$http","$injector","$compile","$controller","$templateCache"]}(),function(){function n(){}function o(n,o,r){function i(e,t,n){var o=p[t.replace(/^\$md./,"")];if(!o)throw new Error("Failed to register element with handler "+t+". Available handlers: "+Object.keys(p).join(", "));return o.registerElement(e,n)}function a(e,o){var r=new n(e);return t.extend(r,o),p[e]=r,h}var c=navigator.userAgent||navigator.vendor||e.opera,l=c.match(/ipad|iphone|ipod/i),m=c.match(/android/i),u="undefined"!=typeof e.jQuery&&t.element===e.jQuery,h={handler:a,register:i,isHijackingClicks:(l||m)&&!u&&!f};return h.isHijackingClicks&&h.handler("click",{options:{maxDistance:6},onEnd:function(e,t){t.distancethis.options.maxDistance&&this.cancel()},onEnd:function(){this.onCancel()}}).handler("drag",{options:{minDistance:6,horizontal:!0,cancelMultiplier:1.5},onStart:function(e){this.state.registeredParent||this.cancel()},onMove:function(e,t){var n,o;e.preventDefault(),this.state.dragPointer?this.dispatchDragMove(e):(this.state.options.horizontal?(n=Math.abs(t.distanceX)>this.state.options.minDistance,o=Math.abs(t.distanceY)>this.state.options.minDistance*this.state.options.cancelMultiplier):(n=Math.abs(t.distanceY)>this.state.options.minDistance,o=Math.abs(t.distanceX)>this.state.options.minDistance*this.state.options.cancelMultiplier),n?(this.state.dragPointer=d(e),s(e,this.state.dragPointer),this.dispatchEvent(e,"$md.dragstart",this.state.dragPointer)):o&&this.cancel())},dispatchDragMove:o.throttle(function(e){this.state.isRunning&&(s(e,this.state.dragPointer),this.dispatchEvent(e,"$md.drag",this.state.dragPointer))}),onEnd:function(e,t){this.state.dragPointer&&(s(e,this.state.dragPointer),this.dispatchEvent(e,"$md.dragend",this.state.dragPointer))}}).handler("swipe",{options:{minVelocity:.65,minDistance:10},onEnd:function(e,t){if(Math.abs(t.velocityX)>this.state.options.minVelocity&&Math.abs(t.distanceX)>this.state.options.minDistance){var n="left"==t.directionX?"$md.swipeleft":"$md.swiperight";this.dispatchEvent(e,n)}}})}function r(e){this.name=e,this.state={}}function i(){function n(e,n,o){o=o||u;var r=new t.element.Event(n);r.$material=!0,r.pointer=o,r.srcEvent=e,t.extend(r,{clientX:o.x,clientY:o.y,screenX:o.x,screenY:o.y,pageX:o.x,pageY:o.y,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey}),t.element(o.target).trigger(r)}function o(t,n,o){o=o||u;var r;"click"===n?(r=document.createEvent("MouseEvents"),r.initMouseEvent("click",!0,!0,e,t.detail,o.x,o.y,o.x,o.y,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget||null)):(r=document.createEvent("CustomEvent"),r.initCustomEvent(n,!0,!0,{})),r.$material=!0,r.pointer=o,r.srcEvent=t,o.target.dispatchEvent(r)}var i="undefined"!=typeof e.jQuery&&t.element===e.jQuery;return r.prototype={options:{},dispatchEvent:i?n:o,onStart:t.noop,onMove:t.noop,onEnd:t.noop,onCancel:t.noop,start:function(e,n){if(!this.state.isRunning){var o=this.getNearestParent(e.target),r=o&&o.$mdGesture[this.name]||{};this.state={isRunning:!0,options:t.extend({},this.options,r),registeredParent:o},this.onStart(e,n)}},move:function(e,t){this.state.isRunning&&this.onMove(e,t)},end:function(e,t){this.state.isRunning&&(this.onEnd(e,t),this.state.isRunning=!1)},cancel:function(e,t){this.onCancel(e,t),this.state={}},getNearestParent:function(e){for(var t=e;t;){if((t.$mdGesture||{})[this.name])return t;t=t.parentNode}return null},registerElement:function(e,t){function n(){delete e[0].$mdGesture[o.name],e.off("$destroy",n)}var o=this;return e[0].$mdGesture=e[0].$mdGesture||{},e[0].$mdGesture[this.name]=t||{},e.on("$destroy",n),n}},r}function a(e,n){function o(e,t){var o;for(var r in p)o=p[r],o instanceof n&&("start"===e&&o.cancel(),o[e](t,u))}function r(e){if(!u){var t=+Date.now();h&&!c(e,h)&&t-h.endTime<1500||(u=d(e),o("start",e))}}function i(e){u&&c(e,u)&&(s(e,u),o("move",e))}function a(e){u&&c(e,u)&&(s(e,u),u.endTime=+Date.now(),o("end",e),h=u,u=null)}document.contains||(document.contains=function(e){return document.body.contains(e)}),!b&&e.isHijackingClicks&&(document.addEventListener("click",function(e){var t=0===e.clientX&&0===e.clientY;t||e.$material||e.isIonicTap||l(e)?(g=null,"label"==e.target.tagName.toLowerCase()&&(g={x:e.x,y:e.y})):(e.preventDefault(),e.stopPropagation(),g=null)},!0),b=!0);var m="mousedown touchstart pointerdown",f="mousemove touchmove pointermove",E="mouseup mouseleave touchend touchcancel pointerup pointercancel";t.element(document).on(m,r).on(f,i).on(E,a).on("$$mdGestureReset",function(){h=u=null})}function d(e){var t=m(e),n={startTime:+Date.now(),target:e.target,type:e.type.charAt(0)};return n.startX=n.x=t.pageX,n.startY=n.y=t.pageY,n}function c(e,t){return e&&t&&e.type.charAt(0)===t.type}function l(e){return g&&g.x==e.x&&g.y==e.y}function s(e,t){var n=m(e),o=t.x=n.pageX,r=t.y=n.pageY;t.distanceX=o-t.startX,t.distanceY=r-t.startY,t.distance=Math.sqrt(t.distanceX*t.distanceX+t.distanceY*t.distanceY),t.directionX=t.distanceX>0?"right":t.distanceX<0?"left":"",t.directionY=t.distanceY>0?"up":t.distanceY<0?"down":"",t.duration=+Date.now()-t.startTime,t.velocityX=t.distanceX/t.duration,t.velocityY=t.distanceY/t.duration}function m(e){return e=e.originalEvent||e,e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0]||e}var u,h,p={},f=!1,g=null,b=!1;t.module("material.core.gestures",[]).provider("$mdGesture",n).factory("$$MdGestureHandler",i).run(a),n.prototype={skipClickHijack:function(){return f=!0},$get:["$$MdGestureHandler","$$rAF","$timeout",function(e,t,n){return new o(e,t,n)}]},o.$inject=["$$MdGestureHandler","$$rAF","$timeout"],a.$inject=["$mdGesture","$$MdGestureHandler"]}(),function(){function e(){function e(e){function n(e){return c.optionsFactory=e.options,c.methods=(e.methods||[]).concat(a),l}function o(e,t){return d[e]=t,l}function r(t,n){if(n=n||{},n.methods=n.methods||[],n.options=n.options||function(){return{}},/^cancel|hide|show$/.test(t))throw new Error("Preset '"+t+"' in "+e+" is reserved!");if(n.methods.indexOf("_options")>-1)throw new Error("Method '_options' in "+e+" is reserved!");return c.presets[t]={methods:n.methods.concat(a),optionsFactory:n.options,argOption:n.argOption},l}function i(n,o){function r(e){return e=e||{},e._options&&(e=e._options),s.show(t.extend({},l,e))}function i(t,n){var r={};return r[e]=m,o.invoke(t||function(){return n},{},r)}var a,l,s=n(),m={hide:s.hide,cancel:s.cancel,show:r};return a=c.methods||[],l=i(c.optionsFactory,{}),t.forEach(d,function(e,t){m[t]=e}),t.forEach(c.presets,function(e,n){function o(e){this._options=t.extend({},r,e)}var r=i(e.optionsFactory,{}),d=(e.methods||[]).concat(a);if(t.extend(r,{$type:n}),t.forEach(d,function(e){o.prototype[e]=function(t){return this._options[e]=t,this}}),e.argOption){var c="show"+n.charAt(0).toUpperCase()+n.slice(1);m[c]=function(e){var t=m[n](e);return m.show(t)}}m[n]=function(n){return arguments.length&&e.argOption&&!t.isObject(n)&&!t.isArray(n)?(new o)[e.argOption](n):new o(n)}}),m}var a=["onHide","onShow","onRemove"],d={},c={presets:{}},l={setDefaults:n,addPreset:r,addMethod:o,$get:i};return l.addPreset("build",{methods:["controller","controllerAs","resolve","template","templateUrl","themable","transformTemplate","parent"]}),i.$inject=["$$interimElement","$injector"],l}function o(e,o,r,i,a,d,c,l,s,m){return function(){function m(e){var t=new p(e),n=E.length?f.hide():o.when(!0);return n["finally"](function(){E.push(t),t.show()["catch"](function(e){})}),t.deferred.promise}function u(e){var t=E.shift();return t?(t.remove(e||b,!1)["catch"](function(e){}),t.deferred.promise):o.when(e)}function h(e){var t=E.shift();return t?(t.remove(e||g,!0)["catch"](function(e){}),t.deferred.promise):o.when(e)}function p(m){function u(){return o(function(e,t){function n(e){y.deferred.reject(e),t(e)}g(m).then(function(t){A=b(t,m),C=$(A,m,t.controller).then(e,n)})})}function h(e,t){return m.cancelAutoHide&&m.cancelAutoHide(),o(function(n,r){function i(){y.deferred.resolve(e),n(e)}function a(e){y.deferred.reject(e),r(e)}o.when(C)["finally"](function(){M(m.element,m).then(function(){t&&a(e)||i()},a)})})}function p(e){return e=e||{},e.template&&(e.template=c.processTemplate(e.template)),t.extend({preserveScope:!1,cancelAutoHide:t.noop,scope:e.scope||r.$new(e.isolateScope),onShow:function(e,t,n){return d.enter(t,n.parent)},onRemove:function(e,t){return t&&d.leave(t)||o.when()}},e)}function g(e){var t=e.skipCompile?null:l.compile(e);return t||o(function(t){t({locals:{},link:function(){return e.element}})})}function b(e,n){t.extend(e.locals,n);var o=e.link(n.scope);return n.element=o,n.parent=E(o,n),n.themable&&s(o),o}function E(n,o){var r=o.parent;if(r=t.isFunction(r)?r(o.scope,n,o):t.element(t.isString(r)?e[0].querySelector(r):r),!(r||{}).length){var i;return a[0]&&a[0].querySelector&&(i=a[0].querySelector(":not(svg) > body")),i||(i=a[0]),"#comment"==i.nodeName&&(i=e[0].body),t.element(i)}return r}function v(){var e,o=t.noop;m.hideDelay&&(e=i(f.hide,m.hideDelay),o=function(){i.cancel(e)}),m.cancelAutoHide=function(){o(),m.cancelAutoHide=n}}function $(e,n,r){var i=n.onComplete||t.noop;return o(function(t,a){try{o.when(n.onShow(n.scope,e,n,r)).then(function(){i(n.scope,e,n),v(),t(e)},a)}catch(d){a(d.message)}})}function M(e,n){var r=n.onRemoving||t.noop;return o(function(t,i){try{var a=o.when(e?n.onRemove(n.scope,e,n):!0);r(e,a),a.then(function(){!n.preserveScope&&n.scope.$destroy(),t(e)},i)}catch(d){i(d.message)}})}var y,A,C=o.when(!0);return m=p(m),y={options:m,deferred:o.defer(),show:u,remove:h}}var f,g=!1,b=!0,E=[];return f={show:m,hide:u,cancel:h}}}return e.$get=o,o.$inject=["$document","$q","$rootScope","$timeout","$rootElement","$animate","$mdUtil","$mdCompiler","$mdTheming","$log"],e}t.module("material.core").provider("$$interimElement",e)}(),function(){function e(e,n){function o(e){return e&&""!==e}var r,i=[],a={};return r={notFoundError:function(t){e.error("No instance found for handle",t)},getInstances:function(){return i},get:function(e){if(!o(e))return null;var t,n,r;for(t=0,n=i.length;n>t;t++)if(r=i[t],r.$$mdHandle===e)return r;return null},register:function(e,n){function o(){var t=i.indexOf(e);-1!==t&&i.splice(t,1)}function r(){var t=a[n];t&&(t.resolve(e),delete a[n])}return n?(e.$$mdHandle=n,i.push(e),r(),o):t.noop},when:function(e){if(o(e)){var t=n.defer(),i=r.get(e);return i?t.resolve(i):a[e]=t,t.promise}return n.reject("Invalid `md-component-id` value.")}}}t.module("material.core").factory("$mdComponentRegistry",e),e.$inject=["$log","$q"]}(),function(){!function(){function e(e){function n(n,r,i){var a=o(r);return e.attach(n,r,t.extend(a,i))}function o(e){return e.hasClass("md-icon-button")?{isMenuItem:e.hasClass("md-menu-item"),fitRipple:!0,center:!0}:{isMenuItem:e.hasClass("md-menu-item"),dimBackground:!0}}return{attach:n}}t.module("material.core").factory("$mdButtonInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!0,dimBackground:!1,fitRipple:!0},r))}return{attach:n}}t.module("material.core").factory("$mdCheckboxInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdListInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){function e(e,n){return{controller:t.noop,link:function(t,o,r){r.hasOwnProperty("mdInkRippleCheckbox")?n.attach(t,o):e.attach(t,o)}}}function n(e){function n(n,r,i){return r.controller("mdNoInk")?t.noop:e.instantiate(o,{$scope:n,$element:r,rippleOptions:i})}return{attach:n}}function o(e,n,o,r,i,a){this.$window=r,this.$timeout=i,this.$mdUtil=a,this.$scope=e,this.$element=n,this.options=o,this.mousedown=!1,this.ripples=[],this.timeout=null,this.lastRipple=null,a.valueOnUse(this,"container",this.createContainer),a.valueOnUse(this,"color",this.getColor,1),a.valueOnUse(this,"background",this.getColor,.5),(n.controller("mdInkRipple")||{}).createRipple=t.bind(this,this.createRipple),this.bindEvents()}function r(){return{controller:t.noop}}t.module("material.core").factory("$mdInkRipple",n).directive("mdInkRipple",e).directive("mdNoInk",r).directive("mdNoBar",r).directive("mdNoStretch",r);var i=450;e.$inject=["$mdButtonInkRipple","$mdCheckboxInkRipple"],n.$inject=["$injector"],o.$inject=["$scope","$element","rippleOptions","$window","$timeout","$mdUtil"],o.prototype.getColor=function(e){function t(){var e=this.options.colorElement&&this.options.colorElement[0];return e=e||this.$element[0],e?this.$window.getComputedStyle(e).color:"rgb(0,0,0)"}function n(t){function n(e){var t="#"===e[0]?e.substr(1):e,n=t.length/3,o=t.substr(0,n),r=t.substr(n,n),i=t.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),"rgba("+parseInt(o,16)+","+parseInt(r,16)+","+parseInt(i,16)+",0.1)"}function o(e){return e.replace(")",", 0.1)").replace("(","a(")}if(t)return 0===t.indexOf("rgba")?t.replace(/\d?\.?\d*\s*\)\s*$/,(.1*e).toString()+")"):0===t.indexOf("rgb")?o(t):0===t.indexOf("#")?n(t):void 0}return e=e||1,n(this.$element.attr("md-ink-ripple"))||n(t.call(this))},o.prototype.bindEvents=function(){this.$element.on("mousedown",t.bind(this,this.handleMousedown)),this.$element.on("mouseup",t.bind(this,this.handleMouseup)),this.$element.on("mouseleave",t.bind(this,this.handleMouseup))},o.prototype.handleMousedown=function(e){this.mousedown=!0,this.options.center?this.createRipple(this.container.prop("clientWidth")/2,this.container.prop("clientWidth")/2):this.createRipple(e.layerX,e.layerY)},o.prototype.handleMouseup=function(){var e=this;this.mousedown=!1,this.$mdUtil.nextTick(function(){e.clearRipples()},!1)},o.prototype.clearRipples=function(){for(var e=0;e
    ');return this.$element.append(e),e},o.prototype.clearTimeout=function(){this.timeout&&(this.$timeout.cancel(this.timeout),this.timeout=null)},o.prototype.createRipple=function(e,n){function o(e){return e?e.replace("rgba","rgb").replace(/,[^\),]+\)/,")"):"rgb(0,0,0)"}function r(e,t,n){return e?Math.max(t,n):Math.sqrt(Math.pow(t,2)+Math.pow(n,2))}var a=this,d=t.element('
    '),c=this.$element.prop("clientWidth"),l=this.$element.prop("clientHeight"),s=2*Math.max(Math.abs(c-e),e),m=2*Math.max(Math.abs(l-n),n),u=r(this.options.fitRipple,s,m);d.css({left:e+"px",top:n+"px",background:"black",width:u+"px",height:u+"px",backgroundColor:o(this.color),borderColor:o(this.color)}),this.lastRipple=d,this.clearTimeout(),this.timeout=this.$timeout(function(){a.clearTimeout(),a.mousedown||a.fadeInComplete(d)},.35*i,!1),this.options.dimBackground&&this.container.css({backgroundColor:this.background}),this.container.append(d),this.ripples.push(d),d.addClass("md-ripple-placed"),this.$mdUtil.nextTick(function(){d.addClass("md-ripple-scaled md-ripple-active"),a.$timeout(function(){a.clearRipples()},i,!1)},!1)},o.prototype.fadeInComplete=function(e){this.lastRipple===e?this.timeout||this.mousedown||this.removeRipple(e):this.removeRipple(e)},o.prototype.removeRipple=function(e){var t=this,n=this.ripples.indexOf(e);0>n||(this.ripples.splice(this.ripples.indexOf(e),1),e.removeClass("md-ripple-active"),0===this.ripples.length&&this.container.css({backgroundColor:""}),this.$timeout(function(){t.fadeOutComplete(e)},i,!1))},o.prototype.fadeOutComplete=function(e){e.remove()}}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdTabInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){t.module("material.core.theming.palette",[]).constant("$mdColorPalette",{red:{50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 A100",contrastStrongLightColors:"400 500 600 700 A200 A400 A700"},pink:{50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"500 600 A200 A400 A700"},purple:{50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400 A700"},"deep-purple":{50:"#ede7f6",100:"#d1c4e9",200:"#b39ddb",300:"#9575cd",400:"#7e57c2",500:"#673ab7",600:"#5e35b1",700:"#512da8",800:"#4527a0",900:"#311b92",A100:"#b388ff",A200:"#7c4dff",A400:"#651fff",A700:"#6200ea",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200"},indigo:{50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400"},blue:{50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},"light-blue":{50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900 A700",contrastStrongLightColors:"600 700 800 A700" -},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",A100:"#84ffff",A200:"#18ffff",A400:"#00e5ff",A700:"#00b8d4",contrastDefaultColor:"dark",contrastLightColors:"700 800 900",contrastStrongLightColors:"700 800 900"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",A100:"#a7ffeb",A200:"#64ffda",A400:"#1de9b6",A700:"#00bfa5",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900",contrastStrongLightColors:"600 700"},"light-green":{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",A100:"#ccff90",A200:"#b2ff59",A400:"#76ff03",A700:"#64dd17",contrastDefaultColor:"dark",contrastLightColors:"700 800 900",contrastStrongLightColors:"700 800 900"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",A100:"#f4ff81",A200:"#eeff41",A400:"#c6ff00",A700:"#aeea00",contrastDefaultColor:"dark",contrastLightColors:"900",contrastStrongLightColors:"900"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",A100:"#ffff8d",A200:"#ffff00",A400:"#ffea00",A700:"#ffd600",contrastDefaultColor:"dark"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",A100:"#ffe57f",A200:"#ffd740",A400:"#ffc400",A700:"#ffab00",contrastDefaultColor:"dark"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},"deep-orange":{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",A100:"#ff9e80",A200:"#ff6e40",A400:"#ff3d00",A700:"#dd2c00",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100 A200",contrastStrongLightColors:"500 600 700 800 900 A400 A700"},brown:{50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723",A100:"#d7ccc8",A200:"#bcaaa4",A400:"#8d6e63",A700:"#5d4037",contrastDefaultColor:"light",contrastDarkColors:"50 100 200",contrastStrongLightColors:"300 400"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",1000:"#000000",A100:"#ffffff",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900"},"blue-grey":{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238",A100:"#cfd8dc",A200:"#b0bec5",A400:"#78909c",A700:"#455a64",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300",contrastStrongLightColors:"400 500"}})}(),function(){function e(e){function o(e,t){return t=t||{},s[e]=a(e,t),b}function r(e,n){return a(e,t.extend({},s[e]||{},n))}function a(e,t){var n=C.filter(function(e){return!t[e]});if(n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1",n.join(", ")).replace("%2",e));return t}function d(e,n){if(m[e])return m[e];n=n||"default";var o="string"==typeof n?m[n]:n,r=new c(e);return o&&t.forEach(o.colors,function(e,n){r.colors[n]={name:e.name,hues:t.extend({},e.hues)}}),m[e]=r,r}function c(e){function n(e){if(e=0===arguments.length?!0:!!e,e!==o.isDark){o.isDark=e,o.foregroundPalette=o.isDark?p:h,o.foregroundShadow=o.isDark?f:g;var n=o.isDark?A:y,r=o.isDark?y:A;return t.forEach(n,function(e,t){var n=o.colors[t],i=r[t];if(n)for(var a in n.hues)n.hues[a]===i[a]&&(n.hues[a]=e[a])}),o}}var o=this;o.name=e,o.colors={},o.dark=n,n(!1),$.forEach(function(e){var n=(o.isDark?A:y)[e];o[e+"Palette"]=function(r,i){var a=o.colors[e]={name:r,hues:t.extend({},n,i)};return Object.keys(a.hues).forEach(function(e){if(!n[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1",e).replace("%2",o.name).replace("%3",r).replace("%4",Object.keys(n).join(", ")))}),Object.keys(a.hues).map(function(e){return a.hues[e]}).forEach(function(t){if(-1==C.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1",t).replace("%2",o.name).replace("%3",e).replace("%4",r).replace("%5",C.join(", ")))}),o},o[e+"Color"]=function(){var t=Array.prototype.slice.call(arguments);return console.warn("$mdThemingProviderTheme."+e+"Color() has been deprecated. Use $mdThemingProviderTheme."+e+"Palette() instead."),o[e+"Palette"].apply(o,t)}})}function u(e,o){function r(e){return e===n||""===e?!0:i.THEMES[e]!==n}function i(t,o){o===n&&(o=t,t=n),t===n&&(t=e),i.inherit(o,o)}return i.inherit=function(n,i){function a(e){r(e)||o.warn("Attempted to use unregistered theme '"+e+"'. Register it with $mdThemingProvider.theme().");var t=n.data("$mdThemeName");t&&n.removeClass("md-"+t+"-theme"),n.addClass("md-"+e+"-theme"),n.data("$mdThemeName",e),d&&n.data("$mdThemeController",d)}var d=i.controller("mdTheme"),c=n.attr("md-theme-watch");if((v||t.isDefined(c))&&"false"!=c){var l=e.$watch(function(){return d&&d.$mdTheme||E},a);n.on("$destroy",l)}else{var s=d&&d.$mdTheme||E;a(s)}},i.THEMES=t.extend({},m),i.defaultTheme=function(){return E},i.registered=r,i}s={},m={};var b,E="default",v=!1;return t.extend(s,e),u.$inject=["$rootScope","$log"],b={definePalette:o,extendPalette:r,theme:d,setDefaultTheme:function(e){E=e},alwaysWatchTheme:function(e){v=e},$get:u,_LIGHT_DEFAULT_HUES:y,_DARK_DEFAULT_HUES:A,_PALETTES:s,_THEMES:m,_parseRules:i,_rgba:l}}function o(e,t,n){return{priority:100,link:{pre:function(o,r,i){var a={$setTheme:function(t){e.registered(t)||n.warn("attempted to use unregistered theme '"+t+"'"),a.$mdTheme=t}};r.data("$mdThemeController",a),a.$setTheme(t(i.mdTheme)(o)),i.$observe("mdTheme",a.$setTheme)}}}}function r(e){return e}function i(e,n,o){d(e,n),o=o.replace(/THEME_NAME/g,e.name);var r=[],i=e.colors[n],a=new RegExp(".md-"+e.name+"-theme","g"),c=new RegExp("('|\")?{{\\s*("+n+")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?","g"),m=/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,u=s[i.name];return o=o.replace(m,function(t,n,o,r,i){return"foreground"===n?"shadow"==o?e.foregroundShadow:e.foregroundPalette[o]||e.foregroundPalette[1]:(0===o.indexOf("hue")&&(o=e.colors[n].hues[o]),l((s[e.colors[n].name][o]||"")[i?"contrast":"value"],r))}),t.forEach(i.hues,function(t,n){var i=o.replace(c,function(e,n,o,r,i){return l(u[t]["color"===r?"value":"contrast"],i)});"default"!==n&&(i=i.replace(a,".md-"+e.name+"-theme.md-"+n)),"default"==e.name&&(i=i.replace(/\.md-default-theme/g,"")),r.push(i)}),r}function a(e){function n(e){var n=e.contrastDefaultColor,o=e.contrastLightColors||[],r=e.contrastStrongLightColors||[],i=e.contrastDarkColors||[];"string"==typeof o&&(o=o.split(" ")),"string"==typeof r&&(r=r.split(" ")),"string"==typeof i&&(i=i.split(" ")),delete e.contrastDefaultColor,delete e.contrastLightColors,delete e.contrastStrongLightColors,delete e.contrastDarkColors,t.forEach(e,function(a,d){function l(){return"light"===n?i.indexOf(d)>-1?b:r.indexOf(d)>-1?v:E:o.indexOf(d)>-1?r.indexOf(d)>-1?v:E:b}if(!t.isObject(a)){var s=c(a);if(!s)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1",a).replace("%2",e.name).replace("%3",d));e[d]={value:s,contrast:l()}}})}var o=document.getElementsByTagName("head")[0],r=o?o.firstElementChild:null,a=e.has("$MD_THEME_CSS")?e.get("$MD_THEME_CSS"):"";if(r&&0!==a.length){t.forEach(s,n);var d={},l=a.split(/\}(?!(\}|'|"|;))/).filter(function(e){return e&&e.length}).map(function(e){return e.trim()+"}"}),h=new RegExp("md-("+$.join("|")+")","g");$.forEach(function(e){d[e]=""}),l.forEach(function(e){for(var t,n=(e.match(h),0);t=$[n];n++)if(e.indexOf(".md-"+t)>-1)return d[t]+=e;for(n=0;t=$[n];n++)if(e.indexOf(t)>-1)return d[t]+=e;return d[M]+=e}),t.forEach(m,function(e){u[e.name]||($.forEach(function(t){for(var n=i(e,t,d[t]);n.length;){var a=document.createElement("style");a.setAttribute("type","text/css"),a.appendChild(document.createTextNode(n.shift())),o.insertBefore(a,r)}}),e.colors.primary.name==e.colors.accent.name&&console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec."),u[e.name]=!0)})}}function d(e,t){if(!s[(e.colors[t]||{}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1",e.name).replace("%2",t).replace("%3",Object.keys(s).join(", ")))}function c(e){if(t.isArray(e)&&3==e.length)return e;if(/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g,"").split(",").map(function(e,t){return 3==t?parseFloat(e,10):parseInt(e,10)});if("#"==e.charAt(0)&&(e=e.substring(1)),/^([a-fA-F0-9]{3}){1,2}$/g.test(e)){var n=e.length/3,o=e.substr(0,n),r=e.substr(n,n),i=e.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),[parseInt(o,16),parseInt(r,16),parseInt(i,16)]}}function l(e,n){return e?(4==e.length&&(e=t.copy(e),n?e.pop():n=e.pop()),n&&("number"==typeof n||"string"==typeof n&&n.length)?"rgba("+e.join(",")+","+n+")":"rgb("+e.join(",")+")"):"rgb('0,0,0')"}t.module("material.core.theming",["material.core.theming.palette"]).directive("mdTheme",o).directive("mdThemable",r).provider("$mdTheming",e).run(a);var s,m,u={},h={name:"dark",1:"rgba(0,0,0,0.87)",2:"rgba(0,0,0,0.54)",3:"rgba(0,0,0,0.26)",4:"rgba(0,0,0,0.12)"},p={name:"light",1:"rgba(255,255,255,1.0)",2:"rgba(255,255,255,0.7)",3:"rgba(255,255,255,0.3)",4:"rgba(255,255,255,0.12)"},f="1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",g="",b=c("rgba(0,0,0,0.87)"),E=c("rgba(255,255,255,0.87"),v=c("rgb(255,255,255)"),$=["primary","accent","warn","background"],M="primary",y={accent:{"default":"A200","hue-1":"A100","hue-2":"A400","hue-3":"A700"},background:{"default":"A100","hue-1":"300","hue-2":"800","hue-3":"900"}},A={background:{"default":"800","hue-1":"300","hue-2":"600","hue-3":"900"}};$.forEach(function(e){var t={"default":"500","hue-1":"300","hue-2":"800","hue-3":"A100"};y[e]||(y[e]=t),A[e]||(A[e]=t)});var C=["50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700"];e.$inject=["$mdColorPalette"],o.$inject=["$mdTheming","$interpolate","$log"],r.$inject=["$mdTheming"],a.$inject=["$injector"]}(),function(){function e(e,n,o,r,i){var a;return a={translate3d:function(e,t,n,o){function r(n){return i(e,{to:n||t,addClass:o.transitionOutClass,removeClass:o.transitionInClass}).start()}return i(e,{from:t,to:n,addClass:o.transitionInClass}).start().then(function(){return r})},waitTransitionEnd:function(e,t){var i=3e3;return n(function(n,a){function d(t){t&&t.target!==e[0]||(t&&o.cancel(c),e.off(r.CSS.TRANSITIONEND,d),n())}t=t||{};var c=o(d,t.timeout||i);e.on(r.CSS.TRANSITIONEND,d)})},calculateZoomToOrigin:function(n,o){var r=o.element,i="translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )",d=t.bind(null,e.supplant,i),c=d({centerX:0,centerY:0,scaleX:.5,scaleY:.5});if(r){var l=a.clientRect(r)||a.copyRect(o.bounds),s=a.copyRect(n[0].getBoundingClientRect()),m=a.centerPointFor(s),u=a.centerPointFor(l);c=d({centerX:u.x-m.x,centerY:u.y-m.y,scaleX:Math.round(100*Math.min(.5,l.width/s.width))/100,scaleY:Math.round(100*Math.min(.5,l.height/s.height))/100})}return c},toCss:function(e){function n(e,n,r){t.forEach(n.split(" "),function(e){o[e]=r})}var o={},i="left top right bottom width height x y min-width min-height max-width max-height";return t.forEach(e,function(e,a){if(!t.isUndefined(e))if(i.indexOf(a)>=0)o[a]=e+"px";else switch(a){case"transform":n(a,r.CSS.TRANSFORM,e);break;case"transformOrigin":n(a,r.CSS.TRANSFORM_ORIGIN,e)}}),o},toTransformCss:function(e,n,o){var i={};return t.forEach(r.CSS.TRANSFORM.split(" "),function(t){i[t]=e}),n&&(o=o||"all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important",i.transition=o),i},copyRect:function(e,n){return e?(n=n||{},t.forEach("left top right bottom width height".split(" "),function(t){n[t]=Math.round(e[t])}),n.width=n.width||n.right-n.left,n.height=n.height||n.bottom-n.top,n):null},clientRect:function(e){var n=t.element(e)[0].getBoundingClientRect(),o=function(e){return e&&e.width>0&&e.height>0};return o(n)?a.copyRect(n):null},centerPointFor:function(e){return{x:Math.round(e.left+e.width/2),y:Math.round(e.top+e.height/2)}}}}t.module("material.core").factory("$$mdAnimate",["$q","$timeout","$mdConstant","$animateCss",function(t,n,o,r){return function(i){return e(i,t,n,o,r)}}])}(),function(){t.version.minor>=4?t.module("material.animate",[]):!function(){function o(e){return e.replace(/-[a-z]/g,function(e){return e.charAt(1).toUpperCase()})}var r=t.forEach,i=e.ontransitionend===n&&e.onwebkittransitionend!==n,a=i?"-webkit-":"",d=(i?"webkitTransitionEnd ":"")+"transitionend",c=(i?"webkitAnimationEnd ":"")+"animationend",l=["$document",function(e){return function(){return e[0].body.clientWidth+1}}],s=["$$rAF",function(e){return function(){var t=!1;return e(function(){t=!0}),function(n){t?n():e(n)}}}],m=["$q","$$rAFMutex",function(e,n){function o(e){this.setHost(e),this._doneCallbacks=[],this._runInAnimationFrame=n(),this._state=0}var i=0,a=1,d=2;return o.prototype={setHost:function(e){this.host=e||{}},done:function(e){this._state===d?e():this._doneCallbacks.push(e)},progress:t.noop,getPromise:function(){if(!this.promise){var t=this;this.promise=e(function(e,n){t.done(function(t){t===!1?n():e()})})}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;t._state===i&&(t._state=a,t._runInAnimationFrame(function(){t._resolve(e)}))},_resolve:function(e){this._state!==d&&(r(this._doneCallbacks,function(t){t(e)}),this._doneCallbacks.length=0,this._state=d)}},o}];t.module("material.animate",[]).factory("$$forceReflow",l).factory("$$AnimateRunner",m).factory("$$rAFMutex",s).factory("$animateCss",["$window","$$rAF","$$AnimateRunner","$$forceReflow","$$jqLite","$timeout",function(e,t,n,l,s,m){function u(e,t){var i=[],l=$(e);t.transitionStyle&&i.push([a+"transition",t.transitionStyle]),t.keyframeStyle&&i.push([a+"animation",t.keyframeStyle]),t.delay&&i.push([a+"transition-delay",t.delay+"s"]),t.duration&&i.push([a+"transition-duration",t.duration+"s"]);var s=t.keyframeStyle||t.to&&(t.duration>0||t.transitionStyle),u=!!t.addClass||!!t.removeClass,f=s||u;M(e,!0),E(e,t);var y,A,C=!1;return{close:close,start:function(){function s(){return C?void 0:(C=!0,y&&A&&e.off(y,A),h(e,t),b(e,t),r(i,function(e){l.style[o(e[0])]=""}),u.complete(!0),u)}var u=new n;return g(function(){if(M(e,!1),!f)return s();r(i,function(e){var t=e[0],n=e[1];l.style[o(t)]=n}),h(e,t);var n=p(e);if(0===n.duration)return s();var u=[];t.easing&&(n.transitionDuration&&u.push([a+"transition-timing-function",t.easing]),n.animationDuration&&u.push([a+"animation-timing-function",t.easing])),t.delay&&n.animationDelay&&u.push([a+"animation-delay",t.delay+"s"]),t.duration&&n.animationDuration&&u.push([a+"animation-duration",t.duration+"s"]),r(u,function(e){var t=e[0],n=e[1];l.style[o(t)]=n,i.push(e)});var g=n.delay,b=1e3*g,E=n.duration,$=1e3*E,C=Date.now();y=[],n.transitionDuration&&y.push(d),n.animationDuration&&y.push(c),y=y.join(" "),A=function(e){e.stopPropagation();var t=e.originalEvent||e,n=t.timeStamp||Date.now(),o=parseFloat(t.elapsedTime.toFixed(3));Math.max(n-C,0)>=b&&o>=E&&s()},e.on(y,A),v(e,t),m(s,b+1.5*$,!1)}),u}}}function h(e,t){t.addClass&&(s.addClass(e,t.addClass),t.addClass=null),t.removeClass&&(s.removeClass(e,t.removeClass),t.removeClass=null)}function p(t){function n(e){return i?"Webkit"+e.charAt(0).toUpperCase()+e.substr(1):e}var o=$(t),r=e.getComputedStyle(o),a=f(r[n("transitionDuration")]),d=f(r[n("animationDuration")]),c=f(r[n("transitionDelay")]),l=f(r[n("animationDelay")]);d*=parseInt(r[n("animationIterationCount")],10)||1;var s=Math.max(d,a),m=Math.max(l,c);return{duration:s,delay:m,animationDuration:d,transitionDuration:a,animationDelay:l,transitionDelay:c}}function f(e){var t=0,n=e.split(/\s*,\s*/);return r(n,function(e){"s"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1)),e=parseFloat(e)||0,t=t?Math.max(e,t):e}),t}function g(e){y&&y(),A.push(e),y=t(function(){y=null;for(var e=l(),t=0;to&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function s(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),i.nextTick(d.cancel,!0)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var m=l.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",s),{element:e,cleanup:function(){m(),t.off("$md.dragstart",a),t.off("$md.drag",c),t.off("$md.dragend",s)}}}var h;return{themable:!0,targetEvent:null,onShow:s,onRemove:m,escapeToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","targetEvent"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",e).provider("$mdBottomSheet",n),n.$inject=["$$interimElementProvider"]}(),function(){function e(e,n,o,r){function i(e){return t.isDefined(e.href)||t.isDefined(e.ngHref)||t.isDefined(e.ngLink)||t.isDefined(e.uiSref)}function a(e,t){return i(t)?'':''}function d(a,d,c){var l=d[0];n(d),e.attach(a,d);var s=l.textContent.trim();s||o.expect(d,"aria-label"),i(c)&&t.isDefined(c.ngDisabled)&&a.$watch(c.ngDisabled,function(e){d.attr("tabindex",e?-1:0)}),d.on("click",function(e){c.disabled===!0&&(e.preventDefault(),e.stopImmediatePropagation())}),a.mouseActive=!1,d.on("mousedown",function(){a.mouseActive=!0,r(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&d.addClass("md-focused")}).on("blur",function(){d.removeClass("md-focused")})}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:d}}t.module("material.components.button",["material.core"]).directive("mdButton",e),e.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$timeout"]}(),function(){function e(e){return{restrict:"E",link:function(t,n,o){e(n)}}}t.module("material.components.card",["material.core"]).directive("mdCard",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r,i,a){function d(d,l){return l.type="checkbox",l.tabindex=l.tabindex||"0",d.attr("role",l.type),function(d,l,s,m){function u(e,t,n){s[e]&&d.$watch(s[e],function(e){n[e]&&l.attr(t,n[e])})}function h(e){var t=e.which||e.keyCode;(t===o.KEY_CODE.SPACE||t===o.KEY_CODE.ENTER)&&(e.preventDefault(),l.hasClass("md-focused")||l.addClass("md-focused"),p(e))}function p(e){l[0].hasAttribute("disabled")||d.$apply(function(){var t=s.ngChecked?s.checked:!m.$viewValue;m.$setViewValue(t,e&&e.type),m.$render()})}function f(){m.$viewValue?l.addClass(c):l.removeClass(c)}m=m||i.fakeNgModel(),r(l),s.ngChecked&&d.$watch(d.$eval.bind(d,s.ngChecked),m.$setViewValue.bind(m)),u("ngDisabled","tabindex",{"true":"-1","false":s.tabindex}),n.expectWithText(l,"aria-label"),e.link.pre(d,{on:t.noop,0:{}},s,[m]),d.mouseActive=!1,l.on("click",p).on("keypress",h).on("mousedown",function(){d.mouseActive=!0,a(function(){d.mouseActive=!1},100)}).on("focus",function(){d.mouseActive===!1&&l.addClass("md-focused")}).on("blur",function(){l.removeClass("md-focused")}),m.$render=f}}e=e[0];var c="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'
    ',compile:d}}t.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",e),e.$inject=["inputDirective","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(),function(){t.module("material.components.chips",["material.core","material.components.autocomplete"])}(),function(){function e(e){function t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,r){o[0];e(o),t.$broadcast("$mdContentLoaded",o),n(o[0])}}}function n(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",e),e.$inject=["$mdTheming"]}(),function(){!function(){function e(){return{template:'
    ',scope:{},require:["ngModel","mdCalendar"],controller:n,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.configureNgModel(r)}}}function n(e,t,n,o,r,i,c,l,s,m,u){c(e),this.items={length:2e3},this.$animate=o,this.$q=r,this.$mdInkRipple=m,this.$mdUtil=u,this.keyCode=i.KEY_CODE,this.dateUtil=l,this.dateLocale=s,this.$element=e,this.$scope=n,this.calendarElement=e[0].querySelector(".md-calendar"),this.calendarScroller=e[0].querySelector(".md-virtual-repeat-scroller"),this.today=this.dateUtil.createDateAtMidnight(),d=d||this.dateUtil.incrementMonths(this.today,-this.items.length/2),this.id=a++,this.ngModelCtrl=null,this.selectedDate=null,this.displayDate=null,this.focusDate=null,this.isInitialized=!1,this.isMonthTransitionInProgress=!1,t.tabindex||e.attr("tabindex","-1");var h=this;this.cellClickHandler=function(){var e=this;this.hasAttribute("data-timestamp")&&n.$apply(function(){var t=Number(e.getAttribute("data-timestamp"));h.setNgModelValue(h.dateUtil.createDateAtMidnight(t))})},this.attachCalendarEventListeners()}t.module("material.components.datepicker",["material.core","material.components.icon","material.components.virtualRepeat"]).directive("mdCalendar",e);var o=265,r="md-calendar-selected-date",i="md-focus",a=0,d=null;n.$inject=["$element","$attrs","$scope","$animate","$q","$mdConstant","$mdTheming","$$mdDateUtil","$mdDateLocale","$mdInkRipple","$mdUtil"],n.prototype.configureNgModel=function(e){this.ngModelCtrl=e;var t=this;e.$render=function(){t.changeSelectedDate(t.ngModelCtrl.$viewValue)}},n.prototype.buildInitialCalendarDisplay=function(){this.buildWeekHeader(),this.hideVerticalScrollbar(),this.displayDate=this.selectedDate||this.today,this.isInitialized=!0},n.prototype.hideVerticalScrollbar=function(){var e=this.$element[0],t=e.querySelector(".md-calendar-scroll-mask"),n=this.calendarScroller,o=e.querySelector(".md-calendar-day-header").clientWidth,r=n.offsetWidth-n.clientWidth;t.style.width=o+"px",n.style.width=o+r+"px",n.style.paddingRight=r+"px"},n.prototype.attachCalendarEventListeners=function(){this.$element.on("keydown",t.bind(this,this.handleKeyEvent))},n.prototype.handleKeyEvent=function(e){var t=this;this.$scope.$apply(function(){if(e.which==t.keyCode.ESCAPE||e.which==t.keyCode.TAB)return t.$scope.$emit("md-calendar-close"),void(e.which==t.keyCode.TAB&&e.preventDefault());if(e.which===t.keyCode.ENTER)return t.setNgModelValue(t.displayDate),void e.preventDefault();var n=t.getFocusDateFromKeyEvent(e);n&&(e.preventDefault(),e.stopPropagation(),t.changeDisplayDate(n).then(function(){t.focus(n)}))})},n.prototype.getFocusDateFromKeyEvent=function(e){var t=this.dateUtil,n=this.keyCode;switch(e.which){case n.RIGHT_ARROW:return t.incrementDays(this.displayDate,1);case n.LEFT_ARROW:return t.incrementDays(this.displayDate,-1);case n.DOWN_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,1):t.incrementDays(this.displayDate,7);case n.UP_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,-1):t.incrementDays(this.displayDate,-7);case n.PAGE_DOWN:return t.incrementMonths(this.displayDate,1);case n.PAGE_UP:return t.incrementMonths(this.displayDate,-1);case n.HOME:return t.getFirstDateOfMonth(this.displayDate);case n.END:return t.getLastDateOfMonth(this.displayDate);default:return null}},n.prototype.getSelectedMonthIndex=function(){return this.dateUtil.getMonthDistance(d,this.selectedDate||this.today)},n.prototype.scrollToMonth=function(e){if(this.dateUtil.isValidDate(e)){var t=this.dateUtil.getMonthDistance(d,e);this.calendarScroller.scrollTop=t*o}},n.prototype.setNgModelValue=function(e){this.$scope.$emit("md-calendar-change",e),this.ngModelCtrl.$setViewValue(e),this.ngModelCtrl.$render()},n.prototype.focus=function(e){var t=e||this.selectedDate||this.today,n=this.calendarElement.querySelector(".md-focus");n&&n.classList.remove(i);var o=this.getDateId(t),r=document.getElementById(o);r?(r.classList.add(i),r.focus()):this.focusDate=t},n.prototype.changeSelectedDate=function(e){var t=this,n=this.selectedDate;this.selectedDate=e,this.changeDisplayDate(e).then(function(){if(n){var o=document.getElementById(t.getDateId(n));o&&(o.classList.remove(r),o.setAttribute("aria-selected","false"))}if(e){var i=document.getElementById(t.getDateId(e));i&&(i.classList.add(r),i.setAttribute("aria-selected","true"))}})},n.prototype.changeDisplayDate=function(e){if(!this.isInitialized)return this.buildInitialCalendarDisplay(),this.$q.when();if(!this.dateUtil.isValidDate(e)||this.isMonthTransitionInProgress)return this.$q.when();this.isMonthTransitionInProgress=!0;var t=this.animateDateChange(e);this.displayDate=e;var n=this;return t.then(function(){n.isMonthTransitionInProgress=!1}),t},n.prototype.animateDateChange=function(e){return this.scrollToMonth(e),this.$q.when()},n.prototype.buildWeekHeader=function(){for(var e=document.createElement("tr"),t=0;7>t;t++){var n=document.createElement("th");n.textContent=this.dateLocale.shortDays[t],e.appendChild(n)}this.$element.find("thead").append(e)},n.prototype.getDateId=function(e){return["md",this.id,e.getFullYear(),e.getMonth(),e.getDate()].join("-")}}()}(),function(){!function(){function e(){return{require:["^^mdCalendar","mdCalendarMonth"],scope:{offset:"=mdMonthOffset"},controller:n,controllerAs:"mdMonthCtrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.calendarCtrl=r,i.generateContent(),e.$watch(function(){return i.offset},function(e,t){e!=t&&i.generateContent()})}}}function n(e,t,n){this.dateUtil=t,this.dateLocale=n,this.$element=e,this.calendarCtrl=null,this.offset,this.focusAfterAppend=null}t.module("material.components.datepicker").directive("mdCalendarMonth",e);var o="md-calendar-date-today",r="md-calendar-selected-date",i="md-focus";n.$inject=["$element","$$mdDateUtil","$mdDateLocale"],n.prototype.generateContent=function(){var e=this.calendarCtrl,t=-e.items.length/2+this.offset,n=this.dateUtil.incrementMonths(e.today,t);this.$element.empty(),this.$element.append(this.buildCalendarForMonth(n)),this.focusAfterAppend&&(this.focusAfterAppend.classList.add(i),this.focusAfterAppend.focus(),this.focusAfterAppend=null)},n.prototype.buildDateCell=function(e){var t=this.calendarCtrl,n=document.createElement("td");if(n.tabIndex=-1,n.classList.add("md-calendar-date"),n.setAttribute("role","gridcell"),e){var i=document.createElement("span");n.appendChild(i),i.classList.add("md-calendar-date-selection-indicator"),i.textContent=this.dateLocale.dates[e.getDate()],n.setAttribute("tabindex","-1"),n.setAttribute("aria-label",this.dateLocale.longDateFormatter(e)),n.id=t.getDateId(e),n.addEventListener("click",t.cellClickHandler),n.setAttribute("data-timestamp",e.getTime()),this.dateUtil.isSameDay(e,t.today)&&n.classList.add(o),this.dateUtil.isValidDate(t.selectedDate)&&this.dateUtil.isSameDay(e,t.selectedDate)&&(n.classList.add(r),n.setAttribute("aria-selected","true")),t.focusDate&&this.dateUtil.isSameDay(e,t.focusDate)&&(this.focusAfterAppend=n)}return n},n.prototype.buildDateRow=function(e){var t=document.createElement("tr");return t.setAttribute("role","row"),t.setAttribute("aria-label",this.dateLocale.weekNumberFormatter(e)),t},n.prototype.buildCalendarForMonth=function(e){var t=this.dateUtil.isValidDate(e)?e:new Date,n=this.dateUtil.getFirstDateOfMonth(t),o=n.getDay(),r=this.dateUtil.getNumberOfDaysInMonth(t),i=document.createDocumentFragment(),a=1,d=this.buildDateRow(a); - -i.appendChild(d);var c=0,l=document.createElement("td");if(l.classList.add("md-calendar-month-label"),2>=o){l.setAttribute("colspan","7");var s=this.buildDateRow();s.appendChild(l),i.insertBefore(s,d)}else c=2,l.setAttribute("colspan","2"),d.appendChild(l);l.textContent=this.dateLocale.monthHeaderFormatter(t);for(var m=c;o>m;m++)d.appendChild(this.buildDateCell());for(var u=o,h=n,p=1;r>=p;p++){7===u&&(u=0,a++,d=this.buildDateRow(a),i.appendChild(d)),h.setDate(p);var f=this.buildDateCell(h);d.appendChild(f),u++}for(;d.childNodes.length<7;)d.appendChild(this.buildDateCell());for(;i.childNodes.length<6;){for(var g=this.buildDateRow(),m=0;7>m;m++)g.appendChild(this.buildDateCell());i.appendChild(g)}return i}}()}(),function(){!function(){t.module("material.components.datepicker").config(["$provide",function(e){function t(){this.months=null,this.shortMonths=null,this.days=null,this.shortDays=null,this.dates=null,this.formatDate=null,this.parseDate=null,this.monthHeaderFormatter=null,this.weekNumberFormatter=null,this.longDateFormatter=null,this.msgCalendar="",this.msgOpenCalendar=""}t.prototype.$get=function(e){function t(e){return e?e.toLocaleDateString():""}function n(e){return new Date(e)}function o(e){e=e.trim();var t=/^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/;return t.test(e)}function r(e){return u.shortMonths[e.getMonth()]+" "+e.getFullYear()}function i(e){return"Week "+e}function a(e){return[u.days[e.getDay()],u.months[e.getMonth()],u.dates[e.getDate()],e.getFullYear()].join(" ")}for(var d=e.DATETIME_FORMATS.DAY.map(function(e){return e[0]}),c=Array(32),l=1;31>=l;l++)c[l]=l;var s="Calendar",m="Open calendar",u={months:this.months||e.DATETIME_FORMATS.MONTH,shortMonths:this.shortMonths||e.DATETIME_FORMATS.SHORTMONTH,days:this.days||e.DATETIME_FORMATS.DAY,shortDays:this.shortDays||d,dates:this.dates||c,formatDate:this.formatDate||t,parseDate:this.parseDate||n,isDateComplete:this.isDateComplete||o,monthHeaderFormatter:this.monthHeaderFormatter||r,weekNumberFormatter:this.weekNumberFormatter||i,longDateFormatter:this.longDateFormatter||a,msgCalendar:this.msgCalendar||s,msgOpenCalendar:this.msgOpenCalendar||m};return u},t.prototype.$get.$inject=["$locale"],e.provider("$mdDateLocale",new t)}])}()}(),function(){!function(){function e(){return{template:'
    ',require:["ngModel","mdDatepicker"],scope:{placeholder:"@mdPlaceholder"},controller:n,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.configureNgModel(r)}}}function n(e,n,o,r,i,a,d,c,l,s,m){this.$compile=r,this.$timeout=i,this.dateLocale=l,this.dateUtil=s,this.$mdConstant=a,this.$mdUtil=c,this.$$rAF=m,this.ngModelCtrl=null,this.inputElement=n[0].querySelector("input"),this.inputContainer=n[0].querySelector(".md-datepicker-input-container"),this.calendarPane=n[0].querySelector(".md-datepicker-calendar-pane"),this.calendarButton=n[0].querySelector(".md-datepicker-button"),this.inputMask=n[0].querySelector(".md-datepicker-input-mask-opaque"),this.$element=n,this.$attrs=o,this.$scope=e,this.date=null,this.isFocused=!1,this.isDisabled,this.setDisabled(n[0].disabled||t.isString(o.disabled)),this.isCalendarOpen=!1,this.calendarPaneOpenedFrom=null,this.calendarPane.id="md-date-pane"+c.nextUid(),d(n),this.bodyClickHandler=t.bind(this,this.handleBodyClick),o.tabindex||n.attr("tabindex","-1"),this.installPropertyInterceptors(),this.attachChangeListeners(),this.attachInteractionListeners();var u=this;e.$on("$destroy",function(){u.detachCalendarPane()})}t.module("material.components.datepicker").directive("mdDatepicker",e);var o=3,r="md-datepicker-invalid",i=500;n.$inject=["$scope","$element","$attrs","$compile","$timeout","$mdConstant","$mdTheming","$mdUtil","$mdDateLocale","$$mdDateUtil","$$rAF"],n.prototype.configureNgModel=function(e){this.ngModelCtrl=e;var t=this;e.$render=function(){t.date=t.ngModelCtrl.$viewValue,t.inputElement.value=t.dateLocale.formatDate(t.date),t.resizeInputElement()}},n.prototype.attachChangeListeners=function(){var e=this;e.$scope.$on("md-calendar-change",function(t,n){e.ngModelCtrl.$setViewValue(n),e.date=n,e.inputElement.value=e.dateLocale.formatDate(n),e.closeCalendarPane(),e.resizeInputElement(),e.inputContainer.classList.remove(r)});var n=t.element(e.inputElement);n.on("input",t.bind(e,e.resizeInputElement)),n.on("input",e.$mdUtil.debounce(e.handleInputEvent,i,e))},n.prototype.attachInteractionListeners=function(){var e=this,n=this.$scope,o=this.$mdConstant.KEY_CODE;t.element(e.inputElement).on("keydown",function(t){t.altKey&&t.keyCode==o.DOWN_ARROW&&(e.openCalendarPane(t),n.$digest())}),n.$on("md-calendar-close",function(){e.closeCalendarPane()})},n.prototype.installPropertyInterceptors=function(){var e=this;this.$attrs.ngDisabled&&this.$element.scope().$watch(this.$attrs.ngDisabled,function(t){e.setDisabled(t)}),Object.defineProperty(this,"placeholder",{get:function(){return e.inputElement.placeholder},set:function(t){e.inputElement.placeholder=t||""}})},n.prototype.setDisabled=function(e){this.isDisabled=e,this.inputElement.disabled=e,this.calendarButton.disabled=e},n.prototype.resizeInputElement=function(){this.inputElement.size=this.inputElement.value.length+o},n.prototype.handleInputEvent=function(){var e=this.inputElement.value,t=this.dateLocale.parseDate(e);this.dateUtil.isValidDate(t)&&this.dateLocale.isDateComplete(e)?(this.ngModelCtrl.$setViewValue(t),this.date=t,this.inputContainer.classList.remove(r)):this.inputContainer.classList.toggle(r,e)},n.prototype.attachCalendarPane=function(){var e=this.calendarPane;this.$element.addClass("md-datepicker-open");var t=this.inputContainer.getBoundingClientRect(),n=document.body.getBoundingClientRect();e.style.left=t.left-n.left+"px",e.style.top=t.top-n.top+"px",document.body.appendChild(this.calendarPane),this.inputMask.style.left=t.width+"px",this.$$rAF(function(){e.classList.add("md-pane-open")})},n.prototype.detachCalendarPane=function(){this.$element.removeClass("md-datepicker-open"),this.calendarPane.classList.remove("md-pane-open"),this.calendarPane.parentNode&&this.calendarPane.parentNode.removeChild(this.calendarPane)},n.prototype.openCalendarPane=function(e){if(!this.isCalendarOpen&&!this.isDisabled){this.isCalendarOpen=!0,this.calendarPaneOpenedFrom=e.target,this.attachCalendarPane(),this.focusCalendar(),this.$mdUtil.disableScrollAround(this.calendarPane);var t=this;this.$mdUtil.nextTick(function(){document.body.addEventListener("click",t.bodyClickHandler)},!1)}},n.prototype.closeCalendarPane=function(){this.isCalendarOpen=!1,this.detachCalendarPane(),this.calendarPaneOpenedFrom.focus(),this.calendarPaneOpenedFrom=null,this.$mdUtil.enableScrolling(),document.body.removeEventListener("click",this.bodyClickHandler)},n.prototype.getCalendarCtrl=function(){return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")},n.prototype.focusCalendar=function(){var e=this;this.$mdUtil.nextTick(function(){e.getCalendarCtrl().focus()},!1)},n.prototype.setFocused=function(e){this.isFocused=e},n.prototype.handleBodyClick=function(e){if(this.isCalendarOpen){var t=this.$mdUtil.getClosest(e.target,"md-calendar");t||this.closeCalendarPane(),this.$scope.$digest()}}}()}(),function(){!function(){t.module("material.components.datepicker").factory("$$mdDateUtil",function(){function e(e){return new Date(e.getFullYear(),e.getMonth(),1)}function n(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function o(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function r(e){return new Date(e.getFullYear(),e.getMonth()-1,1)}function i(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}function a(e,t){return e.getDate()==t.getDate()&&i(e,t)}function d(e,t){var n=o(e);return i(n,t)}function c(e,t){var n=r(e);return i(t,n)}function l(e,t){return g((e.getTime()+t.getTime())/2)}function s(t){var n=e(t);return Math.floor((n.getDay()+t.getDate()-1)/7)}function m(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)}function u(e,t){var o=new Date(e.getFullYear(),e.getMonth()+t,1),r=n(o);return o.setDate(ro.clientHeight)}var n,o=r[0].querySelector("md-dialog-content");o&&(n=o.getElementsByTagName("img"),e(),t.element(n).on("load",e))})}}}function n(e){function n(e,t){return{template:['',' ','

    {{ dialog.title }}

    ','
    ',"
    ",'
    ',' '," {{ dialog.cancel }}"," ",' '," {{ dialog.ok }}"," ","
    ","
    "].join("").replace(/\s\s+/g,""),controller:function(){this.hide=function(){e.hide(!0)},this.abort=function(){e.cancel()}},controllerAs:"dialog",bindToController:!0,theme:t.defaultTheme()}}function o(e,n,o,r,i,a,d,c){function l(e,n,r,i){function d(){function e(){var e=n[0].querySelector(".dialog-close");if(!e){var o=n[0].querySelectorAll(".md-actions button");e=o[o.length-1]}return t.element(e)}if(r.focusOnOpen){var i=o.findFocusTarget(n)||e();i.focus()}}function c(){if(i){var e=/<\/[\w-]*>/gm,t=i.content,n=e.test(t);n||(t=o.supplant("

    {0}

    ",[t])),i.content=t}}return n=o.extractElementByName(n,"md-dialog"),t.element(a[0].body).addClass("md-dialog-is-showing"),c(),m(n,r),p(n.find("md-dialog"),r),h(e,n,r),b(n,r).then(function(){u(n,r),f(n,r),d()})}function s(e,n,o){return o.deactivateListeners(),o.unlockScreenReader(),o.hideBackdrop(),E(n,o)["finally"](function(){t.element(a[0].body).removeClass("md-dialog-is-showing"),n.remove(),o.origin.focus()})}function m(e,n){var o={element:null,bounds:null,focus:t.noop};n.origin=t.extend({},o,n.origin||{});var r=t.element((n.targetEvent||{}).target);r&&r.length&&(n.origin.element=r,n.origin.bounds=r[0].getBoundingClientRect(),n.origin.focus=function(){r.focus()}),n.parent=t.element(n.parent||c)}function u(t,n){var i=[],a=function(){var t="alert"==n.$type?e.hide:e.cancel;o.nextTick(t,!0)};if(n.escapeToClose){var d=n.parent,c=function(e){e.keyCode===r.KEY_CODE.ESCAPE&&(e.stopPropagation(),e.preventDefault(),a())};t.on("keyup",c),d.on("keyup",c),i.push(function(){t.off("keyup",c),d.off("keyup",c)})}if(n.clickOutsideToClose){var d=t,l=function(e){e.target===d[0]&&(e.stopPropagation(),e.preventDefault(),a())};d.on("click",l),i.push(function(){d.off("click",l)})}n.deactivateListeners=function(){i.forEach(function(e){e()}),n.deactivateListeners=null}}function h(e,t,n){n.disableParentScroll&&(n.restoreScroll=o.disableScrollAround(t,n.parent)),n.hasBackdrop&&(n.backdrop=o.createBackdrop(e,"md-dialog-backdrop md-opaque"),i.enter(n.backdrop,n.parent)),n.hideBackdrop=function(){n.backdrop&&i.leave(n.backdrop),n.disableParentScroll&&(n.restoreScroll(),delete n.restoreScroll),n.hideBackdrop=null}}function p(e,t){var r="alert"===t.$type?"alertdialog":"dialog",i=e.find("md-dialog-content"),a=e.attr("id")||"dialog_"+o.nextUid();e.attr({role:r,tabIndex:"-1"}),0===i.length&&(i=e),i.attr("id",a),e.attr("aria-describedby",a),t.ariaLabel?n.expect(e,"aria-label",t.ariaLabel):n.expectAsync(e,"aria-label",function(){var e=i.text().split(/\s+/);return e.length>3&&(e=e.slice(0,3).concat("...")),e.join(" ")})}function f(e,t){function n(e){for(;e.parentNode;){if(e===document.body)return;for(var t=e.parentNode.children,r=0;r'+e+"
    "}}}return n.$inject=["$mdDialog","$mdTheming"],o.$inject=["$mdDialog","$mdAria","$mdUtil","$mdConstant","$animate","$document","$window","$rootElement"],e("$mdDialog").setDefaults({methods:["disableParentScroll","hasBackdrop","clickOutsideToClose","escapeToClose","targetEvent","parent"],options:o}).addPreset("alert",{methods:["title","content","ariaLabel","ok","theme"],options:n}).addPreset("confirm",{methods:["title","content","ariaLabel","ok","cancel","theme"],options:n})}t.module("material.components.dialog",["material.core","material.components.backdrop"]).directive("mdDialog",e).provider("$mdDialog",n),e.$inject=["$$rAF","$mdTheming"],n.$inject=["$$interimElementProvider"]}(),function(){function e(e){return{restrict:"E",link:e}}t.module("material.components.divider",["material.core"]).directive("mdDivider",e),e.$inject=["$mdTheming"]}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],compile:function(e,n){var o=e.children(),r=!1;t.forEach(["","data-","x-"],function(e){r=r||(o.attr(e+"ng-repeat")?!0:!1)}),r?o.addClass("md-fab-action-item"):o.wrap('
    ')}}}t.module("material.components.fabActions",["material.core"]).directive("mdFabActions",e)}()}(),function(){!function(){function n(n,o,r,i,a){function d(){H.direction=H.direction||"down",H.isOpen=H.isOpen||!1,p()}function c(){var e=["mousedown","mouseup","click","touchstart","touchend","focusin","focusout"];t.forEach(e,function(e){o.on(e,u)}),n.$on("$destroy",function(){t.forEach(e,function(e){o.off(e,u)})})}function l(){I=[]}function s(e){var n,o,r,i=0;do o=e.map(function(e){return e.replace("?","")}),n=t.equals(I,o),n||(e=m(e),r=e.length>=I.length&&e.length!==o.length);while(10>i&&!n&&r);return n}function m(e){var t=!1;return e.filter(function(e){return t||-1===e.indexOf("?")?!0:(t=!0,!1)})}function u(e){return I.push(e.type),s(["mousedown","focusout?","focusin?","mouseup","click"])?(N(e),void l()):s(["touchstart?","touchend?","click"])?(N(e),void l()):s(["focusin"])?(H.open(),void l()):s(["focusout"])?(H.close(),void l()):void h()}function h(){D&&e.clearTimeout(D),D=e.setTimeout(function(){l()},250)}function p(){H.currentActionIndex=-1}function f(){n.$watch("vm.direction",function(e,t){r.removeClass(o,"md-"+t),r.addClass(o,"md-"+e),p()});var e,t;n.$watch("vm.isOpen",function(n){p(),e&&t||(e=_(),t=S()),n?b():E();var i=n?"md-is-open":"",a=n?"":"md-is-open";e.attr("aria-haspopup",!0),e.attr("aria-expanded",n),t.attr("aria-hidden",!n),r.setClass(o,i,a)})}function g(){i.nextTick(function(){r.addClass(o,"md-noop")})}function b(){t.element(document).on("keydown",v)}function E(){t.element(document).off("keydown",v)}function v(e){switch(e.which){case a.KEY_CODE.SPACE:return e.preventDefault(),!1;case a.KEY_CODE.ESCAPE:return H.close(),e.preventDefault(),!1;case a.KEY_CODE.LEFT_ARROW:return A(e),!1;case a.KEY_CODE.UP_ARROW:return C(e),!1;case a.KEY_CODE.RIGHT_ARROW:return T(e),!1;case a.KEY_CODE.DOWN_ARROW:return k(e),!1}}function $(e){y(e,-1)}function M(e){y(e,1)}function y(e,n){var o=S()[0].querySelectorAll(".md-fab-action-item");t.forEach(o,function(e){t.element(t.element(e).children()[0]).attr("tabindex",-1)}),H.currentActionIndex=H.currentActionIndex+n,H.currentActionIndex=Math.min(o.length-1,H.currentActionIndex),H.currentActionIndex=Math.max(0,H.currentActionIndex);var r=t.element(o[H.currentActionIndex]).children()[0];t.element(r).attr("tabindex",0),r.focus(),e.preventDefault(),e.stopImmediatePropagation()}function A(e){"left"===H.direction?M(e):$(e)}function C(e){"down"===H.direction?$(e):M(e)}function T(e){"left"===H.direction?$(e):M(e)}function k(e){"up"===H.direction?$(e):M(e)}function w(e){return i.getClosest(e,"md-fab-trigger")}function x(e){return i.getClosest(e,"md-fab-actions")}function N(e){w(e.target)&&H.toggle(),x(e.target)&&H.close()}function _(){return o.find("md-fab-trigger")}function S(){return o.find("md-fab-actions")}var H=this;H.open=function(){n.$evalAsync("vm.isOpen = true")},H.close=function(){n.$evalAsync("vm.isOpen = false"),o.find("md-fab-trigger")[0].focus()},H.toggle=function(){n.$evalAsync("vm.isOpen = !vm.isOpen")},d(),c(),f(),g();var D,I=[]}t.module("material.components.fabShared",["material.core"]).controller("FabController",n),n.$inject=["$scope","$element","$animate","$mdUtil","$mdConstant"]}()}(),function(){!function(){function n(){function e(e,t){t.prepend('
    ')}return{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"FabController",controllerAs:"vm",link:e}}function o(){function n(n){var o=n[0],r=n.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item"),a=o.querySelector("md-fab-trigger"),d=o.querySelector(".md-css-variables"),c=parseInt(e.getComputedStyle(d).zIndex);t.forEach(i,function(e,t){var n=e.style;n.transform=n.webkitTransform="",n.transitionDelay="",n.opacity=1,n.zIndex=i.length-t+c}),a.style.zIndex=c+i.length+1,r.isOpen||t.forEach(i,function(e,t){var n,o,i=e.style;switch(r.direction){case"up":n=e.scrollHeight*(t+1),o="Y";break;case"down":n=-e.scrollHeight*(t+1),o="Y";break;case"left":n=e.scrollWidth*(t+1),o="X";break;case"right":n=-e.scrollWidth*(t+1),o="X"}var a="translate"+o+"("+n+"px)";i.transform=i.webkitTransform=a})}return{addClass:function(e,t,o){e.hasClass("md-fling")&&(n(e),o())},removeClass:function(e,t,o){n(e),o()}}}function r(){function e(e){var o=e[0],r=e.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item");t.forEach(i,function(e,t){var o=e.style,a=t*n;o.opacity=r.isOpen?1:0,o.transform=o.webkitTransform=r.isOpen?"scale(1)":"scale(0)",o.transitionDelay=(r.isOpen?a:i.length-a)+"ms"})}var n=65;return{addClass:function(t,n,o){e(t),o()},removeClass:function(t,n,o){e(t),o()}}}t.module("material.components.fabSpeedDial",["material.core","material.components.fabShared","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabSpeedDial",n).animation(".md-fling",o).animation(".md-scale",r).service("mdFabSpeedDialFlingAnimation",o).service("mdFabSpeedDialScaleAnimation",r)}()}(),function(){!function(){function n(){function e(e,t,n){t.addClass("md-fab-toolbar"),t.find("md-fab-trigger").find("button").prepend('
    ')}return{restrict:"E",transclude:!0,template:'
    ',scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"FabController",controllerAs:"vm",link:e}}function o(){function n(n,o,r){if(o){var i=n[0],a=n.controller("mdFabToolbar"),d=i.querySelector(".md-fab-toolbar-background"),c=i.querySelector("md-fab-trigger button"),l=i.querySelector("md-toolbar"),s=i.querySelector("md-fab-trigger button md-icon"),m=n.find("md-fab-actions").children();if(c&&d){var u=e.getComputedStyle(c).getPropertyValue("background-color"),h=i.offsetWidth,p=(i.offsetHeight,2*h);d.style.backgroundColor=u,d.style.borderRadius=h+"px",a.isOpen?(l.style.pointerEvents="initial",d.style.width=p+"px",d.style.height=p+"px",d.style.top=-(p/2)+"px",n.hasClass("md-right")&&(d.style.left=-(p/2)+"px",d.style.right=null),n.hasClass("md-left")&&(d.style.right=-(p/2)+"px",d.style.left=null),d.style.transitionDelay="0ms",s&&(s.style.transitionDelay=".3s"),t.forEach(m,function(e,t){e.style.transitionDelay=25*(m.length-t)+"ms"})):(l.style.pointerEvents="none",d.style.width=c.offsetWidth+"px",d.style.height=c.offsetHeight+"px",d.style.top="0px",n.hasClass("md-right")&&(d.style.left="0px",d.style.right=null),n.hasClass("md-left")&&(d.style.right="0px",d.style.left=null),d.style.transitionDelay="200ms",s&&(s.style.transitionDelay="0ms"),t.forEach(m,function(e,t){e.style.transitionDelay=200+25*t+"ms"}))}}}return{addClass:function(e,t,o){n(e,t,o),o()},removeClass:function(e,t,o){n(e,t,o),o()}}}t.module("material.components.fabToolbar",["material.core","material.components.fabShared","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabToolbar",n).animation(".md-fab-toolbar",o).service("mdFabToolbarAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"]}}t.module("material.components.fabTrigger",["material.core"]).directive("mdFabTrigger",e)}()}(),function(){function e(e,o,r,i){function a(n,a,d,c){function l(){for(var e in o.MEDIA)i(e),i.getQuery(o.MEDIA[e]).addListener(A);return i.watchResponsiveAttributes(["md-cols","md-row-height"],d,m)}function s(){c.layoutDelegate=t.noop,C();for(var e in o.MEDIA)i.getQuery(o.MEDIA[e]).removeListener(A)}function m(e){null==e?c.invalidateLayout():i(e)&&c.invalidateLayout()}function u(e){var o=g(),i={tileSpans:b(o),colCount:E(),rowMode:M(),rowHeight:$(),gutter:v()};if(e||!t.equals(i,T)){var d=r(i.colCount,i.tileSpans,o).map(function(e,n){return{grid:{element:a,style:f(i.colCount,n,i.gutter,i.rowMode,i.rowHeight)},tiles:e.map(function(e,n){return{element:t.element(o[n]),style:p(e.position,e.spans,i.colCount,i.rowCount,i.gutter,i.rowMode,i.rowHeight)}})}}).reflow().performance();n.mdOnLayout({$event:{performance:d}}),T=i}}function h(e){return k+e+w}function p(e,t,n,o,r,i,a){var d=1/n*100,c=(n-1)/n,l=x({share:d,gutterShare:c,gutter:r}),s={left:N({unit:l,offset:e.col,gutter:r}),width:_({unit:l,span:t.col,gutter:r}),paddingTop:"",marginTop:"",top:"",height:""};switch(i){case"fixed":s.top=N({unit:a,offset:e.row,gutter:r}),s.height=_({unit:a,span:t.row,gutter:r});break;case"ratio":var m=d/a,u=x({share:m,gutterShare:c,gutter:r});s.paddingTop=_({unit:u,span:t.row,gutter:r}),s.marginTop=N({unit:u,offset:e.row,gutter:r});break;case"fit":var h=(o-1)/o,m=1/o*100,u=x({share:m,gutterShare:h,gutter:r});s.top=N({unit:u,offset:e.row,gutter:r}),s.height=_({unit:u,span:t.row,gutter:r})}return s}function f(e,t,n,o,r){var i={height:"",paddingBottom:""};switch(o){case"fixed":i.height=_({unit:r,span:t,gutter:n});break;case"ratio":var a=1===e?0:(e-1)/e,d=1/e*100,c=d*(1/r),l=x({share:c,gutterShare:a,gutter:n});i.paddingBottom=_({unit:l,span:t,gutter:n});break;case"fit":}return i}function g(){return[].filter.call(a.children(),function(e){return"MD-GRID-TILE"==e.tagName})}function b(e){return[].map.call(e,function(e){var n=t.element(e).controller("mdGridTile");return{row:parseInt(i.getResponsiveAttribute(n.$attrs,"md-rowspan"),10)||1,col:parseInt(i.getResponsiveAttribute(n.$attrs,"md-colspan"),10)||1}})}function E(){var e=parseInt(i.getResponsiveAttribute(d,"md-cols"),10);if(isNaN(e))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return e}function v(){return y(i.getResponsiveAttribute(d,"md-gutter")||1)}function $(){var e=i.getResponsiveAttribute(d,"md-row-height");switch(M()){case"fixed":return y(e);case"ratio":var t=e.split(":");return parseFloat(t[0])/parseFloat(t[1]);case"fit":return 0}}function M(){var e=i.getResponsiveAttribute(d,"md-row-height");return"fit"==e?"fit":-1!==e.indexOf(":")?"ratio":"fixed"}function y(e){return/\D$/.test(e)?e:e+"px"}a.attr("role","list"),c.layoutDelegate=u;var A=t.bind(c,c.invalidateLayout),C=l();n.$on("$destroy",s);var T,k=e.startSymbol(),w=e.endSymbol(),x=e(h("share")+"% - ("+h("gutter")+" * "+h("gutterShare")+")"),N=e("calc(("+h("unit")+" + "+h("gutter")+") * "+h("offset")+")"),_=e("calc(("+h("unit")+") * "+h("span")+" + ("+h("span")+" - 1) * "+h("gutter")+")")}return{restrict:"E",controller:n,scope:{mdOnLayout:"&"},link:a}}function n(e){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=e.nextTick,this.layoutDelegate=t.noop}function o(e){function n(t,n){var o,a,d,c,l,s;return c=e.time(function(){a=r(t,n)}),o={layoutInfo:function(){return a},map:function(t){return l=e.time(function(){var e=o.layoutInfo();d=t(e.positioning,e.rowCount)}),o},reflow:function(t){return s=e.time(function(){var e=t||i;e(d.grid,d.tiles)}),o},performance:function(){return{tileCount:n.length,layoutTime:c,mapTime:l,reflowTime:s,totalTime:c+l+s}}}}function o(e,t){e.element.css(e.style),t.forEach(function(e){e.element.css(e.style)})}function r(e,t){function n(t,n){if(t.col>e)throw"md-grid-list: Tile at position "+n+" has a colspan ("+t.col+") that exceeds the column count ("+e+")";for(var a=0,s=0;s-a=e?o():(a=l.indexOf(0,d),-1!==a&&-1!==(s=i(a+1))?d=s+1:(a=s=0,o()));return r(a,t.col,t.row),d=a+t.col,{col:a,row:c}}function o(){d=0,c++,r(0,e,-1)}function r(e,t,n){for(var o=e;e+t>o;o++)l[o]=Math.max(l[o]+n,0)}function i(e){var t;for(t=e;tn;n++)t.push(0);return t}var d=0,c=0,l=a();return{positioning:t.map(function(e,t){return{spans:e,position:n(e,t)}}),rowCount:c+Math.max.apply(Math,l)}}var i=o;return n.animateWith=function(e){i=t.isFunction(e)?e:o},n}function r(e){function n(n,o,r,i){o.attr("role","listitem");var a=e.watchResponsiveAttributes(["md-colspan","md-rowspan"],r,t.bind(i,i.invalidateLayout));i.invalidateTiles(),n.$on("$destroy",function(){a(),i.invalidateLayout()}),t.isDefined(n.$parent.$index)&&n.$watch(function(){return n.$parent.$index},function(e,t){e!==t&&i.invalidateTiles()})}return{restrict:"E",require:"^mdGridList",template:"
    ",transclude:!0,scope:{},controller:["$attrs",function(e){this.$attrs=e}],link:n}}function i(){return{template:"
    ",transclude:!0}}t.module("material.components.gridList",["material.core"]).directive("mdGridList",e).directive("mdGridTile",r).directive("mdGridTileFooter",i).directive("mdGridTileHeader",i).factory("$mdGridLayout",o),e.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia"],n.$inject=["$mdUtil"],n.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(t.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},o.$inject=["$mdUtil"],r.$inject=["$mdMedia"]}(),function(){function e(e,t,n){function o(o,r,i){function a(){var e=r.parent();return e.attr("aria-label")||e.text()?!0:e.parent().attr("aria-label")||e.parent().text()?!0:!1}function d(){function t(){return!o.fontIcon&&!o.fontSet}o.svgIcon||o.svgSrc||(o.fontIcon&&r.addClass("md-font "+o.fontIcon),o.fontSet&&r.addClass(e.fontSet(o.fontSet)),t()&&r.addClass(e.fontSet()))}t(r),d();var c=i.alt||o.fontIcon||o.svgIcon||r.text(),l=i.$normalize(i.$attr.mdSvgIcon||i.$attr.mdSvgSrc||"");i["aria-label"]||(""==c||a()?r.text()||n.expect(r,"aria-hidden","true"):(n.expect(r,"aria-label",c),n.expect(r,"role","img"))),l&&i.$observe(l,function(t){r.empty(),t&&e(t).then(function(e){r.append(e)})})}return{scope:{fontSet:"@mdFontSet",fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",link:o}}t.module("material.components.icon",["material.core"]).directive("mdIcon",e),e.$inject=["$mdIcon","$mdTheming","$mdAria"]}(),function(){function e(){}function n(e,t){this.url=e,this.viewBoxSize=t||r.defaultViewBoxSize}function o(e,n,o,r,i){function a(t){if(t=t||"",b[t])return o.when(b[t].clone());if(E.test(t))return m(t).then(c(t));-1==t.indexOf(":")&&(t="$default:"+t);var n=e[t]?l:s;return n(t).then(c(t))}function d(n){var o=t.isUndefined(n)||!(n&&n.length);if(o)return e.defaultFontSet;var r=n;return t.forEach(e.fontSets,function(e){e.alias==n&&(r=e.fontSet||r)}),r}function c(t){return function(n){return b[t]=h(n)?n:new p(n,e[t]),b[t].clone()}}function l(t){var n=e[t];return m(n.url).then(function(e){return new p(e,n)})}function s(t){function n(e){var n=t.slice(t.lastIndexOf(":")+1),o=e.querySelector("#"+n);return o?new p(o,d):i(t)}function i(e){var t="icon "+e+" not found";return r.warn(t),o.reject(t||e)}var a=t.substring(0,t.lastIndexOf(":"))||"$default",d=e[a];return d?m(d.url).then(n):i(t)}function m(e){return n.get(e,{cache:i}).then(function(e){return t.element("
    ").append(e.data).find("svg")[0]})["catch"](u)}function u(e){var n=t.isString(e)?e:e.message||e.data||e.statusText;return r.warn(n),o.reject(n)}function h(e){return t.isDefined(e.element)&&t.isDefined(e.config)}function p(e,n){"svg"!=e.tagName&&(e=t.element('').append(e)[0]),e.getAttribute("xmlns")||e.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=e,this.config=n,this.prepare()}function f(){var n=this.config?this.config.viewBoxSize:e.defaultViewBoxSize;t.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+n+" "+n},function(e,t){this.element.setAttribute(t,e)},this),t.forEach({"pointer-events":"none",display:"block"},function(e,t){this.element.style[t]=e},this)}function g(){return this.element.cloneNode(!0)}var b={},E=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return p.prototype={clone:g,prepare:f},a.fontSet=d,a}t.module("material.components.icon").provider("$mdIcon",e);var r={defaultViewBoxSize:24,defaultFontSet:"material-icons",fontSets:[]};e.prototype={icon:function(e,t,o){return-1==e.indexOf(":")&&(e="$default:"+e),r[e]=new n(t,o),this},iconSet:function(e,t,o){return r[e]=new n(t,o),this},defaultIconSet:function(e,t){var o="$default";return r[o]||(r[o]=new n(e,t)),r[o].viewBoxSize=t||r.defaultViewBoxSize,this; - -},defaultViewBoxSize:function(e){return r.defaultViewBoxSize=e,this},fontSet:function(e,t){return r.fontSets.push({alias:e,fontSet:t||e}),this},defaultFontSet:function(e){return r.defaultFontSet=e?e:"",this},defaultIconSize:function(e){return r.defaultIconSize=e,this},preloadIcons:function(e){var t=this,n=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:''},{id:"md-close",url:"md-close.svg",svg:''},{id:"md-cancel",url:"md-cancel.svg",svg:''},{id:"md-menu",url:"md-menu.svg",svg:''},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:''},{id:"md-calendar",url:"md-calendar.svg",svg:''}];n.forEach(function(n){t.icon(n.id,n.url),e.put(n.url,n.svg)})},$get:["$http","$q","$log","$templateCache",function(e,t,n,i){return this.preloadIcons(i),o(r,e,t,n,i)}]}}(),function(){function e(e,t){function n(t,n,o){e(n)}function o(e,n,o){var r=this;r.isErrorGetter=o.mdIsError&&t(o.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return o.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:o}}function n(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,o){o&&!n.mdNoFloat&&(o.label=t,e.$on("$destroy",function(){o.label=null}))}}}function o(e,n,o){function r(r,i,a,d){function c(e){return m.setHasValue(!h.$isEmpty(e)),e}function l(){m.setHasValue(i.val().length>0||(i[0].validity||{}).badInput)}function s(){function o(e){return f(),e}function a(){if(s.style.height=s.offsetHeight+"px",i.addClass("md-no-flex"),isNaN(u)){l.style.height="auto",l.scrollTop=0;var e=d();e&&(l.style.height=e+"px")}else{l.setAttribute("rows",1),p||(l.style.minHeight="0",p=i.prop("clientHeight"),l.style.minHeight=null);var t=Math.max(u,Math.round(l.scrollHeight/p));l.setAttribute("rows",t)}i.removeClass("md-no-flex"),s.style.height="auto"}function d(){var e=l.scrollHeight-l.offsetHeight;return l.offsetHeight+(e>0?e:0)}function c(e){l.scrollTop=0;var t=l.scrollHeight-l.offsetHeight,n=l.offsetHeight+t;l.style.height=n+"px"}if(!t.isDefined(i.attr("md-no-autogrow"))){var l=i[0],s=m.element[0],u=0/0,p=null;l.hasAttribute("rows")&&(u=parseInt(l.getAttribute("rows")));var f=e.debounce(a,1);h?(h.$formatters.push(o),h.$viewChangeListeners.push(o)):f(),i.on("keydown input",f),isNaN(u)&&(i.attr("rows","1"),i.on("scroll",c)),t.element(n).on("resize",f),r.$on("$destroy",function(){t.element(n).off("resize",f)})}}var m=d[0],u=!!d[1],h=d[1]||e.fakeNgModel(),p=t.isDefined(a.readonly);if(m){if(m.input)throw new Error(" can only have *one*
    ');r.$set("ngTrim","false"),l.element.append(s),c.$formatters.push(a),c.$viewChangeListeners.push(a),o.on("input keydown",function(){a()}),n.$watch(r.mdMaxlength,function(n){d=n,t.isNumber(n)&&n>0?(s.parent().length||e.enter(s,l.element,t.element(l.element[0].lastElementChild)),a()):e.leave(s)}),c.$validators["md-maxlength"]=function(e,n){return!t.isNumber(d)||0>d?!0:(e||o.val()||n||"").length<=d}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function i(e){function n(n,o,r,i){if(i&&!t.isDefined(i.element.attr("md-no-float"))){var a=r.placeholder;if(o.removeAttr("placeholder"),0==i.element.find("label").length){if(i.input&&"MD-SELECT"!=i.input[0].nodeName){var d='";i.element.addClass("md-icon-float"),i.element.prepend(d)}}else"MD-SELECT"!=o[0].nodeName&&e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",e).directive("label",n).directive("input",o).directive("textarea",o).directive("mdMaxlength",r).directive("placeholder",i),e.$inject=["$mdTheming","$parse"],o.$inject=["$mdUtil","$window","$mdAria"],r.$inject=["$animate"],i.$inject=["$log"]}(),function(){function e(e){return{restrict:"E",compile:function(t){return t[0].setAttribute("role","list"),e}}}function n(e,n,o){var r=["md-checkbox","md-switch"];return{restrict:"E",controller:"MdListController",compile:function(i,a){function d(){for(var e,t,n=["md-switch","md-checkbox"],o=0;t=n[o];++o)if((e=i.find(t)[0])&&!e.hasAttribute("aria-label")){var r=i.find("p")[0];if(!r)return;e.setAttribute("aria-label","Toggle "+r.textContent)}}function c(n){var o;if("div"==n)o=t.element('
    '),o.append(i.contents()),i.addClass("md-proxy-focus");else{o=t.element('
    ');var r=["ng-click","aria-label","ng-disabled"];t.forEach(r,function(e){i[0].hasAttribute(e)&&(o[0].setAttribute(e,i[0].getAttribute(e)),i[0].removeAttribute(e))}),o.children().eq(0).append(i.contents())}if(i[0].setAttribute("tabindex","-1"),i.append(o),h&&h.hasAttribute("ng-click")){e.expect(h,"aria-label");var d=t.element('');d.attr("ng-click",h.getAttribute("ng-click")),h.removeAttribute("ng-click"),h.setAttribute("tabindex","-1"),h.classList.remove("md-secondary"),d.append(h),h=d[0]}h&&(h.hasAttribute("ng-click")||a.ngClick&&l(h))&&(i.addClass("md-with-secondary"),i.append(h))}function l(e){return-1!=r.indexOf(e.nodeName.toLowerCase())}function s(e,i,a,d){function c(){var e=i.children();e.length&&!e[0].hasAttribute("ng-click")&&t.forEach(r,function(e){t.forEach(m.querySelectorAll(e),function(e){s.push(e)})})}function l(){(s.length||u)&&(i.addClass("md-clickable"),d.attachRipple(e,t.element(i[0].querySelector(".md-no-style"))))}var s=[],m=i[0].firstElementChild,u=m&&m.hasAttribute("ng-click");c(),l(),i.hasClass("md-proxy-focus")&&s.length&&t.forEach(s,function(n){n=t.element(n),e.mouseActive=!1,n.on("mousedown",function(){e.mouseActive=!0,o(function(){e.mouseActive=!1},100)}).on("focus",function(){e.mouseActive===!1&&i.addClass("md-focused"),n.on("blur",function t(){i.removeClass("md-focused"),n.off("blur",t)})})}),u||s.length||m&&m.addEventListener("keypress",function(e){if("INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName){var t=e.which||e.keyCode;t==n.KEY_CODE.SPACE&&m&&(m.click(),e.preventDefault(),e.stopPropagation())}}),i.off("click"),i.off("keypress"),s.length&&m&&i.children().eq(0).on("click",function(e){m.contains(e.target)&&t.forEach(s,function(n){e.target===n||n.contains(e.target)||t.element(n).triggerHandler("click")})})}var m,u,h=i[0].querySelector(".md-secondary");if(i[0].setAttribute("role","listitem"),a.ngClick)c("button");else{for(var p,f=0;p=r[f];++f)if(u=i[0].querySelector(p)){m=!0;break}m?c("div"):i[0].querySelector("md-button")||i.addClass("md-no-proxy")}return d(),s}}}function o(e,t,n){function o(e,t){var o={};n.attach(e,t,o)}var r=this;r.attachRipple=o}t.module("material.components.list",["material.core"]).controller("MdListController",o).directive("mdList",e).directive("mdListItem",n),e.$inject=["$mdTheming"],n.$inject=["$mdAria","$mdConstant","$timeout"],o.$inject=["$scope","$element","$mdListInkRipple"]}(),function(){function e(){function e(e){e.addClass("md-menu");var t=e.children()[0];if(t.hasAttribute("ng-click")||(t=t.querySelector("[ng-click],[ng-mouseenter]")),2!=e.children().length)throw Error(o+"Expected two children elements.");return t&&t.setAttribute("aria-haspopup","true"),n}function n(e,n,o,r){var i=t.element('
    '),a=n.children()[1];i.append(a),r.init(i),e.$on("$destroy",function(){i.remove(),r.close()})}var o="Invalid HTML for md-menu: ";return{restrict:"E",require:"mdMenu",controller:"mdMenuCtrl",scope:!0,compile:e}}function n(e,n,o,r){function i(e){s=e,m=o[0].querySelector("[ng-click],[ng-mouseenter]")}function a(t){t&&t.stopPropagation(),m=m||(t?t.target:o[0]),m.setAttribute("aria-expanded","true"),u.isOpen=!0,e.show({scope:r,mdMenuCtrl:u,element:s,target:m})}function d(t){u.isOpen&&(u.isOpen=!1,m&&m.setAttribute("aria-expanded","false"),e.hide(),t||o.children()[0].focus())}function c(){var e=(n.mdPositionMode||"target").split(" ");return 1==e.length&&e.push(e[0]),{left:e[0],top:e[1]}}function l(){var e=(n.mdOffset||"0 0").split(" ").map(parseFloat);if(2==e.length)return{left:e[0],top:e[1]};if(1==e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format or ")}var s,m,u=this;this.init=t.bind(this,i),this.open=t.bind(this,a),this.close=t.bind(this,d),this.positionMode=t.bind(this,c),this.offsets=t.bind(this,l),r.$mdOpenMenu=this.open}t.module("material.components.menu",["material.core","material.components.backdrop"]).directive("mdMenu",e).controller("mdMenuCtrl",n),n.$inject=["$mdMenu","$attrs","$element","$scope"]}(),function(){function e(e){function o(e,o,i,a,d,c,l,s,m){function u(t,n,o){return o.disableParentScroll&&!e.getClosest(o.target,"MD-DIALOG")?o.restoreScroll=e.disableScrollAround(o.element,o.parent):o.disableParentScroll=!1,o.hasBackdrop&&(o.backdrop=e.createBackdrop(t,"md-menu-backdrop md-click-catcher"),m.enter(o.backdrop,o.parent)),function(){o.backdrop&&m.leave(o.backdrop,{duration:0}),o.disableParentScroll&&o.restoreScroll()}}function h(e,t,n){return n.cleanupInteraction(),n.cleanupResizing(),n.hideBackdrop(),s(t,{addClass:"md-leave"}).start().then(function(){t.removeClass("md-active"),b(t,n),n.alreadyOpen=!1})}function p(e,n,r){function a(){return r.parent.append(n),c(function(e){var t=E(n,r);n.removeClass("md-leave"),s(n,{addClass:"md-active",from:v.toCss(t),to:v.toCss({transform:"scale(1.0,1.0)"})}).start().then(e)})}function m(){if(!r.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");t.extend(r,{alreadyOpen:!1,isRemoved:!1,target:t.element(r.target),parent:t.element(r.parent),menuContentEl:t.element(n[0].querySelector("md-menu-content"))})}function h(){var e=function(e,t){return l.throttle(function(){if(!r.isRemoved){var n=E(e,t);e.css(v.toCss(n))}})}(n,r);return d.addEventListener("resize",e),d.addEventListener("orientationchange",e),function(){d.removeEventListener("resize",e),d.removeEventListener("orientationchange",e)}}function p(){function t(t){e.$apply(function(){var e=i.KEY_CODE;switch(t.keyCode){case e.ESCAPE:r.mdMenuCtrl.close(),t.stopPropagation();break;case e.UP_ARROW:f(t,r.menuContentEl,r,-1),t.stopPropagation();break;case e.DOWN_ARROW:f(t,r.menuContentEl,r,1),t.stopPropagation()}})}function o(t){t.preventDefault(),t.stopPropagation(),e.$apply(function(){r.mdMenuCtrl.close(!0)})}function a(t){function n(){e.$apply(function(){r.mdMenuCtrl.close()})}function o(e,t){if(!e)return!1;for(var n,o=0;n=t[o];++o)for(var r,i=[n,"data-"+n,"x-"+n],a=0;r=i[a];++a)if(e.hasAttribute(r))return!0;return!1}var i=t.target;do{if(i==r.menuContentEl[0])return;if(o(i,["ng-click","ng-href","ui-sref"])){i.hasAttribute("disabled")||n();break}}while(i=i.parentNode)}n.addClass("md-clickable"),r.backdrop&&r.backdrop.on("click",o),r.menuContentEl.on("keydown",t),r.menuContentEl[0].addEventListener("click",a,!0);var d=r.menuContentEl[0].querySelector("[md-menu-focus-target]")||r.menuContentEl[0].firstElementChild.firstElementChild;return d.focus(),function(){n.removeClass("md-clickable"),r.backdrop&&r.backdrop.off("click",o),r.menuContentEl.off("keydown",t),r.menuContentEl[0].removeEventListener("click",a,!0)}}return m(r),o.inherit(r.menuContentEl,r.target),r.cleanupResizing=h(),r.hideBackdrop=u(e,n,r),a().then(function(e){return r.alreadyOpen=!0,r.cleanupInteraction=p(),e})}function f(t,n,o,r){for(var i=e.getClosest(t.target,"MD-MENU-ITEM"),a=e.nodesToArray(n[0].children),d=a.indexOf(i),c=d+r;c>=0&&c
    ',compile:n}}t.module("material.components.progressCircular",["material.core"]).directive("mdProgressCircular",e),e.$inject=["$mdConstant","$mdTheming"]}(),function(){function e(e,o,r){function i(e,t,n){return e.attr("aria-valuemin",0),e.attr("aria-valuemax",100),e.attr("role","progressbar"),a}function a(i,a,c){r(a);var l=a[0].querySelector(".md-bar1").style,s=a[0].querySelector(".md-bar2").style,m=t.element(a[0].querySelector(".md-container"));c.$observe("value",function(e){if("query"!=c.mdMode){var t=d(e);a.attr("aria-valuenow",t),s[o.CSS.TRANSFORM]=n[t]}}),c.$observe("mdBufferValue",function(e){l[o.CSS.TRANSFORM]=n[d(e)]}),e(function(){m.addClass("md-ready")})}function d(e){return e>100?100:0>e?0:Math.ceil(e||0)}return{restrict:"E",template:'
    ',compile:i}}t.module("material.components.progressLinear",["material.core"]).directive("mdProgressLinear",e),e.$inject=["$$rAF","$mdConstant","$mdTheming"];var n=function(){function e(e){var t=e/100,n=(e-100)/2;return"translateX("+n.toString()+"%) scale("+t.toString()+", 1)"}for(var t=new Array(101),n=0;101>n;n++)t[n]=e(n);return t}()}(),function(){function e(e,n,o,r){function i(i,a,d,c){function l(){a.hasClass("md-focused")||a.addClass("md-focused")}function s(o){var r=o.which||o.keyCode;switch(r){case n.KEY_CODE.LEFT_ARROW:case n.KEY_CODE.UP_ARROW:o.preventDefault(),m.selectPrevious(),l();break;case n.KEY_CODE.RIGHT_ARROW:case n.KEY_CODE.DOWN_ARROW:o.preventDefault(),m.selectNext(),l();break;case n.KEY_CODE.ENTER:var i=t.element(e.getClosest(a[0],"form"));i.length>0&&i.triggerHandler("submit")}}o(a);var m=c[0],u=c[1]||e.fakeNgModel();m.init(u),i.mouseActive=!1,a.attr({role:"radiogroup",tabIndex:a.attr("tabindex")||"0"}).on("keydown",s).on("mousedown",function(e){i.mouseActive=!0,r(function(){i.mouseActive=!1},100)}).on("focus",function(){i.mouseActive===!1&&m.$element.addClass("md-focused")}).on("blur",function(){m.$element.removeClass("md-focused")})}function a(e){this._radioButtonRenderFns=[],this.$element=e}function d(){return{init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=t.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return c(this.$element,1)},selectPrevious:function(){return c(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)}}}function c(n,o){var r=e.iterator(n[0].querySelectorAll("md-radio-button"),!0);if(r.count()){var i=function(e){return!t.element(e).attr("disabled")},a=n[0].querySelector("md-radio-button.md-checked"),d=r[0>o?"previous":"next"](a,i)||r.first();t.element(d).triggerHandler("click")}}return a.prototype=d(),{restrict:"E",controller:["$element",a],require:["mdRadioGroup","?ngModel"],link:{pre:i}}}function n(e,t,n){function o(o,i,a,d){function c(e){i[0].hasAttribute("disabled")||o.$apply(function(){d.setViewValue(a.value,e&&e.type)})}function l(){var e=d.getViewValue()==a.value;e!==m&&(m=e,i.attr("aria-checked",e),e?(i.addClass(r),d.setActiveDescendant(i.attr("id"))):i.removeClass(r))}function s(n,o){function r(){return a.id||"radio_"+t.nextUid()}o.ariaId=r(),n.attr({id:o.ariaId,role:"radio","aria-checked":"false"}),e.expectWithText(n,"aria-label")}var m;n(i),s(i,o),d.add(l),a.$observe("value",l),i.on("click",c).on("$destroy",function(){d.remove(l)})}var r="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'
    ',link:o}}t.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",e).directive("mdRadioButton",n),e.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],n.$inject=["$mdAria","$mdUtil","$mdTheming"]}(),function(){function e(e,o,r,i,a,d,c){function l(a,l){var s=t.element("");if(s.append(''),s.addClass("md-select-value"),s[0].hasAttribute("id")||s.attr("id","select_value_label_"+o.nextUid()),a.find("md-content").length||a.append(t.element("").append(a.contents())),l.mdOnOpen&&(a.find("md-content").prepend(t.element('
    ')),a.find("md-option").attr("ng-show","$$loadingAsyncDone")),l.name){var m=t.element(',
    +
    +
    @@ -6404,7 +6842,7 @@ function $TemplateCacheProvider() { * @param {string|DOMElement} element Element or HTML string to compile into a template function. * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED. * - *
    + *
    * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it * e.g. will not use the right outer scope. Please pass the transclude function as a * `parentBoundTranscludeFn` to the link function instead. @@ -6419,7 +6857,7 @@ function $TemplateCacheProvider() { * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the * `template` and call the `cloneAttachFn` function allowing the caller to attach the * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is - * called as:
    `cloneAttachFn(clonedElement, scope)` where: + * called as:
    `cloneAttachFn(clonedElement, scope)` where: * * * `clonedElement` - is a clone of the original `element` passed into the compiler. * * `scope` - is the current scope with which the linking function is working with. @@ -6492,7 +6930,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // 'on' and be composed of only English letters. var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/; - function parseIsolateBindings(scope, directiveName) { + function parseIsolateBindings(scope, directiveName, isController) { var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/; var bindings = {}; @@ -6502,9 +6940,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!match) { throw $compileMinErr('iscp', - "Invalid isolate scope definition for directive '{0}'." + + "Invalid {3} for directive '{0}'." + " Definition: {... {1}: '{2}' ...}", - directiveName, scopeName, definition); + directiveName, scopeName, definition, + (isController ? "controller bindings definition" : + "isolate scope definition")); } bindings[scopeName] = { @@ -6518,12 +6958,53 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return bindings; } + function parseDirectiveBindings(directive, directiveName) { + var bindings = { + isolateScope: null, + bindToController: null + }; + if (isObject(directive.scope)) { + if (directive.bindToController === true) { + bindings.bindToController = parseIsolateBindings(directive.scope, + directiveName, true); + bindings.isolateScope = {}; + } else { + bindings.isolateScope = parseIsolateBindings(directive.scope, + directiveName, false); + } + } + if (isObject(directive.bindToController)) { + bindings.bindToController = + parseIsolateBindings(directive.bindToController, directiveName, true); + } + if (isObject(bindings.bindToController)) { + var controller = directive.controller; + var controllerAs = directive.controllerAs; + if (!controller) { + // There is no controller, there may or may not be a controllerAs property + throw $compileMinErr('noctrl', + "Cannot bind to controller without directive '{0}'s controller.", + directiveName); + } else if (!identifierForController(controller, controllerAs)) { + // There is a controller, but no identifier or controllerAs property + throw $compileMinErr('noident', + "Cannot bind to controller without identifier for directive '{0}'.", + directiveName); + } + } + return bindings; + } + function assertValidDirectiveName(name) { var letter = name.charAt(0); if (!letter || letter !== lowercase(letter)) { throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name); } - return name; + if (name !== name.trim()) { + throw $compileMinErr('baddir', + "Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces", + name); + } } /** @@ -6564,9 +7045,12 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { directive.name = directive.name || name; directive.require = directive.require || (directive.controller && directive.name); directive.restrict = directive.restrict || 'EA'; - if (isObject(directive.scope)) { - directive.$$isolateBindings = parseIsolateBindings(directive.scope, directive.name); + var bindings = directive.$$bindings = + parseDirectiveBindings(directive, directive.name); + if (isObject(bindings.isolateScope)) { + directive.$$isolateBindings = bindings.isolateScope; } + directive.$$moduleName = directiveFactory.$$moduleName; directives.push(directive); } catch (e) { $exceptionHandler(e); @@ -6899,7 +7383,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { listeners.push(fn); $rootScope.$evalAsync(function() { - if (!listeners.$$inter && attrs.hasOwnProperty(key)) { + if (!listeners.$$inter && attrs.hasOwnProperty(key) && !isUndefined(attrs[key])) { // no one registered attribute interpolation function, so lets call it manually fn(attrs[key]); } @@ -7127,14 +7611,18 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (nodeLinkFn.scope) { childScope = scope.$new(); compile.$$addScopeInfo(jqLite(node), childScope); + var destroyBindings = nodeLinkFn.$$destroyBindings; + if (destroyBindings) { + nodeLinkFn.$$destroyBindings = null; + childScope.$on('$destroyed', destroyBindings); + } } else { childScope = scope; } if (nodeLinkFn.transcludeOnThisElement) { childBoundTranscludeFn = createBoundTranscludeFn( - scope, nodeLinkFn.transclude, parentBoundTranscludeFn, - nodeLinkFn.elementTranscludeOnThisElement); + scope, nodeLinkFn.transclude, parentBoundTranscludeFn); } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) { childBoundTranscludeFn = parentBoundTranscludeFn; @@ -7146,7 +7634,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { childBoundTranscludeFn = null; } - nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn); + nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn, + nodeLinkFn); } else if (childLinkFn) { childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn); @@ -7155,7 +7644,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } } - function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn, elementTransclusion) { + function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) { var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) { @@ -7254,6 +7743,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } break; case NODE_TYPE_TEXT: /* Text Node */ + if (msie === 11) { + // Workaround for #11781 + while (node.parentNode && node.nextSibling && node.nextSibling.nodeType === NODE_TYPE_TEXT) { + node.nodeValue = node.nodeValue + node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } addTextInterpolateDirective(directives, node.nodeValue); break; case NODE_TYPE_COMMENT: /* Comment */ @@ -7353,9 +7849,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { previousCompileContext = previousCompileContext || {}; var terminalPriority = -Number.MAX_VALUE, - newScopeDirective, + newScopeDirective = previousCompileContext.newScopeDirective, controllerDirectives = previousCompileContext.controllerDirectives, - controllers, newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective, templateDirective = previousCompileContext.templateDirective, nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective, @@ -7413,7 +7908,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!directive.templateUrl && directive.controller) { directiveValue = directive.controller; - controllerDirectives = controllerDirectives || {}; + controllerDirectives = controllerDirectives || createMap(); assertNoDuplicate("'" + directiveName + "' controller", controllerDirectives[directiveName], directive, $compileNode); controllerDirectives[directiveName] = directive; @@ -7520,6 +8015,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode, templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, { controllerDirectives: controllerDirectives, + newScopeDirective: (newScopeDirective !== directive) && newScopeDirective, newIsolateScopeDirective: newIsolateScopeDirective, templateDirective: templateDirective, nonTlbTranscludeDirective: nonTlbTranscludeDirective @@ -7547,7 +8043,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true; nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective; - nodeLinkFn.elementTranscludeOnThisElement = hasElementTranscludeDirective; nodeLinkFn.templateOnThisElement = hasTemplate; nodeLinkFn.transclude = childTranscludeFn; @@ -7581,53 +8076,77 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { function getControllers(directiveName, require, $element, elementControllers) { - var value, retrievalMethod = 'data', optional = false; - var $searchElement = $element; - var match; + var value; + if (isString(require)) { - match = require.match(REQUIRE_PREFIX_REGEXP); - require = require.substring(match[0].length); + var match = require.match(REQUIRE_PREFIX_REGEXP); + var name = require.substring(match[0].length); + var inheritType = match[1] || match[3]; + var optional = match[2] === '?'; - if (match[3]) { - if (match[1]) match[3] = null; - else match[1] = match[3]; - } - if (match[1] === '^') { - retrievalMethod = 'inheritedData'; - } else if (match[1] === '^^') { - retrievalMethod = 'inheritedData'; - $searchElement = $element.parent(); - } - if (match[2] === '?') { - optional = true; + //If only parents then start at the parent element + if (inheritType === '^^') { + $element = $element.parent(); + //Otherwise attempt getting the controller from elementControllers in case + //the element is transcluded (and has no data) and to avoid .data if possible + } else { + value = elementControllers && elementControllers[name]; + value = value && value.instance; } - value = null; - - if (elementControllers && retrievalMethod === 'data') { - if (value = elementControllers[require]) { - value = value.instance; - } + if (!value) { + var dataName = '$' + name + 'Controller'; + value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName); } - value = value || $searchElement[retrievalMethod]('$' + require + 'Controller'); if (!value && !optional) { throw $compileMinErr('ctreq', "Controller '{0}', required by directive '{1}', can't be found!", - require, directiveName); + name, directiveName); } - return value || null; } else if (isArray(require)) { value = []; - forEach(require, function(require) { - value.push(getControllers(directiveName, require, $element, elementControllers)); - }); + for (var i = 0, ii = require.length; i < ii; i++) { + value[i] = getControllers(directiveName, require[i], $element, elementControllers); + } } - return value; + + return value || null; } + function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope) { + var elementControllers = createMap(); + for (var controllerKey in controllerDirectives) { + var directive = controllerDirectives[controllerKey]; + var locals = { + $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, + $element: $element, + $attrs: attrs, + $transclude: transcludeFn + }; - function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) { + var controller = directive.controller; + if (controller == '@') { + controller = attrs[directive.name]; + } + + var controllerInstance = $controller(controller, locals, true, directive.controllerAs); + + // For directives with element transclusion the element is a comment, + // but jQuery .data doesn't support attaching data to comment nodes as it's hard to + // clean up (http://bugs.jquery.com/ticket/8335). + // Instead, we save the controllers for the element in a local hash and attach to .data + // later, once we have the actual element. + elementControllers[directive.name] = controllerInstance; + if (!hasElementTranscludeDirective) { + $element.data('$' + directive.name + 'Controller', controllerInstance.instance); + } + } + return elementControllers; + } + + function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn, + thisLinkFn) { var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element, attrs; @@ -7651,126 +8170,53 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } if (controllerDirectives) { - // TODO: merge `controllers` and `elementControllers` into single object. - controllers = {}; - elementControllers = {}; - forEach(controllerDirectives, function(directive) { - var locals = { - $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, - $element: $element, - $attrs: attrs, - $transclude: transcludeFn - }, controllerInstance; - - controller = directive.controller; - if (controller == '@') { - controller = attrs[directive.name]; - } - - controllerInstance = $controller(controller, locals, true, directive.controllerAs); - - // For directives with element transclusion the element is a comment, - // but jQuery .data doesn't support attaching data to comment nodes as it's hard to - // clean up (http://bugs.jquery.com/ticket/8335). - // Instead, we save the controllers for the element in a local hash and attach to .data - // later, once we have the actual element. - elementControllers[directive.name] = controllerInstance; - if (!hasElementTranscludeDirective) { - $element.data('$' + directive.name + 'Controller', controllerInstance.instance); - } - - controllers[directive.name] = controllerInstance; - }); + elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope); } if (newIsolateScopeDirective) { + // Initialize isolate scope bindings for new isolate scope directive. compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective || templateDirective === newIsolateScopeDirective.$$originalDirective))); compile.$$addScopeClass($element, true); - - var isolateScopeController = controllers && controllers[newIsolateScopeDirective.name]; - var isolateBindingContext = isolateScope; - if (isolateScopeController && isolateScopeController.identifier && - newIsolateScopeDirective.bindToController === true) { - isolateBindingContext = isolateScopeController.instance; - } - - forEach(isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings, function(definition, scopeName) { - var attrName = definition.attrName, - optional = definition.optional, - mode = definition.mode, // @, =, or & - lastValue, - parentGet, parentSet, compare; - - switch (mode) { - - case '@': - attrs.$observe(attrName, function(value) { - isolateBindingContext[scopeName] = value; - }); - attrs.$$observers[attrName].$$scope = scope; - if (attrs[attrName]) { - // If the attribute has been provided then we trigger an interpolation to ensure - // the value is there for use in the link fn - isolateBindingContext[scopeName] = $interpolate(attrs[attrName])(scope); - } - break; - - case '=': - if (optional && !attrs[attrName]) { - return; - } - parentGet = $parse(attrs[attrName]); - if (parentGet.literal) { - compare = equals; - } else { - compare = function(a, b) { return a === b || (a !== a && b !== b); }; - } - parentSet = parentGet.assign || function() { - // reset the change, or we will throw this exception on every $digest - lastValue = isolateBindingContext[scopeName] = parentGet(scope); - throw $compileMinErr('nonassign', - "Expression '{0}' used with directive '{1}' is non-assignable!", - attrs[attrName], newIsolateScopeDirective.name); - }; - lastValue = isolateBindingContext[scopeName] = parentGet(scope); - var parentValueWatch = function parentValueWatch(parentValue) { - if (!compare(parentValue, isolateBindingContext[scopeName])) { - // we are out of sync and need to copy - if (!compare(parentValue, lastValue)) { - // parent changed and it has precedence - isolateBindingContext[scopeName] = parentValue; - } else { - // if the parent can be assigned then do so - parentSet(scope, parentValue = isolateBindingContext[scopeName]); - } - } - return lastValue = parentValue; - }; - parentValueWatch.$stateful = true; - var unwatch; - if (definition.collection) { - unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch); - } else { - unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); - } - isolateScope.$on('$destroy', unwatch); - break; - - case '&': - parentGet = $parse(attrs[attrName]); - isolateBindingContext[scopeName] = function(locals) { - return parentGet(scope, locals); - }; - break; - } - }); + isolateScope.$$isolateBindings = + newIsolateScopeDirective.$$isolateBindings; + initializeDirectiveBindings(scope, attrs, isolateScope, + isolateScope.$$isolateBindings, + newIsolateScopeDirective, isolateScope); } - if (controllers) { - forEach(controllers, function(controller) { - controller(); - }); - controllers = null; + if (elementControllers) { + // Initialize bindToController bindings for new/isolate scopes + var scopeDirective = newIsolateScopeDirective || newScopeDirective; + var bindings; + var controllerForBindings; + if (scopeDirective && elementControllers[scopeDirective.name]) { + bindings = scopeDirective.$$bindings.bindToController; + controller = elementControllers[scopeDirective.name]; + + if (controller && controller.identifier && bindings) { + controllerForBindings = controller; + thisLinkFn.$$destroyBindings = + initializeDirectiveBindings(scope, attrs, controller.instance, + bindings, scopeDirective); + } + } + for (i in elementControllers) { + controller = elementControllers[i]; + var controllerResult = controller(); + + if (controllerResult !== controller.instance) { + // If the controller constructor has a return value, overwrite the instance + // from setupControllers and update the element data + controller.instance = controllerResult; + $element.data('$' + i + 'Controller', controllerResult); + if (controller === controllerForBindings) { + // Remove and re-install bindToController bindings + thisLinkFn.$$destroyBindings(); + thisLinkFn.$$destroyBindings = + initializeDirectiveBindings(scope, attrs, controllerResult, bindings, scopeDirective); + } + } + } } // PRELINKING @@ -8028,7 +8474,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { childBoundTranscludeFn = boundTranscludeFn; } afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement, - childBoundTranscludeFn); + childBoundTranscludeFn, afterTemplateNodeLinkFn); } linkQueue = null; }); @@ -8045,7 +8491,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (afterTemplateNodeLinkFn.transcludeOnThisElement) { childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn); } - afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn); + afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn, + afterTemplateNodeLinkFn); } }; } @@ -8061,11 +8508,18 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return a.index - b.index; } - function assertNoDuplicate(what, previousDirective, directive, element) { + + function wrapModuleNameIfDefined(moduleName) { + return moduleName ? + (' (module: ' + moduleName + ')') : + ''; + } + if (previousDirective) { - throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}', - previousDirective.name, directive.name, what, startingTag(element)); + throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}', + previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName), + directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element)); } } @@ -8246,26 +8700,28 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var fragment = document.createDocumentFragment(); fragment.appendChild(firstElementToRemove); - // Copy over user data (that includes Angular's $scope etc.). Don't copy private - // data here because there's no public interface in jQuery to do that and copying over - // event listeners (which is the main use of private data) wouldn't work anyway. - jqLite(newNode).data(jqLite(firstElementToRemove).data()); + if (jqLite.hasData(firstElementToRemove)) { + // Copy over user data (that includes Angular's $scope etc.). Don't copy private + // data here because there's no public interface in jQuery to do that and copying over + // event listeners (which is the main use of private data) wouldn't work anyway. + jqLite(newNode).data(jqLite(firstElementToRemove).data()); - // Remove data of the replaced element. We cannot just call .remove() - // on the element it since that would deallocate scope that is needed - // for the new node. Instead, remove the data "manually". - if (!jQuery) { - delete jqLite.cache[firstElementToRemove[jqLite.expando]]; - } else { - // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after - // the replaced element. The cleanData version monkey-patched by Angular would cause - // the scope to be trashed and we do need the very same scope to work with the new - // element. However, we cannot just cache the non-patched version and use it here as - // that would break if another library patches the method after Angular does (one - // example is jQuery UI). Instead, set a flag indicating scope destroying should be - // skipped this one time. - skipDestroyOnNextJQueryCleanData = true; - jQuery.cleanData([firstElementToRemove]); + // Remove data of the replaced element. We cannot just call .remove() + // on the element it since that would deallocate scope that is needed + // for the new node. Instead, remove the data "manually". + if (!jQuery) { + delete jqLite.cache[firstElementToRemove[jqLite.expando]]; + } else { + // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after + // the replaced element. The cleanData version monkey-patched by Angular would cause + // the scope to be trashed and we do need the very same scope to work with the new + // element. However, we cannot just cache the non-patched version and use it here as + // that would break if another library patches the method after Angular does (one + // example is jQuery UI). Instead, set a flag indicating scope destroying should be + // skipped this one time. + skipDestroyOnNextJQueryCleanData = true; + jQuery.cleanData([firstElementToRemove]); + } } for (var k = 1, kk = elementsToRemove.length; k < kk; k++) { @@ -8292,6 +8748,108 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { $exceptionHandler(e, startingTag($element)); } } + + + // Set up $watches for isolate scope and controller bindings. This process + // only occurs for isolate scopes and new scopes with controllerAs. + function initializeDirectiveBindings(scope, attrs, destination, bindings, + directive, newScope) { + var onNewScopeDestroyed; + forEach(bindings, function(definition, scopeName) { + var attrName = definition.attrName, + optional = definition.optional, + mode = definition.mode, // @, =, or & + lastValue, + parentGet, parentSet, compare; + + switch (mode) { + + case '@': + if (!optional && !hasOwnProperty.call(attrs, attrName)) { + destination[scopeName] = attrs[attrName] = void 0; + } + attrs.$observe(attrName, function(value) { + if (isString(value)) { + destination[scopeName] = value; + } + }); + attrs.$$observers[attrName].$$scope = scope; + if (isString(attrs[attrName])) { + // If the attribute has been provided then we trigger an interpolation to ensure + // the value is there for use in the link fn + destination[scopeName] = $interpolate(attrs[attrName])(scope); + } + break; + + case '=': + if (!hasOwnProperty.call(attrs, attrName)) { + if (optional) break; + attrs[attrName] = void 0; + } + if (optional && !attrs[attrName]) break; + + parentGet = $parse(attrs[attrName]); + if (parentGet.literal) { + compare = equals; + } else { + compare = function(a, b) { return a === b || (a !== a && b !== b); }; + } + parentSet = parentGet.assign || function() { + // reset the change, or we will throw this exception on every $digest + lastValue = destination[scopeName] = parentGet(scope); + throw $compileMinErr('nonassign', + "Expression '{0}' used with directive '{1}' is non-assignable!", + attrs[attrName], directive.name); + }; + lastValue = destination[scopeName] = parentGet(scope); + var parentValueWatch = function parentValueWatch(parentValue) { + if (!compare(parentValue, destination[scopeName])) { + // we are out of sync and need to copy + if (!compare(parentValue, lastValue)) { + // parent changed and it has precedence + destination[scopeName] = parentValue; + } else { + // if the parent can be assigned then do so + parentSet(scope, parentValue = destination[scopeName]); + } + } + return lastValue = parentValue; + }; + parentValueWatch.$stateful = true; + var unwatch; + if (definition.collection) { + unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch); + } else { + unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); + } + onNewScopeDestroyed = (onNewScopeDestroyed || []); + onNewScopeDestroyed.push(unwatch); + break; + + case '&': + // Don't assign Object.prototype method to scope + parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop; + + // Don't assign noop to destination if expression is not valid + if (parentGet === noop && optional) break; + + destination[scopeName] = function(locals) { + return parentGet(scope, locals); + }; + break; + } + }); + var destroyBindings = onNewScopeDestroyed ? function destroyBindings() { + for (var i = 0, ii = onNewScopeDestroyed.length; i < ii; ++i) { + onNewScopeDestroyed[i](); + } + } : noop; + if (newScope && destroyBindings !== noop) { + newScope.$on('$destroy', destroyBindings); + return noop; + } + return destroyBindings; + } }]; } @@ -8399,6 +8957,17 @@ function removeComments(jqNodes) { var $controllerMinErr = minErr('$controller'); + +var CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/; +function identifierForController(controller, ident) { + if (ident && isString(ident)) return ident; + if (isString(controller)) { + var match = CNTRL_REG.exec(controller); + if (match) return match[3]; + } +} + + /** * @ngdoc provider * @name $controllerProvider @@ -8411,9 +8980,7 @@ var $controllerMinErr = minErr('$controller'); */ function $ControllerProvider() { var controllers = {}, - globals = false, - CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/; - + globals = false; /** * @ngdoc method @@ -8521,8 +9088,16 @@ function $ControllerProvider() { addIdentifier(locals, identifier, instance, constructor || expression.name); } - return extend(function() { - $injector.invoke(expression, instance, locals, constructor); + var instantiate; + return instantiate = extend(function() { + var result = $injector.invoke(expression, instance, locals, constructor); + if (result !== instance && (isObject(result) || isFunction(result))) { + instance = result; + if (identifier) { + // If result changed, re-assign controllerAs value to scope. + addIdentifier(locals, identifier, instance, constructor || expression.name); + } + } return instance; }, { instance: instance, @@ -8630,6 +9205,29 @@ function $ExceptionHandlerProvider() { }]; } +var $$ForceReflowProvider = function() { + this.$get = ['$document', function($document) { + return function(domNode) { + //the line below will force the browser to perform a repaint so + //that all the animated elements within the animation frame will + //be properly updated and drawn on screen. This is required to + //ensure that the preparation animation is properly flushed so that + //the active state picks up from there. DO NOT REMOVE THIS LINE. + //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH + //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND + //WILL TAKE YEARS AWAY FROM YOUR LIFE. + if (domNode) { + if (!domNode.nodeType && domNode instanceof jqLite) { + domNode = domNode[0]; + } + } else { + domNode = $document[0].body; + } + return domNode.offsetWidth + 1; + }; + }]; +}; + var APPLICATION_JSON = 'application/json'; var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'}; var JSON_START = /^\[|^\{(?!\{)/; @@ -8638,6 +9236,129 @@ var JSON_ENDS = { '{': /}$/ }; var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; +var $httpMinErr = minErr('$http'); +var $httpMinErrLegacyFn = function(method) { + return function() { + throw $httpMinErr('legacy', 'The method `{0}` on the promise returned from `$http` has been disabled.', method); + }; +}; + +function serializeValue(v) { + if (isObject(v)) { + return isDate(v) ? v.toISOString() : toJson(v); + } + return v; +} + + +function $HttpParamSerializerProvider() { + /** + * @ngdoc service + * @name $httpParamSerializer + * @description + * + * Default {@link $http `$http`} params serializer that converts objects to strings + * according to the following rules: + * + * * `{'foo': 'bar'}` results in `foo=bar` + * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object) + * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element) + * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object) + * + * Note that serializer will sort the request parameters alphabetically. + * */ + + this.$get = function() { + return function ngParamSerializer(params) { + if (!params) return ''; + var parts = []; + forEachSorted(params, function(value, key) { + if (value === null || isUndefined(value)) return; + if (isArray(value)) { + forEach(value, function(v, k) { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v))); + }); + } else { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value))); + } + }); + + return parts.join('&'); + }; + }; +} + +function $HttpParamSerializerJQLikeProvider() { + /** + * @ngdoc service + * @name $httpParamSerializerJQLike + * @description + * + * Alternative {@link $http `$http`} params serializer that follows + * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic. + * The serializer will also sort the params alphabetically. + * + * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property: + * + * ```js + * $http({ + * url: myUrl, + * method: 'GET', + * params: myParams, + * paramSerializer: '$httpParamSerializerJQLike' + * }); + * ``` + * + * It is also possible to set it as the default `paramSerializer` in the + * {@link $httpProvider#defaults `$httpProvider`}. + * + * Additionally, you can inject the serializer and use it explicitly, for example to serialize + * form data for submission: + * + * ```js + * .controller(function($http, $httpParamSerializerJQLike) { + * //... + * + * $http({ + * url: myUrl, + * method: 'POST', + * data: $httpParamSerializerJQLike(myData), + * headers: { + * 'Content-Type': 'application/x-www-form-urlencoded' + * } + * }); + * + * }); + * ``` + * + * */ + this.$get = function() { + return function jQueryLikeParamSerializer(params) { + if (!params) return ''; + var parts = []; + serialize(params, '', true); + return parts.join('&'); + + function serialize(toSerialize, prefix, topLevel) { + if (toSerialize === null || isUndefined(toSerialize)) return; + if (isArray(toSerialize)) { + forEach(toSerialize, function(value, index) { + serialize(value, prefix + '[' + (isObject(value) ? index : '') + ']'); + }); + } else if (isObject(toSerialize) && !isDate(toSerialize)) { + forEachSorted(toSerialize, function(value, key) { + serialize(value, prefix + + (topLevel ? '' : '[') + + key + + (topLevel ? '' : ']')); + }); + } else { + parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize))); + } + } + }; + }; +} function defaultHttpResponseTransform(data, headers) { if (isString(data)) { @@ -8667,19 +9388,24 @@ function isJsonLike(str) { * @returns {Object} Parsed headers as key value object */ function parseHeaders(headers) { - var parsed = createMap(), key, val, i; - - if (!headers) return parsed; - - forEach(headers.split('\n'), function(line) { - i = line.indexOf(':'); - key = lowercase(trim(line.substr(0, i))); - val = trim(line.substr(i + 1)); + var parsed = createMap(), i; + function fillInParsed(key, val) { if (key) { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } - }); + } + + if (isString(headers)) { + forEach(headers.split('\n'), function(line) { + i = line.indexOf(':'); + fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1))); + }); + } else if (isObject(headers)) { + forEach(headers, function(headerVal, headerKey) { + fillInParsed(lowercase(headerKey), trim(headerVal)); + }); + } return parsed; } @@ -8698,7 +9424,7 @@ function parseHeaders(headers) { * - if called with no arguments returns an object containing all headers. */ function headersGetter(headers) { - var headersObj = isObject(headers) ? headers : undefined; + var headersObj; return function(name) { if (!headersObj) headersObj = parseHeaders(headers); @@ -8728,8 +9454,9 @@ function headersGetter(headers) { * @returns {*} Transformed data. */ function transformData(data, headers, status, fns) { - if (isFunction(fns)) + if (isFunction(fns)) { return fns(data, headers, status); + } forEach(fns, function(fn) { data = fn(data, headers, status); @@ -8760,7 +9487,7 @@ function $HttpProvider() { * * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`} * that will provide the cache for all requests who set their `cache` property to `true`. - * If you set the `default.cache = false` then only requests that specify their own custom + * If you set the `defaults.cache = false` then only requests that specify their own custom * cache object will be cached. See {@link $http#caching $http Caching} for more information. * * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token. @@ -8777,6 +9504,12 @@ function $HttpProvider() { * - **`defaults.headers.put`** * - **`defaults.headers.patch`** * + * + * - **`defaults.paramSerializer`** - `{string|function(Object):string}` - A function + * used to the prepare string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}. + * Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}. + * **/ var defaults = this.defaults = { // transform incoming response data @@ -8798,7 +9531,9 @@ function $HttpProvider() { }, xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN' + xsrfHeaderName: 'X-XSRF-TOKEN', + + paramSerializer: '$httpParamSerializer' }; var useApplyAsync = false; @@ -8812,7 +9547,7 @@ function $HttpProvider() { * significant performance improvement for bigger applications that make many HTTP requests * concurrently (common during application bootstrap). * - * Defaults to false. If no value is specifed, returns the current configured value. + * Defaults to false. If no value is specified, returns the current configured value. * * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window @@ -8829,6 +9564,30 @@ function $HttpProvider() { return useApplyAsync; }; + var useLegacyPromise = true; + /** + * @ngdoc method + * @name $httpProvider#useLegacyPromiseExtensions + * @description + * + * Configure `$http` service to return promises without the shorthand methods `success` and `error`. + * This should be used to make sure that applications work without these methods. + * + * Defaults to false. If no value is specified, returns the current configured value. + * + * @param {boolean=} value If true, `$http` will return a normal promise without the `success` and `error` methods. + * + * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining. + * otherwise, returns the current configured value. + **/ + this.useLegacyPromiseExtensions = function(value) { + if (isDefined(value)) { + useLegacyPromise = !!value; + return this; + } + return useLegacyPromise; + }; + /** * @ngdoc property * @name $httpProvider#interceptors @@ -8844,11 +9603,17 @@ function $HttpProvider() { **/ var interceptorFactories = this.interceptors = []; - this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector', - function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) { + this.$get = ['$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector', + function($httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector) { var defaultCache = $cacheFactory('$http'); + /** + * Make sure that default param serializer is exposed as a function + */ + defaults.paramSerializer = isString(defaults.paramSerializer) ? + $injector.get(defaults.paramSerializer) : defaults.paramSerializer; + /** * Interceptors stored in reverse order. Inner interceptors before outer interceptors. * The reversal is needed so that we can build up the interception chain around the @@ -8889,17 +9654,15 @@ function $HttpProvider() { * * ## General usage * The `$http` service is a function which takes a single argument — a configuration object — - * that is used to generate an HTTP request and returns a {@link ng.$q promise} - * with two $http specific methods: `success` and `error`. + * that is used to generate an HTTP request and returns a {@link ng.$q promise}. * * ```js * // Simple GET request example : * $http.get('/someUrl'). - * success(function(data, status, headers, config) { + * then(function(response) { * // this callback will be called asynchronously * // when the response is available - * }). - * error(function(data, status, headers, config) { + * }, function(response) { * // called asynchronously if an error occurs * // or server returns response with an error status. * }); @@ -8908,21 +9671,23 @@ function $HttpProvider() { * ```js * // Simple POST request example (passing data) : * $http.post('/someUrl', {msg:'hello word!'}). - * success(function(data, status, headers, config) { + * then(function(response) { * // this callback will be called asynchronously * // when the response is available - * }). - * error(function(data, status, headers, config) { + * }, function(response) { * // called asynchronously if an error occurs * // or server returns response with an error status. * }); * ``` * + * The response object has these properties: * - * Since the returned value of calling the $http function is a `promise`, you can also use - * the `then` method to register callbacks, and these callbacks will receive a single argument – - * an object representing the response. See the API signature and type info below for more - * details. + * - **data** – `{string|Object}` – The response body transformed with the transform + * functions. + * - **status** – `{number}` – HTTP status code of the response. + * - **headers** – `{function([headerName])}` – Header getter function. + * - **config** – `{Object}` – The configuration object that was used to generate the request. + * - **statusText** – `{string}` – HTTP status text of the response. * * A response status code between 200 and 299 is considered a success status and * will result in the success callback being called. Note that if the response is a redirect, @@ -8946,8 +9711,8 @@ function $HttpProvider() { * request data must be passed in for POST/PUT requests. * * ```js - * $http.get('/someUrl').success(successCallback); - * $http.post('/someUrl', data).success(successCallback); + * $http.get('/someUrl').then(successCallback); + * $http.post('/someUrl', data).then(successCallback); * ``` * * Complete list of shortcut methods: @@ -8961,6 +9726,14 @@ function $HttpProvider() { * - {@link ng.$http#patch $http.patch} * * + * ## Deprecation Notice + *
    + * The `$http` legacy promise methods `success` and `error` have been deprecated. + * Use the standard `then` method instead. + * If {@link $httpProvider#useLegacyPromiseExtensions `$httpProvider.useLegacyPromiseExtensions`} is set to + * `false` then these methods will throw {@link $http:legacy `$http/legacy`} error. + *
    + * * ## Setting HTTP Headers * * The $http service will automatically add certain HTTP headers to all requests. These defaults @@ -8977,7 +9750,7 @@ function $HttpProvider() { * To add or overwrite these defaults, simply add or remove a property from these configuration * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object * with the lowercased HTTP method name as the key, e.g. - * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }. + * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`. * * The defaults can also be set at runtime via the `$http.defaults` object in the same * fashion. For example: @@ -9004,7 +9777,7 @@ function $HttpProvider() { * data: { test: 'test' } * } * - * $http(req).success(function(){...}).error(function(){...}); + * $http(req).then(function(){...}, function(){...}); * ``` * * ## Transforming Requests and Responses @@ -9233,19 +10006,20 @@ function $HttpProvider() { * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time, * or the per-request config object. * + * In order to prevent collisions in environments where multiple Angular apps share the + * same domain or subdomain, we recommend that each application uses unique cookie name. * * @param {object} config Object describing the request to be made and how it should be * processed. The object has following properties: * * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc) * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested. - * - **params** – `{Object.}` – Map of strings or objects which will be turned - * to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be - * JSONified. + * - **params** – `{Object.}` – Map of strings or objects which will be serialized + * with the `paramSerializer` and appended as GET parameters. * - **data** – `{string|Object}` – Data to be sent as the request message data. * - **headers** – `{Object}` – Map of strings or functions which return strings representing * HTTP headers to send to the server. If the return value of a function is null, the - * header will not be sent. + * header will not be sent. Functions accept a config object as an argument. * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token. * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token. * - **transformRequest** – @@ -9259,7 +10033,14 @@ function $HttpProvider() { * transform function or an array of such functions. The transform function takes the http * response body, headers and status and returns its transformed (typically deserialized) version. * See {@link ng.$http#overriding-the-default-transformations-per-request - * Overriding the Default Transformations} + * Overriding the Default TransformationjqLiks} + * - **paramSerializer** - `{string|function(Object):string}` - A function used to + * prepare the string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as function registered with the + * {@link $injector $injector}, which means you can create your own serializer + * by registering it as a {@link auto.$provide#service service}. + * The default serializer is the {@link $httpParamSerializer $httpParamSerializer}; + * alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike} * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the * GET request, otherwise if a cache instance built with * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for @@ -9270,22 +10051,11 @@ function $HttpProvider() { * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials) * for more information. * - **responseType** - `{string}` - see - * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). + * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype). * - * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the - * standard `then` method and two http specific methods: `success` and `error`. The `then` - * method takes two arguments a success and an error callback which will be called with a - * response object. The `success` and `error` methods take a single argument - a function that - * will be called when the request succeeds or fails respectively. The arguments passed into - * these functions are destructured representation of the response object passed into the - * `then` method. The response object has these properties: + * @returns {HttpPromise} Returns a {@link ng.$q `Promise}` that will be resolved to a response object + * when the request succeeds or fails. * - * - **data** – `{string|Object}` – The response body transformed with the transform - * functions. - * - **status** – `{number}` – HTTP status code of the response. - * - **headers** – `{function([headerName])}` – Header getter function. - * - **config** – `{Object}` – The configuration object that was used to generate the request. - * - **statusText** – `{string}` – HTTP status text of the response. * * @property {Array.} pendingRequests Array of config objects for currently pending * requests. This is primarily meant to be used for debugging purposes. @@ -9295,11 +10065,11 @@ function $HttpProvider() {
    - - +
    @@ -11810,57 +12519,8 @@ function ensureSafeFunction(obj, fullExpression) { } } -//Keyword constants -var CONSTANTS = createMap(); -forEach({ - 'null': function() { return null; }, - 'true': function() { return true; }, - 'false': function() { return false; }, - 'undefined': function() {} -}, function(constantGetter, name) { - constantGetter.constant = constantGetter.literal = constantGetter.sharedGetter = true; - CONSTANTS[name] = constantGetter; -}); - -//Not quite a constant, but can be lex/parsed the same -CONSTANTS['this'] = function(self) { return self; }; -CONSTANTS['this'].sharedGetter = true; - - -//Operators - will be wrapped by binaryFn/unaryFn/assignment/filter -var OPERATORS = extend(createMap(), { - '+':function(self, locals, a, b) { - a=a(self, locals); b=b(self, locals); - if (isDefined(a)) { - if (isDefined(b)) { - return a + b; - } - return a; - } - return isDefined(b) ? b : undefined;}, - '-':function(self, locals, a, b) { - a=a(self, locals); b=b(self, locals); - return (isDefined(a) ? a : 0) - (isDefined(b) ? b : 0); - }, - '*':function(self, locals, a, b) {return a(self, locals) * b(self, locals);}, - '/':function(self, locals, a, b) {return a(self, locals) / b(self, locals);}, - '%':function(self, locals, a, b) {return a(self, locals) % b(self, locals);}, - '===':function(self, locals, a, b) {return a(self, locals) === b(self, locals);}, - '!==':function(self, locals, a, b) {return a(self, locals) !== b(self, locals);}, - '==':function(self, locals, a, b) {return a(self, locals) == b(self, locals);}, - '!=':function(self, locals, a, b) {return a(self, locals) != b(self, locals);}, - '<':function(self, locals, a, b) {return a(self, locals) < b(self, locals);}, - '>':function(self, locals, a, b) {return a(self, locals) > b(self, locals);}, - '<=':function(self, locals, a, b) {return a(self, locals) <= b(self, locals);}, - '>=':function(self, locals, a, b) {return a(self, locals) >= b(self, locals);}, - '&&':function(self, locals, a, b) {return a(self, locals) && b(self, locals);}, - '||':function(self, locals, a, b) {return a(self, locals) || b(self, locals);}, - '!':function(self, locals, a) {return !a(self, locals);}, - - //Tokenized as operators but parsed as assignment/filters - '=':true, - '|':true -}); +var OPERATORS = createMap(); +forEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; }); var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'}; @@ -12012,8 +12672,9 @@ Lexer.prototype = { if (escape) { if (ch === 'u') { var hex = this.text.substring(this.index + 1, this.index + 5); - if (!hex.match(/[\da-f]{4}/i)) + if (!hex.match(/[\da-f]{4}/i)) { this.throwError('Invalid unicode escape [\\u' + hex + ']'); + } this.index += 4; string += String.fromCharCode(parseInt(hex, 16)); } else { @@ -12041,46 +12702,155 @@ Lexer.prototype = { } }; - -function isConstant(exp) { - return exp.constant; -} - -/** - * @constructor - */ -var Parser = function(lexer, $filter, options) { +var AST = function(lexer, options) { this.lexer = lexer; - this.$filter = $filter; this.options = options; }; -Parser.ZERO = extend(function() { - return 0; -}, { - sharedGetter: true, - constant: true -}); +AST.Program = 'Program'; +AST.ExpressionStatement = 'ExpressionStatement'; +AST.AssignmentExpression = 'AssignmentExpression'; +AST.ConditionalExpression = 'ConditionalExpression'; +AST.LogicalExpression = 'LogicalExpression'; +AST.BinaryExpression = 'BinaryExpression'; +AST.UnaryExpression = 'UnaryExpression'; +AST.CallExpression = 'CallExpression'; +AST.MemberExpression = 'MemberExpression'; +AST.Identifier = 'Identifier'; +AST.Literal = 'Literal'; +AST.ArrayExpression = 'ArrayExpression'; +AST.Property = 'Property'; +AST.ObjectExpression = 'ObjectExpression'; +AST.ThisExpression = 'ThisExpression'; -Parser.prototype = { - constructor: Parser, +// Internal use only +AST.NGValueParameter = 'NGValueParameter'; - parse: function(text) { +AST.prototype = { + ast: function(text) { this.text = text; this.tokens = this.lexer.lex(text); - var value = this.statements(); + var value = this.program(); if (this.tokens.length !== 0) { this.throwError('is an unexpected token', this.tokens[0]); } - value.literal = !!value.literal; - value.constant = !!value.constant; - return value; }, + program: function() { + var body = []; + while (true) { + if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']')) + body.push(this.expressionStatement()); + if (!this.expect(';')) { + return { type: AST.Program, body: body}; + } + } + }, + + expressionStatement: function() { + return { type: AST.ExpressionStatement, expression: this.filterChain() }; + }, + + filterChain: function() { + var left = this.expression(); + var token; + while ((token = this.expect('|'))) { + left = this.filter(left); + } + return left; + }, + + expression: function() { + return this.assignment(); + }, + + assignment: function() { + var result = this.ternary(); + if (this.expect('=')) { + result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='}; + } + return result; + }, + + ternary: function() { + var test = this.logicalOR(); + var alternate; + var consequent; + if (this.expect('?')) { + alternate = this.expression(); + if (this.consume(':')) { + consequent = this.expression(); + return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent}; + } + } + return test; + }, + + logicalOR: function() { + var left = this.logicalAND(); + while (this.expect('||')) { + left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() }; + } + return left; + }, + + logicalAND: function() { + var left = this.equality(); + while (this.expect('&&')) { + left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()}; + } + return left; + }, + + equality: function() { + var left = this.relational(); + var token; + while ((token = this.expect('==','!=','===','!=='))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() }; + } + return left; + }, + + relational: function() { + var left = this.additive(); + var token; + while ((token = this.expect('<', '>', '<=', '>='))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() }; + } + return left; + }, + + additive: function() { + var left = this.multiplicative(); + var token; + while ((token = this.expect('+','-'))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() }; + } + return left; + }, + + multiplicative: function() { + var left = this.unary(); + var token; + while ((token = this.expect('*','/','%'))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() }; + } + return left; + }, + + unary: function() { + var token; + if ((token = this.expect('+', '-', '!'))) { + return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() }; + } else { + return this.primary(); + } + }, + primary: function() { var primary; if (this.expect('(')) { @@ -12090,8 +12860,8 @@ Parser.prototype = { primary = this.arrayDeclaration(); } else if (this.expect('{')) { primary = this.object(); - } else if (this.peek().identifier && this.peek().text in CONSTANTS) { - primary = CONSTANTS[this.consume().text]; + } else if (this.constants.hasOwnProperty(this.peek().text)) { + primary = copy(this.constants[this.consume().text]); } else if (this.peek().identifier) { primary = this.identifier(); } else if (this.peek().constant) { @@ -12100,17 +12870,16 @@ Parser.prototype = { this.throwError('not a primary expression', this.peek()); } - var next, context; + var next; while ((next = this.expect('(', '[', '.'))) { if (next.text === '(') { - primary = this.functionCall(primary, context); - context = null; + primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() }; + this.consume(')'); } else if (next.text === '[') { - context = primary; - primary = this.objectIndex(primary); + primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true }; + this.consume(']'); } else if (next.text === '.') { - context = primary; - primary = this.fieldAccess(primary); + primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false }; } else { this.throwError('IMPOSSIBLE'); } @@ -12118,21 +12887,111 @@ Parser.prototype = { return primary; }, + filter: function(baseExpression) { + var args = [baseExpression]; + var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true}; + + while (this.expect(':')) { + args.push(this.expression()); + } + + return result; + }, + + parseArguments: function() { + var args = []; + if (this.peekToken().text !== ')') { + do { + args.push(this.expression()); + } while (this.expect(',')); + } + return args; + }, + + identifier: function() { + var token = this.consume(); + if (!token.identifier) { + this.throwError('is not a valid identifier', token); + } + return { type: AST.Identifier, name: token.text }; + }, + + constant: function() { + // TODO check that it is a constant + return { type: AST.Literal, value: this.consume().value }; + }, + + arrayDeclaration: function() { + var elements = []; + if (this.peekToken().text !== ']') { + do { + if (this.peek(']')) { + // Support trailing commas per ES5.1. + break; + } + elements.push(this.expression()); + } while (this.expect(',')); + } + this.consume(']'); + + return { type: AST.ArrayExpression, elements: elements }; + }, + + object: function() { + var properties = [], property; + if (this.peekToken().text !== '}') { + do { + if (this.peek('}')) { + // Support trailing commas per ES5.1. + break; + } + property = {type: AST.Property, kind: 'init'}; + if (this.peek().constant) { + property.key = this.constant(); + } else if (this.peek().identifier) { + property.key = this.identifier(); + } else { + this.throwError("invalid key", this.peek()); + } + this.consume(':'); + property.value = this.expression(); + properties.push(property); + } while (this.expect(',')); + } + this.consume('}'); + + return {type: AST.ObjectExpression, properties: properties }; + }, + throwError: function(msg, token) { throw $parseMinErr('syntax', 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].', token.text, msg, (token.index + 1), this.text, this.text.substring(token.index)); }, - peekToken: function() { - if (this.tokens.length === 0) + consume: function(e1) { + if (this.tokens.length === 0) { throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); + } + + var token = this.expect(e1); + if (!token) { + this.throwError('is unexpected, expecting [' + e1 + ']', this.peek()); + } + return token; + }, + + peekToken: function() { + if (this.tokens.length === 0) { + throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); + } return this.tokens[0]; }, peek: function(e1, e2, e3, e4) { return this.peekAhead(0, e1, e2, e3, e4); }, + peekAhead: function(i, e1, e2, e3, e4) { if (this.tokens.length > i) { var token = this.tokens[i]; @@ -12154,405 +13013,1029 @@ Parser.prototype = { return false; }, - consume: function(e1) { - if (this.tokens.length === 0) { - throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); - } - var token = this.expect(e1); - if (!token) { - this.throwError('is unexpected, expecting [' + e1 + ']', this.peek()); - } - return token; - }, + /* `undefined` is not a constant, it is an identifier, + * but using it as an identifier is not supported + */ + constants: { + 'true': { type: AST.Literal, value: true }, + 'false': { type: AST.Literal, value: false }, + 'null': { type: AST.Literal, value: null }, + 'undefined': {type: AST.Literal, value: undefined }, + 'this': {type: AST.ThisExpression } + } +}; - unaryFn: function(op, right) { - var fn = OPERATORS[op]; - return extend(function $parseUnaryFn(self, locals) { - return fn(self, locals, right); - }, { - constant:right.constant, - inputs: [right] +function ifDefined(v, d) { + return typeof v !== 'undefined' ? v : d; +} + +function plusFn(l, r) { + if (typeof l === 'undefined') return r; + if (typeof r === 'undefined') return l; + return l + r; +} + +function isStateless($filter, filterName) { + var fn = $filter(filterName); + return !fn.$stateful; +} + +function findConstantAndWatchExpressions(ast, $filter) { + var allConstants; + var argsToWatch; + switch (ast.type) { + case AST.Program: + allConstants = true; + forEach(ast.body, function(expr) { + findConstantAndWatchExpressions(expr.expression, $filter); + allConstants = allConstants && expr.expression.constant; }); - }, - - binaryFn: function(left, op, right, isBranching) { - var fn = OPERATORS[op]; - return extend(function $parseBinaryFn(self, locals) { - return fn(self, locals, left, right); - }, { - constant: left.constant && right.constant, - inputs: !isBranching && [left, right] - }); - }, - - identifier: function() { - var id = this.consume().text; - - //Continue reading each `.identifier` unless it is a method invocation - while (this.peek('.') && this.peekAhead(1).identifier && !this.peekAhead(2, '(')) { - id += this.consume().text + this.consume().text; + ast.constant = allConstants; + break; + case AST.Literal: + ast.constant = true; + ast.toWatch = []; + break; + case AST.UnaryExpression: + findConstantAndWatchExpressions(ast.argument, $filter); + ast.constant = ast.argument.constant; + ast.toWatch = ast.argument.toWatch; + break; + case AST.BinaryExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch); + break; + case AST.LogicalExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.ConditionalExpression: + findConstantAndWatchExpressions(ast.test, $filter); + findConstantAndWatchExpressions(ast.alternate, $filter); + findConstantAndWatchExpressions(ast.consequent, $filter); + ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.Identifier: + ast.constant = false; + ast.toWatch = [ast]; + break; + case AST.MemberExpression: + findConstantAndWatchExpressions(ast.object, $filter); + if (ast.computed) { + findConstantAndWatchExpressions(ast.property, $filter); } - - return getterFn(id, this.options, this.text); - }, - - constant: function() { - var value = this.consume().value; - - return extend(function $parseConstant() { - return value; - }, { - constant: true, - literal: true - }); - }, - - statements: function() { - var statements = []; - while (true) { - if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']')) - statements.push(this.filterChain()); - if (!this.expect(';')) { - // optimize for the common case where there is only one statement. - // TODO(size): maybe we should not support multiple statements? - return (statements.length === 1) - ? statements[0] - : function $parseStatements(self, locals) { - var value; - for (var i = 0, ii = statements.length; i < ii; i++) { - value = statements[i](self, locals); - } - return value; - }; + ast.constant = ast.object.constant && (!ast.computed || ast.property.constant); + ast.toWatch = [ast]; + break; + case AST.CallExpression: + allConstants = ast.filter ? isStateless($filter, ast.callee.name) : false; + argsToWatch = []; + forEach(ast.arguments, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); } - } - }, - - filterChain: function() { - var left = this.expression(); - var token; - while ((token = this.expect('|'))) { - left = this.filter(left); - } - return left; - }, - - filter: function(inputFn) { - var fn = this.$filter(this.consume().text); - var argsFn; - var args; - - if (this.peek(':')) { - argsFn = []; - args = []; // we can safely reuse the array - while (this.expect(':')) { - argsFn.push(this.expression()); + }); + ast.constant = allConstants; + ast.toWatch = ast.filter && isStateless($filter, ast.callee.name) ? argsToWatch : [ast]; + break; + case AST.AssignmentExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = [ast]; + break; + case AST.ArrayExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.elements, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ObjectExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.properties, function(property) { + findConstantAndWatchExpressions(property.value, $filter); + allConstants = allConstants && property.value.constant; + if (!property.value.constant) { + argsToWatch.push.apply(argsToWatch, property.value.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ThisExpression: + ast.constant = false; + ast.toWatch = []; + break; + } +} + +function getInputs(body) { + if (body.length != 1) return; + var lastExpression = body[0].expression; + var candidate = lastExpression.toWatch; + if (candidate.length !== 1) return candidate; + return candidate[0] !== lastExpression ? candidate : undefined; +} + +function isAssignable(ast) { + return ast.type === AST.Identifier || ast.type === AST.MemberExpression; +} + +function assignableAST(ast) { + if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) { + return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='}; + } +} + +function isLiteral(ast) { + return ast.body.length === 0 || + ast.body.length === 1 && ( + ast.body[0].expression.type === AST.Literal || + ast.body[0].expression.type === AST.ArrayExpression || + ast.body[0].expression.type === AST.ObjectExpression); +} + +function isConstant(ast) { + return ast.constant; +} + +function ASTCompiler(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; +} + +ASTCompiler.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.state = { + nextId: 0, + filters: {}, + expensiveChecks: expensiveChecks, + fn: {vars: [], body: [], own: {}}, + assign: {vars: [], body: [], own: {}}, + inputs: [] + }; + findConstantAndWatchExpressions(ast, self.$filter); + var extra = ''; + var assignable; + this.stage = 'assign'; + if ((assignable = assignableAST(ast))) { + this.state.computing = 'assign'; + var result = this.nextId(); + this.recurse(assignable, result); + extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l'); } + var toWatch = getInputs(ast.body); + self.stage = 'inputs'; + forEach(toWatch, function(watch, key) { + var fnKey = 'fn' + key; + self.state[fnKey] = {vars: [], body: [], own: {}}; + self.state.computing = fnKey; + var intoId = self.nextId(); + self.recurse(watch, intoId); + self.return_(intoId); + self.state.inputs.push(fnKey); + watch.watchId = key; + }); + this.state.computing = 'fn'; + this.stage = 'main'; + this.recurse(ast); + var fnString = + // The build and minification steps remove the string "use strict" from the code, but this is done using a regex. + // This is a workaround for this until we do a better job at only removing the prefix only when we should. + '"' + this.USE + ' ' + this.STRICT + '";\n' + + this.filterPrefix() + + 'var fn=' + this.generateFunction('fn', 's,l,a,i') + + extra + + this.watchFns() + + 'return fn;'; - var inputs = [inputFn].concat(argsFn || []); + /* jshint -W054 */ + var fn = (new Function('$filter', + 'ensureSafeMemberName', + 'ensureSafeObject', + 'ensureSafeFunction', + 'ifDefined', + 'plus', + 'text', + fnString))( + this.$filter, + ensureSafeMemberName, + ensureSafeObject, + ensureSafeFunction, + ifDefined, + plusFn, + expression); + /* jshint +W054 */ + this.state = this.stage = undefined; + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, - return extend(function $parseFilter(self, locals) { - var input = inputFn(self, locals); - if (args) { - args[0] = input; + USE: 'use', - var i = argsFn.length; - while (i--) { - args[i + 1] = argsFn[i](self, locals); + STRICT: 'strict', + + watchFns: function() { + var result = []; + var fns = this.state.inputs; + var self = this; + forEach(fns, function(name) { + result.push('var ' + name + '=' + self.generateFunction(name, 's')); + }); + if (fns.length) { + result.push('fn.inputs=[' + fns.join(',') + '];'); + } + return result.join(''); + }, + + generateFunction: function(name, params) { + return 'function(' + params + '){' + + this.varsPrefix(name) + + this.body(name) + + '};'; + }, + + filterPrefix: function() { + var parts = []; + var self = this; + forEach(this.state.filters, function(id, filter) { + parts.push(id + '=$filter(' + self.escape(filter) + ')'); + }); + if (parts.length) return 'var ' + parts.join(',') + ';'; + return ''; + }, + + varsPrefix: function(section) { + return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : ''; + }, + + body: function(section) { + return this.state[section].body.join(''); + }, + + recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var left, right, self = this, args, expression; + recursionFn = recursionFn || noop; + if (!skipWatchIdCheck && isDefined(ast.watchId)) { + intoId = intoId || this.nextId(); + this.if_('i', + this.lazyAssign(intoId, this.computedMember('i', ast.watchId)), + this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true) + ); + return; + } + switch (ast.type) { + case AST.Program: + forEach(ast.body, function(expression, pos) { + self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; }); + if (pos !== ast.body.length - 1) { + self.current().body.push(right, ';'); + } else { + self.return_(right); } - - return fn.apply(undefined, args); - } - - return fn(input); - }, { - constant: !fn.$stateful && inputs.every(isConstant), - inputs: !fn.$stateful && inputs - }); - }, - - expression: function() { - return this.assignment(); - }, - - assignment: function() { - var left = this.ternary(); - var right; - var token; - if ((token = this.expect('='))) { - if (!left.assign) { - this.throwError('implies assignment but [' + - this.text.substring(0, token.index) + '] can not be assigned to', token); - } - right = this.ternary(); - return extend(function $parseAssignment(scope, locals) { - return left.assign(scope, right(scope, locals), locals); - }, { - inputs: [left, right] }); - } - return left; - }, - - ternary: function() { - var left = this.logicalOR(); - var middle; - var token; - if ((token = this.expect('?'))) { - middle = this.assignment(); - if (this.consume(':')) { - var right = this.assignment(); - - return extend(function $parseTernary(self, locals) { - return left(self, locals) ? middle(self, locals) : right(self, locals); - }, { - constant: left.constant && middle.constant && right.constant + break; + case AST.Literal: + expression = this.escape(ast.value); + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.UnaryExpression: + this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; }); + expression = ast.operator + '(' + this.ifDefined(right, 0) + ')'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.BinaryExpression: + this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; }); + this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; }); + if (ast.operator === '+') { + expression = this.plus(left, right); + } else if (ast.operator === '-') { + expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0); + } else { + expression = '(' + left + ')' + ast.operator + '(' + right + ')'; + } + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.LogicalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.left, intoId); + self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId)); + recursionFn(intoId); + break; + case AST.ConditionalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.test, intoId); + self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId)); + recursionFn(intoId); + break; + case AST.Identifier: + intoId = intoId || this.nextId(); + if (nameId) { + nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s'); + nameId.computed = false; + nameId.name = ast.name; + } + ensureSafeMemberName(ast.name); + self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)), + function() { + self.if_(self.stage === 'inputs' || 's', function() { + if (create && create !== 1) { + self.if_( + self.not(self.nonComputedMember('s', ast.name)), + self.lazyAssign(self.nonComputedMember('s', ast.name), '{}')); + } + self.assign(intoId, self.nonComputedMember('s', ast.name)); + }); + }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name)) + ); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.name)) { + self.addEnsureSafeObject(intoId); + } + recursionFn(intoId); + break; + case AST.MemberExpression: + left = nameId && (nameId.context = this.nextId()) || this.nextId(); + intoId = intoId || this.nextId(); + self.recurse(ast.object, left, undefined, function() { + self.if_(self.notNull(left), function() { + if (ast.computed) { + right = self.nextId(); + self.recurse(ast.property, right); + self.addEnsureSafeMemberName(right); + if (create && create !== 1) { + self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}')); + } + expression = self.ensureSafeObject(self.computedMember(left, right)); + self.assign(intoId, expression); + if (nameId) { + nameId.computed = true; + nameId.name = right; + } + } else { + ensureSafeMemberName(ast.property.name); + if (create && create !== 1) { + self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}')); + } + expression = self.nonComputedMember(left, ast.property.name); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) { + expression = self.ensureSafeObject(expression); + } + self.assign(intoId, expression); + if (nameId) { + nameId.computed = false; + nameId.name = ast.property.name; + } + } + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); + }, !!create); + break; + case AST.CallExpression: + intoId = intoId || this.nextId(); + if (ast.filter) { + right = self.filter(ast.callee.name); + args = []; + forEach(ast.arguments, function(expr) { + var argument = self.nextId(); + self.recurse(expr, argument); + args.push(argument); + }); + expression = right + '(' + args.join(',') + ')'; + self.assign(intoId, expression); + recursionFn(intoId); + } else { + right = self.nextId(); + left = {}; + args = []; + self.recurse(ast.callee, right, left, function() { + self.if_(self.notNull(right), function() { + self.addEnsureSafeFunction(right); + forEach(ast.arguments, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(self.ensureSafeObject(argument)); + }); + }); + if (left.name) { + if (!self.state.expensiveChecks) { + self.addEnsureSafeObject(left.context); + } + expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')'; + } else { + expression = right + '(' + args.join(',') + ')'; + } + expression = self.ensureSafeObject(expression); + self.assign(intoId, expression); + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); }); } + break; + case AST.AssignmentExpression: + right = this.nextId(); + left = {}; + if (!isAssignable(ast.left)) { + throw $parseMinErr('lval', 'Trying to assing a value to a non l-value'); + } + this.recurse(ast.left, undefined, left, function() { + self.if_(self.notNull(left.context), function() { + self.recurse(ast.right, right); + self.addEnsureSafeObject(self.member(left.context, left.name, left.computed)); + expression = self.member(left.context, left.name, left.computed) + ast.operator + right; + self.assign(intoId, expression); + recursionFn(intoId || expression); + }); + }, 1); + break; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(argument); + }); + }); + expression = '[' + args.join(',') + ']'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + self.recurse(property.value, self.nextId(), undefined, function(expr) { + args.push(self.escape( + property.key.type === AST.Identifier ? property.key.name : + ('' + property.key.value)) + + ':' + expr); + }); + }); + expression = '{' + args.join(',') + '}'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ThisExpression: + this.assign(intoId, 's'); + recursionFn('s'); + break; + case AST.NGValueParameter: + this.assign(intoId, 'v'); + recursionFn('v'); + break; } - - return left; }, - logicalOR: function() { - var left = this.logicalAND(); - var token; - while ((token = this.expect('||'))) { - left = this.binaryFn(left, token.text, this.logicalAND(), true); + getHasOwnProperty: function(element, property) { + var key = element + '.' + property; + var own = this.current().own; + if (!own.hasOwnProperty(key)) { + own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')'); } - return left; + return own[key]; }, - logicalAND: function() { - var left = this.equality(); - var token; - while ((token = this.expect('&&'))) { - left = this.binaryFn(left, token.text, this.equality(), true); - } - return left; + assign: function(id, value) { + if (!id) return; + this.current().body.push(id, '=', value, ';'); + return id; }, - equality: function() { - var left = this.relational(); - var token; - while ((token = this.expect('==','!=','===','!=='))) { - left = this.binaryFn(left, token.text, this.relational()); + filter: function(filterName) { + if (!this.state.filters.hasOwnProperty(filterName)) { + this.state.filters[filterName] = this.nextId(true); } - return left; + return this.state.filters[filterName]; }, - relational: function() { - var left = this.additive(); - var token; - while ((token = this.expect('<', '>', '<=', '>='))) { - left = this.binaryFn(left, token.text, this.additive()); - } - return left; + ifDefined: function(id, defaultValue) { + return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')'; }, - additive: function() { - var left = this.multiplicative(); - var token; - while ((token = this.expect('+','-'))) { - left = this.binaryFn(left, token.text, this.multiplicative()); - } - return left; + plus: function(left, right) { + return 'plus(' + left + ',' + right + ')'; }, - multiplicative: function() { - var left = this.unary(); - var token; - while ((token = this.expect('*','/','%'))) { - left = this.binaryFn(left, token.text, this.unary()); - } - return left; + return_: function(id) { + this.current().body.push('return ', id, ';'); }, - unary: function() { - var token; - if (this.expect('+')) { - return this.primary(); - } else if ((token = this.expect('-'))) { - return this.binaryFn(Parser.ZERO, token.text, this.unary()); - } else if ((token = this.expect('!'))) { - return this.unaryFn(token.text, this.unary()); + if_: function(test, alternate, consequent) { + if (test === true) { + alternate(); } else { - return this.primary(); + var body = this.current().body; + body.push('if(', test, '){'); + alternate(); + body.push('}'); + if (consequent) { + body.push('else{'); + consequent(); + body.push('}'); + } } }, - fieldAccess: function(object) { - var getter = this.identifier(); - - return extend(function $parseFieldAccess(scope, locals, self) { - var o = self || object(scope, locals); - return (o == null) ? undefined : getter(o); - }, { - assign: function(scope, value, locals) { - var o = object(scope, locals); - if (!o) object.assign(scope, o = {}, locals); - return getter.assign(o, value); - } - }); + not: function(expression) { + return '!(' + expression + ')'; }, - objectIndex: function(obj) { - var expression = this.text; - - var indexFn = this.expression(); - this.consume(']'); - - return extend(function $parseObjectIndex(self, locals) { - var o = obj(self, locals), - i = indexFn(self, locals), - v; - - ensureSafeMemberName(i, expression); - if (!o) return undefined; - v = ensureSafeObject(o[i], expression); - return v; - }, { - assign: function(self, value, locals) { - var key = ensureSafeMemberName(indexFn(self, locals), expression); - // prevent overwriting of Function.constructor which would break ensureSafeObject check - var o = ensureSafeObject(obj(self, locals), expression); - if (!o) obj.assign(self, o = {}, locals); - return o[key] = value; - } - }); + notNull: function(expression) { + return expression + '!=null'; }, - functionCall: function(fnGetter, contextGetter) { - var argsFn = []; - if (this.peekToken().text !== ')') { - do { - argsFn.push(this.expression()); - } while (this.expect(',')); + nonComputedMember: function(left, right) { + return left + '.' + right; + }, + + computedMember: function(left, right) { + return left + '[' + right + ']'; + }, + + member: function(left, right, computed) { + if (computed) return this.computedMember(left, right); + return this.nonComputedMember(left, right); + }, + + addEnsureSafeObject: function(item) { + this.current().body.push(this.ensureSafeObject(item), ';'); + }, + + addEnsureSafeMemberName: function(item) { + this.current().body.push(this.ensureSafeMemberName(item), ';'); + }, + + addEnsureSafeFunction: function(item) { + this.current().body.push(this.ensureSafeFunction(item), ';'); + }, + + ensureSafeObject: function(item) { + return 'ensureSafeObject(' + item + ',text)'; + }, + + ensureSafeMemberName: function(item) { + return 'ensureSafeMemberName(' + item + ',text)'; + }, + + ensureSafeFunction: function(item) { + return 'ensureSafeFunction(' + item + ',text)'; + }, + + lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var self = this; + return function() { + self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck); + }; + }, + + lazyAssign: function(id, value) { + var self = this; + return function() { + self.assign(id, value); + }; + }, + + stringEscapeRegex: /[^ a-zA-Z0-9]/g, + + stringEscapeFn: function(c) { + return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4); + }, + + escape: function(value) { + if (isString(value)) return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'"; + if (isNumber(value)) return value.toString(); + if (value === true) return 'true'; + if (value === false) return 'false'; + if (value === null) return 'null'; + if (typeof value === 'undefined') return 'undefined'; + + throw $parseMinErr('esc', 'IMPOSSIBLE'); + }, + + nextId: function(skip, init) { + var id = 'v' + (this.state.nextId++); + if (!skip) { + this.current().vars.push(id + (init ? '=' + init : '')); } - this.consume(')'); - - var expressionText = this.text; - // we can safely reuse the array across invocations - var args = argsFn.length ? [] : null; - - return function $parseFunctionCall(scope, locals) { - var context = contextGetter ? contextGetter(scope, locals) : isDefined(contextGetter) ? undefined : scope; - var fn = fnGetter(scope, locals, context) || noop; - - if (args) { - var i = argsFn.length; - while (i--) { - args[i] = ensureSafeObject(argsFn[i](scope, locals), expressionText); - } - } - - ensureSafeObject(context, expressionText); - ensureSafeFunction(fn, expressionText); - - // IE doesn't have apply for some native functions - var v = fn.apply - ? fn.apply(context, args) - : fn(args[0], args[1], args[2], args[3], args[4]); - - if (args) { - // Free-up the memory (arguments of the last function call). - args.length = 0; - } - - return ensureSafeObject(v, expressionText); - }; + return id; }, - // This is used with json array declaration - arrayDeclaration: function() { - var elementFns = []; - if (this.peekToken().text !== ']') { - do { - if (this.peek(']')) { - // Support trailing commas per ES5.1. - break; - } - elementFns.push(this.expression()); - } while (this.expect(',')); - } - this.consume(']'); - - return extend(function $parseArrayLiteral(self, locals) { - var array = []; - for (var i = 0, ii = elementFns.length; i < ii; i++) { - array.push(elementFns[i](self, locals)); - } - return array; - }, { - literal: true, - constant: elementFns.every(isConstant), - inputs: elementFns - }); - }, - - object: function() { - var keys = [], valueFns = []; - if (this.peekToken().text !== '}') { - do { - if (this.peek('}')) { - // Support trailing commas per ES5.1. - break; - } - var token = this.consume(); - if (token.constant) { - keys.push(token.value); - } else if (token.identifier) { - keys.push(token.text); - } else { - this.throwError("invalid key", token); - } - this.consume(':'); - valueFns.push(this.expression()); - } while (this.expect(',')); - } - this.consume('}'); - - return extend(function $parseObjectLiteral(self, locals) { - var object = {}; - for (var i = 0, ii = valueFns.length; i < ii; i++) { - object[keys[i]] = valueFns[i](self, locals); - } - return object; - }, { - literal: true, - constant: valueFns.every(isConstant), - inputs: valueFns - }); + current: function() { + return this.state[this.state.computing]; } }; -////////////////////////////////////////////////// -// Parser helper functions -////////////////////////////////////////////////// - -function setter(obj, locals, path, setValue, fullExp) { - ensureSafeObject(obj, fullExp); - ensureSafeObject(locals, fullExp); - - var element = path.split('.'), key; - for (var i = 0; element.length > 1; i++) { - key = ensureSafeMemberName(element.shift(), fullExp); - var propertyObj = (i === 0 && locals && locals[key]) || obj[key]; - if (!propertyObj) { - propertyObj = {}; - obj[key] = propertyObj; - } - obj = ensureSafeObject(propertyObj, fullExp); - } - key = ensureSafeMemberName(element.shift(), fullExp); - ensureSafeObject(obj[key], fullExp); - obj[key] = setValue; - return setValue; +function ASTInterpreter(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; } +ASTInterpreter.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.expression = expression; + this.expensiveChecks = expensiveChecks; + findConstantAndWatchExpressions(ast, self.$filter); + var assignable; + var assign; + if ((assignable = assignableAST(ast))) { + assign = this.recurse(assignable); + } + var toWatch = getInputs(ast.body); + var inputs; + if (toWatch) { + inputs = []; + forEach(toWatch, function(watch, key) { + var input = self.recurse(watch); + watch.input = input; + inputs.push(input); + watch.watchId = key; + }); + } + var expressions = []; + forEach(ast.body, function(expression) { + expressions.push(self.recurse(expression.expression)); + }); + var fn = ast.body.length === 0 ? function() {} : + ast.body.length === 1 ? expressions[0] : + function(scope, locals) { + var lastValue; + forEach(expressions, function(exp) { + lastValue = exp(scope, locals); + }); + return lastValue; + }; + if (assign) { + fn.assign = function(scope, value, locals) { + return assign(scope, locals, value); + }; + } + if (inputs) { + fn.inputs = inputs; + } + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, + + recurse: function(ast, context, create) { + var left, right, self = this, args, expression; + if (ast.input) { + return this.inputs(ast.input, ast.watchId); + } + switch (ast.type) { + case AST.Literal: + return this.value(ast.value, context); + case AST.UnaryExpression: + right = this.recurse(ast.argument); + return this['unary' + ast.operator](right, context); + case AST.BinaryExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.LogicalExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.ConditionalExpression: + return this['ternary?:']( + this.recurse(ast.test), + this.recurse(ast.alternate), + this.recurse(ast.consequent), + context + ); + case AST.Identifier: + ensureSafeMemberName(ast.name, self.expression); + return self.identifier(ast.name, + self.expensiveChecks || isPossiblyDangerousMemberName(ast.name), + context, create, self.expression); + case AST.MemberExpression: + left = this.recurse(ast.object, false, !!create); + if (!ast.computed) { + ensureSafeMemberName(ast.property.name, self.expression); + right = ast.property.name; + } + if (ast.computed) right = this.recurse(ast.property); + return ast.computed ? + this.computedMember(left, right, context, create, self.expression) : + this.nonComputedMember(left, right, self.expensiveChecks, context, create, self.expression); + case AST.CallExpression: + args = []; + forEach(ast.arguments, function(expr) { + args.push(self.recurse(expr)); + }); + if (ast.filter) right = this.$filter(ast.callee.name); + if (!ast.filter) right = this.recurse(ast.callee, true); + return ast.filter ? + function(scope, locals, assign, inputs) { + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(args[i](scope, locals, assign, inputs)); + } + var value = right.apply(undefined, values, inputs); + return context ? {context: undefined, name: undefined, value: value} : value; + } : + function(scope, locals, assign, inputs) { + var rhs = right(scope, locals, assign, inputs); + var value; + if (rhs.value != null) { + ensureSafeObject(rhs.context, self.expression); + ensureSafeFunction(rhs.value, self.expression); + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(ensureSafeObject(args[i](scope, locals, assign, inputs), self.expression)); + } + value = ensureSafeObject(rhs.value.apply(rhs.context, values), self.expression); + } + return context ? {value: value} : value; + }; + case AST.AssignmentExpression: + left = this.recurse(ast.left, true, 1); + right = this.recurse(ast.right); + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + ensureSafeObject(lhs.value, self.expression); + lhs.context[lhs.name] = rhs; + return context ? {value: rhs} : rhs; + }; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + args.push(self.recurse(expr)); + }); + return function(scope, locals, assign, inputs) { + var value = []; + for (var i = 0; i < args.length; ++i) { + value.push(args[i](scope, locals, assign, inputs)); + } + return context ? {value: value} : value; + }; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + args.push({key: property.key.type === AST.Identifier ? + property.key.name : + ('' + property.key.value), + value: self.recurse(property.value) + }); + }); + return function(scope, locals, assign, inputs) { + var value = {}; + for (var i = 0; i < args.length; ++i) { + value[args[i].key] = args[i].value(scope, locals, assign, inputs); + } + return context ? {value: value} : value; + }; + case AST.ThisExpression: + return function(scope) { + return context ? {value: scope} : scope; + }; + case AST.NGValueParameter: + return function(scope, locals, assign, inputs) { + return context ? {value: assign} : assign; + }; + } + }, + + 'unary+': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = +arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary-': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = -arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary!': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = !argument(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary+': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = plusFn(lhs, rhs); + return context ? {value: arg} : arg; + }; + }, + 'binary-': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0); + return context ? {value: arg} : arg; + }; + }, + 'binary*': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary/': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary%': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary===': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary&&': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary||': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'ternary?:': function(test, alternate, consequent, context) { + return function(scope, locals, assign, inputs) { + var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + value: function(value, context) { + return function() { return context ? {context: undefined, name: undefined, value: value} : value; }; + }, + identifier: function(name, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var base = locals && (name in locals) ? locals : scope; + if (create && create !== 1 && base && !(base[name])) { + base[name] = {}; + } + var value = base ? base[name] : undefined; + if (expensiveChecks) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: base, name: name, value: value}; + } else { + return value; + } + }; + }, + computedMember: function(left, right, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs; + var value; + if (lhs != null) { + rhs = right(scope, locals, assign, inputs); + ensureSafeMemberName(rhs, expression); + if (create && create !== 1 && lhs && !(lhs[rhs])) { + lhs[rhs] = {}; + } + value = lhs[rhs]; + ensureSafeObject(value, expression); + } + if (context) { + return {context: lhs, name: rhs, value: value}; + } else { + return value; + } + }; + }, + nonComputedMember: function(left, right, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + if (create && create !== 1 && lhs && !(lhs[right])) { + lhs[right] = {}; + } + var value = lhs != null ? lhs[right] : undefined; + if (expensiveChecks || isPossiblyDangerousMemberName(right)) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: lhs, name: right, value: value}; + } else { + return value; + } + }; + }, + inputs: function(input, watchId) { + return function(scope, value, locals, inputs) { + if (inputs) return inputs[watchId]; + return input(scope, value, locals); + }; + } +}; + +/** + * @constructor + */ +var Parser = function(lexer, $filter, options) { + this.lexer = lexer; + this.$filter = $filter; + this.options = options; + this.ast = new AST(this.lexer); + this.astCompiler = options.csp ? new ASTInterpreter(this.ast, $filter) : + new ASTCompiler(this.ast, $filter); +}; + +Parser.prototype = { + constructor: Parser, + + parse: function(text) { + return this.astCompiler.compile(text, this.options.expensiveChecks); + } +}; + var getterFnCacheDefault = createMap(); var getterFnCacheExpensive = createMap(); @@ -12560,125 +14043,6 @@ function isPossiblyDangerousMemberName(name) { return name == 'constructor'; } -/** - * Implementation of the "Black Hole" variant from: - * - http://jsperf.com/angularjs-parse-getter/4 - * - http://jsperf.com/path-evaluation-simplified/7 - */ -function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiveChecks) { - ensureSafeMemberName(key0, fullExp); - ensureSafeMemberName(key1, fullExp); - ensureSafeMemberName(key2, fullExp); - ensureSafeMemberName(key3, fullExp); - ensureSafeMemberName(key4, fullExp); - var eso = function(o) { - return ensureSafeObject(o, fullExp); - }; - var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity; - var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity; - var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity; - var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity; - var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity; - - return function cspSafeGetter(scope, locals) { - var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope; - - if (pathVal == null) return pathVal; - pathVal = eso0(pathVal[key0]); - - if (!key1) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso1(pathVal[key1]); - - if (!key2) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso2(pathVal[key2]); - - if (!key3) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso3(pathVal[key3]); - - if (!key4) return pathVal; - if (pathVal == null) return undefined; - pathVal = eso4(pathVal[key4]); - - return pathVal; - }; -} - -function getterFnWithEnsureSafeObject(fn, fullExpression) { - return function(s, l) { - return fn(s, l, ensureSafeObject, fullExpression); - }; -} - -function getterFn(path, options, fullExp) { - var expensiveChecks = options.expensiveChecks; - var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault); - var fn = getterFnCache[path]; - if (fn) return fn; - - - var pathKeys = path.split('.'), - pathKeysLength = pathKeys.length; - - // http://jsperf.com/angularjs-parse-getter/6 - if (options.csp) { - if (pathKeysLength < 6) { - fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp, expensiveChecks); - } else { - fn = function cspSafeGetter(scope, locals) { - var i = 0, val; - do { - val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++], - pathKeys[i++], fullExp, expensiveChecks)(scope, locals); - - locals = undefined; // clear after first iteration - scope = val; - } while (i < pathKeysLength); - return val; - }; - } - } else { - var code = ''; - if (expensiveChecks) { - code += 's = eso(s, fe);\nl = eso(l, fe);\n'; - } - var needsEnsureSafeObject = expensiveChecks; - forEach(pathKeys, function(key, index) { - ensureSafeMemberName(key, fullExp); - var lookupJs = (index - // we simply dereference 's' on any .dot notation - ? 's' - // but if we are first then we check locals first, and if so read it first - : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key; - if (expensiveChecks || isPossiblyDangerousMemberName(key)) { - lookupJs = 'eso(' + lookupJs + ', fe)'; - needsEnsureSafeObject = true; - } - code += 'if(s == null) return undefined;\n' + - 's=' + lookupJs + ';\n'; - }); - code += 'return s;'; - - /* jshint -W054 */ - var evaledFnGetter = new Function('s', 'l', 'eso', 'fe', code); // s=scope, l=locals, eso=ensureSafeObject - /* jshint +W054 */ - evaledFnGetter.toString = valueFn(code); - if (needsEnsureSafeObject) { - evaledFnGetter = getterFnWithEnsureSafeObject(evaledFnGetter, fullExp); - } - fn = evaledFnGetter; - } - - fn.sharedGetter = true; - fn.assign = function(self, value, locals) { - return setter(self, locals, path, value, path); - }; - getterFnCache[path] = fn; - return fn; -} - var objectValueOf = Object.prototype.valueOf; function getValueOf(value) { @@ -12740,39 +14104,24 @@ function $ParseProvider() { var cacheDefault = createMap(); var cacheExpensive = createMap(); - - - this.$get = ['$filter', '$sniffer', function($filter, $sniffer) { + this.$get = ['$filter', function($filter) { + var noUnsafeEval = csp().noUnsafeEval; var $parseOptions = { - csp: $sniffer.csp, + csp: noUnsafeEval, expensiveChecks: false }, $parseOptionsExpensive = { - csp: $sniffer.csp, + csp: noUnsafeEval, expensiveChecks: true }; - function wrapSharedExpression(exp) { - var wrapped = exp; - - if (exp.sharedGetter) { - wrapped = function $parseWrapper(self, locals) { - return exp(self, locals); - }; - wrapped.literal = exp.literal; - wrapped.constant = exp.constant; - wrapped.assign = exp.assign; - } - - return wrapped; - } - return function $parse(exp, interceptorFn, expensiveChecks) { var parsedExpression, oneTime, cacheKey; switch (typeof exp) { case 'string': - cacheKey = exp = exp.trim(); + exp = exp.trim(); + cacheKey = exp; var cache = (expensiveChecks ? cacheExpensive : cacheDefault); parsedExpression = cache[cacheKey]; @@ -12782,24 +14131,18 @@ function $ParseProvider() { oneTime = true; exp = exp.substring(2); } - var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions; var lexer = new Lexer(parseOptions); var parser = new Parser(lexer, $filter, parseOptions); parsedExpression = parser.parse(exp); - if (parsedExpression.constant) { parsedExpression.$$watchDelegate = constantWatchDelegate; } else if (oneTime) { - //oneTime is not part of the exp passed to the Parser so we may have to - //wrap the parsedExpression before adding a $$watchDelegate - parsedExpression = wrapSharedExpression(parsedExpression); parsedExpression.$$watchDelegate = parsedExpression.literal ? - oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; + oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; } else if (parsedExpression.inputs) { parsedExpression.$$watchDelegate = inputsWatchDelegate; } - cache[cacheKey] = parsedExpression; } return addInterceptor(parsedExpression, interceptorFn); @@ -12808,25 +14151,10 @@ function $ParseProvider() { return addInterceptor(exp, interceptorFn); default: - return addInterceptor(noop, interceptorFn); + return noop; } }; - function collectExpressionInputs(inputs, list) { - for (var i = 0, ii = inputs.length; i < ii; i++) { - var input = inputs[i]; - if (!input.constant) { - if (input.inputs) { - collectExpressionInputs(input.inputs, list); - } else if (list.indexOf(input) === -1) { // TODO(perf) can we do better? - list.push(input); - } - } - } - - return list; - } - function expressionInputDirtyCheck(newValue, oldValueOfValue) { if (newValue == null || oldValueOfValue == null) { // null/undefined @@ -12852,28 +14180,28 @@ function $ParseProvider() { return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue); } - function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression) { - var inputExpressions = parsedExpression.$$inputs || - (parsedExpression.$$inputs = collectExpressionInputs(parsedExpression.inputs, [])); - + function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) { + var inputExpressions = parsedExpression.inputs; var lastResult; if (inputExpressions.length === 1) { - var oldInputValue = expressionInputDirtyCheck; // init to something unique so that equals check fails + var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails inputExpressions = inputExpressions[0]; return scope.$watch(function expressionInputWatch(scope) { var newInputValue = inputExpressions(scope); - if (!expressionInputDirtyCheck(newInputValue, oldInputValue)) { - lastResult = parsedExpression(scope); - oldInputValue = newInputValue && getValueOf(newInputValue); + if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) { + lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]); + oldInputValueOf = newInputValue && getValueOf(newInputValue); } return lastResult; - }, listener, objectEquality); + }, listener, objectEquality, prettyPrintExpression); } var oldInputValueOfValues = []; + var oldInputValues = []; for (var i = 0, ii = inputExpressions.length; i < ii; i++) { oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails + oldInputValues[i] = null; } return scope.$watch(function expressionInputsWatch(scope) { @@ -12882,16 +14210,17 @@ function $ParseProvider() { for (var i = 0, ii = inputExpressions.length; i < ii; i++) { var newInputValue = inputExpressions[i](scope); if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) { + oldInputValues[i] = newInputValue; oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue); } } if (changed) { - lastResult = parsedExpression(scope); + lastResult = parsedExpression(scope, undefined, undefined, oldInputValues); } return lastResult; - }, listener, objectEquality); + }, listener, objectEquality, prettyPrintExpression); } function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) { @@ -12958,11 +14287,11 @@ function $ParseProvider() { watchDelegate !== oneTimeLiteralWatchDelegate && watchDelegate !== oneTimeWatchDelegate; - var fn = regularWatch ? function regularInterceptedExpression(scope, locals) { - var value = parsedExpression(scope, locals); + var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) { + var value = parsedExpression(scope, locals, assign, inputs); return interceptorFn(value, scope, locals); - } : function oneTimeInterceptedExpression(scope, locals) { - var value = parsedExpression(scope, locals); + } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) { + var value = parsedExpression(scope, locals, assign, inputs); var result = interceptorFn(value, scope, locals); // we only return the interceptor's result if the // initial value is defined (for bind-once) @@ -12977,7 +14306,7 @@ function $ParseProvider() { // If there is an interceptor, but no watchDelegate then treat the interceptor like // we treat filters - it is assumed to be a pure function unless flagged with $stateful fn.$$watchDelegate = inputsWatchDelegate; - fn.inputs = [parsedExpression]; + fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression]; } return fn; @@ -13125,9 +14454,11 @@ function $ParseProvider() { * provide a progress indication, before the promise is resolved or rejected. * * This method *returns a new promise* which is resolved or rejected via the return value of the - * `successCallback`, `errorCallback`. It also notifies via the return value of the - * `notifyCallback` method. The promise cannot be resolved or rejected from the notifyCallback - * method. + * `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved + * with the value which is resolved in that promise using + * [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)). + * It also notifies via the return value of the `notifyCallback` method. The promise cannot be + * resolved or rejected from the notifyCallback method. * * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)` * @@ -13255,8 +14586,11 @@ function qFactory(nextTick, exceptionHandler) { this.$$state = { status: 0 }; } - Promise.prototype = { + extend(Promise.prototype, { then: function(onFulfilled, onRejected, progressBack) { + if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) { + return this; + } var result = new Deferred(); this.$$state.pending = this.$$state.pending || []; @@ -13277,7 +14611,7 @@ function qFactory(nextTick, exceptionHandler) { return handleCallback(error, false, callback); }, progressBack); } - }; + }); //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native function simpleBind(context, fn) { @@ -13287,24 +14621,24 @@ function qFactory(nextTick, exceptionHandler) { } function processQueue(state) { - var fn, promise, pending; + var fn, deferred, pending; pending = state.pending; state.processScheduled = false; state.pending = undefined; for (var i = 0, ii = pending.length; i < ii; ++i) { - promise = pending[i][0]; + deferred = pending[i][0]; fn = pending[i][state.status]; try { if (isFunction(fn)) { - promise.resolve(fn(state.value)); + deferred.resolve(fn(state.value)); } else if (state.status === 1) { - promise.resolve(state.value); + deferred.resolve(state.value); } else { - promise.reject(state.value); + deferred.reject(state.value); } } catch (e) { - promise.reject(e); + deferred.reject(e); exceptionHandler(e); } } @@ -13324,7 +14658,7 @@ function qFactory(nextTick, exceptionHandler) { this.notify = simpleBind(this, this.notify); } - Deferred.prototype = { + extend(Deferred.prototype, { resolve: function(val) { if (this.promise.$$state.status) return; if (val === this.promise) { @@ -13387,7 +14721,7 @@ function qFactory(nextTick, exceptionHandler) { }); } } - }; + }); /** * @ngdoc method @@ -13470,6 +14804,9 @@ function qFactory(nextTick, exceptionHandler) { * the promise comes from a source that can't be trusted. * * @param {*} value Value or a promise + * @param {Function=} successCallback + * @param {Function=} errorCallback + * @param {Function=} progressCallback * @returns {Promise} Returns a promise of the passed value or promise */ @@ -13480,6 +14817,22 @@ function qFactory(nextTick, exceptionHandler) { return result.promise.then(callback, errback, progressBack); }; + /** + * @ngdoc method + * @name $q#resolve + * @kind function + * + * @description + * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6. + * + * @param {*} value Value or a promise + * @param {Function=} successCallback + * @param {Function=} errorCallback + * @param {Function=} progressCallback + * @returns {Promise} Returns a promise of the passed value or promise + */ + var resolve = when; + /** * @ngdoc method * @name $q#all @@ -13548,6 +14901,7 @@ function qFactory(nextTick, exceptionHandler) { $Q.defer = defer; $Q.reject = reject; $Q.when = when; + $Q.resolve = resolve; $Q.all = all; return $Q; @@ -13707,6 +15061,7 @@ function $RootScopeProvider() { this.$$childHead = this.$$childTail = null; this.$$listeners = {}; this.$$listenerCount = {}; + this.$$watchersCount = 0; this.$id = nextUid(); this.$$ChildScope = null; } @@ -13770,6 +15125,7 @@ function $RootScopeProvider() { this.$$destroyed = false; this.$$listeners = {}; this.$$listenerCount = {}; + this.$$watchersCount = 0; this.$$isolateBindings = null; } @@ -13979,11 +15335,11 @@ function $RootScopeProvider() { * comparing for reference equality. * @returns {function()} Returns a deregistration function for this listener. */ - $watch: function(watchExp, listener, objectEquality) { + $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) { var get = $parse(watchExp); if (get.$$watchDelegate) { - return get.$$watchDelegate(this, listener, objectEquality, get); + return get.$$watchDelegate(this, listener, objectEquality, get, watchExp); } var scope = this, array = scope.$$watchers, @@ -13991,7 +15347,7 @@ function $RootScopeProvider() { fn: listener, last: initWatchVal, get: get, - exp: watchExp, + exp: prettyPrintExpression || watchExp, eq: !!objectEquality }; @@ -14007,9 +15363,12 @@ function $RootScopeProvider() { // we use unshift since we use a while loop in $digest for speed. // the while loop reads in reverse order. array.unshift(watcher); + incrementWatchersCount(this, 1); return function deregisterWatch() { - arrayRemove(array, watcher); + if (arrayRemove(array, watcher) >= 0) { + incrementWatchersCount(scope, -1); + } lastDirtyWatch = null; }; }, @@ -14417,7 +15776,7 @@ function $RootScopeProvider() { // Insanity Warning: scope depth-first traversal // yes, this code is a bit crazy, but it works and we have tests to prove it! // this piece should be kept in sync with the traversal in $broadcast - if (!(next = (current.$$childHead || + if (!(next = ((current.$$watchersCount && current.$$childHead) || (current !== target && current.$$nextSibling)))) { while (current !== target && !(next = current.$$nextSibling)) { current = current.$parent; @@ -14484,22 +15843,27 @@ function $RootScopeProvider() { * clean up DOM bindings before an element is removed from the DOM. */ $destroy: function() { - // we can't destroy the root scope or a scope that has been already destroyed + // We can't destroy a scope that has been already destroyed. if (this.$$destroyed) return; var parent = this.$parent; this.$broadcast('$destroy'); this.$$destroyed = true; - if (this === $rootScope) return; + if (this === $rootScope) { + //Remove handlers attached to window when $rootScope is removed + $browser.$$applicationDestroyed(); + } + + incrementWatchersCount(this, -this.$$watchersCount); for (var eventName in this.$$listenerCount) { decrementListenerCount(this, this.$$listenerCount[eventName], eventName); } // sever all the references to parent scopes (after this cleanup, the current scope should // not be retained by any of our references and should be eligible for garbage collection) - if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; - if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; + if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; + if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling; if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling; @@ -14648,11 +16012,14 @@ function $RootScopeProvider() { $apply: function(expr) { try { beginPhase('$apply'); - return this.$eval(expr); + try { + return this.$eval(expr); + } finally { + clearPhase(); + } } catch (e) { $exceptionHandler(e); } finally { - clearPhase(); try { $rootScope.$digest(); } catch (e) { @@ -14913,6 +16280,11 @@ function $RootScopeProvider() { $rootScope.$$phase = null; } + function incrementWatchersCount(current, count) { + do { + current.$$watchersCount += count; + } while ((current = current.$parent)); + } function decrementListenerCount(current, count, name) { do { @@ -15445,7 +16817,7 @@ function $SceDelegateProvider() { * Here's an example of a binding in a privileged context: * * ``` - * + * *
    * ``` * @@ -15563,7 +16935,7 @@ function $SceDelegateProvider() { * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters * match themselves. * - `*`: matches zero or more occurrences of any character other than one of the following 6 - * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'. It's a useful wildcard for use + * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and '`;`'. It's a useful wildcard for use * in a whitelist. * - `**`: matches zero or more occurrences of *any* character. As such, it's not * appropriate for use in a scheme, domain, etc. as it would match too much. (e.g. @@ -15829,7 +17201,7 @@ function $SceProvider() { * escaping. * * @param {string} type The kind of context in which this value is safe for use. e.g. url, - * resource_url, html, js and css. + * resourceUrl, html, js and css. * @param {*} value The value that that should be considered trusted/safe. * @returns {*} A value that can be used to stand in for the provided `value` in places * where Angular expects a $sce.trustAs() return value. @@ -16098,7 +17470,7 @@ function $SnifferProvider() { this.$get = ['$window', '$document', function($window, $document) { var eventSupport = {}, android = - int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), + toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), boxee = /Boxee/i.test(($window.navigator || {}).userAgent), document = $document[0] || {}, vendorPrefix, @@ -16125,8 +17497,8 @@ function $SnifferProvider() { animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle)); if (android && (!transitions || !animations)) { - transitions = isString(document.body.style.webkitTransition); - animations = isString(document.body.style.webkitAnimation); + transitions = isString(bodyStyle.webkitTransition); + animations = isString(bodyStyle.webkitAnimation); } } @@ -16184,7 +17556,7 @@ var $compileMinErr = minErr('$compile'); * @param {string|TrustedResourceUrl} tpl The HTTP request template URL * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty * - * @return {Promise} the HTTP Promise for the given. + * @return {Promise} a promise for the HTTP response data of the given URL. * * @property {number} totalPendingRequests total amount of pending template requests being downloaded. */ @@ -16222,12 +17594,14 @@ function $TemplateRequestProvider() { handleRequestFn.totalPendingRequests--; }) .then(function(response) { + $templateCache.put(tpl, response.data); return response.data; }, handleError); function handleError(resp) { if (!ignoreRequestError) { - throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl); + throw $compileMinErr('tpload', 'Failed to load template: {0} (HTTP status: {1} {2})', + tpl, resp.status, resp.statusText); } return $q.reject(resp); } @@ -16357,6 +17731,7 @@ function $$TestabilityProvider() { function $TimeoutProvider() { this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler', function($rootScope, $browser, $q, $$q, $exceptionHandler) { + var deferreds = {}; @@ -16369,31 +17744,42 @@ function $TimeoutProvider() { * block and delegates any exceptions to * {@link ng.$exceptionHandler $exceptionHandler} service. * - * The return value of registering a timeout function is a promise, which will be resolved when - * the timeout is reached and the timeout function is executed. + * The return value of calling `$timeout` is a promise, which will be resolved when + * the delay has passed and the timeout function, if provided, is executed. * * To cancel a timeout request, call `$timeout.cancel(promise)`. * * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to * synchronously flush the queue of deferred functions. * - * @param {function()} fn A function, whose execution should be delayed. + * If you only want a promise that will be resolved after some specified delay + * then you can call `$timeout` without the `fn` function. + * + * @param {function()=} fn A function, whose execution should be delayed. * @param {number=} [delay=0] Delay in milliseconds. * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this * promise will be resolved with is the return value of the `fn` function. * */ function timeout(fn, delay, invokeApply) { - var skipApply = (isDefined(invokeApply) && !invokeApply), + if (!isFunction(fn)) { + invokeApply = delay; + delay = fn; + fn = noop; + } + + var args = sliceArgs(arguments, 3), + skipApply = (isDefined(invokeApply) && !invokeApply), deferred = (skipApply ? $$q : $q).defer(), promise = deferred.promise, timeoutId; timeoutId = $browser.defer(function() { try { - deferred.resolve(fn()); + deferred.resolve(fn.apply(null, args)); } catch (e) { deferred.reject(e); $exceptionHandler(e); @@ -16561,7 +17947,7 @@ function urlIsSameOrigin(requestUrl) { }]);
    - +
    @@ -16578,6 +17964,61 @@ function $WindowProvider() { this.$get = valueFn(window); } +/** + * @name $$cookieReader + * @requires $document + * + * @description + * This is a private service for reading cookies used by $http and ngCookies + * + * @return {Object} a key/value map of the current cookies + */ +function $$CookieReader($document) { + var rawDocument = $document[0] || {}; + var lastCookies = {}; + var lastCookieString = ''; + + function safeDecodeURIComponent(str) { + try { + return decodeURIComponent(str); + } catch (e) { + return str; + } + } + + return function() { + var cookieArray, cookie, i, index, name; + var currentCookieString = rawDocument.cookie || ''; + + if (currentCookieString !== lastCookieString) { + lastCookieString = currentCookieString; + cookieArray = lastCookieString.split('; '); + lastCookies = {}; + + for (i = 0; i < cookieArray.length; i++) { + cookie = cookieArray[i]; + index = cookie.indexOf('='); + if (index > 0) { //ignore nameless cookies + name = safeDecodeURIComponent(cookie.substring(0, index)); + // the first value that is seen for a cookie is the most + // specific one. values for the same cookie name that + // follow are for less specific paths. + if (lastCookies[name] === undefined) { + lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1)); + } + } + } + } + return lastCookies; + }; +} + +$$CookieReader.$inject = ['$document']; + +function $$CookieReaderProvider() { + this.$get = $$CookieReader; +} + /* global currencyFilter: true, dateFilter: true, filterFilter: true, @@ -16693,6 +18134,7 @@ function $FilterProvider($provide) { * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores * (`myapp_subsection_filterx`). *
    + * @param {Function} factory If the first argument was a string, a factory function for the filter to be registered. * @returns {Object} Registered filter instance, or if a map of filters was provided then a map * of the registered filter instances. */ @@ -16774,9 +18216,11 @@ function $FilterProvider($provide) { * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but * **will** be matched by `{$: 'John'}`. * - * - `function(value, index)`: A predicate function can be used to write arbitrary filters. The - * function is called for each element of `array`. The final result is an array of those - * elements that the predicate returned true for. + * - `function(value, index, array)`: A predicate function can be used to write arbitrary filters. + * The function is called for each element of the array, with the element, its index, and + * the entire array itself as arguments. + * + * The final result is an array of those elements that the predicate returned true for. * * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in * determining if the expected value (from the filter expression) and actual value (from @@ -16794,6 +18238,9 @@ function $FilterProvider($provide) { * - `false|undefined`: A short hand for a function which will look for a substring match in case * insensitive way. * + * Primitive values are converted to strings. Objects are not compared against primitives, + * unless they have a custom `toString` method (e.g. `Date` objects). + * * @example @@ -16804,7 +18251,7 @@ function $FilterProvider($provide) { {name:'Julie', phone:'555-8765'}, {name:'Juliette', phone:'555-5678'}]"> - Search: + @@ -16813,10 +18260,10 @@ function $FilterProvider($provide) {
    NamePhone

    - Any:
    - Name only
    - Phone only
    - Equality
    +
    +
    +
    +
    @@ -16864,9 +18311,15 @@ function $FilterProvider($provide) { */ function filterFilter() { return function(array, expression, comparator) { - if (!isArray(array)) return array; + if (!isArrayLike(array)) { + if (array == null) { + return array; + } else { + throw minErr('filter')('notarray', 'Expected array but received: {0}', array); + } + } - var expressionType = (expression !== null) ? typeof expression : 'null'; + var expressionType = getTypeForFilter(expression); var predicateFn; var matchAgainstAnyProp; @@ -16888,7 +18341,7 @@ function filterFilter() { return array; } - return array.filter(predicateFn); + return Array.prototype.filter.call(array, predicateFn); }; } @@ -16909,8 +18362,8 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { // No substring matching against `null`; only match against `null` return actual === expected; } - if (isObject(actual) || isObject(expected)) { - // Prevent an object to be considered equal to a string like `'[object'` + if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) { + // Should not compare primitives against objects, unless they have custom `toString` method return false; } @@ -16931,8 +18384,8 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { } function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) { - var actualType = (actual !== null) ? typeof actual : 'null'; - var expectedType = (expected !== null) ? typeof expected : 'null'; + var actualType = getTypeForFilter(actual); + var expectedType = getTypeForFilter(expected); if ((expectedType === 'string') && (expected.charAt(0) === '!')) { return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp); @@ -16979,6 +18432,11 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc } } +// Used for easily differentiating between `null` and actual `object` +function getTypeForFilter(val) { + return (val === null) ? 'null' : typeof val; +} + /** * @ngdoc filter * @name currency @@ -17004,7 +18462,7 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc }]);
    -
    +
    default currency symbol ($): {{amount | currency}}
    custom currency identifier (USD$): {{amount | currency:"USD$"}} no fractions (0): {{amount | currency:"USD$":0}} @@ -17024,9 +18482,9 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc } element(by.model('amount')).clear(); element(by.model('amount')).sendKeys('-1234'); - expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)'); - expect(element(by.id('currency-custom')).getText()).toBe('(USD$1,234.00)'); - expect(element(by.id('currency-no-fractions')).getText()).toBe('(USD$1,234)'); + expect(element(by.id('currency-default')).getText()).toBe('-$1,234.00'); + expect(element(by.id('currency-custom')).getText()).toBe('-USD$1,234.00'); + expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234'); }); @@ -17063,6 +18521,7 @@ function currencyFilter($locale) { * If the input is infinite (Infinity/-Infinity) the Infinity symbol '∞' is returned. * If the input is not a number an empty string is returned. * + * * @param {number|string} number Number to format. * @param {(number|string)=} fractionSize Number of decimal places to round the number to. * If this is not provided then the fraction size is computed from the current locale's number @@ -17079,7 +18538,7 @@ function currencyFilter($locale) { }]);
    - Enter number:
    +
    Default formatting: {{val | number}}
    No fractions: {{val | number:0}}
    Negative number: {{-val | number:4}} @@ -17119,16 +18578,22 @@ function numberFilter($locale) { var DECIMAL_SEP = '.'; function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { - if (!isFinite(number) || isObject(number)) return ''; + if (isObject(number)) return ''; var isNegative = number < 0; number = Math.abs(number); + + var isInfinity = number === Infinity; + if (!isInfinity && !isFinite(number)) return ''; + var numStr = number + '', formatedText = '', + hasExponent = false, parts = []; - var hasExponent = false; - if (numStr.indexOf('e') !== -1) { + if (isInfinity) formatedText = '\u221e'; + + if (!isInfinity && numStr.indexOf('e') !== -1) { var match = numStr.match(/([\d\.]+)e(-?)(\d+)/); if (match && match[2] == '-' && match[3] > fractionSize + 1) { number = 0; @@ -17138,7 +18603,7 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { } } - if (!hasExponent) { + if (!isInfinity && !hasExponent) { var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length; // determine fractionSize if it is not specified @@ -17207,8 +18672,9 @@ function padNumber(num, digits, trim) { } num = '' + num; while (num.length < digits) num = '0' + num; - if (trim) + if (trim) { num = num.substr(num.length - digits); + } return neg + num; } @@ -17217,8 +18683,9 @@ function dateGetter(name, size, offset, trim) { offset = offset || 0; return function(date) { var value = date['get' + name](); - if (offset > 0 || value > -offset) + if (offset > 0 || value > -offset) { value += offset; + } if (value === 0 && offset == -12) value = 12; return padNumber(value, size, trim); }; @@ -17233,8 +18700,8 @@ function dateStrGetter(name, shortForm) { }; } -function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset(); +function timeZoneGetter(date, formats, offset) { + var zone = -1 * offset; var paddedZone = (zone >= 0) ? "+" : ""; paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) + @@ -17378,7 +18845,9 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+| * specified in the string input, the time is considered to be in the local timezone. * @param {string=} format Formatting rules (see Description). If not specified, * `mediumDate` is used. - * @param {string=} timezone Timezone to be used for formatting. Right now, only `'UTC'` is supported. + * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the + * continental US time zone abbreviations, but for general use, use a time zone offset, for + * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian) * If not specified, the timezone of the browser will be used. * @returns {string} Formatted string or the input if input is not recognized as date/millis. * @@ -17424,13 +18893,13 @@ function dateFilter($locale) { timeSetter = match[8] ? date.setUTCHours : date.setHours; if (match[9]) { - tzHour = int(match[9] + match[10]); - tzMin = int(match[9] + match[11]); + tzHour = toInt(match[9] + match[10]); + tzMin = toInt(match[9] + match[11]); } - dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3])); - var h = int(match[4] || 0) - tzHour; - var m = int(match[5] || 0) - tzMin; - var s = int(match[6] || 0); + dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])); + var h = toInt(match[4] || 0) - tzHour; + var m = toInt(match[5] || 0) - tzMin; + var s = toInt(match[6] || 0); var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000); timeSetter.call(date, h, m, s, ms); return date; @@ -17447,14 +18916,14 @@ function dateFilter($locale) { format = format || 'mediumDate'; format = $locale.DATETIME_FORMATS[format] || format; if (isString(date)) { - date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date); + date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date); } if (isNumber(date)) { date = new Date(date); } - if (!isDate(date)) { + if (!isDate(date) || !isFinite(date.getTime())) { return date; } @@ -17469,13 +18938,14 @@ function dateFilter($locale) { } } - if (timezone && timezone === 'UTC') { - date = new Date(date.getTime()); - date.setMinutes(date.getMinutes() + date.getTimezoneOffset()); + var dateTimezoneOffset = date.getTimezoneOffset(); + if (timezone) { + dateTimezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset()); + date = convertTimezoneToLocal(date, timezone, true); } forEach(parts, function(value) { fn = DATE_FORMATS[value]; - text += fn ? fn(date, $locale.DATETIME_FORMATS) + text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); }); @@ -17561,7 +19031,10 @@ var uppercaseFilter = valueFn(uppercase); * @param {string|number} limit The length of the returned array or string. If the `limit` number * is positive, `limit` number of items from the beginning of the source array/string are copied. * If the number is negative, `limit` number of items from the end of the source array/string - * are copied. The `limit` will be trimmed if it exceeds `array.length` + * are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined, + * the input will be returned unchanged. + * @param {(string|number)=} begin Index at which to begin limitation. As a negative index, `begin` + * indicates an offset from the end of `input`. Defaults to `0`. * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array * had less than `limit` elements. * @@ -17580,11 +19053,20 @@ var uppercaseFilter = valueFn(uppercase); }]);
    - Limit {{numbers}} to: +

    Output numbers: {{ numbers | limitTo:numLimit }}

    - Limit {{letters}} to: +

    Output letters: {{ letters | limitTo:letterLimit }}

    - Limit {{longNumber}} to: +

    Output long number: {{ longNumber | limitTo:longNumberLimit }}

    @@ -17633,21 +19115,28 @@ var uppercaseFilter = valueFn(uppercase); */ function limitToFilter() { - return function(input, limit) { - if (isNumber(input)) input = input.toString(); - if (!isArray(input) && !isString(input)) return input; - + return function(input, limit, begin) { if (Math.abs(Number(limit)) === Infinity) { limit = Number(limit); } else { - limit = int(limit); + limit = toInt(limit); } + if (isNaN(limit)) return input; - //NaN check on limit - if (limit) { - return limit > 0 ? input.slice(0, limit) : input.slice(limit); + if (isNumber(input)) input = input.toString(); + if (!isArray(input) && !isString(input)) return input; + + begin = (!begin || isNaN(begin)) ? 0 : toInt(begin); + begin = (begin < 0 && begin >= -input.length) ? input.length + begin : begin; + + if (limit >= 0) { + return input.slice(begin, begin + limit); } else { - return isString(input) ? "" : []; + if (begin === 0) { + return input.slice(limit, input.length); + } else { + return input.slice(Math.max(0, begin + limit), begin); + } } }; } @@ -17660,7 +19149,7 @@ function limitToFilter() { * @description * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically * for strings and numerically for numbers. Note: if you notice numbers are not being sorted - * correctly, make sure they are actually being saved as numbers and not strings. + * as expected, make sure they are actually being saved as numbers and not strings. * * @param {Array} array The array to sort. * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be @@ -17735,19 +19224,40 @@ function limitToFilter() { {name:'Mike', phone:'555-4321', age:21}, {name:'Adam', phone:'555-5678', age:35}, {name:'Julie', phone:'555-8765', age:29}]; - $scope.predicate = '-age'; + $scope.predicate = 'age'; + $scope.reverse = true; + $scope.order = function(predicate) { + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.predicate = predicate; + }; }]); +
    Sorting predicate = {{predicate}}; reverse = {{reverse}}

    [ unsorted ]
    NamePhone
    - - - + + + @@ -17807,90 +19317,120 @@ function limitToFilter() { orderByFilter.$inject = ['$parse']; function orderByFilter($parse) { return function(array, sortPredicate, reverseOrder) { + if (!(isArrayLike(array))) return array; - sortPredicate = isArray(sortPredicate) ? sortPredicate : [sortPredicate]; + + if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; } if (sortPredicate.length === 0) { sortPredicate = ['+']; } - sortPredicate = sortPredicate.map(function(predicate) { - var descending = false, get = predicate || identity; - if (isString(predicate)) { - if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) { - descending = predicate.charAt(0) == '-'; - predicate = predicate.substring(1); - } - if (predicate === '') { - // Effectively no predicate was passed so we compare identity - return reverseComparator(compare, descending); - } - get = $parse(predicate); - if (get.constant) { - var key = get(); - return reverseComparator(function(a, b) { - return compare(a[key], b[key]); - }, descending); - } - } - return reverseComparator(function(a, b) { - return compare(get(a),get(b)); - }, descending); - }); - return slice.call(array).sort(reverseComparator(comparator, reverseOrder)); - function comparator(o1, o2) { - for (var i = 0; i < sortPredicate.length; i++) { - var comp = sortPredicate[i](o1, o2); - if (comp !== 0) return comp; - } - return 0; - } - function reverseComparator(comp, descending) { - return descending - ? function(a, b) {return comp(b,a);} - : comp; + var predicates = processPredicates(sortPredicate, reverseOrder); + // Add a predicate at the end that evaluates to the element index. This makes the + // sort stable as it works as a tie-breaker when all the input predicates cannot + // distinguish between two elements. + predicates.push({ get: function() { return {}; }, descending: reverseOrder ? -1 : 1}); + + // The next three lines are a version of a Swartzian Transform idiom from Perl + // (sometimes called the Decorate-Sort-Undecorate idiom) + // See https://en.wikipedia.org/wiki/Schwartzian_transform + var compareValues = Array.prototype.map.call(array, getComparisonObject); + compareValues.sort(doComparison); + array = compareValues.map(function(item) { return item.value; }); + + return array; + + function getComparisonObject(value, index) { + return { + value: value, + predicateValues: predicates.map(function(predicate) { + return getPredicateValue(predicate.get(value), index); + }) + }; } - function isPrimitive(value) { - switch (typeof value) { - case 'number': /* falls through */ - case 'boolean': /* falls through */ - case 'string': - return true; - default: - return false; - } - } - - function objectToString(value) { - if (value === null) return 'null'; - if (typeof value.valueOf === 'function') { - value = value.valueOf(); - if (isPrimitive(value)) return value; - } - if (typeof value.toString === 'function') { - value = value.toString(); - if (isPrimitive(value)) return value; - } - return ''; - } - - function compare(v1, v2) { - var t1 = typeof v1; - var t2 = typeof v2; - if (t1 === t2 && t1 === "object") { - v1 = objectToString(v1); - v2 = objectToString(v2); - } - if (t1 === t2) { - if (t1 === "string") { - v1 = v1.toLowerCase(); - v2 = v2.toLowerCase(); - } - if (v1 === v2) return 0; - return v1 < v2 ? -1 : 1; - } else { - return t1 < t2 ? -1 : 1; + function doComparison(v1, v2) { + var result = 0; + for (var index=0, length = predicates.length; index < length; ++index) { + result = compare(v1.predicateValues[index], v2.predicateValues[index]) * predicates[index].descending; + if (result) break; } + return result; } }; + + function processPredicates(sortPredicate, reverseOrder) { + reverseOrder = reverseOrder ? -1 : 1; + return sortPredicate.map(function(predicate) { + var descending = 1, get = identity; + + if (isFunction(predicate)) { + get = predicate; + } else if (isString(predicate)) { + if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) { + descending = predicate.charAt(0) == '-' ? -1 : 1; + predicate = predicate.substring(1); + } + if (predicate !== '') { + get = $parse(predicate); + if (get.constant) { + var key = get(); + get = function(value) { return value[key]; }; + } + } + } + return { get: get, descending: descending * reverseOrder }; + }); + } + + function isPrimitive(value) { + switch (typeof value) { + case 'number': /* falls through */ + case 'boolean': /* falls through */ + case 'string': + return true; + default: + return false; + } + } + + function objectValue(value, index) { + // If `valueOf` is a valid function use that + if (typeof value.valueOf === 'function') { + value = value.valueOf(); + if (isPrimitive(value)) return value; + } + // If `toString` is a valid function and not the one from `Object.prototype` use that + if (hasCustomToString(value)) { + value = value.toString(); + if (isPrimitive(value)) return value; + } + // We have a basic object so we use the position of the object in the collection + return index; + } + + function getPredicateValue(value, index) { + var type = typeof value; + if (value === null) { + type = 'string'; + value = 'null'; + } else if (type === 'string') { + value = value.toLowerCase(); + } else if (type === 'object') { + value = objectValue(value, index); + } + return { value: value, type: type }; + } + + function compare(v1, v2) { + var result = 0; + if (v1.type === v2.type) { + if (v1.value !== v2.value) { + result = v1.value < v2.value ? -1 : 1; + } + } else { + result = v1.type < v2.type ? -1 : 1; + } + return result; + } } function ngDirective(directive) { @@ -17919,7 +19459,7 @@ function ngDirective(directive) { var htmlAnchorDirective = valueFn({ restrict: 'E', compile: function(element, attr) { - if (!attr.href && !attr.xlinkHref && !attr.name) { + if (!attr.href && !attr.xlinkHref) { return function(scope, element) { // If the linked element is not an anchor tag anymore, do nothing if (element[0].nodeName.toLowerCase() !== 'a') return; @@ -18006,7 +19546,7 @@ var htmlAnchorDirective = valueFn({ }, 5000, 'page should navigate to /123'); }); - xit('should execute ng-click but not reload when href empty string and name specified', function() { + it('should execute ng-click but not reload when href empty string and name specified', function() { element(by.id('link-4')).click(); expect(element(by.model('value')).getAttribute('value')).toEqual('4'); expect(element(by.id('link-4')).getAttribute('href')).toBe(''); @@ -18051,12 +19591,12 @@ var htmlAnchorDirective = valueFn({ * * The buggy way to write it: * ```html - * + * Description * ``` * * The correct way to write it: * ```html - * + * Description * ``` * * @element IMG @@ -18077,12 +19617,12 @@ var htmlAnchorDirective = valueFn({ * * The buggy way to write it: * ```html - * + * Description * ``` * * The correct way to write it: * ```html - * + * Description * ``` * * @element IMG @@ -18119,7 +19659,7 @@ var htmlAnchorDirective = valueFn({ * @example - Click me to toggle:
    +
    @@ -18144,6 +19684,13 @@ var htmlAnchorDirective = valueFn({ * @priority 100 * * @description + * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy. + * + * Note that this directive should not be used together with {@link ngModel `ngModel`}, + * as this can lead to unexpected behavior. + * + * ### Why do we need `ngChecked`? + * * The HTML specification does not require browsers to preserve the values of boolean attributes * such as checked. (Their presence means true and their absence means false.) * If we put an Angular interpolation expression into such an attribute then the @@ -18154,8 +19701,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to check both:
    - +
    +
    it('should check both checkBoxes', function() { @@ -18168,7 +19715,7 @@ var htmlAnchorDirective = valueFn({ * * @element INPUT * @param {expression} ngChecked If the {@link guide/expression expression} is truthy, - * then special attribute "checked" will be set on the element + * then the `checked` attribute will be set on the element */ @@ -18189,8 +19736,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to make text readonly:
    - +
    +
    it('should toggle readonly attr', function() { @@ -18225,8 +19772,8 @@ var htmlAnchorDirective = valueFn({ * @example - Check me to select:
    -
    + @@ -18262,7 +19809,7 @@ var htmlAnchorDirective = valueFn({ * @example - Check me check multiple:
    +
    Show/Hide me
    @@ -18283,22 +19830,34 @@ var htmlAnchorDirective = valueFn({ var ngAttributeAliasDirectives = {}; - // boolean attrs are evaluated forEach(BOOLEAN_ATTR, function(propName, attrName) { // binding to multiple is not supported if (propName == "multiple") return; + function defaultLinkFn(scope, element, attr) { + scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) { + attr.$set(attrName, !!value); + }); + } + var normalized = directiveNormalize('ng-' + attrName); + var linkFn = defaultLinkFn; + + if (propName === 'checked') { + linkFn = function(scope, element, attr) { + // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input + if (attr.ngModel !== attr[normalized]) { + defaultLinkFn(scope, element, attr); + } + }; + } + ngAttributeAliasDirectives[normalized] = function() { return { restrict: 'A', priority: 100, - link: function(scope, element, attr) { - scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) { - attr.$set(attrName, !!value); - }); - } + link: linkFn }; }; }); @@ -18814,7 +20373,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { * related scope, under this name. */ var formDirectiveFactory = function(isNgForm) { - return ['$timeout', function($timeout) { + return ['$timeout', '$parse', function($timeout, $parse) { var formDirective = { name: 'form', restrict: isNgForm ? 'EAC' : 'E', @@ -18856,21 +20415,21 @@ var formDirectiveFactory = function(isNgForm) { } var parentFormCtrl = controller.$$parentForm; + var setter = nameAttr ? getSetter(controller.$name) : noop; if (nameAttr) { - setter(scope, null, controller.$name, controller, controller.$name); + setter(scope, controller); attr.$observe(nameAttr, function(newValue) { if (controller.$name === newValue) return; - setter(scope, null, controller.$name, undefined, controller.$name); + setter(scope, undefined); parentFormCtrl.$$renameControl(controller, newValue); - setter(scope, null, controller.$name, controller, controller.$name); + setter = getSetter(controller.$name); + setter(scope, controller); }); } formElement.on('$destroy', function() { parentFormCtrl.$removeControl(controller); - if (nameAttr) { - setter(scope, null, attr[nameAttr], undefined, controller.$name); - } + setter(scope, undefined); extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards }); } @@ -18879,6 +20438,14 @@ var formDirectiveFactory = function(isNgForm) { }; return formDirective; + + function getSetter(expression) { + if (expression === '') { + //create an assignable expression, so forms with an empty name can be renamed later + return $parse('this[""]').assign; + } + return $parse(expression).assign || noop; + } }]; }; @@ -18898,7 +20465,7 @@ var ngFormDirective = formDirectiveFactory(true); var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/; var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; -var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; +var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; @@ -18931,9 +20498,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input. @@ -18953,13 +20524,16 @@ var inputType = { }]);
    - Single word: - - Required! - - Single word only! - + +
    + + Required! + + Single word only! +
    text = {{example.text}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19038,13 +20612,15 @@ var inputType = { }]); - Pick a date in 2013: + - - Required! - - Not a valid date! +
    + + Required! + + Not a valid date! +
    value = {{example.value | date: "yyyy-MM-dd"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19131,13 +20707,15 @@ var inputType = { }]); - Pick a date between in 2013: + - - Required! - - Not a valid date! +
    + + Required! + + Not a valid date! +
    value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19225,13 +20803,15 @@ var inputType = { }]); - Pick a between 8am and 5pm: + - - Required! - - Not a valid date! +
    + + Required! + + Not a valid date! +
    value = {{example.value | date: "HH:mm:ss"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19318,13 +20898,17 @@ var inputType = { }]); - Pick a date between in 2013: - - - Required! - - Not a valid date! + +
    + + Required! + + Not a valid date! +
    value = {{example.value | date: "yyyy-Www"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19411,13 +20995,15 @@ var inputType = { }]); - Pick a month in 2013: + - - Required! - - Not a valid month! +
    + + Required! + + Not a valid month! +
    value = {{example.value | date: "yyyy-MM"}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19478,6 +21064,16 @@ var inputType = { * error docs for more information and an example of how to convert your model if necessary. * * + * ## Issues with HTML5 constraint validation + * + * In browsers that follow the + * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29), + * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}. + * If a non-number is entered in the input, the browser will report the value as an empty string, + * which means the view / model values in `ngModel` and subsequently the scope value + * will also be an empty string. + * + * * @param {string} ngModel Assignable angular expression to data-bind to. * @param {string=} name Property name of the form under which the control is published. * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. @@ -19496,9 +21092,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @@ -19514,12 +21114,16 @@ var inputType = { }]); - Number: - - Required! - - Not valid number! + +
    + + Required! + + Not valid number! +
    value = {{example.value}}
    myForm.input.$valid = {{myForm.input.$valid}}
    myForm.input.$error = {{myForm.input.$error}}
    @@ -19586,9 +21190,13 @@ var inputType = { * as in the ngPattern directive. * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match * a RegExp found by evaluating the Angular expression given in the attribute value. - * If the expression evaluates to a RegExp object then this is used directly. - * If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$` - * characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. * @param {string=} ngChange Angular expression to be executed when input changes due to user * interaction with the input element. * @@ -19604,11 +21212,15 @@ var inputType = { }]); - URL: - - Required! - - Not valid url! +
    @@ -20546,7 +22207,7 @@ var ngValueDirective = function() { }]);
    - Enter name:
    +
    Hello !
    @@ -20607,8 +22268,8 @@ var ngBindDirective = ['$compile', function($compile) { }]);
    - Salutation:
    - Name:
    +
    +
    
            
    @@ -20833,7 +22494,9 @@ function classDirective(name, selector) { } function digestClassCounts(classes, count) { - var classCounts = element.data('$classCounts') || {}; + // Use createMap() to prevent class assumptions involving property + // names in Object.prototype + var classCounts = element.data('$classCounts') || createMap(); var classesToUpdate = []; forEach(classes, function(className) { if (count > 0 || classCounts[className]) { @@ -20890,12 +22553,15 @@ function classDirective(name, selector) { } function arrayClasses(classVal) { + var classes = []; if (isArray(classVal)) { - return classVal; + forEach(classVal, function(v) { + classes = classes.concat(arrayClasses(v)); + }); + return classes; } else if (isString(classVal)) { return classVal.split(' '); } else if (isObject(classVal)) { - var classes = []; forEach(classVal, function(v, k) { if (v) { classes = classes.concat(k.split(' ')); @@ -20923,16 +22589,18 @@ function classDirective(name, selector) { * 1. If the expression evaluates to a string, the string should be one or more space-delimited class * names. * - * 2. If the expression evaluates to an array, each element of the array should be a string that is - * one or more space-delimited class names. - * - * 3. If the expression evaluates to an object, then for each key-value pair of the + * 2. If the expression evaluates to an object, then for each key-value pair of the * object with a truthy value the corresponding key is used as a class name. * + * 3. If the expression evaluates to an array, each element of the array should either be a string as in + * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array + * to give you more control over what CSS classes appear. See the code below for an example of this. + * + * * The directive won't add duplicate classes if a particular class was already set. * - * When the expression changes, the previously added classes are removed and only then the - * new classes are added. + * When the expression changes, the previously added classes are removed and only then are the + * new classes added. * * @animations * **add** - happens just before the class is applied to the elements @@ -20949,22 +22617,39 @@ function classDirective(name, selector) { * @example Example that demonstrates basic bindings via ngClass directive. -

    Map Syntax Example

    - deleted (apply "strike" class)
    - important (apply "bold" class)
    - error (apply "red" class) +

    Map Syntax Example

    +
    +
    +

    Using String Syntax

    - +

    Using Array Syntax

    -
    -
    -
    +
    +
    +
    +
    +

    Using Array and Map Syntax

    +
    +
    .strike { - text-decoration: line-through; + text-decoration: line-through; } .bold { font-weight: bold; @@ -20972,6 +22657,13 @@ function classDirective(name, selector) { .red { color: red; } + .has-error { + color: red; + background-color: yellow; + } + .orange { + color: orange; + } var ps = element.all(by.css('p')); @@ -20979,13 +22671,13 @@ function classDirective(name, selector) { it('should let you toggle the class', function() { expect(ps.first().getAttribute('class')).not.toMatch(/bold/); - expect(ps.first().getAttribute('class')).not.toMatch(/red/); + expect(ps.first().getAttribute('class')).not.toMatch(/has-error/); element(by.model('important')).click(); expect(ps.first().getAttribute('class')).toMatch(/bold/); element(by.model('error')).click(); - expect(ps.first().getAttribute('class')).toMatch(/red/); + expect(ps.first().getAttribute('class')).toMatch(/has-error/); }); it('should let you toggle string example', function() { @@ -20996,11 +22688,18 @@ function classDirective(name, selector) { }); it('array example should have 3 classes', function() { - expect(ps.last().getAttribute('class')).toBe(''); + expect(ps.get(2).getAttribute('class')).toBe(''); element(by.model('style1')).sendKeys('bold'); element(by.model('style2')).sendKeys('strike'); element(by.model('style3')).sendKeys('red'); - expect(ps.last().getAttribute('class')).toBe('bold strike red'); + expect(ps.get(2).getAttribute('class')).toBe('bold strike red'); + }); + + it('array with map example should have 2 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style4')).sendKeys('bold'); + element(by.model('warning')).click(); + expect(ps.last().getAttribute('class')).toBe('bold orange'); });
    @@ -21050,8 +22749,8 @@ function classDirective(name, selector) { The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure. Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure - to view the step by step details of {@link ng.$animate#addClass $animate.addClass} and - {@link ng.$animate#removeClass $animate.removeClass}. + to view the step by step details of {@link $animate#addClass $animate.addClass} and + {@link $animate#removeClass $animate.removeClass}. */ var ngClassDirective = classDirective('', true); @@ -21274,20 +22973,20 @@ var ngCloakDirective = ngDirective({ * * *
    - * Name: - * [ greet ]
    + * + *
    * Contact: *
      *
    • - * * * * - * - * [ clear - * | X ] + * + * + * *
    • - *
    • [ add ]
    • + *
    • *
    *
    *
    @@ -21337,12 +23036,12 @@ var ngCloakDirective = ngDirective({ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe('john.smith@example.org'); * - * firstRepeat.element(by.linkText('clear')).click(); + * firstRepeat.element(by.buttonText('clear')).click(); * * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe(''); * - * container.element(by.linkText('add')).click(); + * container.element(by.buttonText('add')).click(); * * expect(container.element(by.repeater('contact in settings.contacts').row(2)) * .element(by.model('contact.value')) @@ -21357,20 +23056,20 @@ var ngCloakDirective = ngDirective({ * * *
    - * Name: - * [ greet ]
    + * + *
    * Contact: *
      *
    • - * * * * - * - * [ clear - * | X ] + * + * + * *
    • - *
    • [ add ]
    • + *
    • [ ]
    • *
    *
    *
    @@ -21420,12 +23119,12 @@ var ngCloakDirective = ngDirective({ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe('john.smith@example.org'); * - * firstRepeat.element(by.linkText('clear')).click(); + * firstRepeat.element(by.buttonText('clear')).click(); * * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) * .toBe(''); * - * container.element(by.linkText('add')).click(); + * container.element(by.buttonText('add')).click(); * * expect(container.element(by.repeater('contact in contacts').row(2)) * .element(by.model('contact.value')) @@ -21451,27 +23150,29 @@ var ngControllerDirective = [function() { * * @element html * @description - * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support. + * + * Angular has some features that can break certain + * [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) rules. + * + * If you intend to implement these rules then you must tell Angular not to use these features. * * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps. * - * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things). - * For Angular to be CSP compatible there are only two things that we need to do differently: * - * - don't use `Function` constructor to generate optimized value getters - * - don't inject custom stylesheet into the document + * The following rules affect Angular: * - * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp` - * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will - * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will - * be raised. + * * `unsafe-eval`: this rule forbids apps to use `eval` or `Function(string)` generated functions + * (among other things). Angular makes use of this in the {@link $parse} service to provide a 30% + * increase in the speed of evaluating Angular expressions. * - * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically - * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}). - * To make those directives work in CSP mode, include the `angular-csp.css` manually. + * * `unsafe-inline`: this rule forbids apps from inject custom styles into the document. Angular + * makes use of this to include some CSS rules (e.g. {@link ngCloak} and {@link ngHide}). + * To make these directives work when a CSP rule is blocking inline styles, you must link to the + * `angular-csp.css` in your HTML manually. * - * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This - * autodetection however triggers a CSP error to be logged in the console: + * If you do not provide `ngCsp` then Angular tries to autodetect if CSP is blocking unsafe-eval + * and automatically deactivates this feature in the {@link $parse} service. This autodetection, + * however, triggers a CSP error to be logged in the console: * * ``` * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of @@ -21480,11 +23181,39 @@ var ngControllerDirective = [function() { * ``` * * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp` - * directive on the root element of the application or on the `angular.js` script tag, whichever - * appears first in the html document. + * directive on an element of the HTML document that appears before the ` +
    +
      +
    • + + + +
    • +
    • + +
    • +
    +
    +
    +
    + +
    + +
    + + + + Select . +
    +
    + Currently selected: {{ {selected_color:myColor} }} +
    +
    +
    +
    + + it('should check ng-options', function() { + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); + element.all(by.model('myColor')).first().click(); + element.all(by.css('select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); + element(by.css('.nullable select[ng-model="myColor"]')).click(); + element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); + }); + +
    + */ + +// jshint maxlen: false +// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555550000000006666666666666660000000777777777777777000000000000000888888888800000000000000000009999999999 +var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/; + // 1: value expression (valueFn) + // 2: label expression (displayFn) + // 3: group by expression (groupByFn) + // 4: disable when expression (disableWhenFn) + // 5: array item variable name + // 6: object item key variable name + // 7: object item value variable name + // 8: collection expression + // 9: track by expression +// jshint maxlen: 100 + + +var ngOptionsDirective = ['$compile', '$parse', function($compile, $parse) { + + function parseOptionsExpression(optionsExp, selectElement, scope) { + + var match = optionsExp.match(NG_OPTIONS_REGEXP); + if (!(match)) { + throw ngOptionsMinErr('iexp', + "Expected expression in form of " + + "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" + + " but got '{0}'. Element: {1}", + optionsExp, startingTag(selectElement)); + } + + // Extract the parts from the ngOptions expression + + // The variable name for the value of the item in the collection + var valueName = match[5] || match[7]; + // The variable name for the key of the item in the collection + var keyName = match[6]; + + // An expression that generates the viewValue for an option if there is a label expression + var selectAs = / as /.test(match[0]) && match[1]; + // An expression that is used to track the id of each object in the options collection + var trackBy = match[9]; + // An expression that generates the viewValue for an option if there is no label expression + var valueFn = $parse(match[2] ? match[1] : valueName); + var selectAsFn = selectAs && $parse(selectAs); + var viewValueFn = selectAsFn || valueFn; + var trackByFn = trackBy && $parse(trackBy); + + // Get the value by which we are going to track the option + // if we have a trackFn then use that (passing scope and locals) + // otherwise just hash the given viewValue + var getTrackByValueFn = trackBy ? + function(value, locals) { return trackByFn(scope, locals); } : + function getHashOfValue(value) { return hashKey(value); }; + var getTrackByValue = function(value, key) { + return getTrackByValueFn(value, getLocals(value, key)); + }; + + var displayFn = $parse(match[2] || match[1]); + var groupByFn = $parse(match[3] || ''); + var disableWhenFn = $parse(match[4] || ''); + var valuesFn = $parse(match[8]); + + var locals = {}; + var getLocals = keyName ? function(value, key) { + locals[keyName] = key; + locals[valueName] = value; + return locals; + } : function(value) { + locals[valueName] = value; + return locals; + }; + + + function Option(selectValue, viewValue, label, group, disabled) { + this.selectValue = selectValue; + this.viewValue = viewValue; + this.label = label; + this.group = group; + this.disabled = disabled; + } + + function getOptionValuesKeys(optionValues) { + var optionValuesKeys; + + if (!keyName && isArrayLike(optionValues)) { + optionValuesKeys = optionValues; + } else { + // if object, extract keys, in enumeration order, unsorted + optionValuesKeys = []; + for (var itemKey in optionValues) { + if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') { + optionValuesKeys.push(itemKey); + } + } + } + return optionValuesKeys; + } + + return { + trackBy: trackBy, + getTrackByValue: getTrackByValue, + getWatchables: $parse(valuesFn, function(optionValues) { + // Create a collection of things that we would like to watch (watchedArray) + // so that they can all be watched using a single $watchCollection + // that only runs the handler once if anything changes + var watchedArray = []; + optionValues = optionValues || []; + + var optionValuesKeys = getOptionValuesKeys(optionValues); + var optionValuesLength = optionValuesKeys.length; + for (var index = 0; index < optionValuesLength; index++) { + var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index]; + var value = optionValues[key]; + + var locals = getLocals(optionValues[key], key); + var selectValue = getTrackByValueFn(optionValues[key], locals); + watchedArray.push(selectValue); + + // Only need to watch the displayFn if there is a specific label expression + if (match[2] || match[1]) { + var label = displayFn(scope, locals); + watchedArray.push(label); + } + + // Only need to watch the disableWhenFn if there is a specific disable expression + if (match[4]) { + var disableWhen = disableWhenFn(scope, locals); + watchedArray.push(disableWhen); + } + } + return watchedArray; + }), + + getOptions: function() { + + var optionItems = []; + var selectValueMap = {}; + + // The option values were already computed in the `getWatchables` fn, + // which must have been called to trigger `getOptions` + var optionValues = valuesFn(scope) || []; + var optionValuesKeys = getOptionValuesKeys(optionValues); + var optionValuesLength = optionValuesKeys.length; + + for (var index = 0; index < optionValuesLength; index++) { + var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index]; + var value = optionValues[key]; + var locals = getLocals(value, key); + var viewValue = viewValueFn(scope, locals); + var selectValue = getTrackByValueFn(viewValue, locals); + var label = displayFn(scope, locals); + var group = groupByFn(scope, locals); + var disabled = disableWhenFn(scope, locals); + var optionItem = new Option(selectValue, viewValue, label, group, disabled); + + optionItems.push(optionItem); + selectValueMap[selectValue] = optionItem; + } + + return { + items: optionItems, + selectValueMap: selectValueMap, + getOptionFromViewValue: function(value) { + return selectValueMap[getTrackByValue(value)]; + }, + getViewValueFromOption: function(option) { + // If the viewValue could be an object that may be mutated by the application, + // we need to make a copy and not return the reference to the value on the option. + return trackBy ? angular.copy(option.viewValue) : option.viewValue; + } + }; + } + }; + } + + + // we can't just jqLite('
    */ -var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) { +var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, $interpolate, $log) { var BRACE = /{}/g, IS_WHEN = /^when(Minus)?(.+)$/; return { - restrict: 'EA', link: function(scope, element, attr) { var numberExp = attr.count, whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs @@ -24301,9 +26775,18 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp // If both `count` and `lastCount` are NaN, we don't need to re-register a watch. // In JS `NaN !== NaN`, so we have to exlicitly check. - if ((count !== lastCount) && !(countIsNaN && isNaN(lastCount))) { + if ((count !== lastCount) && !(countIsNaN && isNumber(lastCount) && isNaN(lastCount))) { watchRemover(); - watchRemover = scope.$watch(whensExpFns[count], updateElementText); + var whenExpFn = whensExpFns[count]; + if (isUndefined(whenExpFn)) { + if (newVal != null) { + $log.debug("ngPluralize: no rule defined for '" + count + "' in " + whenExp); + } + watchRemover = noop; + updateElementText(); + } else { + watchRemover = scope.$watch(whenExpFn, updateElementText); + } lastCount = count; } }); @@ -24318,6 +26801,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp /** * @ngdoc directive * @name ngRepeat + * @multiElement * * @description * The `ngRepeat` directive instantiates a template once per item from a collection. Each template @@ -24338,6 +26822,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}. * This may be useful when, for instance, nesting ngRepeats. * + * * # Iterating over object properties * * It is possible to get `ngRepeat` to iterate over the properties of an object using the following @@ -24347,19 +26832,20 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp *
    ...
    * ``` * - * You need to be aware that the JavaScript specification does not define what order - * it will return the keys for an object. In order to have a guaranteed deterministic order - * for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**. + * You need to be aware that the JavaScript specification does not define the order of keys + * returned for an object. (To mitigate this in Angular 1.3 the `ngRepeat` directive + * used to sort the keys alphabetically.) + * + * Version 1.4 removed the alphabetic sorting. We now rely on the order returned by the browser + * when running `for key in myObj`. It seems that browsers generally follow the strategy of providing + * keys in the order in which they were defined, although there are exceptions when keys are deleted + * and reinstated. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_issues * * If this is not desired, the recommended workaround is to convert your object into an array * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter) * or implement a `$watch` on the object yourself. * - * In version 1.4 we will remove the sorting, since it seems that browsers generally follow the - * strategy of providing keys in the order in which they were defined, although there are exceptions - * when keys are deleted and reinstated. - * * * # Tracking and Duplicates * @@ -24410,6 +26896,15 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp * * ``` * + *
    + * **Note:** `track by` must always be the last expression: + *
    + * ``` + *
    + * {{model.name}} + *
    + * ``` + * * # Special repeat start and end points * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively. @@ -24481,8 +26976,9 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp * which can be used to associate the objects in the collection with the DOM elements. If no tracking expression * is specified, ng-repeat associates elements by identity. It is an error to have * more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are - * mapped to the same DOM element, which is not possible.) If filters are used in the expression, they should be - * applied before the tracking expression. + * mapped to the same DOM element, which is not possible.) + * + * Note that the tracking expression must come last, after any filters, and the alias expression. * * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements * will be associated by item identity in the array. @@ -24506,6 +27002,11 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp * For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after * the items have been processed through the filter. * + * Please note that `as [variable name] is not an operator but rather a part of ngRepeat micro-syntax so it can be used only at the end + * (and not as operator, inside an expression). + * + * For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` . + * * @example * This example initializes the scope to a list of names and * then uses `ngRepeat` to display every person: @@ -24524,7 +27025,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp {name:'Samantha', age:60, gender:'girl'} ]"> I have {{friends.length}} friends. They are: - +
    • [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. @@ -24722,14 +27223,13 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) { trackByIdFn = trackByIdExpFn || trackByIdArrayFn; } else { trackByIdFn = trackByIdExpFn || trackByIdObjFn; - // if object, extract keys, sort them and use to determine order of iteration over obj props + // if object, extract keys, in enumeration order, unsorted collectionKeys = []; for (var itemKey in collection) { - if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) != '$') { + if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') { collectionKeys.push(itemKey); } } - collectionKeys.sort(); } collectionLength = collectionKeys.length; @@ -24831,6 +27331,7 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; /** * @ngdoc directive * @name ngShow + * @multiElement * * @description * The `ngShow` directive shows or hides the given HTML element based on the expression @@ -24924,7 +27425,7 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; * @example - Click me:
      + Click me:
      Show:
      @@ -25006,6 +27507,7 @@ var ngShowDirective = ['$animate', function($animate) { /** * @ngdoc directive * @name ngHide + * @multiElement * * @description * The `ngHide` directive shows or hides the given HTML element based on the expression @@ -25089,7 +27591,7 @@ var ngShowDirective = ['$animate', function($animate) { * @example - Click me:
      + Click me:
      Show:
      @@ -25346,7 +27848,6 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) { */ var ngSwitchDirective = ['$animate', function($animate) { return { - restrict: 'EA', require: 'ngSwitch', // asks for $scope to fool the BC controller module @@ -25455,8 +27956,8 @@ var ngSwitchDefaultDirective = ngDirective({ }]);
      -
      -
      +
      +
      {{text}}
      @@ -25541,7 +28042,106 @@ var scriptDirective = ['$templateCache', function($templateCache) { }; }]; -var ngOptionsMinErr = minErr('ngOptions'); +var noopNgModelController = { $setViewValue: noop, $render: noop }; + +/** + * @ngdoc type + * @name select.SelectController + * @description + * The controller for the ` and IE barfs otherwise. + self.unknownOption = jqLite(document.createElement('option')); + self.renderUnknownOption = function(val) { + var unknownVal = '? ' + hashKey(val) + ' ?'; + self.unknownOption.val(unknownVal); + $element.prepend(self.unknownOption); + $element.val(unknownVal); + }; + + $scope.$on('$destroy', function() { + // disable unknown option so that we don't do work when the whole select is being destroyed + self.renderUnknownOption = noop; + }); + + self.removeUnknownOption = function() { + if (self.unknownOption.parent()) self.unknownOption.remove(); + }; + + + // Read the value of the select control, the implementation of this changes depending + // upon whether the select can have multiple values and whether ngOptions is at work. + self.readValue = function readSingleValue() { + self.removeUnknownOption(); + return $element.val(); + }; + + + // Write the value to the select control, the implementation of this changes depending + // upon whether the select can have multiple values and whether ngOptions is at work. + self.writeValue = function writeSingleValue(value) { + if (self.hasOption(value)) { + self.removeUnknownOption(); + $element.val(value); + if (value === '') self.emptyOption.prop('selected', true); // to make IE9 happy + } else { + if (value == null && self.emptyOption) { + self.removeUnknownOption(); + $element.val(''); + } else { + self.renderUnknownOption(value); + } + } + }; + + + // Tell the select control that an option, with the given value, has been added + self.addOption = function(value, element) { + assertNotHasOwnProperty(value, '"option value"'); + if (value === '') { + self.emptyOption = element; + } + var count = optionsMap.get(value) || 0; + optionsMap.put(value, count + 1); + }; + + // Tell the select control that an option, with the given value, has been removed + self.removeOption = function(value) { + var count = optionsMap.get(value); + if (count) { + if (count === 1) { + optionsMap.remove(value); + if (value === '') { + self.emptyOption = undefined; + } + } else { + optionsMap.put(value, count - 1); + } + } + }; + + // Check whether the select control has an option matching the given value + self.hasOption = function(value) { + return !!optionsMap.get(value); + }; +}]; + /** * @ngdoc directive * @name select @@ -25550,735 +28150,170 @@ var ngOptionsMinErr = minErr('ngOptions'); * @description * HTML `SELECT` element with angular data-binding. * - * # `ngOptions` - * - * The `ngOptions` attribute can be used to dynamically generate a list of `
    • -
    • - [add] -
    • -
    -
    - Color (null not allowed): -
    - - Color (null allowed): - - -
    - - Color grouped by shade: -
    - - - Select bogus.
    -
    - Currently selected: {{ {selected_color:myColor} }} -
    -
    - -
    - - it('should check ng-options', function() { - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); - element.all(by.model('myColor')).first().click(); - element.all(by.css('select[ng-model="myColor"] option')).first().click(); - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); - element(by.css('.nullable select[ng-model="myColor"]')).click(); - element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); - expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); - }); - -
    */ - -var ngOptionsDirective = valueFn({ - restrict: 'A', - terminal: true -}); - -// jshint maxlen: false -var selectDirective = ['$compile', '$parse', function($compile, $parse) { - //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888 - var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/, - nullModelCtrl = {$setViewValue: noop}; -// jshint maxlen: 100 +var selectDirective = function() { return { restrict: 'E', require: ['select', '?ngModel'], - controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) { - var self = this, - optionsMap = {}, - ngModelCtrl = nullModelCtrl, - nullOption, - unknownOption; - - - self.databound = $attrs.ngModel; - - - self.init = function(ngModelCtrl_, nullOption_, unknownOption_) { - ngModelCtrl = ngModelCtrl_; - nullOption = nullOption_; - unknownOption = unknownOption_; - }; - - - self.addOption = function(value, element) { - assertNotHasOwnProperty(value, '"option value"'); - optionsMap[value] = true; - - if (ngModelCtrl.$viewValue == value) { - $element.val(value); - if (unknownOption.parent()) unknownOption.remove(); - } - // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459 - // Adding an
    Name - (^)Phone NumberAge + Name + + + Phone Number + + + Age + +
    {{friend.name}}
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "], -td:[3,"","
    "],_default:[0,"",""]};ha.optgroup=ha.option;ha.tbody=ha.tfoot=ha.colgroup=ha.caption=ha.thead;ha.th=ha.td;var Ka=P.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===V.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),P(T).on("load",a))},toString:function(){var b=[];q(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?G(this[b]):G(this[this.length+b])},length:0,push:Tf,sort:[].sort, -splice:[].splice},Gb={};q("multiple selected checked disabled readOnly required open".split(" "),function(b){Gb[O(b)]=b});var Rc={};q("input select option textarea button form details".split(" "),function(b){Rc[b]=!0});var Sc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Wb,removeData:zb},function(b,a){P[a]=b});q({data:Wb,inheritedData:Fb,scope:function(b){return G.data(b,"$scope")||Fb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return G.data(b, -"$isolateScope")||G.data(b,"$isolateScopeNoTemplate")},controller:Nc,injector:function(b){return Fb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Cb,css:function(b,a,c){a=eb(a);if(B(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==ab&&2!==d&&8!==d)if(d=O(a),Gb[d])if(B(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||D).specified?d:s;else if(B(c))b.setAttribute(a,c);else if(b.getAttribute)return b= -b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(B(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(y(b)){var d=a.nodeType;return d===ma||d===ab?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(y(a)){if(b.multiple&&"select"===sa(b)){var c=[];q(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(y(a))return b.innerHTML;yb(b,!0);b.innerHTML=a},empty:Oc},function(b,a){P.prototype[a]= -function(a,d){var e,f,g=this.length;if(b!==Oc&&(2==b.length&&b!==Cb&&b!==Nc?a:d)===s){if(J(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a, -c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),cg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},kc=function(a){this.options=a};kc.prototype={constructor:kc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"=== -typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=B(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ja("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.indexa){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a, -c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw ja("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=rb[a];return E(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=rb[c];return E(function(c,e){return f(c,e,a,d)},{constant:a.constant&&d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a= -this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return Df(a,this.options,this.text)},constant:function(){var a=this.consume().value;return E(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0","<=",">=");)a=this.binaryFn(a,c.text,this.additive());return a}, -additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(lb.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=this.identifier(); -return E(function(d,e,f){d=f||a(d,e);return null==d?s:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return E(function(e,f){var g=a(e,f),h=d(e,f);ra(h,c);return g?ka(g[h],c):s},{assign:function(e,f,g){var h=ra(d(e,g),c),l=ka(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(",")) -}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):B(c)?s:g,k=a(g,h,l)||D;if(f)for(var m=d.length;m--;)f[m]=ka(d[m](g,h),e);ka(l,e);if(k){if(k.constructor===k)throw ja("isecfn",e);if(k===$f||k===ag||k===bg)throw ja("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return ka(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]"); -return E(function(c,d){for(var e=[],f=0,g=a.length;fa.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Kb(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},Pf=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, -Of=/^\-?\d+$/;pd.$inject=["$locale"];var Lf=ca(O),Mf=ca(wb);rd.$inject=["$parse"];var Yd=ca({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Aa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),xb={};q(Gb,function(a,c){if("multiple"!=a){var d=va("ng-"+c);xb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d], -function(a){g.$set(c,!!a)})}}}}});q(Sc,function(a,c){xb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Sf))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});q(["src","srcset","href"],function(a){var c=va("ng-"+a);xb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Aa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href", -g=null);f.$observe(c,function(c){c?(f.$set(h,c),Qa&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Mb={$addControl:D,$$renameControl:function(a,c){a.$name=c},$removeControl:D,$setValidity:D,$setDirty:D,$setPristine:D,$setSubmitted:D};wd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Dd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:wd,compile:function(d,e){d.addClass(Ra).addClass(pb);var f=e.name?"name":a&&e.ngForm?"ngForm": -!1;return{pre:function(a,d,e,k){if(!("action"in e)){var m=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",m,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",m,!1)},0,!1)})}var r=k.$$parentForm;f&&(kb(a,null,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(kb(a,null,k.$name,s,k.$name),r.$$renameControl(k,c),kb(a,null,k.$name,k,k.$name))}));d.on("$destroy",function(){r.$removeControl(k); -f&&kb(a,null,e[f],s,k.$name);E(k,Mb)})}}}}}]},Zd=Dd(),le=Dd(!0),Rf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,dg=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,eg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,fg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Ed=/^(\d{4})-(\d{2})-(\d{2})$/,Fd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,oc=/^(\d{4})-W(\d\d)$/,Gd=/^(\d{4})-(\d\d)$/, -Hd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Id={text:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);mc(e)},date:nb("date",Ed,Ob(Ed,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":nb("datetimelocal",Fd,Ob(Fd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:nb("time",Hd,Ob(Hd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:nb("week",oc,function(a,c){if(ea(a))return a;if(K(a)){oc.lastIndex=0;var d=oc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=ud(e),f=7*(f-1);c&&(d=c.getHours(),g= -c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:nb("month",Gd,Ob(Gd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){yd(a,c,d,e);mb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:fg.test(a)?parseFloat(a):s});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!U(a))throw ob("numfmt",a);a=a.toString()}return a});if(B(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)|| -y(h)||a>=h};d.$observe("min",function(a){B(a)&&!U(a)&&(a=parseFloat(a,10));h=U(a)&&!isNaN(a)?a:s;e.$validate()})}if(B(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||y(l)||a<=l};d.$observe("max",function(a){B(a)&&!U(a)&&(a=parseFloat(a,10));l=U(a)&&!isNaN(a)?a:s;e.$validate()})}},url:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);mc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||dg.test(d)}},email:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);mc(e); -e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||eg.test(d)}},radio:function(a,c,d,e){y(d.name)&&c.attr("name",++sb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=zd(l,a,"ngTrueValue",d.ngTrueValue,!0),m=zd(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&& -a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return fa(a,k)});e.$parsers.push(function(a){return a?k:m})},hidden:D,button:D,submit:D,reset:D,file:D},Cc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Id[O(h.type)]||Id.text)(f,g,h,l[0],c,a,d,e)}}}}],gg=/^(true|false|\d+)$/,De=function(){return{restrict:"A",priority:100,compile:function(a, -c){return gg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},de=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===s?"":a})}}}}],fe=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate)); -c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===s?"":a})}}}}],ee=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Ce=ca({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), -ge=nc("",!0),ie=nc("Odd",0),he=nc("Even",1),je=Ia({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),ke=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Hc={},hg={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=va("ng-"+a);Hc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h= -d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};hg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ne=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=V.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k= -vb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],oe=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ba.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,q,n,v){var t=0,w,s,p,I=function(){s&&(s.remove(),s=null);w&&(w.$destroy(),w=null);p&&(d.leave(p).then(function(){s=null}),s=p,p=null)};e.$watch(g,function(g){var q=function(){!B(l)||l&&!e.$eval(l)|| -c()},r=++t;g?(a(g,!0).then(function(a){if(r===t){var c=e.$new();n.template=a;a=v(c,function(a){I();d.enter(a,null,f).then(q)});w=c;p=a;w.$emit("$includeContentLoaded",g);e.$eval(h)}},function(){r===t&&(I(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(I(),n.template=null)})}}}}],Fe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Kc(f.template,V).childNodes)(c,function(a){d.append(a)}, -{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],pe=Ia({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Be=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?N(f):f;e.$parsers.push(function(a){if(!y(a)){var c=[];a&&q(a.split(h),function(a){a&&c.push(g?N(a):a)});return c}});e.$formatters.push(function(a){return A(a)?a.join(f):s});e.$isEmpty=function(a){return!a|| -!a.length}}}},pb="ng-valid",Ad="ng-invalid",Ra="ng-pristine",Nb="ng-dirty",Cd="ng-pending",ob=z("ngModel"),ig=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=s;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1; -this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=s;this.$name=m(d.name||"",!1)(a);var r=f(d.ngModel),n=r.assign,v=r,t=n,w=null,u,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");v=function(a){var d=r(a);F(d)&&(d=c(a));return d};t=function(a,c){F(r(a))?g(a,{$$$p:p.$modelValue}):n(a,p.$modelValue)}}else if(!r.assign)throw ob("nonassign",d.ngModel,ta(e));};this.$render=D;this.$isEmpty=function(a){return y(a)|| -""===a||null===a||a!==a};var I=e.inheritedData("$formController")||Mb,E=0;xd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:I,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Nb);g.addClass(e,Ra)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Ra);g.addClass(e,Nb);I.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched= -function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(w);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!U(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:s,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators= -function(a,c,d){function e(){var d=!0;q(p.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(q(p.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;q(p.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!F(k.then))throw ob("$asyncValidators",k);g(h,s);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},D):h(!0)}function g(a,c){l===E&&p.$setValidity(a,c)}function h(a){l===E&&d(a)}E++;var l=E;(function(){var a= -p.$$parserName||"parse";if(u===s)g(a,null);else return u||(q(p.$validators,function(a,c){g(c,null)}),q(p.$asyncValidators,function(a,c){g(c,null)})),g(a,u),u;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(w);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue;if(u=y(c)?s:!0)for(var d= -0;dC;)d=s.pop(),m(S,d.label,!1),d.element.remove()}for(;P.length>x;){l=P.pop();for(C=1;Ca&&n.removeOption(c)})}var u;if(!(u=t.match(d)))throw kg("iexp",t,ta(f));var z=c(u[2]||u[1]),D=u[4]||u[6],F=/ as /.test(u[0])&&u[1],x=F?c(F): -null,G=u[5],J=c(u[3]||""),C=c(u[2]?u[1]:D),M=c(u[7]),K=u[8]?c(u[8]):null,O={},P=[[{element:f,label:""}]],T={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=M(e)||[],c;if(v)c=[],q(f.val(),function(d){d=K?O[d]:d;c.push("?"===d?s:""===d?null:h(x?x:C,d,a[d]))});else{var d=K?O[f.val()]:f.val();c="?"===d?s:""===d?null:h(x?x:C,d,a[d])}g.$setViewValue(c);r()})});g.$render=r;e.$watchCollection(M,l);e.$watchCollection(function(){var a=M(e),c; -if(a&&A(a)){c=Array(a.length);for(var d=0,f=a.length;df||e.$isEmpty(c)||c.length<=f}}}}},Fc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=aa(a)||0;e.$validate()});e.$validators.minlength= -function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};T.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Sd(),Ud(ba),G(V).ready(function(){Od(V,xc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document.head).prepend(''); +(function(O,W,t){'use strict';function L(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.4/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===Pa?M(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(d){return M(c)}}function wc(b){try{return decodeURIComponent(b)}catch(a){}}function xc(b){var a={};m((b||"").split("&"),function(b){var d,e,f;b&&(e= +b=b.replace(/\+/g,"%20"),d=b.indexOf("="),-1!==d&&(e=b.substring(0,d),f=b.substring(d+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,Na.call(a,e)?G(a[e])?a[e].push(f):a[e]=[a[e],f]:a[e]=f))});return a}function Pb(b){var a=[];m(b,function(b,d){G(b)?m(b,function(b){a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))}):a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))});return a.length?a.join("&"):""}function nb(b){return ma(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ma(b,a){return encodeURIComponent(b).replace(/%40/gi, +"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Yd(b,a){var c,d,e=Qa.length;for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=eb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", +d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(c.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return d();O.name=O.name.replace(f,"");aa.resumeBootstrap=function(b){m(b,function(b){a.push(b)});return d()};C(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function $d(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function ae(b){b=aa.element(b).injector();if(!b)throw Ea("test");return b.get("$$testability")} +function zc(b,a){a=a||"_";return b.replace(be,function(b,d){return(d?a:"")+b.toLowerCase()})}function ce(){var b;if(!Ac){var a=ob();la=O.jQuery;x(a)&&(la=null===a?t:O[a]);la&&la.fn.on?(z=la,Q(la.fn,{scope:Ra.scope,isolateScope:Ra.isolateScope,controller:Ra.controller,injector:Ra.injector,inheritedData:Ra.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Qb)Qb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):z=R;aa.element= +z;Ac=!0}}function pb(b,a,c){if(!b)throw Ea("areq",a||"?",c||"required");return b}function Sa(b,a,c){c&&G(b)&&(b=b[b.length-1]);pb(C(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ta(b,a){if("hasOwnProperty"===b)throw Ea("badname",a);}function Bc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=cb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";m(f,function(a){e.appendChild(a)});return e}function R(b){if(b instanceof R)return b;var a;I(b)&&(b=T(b),a=!0);if(!(this instanceof R)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new R(b)}if(a){a=W;var c;b=(c=Df.exec(b))?[a.createElement(c[1])]: +(c=Lc(b,a))?c.childNodes:[]}Mc(this,b)}function Ub(b){return b.cloneNode(!0)}function tb(b,a){a||ub(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;dk&&this.remove(r.key); +return b}},get:function(a){if(k").parent()[0])});var f=S(a,b,a,c,d,e);V.$$addScopeClass(a);var g=null;return function(b,c,d){pb(b,"scope");d=d||{}; +var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?z(Xb(g,z("
    ").append(a).html())):c?Ra.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);V.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a,c,d,e){var f,l,k,r,n,u,N;if(p)for(N=Array(c.length),r=0;r< +h.length;r+=3)f=h[r],N[f]=c[f];else N=c;r=0;for(n=h.length;rE.priority)break;if(v=E.scope)E.templateUrl||(D(v)?(O("new/isolated scope",P||S,E,ba),P=E):O("new/isolated scope", +P,E,ba)),S=S||E;x=E.name;!E.templateUrl&&E.controller&&(v=E.controller,w=w||ga(),O("'"+x+"' controller",w[x],E,ba),w[x]=E);if(v=E.transclude)m=!0,E.$$tlb||(O("transclusion",A,E,ba),A=E),"element"==v?(s=!0,J=E.priority,v=ba,ba=d.$$element=z(W.createComment(" "+x+": "+d[x]+" ")),b=ba[0],U(f,xa.call(v,0),b),y=V(v,e,J,g&&g.name,{nonTlbTranscludeDirective:A})):(v=z(Ub(b)).contents(),ba.empty(),y=V(v,e));if(E.template)if(H=!0,O("template",F,E,ba),F=E,v=C(E.template)?E.template(ba,d):E.template,v=fa(v), +E.replace){g=E;v=Sb.test(v)?Yc(Xb(E.templateNamespace,T(v))):[];b=v[0];if(1!=v.length||b.nodeType!==pa)throw ea("tplrt",x,"");U(f,ba,b);L={$attr:{}};v=ha(b,[],L);var Q=a.splice(wa+1,a.length-(wa+1));P&&Zc(v);a=a.concat(v).concat(Q);$c(d,L);L=a.length}else ba.html(v);if(E.templateUrl)H=!0,O("template",F,E,ba),F=E,E.replace&&(g=E),K=Lf(a.splice(wa,a.length-wa),ba,d,f,m&&y,h,k,{controllerDirectives:w,newScopeDirective:S!==E&&S,newIsolateScopeDirective:P,templateDirective:F,nonTlbTranscludeDirective:A}), +L=a.length;else if(E.compile)try{za=E.compile(ba,d,y),C(za)?n(null,za,Bb,M):za&&n(za.pre,za.post,Bb,M)}catch(R){c(R,ua(ba))}E.terminal&&(K.terminal=!0,J=Math.max(J,E.priority))}K.scope=S&&!0===S.scope;K.transcludeOnThisElement=m;K.templateOnThisElement=H;K.transclude=y;r.hasElementTranscludeDirective=s;return K}function Zc(a){for(var b=0,c=a.length;bn.priority)&&-1!=n.restrict.indexOf(f)&&(l&&(n=Nb(n,{$$start:l,$$end:k})),b.push(n),h=n)}catch(J){c(J)}}return h}function L(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if("srcdoc"==b)return H.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return H.RESOURCE_URL}function X(a,c,d,e, +f){var g=R(a,e);f=h[e]||f;var l=b(d,!0,g,f);if(l){if("multiple"===e&&"select"===ta(a))throw ea("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers={});if(k.test(e))throw ea("nodomevents");var r=h[e];r!==d&&(l=r&&b(r,!0,g,f),d=r);l&&(h[e]=l(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(l,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function U(a,b,c){var d=b[0],e=b.length, +f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&Mf.call(b,a,1);return b}function Xe(){var b={},a=!1;this.register=function(a,d){Ta(a,"controller");D(a)?Q(b,a):b[a]=d};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(c,d){function e(a,b,c,d){if(!a||!D(a.$scope))throw L("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,l){var k,n,q;h=!0===h;l&&I(l)&&(q=l);if(I(f)){l=f.match(Vc);if(!l)throw Nf("ctrlfmt",f);n=l[1];q=q||l[3];f=b.hasOwnProperty(n)?b[n]:Bc(g.$scope, +n,!0)||(a?Bc(d,n,!0):t);Sa(f,n,!0)}if(h)return h=(G(f)?f[f.length-1]:f).prototype,k=Object.create(h||null),q&&e(g,q,k,n||f.name),Q(function(){var a=c.invoke(f,k,g,n);a!==k&&(D(a)||C(a))&&(k=a,q&&e(g,q,k,n||f.name));return k},{instance:k,identifier:q});k=c.instantiate(f,g,n);q&&e(g,q,k,n||f.name);return k}}]}function Ye(){this.$get=["$window",function(b){return z(b.document)}]}function Ze(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Yb(b){return D(b)? +ca(b)?b.toISOString():db(b):b}function df(){this.$get=function(){return function(b){if(!b)return"";var a=[];mc(b,function(b,d){null===b||y(b)||(G(b)?m(b,function(b,c){a.push(ma(d)+"="+ma(Yb(b)))}):a.push(ma(d)+"="+ma(Yb(b))))});return a.join("&")}}}function ef(){this.$get=function(){return function(b){function a(b,e,f){null===b||y(b)||(G(b)?m(b,function(b,c){a(b,e+"["+(D(b)?c:"")+"]")}):D(b)&&!ca(b)?mc(b,function(b,c){a(b,e+(f?"":"[")+c+(f?"":"]"))}):c.push(ma(e)+"="+ma(Yb(b))))}if(!b)return"";var c= +[];a(b,"",!0);return c.join("&")}}}function Zb(b,a){if(I(b)){var c=b.replace(Of,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(bd))||(d=(d=c.match(Pf))&&Qf[d[0]].test(c));d&&(b=uc(c))}}return b}function cd(b){var a=ga(),c;I(b)?m(b.split("\n"),function(b){c=b.indexOf(":");var e=M(T(b.substr(0,c)));b=T(b.substr(c+1));e&&(a[e]=a[e]?a[e]+", "+b:b)}):D(b)&&m(b,function(b,c){var f=M(c),g=T(b);f&&(a[f]=a[f]?a[f]+", "+g:g)});return a}function dd(b){var a;return function(c){a||(a=cd(b));return c? +(c=a[M(c)],void 0===c&&(c=null),c):a}}function ed(b,a,c,d){if(C(d))return d(b,a,c);m(d,function(d){b=d(b,a,c)});return b}function cf(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return D(a)&&"[object File]"!==sa.call(a)&&"[object Blob]"!==sa.call(a)&&"[object FormData]"!==sa.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia($b),put:ia($b),patch:ia($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"}, +a=!1;this.useApplyAsync=function(b){return x(b)?(a=!!b,this):a};var c=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(c=!!a,this):c};var d=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,l,k){function n(a){function d(a){var b=Q({},a);b.data=a.data?ed(a.data,a.headers,a.status,f.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:l.reject(b)}function e(a,b){var c,d={};m(a,function(a,e){C(a)?(c=a(b),null!= +c&&(d[e]=c)):d[e]=a});return d}if(!aa.isObject(a))throw L("$http")("badreq",a);var f=Q({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse,paramSerializer:b.paramSerializer},a);f.headers=function(a){var c=b.headers,d=Q({},a.headers),f,g,h,c=Q({},c.common,c[M(a.method)]);a:for(f in c){g=M(f);for(h in d)if(M(h)===g)continue a;d[f]=c[f]}return e(d,ia(a))}(a);f.method=rb(f.method);f.paramSerializer=I(f.paramSerializer)?k.get(f.paramSerializer):f.paramSerializer;var g= +[function(a){var c=a.headers,e=ed(a.data,dd(c),t,a.transformRequest);y(e)&&m(c,function(a,b){"content-type"===M(b)&&delete c[b]});y(a.withCredentials)&&!y(b.withCredentials)&&(a.withCredentials=b.withCredentials);return q(a,e).then(d,d)},t],h=l.when(f);for(m(B,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){a=g.shift();var r=g.shift(),h=h.then(a,r)}c?(h.success=function(a){Sa(a,"fn");h.then(function(b){a(b.data, +b.status,b.headers,f)});return h},h.error=function(a){Sa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd("success"),h.error=fd("error"));return h}function q(c,d){function g(b,c,d,e){function f(){k(c,b,d,e)}F&&(200<=b&&300>b?F.put(P,[b,c,cd(d),e]):F.remove(P));a?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function k(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?N.resolve:N.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})}function q(a){k(a.data,a.status, +ia(a.headers()),a.statusText)}function B(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var N=l.defer(),J=N.promise,F,m,S=c.headers,P=r(c.url,c.paramSerializer(c.params));n.pendingRequests.push(c);J.then(B,B);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(F=D(c.cache)?c.cache:D(b.cache)?b.cache:u);F&&(m=F.get(P),x(m)?m&&C(m.then)?m.then(q,q):G(m)?k(m[1],m[0],ia(m[2]),m[3]):k(m,200,{},"OK"):F.put(P,J));y(m)&&((m=gd(c.url)?f()[c.xsrfCookieName|| +b.xsrfCookieName]:t)&&(S[c.xsrfHeaderName||b.xsrfHeaderName]=m),e(c.method,P,d,g,S,c.timeout,c.withCredentials,c.responseType));return J}function r(a,b){0=l&&(w.resolve(B),u(p.$$intervalId),delete f[p.$$intervalId]);K||b.$apply()},h);f[p.$$intervalId]=w;return p}var f={};e.cancel=function(b){return b&& +b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function ac(b){b=b.split("/");for(var a=b.length;a--;)b[a]=nb(b[a]);return b.join("/")}function hd(b,a){var c=Aa(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=Y(c.port)||Tf[c.protocol]||null}function id(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Aa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search= +xc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ja(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Cb(b){return b.replace(/(#.+)|#$/,"$1")}function bc(b,a,c){this.$$html5=!0;c=c||"";hd(b,this);this.$$parse=function(b){var c=ra(a,b);if(!I(c))throw Db("ipthprfx",b,a);id(c,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var b= +Pb(this.$$search),c=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(b?"?"+b:"")+c;this.$$absUrl=a+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=ra(b,d))!==t?(g=f,g=(f=ra(c,f))!==t?a+(ra("/",f)||f):b+g):(f=ra(a,d))!==t?g=a+f:a==d+"/"&&(g=a);g&&this.$$parse(g);return!!g}}function cc(b,a,c){hd(b,this);this.$$parse=function(d){var e=ra(b,d)||ra(a,d),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(b=d,this.replace())): +(f=ra(c,e),y(f)&&(f=e));id(f,this);d=this.$$path;var e=b,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(d=(f=g.exec(d))?f[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var a=Pb(this.$$search),e=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+(this.$$url?c+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ja(b)==Ja(a)?(this.$$parse(a),!0):!1}}function jd(b,a,c){this.$$html5=!0;cc.apply(this,arguments);this.$$parseLinkUrl= +function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ja(d)?f=d:(g=ra(a,d))?f=b+c+g:a===d+"/"&&(f=a);f&&this.$$parse(f);return!!f};this.$$compose=function(){var a=Pb(this.$$search),e=this.$$hash?"#"+nb(this.$$hash):"";this.$$url=ac(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+c+this.$$url}}function Eb(b){return function(){return this[b]}}function kd(b,a){return function(c){if(y(c))return this[b];this[b]=a(c);this.$$compose();return this}}function gf(){var b="",a={enabled:!1,requireBase:!0, +rewriteLinks:!0};this.hashPrefix=function(a){return x(a)?(b=a,this):b};this.html5Mode=function(b){return ab(b)?(a.enabled=b,this):D(b)?(ab(b.enabled)&&(a.enabled=b.enabled),ab(b.requireBase)&&(a.requireBase=b.requireBase),ab(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a, +b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var q=d.url(),r;if(a.enabled){if(!n&&a.requireBase)throw Db("nobase");r=q.substring(0,q.indexOf("/",q.indexOf("//")+2))+(n||"/");n=e.history?bc:jd}else r=Ja(q),n=cc;var u=r.substr(0,Ja(r).lastIndexOf("/")+1);k=new n(r,u,"#"+b);k.$$parseLinkUrl(q,q);k.$$state=d.state();var B=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e= +z(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");D(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Aa(h.animVal).href);B.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Cb(k.absUrl())!=Cb(q)&&d.url(k.absUrl(),!0);var K=!0;d.onUrlChange(function(a,b){y(ra(u,a))?g.location.href=a:(c.$evalAsync(function(){var d= +k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(K=!1,l(d,e)))}),c.$$phase||c.$digest())});c.$watch(function(){var a=Cb(d.url()),b=Cb(k.absUrl()),f=d.state(),g=k.$$replace,n=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(K||n)K=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state= +f):(n&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function hf(){var b=!0,a=this;this.debugEnabled=function(a){return x(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||v;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a= +[];m(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function Wa(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw da("isecfld",a);return b}function Ba(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b.window===b)throw da("isecwindow", +a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw da("isecdom",a);if(b===Object)throw da("isecobj",a);}return b}function ld(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b===Uf||b===Vf||b===Wf)throw da("isecff",a);}}function Xf(b,a){return"undefined"!==typeof b?b:a}function md(b,a){return"undefined"===typeof b?a:"undefined"===typeof a?b:b+a}function U(b,a){var c,d;switch(b.type){case s.Program:c=!0;m(b.body,function(b){U(b.expression,a);c=c&&b.expression.constant});b.constant= +c;break;case s.Literal:b.constant=!0;b.toWatch=[];break;case s.UnaryExpression:U(b.argument,a);b.constant=b.argument.constant;b.toWatch=b.argument.toWatch;break;case s.BinaryExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.left.toWatch.concat(b.right.toWatch);break;case s.LogicalExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.constant?[]:[b];break;case s.ConditionalExpression:U(b.test,a);U(b.alternate,a);U(b.consequent, +a);b.constant=b.test.constant&&b.alternate.constant&&b.consequent.constant;b.toWatch=b.constant?[]:[b];break;case s.Identifier:b.constant=!1;b.toWatch=[b];break;case s.MemberExpression:U(b.object,a);b.computed&&U(b.property,a);b.constant=b.object.constant&&(!b.computed||b.property.constant);b.toWatch=[b];break;case s.CallExpression:c=b.filter?!a(b.callee.name).$stateful:!1;d=[];m(b.arguments,function(b){U(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=b.filter&& +!a(b.callee.name).$stateful?d:[b];break;case s.AssignmentExpression:U(b.left,a);U(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=[b];break;case s.ArrayExpression:c=!0;d=[];m(b.elements,function(b){U(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=d;break;case s.ObjectExpression:c=!0;d=[];m(b.properties,function(b){U(b.value,a);c=c&&b.value.constant;b.value.constant||d.push.apply(d,b.value.toWatch)});b.constant=c;b.toWatch=d;break;case s.ThisExpression:b.constant= +!1,b.toWatch=[]}}function nd(b){if(1==b.length){b=b[0].expression;var a=b.toWatch;return 1!==a.length?a:a[0]!==b?a:t}}function od(b){return b.type===s.Identifier||b.type===s.MemberExpression}function pd(b){if(1===b.body.length&&od(b.body[0].expression))return{type:s.AssignmentExpression,left:b.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function qd(b){return 0===b.body.length||1===b.body.length&&(b.body[0].expression.type===s.Literal||b.body[0].expression.type===s.ArrayExpression|| +b.body[0].expression.type===s.ObjectExpression)}function rd(b,a){this.astBuilder=b;this.$filter=a}function sd(b,a){this.astBuilder=b;this.$filter=a}function Fb(b){return"constructor"==b}function dc(b){return C(b.valueOf)?b.valueOf():Yf.call(b)}function jf(){var b=ga(),a=ga();this.$get=["$filter",function(c){function d(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=dc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function e(a,b,c,e,f){var g=e.inputs,h;if(1===g.length){var l=d,g=g[0];return a.$watch(function(a){var b= +g(a);d(b,l)||(h=e(a,t,t,[b]),l=b&&dc(b));return h},b,c,f)}for(var k=[],n=[],q=0,m=g.length;q=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b, +e,f=0,g=d.length;fa)for(b in k++,f)e.hasOwnProperty(b)||(u--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,g,l=1u&&(E=4-u,w[E]||(w[E]=[]),w[E].push({msg:C(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b===d){r=!1;break a}}catch(y){g(y)}if(!(k=m.$$watchersCount&& +m.$$childHead||m!==this&&m.$$nextSibling))for(;m!==this&&!(k=m.$$nextSibling);)m=m.$parent}while(m=k);if((r||t.length)&&!u--)throw p.$$phase=null,c("infdig",a,w);}while(r||t.length);for(p.$$phase=null;x.length;)try{x.shift()()}catch(z){g(z)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===p&&l.$$applicationDestroyed();r(this,-this.$$watchersCount);for(var b in this.$$listenerCount)u(this,this.$$listenerCount[b],b);a&&a.$$childHead== +this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=v;this.$on=this.$watch=this.$watchGroup=function(){return v};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers= +null}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a,b){p.$$phase||t.length||l.defer(function(){t.length&&p.$digest()});t.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){x.push(a)},$apply:function(a){try{q("$apply");try{return this.$eval(a)}finally{p.$$phase=null}}catch(b){g(b)}finally{try{p.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&H.push(b);w()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]= +c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,u(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},l=cb([h],arguments,1),k,n;do{d=e.$$listeners[a]||c;h.currentScope=e;k=0;for(n=d.length;kVa)throw Ca("iequirks");var d=ia(oa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf= +c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=Za);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;m(oa,function(a,b){var c=M(b);d[fb("parse_as_"+c)]=function(b){return e(a,b)};d[fb("get_trusted_"+c)]=function(b){return f(a,b)};d[fb("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function pf(){this.$get=["$window","$document",function(b,a){var c={},d=Y((/android (\d+)/.exec(M((b.navigator|| +{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var q in l)if(k=h.exec(q)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in l);!d||k&&n||(k=I(l.webkitTransition),n=I(l.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"=== +a&&11>=Va)return!1;if(y(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Fa(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function rf(){this.$get=["$templateCache","$http","$q","$sce",function(b,a,c,d){function e(f,g){e.totalPendingRequests++;I(f)&&b.get(f)||(f=d.getTrustedResourceUrl(f));var h=a.defaults&&a.defaults.transformResponse;G(h)?h=h.filter(function(a){return a!==Zb}):h===Zb&&(h=null);return a.get(f,{cache:b,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(a){b.put(f, +a.data);return a.data},function(a){if(!g)throw ea("tpload",f,a.status,a.statusText);return c.reject(a)})}e.totalPendingRequests=0;return e}]}function sf(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];m(a,function(a){var d=aa.element(a).data("$binding");d&&m(d,function(d){c?(new RegExp("(^|\\s)"+ud(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a, +b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;hb;b=Math.abs(b);var g=Infinity===b;if(!g&&!isFinite(b))return"";var h=b+"",l="",k=!1,n=[];g&&(l="\u221e"); +if(!g&&-1!==h.indexOf("e")){var q=h.match(/([\d\.]+)e(-?)(\d+)/);q&&"-"==q[2]&&q[3]>e+1?b=0:(l=h,k=!0)}if(g||k)0b&&(l=b.toFixed(e),b=parseFloat(l));else{g=(h.split(Dd)[1]||"").length;y(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(Dd),h=g[0],g=g[1]||"",q=0,r=a.lgSize,u=a.gSize;if(h.length>=r+u)for(q=h.length-r,k=0;kb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Gb(e,a,d)}}function Hb(b,a){return function(c,d){var e=c["get"+b](),f=rb(a?"SHORT"+b:b);return d[f][e]}}function Ed(b){var a= +(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Fd(b){return function(a){var c=Ed(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Gb(a,b)}}function hc(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function zd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Y(b[9]+b[10]),g=Y(b[9]+b[11]));h.call(a,Y(b[1]), +Y(b[2])-1,Y(b[3]));f=Y(b[4]||0)-f;g=Y(b[5]||0)-g;h=Y(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;I(c)&&(c=fg.test(c)?Y(c):a(c));X(c)&&(c=new Date(c));if(!ca(c)||!isFinite(c.getTime()))return c;for(;e;)(k=gg.exec(e))?(h=cb(h,k,1),e=h.pop()):(h.push(e),e=null);var n=c.getTimezoneOffset(); +f&&(n=vc(f,c.getTimezoneOffset()),c=Ob(c,f,!0));m(h,function(a){l=hg[a];g+=l?l(c,b.DATETIME_FORMATS,n):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ag(){return function(b,a){y(a)&&(a=2);return db(b,a)}}function bg(){return function(b,a,c){a=Infinity===Math.abs(Number(a))?Number(a):Y(a);if(isNaN(a))return b;X(b)&&(b=b.toString());if(!G(b)&&!I(b))return b;c=!c||isNaN(c)?0:Y(c);c=0>c&&c>=-b.length?b.length+c:c;return 0<=a?b.slice(c,c+a):0===c?b.slice(a,b.length):b.slice(Math.max(0, +c+a),c)}}function Bd(b){function a(a,c){c=c?-1:1;return a.map(function(a){var d=1,h=Za;if(C(a))h=a;else if(I(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))d="-"==a.charAt(0)?-1:1,a=a.substring(1);if(""!==a&&(h=b(a),h.constant))var l=h(),h=function(a){return a[l]}}return{get:h,descending:d*c}})}function c(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(b,e,f){if(!Da(b))return b;G(e)||(e=[e]);0===e.length&&(e=["+"]);var g=a(e,f);g.push({get:function(){return{}}, +descending:f?-1:1});b=Array.prototype.map.call(b,function(a,b){return{value:a,predicateValues:g.map(function(d){var e=d.get(a);d=typeof e;if(null===e)d="string",e="null";else if("string"===d)e=e.toLowerCase();else if("object"===d)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),c(e)))break a;if(pc(e)&&(e=e.toString(),c(e)))break a;e=b}return{value:e,type:d}})}});b.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){var b=d.$isEmpty(d.$viewValue)?"":d.$viewValue;a.val()!==b&&a.val(b)}}function Kb(b,a){return function(c,d){var e,f;if(ca(c))return c;if(I(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length- +1)&&(c=c.substring(1,c.length-1));if(ig.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},m(e,function(b,c){c=s};g.$observe("min",function(a){s= +r(a);h.$validate()})}if(x(g.max)||g.ngMax){var w;h.$validators.max=function(a){return!q(a)||y(w)||c(a)<=w};g.$observe("max",function(a){w=r(a);h.$validate()})}}}function Id(b,a,c,d){(d.$$hasNativeValidators=D(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function Jd(b,a,c,d,e){if(x(d)){b=b(d);if(!b.constant)throw kb("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c= +[],d=0;a:for(;d(?:<\/\1>|)$/,Sb=/<|&#?\w+;/,Bf=/<([\w:]+)/,Cf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,na={option:[1,'"],thead:[1,"","
    "],col:[2,"", +"
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};na.optgroup=na.option;na.tbody=na.tfoot=na.colgroup=na.caption=na.thead;na.th=na.td;var Ra=R.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===W.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),R(O).on("load",a))},toString:function(){var b=[];m(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<= +b?z(this[b]):z(this[this.length+b])},length:0,push:kg,sort:[].sort,splice:[].splice},Ab={};m("multiple selected checked disabled readOnly required open".split(" "),function(b){Ab[M(b)]=b});var Rc={};m("input select option textarea button form details".split(" "),function(b){Rc[b]=!0});var Sc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};m({data:Vb,removeData:ub,hasData:function(b){for(var a in gb[b.ng339])return!0;return!1}},function(b,a){R[a]=b});m({data:Vb, +inheritedData:zb,scope:function(b){return z.data(b,"$scope")||zb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return z.data(b,"$isolateScope")||z.data(b,"$isolateScopeNoTemplate")},controller:Oc,injector:function(b){return zb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:wb,css:function(b,a,c){a=fb(a);if(x(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==Pa&&2!==d&&8!==d)if(d=M(a),Ab[d])if(x(c))c?(b[a]=!0,b.setAttribute(a, +d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:t;else if(x(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(x(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(y(b)){var d=a.nodeType;return d===pa||d===Pa?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(y(a)){if(b.multiple&&"select"===ta(b)){var c=[];m(b.options,function(a){a.selected&&c.push(a.value|| +a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(y(a))return b.innerHTML;tb(b,!0);b.innerHTML=a},empty:Pc},function(b,a){R.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Pc&&(2==b.length&&b!==wb&&b!==Oc?a:d)===t){if(D(a)){for(e=0;e <= >= && || ! = |".split(" "),function(a){Lb[a]=!0});var rg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},ec=function(a){this.options=a};ec.prototype={constructor:ec,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=x(c)?"s "+c+"-"+ +this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw da("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">=");)a={type:s.BinaryExpression,operator:c.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(), +c;c=this.expect("+","-");)a={type:s.BinaryExpression,operator:c.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:c.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")): +this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=fa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var c;c=this.expect("(","[",".");)"("===c.text?(a={type:s.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===c.text?(a={type:s.MemberExpression,object:a,property:this.expression(), +computed:!0},this.consume("]")):"."===c.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var c={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return c},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier|| +this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:s.ArrayExpression,elements:a}},object:function(){var a=[],c;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;c={type:s.Property,kind:"init"};this.peek().constant? +c.key=this.constant():this.peek().identifier?c.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");c.value=this.expression();a.push(c)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},throwError:function(a,c){throw da("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},consume:function(a){if(0===this.tokens.length)throw da("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+ +"]",this.peek());return c},peekToken:function(){if(0===this.tokens.length)throw da("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},constants:{"true":{type:s.Literal,value:!0},"false":{type:s.Literal,value:!1},"null":{type:s.Literal, +value:null},undefined:{type:s.Literal,value:t},"this":{type:s.ThisExpression}}};rd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:c,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};U(e,d.$filter);var f="",g;this.stage="assign";if(g=pd(e))this.state.computing="assign",f=this.nextId(),this.recurse(g,f),f="fn.assign="+this.generateFunction("assign","s,v,l");g=nd(e.body);d.stage="inputs";m(g,function(a,c){var e= +"fn"+c;d.state[e]={vars:[],body:[],own:{}};d.state.computing=e;var f=d.nextId();d.recurse(a,f);d.return_(f);d.state.inputs.push(e);a.watchId=c});this.state.computing="fn";this.stage="main";this.recurse(e);f='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+f+this.watchFns()+"return fn;";f=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",f))(this.$filter,Wa,Ba,ld,Xf,md,a);this.state= +this.stage=t;f.literal=qd(e);f.constant=e.constant;return f},USE:"use",STRICT:"strict",watchFns:function(){var a=[],c=this.state.inputs,d=this;m(c,function(c){a.push("var "+c+"="+d.generateFunction(c,"s"))});c.length&&a.push("fn.inputs=["+c.join(",")+"];");return a.join("")},generateFunction:function(a,c){return"function("+c+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],c=this;m(this.state.filters,function(d,e){a.push(d+"=$filter("+c.escape(e)+")")});return a.length? +"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,c,d,e,f,g){var h,l,k=this,n,q;e=e||v;if(!g&&x(a.watchId))c=c||this.nextId(),this.if_("i",this.lazyAssign(c,this.computedMember("i",a.watchId)),this.lazyRecurse(a,c,d,e,f,!0));else switch(a.type){case s.Program:m(a.body,function(c,d){k.recurse(c.expression,t,t,function(a){l=a});d!==a.body.length-1?k.current().body.push(l, +";"):k.return_(l)});break;case s.Literal:q=this.escape(a.value);this.assign(c,q);e(q);break;case s.UnaryExpression:this.recurse(a.argument,t,t,function(a){l=a});q=a.operator+"("+this.ifDefined(l,0)+")";this.assign(c,q);e(q);break;case s.BinaryExpression:this.recurse(a.left,t,t,function(a){h=a});this.recurse(a.right,t,t,function(a){l=a});q="+"===a.operator?this.plus(h,l):"-"===a.operator?this.ifDefined(h,0)+a.operator+this.ifDefined(l,0):"("+h+")"+a.operator+"("+l+")";this.assign(c,q);e(q);break;case s.LogicalExpression:c= +c||this.nextId();k.recurse(a.left,c);k.if_("&&"===a.operator?c:k.not(c),k.lazyRecurse(a.right,c));e(c);break;case s.ConditionalExpression:c=c||this.nextId();k.recurse(a.test,c);k.if_(c,k.lazyRecurse(a.alternate,c),k.lazyRecurse(a.consequent,c));e(c);break;case s.Identifier:c=c||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Wa(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)), +function(){k.if_("inputs"===k.stage||"s",function(){f&&1!==f&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(c,k.nonComputedMember("s",a.name))})},c&&k.lazyAssign(c,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Fb(a.name))&&k.addEnsureSafeObject(c);e(c);break;case s.MemberExpression:h=d&&(d.context=this.nextId())||this.nextId();c=c||this.nextId();k.recurse(a.object,h,t,function(){k.if_(k.notNull(h),function(){if(a.computed)l= +k.nextId(),k.recurse(a.property,l),k.addEnsureSafeMemberName(l),f&&1!==f&&k.if_(k.not(k.computedMember(h,l)),k.lazyAssign(k.computedMember(h,l),"{}")),q=k.ensureSafeObject(k.computedMember(h,l)),k.assign(c,q),d&&(d.computed=!0,d.name=l);else{Wa(a.property.name);f&&1!==f&&k.if_(k.not(k.nonComputedMember(h,a.property.name)),k.lazyAssign(k.nonComputedMember(h,a.property.name),"{}"));q=k.nonComputedMember(h,a.property.name);if(k.state.expensiveChecks||Fb(a.property.name))q=k.ensureSafeObject(q);k.assign(c, +q);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(c,"undefined")});e(c)},!!f);break;case s.CallExpression:c=c||this.nextId();a.filter?(l=k.filter(a.callee.name),n=[],m(a.arguments,function(a){var c=k.nextId();k.recurse(a,c);n.push(c)}),q=l+"("+n.join(",")+")",k.assign(c,q),e(c)):(l=k.nextId(),h={},n=[],k.recurse(a.callee,l,h,function(){k.if_(k.notNull(l),function(){k.addEnsureSafeFunction(l);m(a.arguments,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(k.ensureSafeObject(a))})}); +h.name?(k.state.expensiveChecks||k.addEnsureSafeObject(h.context),q=k.member(h.context,h.name,h.computed)+"("+n.join(",")+")"):q=l+"("+n.join(",")+")";q=k.ensureSafeObject(q);k.assign(c,q)},function(){k.assign(c,"undefined")});e(c)}));break;case s.AssignmentExpression:l=this.nextId();h={};if(!od(a.left))throw da("lval");this.recurse(a.left,t,h,function(){k.if_(k.notNull(h.context),function(){k.recurse(a.right,l);k.addEnsureSafeObject(k.member(h.context,h.name,h.computed));q=k.member(h.context,h.name, +h.computed)+a.operator+l;k.assign(c,q);e(c||q)})},1);break;case s.ArrayExpression:n=[];m(a.elements,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(a)})});q="["+n.join(",")+"]";this.assign(c,q);e(q);break;case s.ObjectExpression:n=[];m(a.properties,function(a){k.recurse(a.value,k.nextId(),t,function(c){n.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+c)})});q="{"+n.join(",")+"}";this.assign(c,q);e(q);break;case s.ThisExpression:this.assign(c,"s");e("s");break;case s.NGValueParameter:this.assign(c, +"v"),e("v")}},getHasOwnProperty:function(a,c){var d=a+"."+c,e=this.current().own;e.hasOwnProperty(d)||(e[d]=this.nextId(!1,a+"&&("+this.escape(c)+" in "+a+")"));return e[d]},assign:function(a,c){if(a)return this.current().body.push(a,"=",c,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,c){return"ifDefined("+a+","+this.escape(c)+")"},plus:function(a,c){return"plus("+a+","+c+")"},return_:function(a){this.current().body.push("return ", +a,";")},if_:function(a,c,d){if(!0===a)c();else{var e=this.current().body;e.push("if(",a,"){");c();e.push("}");d&&(e.push("else{"),d(),e.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,c){return a+"."+c},computedMember:function(a,c){return a+"["+c+"]"},member:function(a,c,d){return d?this.computedMember(a,c):this.nonComputedMember(a,c)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a), +";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},lazyRecurse:function(a,c,d,e,f,g){var h=this;return function(){h.recurse(a,c,d,e,f,g)}},lazyAssign:function(a,c){var d=this;return function(){d.assign(a,c)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g, +stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(I(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(X(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw da("esc");},nextId:function(a,c){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(c?"="+c:""));return d},current:function(){return this.state[this.state.computing]}}; +sd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=c;U(e,d.$filter);var f,g;if(f=pd(e))g=this.recurse(f);f=nd(e.body);var h;f&&(h=[],m(f,function(a,c){var e=d.recurse(a);a.input=e;h.push(e);a.watchId=c}));var l=[];m(e.body,function(a){l.push(d.recurse(a.expression))});f=0===e.body.length?function(){}:1===e.body.length?l[0]:function(a,c){var d;m(l,function(e){d=e(a,c)});return d};g&&(f.assign=function(a,c,d){return g(a,d,c)});h&&(f.inputs= +h);f.literal=qd(e);f.constant=e.constant;return f},recurse:function(a,c,d){var e,f,g=this,h;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,c);case s.UnaryExpression:return f=this.recurse(a.argument),this["unary"+a.operator](f,c);case s.BinaryExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case s.LogicalExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e, +f,c);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),c);case s.Identifier:return Wa(a.name,g.expression),g.identifier(a.name,g.expensiveChecks||Fb(a.name),c,d,g.expression);case s.MemberExpression:return e=this.recurse(a.object,!1,!!d),a.computed||(Wa(a.property.name,g.expression),f=a.property.name),a.computed&&(f=this.recurse(a.property)),a.computed?this.computedMember(e,f,c,d,g.expression):this.nonComputedMember(e,f, +g.expensiveChecks,c,d,g.expression);case s.CallExpression:return h=[],m(a.arguments,function(a){h.push(g.recurse(a))}),a.filter&&(f=this.$filter(a.callee.name)),a.filter||(f=this.recurse(a.callee,!0)),a.filter?function(a,d,e,g){for(var r=[],m=0;m":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>c(e,f,g,h);return d?{value:e}:e}},"binary<=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)<=c(e,f,g,h);return d?{value:e}:e}},"binary>=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>=c(e,f,g,h);return d?{value:e}:e}},"binary&&":function(a,c,d){return function(e,f,g,h){e= +a(e,f,g,h)&&c(e,f,g,h);return d?{value:e}:e}},"binary||":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)||c(e,f,g,h);return d?{value:e}:e}},"ternary?:":function(a,c,d,e){return function(f,g,h,l){f=a(f,g,h,l)?c(f,g,h,l):d(f,g,h,l);return e?{value:f}:f}},value:function(a,c){return function(){return c?{context:t,name:t,value:a}:a}},identifier:function(a,c,d,e,f){return function(g,h,l,k){g=h&&a in h?h:g;e&&1!==e&&g&&!g[a]&&(g[a]={});h=g?g[a]:t;c&&Ba(h,f);return d?{context:g,name:a,value:h}:h}}, +computedMember:function(a,c,d,e,f){return function(g,h,l,k){var n=a(g,h,l,k),q,m;null!=n&&(q=c(g,h,l,k),Wa(q,f),e&&1!==e&&n&&!n[q]&&(n[q]={}),m=n[q],Ba(m,f));return d?{context:n,name:q,value:m}:m}},nonComputedMember:function(a,c,d,e,f,g){return function(h,l,k,n){h=a(h,l,k,n);f&&1!==f&&h&&!h[c]&&(h[c]={});l=null!=h?h[c]:t;(d||Fb(c))&&Ba(l,g);return e?{context:h,name:c,value:l}:l}},inputs:function(a,c){return function(d,e,f,g){return g?g[c]:a(d,e,f)}}};var fc=function(a,c,d){this.lexer=a;this.$filter= +c;this.options=d;this.ast=new s(this.lexer);this.astCompiler=d.csp?new sd(this.ast,c):new rd(this.ast,c)};fc.prototype={constructor:fc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};ga();ga();var Yf=Object.prototype.valueOf,Ca=L("$sce"),oa={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ea=L("$compile"),Z=W.createElement("a"),wd=Aa(O.location.href);xd.$inject=["$document"];Jc.$inject=["$provide"];yd.$inject=["$locale"];Ad.$inject=["$locale"]; +var Dd=".",hg={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:Hb("Month"),MMM:Hb("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds",1),sss:$("Milliseconds",3),EEEE:Hb("Day"),EEE:Hb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a,c,d){a=-1*d;return a=(0<=a?"+":"")+(Gb(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},gg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,fg=/^\-?\d+$/;zd.$inject=["$locale"];var cg=qa(M),dg=qa(rb);Bd.$inject=["$parse"];var he=qa({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===sa.call(c.prop("href"))? +"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),sb={};m(Ab,function(a,c){function d(a,d,f){a.$watch(f[e],function(a){f.$set(c,!!a)})}if("multiple"!=a){var e=va("ng-"+c),f=d;"checked"===a&&(f=function(a,c,f){f.ngModel!==f[e]&&d(a,c,f)});sb[e]=function(){return{restrict:"A",priority:100,link:f}}}});m(Sc,function(a,c){sb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(jg))){f.$set("ngPattern", +new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});m(["src","srcset","href"],function(a){var c=va("ng-"+a);sb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===sa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(h,c),Va&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Ib={$addControl:v,$$renameControl:function(a,c){a.$name=c},$removeControl:v,$setValidity:v, +$setDirty:v,$setPristine:v,$setSubmitted:v};Gd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Od=function(a){return["$timeout","$parse",function(c,d){function e(a){return""===a?d('this[""]').assign:d(a).assign||v}return{name:"form",restrict:a?"EAC":"E",controller:Gd,compile:function(d,g){d.addClass(Xa).addClass(lb);var h=g.name?"name":a&&g.ngForm?"ngForm":!1;return{pre:function(a,d,f,g){if(!("action"in f)){var m=function(c){a.$apply(function(){g.$commitViewValue();g.$setSubmitted()}); +c.preventDefault()};d[0].addEventListener("submit",m,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",m,!1)},0,!1)})}var s=g.$$parentForm,B=h?e(g.$name):v;h&&(B(a,g),f.$observe(h,function(c){g.$name!==c&&(B(a,t),s.$$renameControl(g,c),B=e(g.$name),B(a,g))}));d.on("$destroy",function(){s.$removeControl(g);B(a,t);Q(g,Ib)})}}}}}]},ie=Od(),ve=Od(!0),ig=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,sg=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/, +tg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,ug=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Pd=/^(\d{4})-(\d{2})-(\d{2})$/,Qd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/,Rd=/^(\d{4})-(\d\d)$/,Sd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Td={text:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);ic(e)},date:jb("date",Pd,Kb(Pd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":jb("datetimelocal",Qd,Kb(Qd, +"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:jb("time",Sd,Kb(Sd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:jb("week",kc,function(a,c){if(ca(a))return a;if(I(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=Ed(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:jb("month",Rd,Kb(Rd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){Id(a, +c,d,e);ib(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:ug.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!X(a))throw kb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||y(h)||a>=h};d.$observe("min",function(a){x(a)&&!X(a)&&(a=parseFloat(a,10));h=X(a)&&!isNaN(a)?a:t;e.$validate()})}if(x(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)|| +y(l)||a<=l};d.$observe("max",function(a){x(a)&&!X(a)&&(a=parseFloat(a,10));l=X(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||sg.test(d)}},email:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||tg.test(d)}},radio:function(a,c,d,e){y(d.name)&&c.attr("name",++mb);c.on("click",function(a){c[0].checked&& +e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=Jd(l,a,"ngTrueValue",d.ngTrueValue,!0),n=Jd(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ka(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:v, +button:v,submit:v,reset:v,file:v},Dc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Td[M(h.type)]||Td.text)(f,g,h,l[0],c,a,d,e)}}}}],vg=/^(true|false|\d+)$/,Ne=function(){return{restrict:"A",priority:100,compile:function(a,c){return vg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},ne=["$compile",function(a){return{restrict:"AC", +compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],pe=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],oe=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A", +compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Me=qa({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),qe=jc("",!0),se=jc("Odd",0),re=jc("Even",1),te=Ma({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),ue=[function(){return{restrict:"A", +scope:!0,controller:"@",priority:500}}],Ic={},wg={blur:!0,focus:!0};m("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=va("ng-"+a);Ic[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};wg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var xe=["$animate", +function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=qb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],ye=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400, +terminal:!0,transclude:"element",controller:aa.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,m,r,s){var t=0,v,w,p,A=function(){w&&(w.remove(),w=null);v&&(v.$destroy(),v=null);p&&(d.leave(p).then(function(){w=null}),w=p,p=null)};e.$watch(g,function(g){var m=function(){!x(l)||l&&!e.$eval(l)||c()},q=++t;g?(a(g,!0).then(function(a){if(q===t){var c=e.$new();r.template=a;a=s(c,function(a){A();d.enter(a,null,f).then(m)});v=c;p=a;v.$emit("$includeContentLoaded", +g);e.$eval(h)}},function(){q===t&&(A(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(A(),r.template=null)})}}}}],Pe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Lc(f.template,W).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ze=Ma({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}), +Le=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?T(f):f;e.$parsers.push(function(a){if(!y(a)){var c=[];a&&m(a.split(h),function(a){a&&c.push(g?T(a):a)});return c}});e.$formatters.push(function(a){return G(a)?a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",Kd="ng-invalid",Xa="ng-pristine",Jb="ng-dirty",Md="ng-pending",kb=L("ngModel"),xg=["$scope","$exceptionHandler","$attrs", +"$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=n(d.name||"",!1)(a);var q=f(d.ngModel),r=q.assign,s=q,B=r, +K=null,w,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");s=function(a){var d=q(a);C(d)&&(d=c(a));return d};B=function(a,c){C(q(a))?g(a,{$$$p:p.$modelValue}):r(a,p.$modelValue)}}else if(!q.assign)throw kb("nonassign",d.ngModel,ua(e));};this.$render=v;this.$isEmpty=function(a){return y(a)||""===a||null===a||a!==a};var A=e.inheritedData("$formController")||Ib,z=0;Hd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a, +c){delete a[c]},parentForm:A,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Jb);g.addClass(e,Xa)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Xa);g.addClass(e,Jb);A.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(K);p.$viewValue= +p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!X(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:t,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d){function e(){var d=!0;m(p.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(m(p.$asyncValidators,function(a, +c){g(c,null)}),!1)}function f(){var d=[],e=!0;m(p.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!C(k.then))throw kb("$asyncValidators",k);g(h,t);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},v):h(!0)}function g(a,c){l===z&&p.$setValidity(a,c)}function h(a){l===z&&d(a)}z++;var l=z;(function(){var a=p.$$parserName||"parse";if(w===t)g(a,null);else return w||(m(p.$validators,function(a,c){g(c,null)}),m(p.$asyncValidators,function(a,c){g(c, +null)})),g(a,w),w;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(K);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue;if(w=y(c)?t:!0)for(var d=0;df||e.$isEmpty(c)||c.length<=f}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=Y(a)||0;e.$validate()});e.$validators.minlength=function(a, +c){return e.$isEmpty(c)||c.length>=f}}}}};O.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(ce(),ee(aa),aa.module("ngLocale",[],["$provide",function(a){function c(a){a+="";var c=a.indexOf(".");return-1==c?0:a.length-c-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "), +SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3, +maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",pluralCat:function(a,e){var f=a|0,g=e;t===g&&(g=Math.min(c(a),3));Math.pow(10,g);return 1==f&&0==g?"one":"other"}})}]),z(W).ready(function(){Zd(W,yc)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); //# sourceMappingURL=angular.min.js.map diff --git a/UI/WebServerResources/js/vendor/angular.min.js.map b/UI/WebServerResources/js/vendor/angular.min.js.map index c4d317a3a..3c400224e 100644 --- a/UI/WebServerResources/js/vendor/angular.min.js.map +++ b/UI/WebServerResources/js/vendor/angular.min.js.map @@ -1,8 +1,8 @@ { "version":3, "file":"angular.min.js", -"lineCount":252, -"mappings":"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", +"lineCount":292, +"mappings":"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", "sources":["angular.js"], -"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","Object","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","j","jj","int","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","push","result","Date","getTime","RegExp","match","lastIndex","emptyObject","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","$$jqLite","$$jqLiteProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","prototype","returnedValue","annotate","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","newValue","$$inter","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","ERANAMES","ERAS","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","base","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","expensiveChecks","eso","o","eso0","eso1","eso2","eso3","eso4","cspSafeGetter","pathVal","getterFnWithEnsureSafeObject","s","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","code","needsEnsureSafeObject","lookupJs","evaledFnGetter","Function","sharedGetter","fn.assign","getValueOf","objectValueOf","cacheDefault","cacheExpensive","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","flush","taskQueue","task","taskCount","queueFn","asyncFn","cancelLastRAF","rafFn","cancelQueueFn","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","timer","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","isNaN","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","spacing","limit","Infinity","sortPredicate","reverseOrder","reverseComparator","comp","descending","objectToString","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","APPLICATION_JSON","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","operator","throwError","chars","isExpOperator","start","end","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","peekToken","e1","e2","e3","e4","peekAhead","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseConstant","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","$parseFieldAccess","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","anySelected","optionId","trackKeysCache","groupByFn","displayFn","nullOption","groupIndex","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp","head"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","Object","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","baseExtend","dst","objs","deep","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","hasCustomToString","toString","prototype","isUndefined","isDefined","getPrototypeOf","isNumber","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","TYPED_ARRAY_REGEXP","test","push","constructor","getTime","match","lastIndex","emptyObject","shallowCopy","charAt","equals","o1","o2","t1","t2","keySet","createMap","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","timezoneOffset","getTimezoneOffset","setMinutes","getMinutes","minutes","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$animateCss","$CoreAnimateCssProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$CoreAnimateRunnerProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","$inject","$$annotate","Type","instance","returnedValue","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","bindToController","controllerAs","CNTRL_REG","$$bindings","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","destroyBindings","$new","$$destroyBindings","$on","transcludeOnThisElement","createBoundTranscludeFn","transclude","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","msie","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","inheritType","dataName","setupControllers","controllerDirectives","controllerKey","$scope","$attrs","$transclude","controllerInstance","hasElementTranscludeDirective","linkNode","thisLinkFn","controllersBoundTransclude","cloneAttachFn","scopeToChild","templateDirective","$$originalDirective","initializeDirectiveBindings","scopeDirective","newScopeDirective","controllerForBindings","identifier","controllerResult","invokeLinkFn","template","templateUrl","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","hasData","expando","k","kk","annotation","newScope","onNewScopeDestroyed","lastValue","parentGet","parentSet","compare","$observe","literal","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","$controllerMinErr","controllerPrototype","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","$httpMinErrLegacyFn","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","throwNoconcat","compute","interpolationFn","$$watchDelegate","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","base","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","lastIndexOf","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","objectEquality","parsedExpression","prettyPrintExpression","inputExpressions","inputs","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","$parseOptions","expensiveChecks","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","all","promises","results","flush","taskQueue","task","taskCount","queueFn","asyncFn","cancelLastRAF","rafFn","cancelQueueFn","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","Scope","$parent","$$prevSibling","$root","beginPhase","phase","incrementWatchersCount","current","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","groupSep","decimalSep","isNegative","abs","isInfinity","Infinity","isFinite","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","minFrac","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","num","digits","neg","dateGetter","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","dateTimezoneOffset","DATE_FORMATS","spacing","limit","processPredicates","sortPredicate","reverseOrder","map","predicate","descending","predicates","compareValues","getComparisonObject","predicateValues","doComparison","v1","v2","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","Function","name_","el","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","jqLiteHasData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","AnimateRunner","end","resume","pause","complete","pass","fail","postDigestElements","addRemoveClassesPostDigest","add","updateData","classesAdded","classesRemoved","existing","pin","domOperation","from","to","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","runner","enter","move","leave","addclass","animate","tempClasses","RAFPromise","getPromise","f1","f2","closed","start","domNode","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","isExpOperator","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","constants","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","generateFunction","fnKey","intoId","return_","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","stringEscapeRegex","stringEscapeFn","c","charCodeAt","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","handleFormSubmission","parentFormCtrl","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","ngModelCtrl.$render","lastView","lastViewRef","selectMultipleWatch","chromeHack","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] }