from gitlab
277
account/resources/css/account.css
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
html {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .navbar {
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header .container {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-title {
|
||||||
|
background-image: url('../img/logo.png');
|
||||||
|
height: 25px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 123px;
|
||||||
|
margin: 3px 10px 5px;
|
||||||
|
text-indent: -99999px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-pf .navbar-utility {
|
||||||
|
right: 20px;
|
||||||
|
top: -34px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-pf .navbar-utility > li > a {
|
||||||
|
color: #fff !important;
|
||||||
|
padding-bottom: 12px;
|
||||||
|
padding-top: 11px;
|
||||||
|
border-left: medium none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-area {
|
||||||
|
background-color: #fff;
|
||||||
|
border-color: #CECECE;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 0 1px;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-bottom {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sidebar */
|
||||||
|
|
||||||
|
.bs-sidebar {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
padding-top: 44px;
|
||||||
|
padding-right: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
.bs-sidebar ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bs-sidebar ul li {
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: -1em;
|
||||||
|
}
|
||||||
|
.bs-sidebar ul li a {
|
||||||
|
font-size: 14px;
|
||||||
|
padding-left: 25px;
|
||||||
|
color: #4d5258;
|
||||||
|
line-height: 28px;
|
||||||
|
display: block;
|
||||||
|
border-width: 1px 0 1px 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
.bs-sidebar ul li a:hover,
|
||||||
|
.bs-sidebar ul li a:focus {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #777777;
|
||||||
|
border-right: 2px solid #aaa;
|
||||||
|
}
|
||||||
|
.bs-sidebar ul li.active a {
|
||||||
|
background-color: #c7e5f0;
|
||||||
|
border-color: #56bae0;
|
||||||
|
font-weight: bold;
|
||||||
|
background-image: url(../img/icon-sidebar-active.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bs-sidebar ul li.active a:hover {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.content-area h2 {
|
||||||
|
font-family: "Open Sans", sans-serif;
|
||||||
|
font-weight: 100;
|
||||||
|
font-size: 24px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 30px;
|
||||||
|
color: #909090;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required {
|
||||||
|
color: #CB2915;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
margin-top: 30px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedback-aligner .alert {
|
||||||
|
background-position: 1.27273em center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border-radius: 2px;
|
||||||
|
border-width: 1px;
|
||||||
|
color: #4D5258;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1.1em;
|
||||||
|
line-height: 1.4em;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.909091em 3.63636em;
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.alert.alert-success {
|
||||||
|
background-color: #E4F1E1;
|
||||||
|
border-color: #4B9E39;
|
||||||
|
}
|
||||||
|
.alert.alert-error {
|
||||||
|
background-color: #F8E7E7;
|
||||||
|
border-color: #B91415;
|
||||||
|
}
|
||||||
|
.alert.alert-warning {
|
||||||
|
background-color: #FEF1E9;
|
||||||
|
border-color: #F17528;
|
||||||
|
}
|
||||||
|
.alert.alert-info {
|
||||||
|
background-color: #E4F3FA;
|
||||||
|
border-color: #5994B2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-horizontal {
|
||||||
|
border-top: 1px solid #E9E8E8;
|
||||||
|
padding-top: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-horizontal .control-label {
|
||||||
|
color: #909090;
|
||||||
|
line-height: 1.4em;
|
||||||
|
padding-top: 5px;
|
||||||
|
position: relative;
|
||||||
|
text-align: right;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-label + .required {
|
||||||
|
position: absolute;
|
||||||
|
right: -2px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#kc-form-buttons {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#kc-form-buttons .btn-primary {
|
||||||
|
float: right;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Authenticator page */
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol li {
|
||||||
|
font-size: 13px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol li img {
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr + .form-horizontal {
|
||||||
|
border: none;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-dropdown{
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.kc-dropdown > a{
|
||||||
|
display:block;
|
||||||
|
padding: 11px 10px 12px;
|
||||||
|
line-height: 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #fff !important;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.kc-dropdown > a::after{
|
||||||
|
content: "\2c5";
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.kc-dropdown:hover > a{
|
||||||
|
background-color: rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
.kc-dropdown ul li a{
|
||||||
|
padding: 1px 11px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #000 !important;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
display:block;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.kc-dropdown ul li a:hover{
|
||||||
|
color: #4d5258;
|
||||||
|
background-color: #d4edfa;
|
||||||
|
border-color: #b3d3e7;
|
||||||
|
}
|
||||||
|
.kc-dropdown ul{
|
||||||
|
position: absolute;
|
||||||
|
z-index: 2000;
|
||||||
|
list-style:none;
|
||||||
|
display:none;
|
||||||
|
padding: 5px 0px;
|
||||||
|
margin: 0px;
|
||||||
|
background-color: #fff !important;
|
||||||
|
border: 1px solid #b6b6b6;
|
||||||
|
border-radius: 1px;
|
||||||
|
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||||
|
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||||
|
background-clip: padding-box;
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
.kc-dropdown:hover ul{
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#kc-totp-secret-key {
|
||||||
|
border: 1px solid #eee;
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 10px;
|
||||||
|
margin: 50px 0;
|
||||||
|
}
|
BIN
account/resources/img/icon-sidebar-active.png
Normal file
After Width: | Height: | Size: 202 B |
BIN
account/resources/img/keycloak-logo.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
account/resources/img/logo.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
14
account/theme.properties
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
parent=base
|
||||||
|
import=common/keycloak
|
||||||
|
|
||||||
|
styles=css/account.css
|
||||||
|
stylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css
|
||||||
|
|
||||||
|
##### css classes for form buttons
|
||||||
|
# main class used for all buttons
|
||||||
|
kcButtonClass=btn
|
||||||
|
# classes defining priority of the button - primary or default (there is typically only one priority button for the form)
|
||||||
|
kcButtonPrimaryClass=btn-primary
|
||||||
|
kcButtonDefaultClass=btn-default
|
||||||
|
# classes defining size of the button
|
||||||
|
kcButtonLargeClass=btn-lg
|
505
admin/resources/css/styles.css
Normal file
@ -0,0 +1,505 @@
|
|||||||
|
html,body {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required {
|
||||||
|
color: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip-inner {
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-top {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-margin-top {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.clip {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
max-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.w-10 {
|
||||||
|
width: 10%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.w-15 {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.w-20 {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
th.w-25 {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.w-30 {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
th.w-35 {
|
||||||
|
width: 35%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.w-40 {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** Loading ***********/
|
||||||
|
|
||||||
|
.loading {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
left: 0px;
|
||||||
|
padding: 2px 200px 2px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** Feedback ***********/
|
||||||
|
|
||||||
|
.feedback-aligner {
|
||||||
|
position: fixed;
|
||||||
|
top: 15px;
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 0;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
.feedback-aligner .alert {
|
||||||
|
border-radius: 2px;
|
||||||
|
border-width: 1px;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** On-Off Switch ***********/
|
||||||
|
|
||||||
|
.onoffswitch {
|
||||||
|
-moz-user-select: none;
|
||||||
|
height: 26px;
|
||||||
|
position: relative;
|
||||||
|
width: 62px;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-checkbox {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-label {
|
||||||
|
border: 1px solid #bbb;
|
||||||
|
border-radius: 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
width: 62px;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-inner {
|
||||||
|
display: block;
|
||||||
|
margin-left: -100%;
|
||||||
|
transition: margin 0.3s ease-in 0s;
|
||||||
|
width: 200%;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-inner > span {
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
color: white;
|
||||||
|
float: left;
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: "Open Sans", sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
padding: 0;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-switch {
|
||||||
|
background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||||
|
background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||||
|
background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||||
|
background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 2px;
|
||||||
|
bottom: 0;
|
||||||
|
margin: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 39px;
|
||||||
|
top: 0;
|
||||||
|
transition: all 0.3s ease-in 0s;
|
||||||
|
-webkit-transition: all 0.3s ease-in 0s;
|
||||||
|
width: 23px;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-inner .onoffswitch-active {
|
||||||
|
background-image: linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||||
|
background-image: -moz-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||||
|
background-image: -webkit-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||||
|
background-image: -ms-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #00a9ec), color-stop(1, 0, #009bd3));
|
||||||
|
color: #FFFFFF;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-active,
|
||||||
|
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-inactive {
|
||||||
|
background-image: none;
|
||||||
|
background-color: #e5e5e5;
|
||||||
|
color: #9d9fa1;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-inner .onoffswitch-inactive {
|
||||||
|
background: linear-gradient(#fefefe, #e8e8e8) repeat scroll 0 0 transparent;
|
||||||
|
color: #4d5258;
|
||||||
|
padding-right: 10px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********** Select 2 ***********/
|
||||||
|
|
||||||
|
.select2-container {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container-multi .select2-choices .select2-search-field {
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container-single {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container-single .form-group {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select2-container-single .form-group .input-group {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** html select ********/
|
||||||
|
.overflow-select {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********** New Menu ***********/
|
||||||
|
|
||||||
|
|
||||||
|
.sidebar-pf-left{
|
||||||
|
background: #292e34;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-pf .nav-pills > li a i, .sidebar-pf .nav-pills > li a span{
|
||||||
|
color: #72767b;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.sidebar-pf .nav-pills > li > a{
|
||||||
|
color: #dbdada;
|
||||||
|
padding: 0px 20px 0 30px!important;
|
||||||
|
line-height: 30px;
|
||||||
|
border-left-width: 12px;
|
||||||
|
border-left-style: solid;
|
||||||
|
border-left-color: #292e34;
|
||||||
|
margin-left: -6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-pf .nav-pills > li > a:hover{
|
||||||
|
background: #393f44;
|
||||||
|
border-color:#292e34;
|
||||||
|
border-left-color: #393f44;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-pf .nav-pills > li > a:after{
|
||||||
|
display: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.sidebar-pf .nav-pills > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #393f44!important;
|
||||||
|
border-bottom: 1px solid #000!important;
|
||||||
|
border-top: 1px solid #000!important;
|
||||||
|
border-left-color: #39a5dc!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-pf .nav-pills > li.active a i, .sidebar-pf .nav-pills > li.active a span{
|
||||||
|
color: #39a5dc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********** Realm selector ***********/
|
||||||
|
|
||||||
|
.realm-selector{
|
||||||
|
color: #fff;
|
||||||
|
margin: 0 -20px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realm-dropmenu{
|
||||||
|
display: none;
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 60px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 999;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realm-selector:hover .realm-dropmenu{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realm-add{
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realm-selector h2{
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 60px;
|
||||||
|
padding: 0 20px;
|
||||||
|
margin: 0;
|
||||||
|
border-bottom: 1px solid #d5d5d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realm-selector h2 i{
|
||||||
|
display: inline-block;
|
||||||
|
float: right;
|
||||||
|
line-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.realm-selector ul{
|
||||||
|
padding-left: 0;
|
||||||
|
margin: 0;
|
||||||
|
list-style: none;
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y:auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.realm-selector ul li a{
|
||||||
|
line-height: 60px;
|
||||||
|
padding: 0 20px;
|
||||||
|
border-bottom: 1px solid #d5d5d6;
|
||||||
|
line-height: 39px;
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********** Overwrites header defaults ***********/
|
||||||
|
|
||||||
|
.navbar-pf{
|
||||||
|
border-top: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-pf .navbar-brand {
|
||||||
|
padding: 0;
|
||||||
|
height: 56px;
|
||||||
|
line-height: 56px;
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url('../img/keyclok-logo.png');
|
||||||
|
background-size: 148px 30px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 148px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-pf .navbar-utility .dropdown-toggle {
|
||||||
|
padding: 23px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 i {
|
||||||
|
color: #999999;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Action cell */
|
||||||
|
.kc-action-cell {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-action-cell:hover {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-action-cell-disabled {
|
||||||
|
background-color: #fafafa;
|
||||||
|
color: #8b8d8f;
|
||||||
|
background-image: none;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-sorter span {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Time selector */
|
||||||
|
|
||||||
|
.time-selector input {
|
||||||
|
display: inline-block;
|
||||||
|
width: 120px;
|
||||||
|
padding-right: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-selector select {
|
||||||
|
display: inline-block;
|
||||||
|
width: 80px;
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace_editor {
|
||||||
|
height: 600px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-button-input-file input {
|
||||||
|
float: left;
|
||||||
|
width: 73%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kc-button-input-file label {
|
||||||
|
float: left;
|
||||||
|
margin-left: 2%;
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.kc-authz-table-expanded {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-gutter > [class*='col-'] {
|
||||||
|
padding-right:0!important;
|
||||||
|
padding-left:0!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-conceal {
|
||||||
|
font-family: 'text-security-disc';
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-map input.form-control {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deactivation styles for user-group membership tree models */
|
||||||
|
|
||||||
|
div[tree-model] li .deactivate {
|
||||||
|
color: #4a5053;
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .deactivate_selected {
|
||||||
|
background-color: #dcdcdc;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 1px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* search highlighting */
|
||||||
|
|
||||||
|
div[tree-model] li .highlight {
|
||||||
|
background-color: #aaddff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Manage credentials */
|
||||||
|
table.credentials-table {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credentials-table td {
|
||||||
|
vertical-align: middle !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credentials-table input[type='text'] {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.credential-arrows-cell {
|
||||||
|
width: 75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.credential-label-cell {
|
||||||
|
padding: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.credential-action-cell {
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.credential-action-cell div.kc-action-cell {
|
||||||
|
width: 100%;
|
||||||
|
height: 36px;
|
||||||
|
line-height: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.credential-action-cell.expanded div.kc-action-cell {
|
||||||
|
border-bottom: 1px solid #d1d1d1;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credential-data-table td {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credential-data-table tr:first-child td {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credential-data-table td:first-child {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.credential-data-table td.key {
|
||||||
|
text-align: right;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
BIN
admin/resources/img/keyclok-logo.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
194
admin/resources/img/keyclok-logo.svg
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
|
||||||
|
viewBox="-145.2 359 325.4 77.2" enable-background="new -145.2 359 325.4 77.2" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="7" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
||||||
|
M-79.1,393.1c-7.2,5-14.7,3.7-23.2-3.4c-4.9-4.1-11.2-2.8-15.4-1.5c-2.6,0.8-6.3,0.7-9.5,0.1c-14-2.9-10.9,6-8.3,14
|
||||||
|
c4.8,14.6-3.2,18-6,12.8c-1.8,6.6,7.1,8.6,10.9,7.7c6-1.4,14.1-2.2,19-0.6c9.5,2.9,13.1,0.5,11.5-2.6c-0.5-1-0.2-2.4,0.6-3.1
|
||||||
|
c2.8-2.4,5.3-0.4,8-1.9c2.1-1.2,2.1-3.9-1.2-5.5c-1.7-0.8-1.6-2.9,0.2-3.8c3.7-2,8.8-1,10-5.1C-81.9,398.7-80.7,395-79.1,393.1z"
|
||||||
|
/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="7" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
||||||
|
M-112.4,367.4c-1.1-0.6-4.3-2.6-5.1-3.1c-0.8-0.5-2.7-1.9-4.8-1.9s-4,1.4-4.8,1.9c-0.8,0.5-4,2.5-5.1,3.1c-0.8,0.5-3.7,2-3.7,6.3
|
||||||
|
c0,1.3,0,3.6,0,4.5c0,2.8,1.6,5,4.5,6.4c1,0.5,1.8,1.3,1.8,3.5c0,0.9,0.4,1.2,0.9,1.2h0.7c0.6,0,1,0.2,1,1.3c0,0.6,0,2.1,0,2.1
|
||||||
|
v37.2l2.7,2.8h1.2l5.7-5.8v-34.2c0,0,0-1.5,0-2.1c0-1,0.3-1.3,1-1.3h0.7c0.6,0,0.9-0.2,0.9-1.2c0-2.1,0.8-3,1.8-3.5
|
||||||
|
c2.9-1.5,4.5-3.6,4.5-6.4c0-1,0-3.2,0-4.5C-108.7,369.5-111.6,367.9-112.4,367.4z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-227.7191" y1="2220.7964" x2="-165.056" y2="2220.7964" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FDFDFD"/>
|
||||||
|
<stop offset="0.1452" style="stop-color:#F4F5F5"/>
|
||||||
|
<stop offset="0.6844" style="stop-color:#D9DBDB"/>
|
||||||
|
<stop offset="1" style="stop-color:#CFD1D1"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_1_)" d="M-79.1,393.1c-7.2,5-14.7,3.7-23.2-3.4c-4.9-4.1-11.2-2.8-15.4-1.5c-2.6,0.8-6.3,0.7-9.5,0.1
|
||||||
|
c-14-2.9-10.9,6-8.3,14c4.8,14.6-3.2,18-6,12.8c-1.8,6.6,7.1,8.6,10.9,7.7c6-1.4,14.1-2.2,19-0.6c9.5,2.9,13.1,0.5,11.5-2.6
|
||||||
|
c-0.5-1-0.2-2.4,0.6-3.1c2.8-2.4,5.3-0.4,8-1.9c2.1-1.2,2.1-3.9-1.2-5.5c-1.7-0.8-1.6-2.9,0.2-3.8c3.7-2,8.8-1,10-5.1
|
||||||
|
C-81.9,398.7-80.7,395-79.1,393.1z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="192.3203" y1="1507.8835" x2="184.0467" y2="1507.8835" gradientTransform="matrix(1 0 0 1 -302 -1102)">
|
||||||
|
<stop offset="0" style="stop-color:#E6E6E6"/>
|
||||||
|
<stop offset="1" style="stop-color:#B2B3B3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_2_)" d="M-115,391.3c0,5,0.7,22.8,4.5,30.4l-8.7-0.2v-31.5L-115,391.3z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-200.8627" y1="2227.3811" x2="-193.8624" y2="2207.8804" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#F6F6F6"/>
|
||||||
|
<stop offset="1" style="stop-color:#B2B3B3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_3_)" d="M-134.6,403.1c-2.8-7.5-6.5-16.6,7.5-13.7c3.2,0.7,6.9,0.7,9.5-0.1c4.3-1.3,10-2.4,14.5,1.5
|
||||||
|
c8.9,7.7,16.9,8.3,24.1,3.3c-1.6,1.9-3.1,5.6-3.3,7.1c-0.2,1.3-1.1,1.9-2.4,2.4c-18.5,7.5-15.4-5.3-21.4-9.5
|
||||||
|
c-3.2-2.2-7.7-2.1-11.2-0.8c-3.2,1.2-6.4,0.9-9.8-0.4C-132.9,390.8-136.7,391.9-134.6,403.1z"/>
|
||||||
|
<line fill="none" stroke="#FFFFFF" stroke-width="3.5" stroke-miterlimit="10" x1="-117.4" y1="421.8" x2="-117.4" y2="390.6"/>
|
||||||
|
<g opacity="0.75">
|
||||||
|
<path fill="#FFFFFF" d="M-110.3,389c2.7,0,4.9,0.7,6.8,2.3c5.5,4.6,10.6,6.8,15.6,6.8c1.5,0,2.9-0.2,4.4-0.6
|
||||||
|
c-0.3,0.9-0.6,1.6-0.7,2.1c-0.4,1.4-1.6,1.8-4.4,2.4c-1.5,0.3-3.1,0.7-4.7,1.5c-1.6,0.8-2.5,2.3-2.5,3.9c0,1.5,0.9,2.8,2.4,3.5
|
||||||
|
c1.2,0.5,1.5,1.1,1.5,1.4c0,0.3-0.3,0.5-0.5,0.6c-0.6,0.3-1.2,0.4-2.1,0.4c-0.2,0-0.3,0-0.5,0c-0.2,0-0.4,0-0.5,0
|
||||||
|
c-1.6,0-3.4,0.2-5.2,1.7c-1.5,1.3-2,3.7-1.1,5.6c0.1,0.3,0.1,0.4,0.1,0.4c-0.1,0.1-0.8,0.6-2.6,0.6c-1.8,0-4.1-0.4-6.7-1.2
|
||||||
|
c-2-0.6-4.5-0.9-7.5-0.9c-3.8,0-8.4,0.6-12.6,1.5c-0.4,0.1-0.9,0.1-1.5,0.1c-1.9,0-4.2-0.5-5.7-1.6c1.7,0,3.3-0.9,4.4-2.4
|
||||||
|
c1.3-1.8,3.2-6.3,0.2-15.3l-0.1-0.2c-1.3-3.9-2.9-8.8-1.5-10.7c0.5-0.7,1.6-1.1,3.4-1.1c1.2,0,2.6,0.2,4.3,0.5
|
||||||
|
c1.8,0.4,3.6,0.6,5.4,0.6c1.9,0,3.7-0.2,5.1-0.7C-115.4,389.7-112.9,389-110.3,389 M-110.3,387c-2.7,0-5.2,0.6-7.3,1.3
|
||||||
|
c-1.3,0.4-2.9,0.6-4.6,0.6c-1.6,0-3.4-0.2-5-0.5c-1.9-0.4-3.4-0.6-4.7-0.6c-8.5,0-5.9,7.7-3.6,14.6c3.4,10.4,0.3,15.1-2.7,15.1
|
||||||
|
c-1.2,0-2.5-0.8-3.3-2.3c-1.5,5.6,4.8,7.9,9,7.9c0.7,0,1.4-0.1,2-0.2c3.7-0.8,8.1-1.5,12.2-1.5c2.5,0,4.9,0.2,6.9,0.8
|
||||||
|
c3,0.9,5.5,1.3,7.3,1.3c4,0,5.3-1.8,4.2-3.9c-0.5-1-0.2-2.4,0.6-3.1c1.4-1.2,2.7-1.3,3.9-1.3c0.3,0,0.7,0,1,0c1,0,2-0.1,3.1-0.7
|
||||||
|
c2.1-1.2,2.1-3.9-1.2-5.5c-1.7-0.8-1.6-2.9,0.2-3.8c3.7-2,8.8-1,10-5.1c0.4-1.5,1.7-5.2,3.3-7.1c-2.9,2-5.9,3-8.9,3
|
||||||
|
c-4.5,0-9.2-2.2-14.3-6.4C-104.7,387.7-107.6,387-110.3,387L-110.3,387z M-79.1,393.1L-79.1,393.1L-79.1,393.1z"/>
|
||||||
|
</g>
|
||||||
|
<path fill="none" stroke="#034672" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
|
||||||
|
M-79.1,393.1c-7.2,5-14.7,3.7-23.2-3.4c-4.9-4.1-11.2-2.8-15.4-1.5c-2.6,0.8-6.3,0.7-9.5,0.1c-14-2.9-10.9,6-8.3,14
|
||||||
|
c4.8,14.6-3.2,18-6,12.8c-1.8,6.6,7.1,8.6,10.9,7.7c6-1.4,14.1-2.2,19-0.6c9.5,2.9,13.1,0.5,11.5-2.6c-0.5-1-0.2-2.4,0.6-3.1
|
||||||
|
c2.8-2.4,5.3-0.4,8-1.9c2.1-1.2,2.1-3.9-1.2-5.5c-1.7-0.8-1.6-2.9,0.2-3.8c3.7-2,8.8-1,10-5.1C-81.9,398.7-80.7,395-79.1,393.1z"/>
|
||||||
|
<path fill="#034672" d="M-134.6,402.1c-2.8-7.5-6.5-16.6,7.5-13.7c3.2,0.7,6.9,0.7,9.5-0.1c4.3-1.3,10-2.4,14.5,1.5
|
||||||
|
c8.9,7.7,16.9,8.3,24.1,3.3c-1.6,1.9-3.1,5.6-3.3,7.1c-0.2,1.3-1.1,1.9-2.4,2.4c-13.1,4.8-14.1-5.5-20.1-9.7
|
||||||
|
c-3.2-2.2-9-1.9-12.5-0.6c-3.2,1.2-6.4,0.9-9.8-0.4C-132.9,389.8-136.7,390.9-134.6,402.1z"/>
|
||||||
|
<path fill="#FFFFFF" d="M-112.4,367.4c-1.1-0.6-4.3-2.6-5.1-3.1c-0.8-0.5-2.7-1.9-4.8-1.9s-4,1.4-4.8,1.9c-0.8,0.5-4,2.5-5.1,3.1
|
||||||
|
c-0.8,0.5-3.7,2-3.7,6.3c0,1.3,0,3.6,0,4.5c0,2.8,1.6,5,4.5,6.4c1,0.5,1.8,1.3,1.8,3.5c0,0.9,0.4,1.2,0.9,1.2h0.7
|
||||||
|
c0.6,0,1,0.2,1,1.3c0,0.6,0,2.1,0,2.1v37.2l2.7,2.8h1.2l5.7-5.8v-34.2c0,0,0-1.5,0-2.1c0-1,0.3-1.3,1-1.3h0.7
|
||||||
|
c0.6,0,0.9-0.2,0.9-1.2c0-2.1,0.8-3,1.8-3.5c2.9-1.5,4.5-3.6,4.5-6.4c0-1,0-3.2,0-4.5C-108.7,369.5-111.6,367.9-112.4,367.4z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-217.9037" y1="2215.0122" x2="-187.068" y2="2207.345" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#B8D7E9"/>
|
||||||
|
<stop offset="0.3324" style="stop-color:#CCE3F1"/>
|
||||||
|
<stop offset="0.6937" style="stop-color:#DAEBF7"/>
|
||||||
|
<stop offset="1" style="stop-color:#DFEEF9"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_4_)" d="M-112.4,367.4c-1.1-0.6-4.3-2.6-5.1-3.1c-0.8-0.5-2.7-1.9-4.8-1.9v69.3l4.8-4.9v-34.2
|
||||||
|
c0,0,0-1.5,0-2.1c0-1,0.3-1.3,1-1.3h0.7c0.6,0,0.9-0.2,0.9-1.2c0-2.1,0.8-3,1.8-3.5c2.9-1.5,4.5-3.6,4.5-6.4c0-1,0-3.2,0-4.5
|
||||||
|
C-108.7,369.5-111.6,367.9-112.4,367.4z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-214.9444" y1="2190.8406" x2="-206.3191" y2="2233.0925" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#F1F9FE"/>
|
||||||
|
<stop offset="0.4254" style="stop-color:#E9F5FD"/>
|
||||||
|
<stop offset="1" style="stop-color:#E4F3FD"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_5_)" d="M-122.3,362.5c-2.1,0-4,1.4-4.8,1.9c-0.8,0.5-4,2.5-5.1,3.1c-0.8,0.5-3.7,2-3.7,6.3
|
||||||
|
c0,1.3,0,3.6,0,4.5c0,2.8,1.6,5,4.5,6.4c1,0.5,1.8,1.3,1.8,3.5c0,0.9,0.4,1.2,0.9,1.2h0.7c0.6,0,1,0.2,1,1.3c0,0.6,0,2.1,0,2.1
|
||||||
|
v37.2l2.7,2.8h1.2l0.9-0.9L-122.3,362.5L-122.3,362.5z"/>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" d="M-122.6,362.5c1.9,0.9,3.4,2,4.2,2.4
|
||||||
|
c0.8,0.5,4,2.5,5.1,3.1c0.8,0.5,3.7,2,3.7,6.3c0,1.3,0,2.8,0,3.8c0,2.8-1.6,5-4.5,6.4c-1,0.5-1.8,1.4-1.8,3.6v1.2"/>
|
||||||
|
<path fill="none" stroke="#034672" stroke-width="2" stroke-miterlimit="10" d="M-112.4,367.4c-1.1-0.6-4.3-2.6-5.1-3.1
|
||||||
|
c-0.8-0.5-2.7-1.9-4.8-1.9s-4,1.4-4.8,1.9c-0.8,0.5-4,2.5-5.1,3.1c-0.8,0.5-3.7,2-3.7,6.3c0,1.3,0,3.6,0,4.5c0,2.8,1.6,5,4.5,6.4
|
||||||
|
c1,0.5,1.8,1.3,1.8,3.5c0,0.9,0.4,1.2,0.9,1.2h0.7c0.6,0,1,0.2,1,1.3c0,0.6,0,2.1,0,2.1v37.2l2.7,2.8h1.2l5.7-5.8v-34.2
|
||||||
|
c0,0,0-1.5,0-2.1c0-1,0.3-1.3,1-1.3h0.7c0.6,0,0.9-0.2,0.9-1.2c0-2.1,0.8-3,1.8-3.5c2.9-1.5,4.5-3.6,4.5-6.4c0-1,0-3.2,0-4.5
|
||||||
|
C-108.7,369.5-111.6,367.9-112.4,367.4z"/>
|
||||||
|
<path fill="#E9F6FE" stroke="#034672" stroke-width="2" stroke-miterlimit="10" d="M-107.5,392.7"/>
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-106.4885" y1="2203.667" x2="-106.4885" y2="2254.552" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_6_)" d="M-14.5,407.6h-11.6c0.3,2.3,1,3.9,2.1,4.7s2.9,1.2,5.5,1.2c3.4,0,7.4-0.2,12-0.7l0.9,6
|
||||||
|
c-3.3,1.6-8,2.4-14,2.4c-6,0-10.3-1.3-12.9-3.9c-2.6-2.6-3.8-6.9-3.8-12.9c0-6.3,1.2-10.7,3.7-13.2c2.5-2.5,6.7-3.8,12.6-3.8
|
||||||
|
c5.3,0,9.2,0.9,11.6,2.8c2.4,1.8,3.6,4.7,3.6,8.4c0,3-0.8,5.2-2.3,6.7C-8.5,406.8-11,407.6-14.5,407.6z M-26.3,401.8h9.1
|
||||||
|
c1.2,0,2-0.3,2.4-0.8c0.4-0.6,0.6-1.4,0.6-2.5c0-1.5-0.4-2.6-1.2-3.2c-0.8-0.6-2.2-0.9-4.3-0.9c-2.5,0-4.2,0.5-5.1,1.5
|
||||||
|
C-25.6,396.9-26.1,398.8-26.3,401.8z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-72.864" y1="2203.667" x2="-72.864" y2="2254.5503" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_7_)" d="M31,388.3l-11.4,32.6c-0.6,1.7-1.4,3.3-2.2,4.8c-0.9,1.5-2,2.9-3.4,4.3c-1.4,1.4-3.1,2.4-5.2,3
|
||||||
|
c-2.1,0.7-4.4,0.8-6.9,0.5L1,427.8c2.6-0.7,4.6-1.6,6.1-2.7c1.5-1.1,2.6-2.6,3.5-4.5l0.1-0.3H8.9c-1.6,0-2.6-0.8-3.1-2.3
|
||||||
|
l-10.5-29.8H5.6l6,20.8c0.4,1.5,0.7,3.1,1,4.8h0.8c0.1-0.5,0.3-1.3,0.7-2.4s0.5-1.9,0.7-2.4l5.9-20.8L31,388.3L31,388.3z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-41.775" y1="2203.667" x2="-41.775" y2="2254.552" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_8_)" d="M57.6,412.8l0.9,6.3c-3.3,1.4-7.5,2.1-12.4,2.1c-5.9,0-10.1-1.3-12.5-3.8
|
||||||
|
c-2.4-2.5-3.6-6.9-3.6-13.1c0-6.2,1.2-10.6,3.6-13.1c2.4-2.5,6.6-3.8,12.6-3.8c4.9,0,8.8,0.7,11.9,2l-1,6
|
||||||
|
c-4.7-0.1-7.8-0.1-9.2-0.1c-3,0-5,0.6-6.1,1.9c-1.1,1.3-1.7,3.6-1.7,7.2c0,3.5,0.6,5.9,1.7,7.2c1.1,1.3,3.1,1.9,6.1,1.9
|
||||||
|
C51.6,413.4,54.9,413.2,57.6,412.8z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="8.9715" y1="2203.667" x2="8.9715" y2="2254.553" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_9_)" d="M95,387.4c6,0,10.2,1.3,12.7,3.9c2.5,2.6,3.7,7,3.7,13.1c0,6.2-1.2,10.5-3.7,13.1
|
||||||
|
c-2.5,2.5-6.7,3.8-12.7,3.8c-6,0-10.3-1.3-12.8-3.8c-2.5-2.5-3.7-6.9-3.7-13.1c0-6.2,1.2-10.6,3.7-13.2
|
||||||
|
C84.7,388.7,89,387.4,95,387.4z M95,394.6c-2.6,0-4.3,0.6-5.1,2c-0.9,1.3-1.3,3.9-1.3,7.8c0,3.8,0.4,6.4,1.3,7.7
|
||||||
|
c0.9,1.3,2.6,2,5.1,2c2.5,0,4.2-0.7,5.1-2c0.9-1.3,1.3-3.9,1.3-7.7c0-3.9-0.4-6.5-1.3-7.8C99.2,395.3,97.5,394.6,95,394.6z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="42.879" y1="2203.667" x2="42.879" y2="2254.552" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_10_)" d="M115.9,395.5l-0.9-6.5c5.8-1,11.4-1.6,16.7-1.6c4.3,0,7.5,0.9,9.6,2.6c2,1.8,3.1,4.8,3.1,9.2v21.2
|
||||||
|
h-7.6l-1-4.9c-3.2,3.8-7.2,5.7-11.9,5.7c-3.1,0-5.6-0.8-7.6-2.4s-2.9-3.9-2.9-6.8v-3.3c0-2.6,0.9-4.6,2.6-6
|
||||||
|
c1.7-1.4,4.1-2.1,7.2-2.1h11.5v-1.4c0-1.6-0.4-2.8-1.1-3.3c-0.7-0.6-2.1-0.8-4.1-0.8C125.9,394.9,121.4,395.1,115.9,395.5z
|
||||||
|
M122.9,409.4v1.2c0,2.2,1.3,3.3,3.8,3.3c2.6,0,5.3-1,8-3.1v-4.5H126C124,406.4,122.9,407.4,122.9,409.4z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="-136.063" y1="2203.667" x2="-136.063" y2="2254.5491" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_11_)" d="M-43.5,406.1c-0.9-1.6-1.9-2.7-3-3.5v-0.1c1.3-0.9,2.3-1.9,3-3.1l8.3-11.1H-46l-7.9,11.2h-3
|
||||||
|
c0.3-1.8,0.5-3.7,0.5-5.9v-18.8h-3l-6.7,9.5v36.1h9.6v-10.1c0-1.3-0.2-2.9-0.5-4.8h3.1l9,14.9H-34L-43.5,406.1z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="-16.68" y1="2203.667" x2="-16.68" y2="2254.551" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_12_)" d="M76.7,413.2h-2.6c-2.4,0-3.6-1.1-3.6-3.3v-35.1h-3l-6.6,9.4v28.2c0,2.8,0.8,5,2.5,6.5
|
||||||
|
c1.6,1.5,3.9,2.3,6.8,2.3c3.5,0,6-0.4,7.7-1.3L76.7,413.2z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="78.107" y1="2203.667" x2="78.107" y2="2254.5491" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFE"/>
|
||||||
|
<stop offset="0.4815" style="stop-color:#F2F1F1"/>
|
||||||
|
<stop offset="1" style="stop-color:#E9E7E8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_13_)" d="M170.7,406.1c-0.9-1.6-1.9-2.7-3-3.5v-0.1c1.3-0.9,2.3-1.9,3-3.1l8.3-11.1h-10.8l-7.9,11.2h-3
|
||||||
|
c0.3-1.8,0.5-3.7,0.5-5.9v-18.8h-3l-6.7,9.5v36.1h9.6v-10.1c0-1.3-0.2-2.9-0.5-4.8h3.1l9,14.9h10.8L170.7,406.1z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="-208.281" y1="2186.001" x2="-208.281" y2="2196.1689" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#00639A"/>
|
||||||
|
<stop offset="0.2355" style="stop-color:#00578A"/>
|
||||||
|
<stop offset="0.507" style="stop-color:#004D7B"/>
|
||||||
|
<stop offset="0.7167" style="stop-color:#004773"/>
|
||||||
|
<stop offset="1" style="stop-color:#00446E"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon fill="url(#SVGID_14_)" points="-122.3,372.4 -131.3,370.4 -132.3,374.1 -122.3,379.2 -112.2,374.1 -113.2,370.4 "/>
|
||||||
|
<polyline opacity="0.2" enable-background="new " points="-122.3,379.2 -112.2,374.1 -113.2,370.4 -122.3,372.4 "/>
|
||||||
|
<path fill="#034672" d="M-127.2,391.9c3.4,1.3,6.7,1.5,9.8,0.4l-0.3-2.2c-2.6,0.8-6.3,0.7-9.5,0.1L-127.2,391.9z"/>
|
||||||
|
<path fill="#034672" d="M-122.6,391.5c-0.4,2.8,1.9,4.7,1.9,7.6C-116.8,394.8-121.7,393.3-122.6,391.5z"/>
|
||||||
|
<path fill="#034672" d="M-122.6,391.7c-0.1,3.2-0.4,5.6-1.7,7.2C-126.8,394.2-123.7,392.6-122.6,391.7z"/>
|
||||||
|
<circle fill="#034672" cx="-122.6" cy="391.7" r="1.6"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="-197.511" y1="2237.772" x2="-197.511" y2="2237.772" gradientTransform="matrix(1 0 0 1 86 -1815.5)">
|
||||||
|
<stop offset="0" style="stop-color:#F6F6F6"/>
|
||||||
|
<stop offset="0.5386" style="stop-color:#E4E4E4"/>
|
||||||
|
<stop offset="1" style="stop-color:#DADADA"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path fill="url(#SVGID_15_)" d="M-111.5,422.3"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
BIN
admin/resources/img/select-arrow.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
5
admin/theme.properties
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
parent=base
|
||||||
|
import=common/keycloak
|
||||||
|
|
||||||
|
styles=css/styles.css
|
||||||
|
stylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css node_modules/select2/select2.css lib/angular/treeview/css/angular.treeview.css node_modules/text-security/text-security.css
|
BIN
common/resources/img/favicon.ico
Normal file
After Width: | Height: | Size: 627 B |
1
common/resources/lib/angular/errors.json
Normal file
20
common/resources/lib/angular/treeview/LICENSE
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013 Steve
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
95
common/resources/lib/angular/treeview/angular.treeview.js
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
@license Angular Treeview version 0.1.6
|
||||||
|
ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
|
||||||
|
[TREE attribute]
|
||||||
|
angular-treeview: the treeview directive
|
||||||
|
tree-id : each tree's unique id.
|
||||||
|
tree-model : the tree model on $scope.
|
||||||
|
node-id : each node's id
|
||||||
|
node-label : each node's label
|
||||||
|
node-children: each node's children
|
||||||
|
|
||||||
|
<div
|
||||||
|
data-angular-treeview="true"
|
||||||
|
data-tree-id="tree"
|
||||||
|
data-tree-model="roleList"
|
||||||
|
data-node-id="roleId"
|
||||||
|
data-node-label="roleName"
|
||||||
|
data-node-children="children" >
|
||||||
|
</div>
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function ( angular ) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module( 'angularTreeview', [] ).directive( 'treeModel', ['$compile', function( $compile ) {
|
||||||
|
return {
|
||||||
|
restrict: 'A',
|
||||||
|
link: function ( scope, element, attrs ) {
|
||||||
|
//tree id
|
||||||
|
var treeId = attrs.treeId;
|
||||||
|
|
||||||
|
//tree model
|
||||||
|
var treeModel = attrs.treeModel;
|
||||||
|
|
||||||
|
//node id
|
||||||
|
var nodeId = attrs.nodeId || 'id';
|
||||||
|
|
||||||
|
//node label
|
||||||
|
var nodeLabel = attrs.nodeLabel || 'label';
|
||||||
|
|
||||||
|
//children
|
||||||
|
var nodeChildren = attrs.nodeChildren || 'children';
|
||||||
|
|
||||||
|
//tree template
|
||||||
|
var template =
|
||||||
|
'<ul>' +
|
||||||
|
'<li data-ng-repeat="node in ' + treeModel + '">' +
|
||||||
|
'<i ng-class="getGroupClass(node)" data-ng-click="' + treeId + '.selectNodeHead(node)"></i>' +
|
||||||
|
'<span data-ng-class="getSelectedClass(node)" ng-dblclick="edit(node)" data-ng-click="' + treeId + '.selectNodeLabel(node)">{{node.' + nodeLabel + '}}</span>' +
|
||||||
|
'<div data-ng-hide="node.collapsed" data-tree-id="' + treeId + '" data-tree-model="node.' + nodeChildren + '" data-node-id=' + nodeId + ' data-node-label=' + nodeLabel + ' data-node-children=' + nodeChildren + '></div>' +
|
||||||
|
'</li>' +
|
||||||
|
'</ul>';
|
||||||
|
|
||||||
|
//check tree id, tree model
|
||||||
|
if( treeId && treeModel ) {
|
||||||
|
//root node
|
||||||
|
if( attrs.angularTreeview ) {
|
||||||
|
|
||||||
|
//create tree object if not exists
|
||||||
|
scope[treeId] = scope[treeId] || {};
|
||||||
|
|
||||||
|
//if node head clicks,
|
||||||
|
scope[treeId].selectNodeHead = scope[treeId].selectNodeHead || function( selectedNode ){
|
||||||
|
|
||||||
|
//Collapse or Expand
|
||||||
|
selectedNode.collapsed = !selectedNode.collapsed;
|
||||||
|
scope[treeId].selectNodeLabel(selectedNode);
|
||||||
|
};
|
||||||
|
|
||||||
|
//if node label clicks,
|
||||||
|
scope[treeId].selectNodeLabel = scope[treeId].selectNodeLabel || function( selectedNode ){
|
||||||
|
|
||||||
|
//remove highlight from previous node
|
||||||
|
if( scope[treeId].currentNode && scope[treeId].currentNode.selected ) {
|
||||||
|
scope[treeId].currentNode.selected = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
//set highlight to selected node
|
||||||
|
selectedNode.selected = 'selected';
|
||||||
|
|
||||||
|
//set currentNode
|
||||||
|
scope[treeId].currentNode = selectedNode;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//Rendering template.
|
||||||
|
element.html('').append( $compile( template )( scope ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
})( angular );
|
9
common/resources/lib/angular/treeview/angular.treeview.min.js
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
@license Angular Treeview version 0.1.6
|
||||||
|
ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function(f){f.module("angularTreeview",[]).directive("treeModel",function($compile){return{restrict:"A",link:function(b,h,c){var a=c.treeId,g=c.treeModel,e=c.nodeLabel||"label",d=c.nodeChildren||"children",e='<ul><li data-ng-repeat="node in '+g+'"><i class="collapsed" data-ng-show="node.'+d+'.length && node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="expanded" data-ng-show="node.'+d+'.length && !node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="normal" data-ng-hide="node.'+
|
||||||
|
d+'.length"></i> <span data-ng-class="node.selected" data-ng-click="'+a+'.selectNodeLabel(node)">{{node.'+e+'}}</span><div data-ng-hide="node.collapsed" data-tree-id="'+a+'" data-tree-model="node.'+d+'" data-node-id='+(c.nodeId||"id")+" data-node-label="+e+" data-node-children="+d+"></div></li></ul>";a&&g&&(c.angularTreeview&&(b[a]=b[a]||{},b[a].selectNodeHead=b[a].selectNodeHead||function(a){a.collapsed=!a.collapsed},b[a].selectNodeLabel=b[a].selectNodeLabel||function(c){b[a].currentNode&&b[a].currentNode.selected&&
|
||||||
|
(b[a].currentNode.selected=void 0);c.selected="selected";b[a].currentNode=c}),h.html('').append($compile(e)(b)))}}})})(angular);
|
@ -0,0 +1,99 @@
|
|||||||
|
div[angular-treeview] {
|
||||||
|
/* prevent user selection */
|
||||||
|
-moz-user-select: -moz-none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
/* default */
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size:13px;
|
||||||
|
color: #555;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
border: none;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li {
|
||||||
|
position: relative;
|
||||||
|
padding: 0 0 0 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .expanded {
|
||||||
|
padding: 1px 10px;
|
||||||
|
background-image: url("../img/folder.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .collapsed {
|
||||||
|
padding: 1px 10px;
|
||||||
|
background-image: url("../img/folder-closed.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .normal {
|
||||||
|
padding: 1px 10px;
|
||||||
|
background-image: url("../img/file.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li i, div[tree-model] li span {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .selected {
|
||||||
|
background-color: #aaddff;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 1px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[tree-model] li .cut {
|
||||||
|
font-weight: bold;
|
||||||
|
color: gray
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
.angular-ui-tree-handle {
|
||||||
|
cursor: grab;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.angular-ui-tree-handle {
|
||||||
|
/* background: #f8faff; */
|
||||||
|
/*
|
||||||
|
color: #7c9eb2; */
|
||||||
|
border: 1px solid #dae2ea;
|
||||||
|
padding: 10px 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expanded-folder {
|
||||||
|
padding: 1px 10px;
|
||||||
|
background-image: url("../img/folder.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsed-folder {
|
||||||
|
padding: 1px 10px;
|
||||||
|
background-image: url("../img/folder-closed.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
common/resources/lib/angular/treeview/img/file.png
Normal file
After Width: | Height: | Size: 263 B |
BIN
common/resources/lib/angular/treeview/img/folder-closed.png
Normal file
After Width: | Height: | Size: 281 B |
BIN
common/resources/lib/angular/treeview/img/folder.png
Normal file
After Width: | Height: | Size: 289 B |
4116
common/resources/lib/angular/ui-bootstrap-tpls-0.11.0.js
Normal file
1
common/resources/lib/angular/version.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"raw":"v1.4.4","major":1,"minor":4,"patch":4,"prerelease":[],"build":[],"version":"1.4.4","codeName":"pylon-requirement","full":"1.4.4","branch":"v1.4.x","cdn":{"raw":"v1.4.3","major":1,"minor":4,"patch":3,"prerelease":[],"build":[],"version":"1.4.3","docsUrl":"http://code.angularjs.org/1.4.3/docs"}}
|
188
common/resources/lib/filesaver/FileSaver.js
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
/* FileSaver.js
|
||||||
|
* A saveAs() FileSaver implementation.
|
||||||
|
* 1.3.2
|
||||||
|
* 2016-06-16 18:25:19
|
||||||
|
*
|
||||||
|
* By Eli Grey, http://eligrey.com
|
||||||
|
* License: MIT
|
||||||
|
* See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*global self */
|
||||||
|
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
|
||||||
|
|
||||||
|
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
|
||||||
|
|
||||||
|
var saveAs = saveAs || (function(view) {
|
||||||
|
"use strict";
|
||||||
|
// IE <10 is explicitly unsupported
|
||||||
|
if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var
|
||||||
|
doc = view.document
|
||||||
|
// only get URL when necessary in case Blob.js hasn't overridden it yet
|
||||||
|
, get_URL = function() {
|
||||||
|
return view.URL || view.webkitURL || view;
|
||||||
|
}
|
||||||
|
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
|
||||||
|
, can_use_save_link = "download" in save_link
|
||||||
|
, click = function(node) {
|
||||||
|
var event = new MouseEvent("click");
|
||||||
|
node.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
|
||||||
|
, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
|
||||||
|
, throw_outside = function(ex) {
|
||||||
|
(view.setImmediate || view.setTimeout)(function() {
|
||||||
|
throw ex;
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
|
, force_saveable_type = "application/octet-stream"
|
||||||
|
// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
|
||||||
|
, arbitrary_revoke_timeout = 1000 * 40 // in ms
|
||||||
|
, revoke = function(file) {
|
||||||
|
var revoker = function() {
|
||||||
|
if (typeof file === "string") { // file is an object URL
|
||||||
|
get_URL().revokeObjectURL(file);
|
||||||
|
} else { // file is a File
|
||||||
|
file.remove();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
setTimeout(revoker, arbitrary_revoke_timeout);
|
||||||
|
}
|
||||||
|
, dispatch = function(filesaver, event_types, event) {
|
||||||
|
event_types = [].concat(event_types);
|
||||||
|
var i = event_types.length;
|
||||||
|
while (i--) {
|
||||||
|
var listener = filesaver["on" + event_types[i]];
|
||||||
|
if (typeof listener === "function") {
|
||||||
|
try {
|
||||||
|
listener.call(filesaver, event || filesaver);
|
||||||
|
} catch (ex) {
|
||||||
|
throw_outside(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, auto_bom = function(blob) {
|
||||||
|
// prepend BOM for UTF-8 XML and text/* types (including HTML)
|
||||||
|
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
|
||||||
|
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
|
||||||
|
return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
|
||||||
|
}
|
||||||
|
return blob;
|
||||||
|
}
|
||||||
|
, FileSaver = function(blob, name, no_auto_bom) {
|
||||||
|
if (!no_auto_bom) {
|
||||||
|
blob = auto_bom(blob);
|
||||||
|
}
|
||||||
|
// First try a.download, then web filesystem, then object URLs
|
||||||
|
var
|
||||||
|
filesaver = this
|
||||||
|
, type = blob.type
|
||||||
|
, force = type === force_saveable_type
|
||||||
|
, object_url
|
||||||
|
, dispatch_all = function() {
|
||||||
|
dispatch(filesaver, "writestart progress write writeend".split(" "));
|
||||||
|
}
|
||||||
|
// on any filesys errors revert to saving with object URLs
|
||||||
|
, fs_error = function() {
|
||||||
|
if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
|
||||||
|
// Safari doesn't allow downloading of blob urls
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onloadend = function() {
|
||||||
|
var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
|
||||||
|
var popup = view.open(url, '_blank');
|
||||||
|
if(!popup) view.location.href = url;
|
||||||
|
url=undefined; // release reference before dispatching
|
||||||
|
filesaver.readyState = filesaver.DONE;
|
||||||
|
dispatch_all();
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
filesaver.readyState = filesaver.INIT;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// don't create more object URLs than needed
|
||||||
|
if (!object_url) {
|
||||||
|
object_url = get_URL().createObjectURL(blob);
|
||||||
|
}
|
||||||
|
if (force) {
|
||||||
|
view.location.href = object_url;
|
||||||
|
} else {
|
||||||
|
var opened = view.open(object_url, "_blank");
|
||||||
|
if (!opened) {
|
||||||
|
// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
|
||||||
|
view.location.href = object_url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
filesaver.readyState = filesaver.DONE;
|
||||||
|
dispatch_all();
|
||||||
|
revoke(object_url);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
filesaver.readyState = filesaver.INIT;
|
||||||
|
|
||||||
|
if (can_use_save_link) {
|
||||||
|
object_url = get_URL().createObjectURL(blob);
|
||||||
|
setTimeout(function() {
|
||||||
|
save_link.href = object_url;
|
||||||
|
save_link.download = name;
|
||||||
|
click(save_link);
|
||||||
|
dispatch_all();
|
||||||
|
revoke(object_url);
|
||||||
|
filesaver.readyState = filesaver.DONE;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fs_error();
|
||||||
|
}
|
||||||
|
, FS_proto = FileSaver.prototype
|
||||||
|
, saveAs = function(blob, name, no_auto_bom) {
|
||||||
|
return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
// IE 10+ (native saveAs)
|
||||||
|
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
|
||||||
|
return function(blob, name, no_auto_bom) {
|
||||||
|
name = name || blob.name || "download";
|
||||||
|
|
||||||
|
if (!no_auto_bom) {
|
||||||
|
blob = auto_bom(blob);
|
||||||
|
}
|
||||||
|
return navigator.msSaveOrOpenBlob(blob, name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_proto.abort = function(){};
|
||||||
|
FS_proto.readyState = FS_proto.INIT = 0;
|
||||||
|
FS_proto.WRITING = 1;
|
||||||
|
FS_proto.DONE = 2;
|
||||||
|
|
||||||
|
FS_proto.error =
|
||||||
|
FS_proto.onwritestart =
|
||||||
|
FS_proto.onprogress =
|
||||||
|
FS_proto.onwrite =
|
||||||
|
FS_proto.onabort =
|
||||||
|
FS_proto.onerror =
|
||||||
|
FS_proto.onwriteend =
|
||||||
|
null;
|
||||||
|
|
||||||
|
return saveAs;
|
||||||
|
}(
|
||||||
|
typeof self !== "undefined" && self
|
||||||
|
|| typeof window !== "undefined" && window
|
||||||
|
|| this.content
|
||||||
|
));
|
||||||
|
// `self` is undefined in Firefox for Android content script context
|
||||||
|
// while `this` is nsIContentFrameMessageManager
|
||||||
|
// with an attribute `content` that corresponds to the window
|
||||||
|
|
||||||
|
if (typeof module !== "undefined" && module.exports) {
|
||||||
|
module.exports.saveAs = saveAs;
|
||||||
|
} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {
|
||||||
|
define("FileSaver.js", function() {
|
||||||
|
return saveAs;
|
||||||
|
});
|
||||||
|
}
|
72
common/resources/lib/fileupload/FileAPI.min.js
vendored
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/**!
|
||||||
|
* FileAPI — a set of tools for working with files
|
||||||
|
*
|
||||||
|
* @author RubaXa <trash@rubaxa.org>
|
||||||
|
* @build lib/canvas-to-blob lib/FileAPI.core lib/FileAPI.Image lib/FileAPI.Form lib/FileAPI.XHR lib/FileAPI.Flash
|
||||||
|
*/
|
||||||
|
(function(a){var k=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,g;if(g=a.Blob)try{g=Boolean(new Blob)}catch(j){g=!1}var m=g;if(g=m)if(g=a.Uint8Array)try{g=100===(new Blob([new Uint8Array(100)])).size}catch(f){g=!1}var c=g,e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,q=(m||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var l,f,u,g;l=0<=a.split(",")[0].indexOf("base64")?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]);f=new ArrayBuffer(l.length);u=new Uint8Array(f);
|
||||||
|
for(g=0;g<l.length;g+=1)u[g]=l.charCodeAt(g);a=a.split(",")[0].split(":")[1].split(";")[0];if(m)return new Blob([c?u:f],{type:a});u=new e;u.append(f);return u.getBlob(a)};a.HTMLCanvasElement&&!k.toBlob&&(k.mozGetAsFile?k.toBlob=function(a,c){a(this.mozGetAsFile("blob",c))}:k.toDataURL&&q&&(k.toBlob=function(a,c){a(q(this.toDataURL(c)))}));"function"===typeof define&&define.amd?define(function(){return q}):a.dataURLtoBlob=q})(this);
|
||||||
|
(function(a,k){function g(b,E,a){if(b)if(l(b))for(var d=0,c=b.length;d<c;d++)d in b&&E.call(a,b[d],d,b);else for(d in b)b.hasOwnProperty(d)&&E.call(a,b[d],d,b)}function j(b,d,a){if(b){var c=h.uid(b);D[c]||(D[c]={});g(d.split(/\s+/),function(d){n?n.event.add(b,d,a):(D[c][d]||(D[c][d]=[]),D[c][d].push(a),b.addEventListener?b.addEventListener(d,a,!1):b.attachEvent?b.attachEvent("on"+d,a):b["on"+d]=a)})}}function m(b,d,a){if(b){var c=h.uid(b),e=D[c]||{};g(d.split(/\s+/),function(d){if(n)n.event.remove(b,
|
||||||
|
d,a);else{for(var E=e[d]||[],c=E.length;c--;)if(E[c]===a){E.splice(c,1);break}b.addEventListener?b.removeEventListener(d,a,!1):b.detachEvent?b.detachEvent("on"+d,a):b["on"+d]=null}})}}function f(b,d,a){j(b,d,function P(c){m(b,d,P);a(c)})}function c(b,d,a,c,e){b={type:a.type||a,target:b,result:c};h.extend(b,e);d(b)}function e(b,d,a,e){if(h.isFile(b)&&p&&p.prototype["readAs"+a]){var n=new p;j(n,K,function Q(a){var e=a.type;"progress"==e?c(b,d,a,a.target.result,{loaded:a.loaded,total:a.total}):"loadend"==
|
||||||
|
e?(m(n,K,Q),n=null):c(b,d,a,a.target.result)});try{if(e)n["readAs"+a](e,b);else n["readAs"+a](b)}catch(l){c(b,d,"error",k,{error:l.toString()})}}else c(b,d,"error",k,{error:"filreader_not_support_"+a})}function q(b){var d;b.getAsEntry?d=b.getAsEntry():b.webkitGetAsEntry&&(d=b.webkitGetAsEntry());return d}function t(b,d){if(b)if(b.isFile)b.file(function(b){d(!1,[b])},function(){d("entry_file")});else if(b.isDirectory){var a=[];b.createReader().readEntries(function(b){h.afor(b,function(b,c){t(c,function(c,
|
||||||
|
e){c||(a=a.concat(e));b?b():d(!1,a)})})},function(){d("directory_reader")})}else t(q(b),d);else d("empty_entry")}function l(b){return"object"==typeof b&&b&&"length"in b}function A(b){b.target||(b.target=a.event&&a.event.srcElement||M);3===b.target.nodeType&&(b.target=event.target.parentNode);return b}var u=1,C=function(){},s=navigator.userAgent,y=a.createObjectURL&&a||a.URL&&URL.revokeObjectURL&&URL||a.webkitURL&&webkitURL,r=a.Blob,v=a.File,p=a.FileReader,w=a.FormData,d=a.XMLHttpRequest,n=a.jQuery,
|
||||||
|
x=!(!v||!p||!a.Uint8Array&&!w&&!d.prototype.sendAsBinary)&&!(/safari\//i.test(s)&&!/chrome\//i.test(s)&&/windows/i.test(s)),s=x&&"withCredentials"in new d,r=x&&!!r&&!(!r.prototype.webkitSlice&&!r.prototype.mozSlice&&!r.prototype.slice),M=a.document,F=a.dataURLtoBlob,T=/img/i,U=/canvas/i,V=/img|canvas/,L=/input/i,I=/^data:[^,]+,/,G=Math.pow,W=Math.round,z=Number,w=function(b){return W(b*this)},H=new z(1024),N=new z(G(H,2)),J=new z(G(H,3)),G=new z(G(H,4)),D={},O=[],K="abort progress error load loadend",
|
||||||
|
X="status statusText readyState response responseXML responseText responseBody".split(" "),h={version:"1.2.5",cors:!1,html5:!0,debug:!1,pingUrl:!1,withCredentials:!0,staticPath:"./",flashUrl:0,flashImageUrl:0,accept:{"image/*":"art bm bmp dwg dxf cbr cbz fif fpx gif ico iefs jfif jpe jpeg jpg jps jut mcf nap nif pbm pcx pgm pict pm png pnm qif qtif ras rast rf rp svf tga tif tiff xbm xbm xpm xwd","audio/*":"m4a flac aac rm mpa wav wma ogg mp3 mp2 m3u mod amf dmf dsm far gdm imf it m15 med okt s3m stm sfx ult uni xm sid ac3 dts cue aif aiff wpl ape mac mpc mpp shn wv nsf spc gym adplug adx dsp adp ymf ast afc hps xs",
|
||||||
|
"video/*":"m4v 3gp nsv ts ty strm rm rmvb m3u ifo mov qt divx xvid bivx vob nrg img iso pva wmv asf asx ogm m2v avi bin dat dvr-ms mpg mpeg mp4 mkv avc vp3 svq3 nuv viv dv fli flv wpl"},chunkSize:0,chunkUploadRetry:0,chunkNetworkDownRetryTimeout:2E3,KB:(H.from=w,H),MB:(N.from=w,N),GB:(J.from=w,J),TB:(G.from=w,G),expando:"fileapi"+(new Date).getTime(),uid:function(b){return b?b[h.expando]=b[h.expando]||h.uid():(++u,h.expando+u)},log:function(){h.debug&&(a.console&&console.log)&&(console.log.apply?
|
||||||
|
console.log.apply(console,arguments):console.log([].join.call(arguments," ")))},getXHR:function(){var b;if(d)b=new d;else if(a.ActiveXObject)try{b=new ActiveXObject("MSXML2.XMLHttp.3.0")}catch(c){b=new ActiveXObject("Microsoft.XMLHTTP")}return b},isArray:l,support:{dnd:s&&"ondrop"in M.createElement("div"),cors:s,html5:x,chunked:r,dataURI:!0},event:{on:j,off:m,one:f,fix:A},throttle:function(b,d){var c,e;return function(){e=arguments;c||(b.apply(a,e),c=setTimeout(function(){c=0;b.apply(a,e)},d))}},
|
||||||
|
F:function(){},parseJSON:function(b){return a.JSON&&JSON.parse?JSON.parse(b):(new Function("return ("+b.replace(/([\r\n])/g,"\\$1")+");"))()},trim:function(b){b=String(b);return b.trim?b.trim():b.replace(/^\s+|\s+$/g,"")},defer:function(){var b=[],d,a,c={resolve:function(e,n){c.resolve=C;a=e||!1;for(d=n;n=b.shift();)n(a,d)},then:function(c){a!==k?c(a,d):b.push(c)}};return c},queue:function(b){var d=0,a=0,c=!1,e=!1,n={inc:function(){a++},next:function(){d++;setTimeout(n.check,0)},check:function(){d>=
|
||||||
|
a&&!c&&n.end()},isFail:function(){return c},fail:function(){!c&&b(c=!0)},end:function(){e||(e=!0,b())}};return n},each:g,afor:function(b,d){var a=0,c=b.length;l(b)&&c--?function B(){d(c!=a&&B,b[a],a++)}():d(!1)},extend:function(b){g(arguments,function(d){g(d,function(d,a){b[a]=d})});return b},isFile:function(b){return x&&b&&b instanceof v},isCanvas:function(b){return b&&U.test(b.nodeName)},getFilesFilter:function(b){return(b="string"==typeof b?b:b.getAttribute&&b.getAttribute("accept")||"")?RegExp("("+
|
||||||
|
b.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(b,d){h.isCanvas(b)?c(b,d,"load",h.toDataURL(b)):e(b,d,"DataURL")},readAsBinaryString:function(b,d){p&&p.prototype.readAsBinaryString?e(b,d,"BinaryString"):e(b,function(b){if("load"==b.type)try{b.result=h.toBinaryString(b.result)}catch(a){b.type="error",b.message=a.toString()}d(b)},"DataURL")},readAsArrayBuffer:function(b,d){e(b,d,"ArrayBuffer")},readAsText:function(b,d,a){a||(a=d,d="utf-8");e(b,a,"Text",d)},toDataURL:function(b){if("string"==
|
||||||
|
typeof b)return b;if(b.toDataURL)return b.toDataURL("image/png")},toBinaryString:function(b){return a.atob(h.toDataURL(b).replace(I,""))},readAsImage:function(b,d,a){if(h.isFile(b))if(y){var e=y.createObjectURL(b);e===k?c(b,d,"error"):h.readAsImage(e,d,a)}else h.readAsDataURL(b,function(e){"load"==e.type?h.readAsImage(e.result,d,a):(a||"error"==e.type)&&c(b,d,e,null,{loaded:e.loaded,total:e.total})});else h.isCanvas(b)?c(b,d,"load",b):T.test(b.nodeName)?b.complete?c(b,d,"load",b):f(b,"error abort load",
|
||||||
|
function B(a){"load"==a.type&&y&&y.revokeObjectURL(b.src);m(b,"error abort load",B);c(b,d,a,b)}):b.iframe?c(b,d,{type:"error"}):(e=new Image,e.src=b.dataURL||b,h.readAsImage(e,d,a))},checkFileObj:function(b){var d={},a=h.accept;"object"==typeof b?d=b:d.name=(b+"").split(/\\|\//g).pop();null==d.type&&(d.type=d.name.split(".").pop());g(a,function(b,a){b=RegExp(b.replace(/\s/g,"|"),"i");b.test(d.type)&&(d.type=a.split("/")[0]+"/"+d.type)});return d},getDropFiles:function(b,d){var a=[],c=(b.originalEvent||
|
||||||
|
b||"").dataTransfer||{},e=l(c.items)&&c.items[0]&&q(c.items[0]),n=h.queue(function(){d(a)});g((e?c.items:c.files)||[],function(b){n.inc();if(e)t(b,function(b,d){!b&&a.push.apply(a,d);n.next()});else{var d=function(d){d&&a.push(b);n.next()};if(!b.type&&0==b.size%4096&&102400>=b.size)if(p)try{var c=new p;f(c,K,function(b){b="error"!=b.type;d(b);b&&c.abort()});c.readAsDataURL(b)}catch(l){d(!1)}else d(null);else d(!0)}});n.check()},getFiles:function(b,d,a){var c=[];if(a)return h.filterFiles(h.getFiles(b),
|
||||||
|
d,a),null;b.jquery&&(b.each(function(){c=c.concat(h.getFiles(this))}),b=c,c=[]);"string"==typeof d&&(d=h.getFilesFilter(d));b.originalEvent?b=A(b.originalEvent):b.srcElement&&(b=A(b));b.dataTransfer?b=b.dataTransfer:b.target&&(b=b.target);b.files?c=b.files:!x&&L.test(b&&b.tagName)?h.trim(b.value)&&(c=[h.checkFileObj(b.value)],c[0].blob=b,c[0].iframe=!0):l(b)&&(c=b);return h.filter(c,function(b){return!d||d.test(b.name)})},getInfo:function(b,d){var a={},c=O.concat();h.isFile(b)?function B(){var e=
|
||||||
|
c.shift();e?e.test(b.type)?e(b,function(b,c){b?d(b):(h.extend(a,c),B())}):B():d(!1,a)}():d("not_support",a)},addInfoReader:function(b,d){d.test=function(d){return b.test(d)};O.push(d)},filter:function(b,d){for(var a=[],c=0,e=b.length,n;c<e;c++)c in b&&(n=b[c],d.call(n,n,c,b)&&a.push(n));return a},filterFiles:function(b,d,a){if(b.length){var c=b.concat(),e,n=[],l=[];(function R(){c.length?(e=c.shift(),h.getInfo(e,function(b,a){(d(e,b?!1:a)?n:l).push(e);R()})):a(n,l)})()}else a([],b)},upload:function(b){b=
|
||||||
|
h.extend({prepare:h.F,beforeupload:h.F,upload:h.F,fileupload:h.F,fileprogress:h.F,filecomplete:h.F,progress:h.F,complete:h.F,pause:h.F,chunkSize:h.chunkSize,chunkUpoloadRetry:h.chunkUploadRetry},b);b.imageAutoOrientation&&!b.imageTransform&&(b.imageTransform={rotate:"auto"});var d=new h.XHR(b),a=this._getFilesDataArray(b.files),c=0,e=0,n=this,l,f=!1;g(a,function(b){c+=b.size});d.files=[];g(a,function(b){d.files.push(b.file)});d.total=c;d.loaded=0;b.beforeupload(d,b);(l=function S(){var l=a.shift(),
|
||||||
|
t=l&&l.file,x=!1,u={};g(b,function(b,d){b&&"object"===typeof b&&(b=h.extend({},b));u[d]=b});t&&t.name===h.expando&&(t=null,h.log("[warn] FileAPI.upload() \u2014 called without files"));("abort"!=d.statusText||d.current)&&l?(f=!1,(d.currentFile=t)&&b.prepare(t,u),this._getFormData(u,l,function(a){e||b.upload(d,b);var f=new h.XHR(h.extend({},u,{upload:t?function(){b.fileupload(t,f,u)}:C,progress:t?function(a){x||(b.fileprogress({type:"progress",total:l.total=a.total,loaded:l.loaded=a.loaded},t,f,u),
|
||||||
|
b.progress({type:"progress",total:c,loaded:d.loaded=e+l.size*(a.loaded/a.total)|0},t,f,u))}:C,complete:function(a){x=!0;g(X,function(b){d[b]=f[b]});t&&(l.loaded=l.total,this.progress(l),e+=l.size,d.loaded=e,b.filecomplete(a,f,t,u));S.call(n)}}));d.abort=function(b){this.current=b;f.abort()};f.send(a)})):(b.complete(200==d.status||201==d.status?!1:d.statusText||"error",d,b),f=!0)}).call(this);d.append=function(b,e){b=h._getFilesDataArray([].concat(b));g(b,function(b){c+=b.size;d.files.push(b.file);
|
||||||
|
e?a.unshift(b):a.push(b)});f&&l.call(n)};d.remove=function(b){var d=-1;g(a,function(c){d++;if(c.file==b)return a.splice(d,1)})};return d},_getFilesDataArray:function(b){var d=[],a={};if(L.test(b&&b.tagName)){var c=h.getFiles(b);a[b.name||"file"]=null!==b.getAttribute("multiple")?c:c[0]}else l(b)&&L.test(b[0]&&b[0].tagName)?g(b,function(b){a[b.name||"file"]=h.getFiles(b)}):a=b;g(a,function B(b,a){l(b)?g(b,function(b){B(b,a)}):b&&b.name&&d.push({name:a,file:b,size:b.size,total:b.size,loaded:0})});d.length||
|
||||||
|
d.push({file:{name:h.expando}});return d},_getFormData:function(b,d,a){var c=d.file,e=d.name,n=c.name,l=c.type;d=h.support.transform&&b.imageTransform;var f=new h.Form,t=h.queue(function(){a(f)}),x=d&&(0<parseInt(d.maxWidth||d.minWidth||d.width,10)||d.rotate);h.Image&&d&&(/image/.test(c.type)||V.test(c.nodeType))?(t.inc(),x&&(d=[d]),h.Image.transform(c,d,b.imageAutoOrientation,function(d,a){x&&!d?(!F&&!h.flashEngine&&(a[0]=h.toBinaryString(a[0]),f.multipart=!0),f.append(e,a[0],n,l)):(d||(g(a,function(b,
|
||||||
|
d){!F&&!h.flashEngine&&(b=h.toBinaryString(b),f.multipart=!0);f.append(e+"["+d+"]",b,n,l)}),e+="[original]"),(d||b.imageOriginal)&&f.append(e,c,n,l));t.next()})):n!==h.expando&&f.append(e,c,n);g(b.data,function Y(b,d){"object"==typeof b?g(b,function(b,a){Y(b,d+"["+a+"]")}):f.append(d,b)});t.check()},reset:function(b){var d,a;n?(a=n(b).clone(!0).insertBefore(b).val("")[0],n(b).remove()):(d=b.parentNode,a=d.insertBefore(b.cloneNode(!0),b),a.value="",d.removeChild(b),g(D[h.uid(b)],function(d,c){g(d,
|
||||||
|
function(d){m(b,c,d);j(a,c,d)})}));return a},load:function(b,d){var a=h.getXHR();a?(a.open("GET",b,!0),a.overrideMimeType&&a.overrideMimeType("text/plain; charset=x-user-defined"),j(a,"progress",function(b){b.lengthComputable&&d({type:b.type,loaded:b.loaded,total:b.total},a)}),a.onreadystatechange=function(){if(4==a.readyState)if(a.onreadystatechange=null,200==a.status){b=b.split("/");var c={name:b[b.length-1],size:a.getResponseHeader("Content-Length"),type:a.getResponseHeader("Content-Type")};c.dataURL=
|
||||||
|
"data:"+c.type+";base64,"+h.encode64(a.responseBody||a.responseText);d({type:"load",result:c})}else d({type:"error"})},a.send(null)):d({type:"error"});return a},encode64:function(b){var d="",a=0;for("string"!==typeof b&&(b=String(b));a<b.length;){var c=b.charCodeAt(a++)&255,e=b.charCodeAt(a++)&255,n=b.charCodeAt(a++)&255,l=c>>2,c=(c&3)<<4|e>>4;isNaN(e)?e=n=64:(e=(e&15)<<2|n>>6,n=isNaN(n)?64:n&63);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(l)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(c)+
|
||||||
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(n)}return d}};h.addInfoReader(/^image/,function(b,d){if(!b.__dimensions){var a=b.__dimensions=h.defer();h.readAsImage(b,function(b){var d=b.target;a.resolve("load"==b.type?!1:"error",{width:d.width,height:d.height})})}b.__dimensions.then(d)});h.event.dnd=function(b,d,a){var c,e;a||(a=d,d=h.F);p?(j(b,"dragenter dragleave dragover",function(b){for(var a=
|
||||||
|
((b.originalEvent||b||"").dataTransfer||{}).types,n=a&&a.length;n--;)~a[n].indexOf("File")&&(b.preventDefault(),e!==b.type&&(e=b.type,"dragleave"!=e&&d.call(b.currentTarget,!0,b),clearTimeout(c),c=setTimeout(function(){d.call(b.currentTarget,"dragleave"!=e,b)},50)))}),j(b,"drop",function(b){b.preventDefault();e=0;d.call(b.currentTarget,!1,b);h.getDropFiles(b,function(d){a.call(b.currentTarget,d,b)})})):h.log("Drag'n'Drop -- not supported")};n&&!n.fn.dnd&&(n.fn.dnd=function(b,d){return this.each(function(){h.event.dnd(this,
|
||||||
|
b,d)})});a.FileAPI=h.extend(h,a.FileAPI);h.flashUrl||(h.flashUrl=h.staticPath+"FileAPI.flash.swf");h.flashImageUrl||(h.flashImageUrl=h.staticPath+"FileAPI.flash.image.swf")})(window);
|
||||||
|
(function(a,k,g){function j(a,c){if(!(this instanceof j))return new j(a);this.file=a;this.better=!c;this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0}}var m=Math.min,f=Math.round,c=!1,e={8:270,3:180,6:90};try{c=-1<k.createElement("canvas").toDataURL("image/png").indexOf("data:image/png")}catch(q){}j.prototype={constructor:j,set:function(c){a.extend(this.matrix,c);return this},crop:function(a,c,e,f){e===g&&(e=a,f=c,a=c=0);return this.set({sx:a,sy:c,sw:e,sh:f||e})},resize:function(a,
|
||||||
|
c,e){"string"==typeof c&&(e=c,c=a);return this.set({dw:a,dh:c,resize:e})},preview:function(a,c){return this.set({dw:a,dh:c||a,resize:"preview"})},rotate:function(a){return this.set({deg:a})},_load:function(c,e){var f=this;a.readAsImage(c,function(a){e.call(f,"load"!=a.type,a.result)})},_apply:function(a,c){var e=k.createElement("canvas"),f=this.getMatrix(a),g=e.getContext("2d"),m=f.deg,q=f.dw,r=f.dh,v=a.width,p=a.height,j,d=a;if(this.better)for(;2<Math.min(v/q,p/r);)v=~~(v/2+0.5),p=~~(p/2+0.5),j=
|
||||||
|
k.createElement("canvas"),j.width=v,j.height=p,d!==a?(j.getContext("2d").drawImage(d,0,0,d.width,d.height,0,0,v,p),d=j):(d=j,d.getContext("2d").drawImage(a,f.sx,f.sy,f.sw,f.sh,0,0,v,p),f.sx=f.sy=f.sw=f.sh=0);e.width=!(m%180)?q:r;e.height=m%180?q:r;g.rotate(m*Math.PI/180);g.drawImage(d,f.sx,f.sy,f.sw||d.width,f.sh||d.height,180==m||270==m?-q:0,90==m||180==m?-r:0,q,r);c.call(this,!1,e)},getMatrix:function(c){var e=a.extend({},this.matrix),g=e.sw=e.sw||c.width;c=e.sh=e.sh||c.height;var q=e.dw=e.dw||
|
||||||
|
e.sw,k=e.dh=e.dh||e.sh,s=g/c,j=q/k,r=e.resize;if("preview"==r){if(q!=g||k!=c)if(j>=s?(s=g,r=s/j):(r=c,s=r*j),s!=g||r!=c)e.sx=~~((g-s)/2),e.sy=~~((c-r)/2),g=s,c=r}else r&&("min"==r?(q=f(s<j?m(g,q):k*s),k=f(s<j?q/s:m(c,k))):(q=f(s>=j?m(g,q):k*s),k=f(s>=j?q/s:m(c,k))));e.sw=g;e.sh=c;e.dw=q;e.dh=k;return e},_trans:function(a){this._load(this.file,function(c,e){c?a(c):this._apply(e,a)})},get:function(c){if(a.support.transform){var f=this;"auto"==f.matrix.deg?a.getInfo(this.file,function(a,g){f.matrix.deg=
|
||||||
|
e[g&&g.exif&&g.exif.Orientation]||0;f._trans(c)}):f._trans(c)}else c("not_support")},toData:function(a){this.get(a)}};j.exifOrientation=e;j.transform=function(c,e,f,q){a.getInfo(c,function(m,k){var y={},r=a.queue(function(a){q(a,y)});m?r.fail():a.each(e,function(a,e){if(!r.isFail()){var l=j(k.nodeType?k:c);if("function"==typeof a)a(k,l);else if(a.width)l[a.preview?"preview":"resize"](a.width,a.height,a.type);else a.maxWidth&&(k.width>a.maxWidth||k.height>a.maxHeight)&&l.resize(a.maxWidth,a.maxHeight,
|
||||||
|
"max");a.rotate===g&&f&&(a.rotate="auto");l.rotate(a.rotate);r.inc();l.toData(function(d,a){d?r.fail():(y[e]=a,r.next())})}})})};a.support.canvas=a.support.transform=c;a.Image=j})(FileAPI,document);
|
||||||
|
(function(a,k,g){var j=k.encodeURIComponent,m=k.FormData;k=function(){this.items=[]};k.prototype={append:function(a,c,e,g){this.items.push({name:a,blob:c&&c.blob||(void 0==c?"":c),file:c&&(e||c.name),type:c&&(g||c.type)})},each:function(a){for(var c=0,e=this.items.length;c<e;c++)a.call(this,this.items[c])},toData:function(f,c){c._chunked=a.support.chunked&&0<c.chunkSize&&1==a.filter(this.items,function(a){return a.file}).length;a.support.html5?this.multipart||!m?(a.log("FileAPI.Form.toMultipartData"),
|
||||||
|
this.toMultipartData(f)):c._chunked?(a.log("FileAPI.Form.toPlainData"),this.toPlainData(f)):(a.log("FileAPI.Form.toFormData"),this.toFormData(f)):(a.log("FileAPI.Form.toHtmlData"),this.toHtmlData(f))},_to:function(f,c,e,g){var m=a.queue(function(){c(f)});this.each(function(a){e(a,f,m,g)});m.check()},toHtmlData:function(f){this._to(g.createDocumentFragment(),f,function(c,e){var f=c.blob,m;c.file?(a.reset(f),f.name=c.name,e.appendChild(f)):(m=g.createElement("input"),m.name=c.name,m.type="hidden",m.value=
|
||||||
|
f,e.appendChild(m))})},toPlainData:function(a){this._to({},a,function(a,e,f){a.file&&(e.type=a.file);a.blob.toBlob?(f.inc(),a.blob.toBlob(function(g){e.name=a.name;e.file=g;e.size=g.length;e.type=a.type;f.next()},"image/png")):a.file?(e.name=a.blob.name,e.file=a.blob,e.size=a.blob.size,e.type=a.type):(e.params||(e.params=[]),e.params.push(encodeURIComponent(a.name)+"="+encodeURIComponent(a.blob)));e.start=-1;e.end=e.file.FileAPIReadPosition||-1;e.retry=0})},toFormData:function(a){this._to(new m,a,
|
||||||
|
function(a,e,f){a.file&&e.append("_"+a.name,a.file);a.blob&&a.blob.toBlob?(f.inc(),a.blob.toBlob(function(g){e.append(a.name,g,a.file);f.next()},"image/png")):a.file?e.append(a.name,a.blob,a.file):e.append(a.name,a.blob)})},toMultipartData:function(f){this._to([],f,function(c,e,f,g){var l=!!c.file,m=c.blob,k=function(a){e.push("--_"+g+('\r\nContent-Disposition: form-data; name="'+c.name+'"'+(l?'; filename="'+j(c.file)+'"':"")+(l?"\r\nContent-Type: "+(c.type||"application/octet-stream"):"")+"\r\n\r\n"+
|
||||||
|
(l?a:j(a))+"\r\n"));f.next()};f.inc();a.isFile(m)?a.readAsBinaryString(m,function(a){"load"==a.type&&k(a.result)}):k(m)},a.expando)}};a.Form=k})(FileAPI,window,document);
|
||||||
|
(function(a,k){var g=function(){},j=function(a){this.uid=k.uid();this.xhr={abort:g,getResponseHeader:g,getAllResponseHeaders:g};this.options=a};j.prototype={status:0,statusText:"",getResponseHeader:function(a){return this.xhr.getResponseHeader(a)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(m,f){var c=this,e=c.options;c.end=c.abort=g;c.status=m;f&&(c.statusText=f);k.log("xhr.end:",m,f);e.complete(200==m||201==m?!1:c.statusText||"unknown",c);c.xhr&&c.xhr.node&&
|
||||||
|
setTimeout(function(){var e=c.xhr.node;try{e.parentNode.removeChild(e)}catch(f){}try{delete a[c.uid]}catch(g){}a[c.uid]=c.xhr.node=null},9)},abort:function(){this.end(0,"abort");this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(a){var f=this,c=this.options;a.toData(function(a){c.upload(c,f);f._send.call(f,c,a)},c)},_send:function(g,f){var c=this,e,q=c.uid,j=g.url;k.log("XHR._send:",f);j+=(~j.indexOf("?")?"&":"?")+k.uid();f.nodeName?(g.upload(g,c),e=document.createElement("div"),e.innerHTML=
|
||||||
|
'<form target="'+q+'" action="'+j+'" method="POST" enctype="multipart/form-data" style="position: absolute; top: -1000px; overflow: hidden; width: 1px; height: 1px;"><iframe name="'+q+'" src="javascript:false;"></iframe><input value="'+q+'" name="callback" type="hidden"/></form>',c.xhr.abort=function(){var a=e.getElementsByName("iframe")[0];if(a)try{a.stop?a.stop():a.contentWindow.stop?a.contentWindow.stop():a.contentWindow.document.execCommand("Stop")}catch(c){}e=null},j=e.getElementsByTagName("form")[0],
|
||||||
|
j.appendChild(f),k.log(j.parentNode.innerHTML),document.body.appendChild(e),c.xhr.node=e,a[q]=function(a,f,g){c.readyState=4;c.responseText=g;c.end(a,f);e=null},c.readyState=2,j.submit(),j=null):this.xhr&&this.xhr.aborted?k.log("Error: already aborted"):(e=c.xhr=k.getXHR(),f.params&&(j+=(0>j.indexOf("?")?"?":"&")+f.params.join("&")),e.open("POST",j,!0),k.withCredentials&&(e.withCredentials="true"),(!g.headers||!g.headers["X-Requested-With"])&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),
|
||||||
|
k.each(g.headers,function(a,c){e.setRequestHeader(c,a)}),g._chunked?(e.upload&&e.upload.addEventListener("progress",function(a){f.retry||g.progress({type:a.type,total:f.size,loaded:f.start+a.loaded,totalSize:f.size},c,g)},!1),e.onreadystatechange=function(){c.status=e.status;c.statusText=e.statusText;c.readyState=e.readyState;if(4==e.readyState){for(var a in{"":1,XML:1,Text:1,Body:1})c["response"+a]=e["response"+a];e.onreadystatechange=null;if(!e.status||0<e.status-201)if(k.log("Error: "+e.status),
|
||||||
|
(!e.status&&!e.aborted||500==e.status||416==e.status)&&++f.retry<=g.chunkUploadRetry){a=e.status?0:k.chunkNetworkDownRetryTimeout;g.pause(f.file,g);var j=parseInt(e.getResponseHeader("X-Last-Known-Byte"),10);k.log("X-Last-Known-Byte: "+j);f.end=j?j:f.start-1;setTimeout(function(){c._send(g,f)},a)}else c.end(e.status);else f.retry=0,f.end==f.size-1?c.end(e.status):(j=parseInt(e.getResponseHeader("X-Last-Known-Byte"),10),k.log("X-Last-Known-Byte: "+j),j&&(f.end=j),f.file.FileAPIReadPosition=f.end,setTimeout(function(){c._send(g,
|
||||||
|
f)},0));e=null}},f.start=f.end+1,f.end=Math.max(Math.min(f.start+g.chunkSize,f.size)-1,f.start),(q="slice")in f.file||(q="mozSlice")in f.file||(q="webkitSlice"),e.setRequestHeader("Content-Range","bytes "+f.start+"-"+f.end+"/"+f.size),e.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(f.name)),e.setRequestHeader("Content-Type",f.type||"application/octet-stream"),q=f.file[q](f.start,f.end+1),e.send(q),q=null):(e.upload&&e.upload.addEventListener("progress",k.throttle(function(a){g.progress(a,
|
||||||
|
c,g)},100),!1),e.onreadystatechange=function(){c.status=e.status;c.statusText=e.statusText;c.readyState=e.readyState;if(4==e.readyState){for(var a in{"":1,XML:1,Text:1,Body:1})c["response"+a]=e["response"+a];e.onreadystatechange=null;c.end(e.status);e=null}},k.isArray(f)?(e.setRequestHeader("Content-Type","multipart/form-data; boundary=_"+k.expando),f=f.join("")+"--_"+k.expando+"--",e.sendAsBinary?e.sendAsBinary(f):(q=Array.prototype.map.call(f,function(a){return a.charCodeAt(0)&255}),e.send((new Uint8Array(q)).buffer))):
|
||||||
|
e.send(f)))}};k.XHR=j})(window,FileAPI);
|
||||||
|
(function(a,k,g){var j=a.support,m=k.navigator,f=m.mimeTypes,c=!1;if(m.plugins&&"object"==typeof m.plugins["Shockwave Flash"])c=m.plugins["Shockwave Flash"].description&&!(f&&f["application/x-shockwave-flash"]&&!f["application/x-shockwave-flash"].enabledPlugin);else try{c=!(!k.ActiveXObject||!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(e){a.log("ShockwaveFlash.ShockwaveFlash -- does not supported.")}j.flash=c;if(a.support.flash&&(!a.html5||!a.support.html5||a.cors&&!a.support.cors)){var q=
|
||||||
|
function(a){return('<object id="#id#" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+(a.width||"100%")+'" height="'+(a.height||"100%")+'"><param name="movie" value="#src#" /><param name="flashvars" value="#flashvars#" /><param name="swliveconnect" value="true" /><param name="allowscriptaccess" value="always" /><param name="allownetworking" value="all" /><param name="menu" value="false" /><param name="wmode" value="#wmode#" /><embed flashvars="#flashvars#" swliveconnect="true" allownetworking="all" allowscriptaccess="always" name="#id#" src="#src#" width="'+
|
||||||
|
(a.width||"100%")+'" height="'+(a.height||"100%")+'" menu="false" wmode="transparent" type="application/x-shockwave-flash"></embed></object>').replace(/#(\w+)#/ig,function(c,e){return a[e]})},t=function(a,c){if(a&&a.style){var e,f;for(e in c){f=c[e];"number"==typeof f&&(f+="px");try{a.style[e]=f}catch(g){}}}},l=function(d,c){a.each(c,function(a,c){var e=d[c];d[c]=function(){this.parent=e;return a.apply(this,arguments)}})},A=function(d){var c=d.wid=a.uid();p._fn[c]=d;return"FileAPI.Flash._fn."+c},
|
||||||
|
u=function(a){try{p._fn[a.wid]=null,delete p._fn[a.wid]}catch(c){}},C=function(a,c){if(!v.test(a)){if(/^\.\//.test(a)||"/"!=a.charAt(0)){var e=location.pathname,e=e.substr(0,e.lastIndexOf("/"));a=(e+"/"+a).replace("/./","/")}"//"!=a.substr(0,2)&&(a="//"+location.host+a);v.test(a)||(a=location.protocol+a)}c&&(a+=(/\?/.test(a)?"&":"?")+c);return a},s=a.uid(),y=0,r={},v=/^https?:/i,p={_fn:{},init:function(){var d=g.body&&g.body.firstChild;if(d){do if(1==d.nodeType){a.log("FlashAPI.Flash.init...");var c=
|
||||||
|
g.createElement("div");t(c,{top:1,right:1,width:5,height:5,position:"absolute"});d.parentNode.insertBefore(c,d);p.publish(c,s);return}while(d=d.nextSibling)}10>y&&setTimeout(p.init,50*++y)},publish:function(d,c){d.innerHTML=q({id:c,src:C(a.flashUrl,"r="+a.version),wmode:"transparent",flashvars:"callback=FileAPI.Flash.event&flashId="+c+"&storeKey="+navigator.userAgent.match(/\d/ig).join("")+"_"+a.version+(p.isReady||(a.pingUrl?"&ping="+a.pingUrl:""))})},ready:function(){p.ready=a.F;p.isReady=!0;p.patch();
|
||||||
|
a.event.on(g,"mouseover",p.mouseover);a.event.on(g,"click",function(a){p.mouseover(a)&&(a.preventDefault?a.preventDefault():a.returnValue=!0)})},getWrapper:function(a){do if(/js-fileapi-wrapper/.test(a.className))return a;while((a=a.parentNode)&&a!==g.body)},mouseover:function(d){d=a.event.fix(d).target;if(/input/i.test(d.nodeName)&&"file"==d.type){var c=d.getAttribute(s);if("i"==c||"r"==c)return!1;if("p"!=c){d.setAttribute(s,"i");var c=g.createElement("div"),e=p.getWrapper(d);if(!e){a.log("flash.mouseover.error: js-fileapi-wrapper not found");
|
||||||
|
return}t(c,{top:0,left:0,width:d.offsetWidth+100,height:d.offsetHeight+100,zIndex:"1000000",position:"absolute"});e.appendChild(c);p.publish(c,a.uid());d.setAttribute(s,"p")}return!0}},event:function(d){var c=d.type;if("ready"==c){try{p.getInput(d.flashId).setAttribute(s,"r")}catch(e){}p.ready();setTimeout(function(){p.mouseenter(d)},50);return!0}"ping"===c?a.log("(flash -> js).ping:",[d.status,d.savedStatus],d.error):"log"===c?a.log("(flash -> js).log:",d.target):c in p&&setTimeout(function(){a.log("Flash.event."+
|
||||||
|
d.type+":",d);p[c](d)},1)},mouseenter:function(d){var c=p.getInput(d.flashId);if(c){p.cmd(d,"multiple",null!=c.getAttribute("multiple"));var e=[],f={};a.each((c.getAttribute("accept")||"").split(/,\s*/),function(d){a.accept[d]&&a.each(a.accept[d].split(" "),function(a){f[a]=1})});a.each(f,function(a,d){e.push(d)});p.cmd(d,"accept",e.length?e.join(",")+","+e.join(",").toUpperCase():"*")}},get:function(a){return g[a]||k[a]||g.embeds[a]},getInput:function(d){try{var c=p.getWrapper(p.get(d));if(c)return c.getElementsByTagName("input")[0]}catch(e){a.log('Can not find "input" by flashId:',
|
||||||
|
d,e)}},select:function(d){var c=p.getInput(d.flashId),e=a.uid(c);d=d.target.files;a.each(d,function(d){a.checkFileObj(d)});r[e]=d;g.createEvent?(e=g.createEvent("Event"),e.initEvent("change",!0,!1),c.dispatchEvent(e)):g.createEventObject&&(e=g.createEventObject(),c.fireEvent("onchange",e))},cmd:function(d,c,e,f){try{return a.log("(js -> flash)."+c+":",e),p.get(d.flashId||d).cmd(c,e)}catch(g){a.log("(js -> flash).onError:",g),f||setTimeout(function(){p.cmd(d,c,e,!0)},50)}},patch:function(){a.flashEngine=
|
||||||
|
a.support.transform=!0;l(a,{getFiles:function(d,c,e){if(e)return a.filterFiles(a.getFiles(d),c,e),null;var f=a.isArray(d)?d:r[a.uid(d.target||d.srcElement||d)];if(!f)return this.parent.apply(this,arguments);c&&(c=a.getFilesFilter(c),f=a.filter(f,function(a){return c.test(a.name)}));return f},getInfo:function(d,c){if(d&&!d.flashId)this.parent.apply(this,arguments);else{if(!d.__info){var e=d.__info=a.defer();p.cmd(d,"getFileInfo",{id:d.id,callback:A(function F(a,c){u(F);e.resolve(a,d.info=c)})})}d.__info.then(c)}}});
|
||||||
|
a.support.transform=!0;a.Image&&l(a.Image.prototype,{get:function(a,c){this.set({scaleMode:c||"noScale"});this.parent(a)},_load:function(d,c){a.log("FileAPI.Image._load:",d);if(d&&!d.flashId)this.parent.apply(this,arguments);else{var e=this;a.getInfo(d,function(a){c.call(e,a,d)})}},_apply:function(d,c){a.log("FileAPI.Image._apply:",d);if(d&&!d.flashId)this.parent.apply(this,arguments);else{var e=this.getMatrix(d.info);p.cmd(d,"imageTransform",{id:d.id,matrix:e,callback:A(function F(f,k){a.log("FileAPI.Image._apply.callback:",
|
||||||
|
f);u(F);if(f)c(f);else if(!a.support.dataURI||3E4<k.length){var j={width:!(e.deg%180)?e.dw:e.dh,height:e.deg%180?e.dw:e.dh,scale:e.scaleMode},l=c,m=function(){try{p.get(s).setImage(k)}catch(d){a.log('flash.setImage -- can not set "base64":',d)}},r,s=a.uid(),z=g.createElement("div");for(r in j)z.setAttribute("data-img-"+r,j[r]);t(z,j);z.innerHTML=q(a.extend({id:s,src:C(a.flashImageUrl,"r="+a.uid()),wmode:"opaque",flashvars:"scale="+j.scale+"&callback="+A(function J(){u(J);setTimeout(m,99);return!0})},
|
||||||
|
j));l(!1,z);z=null}else{var v=new Image;a.event.one(v,"error abort load",function(a){c("load"!=a.type&&a.type,v);v=null});v.src="data:"+d.type+";base64,"+k}})})}},toData:function(d){var c=this.file,e=c.info,f=this.getMatrix(e);c&&!c.flashId?this.parent.apply(this,arguments):("auto"==f.deg&&(f.deg=a.Image.exifOrientation[e&&e.exif&&e.exif.Orientation]||0),d.call(this,!c.info,{id:c.id,flashId:c.flashId,name:c.name,type:c.type,matrix:f}))}});l(a.Form.prototype,{toData:function(d){for(var c=this.items,
|
||||||
|
e=c.length;e--;)if(c[e].file&&c[e].blob&&!c[e].blob.flashId)return this.parent.apply(this,arguments);a.log("flash.Form.toData");d(c)}});l(a.XHR.prototype,{_send:function(c,e){if(e.nodeName||e.append&&a.support.html5||a.isArray(e)&&"string"===typeof e[0])return this.parent.apply(this,arguments);var f={},g={},j=this,k,l;a.each(e,function(a){a.file?(g[a.name]=a={id:a.blob.id,name:a.blob.name,matrix:a.blob.matrix,flashId:a.blob.flashId},l=a.id,k=a.flashId):f[a.name]=a.blob});if(!l&&!k)return this.parent.apply(this,
|
||||||
|
arguments);a.log("flash.XHR._send:",k,l,g);j.xhr={headers:{},abort:function(){p.cmd(k,"abort",{id:l})},getResponseHeader:function(a){return this.headers[a]},getAllResponseHeaders:function(){return this.headers}};var m=a.queue(function(){p.cmd(k,"upload",{url:C(c.url),data:f,files:g,headers:c.headers,callback:A(function I(e){var f=e.type,g=e.result;a.log("flash.upload."+f+":",e);if("progress"==f)e.loaded=Math.min(e.loaded,e.total),e.lengthComputable=!0,c.progress(e);else if("complete"==f)u(I),"string"==
|
||||||
|
typeof g&&(j.responseText=g.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%")),j.end(e.status||200);else if("abort"==f||"error"==f)j.end(e.status||0,e.message),u(I)})})});a.each(g,function(c){m.inc();a.getInfo(c,m.next)});m.check()}})}};a.Flash=p;var w=new Image;a.event.one(w,"error load",function(){a.support.dataURI=!(1!=w.width||1!=w.height);w=null;p.init()});w.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}})(FileAPI,window,document);
|
||||||
|
"undefined"!==typeof ajs&&ajs.loaded&&ajs.loaded("{fileapi}FileAPI.min");"function"===typeof define&&define.amd&&define("FileAPI",[],function(){return window.FileAPI||{}});
|
25
common/resources/lib/fileupload/angular-file-upload-html5-shim.js
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/**!
|
||||||
|
* AngularJS file upload shim for angular XHR HTML5 browsers
|
||||||
|
* @author Danial <danial.farid@gmail.com>
|
||||||
|
* @version 1.1.10
|
||||||
|
*/
|
||||||
|
if (window.XMLHttpRequest) {
|
||||||
|
if (window.FormData) {
|
||||||
|
// allow access to Angular XHR private field: https://github.com/angular/angular.js/issues/1934
|
||||||
|
XMLHttpRequest = (function(origXHR) {
|
||||||
|
return function() {
|
||||||
|
var xhr = new origXHR();
|
||||||
|
xhr.send = (function(orig) {
|
||||||
|
return function() {
|
||||||
|
if (arguments[0] instanceof FormData && arguments[0].__setXHR_) {
|
||||||
|
var formData = arguments[0];
|
||||||
|
formData.__setXHR_(xhr);
|
||||||
|
}
|
||||||
|
orig.apply(xhr, arguments);
|
||||||
|
}
|
||||||
|
})(xhr.send);
|
||||||
|
return xhr;
|
||||||
|
}
|
||||||
|
})(XMLHttpRequest);
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/lib/fileupload/angular-file-upload-html5-shim.min.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*! 1.1.10 */
|
||||||
|
window.XMLHttpRequest&&window.FormData&&(XMLHttpRequest=function(a){return function(){var b=new a;return b.send=function(a){return function(){if(arguments[0]instanceof FormData&&arguments[0].__setXHR_){var c=arguments[0];c.__setXHR_(b)}a.apply(b,arguments)}}(b.send),b}}(XMLHttpRequest));
|
215
common/resources/lib/fileupload/angular-file-upload-shim.js
vendored
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
/**!
|
||||||
|
* AngularJS file upload shim for HTML5 FormData
|
||||||
|
* @author Danial <danial.farid@gmail.com>
|
||||||
|
* @version 1.1.10
|
||||||
|
*/
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
if (window.XMLHttpRequest) {
|
||||||
|
if (window.FormData) {
|
||||||
|
// allow access to Angular XHR private field: https://github.com/angular/angular.js/issues/1934
|
||||||
|
XMLHttpRequest = (function(origXHR) {
|
||||||
|
return function() {
|
||||||
|
var xhr = new origXHR();
|
||||||
|
xhr.send = (function(orig) {
|
||||||
|
return function() {
|
||||||
|
if (arguments[0] instanceof FormData && arguments[0].__setXHR_) {
|
||||||
|
var formData = arguments[0];
|
||||||
|
formData.__setXHR_(xhr);
|
||||||
|
}
|
||||||
|
orig.apply(xhr, arguments);
|
||||||
|
}
|
||||||
|
})(xhr.send);
|
||||||
|
return xhr;
|
||||||
|
}
|
||||||
|
})(XMLHttpRequest);
|
||||||
|
} else {
|
||||||
|
XMLHttpRequest = (function(origXHR) {
|
||||||
|
return function() {
|
||||||
|
var xhr = new origXHR();
|
||||||
|
var origSend = xhr.send;
|
||||||
|
xhr.__requestHeaders = [];
|
||||||
|
xhr.open = (function(orig) {
|
||||||
|
xhr.upload = {
|
||||||
|
addEventListener: function(t, fn, b) {
|
||||||
|
if (t == 'progress') {
|
||||||
|
xhr.__progress = fn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return function(m, url, b) {
|
||||||
|
orig.apply(xhr, [m, url, b]);
|
||||||
|
xhr.__url = url;
|
||||||
|
}
|
||||||
|
})(xhr.open);
|
||||||
|
xhr.getResponseHeader = (function(orig) {
|
||||||
|
return function(h) {
|
||||||
|
return xhr.__fileApiXHR ? xhr.__fileApiXHR.getResponseHeader(h) : orig.apply(xhr, [h]);
|
||||||
|
}
|
||||||
|
})(xhr.getResponseHeader);
|
||||||
|
xhr.getAllResponseHeaders = (function(orig) {
|
||||||
|
return function() {
|
||||||
|
return xhr.__fileApiXHR ? xhr.__fileApiXHR.getAllResponseHeaders() : orig.apply(xhr);
|
||||||
|
}
|
||||||
|
})(xhr.getAllResponseHeaders);
|
||||||
|
xhr.abort = (function(orig) {
|
||||||
|
return function() {
|
||||||
|
return xhr.__fileApiXHR ? xhr.__fileApiXHR.abort() : (orig == null ? null : orig.apply(xhr));
|
||||||
|
}
|
||||||
|
})(xhr.abort);
|
||||||
|
xhr.send = function() {
|
||||||
|
if (arguments[0] != null && arguments[0].__isShim && arguments[0].__setXHR_) {
|
||||||
|
var formData = arguments[0];
|
||||||
|
if (arguments[0].__setXHR_) {
|
||||||
|
var formData = arguments[0];
|
||||||
|
formData.__setXHR_(xhr);
|
||||||
|
}
|
||||||
|
var config = {
|
||||||
|
url: xhr.__url,
|
||||||
|
complete: function(err, fileApiXHR) {
|
||||||
|
Object.defineProperty(xhr, 'status', {get: function() {return fileApiXHR.status}});
|
||||||
|
Object.defineProperty(xhr, 'statusText', {get: function() {return fileApiXHR.statusText}});
|
||||||
|
Object.defineProperty(xhr, 'readyState', {get: function() {return 4}});
|
||||||
|
Object.defineProperty(xhr, 'response', {get: function() {return fileApiXHR.response}});
|
||||||
|
Object.defineProperty(xhr, 'responseText', {get: function() {return fileApiXHR.responseText}});
|
||||||
|
xhr.__fileApiXHR = fileApiXHR;
|
||||||
|
xhr.onreadystatechange();
|
||||||
|
},
|
||||||
|
progress: function(e) {
|
||||||
|
xhr.__progress(e);
|
||||||
|
},
|
||||||
|
headers: xhr.__requestHeaders
|
||||||
|
}
|
||||||
|
config.data = {};
|
||||||
|
config.files = {}
|
||||||
|
for (var i = 0; i < formData.data.length; i++) {
|
||||||
|
var item = formData.data[i];
|
||||||
|
if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {
|
||||||
|
config.files[item.key] = item.val;
|
||||||
|
} else {
|
||||||
|
config.data[item.key] = item.val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
xhr.__fileApiXHR = FileAPI.upload(config);
|
||||||
|
}, 1);
|
||||||
|
} else {
|
||||||
|
origSend.apply(xhr, arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return xhr;
|
||||||
|
}
|
||||||
|
})(XMLHttpRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window.FormData) {
|
||||||
|
var hasFlash = false;
|
||||||
|
try {
|
||||||
|
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
|
||||||
|
if (fo) hasFlash = true;
|
||||||
|
} catch(e) {
|
||||||
|
if (navigator.mimeTypes["application/x-shockwave-flash"] != undefined) hasFlash = true;
|
||||||
|
}
|
||||||
|
var wrapFileApi = function(elem) {
|
||||||
|
if (!elem.__isWrapped && (elem.getAttribute('ng-file-select') != null || elem.getAttribute('data-ng-file-select') != null)) {
|
||||||
|
var wrap = document.createElement('div');
|
||||||
|
wrap.innerHTML = '<div class="js-fileapi-wrapper" style="position:relative; overflow:hidden"></div>';
|
||||||
|
wrap = wrap.firstChild;
|
||||||
|
var parent = elem.parentNode;
|
||||||
|
parent.insertBefore(wrap, elem);
|
||||||
|
parent.removeChild(elem);
|
||||||
|
wrap.appendChild(elem);
|
||||||
|
if (!hasFlash) {
|
||||||
|
wrap.appendChild(document.createTextNode('Flash is required'));
|
||||||
|
}
|
||||||
|
elem.__isWrapped = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var changeFnWrapper = function(fn) {
|
||||||
|
return function(evt) {
|
||||||
|
var files = FileAPI.getFiles(evt);
|
||||||
|
if (!evt.target) {
|
||||||
|
evt.target = {};
|
||||||
|
}
|
||||||
|
evt.target.files = files;
|
||||||
|
evt.target.files.item = function(i) {
|
||||||
|
return evt.target.files[i] || null;
|
||||||
|
}
|
||||||
|
fn(evt);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
var isFileChange = function(elem, e) {
|
||||||
|
return (e.toLowerCase() === 'change' || e.toLowerCase() === 'onchange') && elem.getAttribute('type') == 'file';
|
||||||
|
}
|
||||||
|
if (HTMLInputElement.prototype.addEventListener) {
|
||||||
|
HTMLInputElement.prototype.addEventListener = (function(origAddEventListener) {
|
||||||
|
return function(e, fn, b, d) {
|
||||||
|
if (isFileChange(this, e)) {
|
||||||
|
wrapFileApi(this);
|
||||||
|
origAddEventListener.apply(this, [e, changeFnWrapper(fn), b, d]);
|
||||||
|
} else {
|
||||||
|
origAddEventListener.apply(this, [e, fn, b, d]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})(HTMLInputElement.prototype.addEventListener);
|
||||||
|
}
|
||||||
|
if (HTMLInputElement.prototype.attachEvent) {
|
||||||
|
HTMLInputElement.prototype.attachEvent = (function(origAttachEvent) {
|
||||||
|
return function(e, fn) {
|
||||||
|
if (isFileChange(this, e)) {
|
||||||
|
wrapFileApi(this);
|
||||||
|
origAttachEvent.apply(this, [e, changeFnWrapper(fn)]);
|
||||||
|
} else {
|
||||||
|
origAttachEvent.apply(this, [e, fn]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})(HTMLInputElement.prototype.attachEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.FormData = FormData = function() {
|
||||||
|
return {
|
||||||
|
append: function(key, val, name) {
|
||||||
|
this.data.push({
|
||||||
|
key: key,
|
||||||
|
val: val,
|
||||||
|
name: name
|
||||||
|
});
|
||||||
|
},
|
||||||
|
data: [],
|
||||||
|
__isShim: true
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
//load FileAPI
|
||||||
|
if (!window.FileAPI || !FileAPI.upload) {
|
||||||
|
var base = '', script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;
|
||||||
|
if (window.FileAPI && window.FileAPI.jsPath) {
|
||||||
|
base = window.FileAPI.jsPath;
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < allScripts.length; i++) {
|
||||||
|
src = allScripts[i].src;
|
||||||
|
index = src.indexOf('angular-file-upload-shim.js')
|
||||||
|
if (index == -1) {
|
||||||
|
index = src.indexOf('angular-file-upload-shim.min.js');
|
||||||
|
}
|
||||||
|
if (index > -1) {
|
||||||
|
base = src.substring(0, index);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window.FileAPI || FileAPI.staticPath == null) {
|
||||||
|
FileAPI = {
|
||||||
|
staticPath: base
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
script.setAttribute('src', base + "FileAPI.min.js");
|
||||||
|
document.getElementsByTagName('head')[0].appendChild(script);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}})();
|
2
common/resources/lib/fileupload/angular-file-upload-shim.min.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*! 1.1.10 */
|
||||||
|
!function(){if(window.XMLHttpRequest&&(XMLHttpRequest=window.FormData?function(a){return function(){var b=new a;return b.send=function(a){return function(){if(arguments[0]instanceof FormData&&arguments[0].__setXHR_){var c=arguments[0];c.__setXHR_(b)}a.apply(b,arguments)}}(b.send),b}}(XMLHttpRequest):function(a){return function(){var b=new a,c=b.send;return b.__requestHeaders=[],b.open=function(a){return b.upload={addEventListener:function(a,c){"progress"==a&&(b.__progress=c)}},function(c,d,e){a.apply(b,[c,d,e]),b.__url=d}}(b.open),b.getResponseHeader=function(a){return function(c){return b.__fileApiXHR?b.__fileApiXHR.getResponseHeader(c):a.apply(b,[c])}}(b.getResponseHeader),b.getAllResponseHeaders=function(a){return function(){return b.__fileApiXHR?b.__fileApiXHR.getAllResponseHeaders():a.apply(b)}}(b.getAllResponseHeaders),b.abort=function(a){return function(){return b.__fileApiXHR?b.__fileApiXHR.abort():null==a?null:a.apply(b)}}(b.abort),b.send=function(){if(null!=arguments[0]&&arguments[0].__isShim&&arguments[0].__setXHR_){var a=arguments[0];if(arguments[0].__setXHR_){var a=arguments[0];a.__setXHR_(b)}var d={url:b.__url,complete:function(a,c){Object.defineProperty(b,"status",{get:function(){return c.status}}),Object.defineProperty(b,"statusText",{get:function(){return c.statusText}}),Object.defineProperty(b,"readyState",{get:function(){return 4}}),Object.defineProperty(b,"response",{get:function(){return c.response}}),Object.defineProperty(b,"responseText",{get:function(){return c.responseText}}),b.__fileApiXHR=c,b.onreadystatechange()},progress:function(a){b.__progress(a)},headers:b.__requestHeaders};d.data={},d.files={};for(var e=0;e<a.data.length;e++){var f=a.data[e];null!=f.val&&null!=f.val.name&&null!=f.val.size&&null!=f.val.type?d.files[f.key]=f.val:d.data[f.key]=f.val}setTimeout(function(){b.__fileApiXHR=FileAPI.upload(d)},1)}else c.apply(b,arguments)},b}}(XMLHttpRequest)),!window.FormData){var a=!1;try{var b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");b&&(a=!0)}catch(c){void 0!=navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}var d=function(b){if(!b.__isWrapped&&(null!=b.getAttribute("ng-file-select")||null!=b.getAttribute("data-ng-file-select"))){var c=document.createElement("div");c.innerHTML='<div class="js-fileapi-wrapper" style="position:relative; overflow:hidden"></div>',c=c.firstChild;var d=b.parentNode;d.insertBefore(c,b),d.removeChild(b),c.appendChild(b),a||c.appendChild(document.createTextNode("Flash is required")),b.__isWrapped=!0}},e=function(a){return function(b){var c=FileAPI.getFiles(b);b.target||(b.target={}),b.target.files=c,b.target.files.item=function(a){return b.target.files[a]||null},a(b)}},f=function(a,b){return("change"===b.toLowerCase()||"onchange"===b.toLowerCase())&&"file"==a.getAttribute("type")};HTMLInputElement.prototype.addEventListener&&(HTMLInputElement.prototype.addEventListener=function(a){return function(b,c,g,h){f(this,b)?(d(this),a.apply(this,[b,e(c),g,h])):a.apply(this,[b,c,g,h])}}(HTMLInputElement.prototype.addEventListener)),HTMLInputElement.prototype.attachEvent&&(HTMLInputElement.prototype.attachEvent=function(a){return function(b,c){f(this,b)?(d(this),a.apply(this,[b,e(c)])):a.apply(this,[b,c])}}(HTMLInputElement.prototype.attachEvent)),window.FormData=FormData=function(){return{append:function(a,b,c){this.data.push({key:a,val:b,name:c})},data:[],__isShim:!0}},function(){if(!window.FileAPI||!FileAPI.upload){var a,b,c,d="",e=document.createElement("script"),f=document.getElementsByTagName("script");if(window.FileAPI&&window.FileAPI.jsPath)d=window.FileAPI.jsPath;else for(a=0;a<f.length;a++)if(c=f[a].src,b=c.indexOf("angular-file-upload-shim.js"),-1==b&&(b=c.indexOf("angular-file-upload-shim.min.js")),b>-1){d=c.substring(0,b);break}window.FileAPI&&null!=FileAPI.staticPath||(FileAPI={staticPath:d}),e.setAttribute("src",d+"FileAPI.min.js"),document.getElementsByTagName("head")[0].appendChild(e)}}()}}();
|
156
common/resources/lib/fileupload/angular-file-upload.js
vendored
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
/**!
|
||||||
|
* AngularJS file upload/drop directive with http post and progress
|
||||||
|
* @author Danial <danial.farid@gmail.com>
|
||||||
|
* @version 1.1.10
|
||||||
|
*/
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
var angularFileUpload = angular.module('angularFileUpload', []);
|
||||||
|
|
||||||
|
angularFileUpload.service('$upload', ['$http', '$rootScope', '$timeout', function($http, $rootScope, $timeout) {
|
||||||
|
this.upload = function(config) {
|
||||||
|
config.method = config.method || 'POST';
|
||||||
|
config.headers = config.headers || {};
|
||||||
|
config.headers['Content-Type'] = undefined;
|
||||||
|
config.transformRequest = config.transformRequest || $http.defaults.transformRequest;
|
||||||
|
var formData = new FormData();
|
||||||
|
if (config.data) {
|
||||||
|
for (var key in config.data) {
|
||||||
|
var val = config.data[key];
|
||||||
|
if (!config.formDataAppender) {
|
||||||
|
if (typeof config.transformRequest == 'function') {
|
||||||
|
val = config.transformRequest(val);
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < config.transformRequest.length; i++) {
|
||||||
|
var fn = config.transformRequest[i];
|
||||||
|
if (typeof fn == 'function') {
|
||||||
|
val = fn(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
formData.append(key, val);
|
||||||
|
} else {
|
||||||
|
config.formDataAppender(formData, key, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config.transformRequest = angular.identity;
|
||||||
|
formData.append(config.fileFormDataName || 'file', config.file, config.file.name);
|
||||||
|
|
||||||
|
formData['__setXHR_'] = function(xhr) {
|
||||||
|
config.__XHR = xhr;
|
||||||
|
xhr.upload.addEventListener('progress', function(e) {
|
||||||
|
if (config.progress) {
|
||||||
|
$timeout(function() {
|
||||||
|
config.progress(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, false);
|
||||||
|
//fix for firefox not firing upload progress end
|
||||||
|
xhr.upload.addEventListener('load', function(e) {
|
||||||
|
if (e.lengthComputable) {
|
||||||
|
$timeout(function() {
|
||||||
|
config.progress(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, false);
|
||||||
|
};
|
||||||
|
|
||||||
|
config.data = formData;
|
||||||
|
|
||||||
|
var promise = $http(config);
|
||||||
|
|
||||||
|
promise.progress = function(fn) {
|
||||||
|
config.progress = fn;
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
promise.abort = function() {
|
||||||
|
if (config.__XHR) {
|
||||||
|
$timeout(function() {
|
||||||
|
config.__XHR.abort();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
promise.then = (function(promise, origThen) {
|
||||||
|
return function(s, e, p) {
|
||||||
|
config.progress = p || config.progress;
|
||||||
|
origThen.apply(promise, [s, e, p]);
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
})(promise, promise.then);
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
|
angularFileUpload.directive('ngFileSelect', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
|
||||||
|
return function(scope, elem, attr) {
|
||||||
|
var fn = $parse(attr['ngFileSelect']);
|
||||||
|
elem.bind('change', function(evt) {
|
||||||
|
var files = [], fileList, i;
|
||||||
|
fileList = evt.target.files;
|
||||||
|
if (fileList != null) {
|
||||||
|
for (i = 0; i < fileList.length; i++) {
|
||||||
|
files.push(fileList.item(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$timeout(function() {
|
||||||
|
fn(scope, {
|
||||||
|
$files : files,
|
||||||
|
$event : evt
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
elem.bind('click', function(){
|
||||||
|
this.value = null;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
} ]);
|
||||||
|
|
||||||
|
angularFileUpload.directive('ngFileDropAvailable', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
|
||||||
|
return function(scope, elem, attr) {
|
||||||
|
if ('draggable' in document.createElement('span')) {
|
||||||
|
var fn = $parse(attr['ngFileDropAvailable']);
|
||||||
|
$timeout(function() {
|
||||||
|
fn(scope);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} ]);
|
||||||
|
|
||||||
|
angularFileUpload.directive('ngFileDrop', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
|
||||||
|
return function(scope, elem, attr) {
|
||||||
|
if ('draggable' in document.createElement('span')) {
|
||||||
|
var fn = $parse(attr['ngFileDrop']);
|
||||||
|
elem[0].addEventListener("dragover", function(evt) {
|
||||||
|
evt.stopPropagation();
|
||||||
|
evt.preventDefault();
|
||||||
|
elem.addClass(attr['ngFileDragOverClass'] || "dragover");
|
||||||
|
}, false);
|
||||||
|
elem[0].addEventListener("dragleave", function(evt) {
|
||||||
|
elem.removeClass(attr['ngFileDragOverClass'] || "dragover");
|
||||||
|
}, false);
|
||||||
|
elem[0].addEventListener("drop", function(evt) {
|
||||||
|
evt.stopPropagation();
|
||||||
|
evt.preventDefault();
|
||||||
|
elem.removeClass(attr['ngFileDragOverClass'] || "dragover");
|
||||||
|
var files = [], fileList = evt.dataTransfer.files, i;
|
||||||
|
if (fileList != null) {
|
||||||
|
for (i = 0; i < fileList.length; i++) {
|
||||||
|
files.push(fileList.item(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$timeout(function() {
|
||||||
|
fn(scope, {
|
||||||
|
$files : files,
|
||||||
|
$event : evt
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} ]);
|
||||||
|
|
||||||
|
})();
|
2
common/resources/lib/fileupload/angular-file-upload.min.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*! 1.1.10 */
|
||||||
|
!function(){var a=angular.module("angularFileUpload",[]);a.service("$upload",["$http","$rootScope","$timeout",function(a,b,c){this.upload=function(b){b.method=b.method||"POST",b.headers=b.headers||{},b.headers["Content-Type"]=void 0,b.transformRequest=b.transformRequest||a.defaults.transformRequest;var d=new FormData;if(b.data)for(var e in b.data){var f=b.data[e];if(b.formDataAppender)b.formDataAppender(d,e,f);else{if("function"==typeof b.transformRequest)f=b.transformRequest(f);else for(var g=0;g<b.transformRequest.length;g++){var h=b.transformRequest[g];"function"==typeof h&&(f=h(f))}d.append(e,f)}}b.transformRequest=angular.identity,d.append(b.fileFormDataName||"file",b.file,b.file.name),d.__setXHR_=function(a){b.__XHR=a,a.upload.addEventListener("progress",function(a){b.progress&&c(function(){b.progress(a)})},!1),a.upload.addEventListener("load",function(a){a.lengthComputable&&c(function(){b.progress(a)})},!1)},b.data=d;var i=a(b);return i.progress=function(a){return b.progress=a,i},i.abort=function(){return b.__XHR&&c(function(){b.__XHR.abort()}),i},i.then=function(a,c){return function(d,e,f){return b.progress=f||b.progress,c.apply(a,[d,e,f]),a}}(i,i.then),i}}]),a.directive("ngFileSelect",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){var f=a(e.ngFileSelect);d.bind("change",function(a){var d,e,g=[];if(d=a.target.files,null!=d)for(e=0;e<d.length;e++)g.push(d.item(e));c(function(){f(b,{$files:g,$event:a})})}),d.bind("click",function(){this.value=null})}}]),a.directive("ngFileDropAvailable",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){if("draggable"in document.createElement("span")){var f=a(e.ngFileDropAvailable);c(function(){f(b)})}}}]),a.directive("ngFileDrop",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){if("draggable"in document.createElement("span")){var f=a(e.ngFileDrop);d[0].addEventListener("dragover",function(a){a.stopPropagation(),a.preventDefault(),d.addClass(e.ngFileDragOverClass||"dragover")},!1),d[0].addEventListener("dragleave",function(){d.removeClass(e.ngFileDragOverClass||"dragover")},!1),d[0].addEventListener("drop",function(a){a.stopPropagation(),a.preventDefault(),d.removeClass(e.ngFileDragOverClass||"dragover");var g,h=[],i=a.dataTransfer.files;if(null!=i)for(g=0;g<i.length;g++)h.push(i.item(g));c(function(){f(b,{$files:h,$event:a})})},!1)}}}])}();
|
21
common/resources/lib/pficon/pficon.css
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*!
|
||||||
|
* This folder contains updated PatternFly4 icons (version 2020.13).
|
||||||
|
* After the PF4 transition is finished this folder will be deleted.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "pficon-tmp";
|
||||||
|
src: url("./pficon.woff2") format("woff2"), url("./pficon.woff") format("woff"); }
|
||||||
|
|
||||||
|
.pf-icon-openshift:before {
|
||||||
|
font-family: "pficon-tmp";
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
font-style: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
text-decoration: none;
|
||||||
|
text-transform: none; }
|
||||||
|
|
||||||
|
.pf-icon-openshift:before {
|
||||||
|
content: ""; }
|
BIN
common/resources/lib/pficon/pficon.woff
Normal file
BIN
common/resources/lib/pficon/pficon.woff2
Normal file
21
common/resources/node_modules/angular-cookies/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
253
common/resources/node_modules/angular-cookies/angular-cookies.js
generated
vendored
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
/**
|
||||||
|
* @license AngularJS v1.8.0
|
||||||
|
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
(function(window, angular) {'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc module
|
||||||
|
* @name ngCookies
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
|
||||||
|
*
|
||||||
|
* See {@link ngCookies.$cookies `$cookies`} for usage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
angular.module('ngCookies', ['ng']).
|
||||||
|
info({ angularVersion: '1.8.0' }).
|
||||||
|
/**
|
||||||
|
* @ngdoc provider
|
||||||
|
* @name $cookiesProvider
|
||||||
|
* @description
|
||||||
|
* Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.
|
||||||
|
* */
|
||||||
|
provider('$cookies', [/** @this */function $CookiesProvider() {
|
||||||
|
/**
|
||||||
|
* @ngdoc property
|
||||||
|
* @name $cookiesProvider#defaults
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* Object containing default options to pass when setting cookies.
|
||||||
|
*
|
||||||
|
* The object may have following properties:
|
||||||
|
*
|
||||||
|
* - **path** - `{string}` - The cookie will be available only for this path and its
|
||||||
|
* sub-paths. By default, this is the URL that appears in your `<base>` tag.
|
||||||
|
* - **domain** - `{string}` - The cookie will be available only for this domain and
|
||||||
|
* its sub-domains. For security reasons the user agent will not accept the cookie
|
||||||
|
* if the current domain is not a sub-domain of this domain or equal to it.
|
||||||
|
* - **expires** - `{string|Date}` - String of the form "Wdy, DD Mon YYYY HH:MM:SS GMT"
|
||||||
|
* or a Date object indicating the exact date/time this cookie will expire.
|
||||||
|
* - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a
|
||||||
|
* secured connection.
|
||||||
|
* - **samesite** - `{string}` - prevents the browser from sending the cookie along with cross-site requests.
|
||||||
|
* Accepts the values `lax` and `strict`. See the [OWASP Wiki](https://www.owasp.org/index.php/SameSite)
|
||||||
|
* for more info. Note that as of May 2018, not all browsers support `SameSite`,
|
||||||
|
* so it cannot be used as a single measure against Cross-Site-Request-Forgery (CSRF) attacks.
|
||||||
|
*
|
||||||
|
* Note: By default, the address that appears in your `<base>` tag will be used as the path.
|
||||||
|
* This is important so that cookies will be visible for all routes when html5mode is enabled.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* angular.module('cookiesProviderExample', ['ngCookies'])
|
||||||
|
* .config(['$cookiesProvider', function($cookiesProvider) {
|
||||||
|
* // Setting default options
|
||||||
|
* $cookiesProvider.defaults.domain = 'foo.com';
|
||||||
|
* $cookiesProvider.defaults.secure = true;
|
||||||
|
* }]);
|
||||||
|
* ```
|
||||||
|
**/
|
||||||
|
var defaults = this.defaults = {};
|
||||||
|
|
||||||
|
function calcOptions(options) {
|
||||||
|
return options ? angular.extend({}, defaults, options) : defaults;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @name $cookies
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Provides read/write access to browser's cookies.
|
||||||
|
*
|
||||||
|
* <div class="alert alert-info">
|
||||||
|
* Up until AngularJS 1.3, `$cookies` exposed properties that represented the
|
||||||
|
* current browser cookie values. In version 1.4, this behavior has changed, and
|
||||||
|
* `$cookies` now provides a standard api of getters, setters etc.
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* Requires the {@link ngCookies `ngCookies`} module to be installed.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* angular.module('cookiesExample', ['ngCookies'])
|
||||||
|
* .controller('ExampleController', ['$cookies', function($cookies) {
|
||||||
|
* // Retrieving a cookie
|
||||||
|
* var favoriteCookie = $cookies.get('myFavorite');
|
||||||
|
* // Setting a cookie
|
||||||
|
* $cookies.put('myFavorite', 'oatmeal');
|
||||||
|
* }]);
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {
|
||||||
|
return {
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#get
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns the value of given cookie key
|
||||||
|
*
|
||||||
|
* @param {string} key Id to use for lookup.
|
||||||
|
* @returns {string} Raw cookie value.
|
||||||
|
*/
|
||||||
|
get: function(key) {
|
||||||
|
return $$cookieReader()[key];
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#getObject
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns the deserialized value of given cookie key
|
||||||
|
*
|
||||||
|
* @param {string} key Id to use for lookup.
|
||||||
|
* @returns {Object} Deserialized cookie value.
|
||||||
|
*/
|
||||||
|
getObject: function(key) {
|
||||||
|
var value = this.get(key);
|
||||||
|
return value ? angular.fromJson(value) : value;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#getAll
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns a key value object with all the cookies
|
||||||
|
*
|
||||||
|
* @returns {Object} All cookies
|
||||||
|
*/
|
||||||
|
getAll: function() {
|
||||||
|
return $$cookieReader();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#put
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets a value for given cookie key
|
||||||
|
*
|
||||||
|
* @param {string} key Id for the `value`.
|
||||||
|
* @param {string} value Raw value to be stored.
|
||||||
|
* @param {Object=} options Options object.
|
||||||
|
* See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
|
||||||
|
*/
|
||||||
|
put: function(key, value, options) {
|
||||||
|
$$cookieWriter(key, value, calcOptions(options));
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#putObject
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Serializes and sets a value for given cookie key
|
||||||
|
*
|
||||||
|
* @param {string} key Id for the `value`.
|
||||||
|
* @param {Object} value Value to be stored.
|
||||||
|
* @param {Object=} options Options object.
|
||||||
|
* See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
|
||||||
|
*/
|
||||||
|
putObject: function(key, value, options) {
|
||||||
|
this.put(key, angular.toJson(value), options);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $cookies#remove
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Remove given cookie
|
||||||
|
*
|
||||||
|
* @param {string} key Id of the key-value pair to delete.
|
||||||
|
* @param {Object=} options Options object.
|
||||||
|
* See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
|
||||||
|
*/
|
||||||
|
remove: function(key, options) {
|
||||||
|
$$cookieWriter(key, undefined, calcOptions(options));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
}]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name $$cookieWriter
|
||||||
|
* @requires $document
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* This is a private service for writing cookies
|
||||||
|
*
|
||||||
|
* @param {string} name Cookie name
|
||||||
|
* @param {string=} value Cookie value (if undefined, cookie will be deleted)
|
||||||
|
* @param {Object=} options Object with options that need to be stored for the cookie.
|
||||||
|
*/
|
||||||
|
function $$CookieWriter($document, $log, $browser) {
|
||||||
|
var cookiePath = $browser.baseHref();
|
||||||
|
var rawDocument = $document[0];
|
||||||
|
|
||||||
|
function buildCookieString(name, value, options) {
|
||||||
|
var path, expires;
|
||||||
|
options = options || {};
|
||||||
|
expires = options.expires;
|
||||||
|
path = angular.isDefined(options.path) ? options.path : cookiePath;
|
||||||
|
if (angular.isUndefined(value)) {
|
||||||
|
expires = 'Thu, 01 Jan 1970 00:00:00 GMT';
|
||||||
|
value = '';
|
||||||
|
}
|
||||||
|
if (angular.isString(expires)) {
|
||||||
|
expires = new Date(expires);
|
||||||
|
}
|
||||||
|
|
||||||
|
var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);
|
||||||
|
str += path ? ';path=' + path : '';
|
||||||
|
str += options.domain ? ';domain=' + options.domain : '';
|
||||||
|
str += expires ? ';expires=' + expires.toUTCString() : '';
|
||||||
|
str += options.secure ? ';secure' : '';
|
||||||
|
str += options.samesite ? ';samesite=' + options.samesite : '';
|
||||||
|
|
||||||
|
// per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
|
||||||
|
// - 300 cookies
|
||||||
|
// - 20 cookies per unique domain
|
||||||
|
// - 4096 bytes per cookie
|
||||||
|
var cookieLength = str.length + 1;
|
||||||
|
if (cookieLength > 4096) {
|
||||||
|
$log.warn('Cookie \'' + name +
|
||||||
|
'\' possibly not set or overflowed because it was too large (' +
|
||||||
|
cookieLength + ' > 4096 bytes)!');
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return function(name, value, options) {
|
||||||
|
rawDocument.cookie = buildCookieString(name, value, options);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$$CookieWriter.$inject = ['$document', '$log', '$browser'];
|
||||||
|
|
||||||
|
angular.module('ngCookies').provider('$$cookieWriter', /** @this */ function $$CookieWriterProvider() {
|
||||||
|
this.$get = $$CookieWriter;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
})(window, window.angular);
|
9
common/resources/node_modules/angular-cookies/angular-cookies.min.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(n,e){'use strict';function m(d,k,l){var a=l.baseHref(),h=d[0];return function(f,b,c){var d,g;c=c||{};g=c.expires;d=e.isDefined(c.path)?c.path:a;e.isUndefined(b)&&(g="Thu, 01 Jan 1970 00:00:00 GMT",b="");e.isString(g)&&(g=new Date(g));b=encodeURIComponent(f)+"="+encodeURIComponent(b);b=b+(d?";path="+d:"")+(c.domain?";domain="+c.domain:"");b+=g?";expires="+g.toUTCString():"";b+=c.secure?";secure":"";b+=c.samesite?";samesite="+c.samesite:"";c=b.length+1;4096<c&&k.warn("Cookie '"+f+"' possibly not set or overflowed because it was too large ("+
|
||||||
|
c+" > 4096 bytes)!");h.cookie=b}}e.module("ngCookies",["ng"]).info({angularVersion:"1.8.0"}).provider("$cookies",[function(){var d=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(k,l){return{get:function(a){return k()[a]},getObject:function(a){return(a=this.get(a))?e.fromJson(a):a},getAll:function(){return k()},put:function(a,h,f){l(a,h,f?e.extend({},d,f):d)},putObject:function(a,d,f){this.put(a,e.toJson(d),f)},remove:function(a,h){l(a,void 0,h?e.extend({},d,h):d)}}}]}]);m.$inject=
|
||||||
|
["$document","$log","$browser"];e.module("ngCookies").provider("$$cookieWriter",function(){this.$get=m})})(window,window.angular);
|
||||||
|
//# sourceMappingURL=angular-cookies.min.js.map
|
8
common/resources/node_modules/angular-cookies/angular-cookies.min.js.map
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"version":3,
|
||||||
|
"file":"angular-cookies.min.js",
|
||||||
|
"lineCount":8,
|
||||||
|
"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkB,CAqM3BC,QAASA,EAAc,CAACC,CAAD,CAAYC,CAAZ,CAAkBC,CAAlB,CAA4B,CACjD,IAAIC,EAAaD,CAAAE,SAAA,EAAjB,CACIC,EAAcL,CAAA,CAAU,CAAV,CAoClB,OAAO,SAAQ,CAACM,CAAD,CAAOC,CAAP,CAAcC,CAAd,CAAuB,CAlCW,IAC3CC,CAD2C,CACrCC,CACVF,EAAA,CAiCoDA,CAjCpD,EAAqB,EACrBE,EAAA,CAAUF,CAAAE,QACVD,EAAA,CAAOX,CAAAa,UAAA,CAAkBH,CAAAC,KAAlB,CAAA,CAAkCD,CAAAC,KAAlC,CAAiDN,CACpDL,EAAAc,YAAA,CAAoBL,CAApB,CAAJ,GACEG,CACA,CADU,+BACV,CAAAH,CAAA,CAAQ,EAFV,CAIIT,EAAAe,SAAA,CAAiBH,CAAjB,CAAJ,GACEA,CADF,CACY,IAAII,IAAJ,CAASJ,CAAT,CADZ,CAIIK,EAAAA,CAAMC,kBAAA,CAsB6BV,CAtB7B,CAANS,CAAiC,GAAjCA,CAAuCC,kBAAA,CAAmBT,CAAnB,CAE3CQ,EAAA,CADAA,CACA,EADON,CAAA,CAAO,QAAP,CAAkBA,CAAlB,CAAyB,EAChC,GAAOD,CAAAS,OAAA,CAAiB,UAAjB,CAA8BT,CAAAS,OAA9B,CAA+C,EAAtD,CACAF,EAAA,EAAOL,CAAA,CAAU,WAAV,CAAwBA,CAAAQ,YAAA,EAAxB,CAAgD,EACvDH,EAAA,EAAOP,CAAAW,OAAA,CAAiB,SAAjB,CAA6B,EACpCJ,EAAA,EAAOP,CAAAY,SAAA,CAAmB,YAAnB,CAAkCZ,CAAAY,SAAlC,CAAqD,EAMxDC,EAAAA,CAAeN,CAAAO,OAAfD,CAA4B,CACb,KAAnB,CAAIA,CAAJ,EACEpB,CAAAsB,KAAA,CAAU,UAAV,CASqCjB,CATrC,CACE,6DADF;AAEEe,CAFF,CAEiB,iBAFjB,CASFhB,EAAAmB,OAAA,CAJOT,CAG6B,CAtCW,CAxLnDjB,CAAA2B,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,KAAA,CACO,CAAEC,eAAgB,OAAlB,CADP,CAAAC,SAAA,CAQY,UARZ,CAQwB,CAAaC,QAAyB,EAAG,CAsC7D,IAAIC,EAAW,IAAAA,SAAXA,CAA2B,EAiC/B,KAAAC,KAAA,CAAY,CAAC,gBAAD,CAAmB,gBAAnB,CAAqC,QAAQ,CAACC,CAAD,CAAiBC,CAAjB,CAAiC,CACxF,MAAO,CAWLC,IAAKA,QAAQ,CAACC,CAAD,CAAM,CACjB,MAAOH,EAAA,EAAA,CAAiBG,CAAjB,CADU,CAXd,CAyBLC,UAAWA,QAAQ,CAACD,CAAD,CAAM,CAEvB,MAAO,CADH5B,CACG,CADK,IAAA2B,IAAA,CAASC,CAAT,CACL,EAAQrC,CAAAuC,SAAA,CAAiB9B,CAAjB,CAAR,CAAkCA,CAFlB,CAzBpB,CAuCL+B,OAAQA,QAAQ,EAAG,CACjB,MAAON,EAAA,EADU,CAvCd,CAuDLO,IAAKA,QAAQ,CAACJ,CAAD,CAAM5B,CAAN,CAAaC,CAAb,CAAsB,CACjCyB,CAAA,CAAeE,CAAf,CAAoB5B,CAApB,CAAuCC,CAvFpC,CAAUV,CAAA0C,OAAA,CAAe,EAAf,CAAmBV,CAAnB,CAuF0BtB,CAvF1B,CAAV,CAAkDsB,CAuFrD,CADiC,CAvD9B,CAuELW,UAAWA,QAAQ,CAACN,CAAD,CAAM5B,CAAN,CAAaC,CAAb,CAAsB,CACvC,IAAA+B,IAAA,CAASJ,CAAT,CAAcrC,CAAA4C,OAAA,CAAenC,CAAf,CAAd,CAAqCC,CAArC,CADuC,CAvEpC,CAsFLmC,OAAQA,QAAQ,CAACR,CAAD,CAAM3B,CAAN,CAAe,CAC7ByB,CAAA,CAAeE,CAAf,CAAoBS,IAAAA,EAApB,CAA2CpC,CAtHxC,CAAUV,CAAA0C,OAAA,CAAe,EAAf,CAAmBV,CAAnB,CAsH8BtB,CAtH9B,CAAV,CAAkDsB,CAsHrD,CAD6B,CAtF1B,CADiF,CAA9E,CAvEiD,CAAzC,CARxB,CAmOA/B,EAAA8C,QAAA;AAAyB,CAAC,WAAD,CAAc,MAAd,CAAsB,UAAtB,CAEzB/C,EAAA2B,OAAA,CAAe,WAAf,CAAAG,SAAA,CAAqC,gBAArC,CAAoEkB,QAA+B,EAAG,CACpG,IAAAf,KAAA,CAAYhC,CADwF,CAAtG,CAlP2B,CAA1B,CAAD,CAuPGF,MAvPH,CAuPWA,MAAAC,QAvPX;",
|
||||||
|
"sources":["angular-cookies.js"],
|
||||||
|
"names":["window","angular","$$CookieWriter","$document","$log","$browser","cookiePath","baseHref","rawDocument","name","value","options","path","expires","isDefined","isUndefined","isString","Date","str","encodeURIComponent","domain","toUTCString","secure","samesite","cookieLength","length","warn","cookie","module","info","angularVersion","provider","$CookiesProvider","defaults","$get","$$cookieReader","$$cookieWriter","get","key","getObject","fromJson","getAll","put","extend","putObject","toJson","remove","undefined","$inject","$$CookieWriterProvider"]
|
||||||
|
}
|
10
common/resources/node_modules/angular-cookies/bower.json
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-cookies",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular-cookies.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "1.8.0"
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/node_modules/angular-cookies/index.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
require('./angular-cookies');
|
||||||
|
module.exports = 'ngCookies';
|
21
common/resources/node_modules/angular-loader/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
638
common/resources/node_modules/angular-loader/angular-loader.js
generated
vendored
Normal file
@ -0,0 +1,638 @@
|
|||||||
|
/**
|
||||||
|
* @license AngularJS v1.8.0
|
||||||
|
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function() {'use strict';
|
||||||
|
// NOTE:
|
||||||
|
// These functions are copied here from `src/Angular.js`, because they are needed inside the
|
||||||
|
// `angular-loader.js` closure and need to be available before the main `angular.js` script has
|
||||||
|
// been loaded.
|
||||||
|
function isFunction(value) {return typeof value === 'function';}
|
||||||
|
function isDefined(value) {return typeof value !== 'undefined';}
|
||||||
|
function isNumber(value) {return typeof value === 'number';}
|
||||||
|
function isObject(value) {return value !== null && typeof value === 'object';}
|
||||||
|
function isScope(obj) {return obj && obj.$evalAsync && obj.$watch;}
|
||||||
|
function isUndefined(value) {return typeof value === 'undefined';}
|
||||||
|
function isWindow(obj) {return obj && obj.window === obj;}
|
||||||
|
function sliceArgs(args, startIndex) {return Array.prototype.slice.call(args, startIndex || 0);}
|
||||||
|
function toJsonReplacer(key, value) {
|
||||||
|
var val = value;
|
||||||
|
|
||||||
|
if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
|
||||||
|
val = undefined;
|
||||||
|
} else if (isWindow(value)) {
|
||||||
|
val = '$WINDOW';
|
||||||
|
} else if (value && window.document === value) {
|
||||||
|
val = '$DOCUMENT';
|
||||||
|
} else if (isScope(value)) {
|
||||||
|
val = '$SCOPE';
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* exported toDebugString */
|
||||||
|
|
||||||
|
function serializeObject(obj, maxDepth) {
|
||||||
|
var seen = [];
|
||||||
|
|
||||||
|
// There is no direct way to stringify object until reaching a specific depth
|
||||||
|
// and a very deep object can cause a performance issue, so we copy the object
|
||||||
|
// based on this specific depth and then stringify it.
|
||||||
|
if (isValidObjectMaxDepth(maxDepth)) {
|
||||||
|
// This file is also included in `angular-loader`, so `copy()` might not always be available in
|
||||||
|
// the closure. Therefore, it is lazily retrieved as `angular.copy()` when needed.
|
||||||
|
obj = angular.copy(obj, null, maxDepth);
|
||||||
|
}
|
||||||
|
return JSON.stringify(obj, function(key, val) {
|
||||||
|
val = toJsonReplacer(key, val);
|
||||||
|
if (isObject(val)) {
|
||||||
|
|
||||||
|
if (seen.indexOf(val) >= 0) return '...';
|
||||||
|
|
||||||
|
seen.push(val);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function toDebugString(obj, maxDepth) {
|
||||||
|
if (typeof obj === 'function') {
|
||||||
|
return obj.toString().replace(/ \{[\s\S]*$/, '');
|
||||||
|
} else if (isUndefined(obj)) {
|
||||||
|
return 'undefined';
|
||||||
|
} else if (typeof obj !== 'string') {
|
||||||
|
return serializeObject(obj, maxDepth);
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* exported
|
||||||
|
minErrConfig,
|
||||||
|
errorHandlingConfig,
|
||||||
|
isValidObjectMaxDepth
|
||||||
|
*/
|
||||||
|
|
||||||
|
var minErrConfig = {
|
||||||
|
objectMaxDepth: 5,
|
||||||
|
urlErrorParamsEnabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name angular.errorHandlingConfig
|
||||||
|
* @module ng
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Configure several aspects of error handling in AngularJS if used as a setter or return the
|
||||||
|
* current configuration if used as a getter. The following options are supported:
|
||||||
|
*
|
||||||
|
* - **objectMaxDepth**: The maximum depth to which objects are traversed when stringified for error messages.
|
||||||
|
*
|
||||||
|
* Omitted or undefined options will leave the corresponding configuration values unchanged.
|
||||||
|
*
|
||||||
|
* @param {Object=} config - The configuration object. May only contain the options that need to be
|
||||||
|
* updated. Supported keys:
|
||||||
|
*
|
||||||
|
* * `objectMaxDepth` **{Number}** - The max depth for stringifying objects. Setting to a
|
||||||
|
* non-positive or non-numeric value, removes the max depth limit.
|
||||||
|
* Default: 5
|
||||||
|
*
|
||||||
|
* * `urlErrorParamsEnabled` **{Boolean}** - Specifies whether the generated error url will
|
||||||
|
* contain the parameters of the thrown error. Disabling the parameters can be useful if the
|
||||||
|
* generated error url is very long.
|
||||||
|
*
|
||||||
|
* Default: true. When used without argument, it returns the current value.
|
||||||
|
*/
|
||||||
|
function errorHandlingConfig(config) {
|
||||||
|
if (isObject(config)) {
|
||||||
|
if (isDefined(config.objectMaxDepth)) {
|
||||||
|
minErrConfig.objectMaxDepth = isValidObjectMaxDepth(config.objectMaxDepth) ? config.objectMaxDepth : NaN;
|
||||||
|
}
|
||||||
|
if (isDefined(config.urlErrorParamsEnabled) && isBoolean(config.urlErrorParamsEnabled)) {
|
||||||
|
minErrConfig.urlErrorParamsEnabled = config.urlErrorParamsEnabled;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return minErrConfig;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @param {Number} maxDepth
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
function isValidObjectMaxDepth(maxDepth) {
|
||||||
|
return isNumber(maxDepth) && maxDepth > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* This object provides a utility for producing rich Error messages within
|
||||||
|
* AngularJS. It can be called as follows:
|
||||||
|
*
|
||||||
|
* var exampleMinErr = minErr('example');
|
||||||
|
* throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
|
||||||
|
*
|
||||||
|
* The above creates an instance of minErr in the example namespace. The
|
||||||
|
* resulting error will have a namespaced error code of example.one. The
|
||||||
|
* resulting error will replace {0} with the value of foo, and {1} with the
|
||||||
|
* value of bar. The object is not restricted in the number of arguments it can
|
||||||
|
* take.
|
||||||
|
*
|
||||||
|
* If fewer arguments are specified than necessary for interpolation, the extra
|
||||||
|
* interpolation markers will be preserved in the final string.
|
||||||
|
*
|
||||||
|
* Since data will be parsed statically during a build step, some restrictions
|
||||||
|
* are applied with respect to how minErr instances are created and called.
|
||||||
|
* Instances should have names of the form namespaceMinErr for a minErr created
|
||||||
|
* using minErr('namespace'). Error codes, namespaces and template strings
|
||||||
|
* should all be static strings, not variables or general expressions.
|
||||||
|
*
|
||||||
|
* @param {string} module The namespace to use for the new minErr instance.
|
||||||
|
* @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
|
||||||
|
* error from returned function, for cases when a particular type of error is useful.
|
||||||
|
* @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
|
||||||
|
*/
|
||||||
|
|
||||||
|
function minErr(module, ErrorConstructor) {
|
||||||
|
ErrorConstructor = ErrorConstructor || Error;
|
||||||
|
|
||||||
|
var url = 'https://errors.angularjs.org/1.8.0/';
|
||||||
|
var regex = url.replace('.', '\\.') + '[\\s\\S]*';
|
||||||
|
var errRegExp = new RegExp(regex, 'g');
|
||||||
|
|
||||||
|
return function() {
|
||||||
|
var code = arguments[0],
|
||||||
|
template = arguments[1],
|
||||||
|
message = '[' + (module ? module + ':' : '') + code + '] ',
|
||||||
|
templateArgs = sliceArgs(arguments, 2).map(function(arg) {
|
||||||
|
return toDebugString(arg, minErrConfig.objectMaxDepth);
|
||||||
|
}),
|
||||||
|
paramPrefix, i;
|
||||||
|
|
||||||
|
// A minErr message has two parts: the message itself and the url that contains the
|
||||||
|
// encoded message.
|
||||||
|
// The message's parameters can contain other error messages which also include error urls.
|
||||||
|
// To prevent the messages from getting too long, we strip the error urls from the parameters.
|
||||||
|
|
||||||
|
message += template.replace(/\{\d+\}/g, function(match) {
|
||||||
|
var index = +match.slice(1, -1);
|
||||||
|
|
||||||
|
if (index < templateArgs.length) {
|
||||||
|
return templateArgs[index].replace(errRegExp, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
return match;
|
||||||
|
});
|
||||||
|
|
||||||
|
message += '\n' + url + (module ? module + '/' : '') + code;
|
||||||
|
|
||||||
|
if (minErrConfig.urlErrorParamsEnabled) {
|
||||||
|
for (i = 0, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
|
||||||
|
message += paramPrefix + 'p' + i + '=' + encodeURIComponent(templateArgs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ErrorConstructor(message);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc type
|
||||||
|
* @name angular.Module
|
||||||
|
* @module ng
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* Interface for configuring AngularJS {@link angular.module modules}.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function setupModuleLoader(window) {
|
||||||
|
|
||||||
|
var $injectorMinErr = minErr('$injector');
|
||||||
|
var ngMinErr = minErr('ng');
|
||||||
|
|
||||||
|
function ensure(obj, name, factory) {
|
||||||
|
return obj[name] || (obj[name] = factory());
|
||||||
|
}
|
||||||
|
|
||||||
|
var angular = ensure(window, 'angular', Object);
|
||||||
|
|
||||||
|
// We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
|
||||||
|
angular.$$minErr = angular.$$minErr || minErr;
|
||||||
|
|
||||||
|
return ensure(angular, 'module', function() {
|
||||||
|
/** @type {Object.<string, angular.Module>} */
|
||||||
|
var modules = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name angular.module
|
||||||
|
* @module ng
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* The `angular.module` is a global place for creating, registering and retrieving AngularJS
|
||||||
|
* modules.
|
||||||
|
* All modules (AngularJS core or 3rd party) that should be available to an application must be
|
||||||
|
* registered using this mechanism.
|
||||||
|
*
|
||||||
|
* Passing one argument retrieves an existing {@link angular.Module},
|
||||||
|
* whereas passing more than one argument creates a new {@link angular.Module}
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* # Module
|
||||||
|
*
|
||||||
|
* A module is a collection of services, directives, controllers, filters, and configuration information.
|
||||||
|
* `angular.module` is used to configure the {@link auto.$injector $injector}.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* // Create a new module
|
||||||
|
* var myModule = angular.module('myModule', []);
|
||||||
|
*
|
||||||
|
* // register a new service
|
||||||
|
* myModule.value('appName', 'MyCoolApp');
|
||||||
|
*
|
||||||
|
* // configure existing services inside initialization blocks.
|
||||||
|
* myModule.config(['$locationProvider', function($locationProvider) {
|
||||||
|
* // Configure existing providers
|
||||||
|
* $locationProvider.hashPrefix('!');
|
||||||
|
* }]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Then you can create an injector and load your modules like this:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* var injector = angular.injector(['ng', 'myModule'])
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* However it's more likely that you'll just use
|
||||||
|
* {@link ng.directive:ngApp ngApp} or
|
||||||
|
* {@link angular.bootstrap} to simplify this process for you.
|
||||||
|
*
|
||||||
|
* @param {!string} name The name of the module to create or retrieve.
|
||||||
|
* @param {!Array.<string>=} requires If specified then new module is being created. If
|
||||||
|
* unspecified then the module is being retrieved for further configuration.
|
||||||
|
* @param {Function=} configFn Optional configuration function for the module. Same as
|
||||||
|
* {@link angular.Module#config Module#config()}.
|
||||||
|
* @returns {angular.Module} new module with the {@link angular.Module} api.
|
||||||
|
*/
|
||||||
|
return function module(name, requires, configFn) {
|
||||||
|
|
||||||
|
var info = {};
|
||||||
|
|
||||||
|
var assertNotHasOwnProperty = function(name, context) {
|
||||||
|
if (name === 'hasOwnProperty') {
|
||||||
|
throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
assertNotHasOwnProperty(name, 'module');
|
||||||
|
if (requires && modules.hasOwnProperty(name)) {
|
||||||
|
modules[name] = null;
|
||||||
|
}
|
||||||
|
return ensure(modules, name, function() {
|
||||||
|
if (!requires) {
|
||||||
|
throw $injectorMinErr('nomod', 'Module \'{0}\' is not available! You either misspelled ' +
|
||||||
|
'the module name or forgot to load it. If registering a module ensure that you ' +
|
||||||
|
'specify the dependencies as the second argument.', name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @type {!Array.<Array.<*>>} */
|
||||||
|
var invokeQueue = [];
|
||||||
|
|
||||||
|
/** @type {!Array.<Function>} */
|
||||||
|
var configBlocks = [];
|
||||||
|
|
||||||
|
/** @type {!Array.<Function>} */
|
||||||
|
var runBlocks = [];
|
||||||
|
|
||||||
|
var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
|
||||||
|
|
||||||
|
/** @type {angular.Module} */
|
||||||
|
var moduleInstance = {
|
||||||
|
// Private state
|
||||||
|
_invokeQueue: invokeQueue,
|
||||||
|
_configBlocks: configBlocks,
|
||||||
|
_runBlocks: runBlocks,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#info
|
||||||
|
* @module ng
|
||||||
|
*
|
||||||
|
* @param {Object=} info Information about the module
|
||||||
|
* @returns {Object|Module} The current info object for this module if called as a getter,
|
||||||
|
* or `this` if called as a setter.
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Read and write custom information about this module.
|
||||||
|
* For example you could put the version of the module in here.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* angular.module('myModule', []).info({ version: '1.0.0' });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The version could then be read back out by accessing the module elsewhere:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* var version = angular.module('myModule').info().version;
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* You can also retrieve this information during runtime via the
|
||||||
|
* {@link $injector#modules `$injector.modules`} property:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* var version = $injector.modules['myModule'].info().version;
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
info: function(value) {
|
||||||
|
if (isDefined(value)) {
|
||||||
|
if (!isObject(value)) throw ngMinErr('aobj', 'Argument \'{0}\' must be an object', 'value');
|
||||||
|
info = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc property
|
||||||
|
* @name angular.Module#requires
|
||||||
|
* @module ng
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Holds the list of modules which the injector will load before the current module is
|
||||||
|
* loaded.
|
||||||
|
*/
|
||||||
|
requires: requires,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc property
|
||||||
|
* @name angular.Module#name
|
||||||
|
* @module ng
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Name of the module.
|
||||||
|
*/
|
||||||
|
name: name,
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#provider
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name service name
|
||||||
|
* @param {Function} providerType Construction function for creating new instance of the
|
||||||
|
* service.
|
||||||
|
* @description
|
||||||
|
* See {@link auto.$provide#provider $provide.provider()}.
|
||||||
|
*/
|
||||||
|
provider: invokeLaterAndSetModuleName('$provide', 'provider'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#factory
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name service name
|
||||||
|
* @param {Function} providerFunction Function for creating new instance of the service.
|
||||||
|
* @description
|
||||||
|
* See {@link auto.$provide#factory $provide.factory()}.
|
||||||
|
*/
|
||||||
|
factory: invokeLaterAndSetModuleName('$provide', 'factory'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#service
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name service name
|
||||||
|
* @param {Function} constructor A constructor function that will be instantiated.
|
||||||
|
* @description
|
||||||
|
* See {@link auto.$provide#service $provide.service()}.
|
||||||
|
*/
|
||||||
|
service: invokeLaterAndSetModuleName('$provide', 'service'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#value
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name service name
|
||||||
|
* @param {*} object Service instance object.
|
||||||
|
* @description
|
||||||
|
* See {@link auto.$provide#value $provide.value()}.
|
||||||
|
*/
|
||||||
|
value: invokeLater('$provide', 'value'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#constant
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name constant name
|
||||||
|
* @param {*} object Constant value.
|
||||||
|
* @description
|
||||||
|
* Because the constants are fixed, they get applied before other provide methods.
|
||||||
|
* See {@link auto.$provide#constant $provide.constant()}.
|
||||||
|
*/
|
||||||
|
constant: invokeLater('$provide', 'constant', 'unshift'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#decorator
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name The name of the service to decorate.
|
||||||
|
* @param {Function} decorFn This function will be invoked when the service needs to be
|
||||||
|
* instantiated and should return the decorated service instance.
|
||||||
|
* @description
|
||||||
|
* See {@link auto.$provide#decorator $provide.decorator()}.
|
||||||
|
*/
|
||||||
|
decorator: invokeLaterAndSetModuleName('$provide', 'decorator', configBlocks),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#animation
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name animation name
|
||||||
|
* @param {Function} animationFactory Factory function for creating new instance of an
|
||||||
|
* animation.
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Defines an animation hook that can be later used with
|
||||||
|
* {@link $animate $animate} service and directives that use this service.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* module.animation('.animation-name', function($inject1, $inject2) {
|
||||||
|
* return {
|
||||||
|
* eventName : function(element, done) {
|
||||||
|
* //code to run the animation
|
||||||
|
* //once complete, then run done()
|
||||||
|
* return function cancellationFunction(element) {
|
||||||
|
* //code to cancel the animation
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* })
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* See {@link ng.$animateProvider#register $animateProvider.register()} and
|
||||||
|
* {@link ngAnimate ngAnimate module} for more information.
|
||||||
|
*/
|
||||||
|
animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#filter
|
||||||
|
* @module ng
|
||||||
|
* @param {string} name Filter name - this must be a valid AngularJS expression identifier
|
||||||
|
* @param {Function} filterFactory Factory function for creating new instance of filter.
|
||||||
|
* @description
|
||||||
|
* See {@link ng.$filterProvider#register $filterProvider.register()}.
|
||||||
|
*
|
||||||
|
* <div class="alert alert-warning">
|
||||||
|
* **Note:** Filter names must be valid AngularJS {@link expression} identifiers, such as `uppercase` or `orderBy`.
|
||||||
|
* Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
|
||||||
|
* your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
|
||||||
|
* (`myapp_subsection_filterx`).
|
||||||
|
* </div>
|
||||||
|
*/
|
||||||
|
filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#controller
|
||||||
|
* @module ng
|
||||||
|
* @param {string|Object} name Controller name, or an object map of controllers where the
|
||||||
|
* keys are the names and the values are the constructors.
|
||||||
|
* @param {Function} constructor Controller constructor function.
|
||||||
|
* @description
|
||||||
|
* See {@link ng.$controllerProvider#register $controllerProvider.register()}.
|
||||||
|
*/
|
||||||
|
controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#directive
|
||||||
|
* @module ng
|
||||||
|
* @param {string|Object} name Directive name, or an object map of directives where the
|
||||||
|
* keys are the names and the values are the factories.
|
||||||
|
* @param {Function} directiveFactory Factory function for creating new instance of
|
||||||
|
* directives.
|
||||||
|
* @description
|
||||||
|
* See {@link ng.$compileProvider#directive $compileProvider.directive()}.
|
||||||
|
*/
|
||||||
|
directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#component
|
||||||
|
* @module ng
|
||||||
|
* @param {string|Object} name Name of the component in camelCase (i.e. `myComp` which will match `<my-comp>`),
|
||||||
|
* or an object map of components where the keys are the names and the values are the component definition objects.
|
||||||
|
* @param {Object} options Component definition object (a simplified
|
||||||
|
* {@link ng.$compile#directive-definition-object directive definition object})
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* See {@link ng.$compileProvider#component $compileProvider.component()}.
|
||||||
|
*/
|
||||||
|
component: invokeLaterAndSetModuleName('$compileProvider', 'component'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#config
|
||||||
|
* @module ng
|
||||||
|
* @param {Function} configFn Execute this function on module load. Useful for service
|
||||||
|
* configuration.
|
||||||
|
* @description
|
||||||
|
* Use this method to configure services by injecting their
|
||||||
|
* {@link angular.Module#provider `providers`}, e.g. for adding routes to the
|
||||||
|
* {@link ngRoute.$routeProvider $routeProvider}.
|
||||||
|
*
|
||||||
|
* Note that you can only inject {@link angular.Module#provider `providers`} and
|
||||||
|
* {@link angular.Module#constant `constants`} into this function.
|
||||||
|
*
|
||||||
|
* For more about how to configure services, see
|
||||||
|
* {@link providers#provider-recipe Provider Recipe}.
|
||||||
|
*/
|
||||||
|
config: config,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name angular.Module#run
|
||||||
|
* @module ng
|
||||||
|
* @param {Function} initializationFn Execute this function after injector creation.
|
||||||
|
* Useful for application initialization.
|
||||||
|
* @description
|
||||||
|
* Use this method to register work which should be performed when the injector is done
|
||||||
|
* loading all modules.
|
||||||
|
*/
|
||||||
|
run: function(block) {
|
||||||
|
runBlocks.push(block);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (configFn) {
|
||||||
|
config(configFn);
|
||||||
|
}
|
||||||
|
|
||||||
|
return moduleInstance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} provider
|
||||||
|
* @param {string} method
|
||||||
|
* @param {String=} insertMethod
|
||||||
|
* @returns {angular.Module}
|
||||||
|
*/
|
||||||
|
function invokeLater(provider, method, insertMethod, queue) {
|
||||||
|
if (!queue) queue = invokeQueue;
|
||||||
|
return function() {
|
||||||
|
queue[insertMethod || 'push']([provider, method, arguments]);
|
||||||
|
return moduleInstance;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} provider
|
||||||
|
* @param {string} method
|
||||||
|
* @returns {angular.Module}
|
||||||
|
*/
|
||||||
|
function invokeLaterAndSetModuleName(provider, method, queue) {
|
||||||
|
if (!queue) queue = invokeQueue;
|
||||||
|
return function(recipeName, factoryFunction) {
|
||||||
|
if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
|
||||||
|
queue.push([provider, method, arguments]);
|
||||||
|
return moduleInstance;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setupModuleLoader(window);
|
||||||
|
})(window);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closure compiler type information
|
||||||
|
*
|
||||||
|
* @typedef { {
|
||||||
|
* requires: !Array.<string>,
|
||||||
|
* invokeQueue: !Array.<Array.<*>>,
|
||||||
|
*
|
||||||
|
* service: function(string, Function):angular.Module,
|
||||||
|
* factory: function(string, Function):angular.Module,
|
||||||
|
* value: function(string, *):angular.Module,
|
||||||
|
*
|
||||||
|
* filter: function(string, Function):angular.Module,
|
||||||
|
*
|
||||||
|
* init: function(Function):angular.Module
|
||||||
|
* } }
|
||||||
|
*/
|
||||||
|
angular.Module;
|
||||||
|
|
10
common/resources/node_modules/angular-loader/angular-loader.min.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(){'use strict';function g(a,f){f=f||Error;return function(){var d=arguments[0],e;e="["+(a?a+":":"")+d+"] http://errors.angularjs.org/1.8.0/"+(a?a+"/":"")+d;for(d=1;d<arguments.length;d++){e=e+(1==d?"?":"&")+"p"+(d-1)+"=";var q=encodeURIComponent,b;b=arguments[d];b="function"==typeof b?b.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof b?"undefined":"string"!=typeof b?JSON.stringify(b):b;e+=q(b)}return new f(e)}}(function(a){function f(a,b,d){return a[b]||(a[b]=d())}var d=g("$injector"),
|
||||||
|
e=g("ng");a=f(a,"angular",Object);a.$$minErr=a.$$minErr||g;return f(a,"module",function(){var a={};return function(b,g,l){var m={};if("hasOwnProperty"===b)throw e("badname","module");g&&a.hasOwnProperty(b)&&(a[b]=null);return f(a,b,function(){function a(b,d,e,c){c||(c=f);return function(){c[e||"push"]([b,d,arguments]);return h}}function c(a,d,c){c||(c=f);return function(f,e){e&&"function"===typeof e&&(e.$$moduleName=b);c.push([a,d,arguments]);return h}}if(!g)throw d("nomod",b);var f=[],k=[],n=[],
|
||||||
|
p=a("$injector","invoke","push",k),h={_invokeQueue:f,_configBlocks:k,_runBlocks:n,info:function(a){if("undefined"!==typeof a){if(null===a||"object"!==typeof a)throw e("aobj","value");m=a;return this}return m},requires:g,name:b,provider:c("$provide","provider"),factory:c("$provide","factory"),service:c("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:c("$provide","decorator",k),animation:c("$animateProvider","register"),filter:c("$filterProvider",
|
||||||
|
"register"),controller:c("$controllerProvider","register"),directive:c("$compileProvider","directive"),component:c("$compileProvider","component"),config:p,run:function(a){n.push(a);return this}};l&&p(l);return h})}})})(window)})(window);
|
||||||
|
//# sourceMappingURL=angular-loader.min.js.map
|
8
common/resources/node_modules/angular-loader/angular-loader.min.js.map
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"version":3,
|
||||||
|
"file":"angular-loader.min.js",
|
||||||
|
"lineCount":9,
|
||||||
|
"mappings":"A;;;;;aAMC,SAAQ,EAAG,CA4JZA,QAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,OAAAA,SAAAA,EAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,sCAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,OAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,GAAAA,CAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAAA,KAAAA,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,UAAAA,EAAAA,MAAAA,EAAAA,CAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,aAAAA,CAAAA,EAAAA,CAAAA,CAAAA,WAAAA,EAAAA,MAAAA,EAAAA,CAAAA,WAAAA,CAAAA,QAAAA,EAAAA,MAAAA,EAAAA,CAAAA,IAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAoDAC,SAA0B,CAACC,CAAD,CAAS,CAKjCC,QAASA,EAAM,CAACC,CAAD,CAAMC,CAAN,CAAYC,CAAZ,CAAqB,CAClC,MAAOF,EAAA,CAAIC,CAAJ,CAAP,GAAqBD,CAAA,CAAIC,CAAJ,CAArB,CAAiCC,CAAA,EAAjC,CADkC,CAHpC,IAAIC,EAAkBP,CAAA,CAAO,WAAP,CAAtB;AACIQ,EAAWR,CAAA,CAAO,IAAP,CAMXS,EAAAA,CAAUN,CAAA,CAAOD,CAAP,CAAe,SAAf,CAA0BQ,MAA1B,CAGdD,EAAAE,SAAA,CAAmBF,CAAAE,SAAnB,EAAuCX,CAEvC,OAAOG,EAAA,CAAOM,CAAP,CAAgB,QAAhB,CAA0B,QAAQ,EAAG,CAE1C,IAAIG,EAAU,EAqDd,OAAOC,SAAe,CAACR,CAAD,CAAOS,CAAP,CAAiBC,CAAjB,CAA2B,CAE/C,IAAIC,EAAO,EAGT,IAAa,gBAAb,GAKsBX,CALtB,CACE,KAAMG,EAAA,CAAS,SAAT,CAIoBS,QAJpB,CAAN,CAKAH,CAAJ,EAAgBF,CAAAM,eAAA,CAAuBb,CAAvB,CAAhB,GACEO,CAAA,CAAQP,CAAR,CADF,CACkB,IADlB,CAGA,OAAOF,EAAA,CAAOS,CAAP,CAAgBP,CAAhB,CAAsB,QAAQ,EAAG,CAqStCc,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiCC,CAAjC,CAAwC,CACrDA,CAAL,GAAYA,CAAZ,CAAoBC,CAApB,CACA,OAAO,SAAQ,EAAG,CAChBD,CAAA,CAAMD,CAAN,EAAsB,MAAtB,CAAA,CAA8B,CAACF,CAAD,CAAWC,CAAX,CAAmBI,SAAnB,CAA9B,CACA,OAAOC,EAFS,CAFwC,CAa5DC,QAASA,EAA2B,CAACP,CAAD,CAAWC,CAAX,CAAmBE,CAAnB,CAA0B,CACvDA,CAAL,GAAYA,CAAZ,CAAoBC,CAApB,CACA,OAAO,SAAQ,CAACI,CAAD,CAAaC,CAAb,CAA8B,CACvCA,CAAJ,EAnlB4C,UAmlB5C,GAnlB2B,MAmlBOA,EAAlC,GAAoDA,CAAAC,aAApD,CAAmFzB,CAAnF,CACAkB,EAAAQ,KAAA,CAAW,CAACX,CAAD,CAAWC,CAAX,CAAmBI,SAAnB,CAAX,CACA,OAAOC,EAHoC,CAFe,CAjT9D,GAAKZ,CAAAA,CAAL,CACE,KAAMP,EAAA,CAAgB,OAAhB,CAEiDF,CAFjD,CAAN,CAMF,IAAImB,EAAc,EAAlB,CAGIQ,EAAe,EAHnB,CAMIC,EAAY,EANhB;AAQIC,EAASf,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CAAmC,MAAnC,CAA2Ca,CAA3C,CARb,CAWIN,EAAiB,CAEnBS,aAAcX,CAFK,CAGnBY,cAAeJ,CAHI,CAInBK,WAAYJ,CAJO,CAoCnBjB,KAAMA,QAAQ,CAACsB,CAAD,CAAQ,CACpB,GArV2C,WAqV3C,GArV0B,MAqVZA,EAAd,CAAsB,CACpB,GApViC,IAoVjC,GAAcA,CAAd,EApV0D,QAoV1D,GApVyC,MAoV3BA,EAAd,CAAsB,KAAM9B,EAAA,CAAS,MAAT,CAAuD,OAAvD,CAAN,CACtBQ,CAAA,CAAOsB,CACP,OAAO,KAHa,CAKtB,MAAOtB,EANa,CApCH,CAsDnBF,SAAUA,CAtDS,CAgEnBT,KAAMA,CAhEa,CA6EnBe,SAAUO,CAAA,CAA4B,UAA5B,CAAwC,UAAxC,CA7ES,CAwFnBrB,QAASqB,CAAA,CAA4B,UAA5B,CAAwC,SAAxC,CAxFU,CAmGnBY,QAASZ,CAAA,CAA4B,UAA5B,CAAwC,SAAxC,CAnGU,CA8GnBW,MAAOnB,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CA9GY,CA0HnBqB,SAAUrB,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CA1HS,CAsInBsB,UAAWd,CAAA,CAA4B,UAA5B,CAAwC,WAAxC,CAAqDK,CAArD,CAtIQ,CAwKnBU,UAAWf,CAAA,CAA4B,kBAA5B,CAAgD,UAAhD,CAxKQ,CA0LnBgB,OAAQhB,CAAA,CAA4B,iBAA5B;AAA+C,UAA/C,CA1LW,CAsMnBiB,WAAYjB,CAAA,CAA4B,qBAA5B,CAAmD,UAAnD,CAtMO,CAmNnBkB,UAAWlB,CAAA,CAA4B,kBAA5B,CAAgD,WAAhD,CAnNQ,CAiOnBmB,UAAWnB,CAAA,CAA4B,kBAA5B,CAAgD,WAAhD,CAjOQ,CAoPnBO,OAAQA,CApPW,CAgQnBa,IAAKA,QAAQ,CAACC,CAAD,CAAQ,CACnBf,CAAAF,KAAA,CAAeiB,CAAf,CACA,OAAO,KAFY,CAhQF,CAsQjBjC,EAAJ,EACEmB,CAAA,CAAOnB,CAAP,CAGF,OAAOW,EA7R+B,CAAjC,CAdwC,CAvDP,CAArC,CAd0B,CAAnCzB,CAmZA,CAAkBC,MAAlB,CAnmBY,CAAX,CAAD,CAomBGA,MApmBH;",
|
||||||
|
"sources":["angular-loader.js"],
|
||||||
|
"names":["minErr","setupModuleLoader","window","ensure","obj","name","factory","$injectorMinErr","ngMinErr","angular","Object","$$minErr","modules","module","requires","configFn","info","context","hasOwnProperty","invokeLater","provider","method","insertMethod","queue","invokeQueue","arguments","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","push","configBlocks","runBlocks","config","_invokeQueue","_configBlocks","_runBlocks","value","service","constant","decorator","animation","filter","controller","directive","component","run","block"]
|
||||||
|
}
|
10
common/resources/node_modules/angular-loader/bower.json
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-loader",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular-loader.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "1.8.0"
|
||||||
|
}
|
||||||
|
}
|
21
common/resources/node_modules/angular-resource/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
911
common/resources/node_modules/angular-resource/angular-resource.js
generated
vendored
Normal file
@ -0,0 +1,911 @@
|
|||||||
|
/**
|
||||||
|
* @license AngularJS v1.8.0
|
||||||
|
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
(function(window, angular) {'use strict';
|
||||||
|
|
||||||
|
var $resourceMinErr = angular.$$minErr('$resource');
|
||||||
|
|
||||||
|
// Helper functions and regex to lookup a dotted path on an object
|
||||||
|
// stopping at undefined/null. The path must be composed of ASCII
|
||||||
|
// identifiers (just like $parse)
|
||||||
|
var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
|
||||||
|
|
||||||
|
function isValidDottedPath(path) {
|
||||||
|
return (path != null && path !== '' && path !== 'hasOwnProperty' &&
|
||||||
|
MEMBER_NAME_REGEX.test('.' + path));
|
||||||
|
}
|
||||||
|
|
||||||
|
function lookupDottedPath(obj, path) {
|
||||||
|
if (!isValidDottedPath(path)) {
|
||||||
|
throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
|
||||||
|
}
|
||||||
|
var keys = path.split('.');
|
||||||
|
for (var i = 0, ii = keys.length; i < ii && angular.isDefined(obj); i++) {
|
||||||
|
var key = keys[i];
|
||||||
|
obj = (obj !== null) ? obj[key] : undefined;
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a shallow copy of an object and clear other fields from the destination
|
||||||
|
*/
|
||||||
|
function shallowClearAndCopy(src, dst) {
|
||||||
|
dst = dst || {};
|
||||||
|
|
||||||
|
angular.forEach(dst, function(value, key) {
|
||||||
|
delete dst[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
for (var key in src) {
|
||||||
|
if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
|
||||||
|
dst[key] = src[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc module
|
||||||
|
* @name ngResource
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* The `ngResource` module provides interaction support with RESTful services
|
||||||
|
* via the $resource service.
|
||||||
|
*
|
||||||
|
* See {@link ngResource.$resourceProvider} and {@link ngResource.$resource} for usage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc provider
|
||||||
|
* @name $resourceProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* Use `$resourceProvider` to change the default behavior of the {@link ngResource.$resource}
|
||||||
|
* service.
|
||||||
|
*
|
||||||
|
* ## Dependencies
|
||||||
|
* Requires the {@link ngResource } module to be installed.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @name $resource
|
||||||
|
* @requires $http
|
||||||
|
* @requires ng.$log
|
||||||
|
* @requires $q
|
||||||
|
* @requires ng.$timeout
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* A factory which creates a resource object that lets you interact with
|
||||||
|
* [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
|
||||||
|
*
|
||||||
|
* The returned resource object has action methods which provide high-level behaviors without
|
||||||
|
* the need to interact with the low level {@link ng.$http $http} service.
|
||||||
|
*
|
||||||
|
* Requires the {@link ngResource `ngResource`} module to be installed.
|
||||||
|
*
|
||||||
|
* By default, trailing slashes will be stripped from the calculated URLs,
|
||||||
|
* which can pose problems with server backends that do not expect that
|
||||||
|
* behavior. This can be disabled by configuring the `$resourceProvider` like
|
||||||
|
* this:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
app.config(['$resourceProvider', function($resourceProvider) {
|
||||||
|
// Don't strip trailing slashes from calculated URLs
|
||||||
|
$resourceProvider.defaults.stripTrailingSlashes = false;
|
||||||
|
}]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param {string} url A parameterized URL template with parameters prefixed by `:` as in
|
||||||
|
* `/user/:username`. If you are using a URL with a port number (e.g.
|
||||||
|
* `http://example.com:8080/api`), it will be respected.
|
||||||
|
*
|
||||||
|
* If you are using a url with a suffix, just add the suffix, like this:
|
||||||
|
* `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
|
||||||
|
* or even `$resource('http://example.com/resource/:resource_id.:format')`
|
||||||
|
* If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
|
||||||
|
* collapsed down to a single `.`. If you need this sequence to appear and not collapse then you
|
||||||
|
* can escape it with `/\.`.
|
||||||
|
*
|
||||||
|
* @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
|
||||||
|
* `actions` methods. If a parameter value is a function, it will be called every time
|
||||||
|
* a param value needs to be obtained for a request (unless the param was overridden). The
|
||||||
|
* function will be passed the current data value as an argument.
|
||||||
|
*
|
||||||
|
* Each key value in the parameter object is first bound to url template if present and then any
|
||||||
|
* excess keys are appended to the url search query after the `?`.
|
||||||
|
*
|
||||||
|
* Given a template `/path/:verb` and parameter `{verb: 'greet', salutation: 'Hello'}` results in
|
||||||
|
* URL `/path/greet?salutation=Hello`.
|
||||||
|
*
|
||||||
|
* If the parameter value is prefixed with `@`, then the value for that parameter will be
|
||||||
|
* extracted from the corresponding property on the `data` object (provided when calling actions
|
||||||
|
* with a request body).
|
||||||
|
* For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of
|
||||||
|
* `someParam` will be `data.someProp`.
|
||||||
|
* Note that the parameter will be ignored, when calling a "GET" action method (i.e. an action
|
||||||
|
* method that does not accept a request body).
|
||||||
|
*
|
||||||
|
* @param {Object.<Object>=} actions Hash with declaration of custom actions that will be available
|
||||||
|
* in addition to the default set of resource actions (see below). If a custom action has the same
|
||||||
|
* key as a default action (e.g. `save`), then the default action will be *overwritten*, and not
|
||||||
|
* extended.
|
||||||
|
*
|
||||||
|
* The declaration should be created in the format of {@link ng.$http#usage $http.config}:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* action1: {method:?, params:?, isArray:?, headers:?, ...},
|
||||||
|
* action2: {method:?, params:?, isArray:?, headers:?, ...},
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* Where:
|
||||||
|
*
|
||||||
|
* - **`action`** – {string} – The name of action. This name becomes the name of the method on
|
||||||
|
* your resource object.
|
||||||
|
* - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,
|
||||||
|
* `DELETE`, `JSONP`, etc).
|
||||||
|
* - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
|
||||||
|
* the parameter value is a function, it will be called every time when a param value needs to
|
||||||
|
* be obtained for a request (unless the param was overridden). The function will be passed the
|
||||||
|
* current data value as an argument.
|
||||||
|
* - **`url`** – {string} – Action specific `url` override. The url templating is supported just
|
||||||
|
* like for the resource-level urls.
|
||||||
|
* - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
|
||||||
|
* see `returns` section.
|
||||||
|
* - **`transformRequest`** –
|
||||||
|
* `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
|
||||||
|
* Transform function or an array of such functions. The transform function takes the http
|
||||||
|
* request body and headers and returns its transformed (typically serialized) version.
|
||||||
|
* By default, transformRequest will contain one function that checks if the request data is
|
||||||
|
* an object and serializes it using `angular.toJson`. To prevent this behavior, set
|
||||||
|
* `transformRequest` to an empty array: `transformRequest: []`
|
||||||
|
* - **`transformResponse`** –
|
||||||
|
* `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –
|
||||||
|
* 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.
|
||||||
|
* By default, transformResponse will contain one function that checks if the response looks
|
||||||
|
* like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior,
|
||||||
|
* set `transformResponse` to an empty array: `transformResponse: []`
|
||||||
|
* - **`cache`** – `{boolean|Cache}` – A boolean value or object created with
|
||||||
|
* {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of the HTTP response.
|
||||||
|
* See {@link $http#caching $http Caching} for more information.
|
||||||
|
* - **`timeout`** – `{number}` – Timeout in milliseconds.<br />
|
||||||
|
* **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are
|
||||||
|
* **not** supported in `$resource`, because the same value would be used for multiple requests.
|
||||||
|
* If you are looking for a way to cancel requests, you should use the `cancellable` option.
|
||||||
|
* - **`cancellable`** – `{boolean}` – If true, the request made by a "non-instance" call will be
|
||||||
|
* cancelled (if not already completed) by calling `$cancelRequest()` on the call's return
|
||||||
|
* value. Calling `$cancelRequest()` for a non-cancellable or an already completed/cancelled
|
||||||
|
* request will have no effect.
|
||||||
|
* - **`withCredentials`** – `{boolean}` – Whether to set the `withCredentials` flag on the
|
||||||
|
* XHR object. See
|
||||||
|
* [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)
|
||||||
|
* for more information.
|
||||||
|
* - **`responseType`** – `{string}` – See
|
||||||
|
* [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType).
|
||||||
|
* - **`interceptor`** – `{Object=}` – The interceptor object has four optional methods -
|
||||||
|
* `request`, `requestError`, `response`, and `responseError`. See
|
||||||
|
* {@link ng.$http#interceptors $http interceptors} for details. Note that
|
||||||
|
* `request`/`requestError` interceptors are applied before calling `$http`, thus before any
|
||||||
|
* global `$http` interceptors. Also, rejecting or throwing an error inside the `request`
|
||||||
|
* interceptor will result in calling the `responseError` interceptor.
|
||||||
|
* The resource instance or collection is available on the `resource` property of the
|
||||||
|
* `http response` object passed to `response`/`responseError` interceptors.
|
||||||
|
* Keep in mind that the associated promise will be resolved with the value returned by the
|
||||||
|
* response interceptors. Make sure you return an appropriate value and not the `response`
|
||||||
|
* object passed as input. For reference, the default `response` interceptor (which gets applied
|
||||||
|
* if you don't specify a custom one) returns `response.resource`.<br />
|
||||||
|
* See {@link ngResource.$resource#using-interceptors below} for an example of using
|
||||||
|
* interceptors in `$resource`.
|
||||||
|
* - **`hasBody`** – `{boolean}` – If true, then the request will have a body.
|
||||||
|
* If not specified, then only POST, PUT and PATCH requests will have a body. *
|
||||||
|
* @param {Object} options Hash with custom settings that should extend the
|
||||||
|
* default `$resourceProvider` behavior. The supported options are:
|
||||||
|
*
|
||||||
|
* - **`stripTrailingSlashes`** – {boolean} – If true then the trailing
|
||||||
|
* slashes from any calculated URL will be stripped. (Defaults to true.)
|
||||||
|
* - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be
|
||||||
|
* cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value.
|
||||||
|
* This can be overwritten per action. (Defaults to false.)
|
||||||
|
*
|
||||||
|
* @returns {Object} A resource "class" object with methods for the default set of resource actions
|
||||||
|
* optionally extended with custom `actions`. The default set contains these actions:
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* 'get': {method: 'GET'},
|
||||||
|
* 'save': {method: 'POST'},
|
||||||
|
* 'query': {method: 'GET', isArray: true},
|
||||||
|
* 'remove': {method: 'DELETE'},
|
||||||
|
* 'delete': {method: 'DELETE'}
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Calling these methods invoke {@link ng.$http} with the specified http method, destination and
|
||||||
|
* parameters. When the data is returned from the server then the object is an instance of the
|
||||||
|
* resource class. The actions `save`, `remove` and `delete` are available on it as methods with
|
||||||
|
* the `$` prefix. This allows you to easily perform CRUD operations (create, read, update,
|
||||||
|
* delete) on server-side data like this:
|
||||||
|
* ```js
|
||||||
|
* var User = $resource('/user/:userId', {userId: '@id'});
|
||||||
|
* User.get({userId: 123}).$promise.then(function(user) {
|
||||||
|
* user.abc = true;
|
||||||
|
* user.$save();
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* It is important to realize that invoking a `$resource` object method immediately returns an
|
||||||
|
* empty reference (object or array depending on `isArray`). Once the data is returned from the
|
||||||
|
* server the existing reference is populated with the actual data. This is a useful trick since
|
||||||
|
* usually the resource is assigned to a model which is then rendered by the view. Having an empty
|
||||||
|
* object results in no rendering, once the data arrives from the server then the object is
|
||||||
|
* populated with the data and the view automatically re-renders itself showing the new data. This
|
||||||
|
* means that in most cases one never has to write a callback function for the action methods.
|
||||||
|
*
|
||||||
|
* The action methods on the class object or instance object can be invoked with the following
|
||||||
|
* parameters:
|
||||||
|
*
|
||||||
|
* - "class" actions without a body: `Resource.action([parameters], [success], [error])`
|
||||||
|
* - "class" actions with a body: `Resource.action([parameters], postData, [success], [error])`
|
||||||
|
* - instance actions: `instance.$action([parameters], [success], [error])`
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* When calling instance methods, the instance itself is used as the request body (if the action
|
||||||
|
* should have a body). By default, only actions using `POST`, `PUT` or `PATCH` have request
|
||||||
|
* bodies, but you can use the `hasBody` configuration option to specify whether an action
|
||||||
|
* should have a body or not (regardless of its HTTP method).
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Success callback is called with (value (Object|Array), responseHeaders (Function),
|
||||||
|
* status (number), statusText (string)) arguments, where `value` is the populated resource
|
||||||
|
* instance or collection object. The error callback is called with (httpResponse) argument.
|
||||||
|
*
|
||||||
|
* Class actions return an empty instance (with the additional properties listed below).
|
||||||
|
* Instance actions return a promise for the operation.
|
||||||
|
*
|
||||||
|
* The Resource instances and collections have these additional properties:
|
||||||
|
*
|
||||||
|
* - `$promise`: The {@link ng.$q promise} of the original server interaction that created this
|
||||||
|
* instance or collection.
|
||||||
|
*
|
||||||
|
* On success, the promise is resolved with the same resource instance or collection object,
|
||||||
|
* updated with data from server. This makes it easy to use in the
|
||||||
|
* {@link ngRoute.$routeProvider `resolve` section of `$routeProvider.when()`} to defer view
|
||||||
|
* rendering until the resource(s) are loaded.
|
||||||
|
*
|
||||||
|
* On failure, the promise is rejected with the {@link ng.$http http response} object.
|
||||||
|
*
|
||||||
|
* If an interceptor object was provided, the promise will instead be resolved with the value
|
||||||
|
* returned by the response interceptor (on success) or responceError interceptor (on failure).
|
||||||
|
*
|
||||||
|
* - `$resolved`: `true` after first server interaction is completed (either with success or
|
||||||
|
* rejection), `false` before that. Knowing if the Resource has been resolved is useful in
|
||||||
|
* data-binding. If there is a response/responseError interceptor and it returns a promise,
|
||||||
|
* `$resolved` will wait for that too.
|
||||||
|
*
|
||||||
|
* The Resource instances and collections have these additional methods:
|
||||||
|
*
|
||||||
|
* - `$cancelRequest`: If there is a cancellable, pending request related to the instance or
|
||||||
|
* collection, calling this method will abort the request.
|
||||||
|
*
|
||||||
|
* The Resource instances have these additional methods:
|
||||||
|
*
|
||||||
|
* - `toJSON`: It returns a simple object without any of the extra properties added as part of
|
||||||
|
* the Resource API. This object can be serialized through {@link angular.toJson} safely
|
||||||
|
* without attaching AngularJS-specific fields. Notice that `JSON.stringify` (and
|
||||||
|
* `angular.toJson`) automatically use this method when serializing a Resource instance
|
||||||
|
* (see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON%28%29_behavior)).
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ### Basic usage
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
// Define a CreditCard class
|
||||||
|
var CreditCard = $resource('/users/:userId/cards/:cardId',
|
||||||
|
{userId: 123, cardId: '@id'}, {
|
||||||
|
charge: {method: 'POST', params: {charge: true}}
|
||||||
|
});
|
||||||
|
|
||||||
|
// We can retrieve a collection from the server
|
||||||
|
var cards = CreditCard.query();
|
||||||
|
// GET: /users/123/cards
|
||||||
|
// server returns: [{id: 456, number: '1234', name: 'Smith'}]
|
||||||
|
|
||||||
|
// Wait for the request to complete
|
||||||
|
cards.$promise.then(function() {
|
||||||
|
var card = cards[0];
|
||||||
|
|
||||||
|
// Each item is an instance of CreditCard
|
||||||
|
expect(card instanceof CreditCard).toEqual(true);
|
||||||
|
|
||||||
|
// Non-GET methods are mapped onto the instances
|
||||||
|
card.name = 'J. Smith';
|
||||||
|
card.$save();
|
||||||
|
// POST: /users/123/cards/456 {id: 456, number: '1234', name: 'J. Smith'}
|
||||||
|
// server returns: {id: 456, number: '1234', name: 'J. Smith'}
|
||||||
|
|
||||||
|
// Our custom method is mapped as well (since it uses POST)
|
||||||
|
card.$charge({amount: 9.99});
|
||||||
|
// POST: /users/123/cards/456?amount=9.99&charge=true {id: 456, number: '1234', name: 'J. Smith'}
|
||||||
|
});
|
||||||
|
|
||||||
|
// We can create an instance as well
|
||||||
|
var newCard = new CreditCard({number: '0123'});
|
||||||
|
newCard.name = 'Mike Smith';
|
||||||
|
|
||||||
|
var savePromise = newCard.$save();
|
||||||
|
// POST: /users/123/cards {number: '0123', name: 'Mike Smith'}
|
||||||
|
// server returns: {id: 789, number: '0123', name: 'Mike Smith'}
|
||||||
|
|
||||||
|
savePromise.then(function() {
|
||||||
|
// Once the promise is resolved, the created instance
|
||||||
|
// is populated with the data returned by the server
|
||||||
|
expect(newCard.id).toEqual(789);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* The object returned from a call to `$resource` is a resource "class" which has one "static"
|
||||||
|
* method for each action in the definition.
|
||||||
|
*
|
||||||
|
* Calling these methods invokes `$http` on the `url` template with the given HTTP `method`,
|
||||||
|
* `params` and `headers`.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ### Accessing the response
|
||||||
|
*
|
||||||
|
* When the data is returned from the server then the object is an instance of the resource type and
|
||||||
|
* all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
|
||||||
|
* operations (create, read, update, delete) on server-side data.
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
var User = $resource('/users/:userId', {userId: '@id'});
|
||||||
|
User.get({userId: 123}).$promise.then(function(user) {
|
||||||
|
user.abc = true;
|
||||||
|
user.$save();
|
||||||
|
});
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* It's worth noting that the success callback for `get`, `query` and other methods gets called with
|
||||||
|
* the resource instance (populated with the data that came from the server) as well as an `$http`
|
||||||
|
* header getter function, the HTTP status code and the response status text. So one could rewrite
|
||||||
|
* the above example and get access to HTTP headers as follows:
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
var User = $resource('/users/:userId', {userId: '@id'});
|
||||||
|
User.get({userId: 123}, function(user, getResponseHeaders) {
|
||||||
|
user.abc = true;
|
||||||
|
user.$save(function(user, putResponseHeaders) {
|
||||||
|
// `user` => saved `User` object
|
||||||
|
// `putResponseHeaders` => `$http` header getter
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ### Creating custom actions
|
||||||
|
*
|
||||||
|
* In this example we create a custom method on our resource to make a PUT request:
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
var app = angular.module('app', ['ngResource']);
|
||||||
|
|
||||||
|
// Some APIs expect a PUT request in the format URL/object/ID
|
||||||
|
// Here we are creating an 'update' method
|
||||||
|
app.factory('Notes', ['$resource', function($resource) {
|
||||||
|
return $resource('/notes/:id', {id: '@id'}, {
|
||||||
|
update: {method: 'PUT'}
|
||||||
|
});
|
||||||
|
}]);
|
||||||
|
|
||||||
|
// In our controller we get the ID from the URL using `$location`
|
||||||
|
app.controller('NotesCtrl', ['$location', 'Notes', function($location, Notes) {
|
||||||
|
// First, retrieve the corresponding `Note` object from the server
|
||||||
|
// (Assuming a URL of the form `.../notes?id=XYZ`)
|
||||||
|
var noteId = $location.search().id;
|
||||||
|
var note = Notes.get({id: noteId});
|
||||||
|
|
||||||
|
note.$promise.then(function() {
|
||||||
|
note.content = 'Hello, world!';
|
||||||
|
|
||||||
|
// Now call `update` to save the changes on the server
|
||||||
|
Notes.update(note);
|
||||||
|
// This will PUT /notes/ID with the note object as the request payload
|
||||||
|
|
||||||
|
// Since `update` is a non-GET method, it will also be available on the instance
|
||||||
|
// (prefixed with `$`), so we could replace the `Note.update()` call with:
|
||||||
|
//note.$update();
|
||||||
|
});
|
||||||
|
}]);
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ### Cancelling requests
|
||||||
|
*
|
||||||
|
* If an action's configuration specifies that it is cancellable, you can cancel the request related
|
||||||
|
* to an instance or collection (as long as it is a result of a "non-instance" call):
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
// ...defining the `Hotel` resource...
|
||||||
|
var Hotel = $resource('/api/hotels/:id', {id: '@id'}, {
|
||||||
|
// Let's make the `query()` method cancellable
|
||||||
|
query: {method: 'get', isArray: true, cancellable: true}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ...somewhere in the PlanVacationController...
|
||||||
|
...
|
||||||
|
this.onDestinationChanged = function onDestinationChanged(destination) {
|
||||||
|
// We don't care about any pending request for hotels
|
||||||
|
// in a different destination any more
|
||||||
|
if (this.availableHotels) {
|
||||||
|
this.availableHotels.$cancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let's query for hotels in `destination`
|
||||||
|
// (calls: /api/hotels?location=<destination>)
|
||||||
|
this.availableHotels = Hotel.query({location: destination});
|
||||||
|
};
|
||||||
|
```
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* ### Using interceptors
|
||||||
|
*
|
||||||
|
* You can use interceptors to transform the request or response, perform additional operations, and
|
||||||
|
* modify the returned instance/collection. The following example, uses `request` and `response`
|
||||||
|
* interceptors to augment the returned instance with additional info:
|
||||||
|
*
|
||||||
|
```js
|
||||||
|
var Thing = $resource('/api/things/:id', {id: '@id'}, {
|
||||||
|
save: {
|
||||||
|
method: 'POST',
|
||||||
|
interceptor: {
|
||||||
|
request: function(config) {
|
||||||
|
// Before the request is sent out, store a timestamp on the request config
|
||||||
|
config.requestTimestamp = Date.now();
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
response: function(response) {
|
||||||
|
// Get the instance from the response object
|
||||||
|
var instance = response.resource;
|
||||||
|
|
||||||
|
// Augment the instance with a custom `saveLatency` property, computed as the time
|
||||||
|
// between sending the request and receiving the response.
|
||||||
|
instance.saveLatency = Date.now() - response.config.requestTimestamp;
|
||||||
|
|
||||||
|
// Return the instance
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Thing.save({foo: 'bar'}).$promise.then(function(thing) {
|
||||||
|
console.log('That thing was saved in ' + thing.saveLatency + 'ms.');
|
||||||
|
});
|
||||||
|
```
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
angular.module('ngResource', ['ng']).
|
||||||
|
info({ angularVersion: '1.8.0' }).
|
||||||
|
provider('$resource', function ResourceProvider() {
|
||||||
|
var PROTOCOL_AND_IPV6_REGEX = /^https?:\/\/\[[^\]]*][^/]*/;
|
||||||
|
|
||||||
|
var provider = this;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc property
|
||||||
|
* @name $resourceProvider#defaults
|
||||||
|
* @description
|
||||||
|
* Object containing default options used when creating `$resource` instances.
|
||||||
|
*
|
||||||
|
* The default values satisfy a wide range of usecases, but you may choose to overwrite any of
|
||||||
|
* them to further customize your instances. The available properties are:
|
||||||
|
*
|
||||||
|
* - **stripTrailingSlashes** – `{boolean}` – If true, then the trailing slashes from any
|
||||||
|
* calculated URL will be stripped.<br />
|
||||||
|
* (Defaults to true.)
|
||||||
|
* - **cancellable** – `{boolean}` – If true, the request made by a "non-instance" call will be
|
||||||
|
* cancelled (if not already completed) by calling `$cancelRequest()` on the call's return
|
||||||
|
* value. For more details, see {@link ngResource.$resource}. This can be overwritten per
|
||||||
|
* resource class or action.<br />
|
||||||
|
* (Defaults to false.)
|
||||||
|
* - **actions** - `{Object.<Object>}` - A hash with default actions declarations. Actions are
|
||||||
|
* high-level methods corresponding to RESTful actions/methods on resources. An action may
|
||||||
|
* specify what HTTP method to use, what URL to hit, if the return value will be a single
|
||||||
|
* object or a collection (array) of objects etc. For more details, see
|
||||||
|
* {@link ngResource.$resource}. The actions can also be enhanced or overwritten per resource
|
||||||
|
* class.<br />
|
||||||
|
* The default actions are:
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* get: {method: 'GET'},
|
||||||
|
* save: {method: 'POST'},
|
||||||
|
* query: {method: 'GET', isArray: true},
|
||||||
|
* remove: {method: 'DELETE'},
|
||||||
|
* delete: {method: 'DELETE'}
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* #### Example
|
||||||
|
*
|
||||||
|
* For example, you can specify a new `update` action that uses the `PUT` HTTP verb:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* angular.
|
||||||
|
* module('myApp').
|
||||||
|
* config(['$resourceProvider', function ($resourceProvider) {
|
||||||
|
* $resourceProvider.defaults.actions.update = {
|
||||||
|
* method: 'PUT'
|
||||||
|
* };
|
||||||
|
* }]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Or you can even overwrite the whole `actions` list and specify your own:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* angular.
|
||||||
|
* module('myApp').
|
||||||
|
* config(['$resourceProvider', function ($resourceProvider) {
|
||||||
|
* $resourceProvider.defaults.actions = {
|
||||||
|
* create: {method: 'POST'},
|
||||||
|
* get: {method: 'GET'},
|
||||||
|
* getAll: {method: 'GET', isArray:true},
|
||||||
|
* update: {method: 'PUT'},
|
||||||
|
* delete: {method: 'DELETE'}
|
||||||
|
* };
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
this.defaults = {
|
||||||
|
// Strip slashes by default
|
||||||
|
stripTrailingSlashes: true,
|
||||||
|
|
||||||
|
// Make non-instance requests cancellable (via `$cancelRequest()`)
|
||||||
|
cancellable: false,
|
||||||
|
|
||||||
|
// Default actions configuration
|
||||||
|
actions: {
|
||||||
|
'get': {method: 'GET'},
|
||||||
|
'save': {method: 'POST'},
|
||||||
|
'query': {method: 'GET', isArray: true},
|
||||||
|
'remove': {method: 'DELETE'},
|
||||||
|
'delete': {method: 'DELETE'}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) {
|
||||||
|
|
||||||
|
var noop = angular.noop,
|
||||||
|
forEach = angular.forEach,
|
||||||
|
extend = angular.extend,
|
||||||
|
copy = angular.copy,
|
||||||
|
isArray = angular.isArray,
|
||||||
|
isDefined = angular.isDefined,
|
||||||
|
isFunction = angular.isFunction,
|
||||||
|
isNumber = angular.isNumber,
|
||||||
|
encodeUriQuery = angular.$$encodeUriQuery,
|
||||||
|
encodeUriSegment = angular.$$encodeUriSegment;
|
||||||
|
|
||||||
|
function Route(template, defaults) {
|
||||||
|
this.template = template;
|
||||||
|
this.defaults = extend({}, provider.defaults, defaults);
|
||||||
|
this.urlParams = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Route.prototype = {
|
||||||
|
setUrlParams: function(config, params, actionUrl) {
|
||||||
|
var self = this,
|
||||||
|
url = actionUrl || self.template,
|
||||||
|
val,
|
||||||
|
encodedVal,
|
||||||
|
protocolAndIpv6 = '';
|
||||||
|
|
||||||
|
var urlParams = self.urlParams = Object.create(null);
|
||||||
|
forEach(url.split(/\W/), function(param) {
|
||||||
|
if (param === 'hasOwnProperty') {
|
||||||
|
throw $resourceMinErr('badname', 'hasOwnProperty is not a valid parameter name.');
|
||||||
|
}
|
||||||
|
if (!(new RegExp('^\\d+$').test(param)) && param &&
|
||||||
|
(new RegExp('(^|[^\\\\]):' + param + '(\\W|$)').test(url))) {
|
||||||
|
urlParams[param] = {
|
||||||
|
isQueryParamValue: (new RegExp('\\?.*=:' + param + '(?:\\W|$)')).test(url)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
url = url.replace(/\\:/g, ':');
|
||||||
|
url = url.replace(PROTOCOL_AND_IPV6_REGEX, function(match) {
|
||||||
|
protocolAndIpv6 = match;
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
|
||||||
|
params = params || {};
|
||||||
|
forEach(self.urlParams, function(paramInfo, urlParam) {
|
||||||
|
val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
|
||||||
|
if (isDefined(val) && val !== null) {
|
||||||
|
if (paramInfo.isQueryParamValue) {
|
||||||
|
encodedVal = encodeUriQuery(val, true);
|
||||||
|
} else {
|
||||||
|
encodedVal = encodeUriSegment(val);
|
||||||
|
}
|
||||||
|
url = url.replace(new RegExp(':' + urlParam + '(\\W|$)', 'g'), function(match, p1) {
|
||||||
|
return encodedVal + p1;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
url = url.replace(new RegExp('(/?):' + urlParam + '(\\W|$)', 'g'), function(match,
|
||||||
|
leadingSlashes, tail) {
|
||||||
|
if (tail.charAt(0) === '/') {
|
||||||
|
return tail;
|
||||||
|
} else {
|
||||||
|
return leadingSlashes + tail;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// strip trailing slashes and set the url (unless this behavior is specifically disabled)
|
||||||
|
if (self.defaults.stripTrailingSlashes) {
|
||||||
|
url = url.replace(/\/+$/, '') || '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Collapse `/.` if found in the last URL path segment before the query.
|
||||||
|
// E.g. `http://url.com/id/.format?q=x` becomes `http://url.com/id.format?q=x`.
|
||||||
|
url = url.replace(/\/\.(?=\w+($|\?))/, '.');
|
||||||
|
// Replace escaped `/\.` with `/.`.
|
||||||
|
// (If `\.` comes from a param value, it will be encoded as `%5C.`.)
|
||||||
|
config.url = protocolAndIpv6 + url.replace(/\/(\\|%5C)\./, '/.');
|
||||||
|
|
||||||
|
|
||||||
|
// set params - delegate param encoding to $http
|
||||||
|
forEach(params, function(value, key) {
|
||||||
|
if (!self.urlParams[key]) {
|
||||||
|
config.params = config.params || {};
|
||||||
|
config.params[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function resourceFactory(url, paramDefaults, actions, options) {
|
||||||
|
var route = new Route(url, options);
|
||||||
|
|
||||||
|
actions = extend({}, provider.defaults.actions, actions);
|
||||||
|
|
||||||
|
function extractParams(data, actionParams) {
|
||||||
|
var ids = {};
|
||||||
|
actionParams = extend({}, paramDefaults, actionParams);
|
||||||
|
forEach(actionParams, function(value, key) {
|
||||||
|
if (isFunction(value)) { value = value(data); }
|
||||||
|
ids[key] = value && value.charAt && value.charAt(0) === '@' ?
|
||||||
|
lookupDottedPath(data, value.substr(1)) : value;
|
||||||
|
});
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultResponseInterceptor(response) {
|
||||||
|
return response.resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Resource(value) {
|
||||||
|
shallowClearAndCopy(value || {}, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Resource.prototype.toJSON = function() {
|
||||||
|
var data = extend({}, this);
|
||||||
|
delete data.$promise;
|
||||||
|
delete data.$resolved;
|
||||||
|
delete data.$cancelRequest;
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
forEach(actions, function(action, name) {
|
||||||
|
var hasBody = action.hasBody === true || (action.hasBody !== false && /^(POST|PUT|PATCH)$/i.test(action.method));
|
||||||
|
var numericTimeout = action.timeout;
|
||||||
|
var cancellable = isDefined(action.cancellable) ?
|
||||||
|
action.cancellable : route.defaults.cancellable;
|
||||||
|
|
||||||
|
if (numericTimeout && !isNumber(numericTimeout)) {
|
||||||
|
$log.debug('ngResource:\n' +
|
||||||
|
' Only numeric values are allowed as `timeout`.\n' +
|
||||||
|
' Promises are not supported in $resource, because the same value would ' +
|
||||||
|
'be used for multiple requests. If you are looking for a way to cancel ' +
|
||||||
|
'requests, you should use the `cancellable` option.');
|
||||||
|
delete action.timeout;
|
||||||
|
numericTimeout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Resource[name] = function(a1, a2, a3, a4) {
|
||||||
|
var params = {}, data, onSuccess, onError;
|
||||||
|
|
||||||
|
switch (arguments.length) {
|
||||||
|
case 4:
|
||||||
|
onError = a4;
|
||||||
|
onSuccess = a3;
|
||||||
|
// falls through
|
||||||
|
case 3:
|
||||||
|
case 2:
|
||||||
|
if (isFunction(a2)) {
|
||||||
|
if (isFunction(a1)) {
|
||||||
|
onSuccess = a1;
|
||||||
|
onError = a2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
onSuccess = a2;
|
||||||
|
onError = a3;
|
||||||
|
// falls through
|
||||||
|
} else {
|
||||||
|
params = a1;
|
||||||
|
data = a2;
|
||||||
|
onSuccess = a3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// falls through
|
||||||
|
case 1:
|
||||||
|
if (isFunction(a1)) onSuccess = a1;
|
||||||
|
else if (hasBody) data = a1;
|
||||||
|
else params = a1;
|
||||||
|
break;
|
||||||
|
case 0: break;
|
||||||
|
default:
|
||||||
|
throw $resourceMinErr('badargs',
|
||||||
|
'Expected up to 4 arguments [params, data, success, error], got {0} arguments',
|
||||||
|
arguments.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
var isInstanceCall = this instanceof Resource;
|
||||||
|
var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
|
||||||
|
var httpConfig = {};
|
||||||
|
var requestInterceptor = action.interceptor && action.interceptor.request || undefined;
|
||||||
|
var requestErrorInterceptor = action.interceptor && action.interceptor.requestError ||
|
||||||
|
undefined;
|
||||||
|
var responseInterceptor = action.interceptor && action.interceptor.response ||
|
||||||
|
defaultResponseInterceptor;
|
||||||
|
var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
|
||||||
|
$q.reject;
|
||||||
|
var successCallback = onSuccess ? function(val) {
|
||||||
|
onSuccess(val, response.headers, response.status, response.statusText);
|
||||||
|
} : undefined;
|
||||||
|
var errorCallback = onError || undefined;
|
||||||
|
var timeoutDeferred;
|
||||||
|
var numericTimeoutPromise;
|
||||||
|
var response;
|
||||||
|
|
||||||
|
forEach(action, function(value, key) {
|
||||||
|
switch (key) {
|
||||||
|
default:
|
||||||
|
httpConfig[key] = copy(value);
|
||||||
|
break;
|
||||||
|
case 'params':
|
||||||
|
case 'isArray':
|
||||||
|
case 'interceptor':
|
||||||
|
case 'cancellable':
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!isInstanceCall && cancellable) {
|
||||||
|
timeoutDeferred = $q.defer();
|
||||||
|
httpConfig.timeout = timeoutDeferred.promise;
|
||||||
|
|
||||||
|
if (numericTimeout) {
|
||||||
|
numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasBody) httpConfig.data = data;
|
||||||
|
route.setUrlParams(httpConfig,
|
||||||
|
extend({}, extractParams(data, action.params || {}), params),
|
||||||
|
action.url);
|
||||||
|
|
||||||
|
// Start the promise chain
|
||||||
|
var promise = $q.
|
||||||
|
resolve(httpConfig).
|
||||||
|
then(requestInterceptor).
|
||||||
|
catch(requestErrorInterceptor).
|
||||||
|
then($http);
|
||||||
|
|
||||||
|
promise = promise.then(function(resp) {
|
||||||
|
var data = resp.data;
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
// Need to convert action.isArray to boolean in case it is undefined
|
||||||
|
if (isArray(data) !== (!!action.isArray)) {
|
||||||
|
throw $resourceMinErr('badcfg',
|
||||||
|
'Error in resource configuration for action `{0}`. Expected response to ' +
|
||||||
|
'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object',
|
||||||
|
isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url);
|
||||||
|
}
|
||||||
|
if (action.isArray) {
|
||||||
|
value.length = 0;
|
||||||
|
forEach(data, function(item) {
|
||||||
|
if (typeof item === 'object') {
|
||||||
|
value.push(new Resource(item));
|
||||||
|
} else {
|
||||||
|
// Valid JSON values may be string literals, and these should not be converted
|
||||||
|
// into objects. These items will not have access to the Resource prototype
|
||||||
|
// methods, but unfortunately there
|
||||||
|
value.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var promise = value.$promise; // Save the promise
|
||||||
|
shallowClearAndCopy(data, value);
|
||||||
|
value.$promise = promise; // Restore the promise
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.resource = value;
|
||||||
|
response = resp;
|
||||||
|
return responseInterceptor(resp);
|
||||||
|
}, function(rejectionOrResponse) {
|
||||||
|
rejectionOrResponse.resource = value;
|
||||||
|
response = rejectionOrResponse;
|
||||||
|
return responseErrorInterceptor(rejectionOrResponse);
|
||||||
|
});
|
||||||
|
|
||||||
|
promise = promise['finally'](function() {
|
||||||
|
value.$resolved = true;
|
||||||
|
if (!isInstanceCall && cancellable) {
|
||||||
|
value.$cancelRequest = noop;
|
||||||
|
$timeout.cancel(numericTimeoutPromise);
|
||||||
|
timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Run the `success`/`error` callbacks, but do not let them affect the returned promise.
|
||||||
|
promise.then(successCallback, errorCallback);
|
||||||
|
|
||||||
|
if (!isInstanceCall) {
|
||||||
|
// we are creating instance / collection
|
||||||
|
// - set the initial promise
|
||||||
|
// - return the instance / collection
|
||||||
|
value.$promise = promise;
|
||||||
|
value.$resolved = false;
|
||||||
|
if (cancellable) value.$cancelRequest = cancelRequest;
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// instance call
|
||||||
|
return promise;
|
||||||
|
|
||||||
|
function cancelRequest(value) {
|
||||||
|
promise.catch(noop);
|
||||||
|
if (timeoutDeferred !== null) {
|
||||||
|
timeoutDeferred.resolve(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Resource.prototype['$' + name] = function(params, success, error) {
|
||||||
|
if (isFunction(params)) {
|
||||||
|
error = success; success = params; params = {};
|
||||||
|
}
|
||||||
|
var result = Resource[name].call(this, params, this, success, error);
|
||||||
|
return result.$promise || result;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
return Resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
return resourceFactory;
|
||||||
|
}];
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
})(window, window.angular);
|
15
common/resources/node_modules/angular-resource/angular-resource.min.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(T,a){'use strict';function M(m,f){f=f||{};a.forEach(f,function(a,d){delete f[d]});for(var d in m)!m.hasOwnProperty(d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(f[d]=m[d]);return f}var B=a.$$minErr("$resource"),H=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;a.module("ngResource",["ng"]).info({angularVersion:"1.8.0"}).provider("$resource",function(){var m=/^https?:\/\/\[[^\]]*][^/]*/,f=this;this.defaults={stripTrailingSlashes:!0,cancellable:!1,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",
|
||||||
|
isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};this.$get=["$http","$log","$q","$timeout",function(d,F,G,N){function C(a,d){this.template=a;this.defaults=n({},f.defaults,d);this.urlParams={}}var O=a.noop,r=a.forEach,n=a.extend,R=a.copy,P=a.isArray,D=a.isDefined,x=a.isFunction,I=a.isNumber,y=a.$$encodeUriQuery,S=a.$$encodeUriSegment;C.prototype={setUrlParams:function(a,d,f){var g=this,c=f||g.template,s,h,n="",b=g.urlParams=Object.create(null);r(c.split(/\W/),function(a){if("hasOwnProperty"===
|
||||||
|
a)throw B("badname");!/^\d+$/.test(a)&&a&&(new RegExp("(^|[^\\\\]):"+a+"(\\W|$)")).test(c)&&(b[a]={isQueryParamValue:(new RegExp("\\?.*=:"+a+"(?:\\W|$)")).test(c)})});c=c.replace(/\\:/g,":");c=c.replace(m,function(b){n=b;return""});d=d||{};r(g.urlParams,function(b,a){s=d.hasOwnProperty(a)?d[a]:g.defaults[a];D(s)&&null!==s?(h=b.isQueryParamValue?y(s,!0):S(s),c=c.replace(new RegExp(":"+a+"(\\W|$)","g"),function(b,a){return h+a})):c=c.replace(new RegExp("(/?):"+a+"(\\W|$)","g"),function(b,a,e){return"/"===
|
||||||
|
e.charAt(0)?e:a+e})});g.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");a.url=n+c.replace(/\/(\\|%5C)\./,"/.");r(d,function(b,c){g.urlParams[c]||(a.params=a.params||{},a.params[c]=b)})}};return function(m,y,z,g){function c(b,c){var d={};c=n({},y,c);r(c,function(c,f){x(c)&&(c=c(b));var e;if(c&&c.charAt&&"@"===c.charAt(0)){e=b;var k=c.substr(1);if(null==k||""===k||"hasOwnProperty"===k||!H.test("."+k))throw B("badmember",k);for(var k=k.split("."),h=0,
|
||||||
|
n=k.length;h<n&&a.isDefined(e);h++){var g=k[h];e=null!==e?e[g]:void 0}}else e=c;d[f]=e});return d}function s(b){return b.resource}function h(b){M(b||{},this)}var Q=new C(m,g);z=n({},f.defaults.actions,z);h.prototype.toJSON=function(){var b=n({},this);delete b.$promise;delete b.$resolved;delete b.$cancelRequest;return b};r(z,function(b,a){var f=!0===b.hasBody||!1!==b.hasBody&&/^(POST|PUT|PATCH)$/i.test(b.method),g=b.timeout,m=D(b.cancellable)?b.cancellable:Q.defaults.cancellable;g&&!I(g)&&(F.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."),
|
||||||
|
delete b.timeout,g=null);h[a]=function(e,k,J,y){function z(a){p.catch(O);null!==u&&u.resolve(a)}var K={},v,t,w;switch(arguments.length){case 4:w=y,t=J;case 3:case 2:if(x(k)){if(x(e)){t=e;w=k;break}t=k;w=J}else{K=e;v=k;t=J;break}case 1:x(e)?t=e:f?v=e:K=e;break;case 0:break;default:throw B("badargs",arguments.length);}var E=this instanceof h,l=E?v:b.isArray?[]:new h(v),q={},C=b.interceptor&&b.interceptor.request||void 0,D=b.interceptor&&b.interceptor.requestError||void 0,F=b.interceptor&&b.interceptor.response||
|
||||||
|
s,H=b.interceptor&&b.interceptor.responseError||G.reject,I=t?function(a){t(a,A.headers,A.status,A.statusText)}:void 0;w=w||void 0;var u,L,A;r(b,function(a,b){switch(b){default:q[b]=R(a);case "params":case "isArray":case "interceptor":case "cancellable":}});!E&&m&&(u=G.defer(),q.timeout=u.promise,g&&(L=N(u.resolve,g)));f&&(q.data=v);Q.setUrlParams(q,n({},c(v,b.params||{}),K),b.url);var p=G.resolve(q).then(C).catch(D).then(d),p=p.then(function(c){var e=c.data;if(e){if(P(e)!==!!b.isArray)throw B("badcfg",
|
||||||
|
a,b.isArray?"array":"object",P(e)?"array":"object",q.method,q.url);if(b.isArray)l.length=0,r(e,function(a){"object"===typeof a?l.push(new h(a)):l.push(a)});else{var d=l.$promise;M(e,l);l.$promise=d}}c.resource=l;A=c;return F(c)},function(a){a.resource=l;A=a;return H(a)}),p=p["finally"](function(){l.$resolved=!0;!E&&m&&(l.$cancelRequest=O,N.cancel(L),u=L=q.timeout=null)});p.then(I,w);return E?p:(l.$promise=p,l.$resolved=!1,m&&(l.$cancelRequest=z),l)};h.prototype["$"+a]=function(b,c,d){x(b)&&(d=c,c=
|
||||||
|
b,b={});b=h[a].call(this,b,this,c,d);return b.$promise||b}});return h}}]})})(window,window.angular);
|
||||||
|
//# sourceMappingURL=angular-resource.min.js.map
|
8
common/resources/node_modules/angular-resource/angular-resource.min.js.map
generated
vendored
Normal file
10
common/resources/node_modules/angular-resource/bower.json
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-resource",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular-resource.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "1.8.0"
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/node_modules/angular-resource/index.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
require('./angular-resource');
|
||||||
|
module.exports = 'ngResource';
|
21
common/resources/node_modules/angular-route/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
1266
common/resources/node_modules/angular-route/angular-route.js
generated
vendored
Normal file
17
common/resources/node_modules/angular-route/angular-route.min.js
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(I,b){'use strict';function z(b,h){var d=[],c=b.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[?*])?/g,function(b,c,h,k){b="?"===k||"*?"===k;k="*"===k||"*?"===k;d.push({name:h,optional:b});c=c||"";return(b?"(?:"+c:c+"(?:")+(k?"(.+?)":"([^/]+)")+(b?"?)?":")")}).replace(/([/$*])/g,"\\$1");h.ignoreTrailingSlashes&&(c=c.replace(/\/+$/,"")+"/*");return{keys:d,regexp:new RegExp("^"+c+"(?:[?#]|$)",h.caseInsensitiveMatch?"i":"")}}function A(b){p&&b.get("$route")}function v(u,h,d){return{restrict:"ECA",
|
||||||
|
terminal:!0,priority:400,transclude:"element",link:function(c,f,g,l,k){function q(){r&&(d.cancel(r),r=null);m&&(m.$destroy(),m=null);s&&(r=d.leave(s),r.done(function(b){!1!==b&&(r=null)}),s=null)}function C(){var g=u.current&&u.current.locals;if(b.isDefined(g&&g.$template)){var g=c.$new(),l=u.current;s=k(g,function(g){d.enter(g,null,s||f).done(function(d){!1===d||!b.isDefined(w)||w&&!c.$eval(w)||h()});q()});m=l.scope=g;m.$emit("$viewContentLoaded");m.$eval(p)}else q()}var m,s,r,w=g.autoscroll,p=g.onload||
|
||||||
|
"";c.$on("$routeChangeSuccess",C);C()}}}function x(b,h,d){return{restrict:"ECA",priority:-400,link:function(c,f){var g=d.current,l=g.locals;f.html(l.$template);var k=b(f.contents());if(g.controller){l.$scope=c;var q=h(g.controller,l);g.controllerAs&&(c[g.controllerAs]=q);f.data("$ngControllerController",q);f.children().data("$ngControllerController",q)}c[g.resolveAs||"$resolve"]=l;k(c)}}}var D,E,F,G,y=b.module("ngRoute",[]).info({angularVersion:"1.8.0"}).provider("$route",function(){function u(d,
|
||||||
|
c){return b.extend(Object.create(d),c)}D=b.isArray;E=b.isObject;F=b.isDefined;G=b.noop;var h={};this.when=function(d,c){var f;f=void 0;if(D(c)){f=f||[];for(var g=0,l=c.length;g<l;g++)f[g]=c[g]}else if(E(c))for(g in f=f||{},c)if("$"!==g.charAt(0)||"$"!==g.charAt(1))f[g]=c[g];f=f||c;b.isUndefined(f.reloadOnUrl)&&(f.reloadOnUrl=!0);b.isUndefined(f.reloadOnSearch)&&(f.reloadOnSearch=!0);b.isUndefined(f.caseInsensitiveMatch)&&(f.caseInsensitiveMatch=this.caseInsensitiveMatch);h[d]=b.extend(f,{originalPath:d},
|
||||||
|
d&&z(d,f));d&&(g="/"===d[d.length-1]?d.substr(0,d.length-1):d+"/",h[g]=b.extend({originalPath:d,redirectTo:d},z(g,f)));return this};this.caseInsensitiveMatch=!1;this.otherwise=function(b){"string"===typeof b&&(b={redirectTo:b});this.when(null,b);return this};p=!0;this.eagerInstantiationEnabled=function(b){return F(b)?(p=b,this):p};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce","$browser",function(d,c,f,g,l,k,q,p){function m(a){var e=t.current;n=A();(x=
|
||||||
|
!B&&n&&e&&n.$$route===e.$$route&&(!n.reloadOnUrl||!n.reloadOnSearch&&b.equals(n.pathParams,e.pathParams)))||!e&&!n||d.$broadcast("$routeChangeStart",n,e).defaultPrevented&&a&&a.preventDefault()}function s(){var a=t.current,e=n;if(x)a.params=e.params,b.copy(a.params,f),d.$broadcast("$routeUpdate",a);else if(e||a){B=!1;t.current=e;var c=g.resolve(e);p.$$incOutstandingRequestCount("$route");c.then(r).then(w).then(function(g){return g&&c.then(y).then(function(c){e===t.current&&(e&&(e.locals=c,b.copy(e.params,
|
||||||
|
f)),d.$broadcast("$routeChangeSuccess",e,a))})}).catch(function(b){e===t.current&&d.$broadcast("$routeChangeError",e,a,b)}).finally(function(){p.$$completeOutstandingRequest(G,"$route")})}}function r(a){var e={route:a,hasRedirection:!1};if(a)if(a.redirectTo)if(b.isString(a.redirectTo))e.path=v(a.redirectTo,a.params),e.search=a.params,e.hasRedirection=!0;else{var d=c.path(),f=c.search();a=a.redirectTo(a.pathParams,d,f);b.isDefined(a)&&(e.url=a,e.hasRedirection=!0)}else if(a.resolveRedirectTo)return g.resolve(l.invoke(a.resolveRedirectTo)).then(function(a){b.isDefined(a)&&
|
||||||
|
(e.url=a,e.hasRedirection=!0);return e});return e}function w(a){var b=!0;if(a.route!==t.current)b=!1;else if(a.hasRedirection){var g=c.url(),d=a.url;d?c.url(d).replace():d=c.path(a.path).search(a.search).replace().url();d!==g&&(b=!1)}return b}function y(a){if(a){var e=b.extend({},a.resolve);b.forEach(e,function(a,c){e[c]=b.isString(a)?l.get(a):l.invoke(a,null,null,c)});a=z(a);b.isDefined(a)&&(e.$template=a);return g.all(e)}}function z(a){var e,c;b.isDefined(e=a.template)?b.isFunction(e)&&(e=e(a.params)):
|
||||||
|
b.isDefined(c=a.templateUrl)&&(b.isFunction(c)&&(c=c(a.params)),b.isDefined(c)&&(a.loadedTemplateUrl=q.valueOf(c),e=k(c)));return e}function A(){var a,e;b.forEach(h,function(d,g){var f;if(f=!e){var h=c.path();f=d.keys;var l={};if(d.regexp)if(h=d.regexp.exec(h)){for(var k=1,p=h.length;k<p;++k){var m=f[k-1],n=h[k];m&&n&&(l[m.name]=n)}f=l}else f=null;else f=null;f=a=f}f&&(e=u(d,{params:b.extend({},c.search(),a),pathParams:a}),e.$$route=d)});return e||h[null]&&u(h[null],{params:{},pathParams:{}})}function v(a,
|
||||||
|
c){var d=[];b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),g=f[1];d.push(c[g]);d.push(f[2]||"");delete c[g]}});return d.join("")}var B=!1,n,x,t={routes:h,reload:function(){B=!0;var a={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;B=!1}};d.$evalAsync(function(){m(a);a.defaultPrevented||s()})},updateParams:function(a){if(this.current&&this.current.$$route)a=b.extend({},this.current.params,a),c.path(v(this.current.$$route.originalPath,
|
||||||
|
a)),c.search(a);else throw H("norout");}};d.$on("$locationChangeStart",m);d.$on("$locationChangeSuccess",s);return t}]}).run(A),H=b.$$minErr("ngRoute"),p;A.$inject=["$injector"];y.provider("$routeParams",function(){this.$get=function(){return{}}});y.directive("ngView",v);y.directive("ngView",x);v.$inject=["$route","$anchorScroll","$animate"];x.$inject=["$compile","$controller","$route"]})(window,window.angular);
|
||||||
|
//# sourceMappingURL=angular-route.min.js.map
|
8
common/resources/node_modules/angular-route/angular-route.min.js.map
generated
vendored
Normal file
10
common/resources/node_modules/angular-route/bower.json
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-route",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular-route.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "1.8.0"
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/node_modules/angular-route/index.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
require('./angular-route');
|
||||||
|
module.exports = 'ngRoute';
|
21
common/resources/node_modules/angular-sanitize/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
913
common/resources/node_modules/angular-sanitize/angular-sanitize.js
generated
vendored
Normal file
@ -0,0 +1,913 @@
|
|||||||
|
/**
|
||||||
|
* @license AngularJS v1.8.0
|
||||||
|
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
(function(window, angular) {'use strict';
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Any commits to this file should be reviewed with security in mind. *
|
||||||
|
* Changes to this file can potentially create security vulnerabilities. *
|
||||||
|
* An approval from 2 Core members with history of modifying *
|
||||||
|
* this file is required. *
|
||||||
|
* *
|
||||||
|
* Does the change somehow allow for arbitrary javascript to be executed? *
|
||||||
|
* Or allows for someone to change the prototype of built-in objects? *
|
||||||
|
* Or gives undesired access to variables likes document or window? *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
||||||
|
var bind;
|
||||||
|
var extend;
|
||||||
|
var forEach;
|
||||||
|
var isArray;
|
||||||
|
var isDefined;
|
||||||
|
var lowercase;
|
||||||
|
var noop;
|
||||||
|
var nodeContains;
|
||||||
|
var htmlParser;
|
||||||
|
var htmlSanitizeWriter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc module
|
||||||
|
* @name ngSanitize
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* The `ngSanitize` module provides functionality to sanitize HTML.
|
||||||
|
*
|
||||||
|
* See {@link ngSanitize.$sanitize `$sanitize`} for usage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @name $sanitize
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sanitizes an html string by stripping all potentially dangerous tokens.
|
||||||
|
*
|
||||||
|
* The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
|
||||||
|
* then serialized back to a properly escaped HTML string. This means that no unsafe input can make
|
||||||
|
* it into the returned string.
|
||||||
|
*
|
||||||
|
* The whitelist for URL sanitization of attribute values is configured using the functions
|
||||||
|
* `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link $compileProvider}.
|
||||||
|
*
|
||||||
|
* The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.
|
||||||
|
*
|
||||||
|
* @param {string} html HTML input.
|
||||||
|
* @returns {string} Sanitized HTML.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
<example module="sanitizeExample" deps="angular-sanitize.js" name="sanitize-service">
|
||||||
|
<file name="index.html">
|
||||||
|
<script>
|
||||||
|
angular.module('sanitizeExample', ['ngSanitize'])
|
||||||
|
.controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
|
||||||
|
$scope.snippet =
|
||||||
|
'<p style="color:blue">an html\n' +
|
||||||
|
'<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
|
||||||
|
'snippet</p>';
|
||||||
|
$scope.deliberatelyTrustDangerousSnippet = function() {
|
||||||
|
return $sce.trustAsHtml($scope.snippet);
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
</script>
|
||||||
|
<div ng-controller="ExampleController">
|
||||||
|
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>Directive</td>
|
||||||
|
<td>How</td>
|
||||||
|
<td>Source</td>
|
||||||
|
<td>Rendered</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="bind-html-with-sanitize">
|
||||||
|
<td>ng-bind-html</td>
|
||||||
|
<td>Automatically uses $sanitize</td>
|
||||||
|
<td><pre><div ng-bind-html="snippet"><br/></div></pre></td>
|
||||||
|
<td><div ng-bind-html="snippet"></div></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="bind-html-with-trust">
|
||||||
|
<td>ng-bind-html</td>
|
||||||
|
<td>Bypass $sanitize by explicitly trusting the dangerous value</td>
|
||||||
|
<td>
|
||||||
|
<pre><div ng-bind-html="deliberatelyTrustDangerousSnippet()">
|
||||||
|
</div></pre>
|
||||||
|
</td>
|
||||||
|
<td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="bind-default">
|
||||||
|
<td>ng-bind</td>
|
||||||
|
<td>Automatically escapes</td>
|
||||||
|
<td><pre><div ng-bind="snippet"><br/></div></pre></td>
|
||||||
|
<td><div ng-bind="snippet"></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</file>
|
||||||
|
<file name="protractor.js" type="protractor">
|
||||||
|
it('should sanitize the html snippet by default', function() {
|
||||||
|
expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
|
||||||
|
toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should inline raw snippet if bound to a trusted value', function() {
|
||||||
|
expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).
|
||||||
|
toBe("<p style=\"color:blue\">an html\n" +
|
||||||
|
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
|
||||||
|
"snippet</p>");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should escape snippet without any filter', function() {
|
||||||
|
expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).
|
||||||
|
toBe("<p style=\"color:blue\">an html\n" +
|
||||||
|
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
|
||||||
|
"snippet</p>");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should update', function() {
|
||||||
|
element(by.model('snippet')).clear();
|
||||||
|
element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
|
||||||
|
expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
|
||||||
|
toBe('new <b>text</b>');
|
||||||
|
expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(
|
||||||
|
'new <b onclick="alert(1)">text</b>');
|
||||||
|
expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(
|
||||||
|
"new <b onclick=\"alert(1)\">text</b>");
|
||||||
|
});
|
||||||
|
</file>
|
||||||
|
</example>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc provider
|
||||||
|
* @name $sanitizeProvider
|
||||||
|
* @this
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Creates and configures {@link $sanitize} instance.
|
||||||
|
*/
|
||||||
|
function $SanitizeProvider() {
|
||||||
|
var hasBeenInstantiated = false;
|
||||||
|
var svgEnabled = false;
|
||||||
|
|
||||||
|
this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
|
||||||
|
hasBeenInstantiated = true;
|
||||||
|
if (svgEnabled) {
|
||||||
|
extend(validElements, svgElements);
|
||||||
|
}
|
||||||
|
return function(html) {
|
||||||
|
var buf = [];
|
||||||
|
htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
|
||||||
|
return !/^unsafe:/.test($$sanitizeUri(uri, isImage));
|
||||||
|
}));
|
||||||
|
return buf.join('');
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $sanitizeProvider#enableSvg
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Enables a subset of svg to be supported by the sanitizer.
|
||||||
|
*
|
||||||
|
* <div class="alert alert-warning">
|
||||||
|
* <p>By enabling this setting without taking other precautions, you might expose your
|
||||||
|
* application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned
|
||||||
|
* outside of the containing element and be rendered over other elements on the page (e.g. a login
|
||||||
|
* link). Such behavior can then result in phishing incidents.</p>
|
||||||
|
*
|
||||||
|
* <p>To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg
|
||||||
|
* tags within the sanitized content:</p>
|
||||||
|
*
|
||||||
|
* <br>
|
||||||
|
*
|
||||||
|
* <pre><code>
|
||||||
|
* .rootOfTheIncludedContent svg {
|
||||||
|
* overflow: hidden !important;
|
||||||
|
* }
|
||||||
|
* </code></pre>
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* @param {boolean=} flag Enable or disable SVG support in the sanitizer.
|
||||||
|
* @returns {boolean|$sanitizeProvider} Returns the currently configured value if called
|
||||||
|
* without an argument or self for chaining otherwise.
|
||||||
|
*/
|
||||||
|
this.enableSvg = function(enableSvg) {
|
||||||
|
if (isDefined(enableSvg)) {
|
||||||
|
svgEnabled = enableSvg;
|
||||||
|
return this;
|
||||||
|
} else {
|
||||||
|
return svgEnabled;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $sanitizeProvider#addValidElements
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe
|
||||||
|
* and are not stripped off during sanitization. You can extend the following lists of elements:
|
||||||
|
*
|
||||||
|
* - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML
|
||||||
|
* elements. HTML elements considered safe will not be removed during sanitization. All other
|
||||||
|
* elements will be stripped off.
|
||||||
|
*
|
||||||
|
* - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as
|
||||||
|
* "void elements" (similar to HTML
|
||||||
|
* [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These
|
||||||
|
* elements have no end tag and cannot have content.
|
||||||
|
*
|
||||||
|
* - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only
|
||||||
|
* taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for
|
||||||
|
* `$sanitize`.
|
||||||
|
*
|
||||||
|
* <div class="alert alert-info">
|
||||||
|
* This method must be called during the {@link angular.Module#config config} phase. Once the
|
||||||
|
* `$sanitize` service has been instantiated, this method has no effect.
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* <div class="alert alert-warning">
|
||||||
|
* Keep in mind that extending the built-in lists of elements may expose your app to XSS or
|
||||||
|
* other vulnerabilities. Be very mindful of the elements you add.
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* @param {Array<String>|Object} elements - A list of valid HTML elements or an object with one or
|
||||||
|
* more of the following properties:
|
||||||
|
* - **htmlElements** - `{Array<String>}` - A list of elements to extend the current list of
|
||||||
|
* HTML elements.
|
||||||
|
* - **htmlVoidElements** - `{Array<String>}` - A list of elements to extend the current list of
|
||||||
|
* void HTML elements; i.e. elements that do not have an end tag.
|
||||||
|
* - **svgElements** - `{Array<String>}` - A list of elements to extend the current list of SVG
|
||||||
|
* elements. The list of SVG elements is only taken into account if SVG is
|
||||||
|
* {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.
|
||||||
|
*
|
||||||
|
* Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.
|
||||||
|
*
|
||||||
|
* @return {$sanitizeProvider} Returns self for chaining.
|
||||||
|
*/
|
||||||
|
this.addValidElements = function(elements) {
|
||||||
|
if (!hasBeenInstantiated) {
|
||||||
|
if (isArray(elements)) {
|
||||||
|
elements = {htmlElements: elements};
|
||||||
|
}
|
||||||
|
|
||||||
|
addElementsTo(svgElements, elements.svgElements);
|
||||||
|
addElementsTo(voidElements, elements.htmlVoidElements);
|
||||||
|
addElementsTo(validElements, elements.htmlVoidElements);
|
||||||
|
addElementsTo(validElements, elements.htmlElements);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc method
|
||||||
|
* @name $sanitizeProvider#addValidAttrs
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are
|
||||||
|
* not stripped off during sanitization.
|
||||||
|
*
|
||||||
|
* **Note**:
|
||||||
|
* The new attributes will not be treated as URI attributes, which means their values will not be
|
||||||
|
* sanitized as URIs using `$compileProvider`'s
|
||||||
|
* {@link ng.$compileProvider#aHrefSanitizationWhitelist aHrefSanitizationWhitelist} and
|
||||||
|
* {@link ng.$compileProvider#imgSrcSanitizationWhitelist imgSrcSanitizationWhitelist}.
|
||||||
|
*
|
||||||
|
* <div class="alert alert-info">
|
||||||
|
* This method must be called during the {@link angular.Module#config config} phase. Once the
|
||||||
|
* `$sanitize` service has been instantiated, this method has no effect.
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* <div class="alert alert-warning">
|
||||||
|
* Keep in mind that extending the built-in list of attributes may expose your app to XSS or
|
||||||
|
* other vulnerabilities. Be very mindful of the attributes you add.
|
||||||
|
* </div>
|
||||||
|
*
|
||||||
|
* @param {Array<String>} attrs - A list of valid attributes.
|
||||||
|
*
|
||||||
|
* @returns {$sanitizeProvider} Returns self for chaining.
|
||||||
|
*/
|
||||||
|
this.addValidAttrs = function(attrs) {
|
||||||
|
if (!hasBeenInstantiated) {
|
||||||
|
extend(validAttrs, arrayToMap(attrs, true));
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Private stuff
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bind = angular.bind;
|
||||||
|
extend = angular.extend;
|
||||||
|
forEach = angular.forEach;
|
||||||
|
isArray = angular.isArray;
|
||||||
|
isDefined = angular.isDefined;
|
||||||
|
lowercase = angular.$$lowercase;
|
||||||
|
noop = angular.noop;
|
||||||
|
|
||||||
|
htmlParser = htmlParserImpl;
|
||||||
|
htmlSanitizeWriter = htmlSanitizeWriterImpl;
|
||||||
|
|
||||||
|
nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {
|
||||||
|
// eslint-disable-next-line no-bitwise
|
||||||
|
return !!(this.compareDocumentPosition(arg) & 16);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Regular Expressions for parsing tags and attributes
|
||||||
|
var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
|
||||||
|
// Match everything outside of normal chars and " (quote character)
|
||||||
|
NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;
|
||||||
|
|
||||||
|
|
||||||
|
// Good source of info about elements and attributes
|
||||||
|
// http://dev.w3.org/html5/spec/Overview.html#semantics
|
||||||
|
// http://simon.html5.org/html-elements
|
||||||
|
|
||||||
|
// Safe Void Elements - HTML5
|
||||||
|
// http://dev.w3.org/html5/spec/Overview.html#void-elements
|
||||||
|
var voidElements = stringToMap('area,br,col,hr,img,wbr');
|
||||||
|
|
||||||
|
// Elements that you can, intentionally, leave open (and which close themselves)
|
||||||
|
// http://dev.w3.org/html5/spec/Overview.html#optional-tags
|
||||||
|
var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),
|
||||||
|
optionalEndTagInlineElements = stringToMap('rp,rt'),
|
||||||
|
optionalEndTagElements = extend({},
|
||||||
|
optionalEndTagInlineElements,
|
||||||
|
optionalEndTagBlockElements);
|
||||||
|
|
||||||
|
// Safe Block Elements - HTML5
|
||||||
|
var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +
|
||||||
|
'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +
|
||||||
|
'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));
|
||||||
|
|
||||||
|
// Inline Elements - HTML5
|
||||||
|
var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +
|
||||||
|
'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +
|
||||||
|
'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));
|
||||||
|
|
||||||
|
// SVG Elements
|
||||||
|
// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
|
||||||
|
// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
|
||||||
|
// They can potentially allow for arbitrary javascript to be executed. See #11290
|
||||||
|
var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +
|
||||||
|
'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +
|
||||||
|
'radialGradient,rect,stop,svg,switch,text,title,tspan');
|
||||||
|
|
||||||
|
// Blocked Elements (will be stripped)
|
||||||
|
var blockedElements = stringToMap('script,style');
|
||||||
|
|
||||||
|
var validElements = extend({},
|
||||||
|
voidElements,
|
||||||
|
blockElements,
|
||||||
|
inlineElements,
|
||||||
|
optionalEndTagElements);
|
||||||
|
|
||||||
|
//Attributes that have href and hence need to be sanitized
|
||||||
|
var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');
|
||||||
|
|
||||||
|
var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
|
||||||
|
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
|
||||||
|
'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
|
||||||
|
'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
|
||||||
|
'valign,value,vspace,width');
|
||||||
|
|
||||||
|
// SVG attributes (without "id" and "name" attributes)
|
||||||
|
// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
|
||||||
|
var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
|
||||||
|
'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
|
||||||
|
'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
|
||||||
|
'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
|
||||||
|
'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
|
||||||
|
'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
|
||||||
|
'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
|
||||||
|
'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
|
||||||
|
'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
|
||||||
|
'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
|
||||||
|
'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
|
||||||
|
'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
|
||||||
|
'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
|
||||||
|
'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
|
||||||
|
'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
|
||||||
|
|
||||||
|
var validAttrs = extend({},
|
||||||
|
uriAttrs,
|
||||||
|
svgAttrs,
|
||||||
|
htmlAttrs);
|
||||||
|
|
||||||
|
function stringToMap(str, lowercaseKeys) {
|
||||||
|
return arrayToMap(str.split(','), lowercaseKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
function arrayToMap(items, lowercaseKeys) {
|
||||||
|
var obj = {}, i;
|
||||||
|
for (i = 0; i < items.length; i++) {
|
||||||
|
obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addElementsTo(elementsMap, newElements) {
|
||||||
|
if (newElements && newElements.length) {
|
||||||
|
extend(elementsMap, arrayToMap(newElements));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an inert document that contains the dirty HTML that needs sanitizing
|
||||||
|
* Depending upon browser support we use one of three strategies for doing this.
|
||||||
|
* Support: Safari 10.x -> XHR strategy
|
||||||
|
* Support: Firefox -> DomParser strategy
|
||||||
|
*/
|
||||||
|
var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {
|
||||||
|
var inertDocument;
|
||||||
|
if (document && document.implementation) {
|
||||||
|
inertDocument = document.implementation.createHTMLDocument('inert');
|
||||||
|
} else {
|
||||||
|
throw $sanitizeMinErr('noinert', 'Can\'t create an inert html document');
|
||||||
|
}
|
||||||
|
var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');
|
||||||
|
|
||||||
|
// Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element
|
||||||
|
inertBodyElement.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>';
|
||||||
|
if (!inertBodyElement.querySelector('svg')) {
|
||||||
|
return getInertBodyElement_XHR;
|
||||||
|
} else {
|
||||||
|
// Check for the Firefox bug - which prevents the inner img JS from being sanitized
|
||||||
|
inertBodyElement.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">';
|
||||||
|
if (inertBodyElement.querySelector('svg img')) {
|
||||||
|
return getInertBodyElement_DOMParser;
|
||||||
|
} else {
|
||||||
|
return getInertBodyElement_InertDocument;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInertBodyElement_XHR(html) {
|
||||||
|
// We add this dummy element to ensure that the rest of the content is parsed as expected
|
||||||
|
// e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
|
||||||
|
html = '<remove></remove>' + html;
|
||||||
|
try {
|
||||||
|
html = encodeURI(html);
|
||||||
|
} catch (e) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
var xhr = new window.XMLHttpRequest();
|
||||||
|
xhr.responseType = 'document';
|
||||||
|
xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);
|
||||||
|
xhr.send(null);
|
||||||
|
var body = xhr.response.body;
|
||||||
|
body.firstChild.remove();
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInertBodyElement_DOMParser(html) {
|
||||||
|
// We add this dummy element to ensure that the rest of the content is parsed as expected
|
||||||
|
// e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
|
||||||
|
html = '<remove></remove>' + html;
|
||||||
|
try {
|
||||||
|
var body = new window.DOMParser().parseFromString(html, 'text/html').body;
|
||||||
|
body.firstChild.remove();
|
||||||
|
return body;
|
||||||
|
} catch (e) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInertBodyElement_InertDocument(html) {
|
||||||
|
inertBodyElement.innerHTML = html;
|
||||||
|
|
||||||
|
// Support: IE 9-11 only
|
||||||
|
// strip custom-namespaced attributes on IE<=11
|
||||||
|
if (document.documentMode) {
|
||||||
|
stripCustomNsAttrs(inertBodyElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
return inertBodyElement;
|
||||||
|
}
|
||||||
|
})(window, window.document);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @example
|
||||||
|
* htmlParser(htmlString, {
|
||||||
|
* start: function(tag, attrs) {},
|
||||||
|
* end: function(tag) {},
|
||||||
|
* chars: function(text) {},
|
||||||
|
* comment: function(text) {}
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* @param {string} html string
|
||||||
|
* @param {object} handler
|
||||||
|
*/
|
||||||
|
function htmlParserImpl(html, handler) {
|
||||||
|
if (html === null || html === undefined) {
|
||||||
|
html = '';
|
||||||
|
} else if (typeof html !== 'string') {
|
||||||
|
html = '' + html;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inertBodyElement = getInertBodyElement(html);
|
||||||
|
if (!inertBodyElement) return '';
|
||||||
|
|
||||||
|
//mXSS protection
|
||||||
|
var mXSSAttempts = 5;
|
||||||
|
do {
|
||||||
|
if (mXSSAttempts === 0) {
|
||||||
|
throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');
|
||||||
|
}
|
||||||
|
mXSSAttempts--;
|
||||||
|
|
||||||
|
// trigger mXSS if it is going to happen by reading and writing the innerHTML
|
||||||
|
html = inertBodyElement.innerHTML;
|
||||||
|
inertBodyElement = getInertBodyElement(html);
|
||||||
|
} while (html !== inertBodyElement.innerHTML);
|
||||||
|
|
||||||
|
var node = inertBodyElement.firstChild;
|
||||||
|
while (node) {
|
||||||
|
switch (node.nodeType) {
|
||||||
|
case 1: // ELEMENT_NODE
|
||||||
|
handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));
|
||||||
|
break;
|
||||||
|
case 3: // TEXT NODE
|
||||||
|
handler.chars(node.textContent);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var nextNode;
|
||||||
|
if (!(nextNode = node.firstChild)) {
|
||||||
|
if (node.nodeType === 1) {
|
||||||
|
handler.end(node.nodeName.toLowerCase());
|
||||||
|
}
|
||||||
|
nextNode = getNonDescendant('nextSibling', node);
|
||||||
|
if (!nextNode) {
|
||||||
|
while (nextNode == null) {
|
||||||
|
node = getNonDescendant('parentNode', node);
|
||||||
|
if (node === inertBodyElement) break;
|
||||||
|
nextNode = getNonDescendant('nextSibling', node);
|
||||||
|
if (node.nodeType === 1) {
|
||||||
|
handler.end(node.nodeName.toLowerCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
node = nextNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((node = inertBodyElement.firstChild)) {
|
||||||
|
inertBodyElement.removeChild(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function attrToMap(attrs) {
|
||||||
|
var map = {};
|
||||||
|
for (var i = 0, ii = attrs.length; i < ii; i++) {
|
||||||
|
var attr = attrs[i];
|
||||||
|
map[attr.name] = attr.value;
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escapes all potentially dangerous characters, so that the
|
||||||
|
* resulting string can be safely inserted into attribute or
|
||||||
|
* element text.
|
||||||
|
* @param value
|
||||||
|
* @returns {string} escaped text
|
||||||
|
*/
|
||||||
|
function encodeEntities(value) {
|
||||||
|
return value.
|
||||||
|
replace(/&/g, '&').
|
||||||
|
replace(SURROGATE_PAIR_REGEXP, function(value) {
|
||||||
|
var hi = value.charCodeAt(0);
|
||||||
|
var low = value.charCodeAt(1);
|
||||||
|
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
|
||||||
|
}).
|
||||||
|
replace(NON_ALPHANUMERIC_REGEXP, function(value) {
|
||||||
|
return '&#' + value.charCodeAt(0) + ';';
|
||||||
|
}).
|
||||||
|
replace(/</g, '<').
|
||||||
|
replace(/>/g, '>');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create an HTML/XML writer which writes to buffer
|
||||||
|
* @param {Array} buf use buf.join('') to get out sanitized html string
|
||||||
|
* @returns {object} in the form of {
|
||||||
|
* start: function(tag, attrs) {},
|
||||||
|
* end: function(tag) {},
|
||||||
|
* chars: function(text) {},
|
||||||
|
* comment: function(text) {}
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
function htmlSanitizeWriterImpl(buf, uriValidator) {
|
||||||
|
var ignoreCurrentElement = false;
|
||||||
|
var out = bind(buf, buf.push);
|
||||||
|
return {
|
||||||
|
start: function(tag, attrs) {
|
||||||
|
tag = lowercase(tag);
|
||||||
|
if (!ignoreCurrentElement && blockedElements[tag]) {
|
||||||
|
ignoreCurrentElement = tag;
|
||||||
|
}
|
||||||
|
if (!ignoreCurrentElement && validElements[tag] === true) {
|
||||||
|
out('<');
|
||||||
|
out(tag);
|
||||||
|
forEach(attrs, function(value, key) {
|
||||||
|
var lkey = lowercase(key);
|
||||||
|
var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
|
||||||
|
if (validAttrs[lkey] === true &&
|
||||||
|
(uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
|
||||||
|
out(' ');
|
||||||
|
out(key);
|
||||||
|
out('="');
|
||||||
|
out(encodeEntities(value));
|
||||||
|
out('"');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
out('>');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
end: function(tag) {
|
||||||
|
tag = lowercase(tag);
|
||||||
|
if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {
|
||||||
|
out('</');
|
||||||
|
out(tag);
|
||||||
|
out('>');
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line eqeqeq
|
||||||
|
if (tag == ignoreCurrentElement) {
|
||||||
|
ignoreCurrentElement = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
chars: function(chars) {
|
||||||
|
if (!ignoreCurrentElement) {
|
||||||
|
out(encodeEntities(chars));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare
|
||||||
|
* ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want
|
||||||
|
* to allow any of these custom attributes. This method strips them all.
|
||||||
|
*
|
||||||
|
* @param node Root element to process
|
||||||
|
*/
|
||||||
|
function stripCustomNsAttrs(node) {
|
||||||
|
while (node) {
|
||||||
|
if (node.nodeType === window.Node.ELEMENT_NODE) {
|
||||||
|
var attrs = node.attributes;
|
||||||
|
for (var i = 0, l = attrs.length; i < l; i++) {
|
||||||
|
var attrNode = attrs[i];
|
||||||
|
var attrName = attrNode.name.toLowerCase();
|
||||||
|
if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {
|
||||||
|
node.removeAttributeNode(attrNode);
|
||||||
|
i--;
|
||||||
|
l--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var nextNode = node.firstChild;
|
||||||
|
if (nextNode) {
|
||||||
|
stripCustomNsAttrs(nextNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
node = getNonDescendant('nextSibling', node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getNonDescendant(propName, node) {
|
||||||
|
// An element is clobbered if its `propName` property points to one of its descendants
|
||||||
|
var nextNode = node[propName];
|
||||||
|
if (nextNode && nodeContains.call(node, nextNode)) {
|
||||||
|
throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);
|
||||||
|
}
|
||||||
|
return nextNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function sanitizeText(chars) {
|
||||||
|
var buf = [];
|
||||||
|
var writer = htmlSanitizeWriter(buf, noop);
|
||||||
|
writer.chars(chars);
|
||||||
|
return buf.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// define ngSanitize module and register $sanitize service
|
||||||
|
angular.module('ngSanitize', [])
|
||||||
|
.provider('$sanitize', $SanitizeProvider)
|
||||||
|
.info({ angularVersion: '1.8.0' });
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc filter
|
||||||
|
* @name linky
|
||||||
|
* @kind function
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and
|
||||||
|
* plain email address links.
|
||||||
|
*
|
||||||
|
* Requires the {@link ngSanitize `ngSanitize`} module to be installed.
|
||||||
|
*
|
||||||
|
* @param {string} text Input text.
|
||||||
|
* @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.
|
||||||
|
* @param {object|function(url)} [attributes] Add custom attributes to the link element.
|
||||||
|
*
|
||||||
|
* Can be one of:
|
||||||
|
*
|
||||||
|
* - `object`: A map of attributes
|
||||||
|
* - `function`: Takes the url as a parameter and returns a map of attributes
|
||||||
|
*
|
||||||
|
* If the map of attributes contains a value for `target`, it overrides the value of
|
||||||
|
* the target parameter.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @returns {string} Html-linkified and {@link $sanitize sanitized} text.
|
||||||
|
*
|
||||||
|
* @usage
|
||||||
|
<span ng-bind-html="linky_expression | linky"></span>
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
<example module="linkyExample" deps="angular-sanitize.js" name="linky-filter">
|
||||||
|
<file name="index.html">
|
||||||
|
<div ng-controller="ExampleController">
|
||||||
|
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Filter</th>
|
||||||
|
<th>Source</th>
|
||||||
|
<th>Rendered</th>
|
||||||
|
</tr>
|
||||||
|
<tr id="linky-filter">
|
||||||
|
<td>linky filter</td>
|
||||||
|
<td>
|
||||||
|
<pre><div ng-bind-html="snippet | linky"><br></div></pre>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div ng-bind-html="snippet | linky"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="linky-target">
|
||||||
|
<td>linky target</td>
|
||||||
|
<td>
|
||||||
|
<pre><div ng-bind-html="snippetWithSingleURL | linky:'_blank'"><br></div></pre>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="linky-custom-attributes">
|
||||||
|
<td>linky custom attributes</td>
|
||||||
|
<td>
|
||||||
|
<pre><div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"><br></div></pre>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="escaped-html">
|
||||||
|
<td>no filter</td>
|
||||||
|
<td><pre><div ng-bind="snippet"><br></div></pre></td>
|
||||||
|
<td><div ng-bind="snippet"></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</file>
|
||||||
|
<file name="script.js">
|
||||||
|
angular.module('linkyExample', ['ngSanitize'])
|
||||||
|
.controller('ExampleController', ['$scope', function($scope) {
|
||||||
|
$scope.snippet =
|
||||||
|
'Pretty text with some links:\n' +
|
||||||
|
'http://angularjs.org/,\n' +
|
||||||
|
'mailto:us@somewhere.org,\n' +
|
||||||
|
'another@somewhere.org,\n' +
|
||||||
|
'and one more: ftp://127.0.0.1/.';
|
||||||
|
$scope.snippetWithSingleURL = 'http://angularjs.org/';
|
||||||
|
}]);
|
||||||
|
</file>
|
||||||
|
<file name="protractor.js" type="protractor">
|
||||||
|
it('should linkify the snippet with urls', function() {
|
||||||
|
expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
|
||||||
|
toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
|
||||||
|
'another@somewhere.org, and one more: ftp://127.0.0.1/.');
|
||||||
|
expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not linkify snippet without the linky filter', function() {
|
||||||
|
expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
|
||||||
|
toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
|
||||||
|
'another@somewhere.org, and one more: ftp://127.0.0.1/.');
|
||||||
|
expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should update', function() {
|
||||||
|
element(by.model('snippet')).clear();
|
||||||
|
element(by.model('snippet')).sendKeys('new http://link.');
|
||||||
|
expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
|
||||||
|
toBe('new http://link.');
|
||||||
|
expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
|
||||||
|
expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
|
||||||
|
.toBe('new http://link.');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should work with the target property', function() {
|
||||||
|
expect(element(by.id('linky-target')).
|
||||||
|
element(by.binding("snippetWithSingleURL | linky:'_blank'")).getText()).
|
||||||
|
toBe('http://angularjs.org/');
|
||||||
|
expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should optionally add custom attributes', function() {
|
||||||
|
expect(element(by.id('linky-custom-attributes')).
|
||||||
|
element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()).
|
||||||
|
toBe('http://angularjs.org/');
|
||||||
|
expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');
|
||||||
|
});
|
||||||
|
</file>
|
||||||
|
</example>
|
||||||
|
*/
|
||||||
|
angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
|
||||||
|
var LINKY_URL_REGEXP =
|
||||||
|
/((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
|
||||||
|
MAILTO_REGEXP = /^mailto:/i;
|
||||||
|
|
||||||
|
var linkyMinErr = angular.$$minErr('linky');
|
||||||
|
var isDefined = angular.isDefined;
|
||||||
|
var isFunction = angular.isFunction;
|
||||||
|
var isObject = angular.isObject;
|
||||||
|
var isString = angular.isString;
|
||||||
|
|
||||||
|
return function(text, target, attributes) {
|
||||||
|
if (text == null || text === '') return text;
|
||||||
|
if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);
|
||||||
|
|
||||||
|
var attributesFn =
|
||||||
|
isFunction(attributes) ? attributes :
|
||||||
|
isObject(attributes) ? function getAttributesObject() {return attributes;} :
|
||||||
|
function getEmptyAttributesObject() {return {};};
|
||||||
|
|
||||||
|
var match;
|
||||||
|
var raw = text;
|
||||||
|
var html = [];
|
||||||
|
var url;
|
||||||
|
var i;
|
||||||
|
while ((match = raw.match(LINKY_URL_REGEXP))) {
|
||||||
|
// We can not end in these as they are sometimes found at the end of the sentence
|
||||||
|
url = match[0];
|
||||||
|
// if we did not match ftp/http/www/mailto then assume mailto
|
||||||
|
if (!match[2] && !match[4]) {
|
||||||
|
url = (match[3] ? 'http://' : 'mailto:') + url;
|
||||||
|
}
|
||||||
|
i = match.index;
|
||||||
|
addText(raw.substr(0, i));
|
||||||
|
addLink(url, match[0].replace(MAILTO_REGEXP, ''));
|
||||||
|
raw = raw.substring(i + match[0].length);
|
||||||
|
}
|
||||||
|
addText(raw);
|
||||||
|
return $sanitize(html.join(''));
|
||||||
|
|
||||||
|
function addText(text) {
|
||||||
|
if (!text) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
html.push(sanitizeText(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function addLink(url, text) {
|
||||||
|
var key, linkAttributes = attributesFn(url);
|
||||||
|
html.push('<a ');
|
||||||
|
|
||||||
|
for (key in linkAttributes) {
|
||||||
|
html.push(key + '="' + linkAttributes[key] + '" ');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDefined(target) && !('target' in linkAttributes)) {
|
||||||
|
html.push('target="',
|
||||||
|
target,
|
||||||
|
'" ');
|
||||||
|
}
|
||||||
|
html.push('href="',
|
||||||
|
url.replace(/"/g, '"'),
|
||||||
|
'">');
|
||||||
|
addText(text);
|
||||||
|
html.push('</a>');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
|
|
||||||
|
})(window, window.angular);
|
18
common/resources/node_modules/angular-sanitize/angular-sanitize.min.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(s,c){'use strict';function P(c){var h=[];C(h,E).chars(c);return h.join("")}var D=c.$$minErr("$sanitize"),F,h,G,H,I,q,E,J,K,C;c.module("ngSanitize",[]).provider("$sanitize",function(){function f(a,e){return B(a.split(","),e)}function B(a,e){var d={},b;for(b=0;b<a.length;b++)d[e?q(a[b]):a[b]]=!0;return d}function t(a,e){e&&e.length&&h(a,B(e))}function Q(a){for(var e={},d=0,b=a.length;d<b;d++){var k=a[d];e[k.name]=k.value}return e}function L(a){return a.replace(/&/g,"&").replace(z,function(a){var d=
|
||||||
|
a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(u,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function A(a){for(;a;){if(a.nodeType===s.Node.ELEMENT_NODE)for(var e=a.attributes,d=0,b=e.length;d<b;d++){var k=e[d],g=k.name.toLowerCase();if("xmlns:ns1"===g||0===g.lastIndexOf("ns1:",0))a.removeAttributeNode(k),d--,b--}(e=a.firstChild)&&A(e);a=v("nextSibling",a)}}function v(a,e){var d=e[a];if(d&&J.call(e,d))throw D("elclob",
|
||||||
|
e.outerHTML||e.outerText);return d}var y=!1,g=!1;this.$get=["$$sanitizeUri",function(a){y=!0;g&&h(m,l);return function(e){var d=[];K(e,C(d,function(b,d){return!/^unsafe:/.test(a(b,d))}));return d.join("")}}];this.enableSvg=function(a){return I(a)?(g=a,this):g};this.addValidElements=function(a){y||(H(a)&&(a={htmlElements:a}),t(l,a.svgElements),t(r,a.htmlVoidElements),t(m,a.htmlVoidElements),t(m,a.htmlElements));return this};this.addValidAttrs=function(a){y||h(M,B(a,!0));return this};F=c.bind;h=c.extend;
|
||||||
|
G=c.forEach;H=c.isArray;I=c.isDefined;q=c.$$lowercase;E=c.noop;K=function(a,e){null===a||void 0===a?a="":"string"!==typeof a&&(a=""+a);var d=N(a);if(!d)return"";var b=5;do{if(0===b)throw D("uinput");b--;a=d.innerHTML;d=N(a)}while(a!==d.innerHTML);for(b=d.firstChild;b;){switch(b.nodeType){case 1:e.start(b.nodeName.toLowerCase(),Q(b.attributes));break;case 3:e.chars(b.textContent)}var k;if(!(k=b.firstChild)&&(1===b.nodeType&&e.end(b.nodeName.toLowerCase()),k=v("nextSibling",b),!k))for(;null==k;){b=
|
||||||
|
v("parentNode",b);if(b===d)break;k=v("nextSibling",b);1===b.nodeType&&e.end(b.nodeName.toLowerCase())}b=k}for(;b=d.firstChild;)d.removeChild(b)};C=function(a,e){var d=!1,b=F(a,a.push);return{start:function(a,g){a=q(a);!d&&w[a]&&(d=a);d||!0!==m[a]||(b("<"),b(a),G(g,function(d,g){var c=q(g),f="img"===a&&"src"===c||"background"===c;!0!==M[c]||!0===O[c]&&!e(d,f)||(b(" "),b(g),b('="'),b(L(d)),b('"'))}),b(">"))},end:function(a){a=q(a);d||!0!==m[a]||!0===r[a]||(b("</"),b(a),b(">"));a==d&&(d=!1)},chars:function(a){d||
|
||||||
|
b(L(a))}}};J=s.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)};var z=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/([^#-~ |!])/g,r=f("area,br,col,hr,img,wbr"),x=f("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),p=f("rp,rt"),n=h({},p,x),x=h({},x,f("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),p=h({},p,f("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
|
||||||
|
l=f("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),w=f("script,style"),m=h({},r,x,p,n),O=f("background,cite,href,longdesc,src,xlink:href,xml:base"),n=f("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
|
||||||
|
p=f("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
|
||||||
|
!0),M=h({},O,p,n),N=function(a,e){function d(b){b="<remove></remove>"+b;try{var d=(new a.DOMParser).parseFromString(b,"text/html").body;d.firstChild.remove();return d}catch(e){}}function b(a){c.innerHTML=a;e.documentMode&&A(c);return c}var g;if(e&&e.implementation)g=e.implementation.createHTMLDocument("inert");else throw D("noinert");var c=(g.documentElement||g.getDocumentElement()).querySelector("body");c.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>';return c.querySelector("svg")?
|
||||||
|
(c.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',c.querySelector("svg img")?d:b):function(b){b="<remove></remove>"+b;try{b=encodeURI(b)}catch(d){return}var e=new a.XMLHttpRequest;e.responseType="document";e.open("GET","data:text/html;charset=utf-8,"+b,!1);e.send(null);b=e.response.body;b.firstChild.remove();return b}}(s,s.document)}).info({angularVersion:"1.8.0"});c.module("ngSanitize").filter("linky",["$sanitize",function(f){var h=/((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
|
||||||
|
t=/^mailto:/i,q=c.$$minErr("linky"),s=c.isDefined,A=c.isFunction,v=c.isObject,y=c.isString;return function(c,z,u){function r(c){c&&l.push(P(c))}function x(c,g){var f,a=p(c);l.push("<a ");for(f in a)l.push(f+'="'+a[f]+'" ');!s(z)||"target"in a||l.push('target="',z,'" ');l.push('href="',c.replace(/"/g,"""),'">');r(g);l.push("</a>")}if(null==c||""===c)return c;if(!y(c))throw q("notstring",c);for(var p=A(u)?u:v(u)?function(){return u}:function(){return{}},n=c,l=[],w,m;c=n.match(h);)w=c[0],c[2]||
|
||||||
|
c[4]||(w=(c[3]?"http://":"mailto:")+w),m=c.index,r(n.substr(0,m)),x(w,c[0].replace(t,"")),n=n.substring(m+c[0].length);r(n);return f(l.join(""))}}])})(window,window.angular);
|
||||||
|
//# sourceMappingURL=angular-sanitize.min.js.map
|
8
common/resources/node_modules/angular-sanitize/angular-sanitize.min.js.map
generated
vendored
Normal file
10
common/resources/node_modules/angular-sanitize/bower.json
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-sanitize",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular-sanitize.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "1.8.0"
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/node_modules/angular-sanitize/index.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
require('./angular-sanitize');
|
||||||
|
module.exports = 'ngSanitize';
|
73
common/resources/node_modules/angular-translate-loader-url/angular-translate-loader-url.js
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateUrlLoader.$inject = ['$q', '$http'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateUrlLoader
|
||||||
|
* @requires $q
|
||||||
|
* @requires $http
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Creates a loading function for a typical dynamic url pattern:
|
||||||
|
* "locale.php?lang=en_US", "locale.php?lang=de_DE", "locale.php?language=nl_NL" etc.
|
||||||
|
* Prefixing the specified url, the current requested, language id will be applied
|
||||||
|
* with "?{queryParameter}={key}".
|
||||||
|
* Using this service, the response of these urls must be an object of
|
||||||
|
* key-value pairs.
|
||||||
|
*
|
||||||
|
* @param {object} options Options object, which gets the url, key and
|
||||||
|
* optional queryParameter ('lang' is used by default).
|
||||||
|
*/
|
||||||
|
.factory('$translateUrlLoader', $translateUrlLoader);
|
||||||
|
|
||||||
|
function $translateUrlLoader($q, $http) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
return function (options) {
|
||||||
|
|
||||||
|
if (!options || !options.url) {
|
||||||
|
throw new Error('Couldn\'t use urlLoader since no url is given!');
|
||||||
|
}
|
||||||
|
|
||||||
|
var requestParams = {};
|
||||||
|
|
||||||
|
requestParams[options.queryParameter || 'lang'] = options.key;
|
||||||
|
|
||||||
|
return $http(angular.extend({
|
||||||
|
url: options.url,
|
||||||
|
params: requestParams,
|
||||||
|
method: 'GET'
|
||||||
|
}, options.$http))
|
||||||
|
.then(function(result) {
|
||||||
|
return result.data;
|
||||||
|
}, function () {
|
||||||
|
return $q.reject(options.key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateUrlLoader.displayName = '$translateUrlLoader';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate-loader-url/angular-translate-loader-url.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(e,t){"function"==typeof define&&define.amd?define([],function(){return t()}):"object"==typeof module&&module.exports?module.exports=t():t()}(0,function(){function e(r,n){"use strict";return function(e){if(!e||!e.url)throw new Error("Couldn't use urlLoader since no url is given!");var t={};return t[e.queryParameter||"lang"]=e.key,n(angular.extend({url:e.url,params:t,method:"GET"},e.$http)).then(function(e){return e.data},function(){return r.reject(e.key)})}}return e.$inject=["$q","$http"],angular.module("pascalprecht.translate").factory("$translateUrlLoader",e),e.displayName="$translateUrlLoader","pascalprecht.translate"});
|
12
common/resources/node_modules/angular-translate-loader-url/bower.json
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "angular-translate-loader-url",
|
||||||
|
"description": "A plugin for Angular Translate",
|
||||||
|
"version": "2.18.2",
|
||||||
|
"main": "./angular-translate-loader-url.js",
|
||||||
|
"ignore": [],
|
||||||
|
"author": "Pascal Precht",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"angular-translate": "~2.18.2"
|
||||||
|
}
|
||||||
|
}
|
21
common/resources/node_modules/angular-translate/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013-2017 The angular-translate team and Pascal Precht
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
50
common/resources/node_modules/angular-translate/dist/angular-translate-handler-log/angular-translate-handler-log.js
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateMissingTranslationHandlerLog.$inject = ['$log'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateMissingTranslationHandlerLog
|
||||||
|
* @requires $log
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Uses angular's `$log` service to give a warning when trying to translate a
|
||||||
|
* translation id which doesn't exist.
|
||||||
|
*
|
||||||
|
* @returns {function} Handler function
|
||||||
|
*/
|
||||||
|
.factory('$translateMissingTranslationHandlerLog', $translateMissingTranslationHandlerLog);
|
||||||
|
|
||||||
|
function $translateMissingTranslationHandlerLog ($log) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
return function (translationId) {
|
||||||
|
$log.warn('Translation for ' + translationId + ' doesn\'t exist');
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateMissingTranslationHandlerLog.displayName = '$translateMissingTranslationHandlerLog';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate/dist/angular-translate-handler-log/angular-translate-handler-log.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(n,t){"function"==typeof define&&define.amd?define([],function(){return t()}):"object"==typeof module&&module.exports?module.exports=t():t()}(0,function(){function n(t){"use strict";return function(n){t.warn("Translation for "+n+" doesn't exist")}}return n.$inject=["$log"],angular.module("pascalprecht.translate").factory("$translateMissingTranslationHandlerLog",n),n.displayName="$translateMissingTranslationHandlerLog","pascalprecht.translate"});
|
@ -0,0 +1,197 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define(["messageformat"], function (a0) {
|
||||||
|
return (factory(a0));
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory(require("messageformat"));
|
||||||
|
} else {
|
||||||
|
factory(root["MessageFormat"]);
|
||||||
|
}
|
||||||
|
}(this, function (MessageFormat) {
|
||||||
|
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc property
|
||||||
|
* @name pascalprecht.translate.TRANSLATE_MF_INTERPOLATION_CACHE
|
||||||
|
* @requires TRANSLATE_MF_INTERPOLATION_CACHE
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Uses MessageFormat.js to interpolate strings against some values.
|
||||||
|
*/
|
||||||
|
.constant('TRANSLATE_MF_INTERPOLATION_CACHE', '$translateMessageFormatInterpolation')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolationProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Configurations for $translateMessageFormatInterpolation
|
||||||
|
*/
|
||||||
|
.provider('$translateMessageFormatInterpolation', $translateMessageFormatInterpolationProvider);
|
||||||
|
|
||||||
|
function $translateMessageFormatInterpolationProvider() {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var configurer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolationProvider#messageFormatConfigurer
|
||||||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolationProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Defines an optional configurer for the MessageFormat instance.
|
||||||
|
*
|
||||||
|
* Note: This hook will be called whenever a new instance of MessageFormat will be created.
|
||||||
|
*
|
||||||
|
* @param {function} fn callback with the instance as argument
|
||||||
|
*/
|
||||||
|
this.messageFormatConfigurer = function (fn) {
|
||||||
|
configurer = fn;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation
|
||||||
|
* @requires pascalprecht.translate.TRANSLATE_MF_INTERPOLATION_CACHE
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Uses MessageFormat.js to interpolate strings against some values.
|
||||||
|
*
|
||||||
|
* Be aware to configure a proper sanitization strategy.
|
||||||
|
*
|
||||||
|
* See also:
|
||||||
|
* * {@link pascalprecht.translate.$translateSanitization}
|
||||||
|
* * {@link https://github.com/SlexAxton/messageformat.js}
|
||||||
|
*
|
||||||
|
* @return {object} $translateMessageFormatInterpolation Interpolator service
|
||||||
|
*/
|
||||||
|
this.$get = ['$translateSanitization', '$cacheFactory', 'TRANSLATE_MF_INTERPOLATION_CACHE', function ($translateSanitization, $cacheFactory, TRANSLATE_MF_INTERPOLATION_CACHE) {
|
||||||
|
return $translateMessageFormatInterpolation($translateSanitization, $cacheFactory, TRANSLATE_MF_INTERPOLATION_CACHE, configurer);
|
||||||
|
}];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function $translateMessageFormatInterpolation($translateSanitization, $cacheFactory, TRANSLATE_MF_INTERPOLATION_CACHE, messageFormatConfigurer) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var $translateInterpolator = {},
|
||||||
|
$cache = $cacheFactory.get(TRANSLATE_MF_INTERPOLATION_CACHE),
|
||||||
|
// instantiate with default locale (which is 'en')
|
||||||
|
$mf = new MessageFormat('en'),
|
||||||
|
$identifier = 'messageformat';
|
||||||
|
|
||||||
|
if (angular.isFunction(messageFormatConfigurer)) {
|
||||||
|
messageFormatConfigurer($mf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$cache) {
|
||||||
|
// create cache if it doesn't exist already
|
||||||
|
$cache = $cacheFactory(TRANSLATE_MF_INTERPOLATION_CACHE);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cache.put('en', $mf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#setLocale
|
||||||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets current locale (this is currently not use in this interpolation).
|
||||||
|
*
|
||||||
|
* @param {string} locale Language key or locale.
|
||||||
|
*/
|
||||||
|
$translateInterpolator.setLocale = function (locale) {
|
||||||
|
$mf = $cache.get(locale);
|
||||||
|
if (!$mf) {
|
||||||
|
$mf = new MessageFormat(locale);
|
||||||
|
if (angular.isFunction(messageFormatConfigurer)) {
|
||||||
|
messageFormatConfigurer($mf);
|
||||||
|
}
|
||||||
|
$cache.put(locale, $mf);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#getInterpolationIdentifier
|
||||||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns an identifier for this interpolation service.
|
||||||
|
*
|
||||||
|
* @returns {string} $identifier
|
||||||
|
*/
|
||||||
|
$translateInterpolator.getInterpolationIdentifier = function () {
|
||||||
|
return $identifier;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated will be removed in 3.0
|
||||||
|
* @see {@link pascalprecht.translate.$translateSanitization}
|
||||||
|
*/
|
||||||
|
$translateInterpolator.useSanitizeValueStrategy = function (value) {
|
||||||
|
$translateSanitization.useStrategy(value);
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#interpolate
|
||||||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Interpolates given string against given interpolate params using MessageFormat.js.
|
||||||
|
*
|
||||||
|
* @returns {string} interpolated string.
|
||||||
|
*/
|
||||||
|
$translateInterpolator.interpolate = function (string, interpolationParams, context, sanitizeStrategy) {
|
||||||
|
interpolationParams = interpolationParams || {};
|
||||||
|
interpolationParams = $translateSanitization.sanitize(interpolationParams, 'params', sanitizeStrategy);
|
||||||
|
|
||||||
|
var compiledFunction = $cache.get('mf:' + string);
|
||||||
|
|
||||||
|
// if given string wasn't compiled yet, we do so now and never have to do it again
|
||||||
|
if (!compiledFunction) {
|
||||||
|
|
||||||
|
// Ensure explicit type if possible
|
||||||
|
// MessageFormat checks the actual type (i.e. for amount based conditions)
|
||||||
|
for (var key in interpolationParams) {
|
||||||
|
if (interpolationParams.hasOwnProperty(key)) {
|
||||||
|
// ensure number
|
||||||
|
var number = parseInt(interpolationParams[key], 10);
|
||||||
|
if (angular.isNumber(number) && ('' + number) === interpolationParams[key]) {
|
||||||
|
interpolationParams[key] = number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compiledFunction = $mf.compile(string);
|
||||||
|
$cache.put('mf:' + string, compiledFunction);
|
||||||
|
}
|
||||||
|
|
||||||
|
var interpolatedText = compiledFunction(interpolationParams);
|
||||||
|
return $translateSanitization.sanitize(interpolatedText, 'text', sanitizeStrategy);
|
||||||
|
};
|
||||||
|
|
||||||
|
return $translateInterpolator;
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateMessageFormatInterpolation.displayName = '$translateMessageFormatInterpolation';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(t,e){"function"==typeof define&&define.amd?define(["messageformat"],function(t){return e(t)}):"object"==typeof module&&module.exports?module.exports=e(require("messageformat")):e(t.MessageFormat)}(this,function(r){function i(u,t,e,n){"use strict";var a={},c=t.get(e),f=new r("en");return angular.isFunction(n)&&n(f),c||(c=t(e)),c.put("en",f),a.setLocale=function(t){(f=c.get(t))||(f=new r(t),angular.isFunction(n)&&n(f),c.put(t,f))},a.getInterpolationIdentifier=function(){return"messageformat"},a.useSanitizeValueStrategy=function(t){return u.useStrategy(t),this},a.interpolate=function(t,e,n,a){e=e||{},e=u.sanitize(e,"params",a);var r=c.get("mf:"+t);if(!r){for(var i in e)if(e.hasOwnProperty(i)){var o=parseInt(e[i],10);angular.isNumber(o)&&""+o===e[i]&&(e[i]=o)}r=f.compile(t),c.put("mf:"+t,r)}var s=r(e);return u.sanitize(s,"text",a)},a}return angular.module("pascalprecht.translate").constant("TRANSLATE_MF_INTERPOLATION_CACHE","$translateMessageFormatInterpolation").provider("$translateMessageFormatInterpolation",function(){"use strict";var a;this.messageFormatConfigurer=function(t){a=t},this.$get=["$translateSanitization","$cacheFactory","TRANSLATE_MF_INTERPOLATION_CACHE",function(t,e,n){return i(t,e,n,a)}]}),i.displayName="$translateMessageFormatInterpolation","pascalprecht.translate"});
|
585
common/resources/node_modules/angular-translate/dist/angular-translate-loader-partial/angular-translate-loader-partial.js
generated
vendored
Normal file
@ -0,0 +1,585 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoaderProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* By using a $translatePartialLoaderProvider you can configure a list of a needed
|
||||||
|
* translation parts directly during the configuration phase of your application's
|
||||||
|
* lifetime. All parts you add by using this provider would be loaded by
|
||||||
|
* angular-translate at the startup as soon as possible.
|
||||||
|
*/
|
||||||
|
.provider('$translatePartialLoader', $translatePartialLoader);
|
||||||
|
|
||||||
|
function $translatePartialLoader() {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @name Part
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Represents Part object to add and set parts at runtime.
|
||||||
|
*/
|
||||||
|
function Part(name, priority, urlTemplate) {
|
||||||
|
this.name = name;
|
||||||
|
this.isActive = true;
|
||||||
|
this.tables = {};
|
||||||
|
this.priority = priority || 0;
|
||||||
|
this.langPromises = {};
|
||||||
|
this.urlTemplate = urlTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name parseUrl
|
||||||
|
* @method
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns a parsed url template string and replaces given target lang
|
||||||
|
* and part name it.
|
||||||
|
*
|
||||||
|
* @param {string|function} urlTemplate - Either a string containing an url pattern (with
|
||||||
|
* '{part}' and '{lang}') or a function(part, lang)
|
||||||
|
* returning a string.
|
||||||
|
* @param {string} targetLang - Language key for language to be used.
|
||||||
|
* @return {string} Parsed url template string
|
||||||
|
*/
|
||||||
|
Part.prototype.parseUrl = function (urlTemplate, targetLang) {
|
||||||
|
if (angular.isFunction(urlTemplate)) {
|
||||||
|
return urlTemplate(this.name, targetLang);
|
||||||
|
}
|
||||||
|
return urlTemplate.replace(/\{part\}/g, this.name).replace(/\{lang\}/g, targetLang);
|
||||||
|
};
|
||||||
|
|
||||||
|
Part.prototype.getTable = function (lang, $q, $http, $httpOptions, urlTemplate, errorHandler) {
|
||||||
|
|
||||||
|
//locals
|
||||||
|
var self = this;
|
||||||
|
var lastLangPromise = this.langPromises[lang];
|
||||||
|
var deferred = $q.defer();
|
||||||
|
|
||||||
|
//private helper helpers
|
||||||
|
var fetchData = function () {
|
||||||
|
return $http(
|
||||||
|
angular.extend({
|
||||||
|
method : 'GET',
|
||||||
|
url : self.parseUrl(self.urlTemplate || urlTemplate, lang)
|
||||||
|
},
|
||||||
|
$httpOptions)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//private helper
|
||||||
|
var handleNewData = function (data) {
|
||||||
|
self.tables[lang] = data;
|
||||||
|
deferred.resolve(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
//private helper
|
||||||
|
var rejectDeferredWithPartName = function () {
|
||||||
|
deferred.reject(self.name);
|
||||||
|
};
|
||||||
|
|
||||||
|
//private helper
|
||||||
|
var tryGettingThisTable = function () {
|
||||||
|
//data fetching logic
|
||||||
|
fetchData().then(
|
||||||
|
function (result) {
|
||||||
|
handleNewData(result.data);
|
||||||
|
},
|
||||||
|
function (errorResponse) {
|
||||||
|
if (errorHandler) {
|
||||||
|
errorHandler(self.name, lang, errorResponse).then(handleNewData, rejectDeferredWithPartName);
|
||||||
|
} else {
|
||||||
|
rejectDeferredWithPartName();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
//loading logic
|
||||||
|
if (!this.tables[lang]) {
|
||||||
|
//let's try loading the data
|
||||||
|
if (!lastLangPromise) {
|
||||||
|
//this is the first request - just go ahead and hit the server
|
||||||
|
tryGettingThisTable();
|
||||||
|
} else {
|
||||||
|
//this is an additional request after one or more unfinished or failed requests
|
||||||
|
//chain the deferred off the previous request's promise so that this request conditionally executes
|
||||||
|
//if the previous request succeeds then the result will be passed through, but if it fails then this request will try again and hit the server
|
||||||
|
lastLangPromise.then(deferred.resolve, tryGettingThisTable);
|
||||||
|
}
|
||||||
|
//retain a reference to the last promise so we can continue the chain if another request is made before any succeed
|
||||||
|
//you can picture the promise chain as a singly-linked list (formed by the .then handler queues) that's traversed by the execution context
|
||||||
|
this.langPromises[lang] = deferred.promise;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//the part has already been loaded - if lastLangPromise is also undefined then the table has been populated using setPart
|
||||||
|
//this breaks the promise chain because we're not tying langDeferred's outcome to a previous call's promise handler queues, but we don't care because there's no asynchronous execution context to keep track of anymore
|
||||||
|
deferred.resolve(this.tables[lang]);
|
||||||
|
}
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
var parts = {};
|
||||||
|
|
||||||
|
function hasPart(name) {
|
||||||
|
return Object.prototype.hasOwnProperty.call(parts, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStringValid(str) {
|
||||||
|
return angular.isString(str) && str !== '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function isPartAvailable(name) {
|
||||||
|
if (!isStringValid(name)) {
|
||||||
|
throw new TypeError('Invalid type of a first argument, a non-empty string expected.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return (hasPart(name) && parts[name].isActive);
|
||||||
|
}
|
||||||
|
|
||||||
|
function deepExtend(dst, src) {
|
||||||
|
for (var property in src) {
|
||||||
|
if (src[property] && src[property].constructor &&
|
||||||
|
src[property].constructor === Object) {
|
||||||
|
dst[property] = dst[property] || {};
|
||||||
|
deepExtend(dst[property], src[property]);
|
||||||
|
} else {
|
||||||
|
dst[property] = src[property];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPrioritizedParts() {
|
||||||
|
var prioritizedParts = [];
|
||||||
|
for (var part in parts) {
|
||||||
|
if (parts[part].isActive) {
|
||||||
|
prioritizedParts.push(parts[part]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prioritizedParts.sort(function (a, b) {
|
||||||
|
return a.priority - b.priority;
|
||||||
|
});
|
||||||
|
return prioritizedParts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoaderProvider#addPart
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoaderProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Registers a new part of the translation table to be loaded once the
|
||||||
|
* `angular-translate` gets into runtime phase. It does not actually load any
|
||||||
|
* translation data, but only registers a part to be loaded in the future.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to add
|
||||||
|
* @param {int} [priority=0] Sets the load priority of this part.
|
||||||
|
* @param {string|function} urlTemplate Either a string containing an url pattern (with
|
||||||
|
* '{part}' and '{lang}') or a function(part, lang)
|
||||||
|
* returning a string.
|
||||||
|
*
|
||||||
|
* @returns {object} $translatePartialLoaderProvider, so this method is chainable
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param
|
||||||
|
* of the wrong type. Please, note that the `name` param has to be a
|
||||||
|
* non-empty **string**.
|
||||||
|
*/
|
||||||
|
this.addPart = function (name, priority, urlTemplate) {
|
||||||
|
if (!isStringValid(name)) {
|
||||||
|
throw new TypeError('Couldn\'t add part, part name has to be a string!');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasPart(name)) {
|
||||||
|
parts[name] = new Part(name, priority, urlTemplate);
|
||||||
|
}
|
||||||
|
parts[name].isActive = true;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdocs function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoaderProvider#setPart
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoaderProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets a translation table to the specified part. This method does not make the
|
||||||
|
* specified part available, but only avoids loading this part from the server.
|
||||||
|
*
|
||||||
|
* @param {string} lang A language of the given translation table
|
||||||
|
* @param {string} part A name of the target part
|
||||||
|
* @param {object} table A translation table to set to the specified part
|
||||||
|
*
|
||||||
|
* @return {object} $translatePartialLoaderProvider, so this method is chainable
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass params
|
||||||
|
* of the wrong type. Please, note that the `lang` and `part` params have to be a
|
||||||
|
* non-empty **string**s and the `table` param has to be an object.
|
||||||
|
*/
|
||||||
|
this.setPart = function (lang, part, table) {
|
||||||
|
if (!isStringValid(lang)) {
|
||||||
|
throw new TypeError('Couldn\'t set part.`lang` parameter has to be a string!');
|
||||||
|
}
|
||||||
|
if (!isStringValid(part)) {
|
||||||
|
throw new TypeError('Couldn\'t set part.`part` parameter has to be a string!');
|
||||||
|
}
|
||||||
|
if (typeof table !== 'object' || table === null) {
|
||||||
|
throw new TypeError('Couldn\'t set part. `table` parameter has to be an object!');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasPart(part)) {
|
||||||
|
parts[part] = new Part(part);
|
||||||
|
parts[part].isActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
parts[part].tables[lang] = table;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoaderProvider#deletePart
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoaderProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Removes the previously added part of the translation data. So, `angular-translate` will not
|
||||||
|
* load it at the startup.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to delete
|
||||||
|
*
|
||||||
|
* @returns {object} $translatePartialLoaderProvider, so this method is chainable
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param of the wrong
|
||||||
|
* type. Please, note that the `name` param has to be a non-empty **string**.
|
||||||
|
*/
|
||||||
|
this.deletePart = function (name) {
|
||||||
|
if (!isStringValid(name)) {
|
||||||
|
throw new TypeError('Couldn\'t delete part, first arg has to be string.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasPart(name)) {
|
||||||
|
parts[name].isActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoaderProvider#isPartAvailable
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoaderProvider
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Checks if the specific part is available. A part becomes available after it was added by the
|
||||||
|
* `addPart` method. Available parts would be loaded from the server once the `angular-translate`
|
||||||
|
* asks the loader to that.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to check
|
||||||
|
*
|
||||||
|
* @returns {boolean} Returns **true** if the part is available now and **false** if not.
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param of the wrong
|
||||||
|
* type. Please, note that the `name` param has to be a non-empty **string**.
|
||||||
|
*/
|
||||||
|
this.isPartAvailable = isPartAvailable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @requires $q
|
||||||
|
* @requires $http
|
||||||
|
* @requires $injector
|
||||||
|
* @requires $rootScope
|
||||||
|
* @requires $translate
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
*
|
||||||
|
* @param {object} options Options object
|
||||||
|
*
|
||||||
|
* @throws {TypeError}
|
||||||
|
*/
|
||||||
|
this.$get = ['$rootScope', '$injector', '$q', '$http', '$log',
|
||||||
|
function ($rootScope, $injector, $q, $http, $log) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc event
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#$translatePartialLoaderStructureChanged
|
||||||
|
* @eventOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
* @eventType broadcast on root scope
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* A $translatePartialLoaderStructureChanged event is called when a state of the loader was
|
||||||
|
* changed somehow. It could mean either some part is added or some part is deleted. Anyway when
|
||||||
|
* you get this event the translation table is not longer current and has to be updated.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part which is a reason why the event was fired
|
||||||
|
*/
|
||||||
|
|
||||||
|
var service = function (options) {
|
||||||
|
if (!isStringValid(options.key)) {
|
||||||
|
throw new TypeError('Unable to load data, a key is not a non-empty string.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isStringValid(options.urlTemplate) && !angular.isFunction(options.urlTemplate)) {
|
||||||
|
throw new TypeError('Unable to load data, a urlTemplate is not a non-empty string or not a function.');
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorHandler = options.loadFailureHandler;
|
||||||
|
if (errorHandler !== undefined) {
|
||||||
|
if (!angular.isString(errorHandler)) {
|
||||||
|
throw new Error('Unable to load data, a loadFailureHandler is not a string.');
|
||||||
|
} else {
|
||||||
|
errorHandler = $injector.get(errorHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var loaders = [],
|
||||||
|
prioritizedParts = getPrioritizedParts();
|
||||||
|
|
||||||
|
angular.forEach(prioritizedParts, function (part) {
|
||||||
|
loaders.push(
|
||||||
|
part.getTable(options.key, $q, $http, options.$http, options.urlTemplate, errorHandler)
|
||||||
|
);
|
||||||
|
part.urlTemplate = part.urlTemplate || options.urlTemplate;
|
||||||
|
});
|
||||||
|
|
||||||
|
// workaround for #1781
|
||||||
|
var structureHasBeenChangedWhileLoading = false;
|
||||||
|
var dirtyCheckEventCloser = $rootScope.$on('$translatePartialLoaderStructureChanged', function () {
|
||||||
|
structureHasBeenChangedWhileLoading = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
return $q.all(loaders)
|
||||||
|
.then(function () {
|
||||||
|
dirtyCheckEventCloser();
|
||||||
|
if (structureHasBeenChangedWhileLoading) {
|
||||||
|
if (!options.__retries) {
|
||||||
|
// the part structure has been changed while loading (the origin ones)
|
||||||
|
// this can happen if an addPart/removePart has been invoked right after a $translate.use(lang)
|
||||||
|
// TODO maybe we can optimize this with the actual list of missing parts
|
||||||
|
options.__retries = (options.__retries || 0) + 1;
|
||||||
|
return service(options);
|
||||||
|
} else {
|
||||||
|
// the part structure has been changed again while loading (retried one)
|
||||||
|
// because this could an infinite loop, this will not load another one again
|
||||||
|
$log.warn('The partial loader has detected a multiple structure change (with addPort/removePart) ' +
|
||||||
|
'while loading translations. You should consider using promises of $translate.use(lang) and ' +
|
||||||
|
'$translate.refresh(). Also parts should be added/removed right before an explicit refresh ' +
|
||||||
|
'if possible.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var table = {};
|
||||||
|
prioritizedParts = getPrioritizedParts();
|
||||||
|
angular.forEach(prioritizedParts, function (part) {
|
||||||
|
deepExtend(table, part.tables[options.key]);
|
||||||
|
});
|
||||||
|
return table;
|
||||||
|
}, function () {
|
||||||
|
dirtyCheckEventCloser();
|
||||||
|
return $q.reject(options.key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#addPart
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Registers a new part of the translation table. This method does not actually perform any xhr
|
||||||
|
* requests to get translation data. The new parts will be loaded in order of priority from the server next time
|
||||||
|
* `angular-translate` asks the loader to load translations.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to add
|
||||||
|
* @param {int} [priority=0] Sets the load priority of this part.
|
||||||
|
*
|
||||||
|
* @returns {object} $translatePartialLoader, so this method is chainable
|
||||||
|
*
|
||||||
|
* @fires {$translatePartialLoaderStructureChanged} The $translatePartialLoaderStructureChanged
|
||||||
|
* event would be fired by this method in case the new part affected somehow on the loaders
|
||||||
|
* state. This way it means that there are a new translation data available to be loaded from
|
||||||
|
* the server.
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param of the wrong
|
||||||
|
* type. Please, note that the `name` param has to be a non-empty **string**.
|
||||||
|
*/
|
||||||
|
service.addPart = function (name, priority, urlTemplate) {
|
||||||
|
if (!isStringValid(name)) {
|
||||||
|
throw new TypeError('Couldn\'t add part, first arg has to be a string');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasPart(name)) {
|
||||||
|
parts[name] = new Part(name, priority, urlTemplate);
|
||||||
|
$rootScope.$emit('$translatePartialLoaderStructureChanged', name);
|
||||||
|
} else if (!parts[name].isActive) {
|
||||||
|
parts[name].isActive = true;
|
||||||
|
$rootScope.$emit('$translatePartialLoaderStructureChanged', name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return service;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#deletePart
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Deletes the previously added part of the translation data. The target part could be deleted
|
||||||
|
* either logically or physically. When the data is deleted logically it is not actually deleted
|
||||||
|
* from the browser, but the loader marks it as not active and prevents it from affecting on the
|
||||||
|
* translations. If the deleted in such way part is added again, the loader will use the
|
||||||
|
* previously loaded data rather than loading it from the server once more time. But if the data
|
||||||
|
* is deleted physically, the loader will completely remove all information about it. So in case
|
||||||
|
* of recycling this part will be loaded from the server again.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to delete
|
||||||
|
* @param {boolean=} [removeData=false] An indicator if the loader has to remove a loaded
|
||||||
|
* translation data physically. If the `removeData` if set to **false** the loaded data will not be
|
||||||
|
* deleted physically and might be reused in the future to prevent an additional xhr requests.
|
||||||
|
*
|
||||||
|
* @returns {object} $translatePartialLoader, so this method is chainable
|
||||||
|
*
|
||||||
|
* @fires {$translatePartialLoaderStructureChanged} The $translatePartialLoaderStructureChanged
|
||||||
|
* event would be fired by this method in case a part deletion process affects somehow on the
|
||||||
|
* loaders state. This way it means that some part of the translation data is now deprecated and
|
||||||
|
* the translation table has to be recompiled with the remaining translation parts.
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass some param of the
|
||||||
|
* wrong type. Please, note that the `name` param has to be a non-empty **string** and
|
||||||
|
* the `removeData` param has to be either **undefined** or **boolean**.
|
||||||
|
*/
|
||||||
|
service.deletePart = function (name, removeData) {
|
||||||
|
if (!isStringValid(name)) {
|
||||||
|
throw new TypeError('Couldn\'t delete part, first arg has to be string');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removeData === undefined) {
|
||||||
|
removeData = false;
|
||||||
|
} else if (typeof removeData !== 'boolean') {
|
||||||
|
throw new TypeError('Invalid type of a second argument, a boolean expected.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasPart(name)) {
|
||||||
|
var wasActive = parts[name].isActive;
|
||||||
|
if (removeData) {
|
||||||
|
var $translate = $injector.get('$translate');
|
||||||
|
var cache = $translate.loaderCache();
|
||||||
|
if (typeof(cache) === 'string') {
|
||||||
|
// getting on-demand instance of loader
|
||||||
|
cache = $injector.get(cache);
|
||||||
|
}
|
||||||
|
// Purging items from cache...
|
||||||
|
if (typeof(cache) === 'object') {
|
||||||
|
angular.forEach(parts[name].tables, function (value, key) {
|
||||||
|
cache.remove(parts[name].parseUrl(parts[name].urlTemplate, key));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
delete parts[name];
|
||||||
|
} else {
|
||||||
|
parts[name].isActive = false;
|
||||||
|
}
|
||||||
|
if (wasActive) {
|
||||||
|
$rootScope.$emit('$translatePartialLoaderStructureChanged', name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return service;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#isPartLoaded
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Checks if the registered translation part is loaded into the translation table.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part
|
||||||
|
* @param {string} lang A key of the language
|
||||||
|
*
|
||||||
|
* @returns {boolean} Returns **true** if the translation of the part is loaded to the translation table and **false** if not.
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param of the wrong
|
||||||
|
* type. Please, note that the `name` and `lang` params have to be non-empty **string**.
|
||||||
|
*/
|
||||||
|
service.isPartLoaded = function (name, lang) {
|
||||||
|
return angular.isDefined(parts[name]) && angular.isDefined(parts[name].tables[lang]);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#getRegisteredParts
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Gets names of the parts that were added with the `addPart`.
|
||||||
|
*
|
||||||
|
* @returns {array} Returns array of registered parts, if none were registered then an empty array is returned.
|
||||||
|
*/
|
||||||
|
service.getRegisteredParts = function () {
|
||||||
|
var registeredParts = [];
|
||||||
|
angular.forEach(parts, function (p) {
|
||||||
|
if (p.isActive) {
|
||||||
|
registeredParts.push(p.name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return registeredParts;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translatePartialLoader#isPartAvailable
|
||||||
|
* @methodOf pascalprecht.translate.$translatePartialLoader
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Checks if a target translation part is available. The part becomes available just after it was
|
||||||
|
* added by the `addPart` method. Part's availability does not mean that it was loaded from the
|
||||||
|
* server, but only that it was added to the loader. The available part might be loaded next
|
||||||
|
* time the loader is called.
|
||||||
|
*
|
||||||
|
* @param {string} name A name of the part to delete
|
||||||
|
*
|
||||||
|
* @returns {boolean} Returns **true** if the part is available now and **false** if not.
|
||||||
|
*
|
||||||
|
* @throws {TypeError} The method could throw a **TypeError** if you pass the param of the wrong
|
||||||
|
* type. Please, note that the `name` param has to be a non-empty **string**.
|
||||||
|
*/
|
||||||
|
service.isPartAvailable = isPartAvailable;
|
||||||
|
|
||||||
|
return service;
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$translatePartialLoader.displayName = '$translatePartialLoader';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate/dist/angular-translate-loader-partial/angular-translate-loader-partial.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(t,e){"function"==typeof define&&define.amd?define([],function(){return e()}):"object"==typeof module&&module.exports?module.exports=e():e()}(0,function(){function t(){"use strict";function a(t,e,r){this.name=t,this.isActive=!0,this.tables={},this.priority=e||0,this.langPromises={},this.urlTemplate=r}a.prototype.parseUrl=function(t,e){return angular.isFunction(t)?t(this.name,e):t.replace(/\{part\}/g,this.name).replace(/\{lang\}/g,e)},a.prototype.getTable=function(e,t,r,a,n,i){var o=this,s=this.langPromises[e],l=t.defer(),u=function(t){o.tables[e]=t,l.resolve(t)},c=function(){l.reject(o.name)},p=function(){r(angular.extend({method:"GET",url:o.parseUrl(o.urlTemplate||n,e)},a)).then(function(t){u(t.data)},function(t){i?i(o.name,e,t).then(u,c):c()})};return this.tables[e]?l.resolve(this.tables[e]):(s?s.then(l.resolve,p):p(),this.langPromises[e]=l.promise),l.promise};var n={};function i(t){return Object.prototype.hasOwnProperty.call(n,t)}function f(t){return angular.isString(t)&&""!==t}function t(t){if(!f(t))throw new TypeError("Invalid type of a first argument, a non-empty string expected.");return i(t)&&n[t].isActive}function d(){var t=[];for(var e in n)n[e].isActive&&t.push(n[e]);return t.sort(function(t,e){return t.priority-e.priority}),t}this.addPart=function(t,e,r){if(!f(t))throw new TypeError("Couldn't add part, part name has to be a string!");return i(t)||(n[t]=new a(t,e,r)),n[t].isActive=!0,this},this.setPart=function(t,e,r){if(!f(t))throw new TypeError("Couldn't set part.`lang` parameter has to be a string!");if(!f(e))throw new TypeError("Couldn't set part.`part` parameter has to be a string!");if("object"!=typeof r||null===r)throw new TypeError("Couldn't set part. `table` parameter has to be an object!");return i(e)||(n[e]=new a(e),n[e].isActive=!1),n[e].tables[t]=r,this},this.deletePart=function(t){if(!f(t))throw new TypeError("Couldn't delete part, first arg has to be string.");return i(t)&&(n[t].isActive=!1),this},this.isPartAvailable=t,this.$get=["$rootScope","$injector","$q","$http","$log",function(o,s,l,u,c){var p=function(r){if(!f(r.key))throw new TypeError("Unable to load data, a key is not a non-empty string.");if(!f(r.urlTemplate)&&!angular.isFunction(r.urlTemplate))throw new TypeError("Unable to load data, a urlTemplate is not a non-empty string or not a function.");var e=r.loadFailureHandler;if(void 0!==e){if(!angular.isString(e))throw new Error("Unable to load data, a loadFailureHandler is not a string.");e=s.get(e)}var a=[],t=d();angular.forEach(t,function(t){a.push(t.getTable(r.key,l,u,r.$http,r.urlTemplate,e)),t.urlTemplate=t.urlTemplate||r.urlTemplate});var n=!1,i=o.$on("$translatePartialLoaderStructureChanged",function(){n=!0});return l.all(a).then(function(){if(i(),n){if(!r.__retries)return r.__retries=(r.__retries||0)+1,p(r);c.warn("The partial loader has detected a multiple structure change (with addPort/removePart) while loading translations. You should consider using promises of $translate.use(lang) and $translate.refresh(). Also parts should be added/removed right before an explicit refresh if possible.")}var e={};return t=d(),angular.forEach(t,function(t){!function t(e,r){for(var a in r)r[a]&&r[a].constructor&&r[a].constructor===Object?(e[a]=e[a]||{},t(e[a],r[a])):e[a]=r[a];return e}(e,t.tables[r.key])}),e},function(){return i(),l.reject(r.key)})};return p.addPart=function(t,e,r){if(!f(t))throw new TypeError("Couldn't add part, first arg has to be a string");return i(t)?n[t].isActive||(n[t].isActive=!0,o.$emit("$translatePartialLoaderStructureChanged",t)):(n[t]=new a(t,e,r),o.$emit("$translatePartialLoaderStructureChanged",t)),p},p.deletePart=function(r,t){if(!f(r))throw new TypeError("Couldn't delete part, first arg has to be string");if(void 0===t)t=!1;else if("boolean"!=typeof t)throw new TypeError("Invalid type of a second argument, a boolean expected.");if(i(r)){var e=n[r].isActive;if(t){var a=s.get("$translate").loaderCache();"string"==typeof a&&(a=s.get(a)),"object"==typeof a&&angular.forEach(n[r].tables,function(t,e){a.remove(n[r].parseUrl(n[r].urlTemplate,e))}),delete n[r]}else n[r].isActive=!1;e&&o.$emit("$translatePartialLoaderStructureChanged",r)}return p},p.isPartLoaded=function(t,e){return angular.isDefined(n[t])&&angular.isDefined(n[t].tables[e])},p.getRegisteredParts=function(){var e=[];return angular.forEach(n,function(t){t.isActive&&e.push(t.name)}),e},p.isPartAvailable=t,p}]}return angular.module("pascalprecht.translate").provider("$translatePartialLoader",t),t.displayName="$translatePartialLoader","pascalprecht.translate"});
|
112
common/resources/node_modules/angular-translate/dist/angular-translate-loader-static-files/angular-translate-loader-static-files.js
generated
vendored
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateStaticFilesLoader.$inject = ['$q', '$http'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateStaticFilesLoader
|
||||||
|
* @requires $q
|
||||||
|
* @requires $http
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Creates a loading function for a typical static file url pattern:
|
||||||
|
* "lang-en_US.json", "lang-de_DE.json", etc. Using this builder,
|
||||||
|
* the response of these urls must be an object of key-value pairs.
|
||||||
|
*
|
||||||
|
* @param {object} options Options object, which gets prefix, suffix, key, and fileMap
|
||||||
|
*/
|
||||||
|
.factory('$translateStaticFilesLoader', $translateStaticFilesLoader);
|
||||||
|
|
||||||
|
function $translateStaticFilesLoader($q, $http) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
return function (options) {
|
||||||
|
|
||||||
|
if (!options || (!angular.isArray(options.files) && (!angular.isString(options.prefix) || !angular.isString(options.suffix)))) {
|
||||||
|
throw new Error('Couldn\'t load static files, no files and prefix or suffix specified!');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.files) {
|
||||||
|
options.files = [{
|
||||||
|
prefix: options.prefix,
|
||||||
|
suffix: options.suffix
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
var load = function (file) {
|
||||||
|
if (!file || (!angular.isString(file.prefix) || !angular.isString(file.suffix))) {
|
||||||
|
throw new Error('Couldn\'t load static file, no prefix or suffix specified!');
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileUrl = [
|
||||||
|
file.prefix,
|
||||||
|
options.key,
|
||||||
|
file.suffix
|
||||||
|
].join('');
|
||||||
|
|
||||||
|
if (angular.isObject(options.fileMap) && options.fileMap[fileUrl]) {
|
||||||
|
fileUrl = options.fileMap[fileUrl];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $http(angular.extend({
|
||||||
|
url: fileUrl,
|
||||||
|
method: 'GET'
|
||||||
|
}, options.$http))
|
||||||
|
.then(function(result) {
|
||||||
|
return result.data;
|
||||||
|
}, function () {
|
||||||
|
return $q.reject(options.key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var promises = [],
|
||||||
|
length = options.files.length;
|
||||||
|
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
promises.push(load({
|
||||||
|
prefix: options.files[i].prefix,
|
||||||
|
key: options.key,
|
||||||
|
suffix: options.files[i].suffix
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $q.all(promises)
|
||||||
|
.then(function (data) {
|
||||||
|
var length = data.length,
|
||||||
|
mergedData = {};
|
||||||
|
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
for (var key in data[i]) {
|
||||||
|
mergedData[key] = data[i][key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mergedData;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateStaticFilesLoader.displayName = '$translateStaticFilesLoader';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(e,i){"function"==typeof define&&define.amd?define([],function(){return i()}):"object"==typeof module&&module.exports?module.exports=i():i()}(0,function(){function e(n,a){"use strict";return function(r){if(!(r&&(angular.isArray(r.files)||angular.isString(r.prefix)&&angular.isString(r.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");r.files||(r.files=[{prefix:r.prefix,suffix:r.suffix}]);for(var e=function(e){if(!e||!angular.isString(e.prefix)||!angular.isString(e.suffix))throw new Error("Couldn't load static file, no prefix or suffix specified!");var i=[e.prefix,r.key,e.suffix].join("");return angular.isObject(r.fileMap)&&r.fileMap[i]&&(i=r.fileMap[i]),a(angular.extend({url:i,method:"GET"},r.$http)).then(function(e){return e.data},function(){return n.reject(r.key)})},i=[],t=r.files.length,f=0;f<t;f++)i.push(e({prefix:r.files[f].prefix,key:r.key,suffix:r.files[f].suffix}));return n.all(i).then(function(e){for(var i=e.length,r={},t=0;t<i;t++)for(var f in e[t])r[f]=e[t][f];return r})}}return e.$inject=["$q","$http"],angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",e),e.displayName="$translateStaticFilesLoader","pascalprecht.translate"});
|
73
common/resources/node_modules/angular-translate/dist/angular-translate-loader-url/angular-translate-loader-url.js
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateUrlLoader.$inject = ['$q', '$http'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateUrlLoader
|
||||||
|
* @requires $q
|
||||||
|
* @requires $http
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Creates a loading function for a typical dynamic url pattern:
|
||||||
|
* "locale.php?lang=en_US", "locale.php?lang=de_DE", "locale.php?language=nl_NL" etc.
|
||||||
|
* Prefixing the specified url, the current requested, language id will be applied
|
||||||
|
* with "?{queryParameter}={key}".
|
||||||
|
* Using this service, the response of these urls must be an object of
|
||||||
|
* key-value pairs.
|
||||||
|
*
|
||||||
|
* @param {object} options Options object, which gets the url, key and
|
||||||
|
* optional queryParameter ('lang' is used by default).
|
||||||
|
*/
|
||||||
|
.factory('$translateUrlLoader', $translateUrlLoader);
|
||||||
|
|
||||||
|
function $translateUrlLoader($q, $http) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
return function (options) {
|
||||||
|
|
||||||
|
if (!options || !options.url) {
|
||||||
|
throw new Error('Couldn\'t use urlLoader since no url is given!');
|
||||||
|
}
|
||||||
|
|
||||||
|
var requestParams = {};
|
||||||
|
|
||||||
|
requestParams[options.queryParameter || 'lang'] = options.key;
|
||||||
|
|
||||||
|
return $http(angular.extend({
|
||||||
|
url: options.url,
|
||||||
|
params: requestParams,
|
||||||
|
method: 'GET'
|
||||||
|
}, options.$http))
|
||||||
|
.then(function(result) {
|
||||||
|
return result.data;
|
||||||
|
}, function () {
|
||||||
|
return $q.reject(options.key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateUrlLoader.displayName = '$translateUrlLoader';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate/dist/angular-translate-loader-url/angular-translate-loader-url.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(e,t){"function"==typeof define&&define.amd?define([],function(){return t()}):"object"==typeof module&&module.exports?module.exports=t():t()}(0,function(){function e(r,n){"use strict";return function(e){if(!e||!e.url)throw new Error("Couldn't use urlLoader since no url is given!");var t={};return t[e.queryParameter||"lang"]=e.key,n(angular.extend({url:e.url,params:t,method:"GET"},e.$http)).then(function(e){return e.data},function(){return r.reject(e.key)})}}return e.$inject=["$q","$http"],angular.module("pascalprecht.translate").factory("$translateUrlLoader",e),e.displayName="$translateUrlLoader","pascalprecht.translate"});
|
121
common/resources/node_modules/angular-translate/dist/angular-translate-storage-cookie/angular-translate-storage-cookie.js
generated
vendored
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateCookieStorageFactory.$inject = ['$injector'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateCookieStorage
|
||||||
|
* @requires $cookieStore
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Abstraction layer for cookieStore. This service is used when telling angular-translate
|
||||||
|
* to use cookieStore as storage.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.factory('$translateCookieStorage', $translateCookieStorageFactory);
|
||||||
|
|
||||||
|
function $translateCookieStorageFactory($injector) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Since AngularJS 1.4, $cookieStore is deprecated
|
||||||
|
var delegate;
|
||||||
|
if (angular.version.major === 1 && angular.version.minor >= 4) {
|
||||||
|
var $cookies = $injector.get('$cookies');
|
||||||
|
delegate = {
|
||||||
|
get : function (key) {
|
||||||
|
return $cookies.get(key);
|
||||||
|
},
|
||||||
|
put : function (key, value) {
|
||||||
|
$cookies.put(key, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
var $cookieStore = $injector.get('$cookieStore');
|
||||||
|
delegate = {
|
||||||
|
get : function (key) {
|
||||||
|
return $cookieStore.get(key);
|
||||||
|
},
|
||||||
|
put : function (key, value) {
|
||||||
|
$cookieStore.put(key, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var $translateCookieStorage = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateCookieStorage#get
|
||||||
|
* @methodOf pascalprecht.translate.$translateCookieStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns an item from cookieStorage by given name.
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @return {string} Value of item name
|
||||||
|
*/
|
||||||
|
get : function (name) {
|
||||||
|
return delegate.get(name);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateCookieStorage#set
|
||||||
|
* @methodOf pascalprecht.translate.$translateCookieStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets an item in cookieStorage by given name.
|
||||||
|
*
|
||||||
|
* @deprecated use #put
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @param {string} value Item value
|
||||||
|
*/
|
||||||
|
set : function (name, value) {
|
||||||
|
delegate.put(name, value);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateCookieStorage#put
|
||||||
|
* @methodOf pascalprecht.translate.$translateCookieStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets an item in cookieStorage by given name.
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @param {string} value Item value
|
||||||
|
*/
|
||||||
|
put : function (name, value) {
|
||||||
|
delegate.put(name, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return $translateCookieStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateCookieStorageFactory.displayName = '$translateCookieStorage';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate/dist/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(t,e){"function"==typeof define&&define.amd?define([],function(){return e()}):"object"==typeof module&&module.exports?module.exports=e():e()}(0,function(){function t(t){"use strict";var n;if(1===angular.version.major&&4<=angular.version.minor){var o=t.get("$cookies");n={get:function(t){return o.get(t)},put:function(t,e){o.put(t,e)}}}else{var r=t.get("$cookieStore");n={get:function(t){return r.get(t)},put:function(t,e){r.put(t,e)}}}return{get:function(t){return n.get(t)},set:function(t,e){n.put(t,e)},put:function(t,e){n.put(t,e)}}}return t.$inject=["$injector"],angular.module("pascalprecht.translate").factory("$translateCookieStorage",t),t.displayName="$translateCookieStorage","pascalprecht.translate"});
|
123
common/resources/node_modules/angular-translate/dist/angular-translate-storage-local/angular-translate-storage-local.js
generated
vendored
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||||||
|
define([], function () {
|
||||||
|
return (factory());
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) {
|
||||||
|
// Node. Does not work with strict CommonJS, but
|
||||||
|
// only CommonJS-like environments that support module.exports,
|
||||||
|
// like Node.
|
||||||
|
module.exports = factory();
|
||||||
|
} else {
|
||||||
|
factory();
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
|
||||||
|
$translateLocalStorageFactory.$inject = ['$window', '$translateCookieStorage'];
|
||||||
|
angular.module('pascalprecht.translate')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc object
|
||||||
|
* @name pascalprecht.translate.$translateLocalStorage
|
||||||
|
* @requires $window
|
||||||
|
* @requires $translateCookieStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Abstraction layer for localStorage. This service is used when telling angular-translate
|
||||||
|
* to use localStorage as storage.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.factory('$translateLocalStorage', $translateLocalStorageFactory);
|
||||||
|
|
||||||
|
function $translateLocalStorageFactory($window, $translateCookieStorage) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Setup adapter
|
||||||
|
var localStorageAdapter = (function(){
|
||||||
|
var langKey;
|
||||||
|
return {
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateLocalStorage#get
|
||||||
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Returns an item from localStorage by given name.
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @return {string} Value of item name
|
||||||
|
*/
|
||||||
|
get: function (name) {
|
||||||
|
if(!langKey) {
|
||||||
|
langKey = $window.localStorage.getItem(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return langKey;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateLocalStorage#set
|
||||||
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets an item in localStorage by given name.
|
||||||
|
*
|
||||||
|
* @deprecated use #put
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @param {string} value Item value
|
||||||
|
*/
|
||||||
|
set: function (name, value) {
|
||||||
|
langKey=value;
|
||||||
|
$window.localStorage.setItem(name, value);
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @ngdoc function
|
||||||
|
* @name pascalprecht.translate.$translateLocalStorage#put
|
||||||
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Sets an item in localStorage by given name.
|
||||||
|
*
|
||||||
|
* @param {string} name Item name
|
||||||
|
* @param {string} value Item value
|
||||||
|
*/
|
||||||
|
put: function (name, value) {
|
||||||
|
langKey=value;
|
||||||
|
$window.localStorage.setItem(name, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}());
|
||||||
|
|
||||||
|
var hasLocalStorageSupport = 'localStorage' in $window;
|
||||||
|
if (hasLocalStorageSupport) {
|
||||||
|
var testKey = 'pascalprecht.translate.storageTest';
|
||||||
|
try {
|
||||||
|
// this check have to be wrapped within a try/catch because on
|
||||||
|
// a SecurityError: Dom Exception 18 on iOS
|
||||||
|
if ($window.localStorage !== null) {
|
||||||
|
$window.localStorage.setItem(testKey, 'foo');
|
||||||
|
$window.localStorage.removeItem(testKey);
|
||||||
|
hasLocalStorageSupport = true;
|
||||||
|
} else {
|
||||||
|
hasLocalStorageSupport = false;
|
||||||
|
}
|
||||||
|
} catch (e){
|
||||||
|
hasLocalStorageSupport = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage;
|
||||||
|
return $translateLocalStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
$translateLocalStorageFactory.displayName = '$translateLocalStorageFactory';
|
||||||
|
return 'pascalprecht.translate';
|
||||||
|
|
||||||
|
}));
|
6
common/resources/node_modules/angular-translate/dist/angular-translate-storage-local/angular-translate-storage-local.min.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* angular-translate - v2.18.2 - 2020-01-04
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 The angular-translate team, Pascal Precht; Licensed MIT
|
||||||
|
*/
|
||||||
|
!function(t,e){"function"==typeof define&&define.amd?define([],function(){return e()}):"object"==typeof module&&module.exports?module.exports=e():e()}(0,function(){function t(a,t){"use strict";var o,e={get:function(t){return o||(o=a.localStorage.getItem(t)),o},set:function(t,e){o=e,a.localStorage.setItem(t,e)},put:function(t,e){o=e,a.localStorage.setItem(t,e)}},r="localStorage"in a;if(r){var n="pascalprecht.translate.storageTest";try{r=null!==a.localStorage&&(a.localStorage.setItem(n,"foo"),a.localStorage.removeItem(n),!0)}catch(t){r=!1}}return r?e:t}return t.$inject=["$window","$translateCookieStorage"],angular.module("pascalprecht.translate").factory("$translateLocalStorage",t),t.displayName="$translateLocalStorageFactory","pascalprecht.translate"});
|
3785
common/resources/node_modules/angular-translate/dist/angular-translate.js
generated
vendored
Normal file
6
common/resources/node_modules/angular-translate/dist/angular-translate.min.js
generated
vendored
Normal file
21
common/resources/node_modules/angular-treeview/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2016 it-ailen
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
BIN
common/resources/node_modules/angular-treeview/images/plus.png
generated
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
7
common/resources/node_modules/angular-treeview/index.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* Created by hyku on 2016/10/13.
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
require("./tree");
|
||||||
|
module.exports = "angular.tree";
|
604
common/resources/node_modules/angular-treeview/tree.js
generated
vendored
Normal file
21
common/resources/node_modules/angular-ui-select2/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
20
common/resources/node_modules/angular-ui-select2/bower.json
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"author": "AngularUI",
|
||||||
|
"name": "angular-ui-select2",
|
||||||
|
"version": "0.0.5",
|
||||||
|
"homepage": "http://angular-ui.github.com",
|
||||||
|
"keywords": [
|
||||||
|
"angular",
|
||||||
|
"angularui",
|
||||||
|
"select2"
|
||||||
|
],
|
||||||
|
"main": "./src/select2.js",
|
||||||
|
"dependencies": {
|
||||||
|
"angular": ">=1.2.0",
|
||||||
|
"select2": "~3.4",
|
||||||
|
"jquery": ">=1.6.4"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"angular-mocks": ">=1.0.2"
|
||||||
|
}
|
||||||
|
}
|
238
common/resources/node_modules/angular-ui-select2/src/select2.js
generated
vendored
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
/**
|
||||||
|
* Enhanced Select2 Dropmenus
|
||||||
|
*
|
||||||
|
* @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2
|
||||||
|
* This change is so that you do not have to do an additional query yourself on top of Select2's own query
|
||||||
|
* @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation
|
||||||
|
*/
|
||||||
|
angular.module('ui.select2', []).value('uiSelect2Config', {}).directive('uiSelect2', ['uiSelect2Config', '$timeout', function (uiSelect2Config, $timeout) {
|
||||||
|
var options = {};
|
||||||
|
if (uiSelect2Config) {
|
||||||
|
angular.extend(options, uiSelect2Config);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
require: 'ngModel',
|
||||||
|
priority: 1,
|
||||||
|
compile: function (tElm, tAttrs) {
|
||||||
|
var watch,
|
||||||
|
repeatOption,
|
||||||
|
repeatAttr,
|
||||||
|
isSelect = tElm.is('select'),
|
||||||
|
isMultiple = angular.isDefined(tAttrs.multiple);
|
||||||
|
|
||||||
|
// Enable watching of the options dataset if in use
|
||||||
|
if (tElm.is('select')) {
|
||||||
|
repeatOption = tElm.find( 'optgroup[ng-repeat], optgroup[data-ng-repeat], option[ng-repeat], option[data-ng-repeat]');
|
||||||
|
|
||||||
|
if (repeatOption.length) {
|
||||||
|
repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat');
|
||||||
|
watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (scope, elm, attrs, controller) {
|
||||||
|
// instance-specific options
|
||||||
|
var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert from Select2 view-model to Angular view-model.
|
||||||
|
*/
|
||||||
|
var convertToAngularModel = function(select2_data) {
|
||||||
|
var model;
|
||||||
|
if (opts.simple_tags) {
|
||||||
|
model = [];
|
||||||
|
angular.forEach(select2_data, function(value, index) {
|
||||||
|
model.push(value.id);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
model = select2_data;
|
||||||
|
}
|
||||||
|
return model;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert from Angular view-model to Select2 view-model.
|
||||||
|
*/
|
||||||
|
var convertToSelect2Model = function(angular_data) {
|
||||||
|
var model = [];
|
||||||
|
if (!angular_data) {
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.simple_tags) {
|
||||||
|
model = [];
|
||||||
|
angular.forEach(
|
||||||
|
angular_data,
|
||||||
|
function(value, index) {
|
||||||
|
model.push({'id': value, 'text': value});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
model = angular_data;
|
||||||
|
}
|
||||||
|
return model;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (isSelect) {
|
||||||
|
// Use <select multiple> instead
|
||||||
|
delete opts.multiple;
|
||||||
|
delete opts.initSelection;
|
||||||
|
} else if (isMultiple) {
|
||||||
|
opts.multiple = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (controller) {
|
||||||
|
// Watch the model for programmatic changes
|
||||||
|
scope.$watch(tAttrs.ngModel, function(current, old) {
|
||||||
|
if (!current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (current === old) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
controller.$render();
|
||||||
|
}, true);
|
||||||
|
controller.$render = function () {
|
||||||
|
if (isSelect) {
|
||||||
|
elm.select2('val', controller.$viewValue);
|
||||||
|
} else {
|
||||||
|
if (opts.multiple) {
|
||||||
|
controller.$isEmpty = function (value) {
|
||||||
|
return !value || value.length === 0;
|
||||||
|
};
|
||||||
|
var viewValue = controller.$viewValue;
|
||||||
|
if (angular.isString(viewValue)) {
|
||||||
|
viewValue = viewValue.split(',');
|
||||||
|
}
|
||||||
|
elm.select2(
|
||||||
|
'data', convertToSelect2Model(viewValue));
|
||||||
|
if (opts.sortable) {
|
||||||
|
elm.select2("container").find("ul.select2-choices").sortable({
|
||||||
|
containment: 'parent',
|
||||||
|
start: function () {
|
||||||
|
elm.select2("onSortStart");
|
||||||
|
},
|
||||||
|
update: function () {
|
||||||
|
elm.select2("onSortEnd");
|
||||||
|
elm.trigger('change');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (angular.isObject(controller.$viewValue)) {
|
||||||
|
elm.select2('data', controller.$viewValue);
|
||||||
|
} else if (!controller.$viewValue) {
|
||||||
|
elm.select2('data', null);
|
||||||
|
} else {
|
||||||
|
elm.select2('val', controller.$viewValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Watch the options dataset for changes
|
||||||
|
if (watch) {
|
||||||
|
scope.$watch(watch, function (newVal, oldVal, scope) {
|
||||||
|
if (angular.equals(newVal, oldVal)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Delayed so that the options have time to be rendered
|
||||||
|
$timeout(function () {
|
||||||
|
elm.select2('val', controller.$viewValue);
|
||||||
|
// Refresh angular to remove the superfluous option
|
||||||
|
controller.$render();
|
||||||
|
if(newVal && !oldVal && controller.$setPristine) {
|
||||||
|
controller.$setPristine(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update valid and dirty statuses
|
||||||
|
controller.$parsers.push(function (value) {
|
||||||
|
var div = elm.prev();
|
||||||
|
div
|
||||||
|
.toggleClass('ng-invalid', !controller.$valid)
|
||||||
|
.toggleClass('ng-valid', controller.$valid)
|
||||||
|
.toggleClass('ng-invalid-required', !controller.$valid)
|
||||||
|
.toggleClass('ng-valid-required', controller.$valid)
|
||||||
|
.toggleClass('ng-dirty', controller.$dirty)
|
||||||
|
.toggleClass('ng-pristine', controller.$pristine);
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!isSelect) {
|
||||||
|
// Set the view and model value and update the angular template manually for the ajax/multiple select2.
|
||||||
|
elm.bind("change", function (e) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
|
if (scope.$$phase || scope.$root.$$phase) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scope.$apply(function () {
|
||||||
|
controller.$setViewValue(
|
||||||
|
convertToAngularModel(elm.select2('data')));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (opts.initSelection) {
|
||||||
|
var initSelection = opts.initSelection;
|
||||||
|
opts.initSelection = function (element, callback) {
|
||||||
|
initSelection(element, function (value) {
|
||||||
|
var isPristine = controller.$pristine;
|
||||||
|
controller.$setViewValue(convertToAngularModel(value));
|
||||||
|
callback(value);
|
||||||
|
if (isPristine) {
|
||||||
|
controller.$setPristine();
|
||||||
|
}
|
||||||
|
elm.prev().toggleClass('ng-pristine', controller.$pristine);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elm.bind("$destroy", function() {
|
||||||
|
elm.select2("destroy");
|
||||||
|
});
|
||||||
|
|
||||||
|
attrs.$observe('disabled', function (value) {
|
||||||
|
elm.select2('enable', !value);
|
||||||
|
});
|
||||||
|
|
||||||
|
attrs.$observe('readonly', function (value) {
|
||||||
|
elm.select2('readonly', !!value);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (attrs.ngMultiple) {
|
||||||
|
scope.$watch(attrs.ngMultiple, function(newVal) {
|
||||||
|
attrs.$set('multiple', !!newVal);
|
||||||
|
elm.select2(opts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize the plugin late so that the injected DOM does not disrupt the template compiler
|
||||||
|
$timeout(function () {
|
||||||
|
elm.select2(opts);
|
||||||
|
|
||||||
|
// Set initial value - I'm not sure about this but it seems to need to be there
|
||||||
|
elm.select2('data', controller.$modelValue);
|
||||||
|
// important!
|
||||||
|
controller.$render();
|
||||||
|
|
||||||
|
// Not sure if I should just check for !isSelect OR if I should check for 'tags' key
|
||||||
|
if (!opts.initSelection && !isSelect) {
|
||||||
|
var isPristine = controller.$pristine;
|
||||||
|
controller.$pristine = false;
|
||||||
|
controller.$setViewValue(
|
||||||
|
convertToAngularModel(elm.select2('data'))
|
||||||
|
);
|
||||||
|
if (isPristine) {
|
||||||
|
controller.$setPristine();
|
||||||
|
}
|
||||||
|
elm.prev().toggleClass('ng-pristine', controller.$pristine);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}]);
|
21
common/resources/node_modules/angular/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Angular
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
25
common/resources/node_modules/angular/angular-csp.css
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* Include this file in your html if you are using the CSP mode. */
|
||||||
|
|
||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
[ng\:cloak],
|
||||||
|
[ng-cloak],
|
||||||
|
[data-ng-cloak],
|
||||||
|
[x-ng-cloak],
|
||||||
|
.ng-cloak,
|
||||||
|
.x-ng-cloak,
|
||||||
|
.ng-hide:not(.ng-hide-animate) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ng\:form {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ng-animate-shim {
|
||||||
|
visibility:hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ng-anchor {
|
||||||
|
position:absolute;
|
||||||
|
}
|
36496
common/resources/node_modules/angular/angular.js
generated
vendored
Normal file
350
common/resources/node_modules/angular/angular.min.js
generated
vendored
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
/*
|
||||||
|
AngularJS v1.8.0
|
||||||
|
(c) 2010-2020 Google, Inc. http://angularjs.org
|
||||||
|
License: MIT
|
||||||
|
*/
|
||||||
|
(function(z){'use strict';function ve(a){if(D(a))w(a.objectMaxDepth)&&(Xb.objectMaxDepth=Yb(a.objectMaxDepth)?a.objectMaxDepth:NaN),w(a.urlErrorParamsEnabled)&&Ga(a.urlErrorParamsEnabled)&&(Xb.urlErrorParamsEnabled=a.urlErrorParamsEnabled);else return Xb}function Yb(a){return X(a)&&0<a}function F(a,b){b=b||Error;return function(){var d=arguments[0],c;c="["+(a?a+":":"")+d+"] http://errors.angularjs.org/1.8.0/"+(a?a+"/":"")+d;for(d=1;d<arguments.length;d++){c=c+(1==d?"?":"&")+"p"+(d-1)+"=";var e=encodeURIComponent,
|
||||||
|
f;f=arguments[d];f="function"==typeof f?f.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof f?"undefined":"string"!=typeof f?JSON.stringify(f):f;c+=e(f)}return new b(c)}}function za(a){if(null==a||$a(a))return!1;if(H(a)||C(a)||x&&a instanceof x)return!0;var b="length"in Object(a)&&a.length;return X(b)&&(0<=b&&b-1 in a||"function"===typeof a.item)}function r(a,b,d){var c,e;if(a)if(B(a))for(c in a)"prototype"!==c&&"length"!==c&&"name"!==c&&a.hasOwnProperty(c)&&b.call(d,a[c],c,a);else if(H(a)||
|
||||||
|
za(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==r)a.forEach(b,d,a);else if(Pc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&b.call(d,a[c],c,a);else for(c in a)ta.call(a,c)&&b.call(d,a[c],c,a);return a}function Qc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function Zb(a){return function(b,d){a(d,b)}}function we(){return++qb}
|
||||||
|
function $b(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(D(g)||B(g))for(var k=Object.keys(g),h=0,l=k.length;h<l;h++){var m=k[h],p=g[m];d&&D(p)?ha(p)?a[m]=new Date(p.valueOf()):ab(p)?a[m]=new RegExp(p):p.nodeName?a[m]=p.cloneNode(!0):ac(p)?a[m]=p.clone():"__proto__"!==m&&(D(a[m])||(a[m]=H(p)?[]:{}),$b(a[m],[p],!0)):a[m]=p}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function S(a){return $b(a,Ha.call(arguments,1),!1)}function xe(a){return $b(a,Ha.call(arguments,1),!0)}function fa(a){return parseInt(a,
|
||||||
|
10)}function bc(a,b){return S(Object.create(a),b)}function E(){}function Ta(a){return a}function ia(a){return function(){return a}}function cc(a){return B(a.toString)&&a.toString!==la}function A(a){return"undefined"===typeof a}function w(a){return"undefined"!==typeof a}function D(a){return null!==a&&"object"===typeof a}function Pc(a){return null!==a&&"object"===typeof a&&!Rc(a)}function C(a){return"string"===typeof a}function X(a){return"number"===typeof a}function ha(a){return"[object Date]"===la.call(a)}
|
||||||
|
function H(a){return Array.isArray(a)||a instanceof Array}function dc(a){switch(la.call(a)){case "[object Error]":return!0;case "[object Exception]":return!0;case "[object DOMException]":return!0;default:return a instanceof Error}}function B(a){return"function"===typeof a}function ab(a){return"[object RegExp]"===la.call(a)}function $a(a){return a&&a.window===a}function bb(a){return a&&a.$evalAsync&&a.$watch}function Ga(a){return"boolean"===typeof a}function ye(a){return a&&X(a.length)&&ze.test(la.call(a))}
|
||||||
|
function ac(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function Ae(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function ua(a){return K(a.nodeName||a[0]&&a[0].nodeName)}function cb(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function Ia(a,b,d){function c(a,b,c){c--;if(0>c)return"...";var d=b.$$hashKey,f;if(H(a)){f=0;for(var g=a.length;f<g;f++)b.push(e(a[f],c))}else if(Pc(a))for(f in a)b[f]=e(a[f],c);else if(a&&"function"===typeof a.hasOwnProperty)for(f in a)a.hasOwnProperty(f)&&
|
||||||
|
(b[f]=e(a[f],c));else for(f in a)ta.call(a,f)&&(b[f]=e(a[f],c));d?b.$$hashKey=d:delete b.$$hashKey;return b}function e(a,b){if(!D(a))return a;var d=g.indexOf(a);if(-1!==d)return k[d];if($a(a)||bb(a))throw oa("cpws");var d=!1,e=f(a);void 0===e&&(e=H(a)?[]:Object.create(Rc(a)),d=!0);g.push(a);k.push(e);return d?c(a,e,b):e}function f(a){switch(la.call(a)){case "[object Int8Array]":case "[object Int16Array]":case "[object Int32Array]":case "[object Float32Array]":case "[object Float64Array]":case "[object Uint8Array]":case "[object Uint8ClampedArray]":case "[object Uint16Array]":case "[object Uint32Array]":return new a.constructor(e(a.buffer),
|
||||||
|
a.byteOffset,a.length);case "[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);(new Uint8Array(b)).set(new Uint8Array(a));return b}return a.slice(0);case "[object Boolean]":case "[object Number]":case "[object String]":case "[object Date]":return new a.constructor(a.valueOf());case "[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^/]*$/)[0]),b.lastIndex=a.lastIndex,b;case "[object Blob]":return new a.constructor([a],{type:a.type})}if(B(a.cloneNode))return a.cloneNode(!0)}
|
||||||
|
var g=[],k=[];d=Yb(d)?d:NaN;if(b){if(ye(b)||"[object ArrayBuffer]"===la.call(b))throw oa("cpta");if(a===b)throw oa("cpi");H(b)?b.length=0:r(b,function(a,c){"$$hashKey"!==c&&delete b[c]});g.push(a);k.push(b);return c(a,b,d)}return e(a,d)}function ec(a,b){return a===b||a!==a&&b!==b}function va(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d===typeof b&&"object"===d)if(H(a)){if(!H(b))return!1;if((d=a.length)===b.length){for(c=0;c<d;c++)if(!va(a[c],
|
||||||
|
b[c]))return!1;return!0}}else{if(ha(a))return ha(b)?ec(a.getTime(),b.getTime()):!1;if(ab(a))return ab(b)?a.toString()===b.toString():!1;if(bb(a)||bb(b)||$a(a)||$a(b)||H(b)||ha(b)||ab(b))return!1;d=T();for(c in a)if("$"!==c.charAt(0)&&!B(a[c])){if(!va(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&w(b[c])&&!B(b[c]))return!1;return!0}return!1}function db(a,b,d){return a.concat(Ha.call(b,d))}function Va(a,b){var d=2<arguments.length?Ha.call(arguments,2):[];return!B(b)||b instanceof
|
||||||
|
RegExp?b:d.length?function(){return arguments.length?b.apply(a,db(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function Sc(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:$a(b)?d="$WINDOW":b&&z.document===b?d="$DOCUMENT":bb(b)&&(d="$SCOPE");return d}function eb(a,b){if(!A(a))return X(b)||(b=b?2:null),JSON.stringify(a,Sc,b)}function Tc(a){return C(a)?JSON.parse(a):a}function fc(a,b){a=a.replace(Be,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+
|
||||||
|
a)/6E4;return Y(d)?b:d}function Uc(a,b){a=new Date(a.getTime());a.setMinutes(a.getMinutes()+b);return a}function gc(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();b=fc(b,c);return Uc(a,d*(b-c))}function Aa(a){a=x(a).clone().empty();var b=x("<div></div>").append(a).html();try{return a[0].nodeType===Pa?K(b):b.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(b)}}function Vc(a){try{return decodeURIComponent(a)}catch(b){}}function hc(a){var b={};r((a||"").split("&"),
|
||||||
|
function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=Vc(e),w(e)&&(f=w(f)?Vc(f):!0,ta.call(b,e)?H(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Ce(a){var b=[];r(a,function(a,c){H(a)?r(a,function(a){b.push(ba(c,!0)+(!0===a?"":"="+ba(a,!0)))}):b.push(ba(c,!0)+(!0===a?"":"="+ba(a,!0)))});return b.length?b.join("&"):""}function ic(a){return ba(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ba(a,
|
||||||
|
b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function De(a,b){var d,c,e=Qa.length;for(c=0;c<e;++c)if(d=Qa[c]+b,C(d=a.getAttribute(d)))return d;return null}function Ee(a,b){var d,c,e={};r(Qa,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});r(Qa,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))});
|
||||||
|
d&&(Fe?(e.strictDi=null!==De(d,"strict-di"),b(d,c?[c]:[],e)):z.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match."))}function Wc(a,b,d){D(d)||(d={});d=S({strictDi:!1},d);var c=function(){a=x(a);if(a.injector()){var c=a[0]===z.document?"document":Aa(a);throw oa("btstrpd",c.replace(/</,"<").replace(/>/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",
|
||||||
|
function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=fb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;z&&e.test(z.name)&&(d.debugInfoEnabled=!0,z.name=z.name.replace(e,""));if(z&&!f.test(z.name))return c();z.name=z.name.replace(f,"");ca.resumeBootstrap=function(a){r(a,function(a){b.push(a)});return c()};B(ca.resumeDeferredBootstrap)&&
|
||||||
|
ca.resumeDeferredBootstrap()}function Ge(){z.name="NG_ENABLE_DEBUG_INFO!"+z.name;z.location.reload()}function He(a){a=ca.element(a).injector();if(!a)throw oa("test");return a.get("$$testability")}function Xc(a,b){b=b||"_";return a.replace(Ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function Je(){var a;if(!Yc){var b=rb();(sb=A(b)?z.jQuery:b?z[b]:void 0)&&sb.fn.on?(x=sb,S(sb.fn,{scope:Wa.scope,isolateScope:Wa.isolateScope,controller:Wa.controller,injector:Wa.injector,inheritedData:Wa.inheritedData})):
|
||||||
|
x=U;a=x.cleanData;x.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=(x._data(f)||{}).events)&&c.$destroy&&x(f).triggerHandler("$destroy");a(b)};ca.element=x;Yc=!0}}function Ke(){U.legacyXHTMLReplacement=!0}function gb(a,b,d){if(!a)throw oa("areq",b||"?",d||"required");return a}function tb(a,b,d){d&&H(a)&&(a=a[a.length-1]);gb(B(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ja(a,b){if("hasOwnProperty"===a)throw oa("badname",
|
||||||
|
b);}function Le(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=b[g],a&&(a=(e=a)[c]);return!d&&B(a)?Va(e,a):a}function ub(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=x(Ha.call(a,0,e))),c.push(b);return c||a}function T(){return Object.create(null)}function jc(a){if(null==a)return"";switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=!cc(a)||H(a)||ha(a)?eb(a):a.toString()}return a}function Me(a){function b(a,
|
||||||
|
b,c){return a[b]||(a[b]=c())}var d=F("$injector"),c=F("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||F;return b(a,"module",function(){var a={};return function(f,g,k){var h={};if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&(a[f]=null);return b(a,f,function(){function a(b,c,d,f){f||(f=e);return function(){f[d||"push"]([b,c,arguments]);return t}}function b(a,c,d){d||(d=e);return function(b,e){e&&B(e)&&(e.$$moduleName=f);d.push([a,c,arguments]);return t}}if(!g)throw d("nomod",
|
||||||
|
f);var e=[],n=[],s=[],G=a("$injector","invoke","push",n),t={_invokeQueue:e,_configBlocks:n,_runBlocks:s,info:function(a){if(w(a)){if(!D(a))throw c("aobj","value");h=a;return this}return h},requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide","decorator",n),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider",
|
||||||
|
"register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:G,run:function(a){s.push(a);return this}};k&&G(k);return t})}})}function ja(a,b){if(H(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(D(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function Ne(a,b){var d=[];Yb(b)&&(a=ca.copy(a,null,b));return JSON.stringify(a,function(a,b){b=Sc(a,b);if(D(b)){if(0<=d.indexOf(b))return"...";d.push(b)}return b})}
|
||||||
|
function Oe(a){S(a,{errorHandlingConfig:ve,bootstrap:Wc,copy:Ia,extend:S,merge:xe,equals:va,element:x,forEach:r,injector:fb,noop:E,bind:Va,toJson:eb,fromJson:Tc,identity:Ta,isUndefined:A,isDefined:w,isString:C,isFunction:B,isObject:D,isNumber:X,isElement:ac,isArray:H,version:Pe,isDate:ha,callbacks:{$$counter:0},getTestability:He,reloadWithDebugInfo:Ge,UNSAFE_restoreLegacyJqLiteXHTMLReplacement:Ke,$$minErr:F,$$csp:Ba,$$encodeUriSegment:ic,$$encodeUriQuery:ba,$$lowercase:K,$$stringify:jc,$$uppercase:vb});
|
||||||
|
lc=Me(z);lc("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Qe});a.provider("$compile",Zc).directive({a:Re,input:$c,textarea:$c,form:Se,script:Te,select:Ue,option:Ve,ngBind:We,ngBindHtml:Xe,ngBindTemplate:Ye,ngClass:Ze,ngClassEven:$e,ngClassOdd:af,ngCloak:bf,ngController:cf,ngForm:df,ngHide:ef,ngIf:ff,ngInclude:gf,ngInit:hf,ngNonBindable:jf,ngPluralize:kf,ngRef:lf,ngRepeat:mf,ngShow:nf,ngStyle:of,ngSwitch:pf,ngSwitchWhen:qf,ngSwitchDefault:rf,ngOptions:sf,ngTransclude:tf,ngModel:uf,
|
||||||
|
ngList:vf,ngChange:wf,pattern:ad,ngPattern:ad,required:bd,ngRequired:bd,minlength:cd,ngMinlength:cd,maxlength:dd,ngMaxlength:dd,ngValue:xf,ngModelOptions:yf}).directive({ngInclude:zf,input:Af}).directive(wb).directive(ed);a.provider({$anchorScroll:Bf,$animate:Cf,$animateCss:Df,$$animateJs:Ef,$$animateQueue:Ff,$$AnimateRunner:Gf,$$animateAsyncRun:Hf,$browser:If,$cacheFactory:Jf,$controller:Kf,$document:Lf,$$isDocumentHidden:Mf,$exceptionHandler:Nf,$filter:fd,$$forceReflow:Of,$interpolate:Pf,$interval:Qf,
|
||||||
|
$$intervalFactory:Rf,$http:Sf,$httpParamSerializer:Tf,$httpParamSerializerJQLike:Uf,$httpBackend:Vf,$xhrFactory:Wf,$jsonpCallbacks:Xf,$location:Yf,$log:Zf,$parse:$f,$rootScope:ag,$q:bg,$$q:cg,$sce:dg,$sceDelegate:eg,$sniffer:fg,$$taskTrackerFactory:gg,$templateCache:hg,$templateRequest:ig,$$testability:jg,$timeout:kg,$window:lg,$$rAF:mg,$$jqLite:ng,$$Map:og,$$cookieReader:pg})}]).info({angularVersion:"1.8.0"})}function xb(a,b){return b.toUpperCase()}function yb(a){return a.replace(qg,xb)}function mc(a){a=
|
||||||
|
a.nodeType;return 1===a||!a||9===a}function gd(a,b){var d,c,e,f=b.createDocumentFragment(),g=[],k;if(nc.test(a)){d=f.appendChild(b.createElement("div"));c=(rg.exec(a)||["",""])[1].toLowerCase();e=U.legacyXHTMLReplacement?a.replace(sg,"<$1></$2>"):a;if(10>wa)for(c=hb[c]||hb._default,d.innerHTML=c[1]+e+c[2],k=c[0];k--;)d=d.firstChild;else{c=qa[c]||[];for(k=c.length;-1<--k;)d.appendChild(z.document.createElement(c[k])),d=d.firstChild;d.innerHTML=e}g=db(g,d.childNodes);d=f.firstChild;d.textContent=""}else g.push(b.createTextNode(a));
|
||||||
|
f.textContent="";f.innerHTML="";r(g,function(a){f.appendChild(a)});return f}function U(a){if(a instanceof U)return a;var b;C(a)&&(a=V(a),b=!0);if(!(this instanceof U)){if(b&&"<"!==a.charAt(0))throw oc("nosel");return new U(a)}if(b){b=z.document;var d;a=(d=tg.exec(a))?[b.createElement(d[1])]:(d=gd(a,b))?d.childNodes:[];pc(this,a)}else B(a)?hd(a):pc(this,a)}function qc(a){return a.cloneNode(!0)}function zb(a,b){!b&&mc(a)&&x.cleanData([a]);a.querySelectorAll&&x.cleanData(a.querySelectorAll("*"))}function id(a){for(var b in a)return!1;
|
||||||
|
return!0}function jd(a){var b=a.ng339,d=b&&Ka[b],c=d&&d.events,d=d&&d.data;d&&!id(d)||c&&!id(c)||(delete Ka[b],a.ng339=void 0)}function kd(a,b,d,c){if(w(c))throw oc("offargs");var e=(c=Ab(a))&&c.events,f=c&&c.handle;if(f){if(b){var g=function(b){var c=e[b];w(d)&&cb(c||[],d);w(d)&&c&&0<c.length||(a.removeEventListener(b,f),delete e[b])};r(b.split(" "),function(a){g(a);Bb[a]&&g(Bb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f),delete e[b];jd(a)}}function rc(a,b){var d=a.ng339;if(d=
|
||||||
|
d&&Ka[d])b?delete d.data[b]:d.data={},jd(a)}function Ab(a,b){var d=a.ng339,d=d&&Ka[d];b&&!d&&(a.ng339=d=++ug,d=Ka[d]={events:{},data:{},handle:void 0});return d}function sc(a,b,d){if(mc(a)){var c,e=w(d),f=!e&&b&&!D(b),g=!b;a=(a=Ab(a,!f))&&a.data;if(e)a[yb(b)]=d;else{if(g)return a;if(f)return a&&a[yb(b)];for(c in b)a[yb(c)]=b[c]}}}function Cb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function Db(a,b){if(b&&a.setAttribute){var d=
|
||||||
|
(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),c=d;r(b.split(" "),function(a){a=V(a);c=c.replace(" "+a+" "," ")});c!==d&&a.setAttribute("class",V(c))}}function Eb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),c=d;r(b.split(" "),function(a){a=V(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});c!==d&&a.setAttribute("class",V(c))}}function pc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=
|
||||||
|
0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function ld(a,b){return Fb(a,"$"+(b||"ngController")+"Controller")}function Fb(a,b,d){9===a.nodeType&&(a=a.documentElement);for(b=H(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(w(d=x.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function md(a){for(zb(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Gb(a,b){b||zb(a);var d=a.parentNode;d&&d.removeChild(a)}function vg(a,b){b=b||z;if("complete"===b.document.readyState)b.setTimeout(a);
|
||||||
|
else x(b).on("load",a)}function hd(a){function b(){z.document.removeEventListener("DOMContentLoaded",b);z.removeEventListener("load",b);a()}"complete"===z.document.readyState?z.setTimeout(a):(z.document.addEventListener("DOMContentLoaded",b),z.addEventListener("load",b))}function nd(a,b){var d=Hb[b.toLowerCase()];return d&&od[ua(a)]&&d}function wg(a,b){var d=function(c,d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(A(c.immediatePropagationStopped)){var k=
|
||||||
|
c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();k&&k.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var h=f.specialHandlerWrapper||xg;1<g&&(f=ja(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||h(a,c,f[l])}};d.elem=a;return d}function xg(a,b,d){d.call(a,b)}function yg(a,b,d){var c=b.relatedTarget;c&&(c===a||zg.call(a,c))||d.call(a,b)}function ng(){this.$get=
|
||||||
|
function(){return S(U,{hasClass:function(a,b){a.attr&&(a=a[0]);return Cb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return Eb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return Db(a,b)}})}}function La(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"===d||"object"===d&&null!==a?a.$$hashKey=d+":"+(b||we)():d+":"+a}function pd(){this._keys=[];this._values=[];this._lastKey=NaN;this._lastIndex=-1}function qd(a){a=Function.prototype.toString.call(a).replace(Ag,
|
||||||
|
"");return a.match(Bg)||a.match(Cg)}function Dg(a){return(a=qd(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function fb(a,b){function d(a){return function(b,c){if(D(b))r(b,Zb(a));else return a(b,c)}}function c(a,b){Ja(a,"service");if(B(b)||H(b))b=n.instantiate(b);if(!b.$get)throw Ca("pget",a);return p[a+"Provider"]=b}function e(a,b){return function(){var c=t.invoke(b,this);if(A(c))throw Ca("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){gb(A(a)||
|
||||||
|
H(a),"modulesToLoad","not an array");var b=[],c;r(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=n.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.set(a,!0);try{C(a)?(c=lc(a),t.modules[a]=c,b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):B(a)?b.push(n.invoke(a)):H(a)?b.push(n.invoke(a)):tb(a,"module")}catch(e){throw H(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1===e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ca("modulerr",
|
||||||
|
a,e.stack||e.message||e);}}});return b}function k(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===h)throw Ca("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=h,a[b]=c(b,e),a[b]}catch(f){throw a[b]===h&&delete a[b],f;}finally{l.shift()}}function e(a,c,f){var g=[];a=fb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];if("string"!==typeof l)throw Ca("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){"string"===typeof c&&
|
||||||
|
(d=c,c=null);c=e(a,c,d);H(a)&&(a=a[a.length-1]);d=a;if(wa||"function"!==typeof d)d=!1;else{var f=d.$$ngIsClass;Ga(f)||(f=d.$$ngIsClass=/^class\b/.test(Function.prototype.toString.call(d)));d=f}return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=H(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,a))},get:d,annotate:fb.$$annotate,has:function(b){return p.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}
|
||||||
|
b=!0===b;var h={},l=[],m=new Ib,p={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ia(b),!1)}),constant:d(function(a,b){Ja(a,"constant");p[a]=b;s[a]=b}),decorator:function(a,b){var c=n.get(a+"Provider"),d=c.$get;c.$get=function(){var a=t.invoke(d,c);return t.invoke(b,null,{$delegate:a})}}}},n=p.$injector=k(p,function(a,b){ca.isString(b)&&l.push(b);throw Ca("unpr",l.join(" <- "));}),s={},
|
||||||
|
G=k(s,function(a,b){var c=n.get(a+"Provider",b);return t.invoke(c.$get,c,void 0,a)}),t=G;p.$injectorProvider={$get:ia(G)};t.modules=n.modules=T();var N=g(a),t=G.get("$injector");t.strictDi=b;r(N,function(a){a&&t.invoke(a)});t.loadNewModules=function(a){r(g(a),function(a){a&&t.invoke(a)})};return t}function Bf(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===
|
||||||
|
ua(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;B(c)?c=c():ac(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):X(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=C(a)?a:X(a)?a.toString():d.hash();var b;a?(b=k.getElementById(a))?f(b):(b=e(k.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var k=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===
|
||||||
|
b&&""===a||vg(function(){c.$evalAsync(g)})});return g}]}function ib(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;H(a)&&(a=a.join(" "));H(b)&&(b=b.join(" "));return a+" "+b}function Eg(a){C(a)&&(a=a.split(" "));var b=T();r(a,function(a){a.length&&(b[a]=!0)});return b}function ra(a){return D(a)?a:{}}function Fg(a,b,d,c,e){function f(){pa=null;k()}function g(){t=y();t=A(t)?null:t;va(t,P)&&(t=P);N=P=t}function k(){var a=N;g();if(v!==h.url()||a!==t)v=h.url(),N=t,r(J,function(a){a(h.url(),t)})}
|
||||||
|
var h=this,l=a.location,m=a.history,p=a.setTimeout,n=a.clearTimeout,s={},G=e(d);h.isMock=!1;h.$$completeOutstandingRequest=G.completeTask;h.$$incOutstandingRequestCount=G.incTaskCount;h.notifyWhenNoOutstandingRequests=G.notifyWhenNoPendingTasks;var t,N,v=l.href,kc=b.find("base"),pa=null,y=c.history?function(){try{return m.state}catch(a){}}:E;g();h.url=function(b,d,e){A(e)&&(e=null);l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=N===e;b=ga(b).href;if(v===b&&(!c.history||f))return h;
|
||||||
|
var k=v&&Da(v)===Da(b);v=b;N=e;!c.history||k&&f?(k||(pa=b),d?l.replace(b):k?(d=l,e=b,f=e.indexOf("#"),e=-1===f?"":e.substr(f),d.hash=e):l.href=b,l.href!==b&&(pa=b)):(m[d?"replaceState":"pushState"](e,"",b),g());pa&&(pa=b);return h}return(pa||l.href).replace(/#$/,"")};h.state=function(){return t};var J=[],I=!1,P=null;h.onUrlChange=function(b){if(!I){if(c.history)x(a).on("popstate",f);x(a).on("hashchange",f);I=!0}J.push(b);return b};h.$$applicationDestroyed=function(){x(a).off("hashchange popstate",
|
||||||
|
f)};h.$$checkUrlChange=k;h.baseHref=function(){var a=kc.attr("href");return a?a.replace(/^(https?:)?\/\/[^/]*/,""):""};h.defer=function(a,b,c){var d;b=b||0;c=c||G.DEFAULT_TASK_TYPE;G.incTaskCount(c);d=p(function(){delete s[d];G.completeTask(a,c)},b);s[d]=c;return d};h.defer.cancel=function(a){if(s.hasOwnProperty(a)){var b=s[a];delete s[a];n(a);G.completeTask(E,b);return!0}return!1}}function If(){this.$get=["$window","$log","$sniffer","$document","$$taskTrackerFactory",function(a,b,d,c,e){return new Fg(a,
|
||||||
|
c,b,d,e)}]}function Jf(){this.$get=function(){function a(a,c){function e(a){a!==p&&(n?n===a&&(n=a.n):n=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!==b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw F("$cacheFactory")("iid",a);var g=0,k=S({},c,{id:a}),h=T(),l=c&&c.capacity||Number.MAX_VALUE,m=T(),p=null,n=null;return b[a]={put:function(a,b){if(!A(b)){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}a in h||g++;h[a]=b;g>l&&this.remove(n.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=
|
||||||
|
m[a];if(!b)return;e(b)}return h[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b===p&&(p=b.p);b===n&&(n=b.n);f(b.n,b.p);delete m[a]}a in h&&(delete h[a],g--)},removeAll:function(){h=T();g=0;m=T();p=n=null},destroy:function(){m=k=h=null;delete b[a]},info:function(){return S({},k,{size:g})}}}var b={};a.info=function(){var a={};r(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function hg(){this.$get=["$cacheFactory",function(a){return a("templates")}]}
|
||||||
|
function Zc(a,b){function d(a,b,c){var d=/^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/,e=T();r(a,function(a,f){a=a.trim();if(a in p)e[f]=p[a];else{var g=a.match(d);if(!g)throw $("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f};g[4]&&(p[a]=e[f])}});return e}function c(a){var b=a.charAt(0);if(!b||b!==K(b))throw $("baddir",a);if(a!==a.trim())throw $("baddir",a);}function e(a){var b=a.require||a.controller&&
|
||||||
|
a.name;!H(b)&&D(b)&&r(b,function(a,c){var d=a.match(l);a.substring(d[0].length)||(b[c]=d[0]+c)});return b}var f={},g=/^\s*directive:\s*([\w-]+)\s+(.*)$/,k=/(([\w-]+)(?::([^;]+))?;?)/,h=Ae("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,m=/^(on[a-z]+|formaction)$/,p=T();this.directive=function pa(b,d){gb(b,"name");Ja(b,"directive");C(b)?(c(b),gb(d,"directiveFactory"),f.hasOwnProperty(b)||(f[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];r(f[b],function(f,
|
||||||
|
g){try{var h=a.invoke(f);B(h)?h={compile:ia(h)}:!h.compile&&h.link&&(h.compile=ia(h.link));h.priority=h.priority||0;h.index=g;h.name=h.name||b;h.require=e(h);var k=h,l=h.restrict;if(l&&(!C(l)||!/[EACM]/.test(l)))throw $("badrestrict",l,b);k.restrict=l||"EA";h.$$moduleName=f.$$moduleName;d.push(h)}catch(m){c(m)}});return d}])),f[b].push(d)):r(b,Zb(pa));return this};this.component=function y(a,b){function c(a){function e(b){return B(b)||H(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:
|
||||||
|
b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Gg(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",require:b.require};r(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)});return g}if(!C(a))return r(a,Zb(Va(this,y))),this;var d=b.controller||function(){};r(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,B(d)&&(d[b]=a))});c.$inject=["$injector"];return this.directive(a,
|
||||||
|
c)};this.aHrefSanitizationWhitelist=function(a){return w(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(a){return w(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var n=!0;this.debugInfoEnabled=function(a){return w(a)?(n=a,this):n};var s=!1;this.strictComponentBindingsEnabled=function(a){return w(a)?(s=a,this):s};var G=10;this.onChangesTtl=function(a){return arguments.length?(G=a,this):G};var t=!0;this.commentDirectivesEnabled=
|
||||||
|
function(a){return arguments.length?(t=a,this):t};var N=!0;this.cssClassDirectivesEnabled=function(a){return arguments.length?(N=a,this):N};var v=T();this.addPropertySecurityContext=function(a,b,c){var d=a.toLowerCase()+"|"+b.toLowerCase();if(d in v&&v[d]!==c)throw $("ctxoverride",a,b,v[d],c);v[d]=c;return this};(function(){function a(b,c){r(c,function(a){v[a.toLowerCase()]=b})}a(W.HTML,["iframe|srcdoc","*|innerHTML","*|outerHTML"]);a(W.CSS,["*|style"]);a(W.URL,"area|href area|ping a|href a|ping blockquote|cite body|background del|cite input|src ins|cite q|cite".split(" "));
|
||||||
|
a(W.MEDIA_URL,"audio|src img|src img|srcset source|src source|srcset track|src video|src video|poster".split(" "));a(W.RESOURCE_URL,"*|formAction applet|code applet|codebase base|href embed|src frame|src form|action head|profile html|manifest iframe|src link|href media|src object|codebase object|data script|src".split(" "))})();this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate",function(a,b,c,e,p,M,L,u,R){function q(){try{if(!--Ja)throw Ua=
|
||||||
|
void 0,$("infchng",G);L.$apply(function(){for(var a=0,b=Ua.length;a<b;++a)try{Ua[a]()}catch(d){c(d)}Ua=void 0})}finally{Ja++}}function ma(a,b){if(!a)return a;if(!C(a))throw $("srcset",b,a.toString());for(var c="",d=V(a),e=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,e=/\s/.test(d)?e:/(,)/,d=d.split(e),e=Math.floor(d.length/2),f=0;f<e;f++)var g=2*f,c=c+u.getTrustedMediaUrl(V(d[g])),c=c+(" "+V(d[g+1]));d=V(d[2*f]).split(/\s/);c+=u.getTrustedMediaUrl(V(d[0]));2===d.length&&(c+=" "+V(d[1]));return c}function w(a,
|
||||||
|
b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function O(a,b,c){Fa.innerHTML="<span "+b+">";b=Fa.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function sa(a,b){try{a.addClass(b)}catch(c){}}function da(a,b,c,d,e){a instanceof x||(a=x(a));var f=Xa(a,b,a,c,d,e);da.$$addScopeClass(a);var g=null;return function(b,c,d){if(!a)throw $("multilink");gb(b,"scope");e&&e.needsNewScope&&
|
||||||
|
(b=b.$parent.$new());d=d||{};var h=d.parentBoundTranscludeFn,k=d.transcludeControllers;d=d.futureParentElement;h&&h.$$boundTransclude&&(h=h.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ua(d)&&la.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==g?x(ja(g,x("<div></div>").append(a).html())):c?Wa.clone.call(a):a;if(k)for(var l in k)d.data("$"+l+"Controller",k[l].instance);da.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,h);c||(a=f=null);return d}}function Xa(a,b,c,d,e,f){function g(a,c,d,e){var f,
|
||||||
|
k,l,m,p,I,t;if(n)for(t=Array(c.length),m=0;m<h.length;m+=3)f=h[m],t[f]=c[f];else t=c;m=0;for(p=h.length;m<p;)k=t[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),da.$$addScopeInfo(x(k),l)):l=a,I=c.transcludeOnThisElement?ka(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?ka(a,b):null,c(f,l,k,d,I)):f&&f(a,k.childNodes,void 0,e)}for(var h=[],k=H(a)||a instanceof x,l,m,p,I,n,t=0;t<a.length;t++){l=new w;11===wa&&jb(a,t,k);m=tc(a[t],[],l,0===t?d:void 0,e);(f=m.length?aa(m,a[t],l,b,c,null,[],[],f):
|
||||||
|
null)&&f.scope&&da.$$addScopeClass(l.$$element);l=f&&f.terminal||!(p=a[t].childNodes)||!p.length?null:Xa(p,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||l)h.push(t,f,l),I=!0,n=n||f;f=null}return I?g:null}function jb(a,b,c){var d=a[b],e=d.parentNode,f;if(d.nodeType===Pa)for(;;){f=e?d.nextSibling:a[b+1];if(!f||f.nodeType!==Pa)break;d.nodeValue+=f.nodeValue;f.parentNode&&f.parentNode.removeChild(f);c&&f===a[b+1]&&a.splice(b+1,1)}}function ka(a,b,c){function d(e,f,g,h,
|
||||||
|
k){e||(e=a.$new(!1,k),e.$$transcluded=!0);return b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var e=d.$$slots=T(),f;for(f in b.$$slots)e[f]=b.$$slots[f]?ka(a,b.$$slots[f],c):null;return d}function tc(a,b,d,e,f){var g=d.$attr,h;switch(a.nodeType){case 1:h=ua(a);Y(b,xa(h),"E",e,f);for(var l,m,n,t,J,s=a.attributes,v=0,G=s&&s.length;v<G;v++){var P=!1,N=!1,r=!1,y=!1,u=!1,M;l=s[v];m=l.name;t=l.value;n=xa(m.toLowerCase());(J=n.match(Ra))?(r="Attr"===J[1],y="Prop"===J[1],
|
||||||
|
u="On"===J[1],m=m.replace(rd,"").toLowerCase().substr(4+J[1].length).replace(/_(.)/g,function(a,b){return b.toUpperCase()})):(M=n.match(Sa))&&ca(M[1])&&(P=m,N=m.substr(0,m.length-5)+"end",m=m.substr(0,m.length-6));if(y||u)d[n]=t,g[n]=l.name,y?Ea(a,b,n,m):b.push(sd(p,L,c,n,m,!1));else{n=xa(m.toLowerCase());g[n]=m;if(r||!d.hasOwnProperty(n))d[n]=t,nd(a,n)&&(d[n]=!0);Ia(a,b,t,n,r);Y(b,n,"A",e,f,P,N)}}"input"===h&&"hidden"===a.getAttribute("type")&&a.setAttribute("autocomplete","off");if(!Qa)break;g=
|
||||||
|
a.className;D(g)&&(g=g.animVal);if(C(g)&&""!==g)for(;a=k.exec(g);)n=xa(a[2]),Y(b,n,"C",e,f)&&(d[n]=V(a[3])),g=g.substr(a.index+a[0].length);break;case Pa:na(b,a.nodeValue);break;case 8:if(!Oa)break;F(a,b,d,e,f)}b.sort(ia);return b}function F(a,b,c,d,e){try{var f=g.exec(a.nodeValue);if(f){var h=xa(f[1]);Y(b,h,"M",d,e)&&(c[h]=V(f[2]))}}catch(k){}}function U(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw $("uterdir",b,c);1===a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&
|
||||||
|
e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return x(d)}function W(a,b,c){return function(d,e,f,g,h){e=U(e[0],b,c);return a(d,e,f,g,h)}}function Z(a,b,c,d,e,f){var g;return a?da(b,c,d,e,f):function(){g||(g=da(b,c,d,e,f),b=c=f=null);return g.apply(this,arguments)}}function aa(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){if(a){c&&(a=W(a,c,d));a.require=u.require;a.directiveName=Q;if(s===u||u.$$isolateScope)a=Ba(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=W(b,c,d));b.require=u.require;b.directiveName=
|
||||||
|
Q;if(s===u||u.$$isolateScope)b=Ba(b,{isolateScope:!0});k.push(b)}}function p(a,e,f,g,l){function m(a,b,c,d){var e;bb(a)||(d=c,c=b,b=a,a=void 0);N&&(e=P);c||(c=N?Q.parent():Q);if(d){var f=l.$$slots[d];if(f)return f(a,b,e,c,R);if(A(f))throw $("noslot",d,Aa(Q));}else return l(a,b,e,c,R)}var n,u,L,y,G,P,M,Q;b===f?(g=d,Q=d.$$element):(Q=x(f),g=new w(Q,d));G=e;s?y=e.$new(!0):t&&(G=e.$parent);l&&(M=m,M.$$boundTransclude=l,M.isSlotFilled=function(a){return!!l.$$slots[a]});J&&(P=ea(Q,g,M,J,y,e,s));s&&(da.$$addScopeInfo(Q,
|
||||||
|
y,!0,!(v&&(v===s||v===s.$$originalDirective))),da.$$addScopeClass(Q,!0),y.$$isolateBindings=s.$$isolateBindings,u=Da(e,g,y,y.$$isolateBindings,s),u.removeWatches&&y.$on("$destroy",u.removeWatches));for(n in P){u=J[n];L=P[n];var Hg=u.$$bindings.bindToController;L.instance=L();Q.data("$"+u.name+"Controller",L.instance);L.bindingInfo=Da(G,g,L.instance,Hg,u)}r(J,function(a,b){var c=a.require;a.bindToController&&!H(c)&&D(c)&&S(P[b].instance,X(b,c,Q,P))});r(P,function(a){var b=a.instance;if(B(b.$onChanges))try{b.$onChanges(a.bindingInfo.initialChanges)}catch(d){c(d)}if(B(b.$onInit))try{b.$onInit()}catch(e){c(e)}B(b.$doCheck)&&
|
||||||
|
(G.$watch(function(){b.$doCheck()}),b.$doCheck());B(b.$onDestroy)&&G.$on("$destroy",function(){b.$onDestroy()})});n=0;for(u=h.length;n<u;n++)L=h[n],Ca(L,L.isolateScope?y:e,Q,g,L.require&&X(L.directiveName,L.require,Q,P),M);var R=e;s&&(s.template||null===s.templateUrl)&&(R=y);a&&a(R,f.childNodes,void 0,l);for(n=k.length-1;0<=n;n--)L=k[n],Ca(L,L.isolateScope?y:e,Q,g,L.require&&X(L.directiveName,L.require,Q,P),M);r(P,function(a){a=a.instance;B(a.$postLink)&&a.$postLink()})}l=l||{};for(var n=-Number.MAX_VALUE,
|
||||||
|
t=l.newScopeDirective,J=l.controllerDirectives,s=l.newIsolateScopeDirective,v=l.templateDirective,L=l.nonTlbTranscludeDirective,G=!1,P=!1,N=l.hasElementTranscludeDirective,y=d.$$element=x(b),u,Q,M,R=e,q,ma=!1,Jb=!1,O,sa=0,C=a.length;sa<C;sa++){u=a[sa];var E=u.$$start,jb=u.$$end;E&&(y=U(b,E,jb));M=void 0;if(n>u.priority)break;if(O=u.scope)u.templateUrl||(D(O)?(ba("new/isolated scope",s||t,u,y),s=u):ba("new/isolated scope",s,u,y)),t=t||u;Q=u.name;if(!ma&&(u.replace&&(u.templateUrl||u.template)||u.transclude&&
|
||||||
|
!u.$$tlb)){for(O=sa+1;ma=a[O++];)if(ma.transclude&&!ma.$$tlb||ma.replace&&(ma.templateUrl||ma.template)){Jb=!0;break}ma=!0}!u.templateUrl&&u.controller&&(J=J||T(),ba("'"+Q+"' controller",J[Q],u,y),J[Q]=u);if(O=u.transclude)if(G=!0,u.$$tlb||(ba("transclusion",L,u,y),L=u),"element"===O)N=!0,n=u.priority,M=y,y=d.$$element=x(da.$$createComment(Q,d[Q])),b=y[0],oa(f,Ha.call(M,0),b),R=Z(Jb,M,e,n,g&&g.name,{nonTlbTranscludeDirective:L});else{var ka=T();if(D(O)){M=z.document.createDocumentFragment();var Xa=
|
||||||
|
T(),F=T();r(O,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Xa[a]=b;ka[b]=null;F[b]=c});r(y.contents(),function(a){var b=Xa[xa(ua(a))];b?(F[b]=!0,ka[b]=ka[b]||z.document.createDocumentFragment(),ka[b].appendChild(a)):M.appendChild(a)});r(F,function(a,b){if(!a)throw $("reqslot",b);});for(var K in ka)ka[K]&&(R=x(ka[K].childNodes),ka[K]=Z(Jb,R,e));M=x(M.childNodes)}else M=x(qc(b)).contents();y.empty();R=Z(Jb,M,e,void 0,void 0,{needsNewScope:u.$$isolateScope||u.$$newScope});R.$$slots=ka}if(u.template)if(P=
|
||||||
|
!0,ba("template",v,u,y),v=u,O=B(u.template)?u.template(y,d):u.template,O=Na(O),u.replace){g=u;M=nc.test(O)?td(ja(u.templateNamespace,V(O))):[];b=M[0];if(1!==M.length||1!==b.nodeType)throw $("tplrt",Q,"");oa(f,y,b);C={$attr:{}};O=tc(b,[],C);var Ig=a.splice(sa+1,a.length-(sa+1));(s||t)&&fa(O,s,t);a=a.concat(O).concat(Ig);ga(d,C);C=a.length}else y.html(O);if(u.templateUrl)P=!0,ba("template",v,u,y),v=u,u.replace&&(g=u),p=ha(a.splice(sa,a.length-sa),y,d,f,G&&R,h,k,{controllerDirectives:J,newScopeDirective:t!==
|
||||||
|
u&&t,newIsolateScopeDirective:s,templateDirective:v,nonTlbTranscludeDirective:L}),C=a.length;else if(u.compile)try{q=u.compile(y,d,R);var Y=u.$$originalDirective||u;B(q)?m(null,Va(Y,q),E,jb):q&&m(Va(Y,q.pre),Va(Y,q.post),E,jb)}catch(ca){c(ca,Aa(y))}u.terminal&&(p.terminal=!0,n=Math.max(n,u.priority))}p.scope=t&&!0===t.scope;p.transcludeOnThisElement=G;p.templateOnThisElement=P;p.transclude=R;l.hasElementTranscludeDirective=N;return p}function X(a,b,c,d){var e;if(C(b)){var f=b.match(l);b=b.substring(f[0].length);
|
||||||
|
var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e="^^"===g&&c[0]&&9===c[0].nodeType?null:g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw $("ctreq",b,a);}else if(H(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=X(a,b[g],c,d);else D(b)&&(e={},r(b,function(b,f){e[f]=X(a,b,c,d)}));return e||null}function ea(a,b,c,d,e,f,g){var h=T(),k;for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},p=l.controller;"@"===
|
||||||
|
p&&(p=b[l.name]);m=M(p,m,!0,l.controllerAs);h[l.name]=m;a.data("$"+l.name+"Controller",m.instance)}return h}function fa(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=bc(a[d],{$$isolateScope:b,$$newScope:c})}function Y(b,c,e,g,h,k,l){if(c===h)return null;var m=null;if(f.hasOwnProperty(c)){h=a.get(c+"Directive");for(var p=0,n=h.length;p<n;p++)if(c=h[p],(A(g)||g>c.priority)&&-1!==c.restrict.indexOf(e)){k&&(c=bc(c,{$$start:k,$$end:l}));if(!c.$$bindings){var I=m=c,t=c.name,u={isolateScope:null,bindToController:null};
|
||||||
|
D(I.scope)&&(!0===I.bindToController?(u.bindToController=d(I.scope,t,!0),u.isolateScope={}):u.isolateScope=d(I.scope,t,!1));D(I.bindToController)&&(u.bindToController=d(I.bindToController,t,!0));if(u.bindToController&&!I.controller)throw $("noctrl",t);m=m.$$bindings=u;D(m.isolateScope)&&(c.$$isolateBindings=m.isolateScope)}b.push(c);m=c}}return m}function ca(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d<e;d++)if(b=c[d],b.multiElement)return!0;return!1}function ga(a,b){var c=
|
||||||
|
b.$attr,d=a.$attr;r(a,function(d,e){"$"!==e.charAt(0)&&(b[e]&&b[e]!==d&&(d=d.length?d+(("style"===e?";":" ")+b[e]):b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,e){a.hasOwnProperty(e)||"$"===e.charAt(0)||(a[e]=b,"class"!==e&&"style"!==e&&(d[e]=c[e]))})}function ha(a,b,d,f,g,h,k,l){var m=[],p,n,t=b[0],u=a.shift(),J=bc(u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),s=B(u.templateUrl)?u.templateUrl(b,d):u.templateUrl,L=u.templateNamespace;b.empty();e(s).then(function(c){var e,
|
||||||
|
I;c=Na(c);if(u.replace){c=nc.test(c)?td(ja(L,V(c))):[];e=c[0];if(1!==c.length||1!==e.nodeType)throw $("tplrt",u.name,s);c={$attr:{}};oa(f,b,e);var v=tc(e,[],c);D(u.scope)&&fa(v,!0);a=v.concat(a);ga(d,c)}else e=t,b.html(c);a.unshift(J);p=aa(a,e,d,g,b,u,h,k,l);r(f,function(a,c){a===e&&(f[c]=b[0])});for(n=Xa(b[0].childNodes,g);m.length;){c=m.shift();I=m.shift();var y=m.shift(),P=m.shift(),v=b[0];if(!c.$$destroyed){if(I!==t){var G=I.className;l.hasElementTranscludeDirective&&u.replace||(v=qc(e));oa(y,
|
||||||
|
x(I),v);sa(x(v),G)}I=p.transcludeOnThisElement?ka(c,p.transclude,P):P;p(n,c,v,f,I)}}m=null}).catch(function(a){dc(a)&&c(a)});return function(a,b,c,d,e){a=e;b.$$destroyed||(m?m.push(b,c,d,a):(p.transcludeOnThisElement&&(a=ka(b,p.transclude,e)),p(n,b,c,d,a)))}}function ia(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function ba(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw $("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),
|
||||||
|
a,Aa(d));}function na(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&da.$$addBindingClass(a);return function(a,c){var e=c.parent();b||da.$$addBindingClass(e);da.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function ja(a,b){a=K(a||"html");switch(a){case "svg":case "math":var c=z.document.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function qa(a,b){if("srcdoc"===
|
||||||
|
b)return u.HTML;if("src"===b||"ngSrc"===b)return-1===["img","video","audio","source","track"].indexOf(a)?u.RESOURCE_URL:u.MEDIA_URL;if("xlinkHref"===b)return"image"===a?u.MEDIA_URL:"a"===a?u.URL:u.RESOURCE_URL;if("form"===a&&"action"===b||"base"===a&&"href"===b||"link"===a&&"href"===b)return u.RESOURCE_URL;if("a"===a&&("href"===b||"ngHref"===b))return u.URL}function ya(a,b){var c=b.toLowerCase();return v[a+"|"+c]||v["*|"+c]}function za(a){return ma(u.valueOf(a),"ng-prop-srcset")}function Ea(a,b,c,
|
||||||
|
d){if(m.test(d))throw $("nodomevents");a=ua(a);var e=ya(a,d),f=Ta;"srcset"!==d||"img"!==a&&"source"!==a?e&&(f=u.getTrusted.bind(u,e)):f=za;b.push({priority:100,compile:function(a,b){var e=p(b[c]),g=p(b[c],function(a){return u.valueOf(a)});return{pre:function(a,b){function c(){var g=e(a);b[0][d]=f(g)}c();a.$watch(g,c)}}}})}function Ia(a,c,d,e,f){var g=ua(a),k=qa(g,e),l=h[e]||f,p=b(d,!f,k,l);if(p){if("multiple"===e&&"select"===g)throw $("selmulti",Aa(a));if(m.test(e))throw $("nodomevents");c.push({priority:100,
|
||||||
|
compile:function(){return{pre:function(a,c,f){c=f.$$observers||(f.$$observers=T());var g=f[e];g!==d&&(p=g&&b(g,!0,k,l),d=g);p&&(f[e]=p(a),(c[e]||(c[e]=[])).$$inter=!0,(f.$$observers&&f.$$observers[e].$$scope||a).$watch(p,function(a,b){"class"===e&&a!==b?f.$updateClass(a,b):f.$set(e,a)}))}}}})}}function oa(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]===d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&
|
||||||
|
(a.context=c);break}f&&f.replaceChild(c,d);a=z.document.createDocumentFragment();for(g=0;g<e;g++)a.appendChild(b[g]);x.hasData(d)&&(x.data(c,x.data(d)),x(d).off("$destroy"));x.cleanData(a.querySelectorAll("*"));for(g=1;g<e;g++)delete b[g];b[0]=c;b.length=1}function Ba(a,b){return S(function(){return a.apply(null,arguments)},a,b)}function Ca(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,Aa(d))}}function ra(a,b){if(s)throw $("missingattr",a,b);}function Da(a,c,d,e,f){function g(b,c,e){B(d.$onChanges)&&
|
||||||
|
!ec(c,e)&&(Ua||(a.$$postDigest(q),Ua=[]),m||(m={},Ua.push(h)),m[b]&&(e=m[b].previousValue),m[b]=new Kb(e,c))}function h(){d.$onChanges(m);m=void 0}var k=[],l={},m;r(e,function(e,h){var m=e.attrName,n=e.optional,I,t,u,s;switch(e.mode){case "@":n||ta.call(c,m)||(ra(m,f.name),d[h]=c[m]=void 0);n=c.$observe(m,function(a){if(C(a)||Ga(a))g(h,a,d[h]),d[h]=a});c.$$observers[m].$$scope=a;I=c[m];C(I)?d[h]=b(I)(a):Ga(I)&&(d[h]=I);l[h]=new Kb(uc,d[h]);k.push(n);break;case "=":if(!ta.call(c,m)){if(n)break;ra(m,
|
||||||
|
f.name);c[m]=void 0}if(n&&!c[m])break;t=p(c[m]);s=t.literal?va:ec;u=t.assign||function(){I=d[h]=t(a);throw $("nonassign",c[m],m,f.name);};I=d[h]=t(a);n=function(b){s(b,d[h])||(s(b,I)?u(a,b=d[h]):d[h]=b);return I=b};n.$stateful=!0;n=e.collection?a.$watchCollection(c[m],n):a.$watch(p(c[m],n),null,t.literal);k.push(n);break;case "<":if(!ta.call(c,m)){if(n)break;ra(m,f.name);c[m]=void 0}if(n&&!c[m])break;t=p(c[m]);var v=t.literal,L=d[h]=t(a);l[h]=new Kb(uc,d[h]);n=a[e.collection?"$watchCollection":"$watch"](t,
|
||||||
|
function(a,b){if(b===a){if(b===L||v&&va(b,L))return;b=L}g(h,a,b);d[h]=a});k.push(n);break;case "&":n||ta.call(c,m)||ra(m,f.name);t=c.hasOwnProperty(m)?p(c[m]):E;if(t===E&&n)break;d[h]=function(b){return t(a,b)}}});return{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var Ma=/^\w/,Fa=z.document.createElement("div"),Oa=t,Qa=N,Ja=G,Ua;w.prototype={$normalize:xa,$addClass:function(a){a&&0<a.length&&R.addClass(this.$$element,a)},$removeClass:function(a){a&&
|
||||||
|
0<a.length&&R.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=ud(a,b);c&&c.length&&R.addClass(this.$$element,c);(c=ud(b,a))&&c.length&&R.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=nd(this.$$element[0],a),g=vd[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Xc(a,"-"));"img"===ua(this.$$element)&&"srcset"===a&&(this[a]=b=ma(b,"$set('srcset', value)"));!1!==d&&(null===b||A(b)?this.$$element.removeAttr(e):
|
||||||
|
Ma.test(e)?f&&!1===b?this.$$element.removeAttr(e):this.$$element.attr(e,b):O(this.$$element[0],e,b));(a=this.$$observers)&&r(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=T()),e=d[a]||(d[a]=[]);e.push(b);L.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||A(c[a])||b(c[a])});return function(){cb(e,b)}}};var Ka=b.startSymbol(),La=b.endSymbol(),Na="{{"===Ka&&"}}"===La?Ta:function(a){return a.replace(/\{\{/g,Ka).replace(/}}/g,La)},Ra=
|
||||||
|
/^ng(Attr|Prop|On)([A-Z].*)$/,Sa=/^(.+)Start$/;da.$$addBindingInfo=n?function(a,b){var c=a.data("$binding")||[];H(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:E;da.$$addBindingClass=n?function(a){sa(a,"ng-binding")}:E;da.$$addScopeInfo=n?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:E;da.$$addScopeClass=n?function(a,b){sa(a,b?"ng-isolate-scope":"ng-scope")}:E;da.$$createComment=function(a,b){var c="";n&&(c=" "+(a||"")+": ",b&&(c+=b+" "));return z.document.createComment(c)};
|
||||||
|
return da}]}function Kb(a,b){this.previousValue=a;this.currentValue=b}function xa(a){return a.replace(rd,"").replace(Jg,function(a,d,c){return c?d.toUpperCase():d})}function ud(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],k=0;k<e.length;k++)if(g===e[k])continue a;d+=(0<d.length?" ":"")+g}return d}function td(a){a=x(a);var b=a.length;if(1>=b)return a;for(;b--;){var d=a[b];(8===d.nodeType||d.nodeType===Pa&&""===d.nodeValue.trim())&&Kg.call(a,b,1)}return a}
|
||||||
|
function Gg(a,b){if(b&&C(b))return b;if(C(a)){var d=wd.exec(a);if(d)return d[3]}}function Kf(){var a={};this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,d){Ja(b,"controller");D(b)?S(a,b):a[b]=d};this.$get=["$injector",function(b){function d(a,b,d,g){if(!a||!D(a.$scope))throw F("$controller")("noscp",g,b);a.$scope[b]=d}return function(c,e,f,g){var k,h,l;f=!0===f;g&&C(g)&&(l=g);if(C(c)){g=c.match(wd);if(!g)throw xd("ctrlfmt",c);h=g[1];l=l||g[3];c=a.hasOwnProperty(h)?a[h]:Le(e.$scope,
|
||||||
|
h,!0);if(!c)throw xd("ctrlreg",h);tb(c,h,!0)}if(f)return f=(H(c)?c[c.length-1]:c).prototype,k=Object.create(f||null),l&&d(e,l,k,h||c.name),S(function(){var a=b.invoke(c,k,e,h);a!==k&&(D(a)||B(a))&&(k=a,l&&d(e,l,k,h||c.name));return k},{instance:k,identifier:l});k=b.instantiate(c,e,h);l&&d(e,l,k,h||c.name);return k}}]}function Lf(){this.$get=["$window",function(a){return x(a.document)}]}function Mf(){this.$get=["$document","$rootScope",function(a,b){function d(){e=c.hidden}var c=a[0],e=c&&c.hidden;
|
||||||
|
a.on("visibilitychange",d);b.$on("$destroy",function(){a.off("visibilitychange",d)});return function(){return e}}]}function Nf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function vc(a){return D(a)?ha(a)?a.toISOString():eb(a):a}function Tf(){this.$get=function(){return function(a){if(!a)return"";var b=[];Qc(a,function(a,c){null===a||A(a)||B(a)||(H(a)?r(a,function(a){b.push(ba(c)+"="+ba(vc(a)))}):b.push(ba(c)+"="+ba(vc(a))))});return b.join("&")}}}function Uf(){this.$get=
|
||||||
|
function(){return function(a){function b(a,e,f){H(a)?r(a,function(a,c){b(a,e+"["+(D(a)?c:"")+"]")}):D(a)&&!ha(a)?Qc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):(B(a)&&(a=a()),d.push(ba(e)+"="+(null==a?"":ba(vc(a)))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function wc(a,b){if(C(a)){var d=a.replace(Lg,"").trim();if(d){var c=b("Content-Type"),c=c&&0===c.indexOf(yd),e;(e=c)||(e=(e=d.match(Mg))&&Ng[e[0]].test(d));if(e)try{a=Tc(d)}catch(f){if(!c)return a;throw Lb("baddata",a,f);}}}return a}
|
||||||
|
function zd(a){var b=T(),d;C(a)?r(a.split("\n"),function(a){d=a.indexOf(":");var e=K(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):D(a)&&r(a,function(a,d){var f=K(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function Ad(a){var b;return function(d){b||(b=zd(a));return d?(d=b[K(d)],void 0===d&&(d=null),d):b}}function Bd(a,b,d,c){if(B(c))return c(a,b,d);r(c,function(c){a=c(a,b,d)});return a}function Sf(){var a=this.defaults={transformResponse:[wc],transformRequest:[function(a){return D(a)&&
|
||||||
|
"[object File]"!==la.call(a)&&"[object Blob]"!==la.call(a)&&"[object FormData]"!==la.call(a)?eb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ja(xc),put:ja(xc),patch:ja(xc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer",jsonpCallbackParam:"callback"},b=!1;this.useApplyAsync=function(a){return w(a)?(b=!!a,this):b};var d=this.interceptors=[],c=this.xsrfWhitelistedOrigins=[];this.$get=["$browser","$httpBackend","$$cookieReader",
|
||||||
|
"$cacheFactory","$rootScope","$q","$injector","$sce",function(e,f,g,k,h,l,m,p){function n(b){function c(a,b){for(var d=0,e=b.length;d<e;){var f=b[d++],g=b[d++];a=a.then(f,g)}b.length=0;return a}function d(a,b){var c,e={};r(a,function(a,d){B(a)?(c=a(b),null!=c&&(e[d]=c)):e[d]=a});return e}function f(a){var b=S({},a);b.data=Bd(a.data,a.headers,a.status,g.transformResponse);a=a.status;return 200<=a&&300>a?b:l.reject(b)}if(!D(b))throw F("$http")("badreq",b);if(!C(p.valueOf(b.url)))throw F("$http")("badreq",
|
||||||
|
b.url);var g=S({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer,jsonpCallbackParam:a.jsonpCallbackParam},b);g.headers=function(b){var c=a.headers,e=S({},b.headers),f,g,h,c=S({},c.common,c[K(b.method)]);a:for(f in c){g=K(f);for(h in e)if(K(h)===g)continue a;e[f]=c[f]}return d(e,ja(b))}(b);g.method=vb(g.method);g.paramSerializer=C(g.paramSerializer)?m.get(g.paramSerializer):g.paramSerializer;e.$$incOutstandingRequestCount("$http");
|
||||||
|
var h=[],k=[];b=l.resolve(g);r(v,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&k.push(a.response,a.responseError)});b=c(b,h);b=b.then(function(b){var c=b.headers,d=Bd(b.data,Ad(c),void 0,b.transformRequest);A(d)&&r(c,function(a,b){"content-type"===K(b)&&delete c[b]});A(b.withCredentials)&&!A(a.withCredentials)&&(b.withCredentials=a.withCredentials);return s(b,d).then(f,f)});b=c(b,k);return b=b.finally(function(){e.$$completeOutstandingRequest(E,
|
||||||
|
"$http")})}function s(c,d){function e(a){if(a){var c={};r(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function k(a,c,d,e,f){function g(){m(c,a,d,e,f)}R&&(200<=a&&300>a?R.put(O,[a,c,zd(d),e,f]):R.remove(O));b?h.$applyAsync(g):(g(),h.$$phase||h.$apply())}function m(a,b,d,e,f){b=-1<=b?b:0;(200<=b&&300>b?L.resolve:L.reject)({data:a,status:b,headers:Ad(d),config:c,statusText:e,xhrStatus:f})}function s(a){m(a.data,a.status,ja(a.headers()),
|
||||||
|
a.statusText,a.xhrStatus)}function v(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var L=l.defer(),u=L.promise,R,q,ma=c.headers,x="jsonp"===K(c.method),O=c.url;x?O=p.getTrustedResourceUrl(O):C(O)||(O=p.valueOf(O));O=G(O,c.paramSerializer(c.params));x&&(O=t(O,c.jsonpCallbackParam));n.pendingRequests.push(c);u.then(v,v);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(R=D(c.cache)?c.cache:D(a.cache)?a.cache:N);R&&(q=R.get(O),w(q)?q&&B(q.then)?q.then(s,
|
||||||
|
s):H(q)?m(q[1],q[0],ja(q[2]),q[3],q[4]):m(q,200,{},"OK","complete"):R.put(O,u));A(q)&&((q=kc(c.url)?g()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(ma[c.xsrfHeaderName||a.xsrfHeaderName]=q),f(c.method,O,d,k,ma,c.timeout,c.withCredentials,c.responseType,e(c.eventHandlers),e(c.uploadEventHandlers)));return u}function G(a,b){0<b.length&&(a+=(-1===a.indexOf("?")?"?":"&")+b);return a}function t(a,b){var c=a.split("?");if(2<c.length)throw Lb("badjsonp",a);c=hc(c[1]);r(c,function(c,d){if("JSON_CALLBACK"===
|
||||||
|
c)throw Lb("badjsonp",a);if(d===b)throw Lb("badjsonp",b,a);});return a+=(-1===a.indexOf("?")?"?":"&")+b+"=JSON_CALLBACK"}var N=k("$http");a.paramSerializer=C(a.paramSerializer)?m.get(a.paramSerializer):a.paramSerializer;var v=[];r(d,function(a){v.unshift(C(a)?m.get(a):m.invoke(a))});var kc=Og(c);n.pendingRequests=[];(function(a){r(arguments,function(a){n[a]=function(b,c){return n(S({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){r(arguments,function(a){n[a]=function(b,
|
||||||
|
c,d){return n(S({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");n.defaults=a;return n}]}function Wf(){this.$get=function(){return function(){return new z.XMLHttpRequest}}}function Vf(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(a,b,d,c){return Pg(a,c,a.defer,b,d[0])}]}function Pg(a,b,d,c,e){function f(a,b,d){a=a.replace("JSON_CALLBACK",b);var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",
|
||||||
|
m);f.removeEventListener("error",m);e.body.removeChild(f);f=null;var g=-1,s="unknown";a&&("load"!==a.type||c.wasCalled(b)||(a={type:"error"}),s=a.type,g="error"===a.type?404:200);d&&d(g,s)};f.addEventListener("load",m);f.addEventListener("error",m);e.body.appendChild(f);return m}return function(e,k,h,l,m,p,n,s,G,t){function N(a){J="timeout"===a;pa&&pa();y&&y.abort()}function v(a,b,c,e,f,g){w(P)&&d.cancel(P);pa=y=null;a(b,c,e,f,g)}k=k||a.url();if("jsonp"===K(e))var q=c.createCallback(k),pa=f(k,q,function(a,
|
||||||
|
b){var d=200===a&&c.getResponse(q);v(l,a,d,"",b,"complete");c.removeCallback(q)});else{var y=b(e,k),J=!1;y.open(e,k,!0);r(m,function(a,b){w(a)&&y.setRequestHeader(b,a)});y.onload=function(){var a=y.statusText||"",b="response"in y?y.response:y.responseText,c=1223===y.status?204:y.status;0===c&&(c=b?200:"file"===ga(k).protocol?404:0);v(l,c,b,y.getAllResponseHeaders(),a,"complete")};y.onerror=function(){v(l,-1,null,null,"","error")};y.ontimeout=function(){v(l,-1,null,null,"","timeout")};y.onabort=function(){v(l,
|
||||||
|
-1,null,null,"",J?"timeout":"abort")};r(G,function(a,b){y.addEventListener(b,a)});r(t,function(a,b){y.upload.addEventListener(b,a)});n&&(y.withCredentials=!0);if(s)try{y.responseType=s}catch(I){if("json"!==s)throw I;}y.send(A(h)?null:h)}if(0<p)var P=d(function(){N("timeout")},p);else p&&B(p.then)&&p.then(function(){N(w(p.$$timeoutId)?"timeout":"abort")})}}function Pf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=
|
||||||
|
["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(p,a).replace(n,b)}function k(a,b,c,d){var e=a.$watch(function(a){e();return d(a)},b,c);return e}function h(f,h,n,p){function v(a){try{return a=n&&!r?e.getTrusted(n,a):e.valueOf(a),p&&!w(a)?a:jc(a)}catch(b){c(Ma.interr(f,b))}}var r=n===e.URL||n===e.MEDIA_URL;if(!f.length||-1===f.indexOf(a)){if(h)return;h=g(f);r&&(h=e.getTrusted(n,h));h=ia(h);h.exp=f;h.expressions=[];h.$$watchDelegate=
|
||||||
|
k;return h}p=!!p;for(var q,y,J=0,I=[],P,Q=f.length,M=[],L=[],u;J<Q;)if(-1!==(q=f.indexOf(a,J))&&-1!==(y=f.indexOf(b,q+l)))J!==q&&M.push(g(f.substring(J,q))),J=f.substring(q+l,y),I.push(J),J=y+m,L.push(M.length),M.push("");else{J!==Q&&M.push(g(f.substring(J)));break}u=1===M.length&&1===L.length;var R=r&&u?void 0:v;P=I.map(function(a){return d(a,R)});if(!h||I.length){var x=function(a){for(var b=0,c=I.length;b<c;b++){if(p&&A(a[b]))return;M[L[b]]=a[b]}if(r)return e.getTrusted(n,u?M[0]:M.join(""));n&&
|
||||||
|
1<M.length&&Ma.throwNoconcat(f);return M.join("")};return S(function(a){var b=0,d=I.length,e=Array(d);try{for(;b<d;b++)e[b]=P[b](a);return x(e)}catch(g){c(Ma.interr(f,g))}},{exp:f,expressions:I,$$watchDelegate:function(a,b){var c;return a.$watchGroup(P,function(d,e){var f=x(d);b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=a.length,m=b.length,p=new RegExp(a.replace(/./g,f),"g"),n=new RegExp(b.replace(/./g,f),"g");h.startSymbol=function(){return a};h.endSymbol=function(){return b};return h}]}function Qf(){this.$get=
|
||||||
|
["$$intervalFactory","$window",function(a,b){var d={},c=function(a){b.clearInterval(a);delete d[a]},e=a(function(a,c,e){a=b.setInterval(a,c);d[a]=e;return a},c);e.cancel=function(a){if(!a)return!1;if(!a.hasOwnProperty("$$intervalId"))throw Qg("badprom");if(!d.hasOwnProperty(a.$$intervalId))return!1;a=a.$$intervalId;var b=d[a],e=b.promise;e.$$state&&(e.$$state.pur=!0);b.reject("canceled");c(a);return!0};return e}]}function Rf(){this.$get=["$browser","$q","$$q","$rootScope",function(a,b,d,c){return function(e,
|
||||||
|
f){return function(g,k,h,l){function m(){p?g.apply(null,n):g(s)}var p=4<arguments.length,n=p?Ha.call(arguments,4):[],s=0,G=w(l)&&!l,t=(G?d:b).defer(),r=t.promise;h=w(h)?h:0;r.$$intervalId=e(function(){G?a.defer(m):c.$evalAsync(m);t.notify(s++);0<h&&s>=h&&(t.resolve(s),f(r.$$intervalId));G||c.$apply()},k,t,G);return r}}}]}function Cd(a,b){var d=ga(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=fa(d.port)||Rg[d.protocol]||null}function Dd(a,b,d){if(Sg.test(a))throw kb("badpath",a);var c="/"!==
|
||||||
|
a.charAt(0);c&&(a="/"+a);a=ga(a);for(var c=(c&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname).split("/"),e=c.length;e--;)c[e]=decodeURIComponent(c[e]),d&&(c[e]=c[e].replace(/\//g,"%2F"));d=c.join("/");b.$$path=d;b.$$search=hc(a.search);b.$$hash=decodeURIComponent(a.hash);b.$$path&&"/"!==b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function yc(a,b){return a.slice(0,b.length)===b}function ya(a,b){if(yc(b,a))return b.substr(a.length)}function Da(a){var b=a.indexOf("#");return-1===b?a:
|
||||||
|
a.substr(0,b)}function zc(a,b,d){this.$$html5=!0;d=d||"";Cd(a,this);this.$$parse=function(a){var d=ya(b,a);if(!C(d))throw kb("ipthprfx",a,b);Dd(d,this,!0);this.$$path||(this.$$path="/");this.$$compose()};this.$$normalizeUrl=function(a){return b+a.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;w(f=ya(a,c))?(g=f,g=d&&w(f=ya(d,f))?b+(ya("/",f)||f):a+g):w(f=ya(b,c))?g=b+f:b===c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function Ac(a,b,d){Cd(a,this);
|
||||||
|
this.$$parse=function(c){var e=ya(a,c)||ya(b,c),f;A(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",A(e)&&(a=c,this.replace())):(f=ya(d,e),A(f)&&(f=e));Dd(f,this,!1);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;yc(f,e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$normalizeUrl=function(b){return a+(b?d+b:"")};this.$$parseLinkUrl=function(b,d){return Da(a)===Da(b)?(this.$$parse(b),!0):!1}}function Ed(a,b,d){this.$$html5=!0;Ac.apply(this,arguments);this.$$parseLinkUrl=
|
||||||
|
function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a===Da(c)?f=c:(g=ya(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$normalizeUrl=function(b){return a+d+b}}function Mb(a){return function(){return this[a]}}function Fd(a,b){return function(d){if(A(d))return this[a];this[a]=b(d);this.$$compose();return this}}function Yf(){var a="!",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return w(b)?(a=b,this):a};this.html5Mode=function(a){if(Ga(a))return b.enabled=
|
||||||
|
a,this;if(D(a)){Ga(a.enabled)&&(b.enabled=a.enabled);Ga(a.requireBase)&&(b.requireBase=a.requireBase);if(Ga(a.rewriteLinks)||C(a.rewriteLinks))b.rewriteLinks=a.rewriteLinks;return this}return b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function k(a,b){return a===b||ga(a).href===ga(b).href}function h(a,b,d){var e=m.url(),f=m.$$state;try{c.url(a,b,d),m.$$state=c.state()}catch(g){throw m.url(e),m.$$state=f,g;}}function l(a,b){d.$broadcast("$locationChangeSuccess",
|
||||||
|
m.absUrl(),a,m.$$state,b)}var m,p;p=c.baseHref();var n=c.url(),s;if(b.enabled){if(!p&&b.requireBase)throw kb("nobase");s=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(p||"/");p=e.history?zc:Ed}else s=Da(n),p=Ac;var r=s.substr(0,Da(s).lastIndexOf("/")+1);m=new p(s,r,"#"+a);m.$$parseLinkUrl(n,n);m.$$state=c.state();var t=/^\s*(javascript|mailto):/i;f.on("click",function(a){var e=b.rewriteLinks;if(e&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!==a.which&&2!==a.button){for(var g=x(a.target);"a"!==ua(g[0]);)if(g[0]===
|
||||||
|
f[0]||!(g=g.parent())[0])return;if(!C(e)||!A(g.attr(e))){var e=g.prop("href"),h=g.attr("href")||g.attr("xlink:href");D(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=ga(e.animVal).href);t.test(e)||!e||g.attr("target")||a.isDefaultPrevented()||!m.$$parseLinkUrl(e,h)||(a.preventDefault(),m.absUrl()!==c.url()&&d.$apply())}}});m.absUrl()!==n&&c.url(m.absUrl(),!0);var N=!0;c.onUrlChange(function(a,b){yc(a,r)?(d.$evalAsync(function(){var c=m.absUrl(),e=m.$$state,f;m.$$parse(a);m.$$state=b;f=d.$broadcast("$locationChangeStart",
|
||||||
|
a,c,b,e).defaultPrevented;m.absUrl()===a&&(f?(m.$$parse(c),m.$$state=e,h(c,!1,e)):(N=!1,l(c,e)))}),d.$$phase||d.$digest()):g.location.href=a});d.$watch(function(){if(N||m.$$urlUpdatedByLocation){m.$$urlUpdatedByLocation=!1;var a=c.url(),b=m.absUrl(),f=c.state(),g=m.$$replace,n=!k(a,b)||m.$$html5&&e.history&&f!==m.$$state;if(N||n)N=!1,d.$evalAsync(function(){var b=m.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,m.$$state,f).defaultPrevented;m.absUrl()===b&&(c?(m.$$parse(a),m.$$state=f):(n&&h(b,
|
||||||
|
g,f===m.$$state?null:m.$$state),l(a,f)))})}m.$$replace=!1});return m}]}function Zf(){var a=!0,b=this;this.debugEnabled=function(b){return w(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){dc(a)&&(a.stack&&f?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=d.console||{},e=b[a]||b.log||E;return function(){var a=[];r(arguments,function(b){a.push(c(b))});return Function.prototype.apply.call(e,
|
||||||
|
b,a)}}var f=wa||/\bEdge\//.test(d.navigator&&d.navigator.userAgent);return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Tg(a){return a+""}function Ug(a,b){return"undefined"!==typeof a?a:b}function Gd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function Vg(a,b){switch(a.type){case q.MemberExpression:if(a.computed)return!1;break;case q.UnaryExpression:return 1;case q.BinaryExpression:return"+"!==
|
||||||
|
a.operator?1:!1;case q.CallExpression:return!1}return void 0===b?Hd:b}function Z(a,b,d){var c,e,f=a.isPure=Vg(a,d);switch(a.type){case q.Program:c=!0;r(a.body,function(a){Z(a.expression,b,f);c=c&&a.expression.constant});a.constant=c;break;case q.Literal:a.constant=!0;a.toWatch=[];break;case q.UnaryExpression:Z(a.argument,b,f);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case q.BinaryExpression:Z(a.left,b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=
|
||||||
|
a.left.toWatch.concat(a.right.toWatch);break;case q.LogicalExpression:Z(a.left,b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case q.ConditionalExpression:Z(a.test,b,f);Z(a.alternate,b,f);Z(a.consequent,b,f);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case q.Identifier:a.constant=!1;a.toWatch=[a];break;case q.MemberExpression:Z(a.object,b,f);a.computed&&Z(a.property,b,f);a.constant=a.object.constant&&
|
||||||
|
(!a.computed||a.property.constant);a.toWatch=a.constant?[]:[a];break;case q.CallExpression:c=d=a.filter?!b(a.callee.name).$stateful:!1;e=[];r(a.arguments,function(a){Z(a,b,f);c=c&&a.constant;e.push.apply(e,a.toWatch)});a.constant=c;a.toWatch=d?e:[a];break;case q.AssignmentExpression:Z(a.left,b,f);Z(a.right,b,f);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case q.ArrayExpression:c=!0;e=[];r(a.elements,function(a){Z(a,b,f);c=c&&a.constant;e.push.apply(e,a.toWatch)});a.constant=c;
|
||||||
|
a.toWatch=e;break;case q.ObjectExpression:c=!0;e=[];r(a.properties,function(a){Z(a.value,b,f);c=c&&a.value.constant;e.push.apply(e,a.value.toWatch);a.computed&&(Z(a.key,b,!1),c=c&&a.key.constant,e.push.apply(e,a.key.toWatch))});a.constant=c;a.toWatch=e;break;case q.ThisExpression:a.constant=!1;a.toWatch=[];break;case q.LocalsExpression:a.constant=!1,a.toWatch=[]}}function Id(a){if(1===a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function Jd(a){return a.type===
|
||||||
|
q.Identifier||a.type===q.MemberExpression}function Kd(a){if(1===a.body.length&&Jd(a.body[0].expression))return{type:q.AssignmentExpression,left:a.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function Ld(a){this.$filter=a}function Md(a){this.$filter=a}function Nb(a,b,d){this.ast=new q(a,d);this.astCompiler=d.csp?new Md(b):new Ld(b)}function Bc(a){return B(a.valueOf)?a.valueOf():Wg.call(a)}function $f(){var a=T(),b={"true":!0,"false":!1,"null":null,undefined:void 0},d,c;this.addLiteral=
|
||||||
|
function(a,c){b[a]=c};this.setIdentifierFns=function(a,b){d=a;c=b;return this};this.$get=["$filter",function(e){function f(b,c){var d,f;switch(typeof b){case "string":return f=b=b.trim(),d=a[f],d||(d=new Ob(G),d=(new Nb(d,e,G)).parse(b),a[f]=p(d)),s(d,c);case "function":return s(b,c);default:return s(E,c)}}function g(a,b,c){return null==a||null==b?a===b:"object"!==typeof a||(a=Bc(a),"object"!==typeof a||c)?a===b||a!==a&&b!==b:!1}function k(a,b,c,d,e){var f=d.inputs,h;if(1===f.length){var k=g,f=f[0];
|
||||||
|
return a.$watch(function(a){var b=f(a);g(b,k,f.isPure)||(h=d(a,void 0,void 0,[b]),k=b&&Bc(b));return h},b,c,e)}for(var l=[],m=[],n=0,p=f.length;n<p;n++)l[n]=g,m[n]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var k=f[c](a);if(b||(b=!g(k,l[c],f[c].isPure)))m[c]=k,l[c]=k&&Bc(k)}b&&(h=d(a,void 0,void 0,m));return h},b,c,e)}function h(a,b,c,d,e){function f(){h(m)&&k()}function g(a,b,c,d){m=u&&d?d[0]:n(a,b,c,d);h(m)&&a.$$postDigest(f);return s(m)}var h=d.literal?l:w,k,m,n=d.$$intercepted||
|
||||||
|
d,s=d.$$interceptor||Ta,u=d.inputs&&!n.inputs;g.literal=d.literal;g.constant=d.constant;g.inputs=d.inputs;p(g);return k=a.$watch(g,b,c,e)}function l(a){var b=!0;r(a,function(a){w(a)||(b=!1)});return b}function m(a,b,c,d){var e=a.$watch(function(a){e();return d(a)},b,c);return e}function p(a){a.constant?a.$$watchDelegate=m:a.oneTime?a.$$watchDelegate=h:a.inputs&&(a.$$watchDelegate=k);return a}function n(a,b){function c(d){return b(a(d))}c.$stateful=a.$stateful||b.$stateful;c.$$pure=a.$$pure&&b.$$pure;
|
||||||
|
return c}function s(a,b){if(!b)return a;a.$$interceptor&&(b=n(a.$$interceptor,b),a=a.$$intercepted);var c=!1,d=function(d,e,f,g){d=c&&g?g[0]:a(d,e,f,g);return b(d)};d.$$intercepted=a;d.$$interceptor=b;d.literal=a.literal;d.oneTime=a.oneTime;d.constant=a.constant;b.$stateful||(c=!a.inputs,d.inputs=a.inputs?a.inputs:[a],b.$$pure||(d.inputs=d.inputs.map(function(a){return a.isPure===Hd?function(b){return a(b)}:a})));return p(d)}var G={csp:Ba().noUnsafeEval,literals:Ia(b),isIdentifierStart:B(d)&&d,isIdentifierContinue:B(c)&&
|
||||||
|
c};f.$$getAst=function(a){var b=new Ob(G);return(new Nb(b,e,G)).getAst(a).ast};return f}]}function bg(){var a=!0;this.$get=["$rootScope","$exceptionHandler",function(b,d){return Nd(function(a){b.$evalAsync(a)},d,a)}];this.errorOnUnhandledRejections=function(b){return w(b)?(a=b,this):a}}function cg(){var a=!0;this.$get=["$browser","$exceptionHandler",function(b,d){return Nd(function(a){b.defer(a)},d,a)}];this.errorOnUnhandledRejections=function(b){return w(b)?(a=b,this):a}}function Nd(a,b,d){function c(){return new e}
|
||||||
|
function e(){var a=this.promise=new f;this.resolve=function(b){h(a,b)};this.reject=function(b){m(a,b)};this.notify=function(b){n(a,b)}}function f(){this.$$state={status:0}}function g(){for(;!w&&x.length;){var a=x.shift();if(!a.pur){a.pur=!0;var c=a.value,c="Possibly unhandled rejection: "+("function"===typeof c?c.toString().replace(/ \{[\s\S]*$/,""):A(c)?"undefined":"string"!==typeof c?Ne(c,void 0):c);dc(a.value)?b(a.value,c):b(c)}}}function k(c){!d||c.pending||2!==c.status||c.pur||(0===w&&0===x.length&&
|
||||||
|
a(g),x.push(c));!c.processScheduled&&c.pending&&(c.processScheduled=!0,++w,a(function(){var e,f,k;k=c.pending;c.processScheduled=!1;c.pending=void 0;try{for(var l=0,n=k.length;l<n;++l){c.pur=!0;f=k[l][0];e=k[l][c.status];try{B(e)?h(f,e(c.value)):1===c.status?h(f,c.value):m(f,c.value)}catch(p){m(f,p),p&&!0===p.$$passToExceptionHandler&&b(p)}}}finally{--w,d&&0===w&&a(g)}}))}function h(a,b){a.$$state.status||(b===a?p(a,v("qcycle",b)):l(a,b))}function l(a,b){function c(b){g||(g=!0,l(a,b))}function d(b){g||
|
||||||
|
(g=!0,p(a,b))}function e(b){n(a,b)}var f,g=!1;try{if(D(b)||B(b))f=b.then;B(f)?(a.$$state.status=-1,f.call(b,c,d,e)):(a.$$state.value=b,a.$$state.status=1,k(a.$$state))}catch(h){d(h)}}function m(a,b){a.$$state.status||p(a,b)}function p(a,b){a.$$state.value=b;a.$$state.status=2;k(a.$$state)}function n(c,d){var e=c.$$state.pending;0>=c.$$state.status&&e&&e.length&&a(function(){for(var a,c,f=0,g=e.length;f<g;f++){c=e[f][0];a=e[f][3];try{n(c,B(a)?a(d):d)}catch(h){b(h)}}})}function s(a){var b=new f;m(b,
|
||||||
|
a);return b}function G(a,b,c){var d=null;try{B(c)&&(d=c())}catch(e){return s(e)}return d&&B(d.then)?d.then(function(){return b(a)},s):b(a)}function t(a,b,c,d){var e=new f;h(e,a);return e.then(b,c,d)}function q(a){if(!B(a))throw v("norslvr",a);var b=new f;a(function(a){h(b,a)},function(a){m(b,a)});return b}var v=F("$q",TypeError),w=0,x=[];S(f.prototype,{then:function(a,b,c){if(A(a)&&A(b)&&A(c))return this;var d=new f;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);
|
||||||
|
0<this.$$state.status&&k(this.$$state);return d},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return G(b,y,a)},function(b){return G(b,s,a)},b)}});var y=t;q.prototype=f.prototype;q.defer=c;q.reject=s;q.when=t;q.resolve=y;q.all=function(a){var b=new f,c=0,d=H(a)?[]:{};r(a,function(a,e){c++;t(a).then(function(a){d[e]=a;--c||h(b,d)},function(a){m(b,a)})});0===c&&h(b,d);return b};q.race=function(a){var b=c();r(a,function(a){t(a).then(b.resolve,b.reject)});
|
||||||
|
return b.promise};return q}function mg(){this.$get=["$window","$timeout",function(a,b){var d=a.requestAnimationFrame||a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function ag(){function a(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;
|
||||||
|
this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++qb;this.$$ChildScope=null;this.$$suspended=!1}b.prototype=a;return b}var b=10,d=F("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$exceptionHandler","$parse","$browser",function(f,g,k){function h(a){a.currentScope.$$destroyed=!0}function l(a){9===wa&&(a.$$childHead&&l(a.$$childHead),a.$$nextSibling&&l(a.$$nextSibling));a.$parent=a.$$nextSibling=a.$$prevSibling=a.$$childHead=
|
||||||
|
a.$$childTail=a.$root=a.$$watchers=null}function m(){this.$id=++qb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$suspended=this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function p(a){if(v.$$phase)throw d("inprog",v.$$phase);v.$$phase=a}function n(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function s(a,b,c){do a.$$listenerCount[c]-=
|
||||||
|
b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function G(){}function t(){for(;y.length;)try{y.shift()()}catch(a){f(a)}e=null}function q(){null===e&&(e=k.defer(function(){v.$apply(t)},null,"$applyAsync"))}m.prototype={constructor:m,$new:function(b,c){var d;c=c||this;b?(d=new m,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):
|
||||||
|
c.$$childHead=c.$$childTail=d;(b||c!==this)&&d.$on("$destroy",h);return d},$watch:function(a,b,d,e){var f=g(a);b=B(b)?b:E;if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,a);var h=this,k=h.$$watchers,l={fn:b,last:G,get:f,exp:e||a,eq:!!d};c=null;k||(k=h.$$watchers=[],k.$$digestWatchIndex=-1);k.unshift(l);k.$$digestWatchIndex++;n(this,1);return function(){var a=cb(k,l);0<=a&&(n(h,-1),a<k.$$digestWatchIndex&&k.$$digestWatchIndex--);c=null}},$watchGroup:function(a,b){function c(){h=!1;try{k?(k=
|
||||||
|
!1,b(e,e,g)):b(e,d,g)}finally{for(var f=0;f<a.length;f++)d[f]=e[f]}}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});r(a,function(a,b){var d=g.$watch(a,function(a){e[b]=a;h||(h=!0,g.$evalAsync(c))});f.push(d)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,
|
||||||
|
g,h;if(!A(e)){if(D(e))if(za(e))for(f!==n&&(f=n,t=f.length=0,l++),a=e.length,t!==a&&(l++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==p&&(f=p={},t=0,l++);a=0;for(b in e)ta.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(t++,f[b]=g,l++));if(t>a)for(b in l++,f)ta.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$$pure=g(a).literal;c.$stateful=!c.$$pure;var d=this,e,f,h,k=1<b.length,l=0,m=g(a,c),n=[],p={},s=!0,t=0;return this.$watch(m,
|
||||||
|
function(){s?(s=!1,b(e,e,d)):b(e,h,d);if(k)if(D(e))if(za(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)ta.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var a,g,h,l,m,n,s,r=b,q,y=w.length?v:this,N=[],A,z;p("$digest");k.$$checkUrlChange();this===v&&null!==e&&(k.defer.cancel(e),t());c=null;do{s=!1;q=y;for(n=0;n<w.length;n++){try{z=w[n],l=z.fn,l(z.scope,z.locals)}catch(C){f(C)}c=null}w.length=0;a:do{if(n=!q.$$suspended&&q.$$watchers)for(n.$$digestWatchIndex=n.length;n.$$digestWatchIndex--;)try{if(a=
|
||||||
|
n[n.$$digestWatchIndex])if(m=a.get,(g=m(q))!==(h=a.last)&&!(a.eq?va(g,h):Y(g)&&Y(h)))s=!0,c=a,a.last=a.eq?Ia(g,null):g,l=a.fn,l(g,h===G?g:h,q),5>r&&(A=4-r,N[A]||(N[A]=[]),N[A].push({msg:B(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:h}));else if(a===c){s=!1;break a}}catch(E){f(E)}if(!(n=!q.$$suspended&&q.$$watchersCount&&q.$$childHead||q!==y&&q.$$nextSibling))for(;q!==y&&!(n=q.$$nextSibling);)q=q.$parent}while(q=n);if((s||w.length)&&!r--)throw v.$$phase=null,d("infdig",b,N);
|
||||||
|
}while(s||w.length);for(v.$$phase=null;J<x.length;)try{x[J++]()}catch(D){f(D)}x.length=J=0;k.$$checkUrlChange()},$suspend:function(){this.$$suspended=!0},$isSuspended:function(){return this.$$suspended},$resume:function(){this.$$suspended=!1},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===v&&k.$$applicationDestroyed();n(this,-this.$$watchersCount);for(var b in this.$$listenerCount)s(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=E;this.$on=this.$watch=this.$watchGroup=function(){return E};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){v.$$phase||
|
||||||
|
w.length||k.defer(function(){w.length&&v.$digest()},null,"$evalAsync");w.push({scope:this,fn:g(a),locals:b})},$$postDigest:function(a){x.push(a)},$apply:function(a){try{p("$apply");try{return this.$eval(a)}finally{v.$$phase=null}}catch(b){f(b)}finally{try{v.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&y.push(b);a=g(a);q()},$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&&(delete c[d],s(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=db([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,k)}catch(n){f(n)}else d.splice(l,1),l--,m--;if(g)break;e=e.$parent}while(e);h.currentScope=
|
||||||
|
null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=db([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){f(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=
|
||||||
|
null;return e}};var v=new m,w=v.$$asyncQueue=[],x=v.$$postDigestQueue=[],y=v.$$applyAsyncQueue=[],J=0;return v}]}function Qe(){var a=/^\s*(https?|s?ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return w(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return w(a)?(b=a,this):b};this.$get=function(){return function(d,c){var e=c?b:a,f=ga(d&&d.trim()).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function Xg(a){if("self"===
|
||||||
|
a)return a;if(C(a)){if(-1<a.indexOf("***"))throw Ea("iwcard",a);a=Od(a).replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^:/.?&;]*");return new RegExp("^"+a+"$")}if(ab(a))return new RegExp("^"+a.source+"$");throw Ea("imatcher");}function Pd(a){var b=[];w(a)&&r(a,function(a){b.push(Xg(a))});return b}function eg(){this.SCE_CONTEXTS=W;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=Pd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=Pd(a));return b};
|
||||||
|
this.$get=["$injector","$$sanitizeUri",function(d,c){function e(a,b){var c;"self"===a?(c=Cc(b,Qd))||(z.document.baseURI?c=z.document.baseURI:(Na||(Na=z.document.createElement("a"),Na.href=".",Na=Na.cloneNode(!1)),c=Na.href),c=Cc(b,c)):c=!!a.exec(b.href);return c}function f(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};
|
||||||
|
return b}var g=function(a){throw Ea("unsafe");};d.has("$sanitize")&&(g=d.get("$sanitize"));var k=f(),h={};h[W.HTML]=f(k);h[W.CSS]=f(k);h[W.MEDIA_URL]=f(k);h[W.URL]=f(h[W.MEDIA_URL]);h[W.JS]=f(k);h[W.RESOURCE_URL]=f(h[W.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ea("icontext",a,b);if(null===b||A(b)||""===b)return b;if("string"!==typeof b)throw Ea("itype",a);return new c(b)},getTrusted:function(d,f){if(null===f||A(f)||""===f)return f;var k=h.hasOwnProperty(d)?
|
||||||
|
h[d]:null;if(k&&f instanceof k)return f.$$unwrapTrustedValue();B(f.$$unwrapTrustedValue)&&(f=f.$$unwrapTrustedValue());if(d===W.MEDIA_URL||d===W.URL)return c(f.toString(),d===W.MEDIA_URL);if(d===W.RESOURCE_URL){var k=ga(f.toString()),n,s,r=!1;n=0;for(s=a.length;n<s;n++)if(e(a[n],k)){r=!0;break}if(r)for(n=0,s=b.length;n<s;n++)if(e(b[n],k)){r=!1;break}if(r)return f;throw Ea("insecurl",f.toString());}if(d===W.HTML)return g(f);throw Ea("unsafe");},valueOf:function(a){return a instanceof k?a.$$unwrapTrustedValue():
|
||||||
|
a}}}]}function dg(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>wa)throw Ea("iequirks");var c=ja(W);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Ta);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;r(W,
|
||||||
|
function(a,b){var d=K(b);c[("parse_as_"+d).replace(Dc,xb)]=function(b){return e(a,b)};c[("get_trusted_"+d).replace(Dc,xb)]=function(b){return f(a,b)};c[("trust_as_"+d).replace(Dc,xb)]=function(b){return g(a,b)}});return c}]}function fg(){this.$get=["$window","$document",function(a,b){var d={},c=!((!a.nw||!a.nw.process)&&a.chrome&&(a.chrome.app&&a.chrome.app.runtime||!a.chrome.app&&a.chrome.runtime&&a.chrome.runtime.id))&&a.history&&a.history.pushState,e=fa((/android (\d+)/.exec(K((a.navigator||{}).userAgent))||
|
||||||
|
[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},k=g.body&&g.body.style,h=!1,l=!1;k&&(h=!!("transition"in k||"webkitTransition"in k),l=!!("animation"in k||"webkitAnimation"in k));return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&wa)return!1;if(A(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ba(),transitions:h,animations:l,android:e}}]}function gg(){this.$get=ia(function(a){return new Yg(a)})}function Yg(a){function b(){var a=e.pop();return a&&
|
||||||
|
a.cb}function d(a){for(var b=e.length-1;0<=b;--b){var c=e[b];if(c.type===a)return e.splice(b,1),c.cb}}var c={},e=[],f=this.ALL_TASKS_TYPE="$$all$$",g=this.DEFAULT_TASK_TYPE="$$default$$";this.completeTask=function(e,h){h=h||g;try{e()}finally{var l;l=h||g;c[l]&&(c[l]--,c[f]--);l=c[h];var m=c[f];if(!m||!l)for(l=m?d:b;m=l(h);)try{m()}catch(p){a.error(p)}}};this.incTaskCount=function(a){a=a||g;c[a]=(c[a]||0)+1;c[f]=(c[f]||0)+1};this.notifyWhenNoPendingTasks=function(a,b){b=b||f;c[b]?e.push({type:b,cb:a}):
|
||||||
|
a()}}function ig(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function(b,d,c,e,f){function g(k,h){g.totalPendingRequests++;if(!C(k)||A(d.get(k)))k=f.getTrustedResourceUrl(k);var l=c.defaults&&c.defaults.transformResponse;H(l)?l=l.filter(function(a){return a!==wc}):l===wc&&(l=null);return c.get(k,S({cache:d,transformResponse:l},a)).finally(function(){g.totalPendingRequests--}).then(function(a){return d.put(k,a.data)},
|
||||||
|
function(a){h||(a=Zg("tpload",k,a.status,a.statusText),b(a));return e.reject(a)})}g.totalPendingRequests=0;return g}]}function jg(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];r(a,function(a){var c=ca.element(a).data("$binding");c&&r(c,function(c){d?(new RegExp("(^|\\s)"+Od(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!==c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-",
|
||||||
|
"data-ng-","ng\\:"],k=0;k<g.length;++k){var h=a.querySelectorAll("["+g[k]+"model"+(d?"=":"*=")+'"'+b+'"]');if(h.length)return h}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}function kg(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(a,b,d,c,e){function f(f,h,l){B(f)||(l=h,h=f,f=E);var m=Ha.call(arguments,3),p=w(l)&&!l,n=(p?c:d).defer(),s=n.promise,r;
|
||||||
|
r=b.defer(function(){try{n.resolve(f.apply(null,m))}catch(b){n.reject(b),e(b)}finally{delete g[s.$$timeoutId]}p||a.$apply()},h,"$timeout");s.$$timeoutId=r;g[r]=n;return s}var g={};f.cancel=function(a){if(!a)return!1;if(!a.hasOwnProperty("$$timeoutId"))throw $g("badprom");if(!g.hasOwnProperty(a.$$timeoutId))return!1;a=a.$$timeoutId;var c=g[a],d=c.promise;d.$$state&&(d.$$state.pur=!0);c.reject("canceled");delete g[a];return b.defer.cancel(a)};return f}]}function ga(a){if(!C(a))return a;wa&&(aa.setAttribute("href",
|
||||||
|
a),a=aa.href);aa.setAttribute("href",a);a=aa.hostname;!ah&&-1<a.indexOf(":")&&(a="["+a+"]");return{href:aa.href,protocol:aa.protocol?aa.protocol.replace(/:$/,""):"",host:aa.host,search:aa.search?aa.search.replace(/^\?/,""):"",hash:aa.hash?aa.hash.replace(/^#/,""):"",hostname:a,port:aa.port,pathname:"/"===aa.pathname.charAt(0)?aa.pathname:"/"+aa.pathname}}function Og(a){var b=[Qd].concat(a.map(ga));return function(a){a=ga(a);return b.some(Cc.bind(null,a))}}function Cc(a,b){a=ga(a);b=ga(b);return a.protocol===
|
||||||
|
b.protocol&&a.host===b.host}function lg(){this.$get=ia(z)}function Rd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}var d=a[0]||{},c={},e="";return function(){var a,g,k,h,l;try{a=d.cookie||""}catch(m){a=""}if(a!==e)for(e=a,a=e.split("; "),c={},k=0;k<a.length;k++)g=a[k],h=g.indexOf("="),0<h&&(l=b(g.substring(0,h)),A(c[l])&&(c[l]=b(g.substring(h+1))));return c}}function pg(){this.$get=Rd}function fd(a){function b(d,c){if(D(d)){var e={};r(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+
|
||||||
|
"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",Sd);b("date",Td);b("filter",bh);b("json",ch);b("limitTo",dh);b("lowercase",eh);b("number",Ud);b("orderBy",Vd);b("uppercase",fh)}function bh(){return function(a,b,d,c){if(!za(a)){if(null==a)return a;throw F("filter")("notarray",a);}c=c||"$";var e;switch(Ec(b)){case "function":break;case "boolean":case "null":case "number":case "string":e=!0;case "object":b=gh(b,d,c,e);break;default:return a}return Array.prototype.filter.call(a,
|
||||||
|
b)}}function gh(a,b,d,c){var e=D(a)&&d in a;!0===b?b=va:B(b)||(b=function(a,b){if(A(a))return!1;if(null===a||null===b)return a===b;if(D(b)||D(a)&&!cc(a))return!1;a=K(""+a);b=K(""+b);return-1!==a.indexOf(b)});return function(f){return e&&!D(f)?Fa(f,a[d],b,d,!1):Fa(f,a,b,d,c)}}function Fa(a,b,d,c,e,f){var g=Ec(a),k=Ec(b);if("string"===k&&"!"===b.charAt(0))return!Fa(a,b.substring(1),d,c,e);if(H(a))return a.some(function(a){return Fa(a,b,d,c,e)});switch(g){case "object":var h;if(e){for(h in a)if(h.charAt&&
|
||||||
|
"$"!==h.charAt(0)&&Fa(a[h],b,d,c,!0))return!0;return f?!1:Fa(a,b,d,c,!1)}if("object"===k){for(h in b)if(f=b[h],!B(f)&&!A(f)&&(g=h===c,!Fa(g?a:a[h],f,d,c,g,g)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function Ec(a){return null===a?"null":typeof a}function Sd(a){var b=a.NUMBER_FORMATS;return function(a,c,e){A(c)&&(c=b.CURRENCY_SYM);A(e)&&(e=b.PATTERNS[1].maxFrac);var f=c?/\u00A4/g:/\s*\u00A4\s*/g;return null==a?a:Wd(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(f,
|
||||||
|
c)}}function Ud(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Wd(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function hh(a){var b=0,d,c,e,f,g;-1<(c=a.indexOf(Xd))&&(a=a.replace(Xd,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)===Fc;e++);if(e===(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)===Fc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Yd&&(d=d.splice(0,Yd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ih(a,
|
||||||
|
b,d,c){var e=a.d,f=e.length-a.i;b=A(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d){e.splice(Math.max(a.i,d));for(var g=d;g<e.length;g++)e[g]=0}else for(f=Math.max(0,f),a.i=1,e.length=Math.max(1,d=b+1),e[0]=0,g=1;g<d;g++)e[g]=0;if(5<=c)if(0>d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;f<Math.max(0,b);f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),a.i++}function Wd(a,b,d,c,e){if(!C(a)&&!X(a)||isNaN(a))return"";
|
||||||
|
var f=!isFinite(a),g=!1,k=Math.abs(a)+"",h="";if(f)h="\u221e";else{g=hh(k);ih(g,e,b.minFrac,b.maxFrac);h=g.d;k=g.i;e=g.e;f=[];for(g=h.reduce(function(a,b){return a&&!b},!0);0>k;)h.unshift(0),k++;0<k?f=h.splice(k,h.length):(f=h,h=[0]);k=[];for(h.length>=b.lgSize&&k.unshift(h.splice(-b.lgSize,h.length).join(""));h.length>b.gSize;)k.unshift(h.splice(-b.gSize,h.length).join(""));h.length&&k.unshift(h.join(""));h=k.join(d);f.length&&(h+=c+f.join(""));e&&(h+="e+"+e)}return 0>a&&!g?b.negPre+h+b.negSuf:b.posPre+
|
||||||
|
h+b.posSuf}function Pb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length<b;)a=Fc+a;d&&(a=a.substr(a.length-b));return e+a}function ea(a,b,d,c,e){d=d||0;return function(f){f=f["get"+a]();if(0<d||f>-d)f+=d;0===f&&-12===d&&(f=12);return Pb(f,b,c,e)}}function lb(a,b,d){return function(c,e){var f=c["get"+a](),g=vb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Zd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function $d(a){return function(b){var d=
|
||||||
|
Zd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Pb(b,a)}}function Gc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Td(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,k=b[8]?a.setUTCFullYear:a.setFullYear,h=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=fa(b[9]+b[10]),g=fa(b[9]+b[11]));k.call(a,fa(b[1]),fa(b[2])-1,fa(b[3]));f=fa(b[4]||0)-f;g=fa(b[5]||0)-g;k=fa(b[6]||0);b=Math.round(1E3*parseFloat("0."+
|
||||||
|
(b[7]||0)));h.call(a,f,g,k,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",k=[],h,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;C(c)&&(c=jh.test(c)?fa(c):b(c));X(c)&&(c=new Date(c));if(!ha(c)||!isFinite(c.getTime()))return c;for(;d;)(l=kh.exec(d))?(k=db(k,l,1),d=k.pop()):(k.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=fc(f,m),c=gc(c,f,!0));r(k,function(b){h=lh[b];g+=h?h(c,a.DATETIME_FORMATS,
|
||||||
|
m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ch(){return function(a,b){A(b)&&(b=2);return eb(a,b)}}function dh(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):fa(b);if(Y(b))return a;X(a)&&(a=a.toString());if(!za(a))return a;d=!d||isNaN(d)?0:fa(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?Hc(a,d,d+b):0===d?Hc(a,b,a.length):Hc(a,Math.max(0,d+b),d)}}function Hc(a,b,d){return C(a)?a.slice(b,d):Ha.call(a,b,d)}function Vd(a){function b(b){return b.map(function(b){var c=
|
||||||
|
1,d=Ta;if(B(b))d=b;else if(C(b)){if("+"===b.charAt(0)||"-"===b.charAt(0))c="-"===b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(d=a(b),d.constant))var e=d(),d=function(a){return a[e]}}return{get:d,descending:c}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function c(a,b){var c=0,d=a.type,h=b.type;if(d===h){var h=a.value,l=b.value;"string"===d?(h=h.toLowerCase(),l=l.toLowerCase()):"object"===d&&(D(h)&&(h=a.index),D(l)&&(l=b.index));h!==l&&(c=
|
||||||
|
h<l?-1:1)}else c="undefined"===d?1:"undefined"===h?-1:"null"===d?1:"null"===h?-1:d<h?-1:1;return c}return function(a,f,g,k){if(null==a)return a;if(!za(a))throw F("orderBy")("notarray",a);H(f)||(f=[f]);0===f.length&&(f=["+"]);var h=b(f),l=g?-1:1,m=B(k)?k:c;a=Array.prototype.map.call(a,function(a,b){return{value:a,tieBreaker:{value:b,type:"number",index:b},predicateValues:h.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="null";else if("object"===c)a:{if(B(e.valueOf)&&(e=e.valueOf(),d(e)))break a;
|
||||||
|
cc(e)&&(e=e.toString(),d(e))}return{value:e,type:c,index:b}})}});a.sort(function(a,b){for(var d=0,e=h.length;d<e;d++){var f=m(a.predicateValues[d],b.predicateValues[d]);if(f)return f*h[d].descending*l}return(m(a.tieBreaker,b.tieBreaker)||c(a.tieBreaker,b.tieBreaker))*l});return a=a.map(function(a){return a.value})}}function Ra(a){B(a)&&(a={link:a});a.restrict=a.restrict||"AC";return ia(a)}function Qb(a,b,d,c,e){this.$$controls=[];this.$error={};this.$$success={};this.$pending=void 0;this.$name=e(b.name||
|
||||||
|
b.ngForm||"")(d);this.$dirty=!1;this.$valid=this.$pristine=!0;this.$submitted=this.$invalid=!1;this.$$parentForm=mb;this.$$element=a;this.$$animate=c;ae(this)}function ae(a){a.$$classCache={};a.$$classCache[be]=!(a.$$classCache[nb]=a.$$element.hasClass(nb))}function ce(a){function b(a,b,c){c&&!a.$$classCache[b]?(a.$$animate.addClass(a.$$element,b),a.$$classCache[b]=!0):!c&&a.$$classCache[b]&&(a.$$animate.removeClass(a.$$element,b),a.$$classCache[b]=!1)}function d(a,c,d){c=c?"-"+Xc(c,"-"):"";b(a,nb+
|
||||||
|
c,!0===d);b(a,be+c,!1===d)}var c=a.set,e=a.unset;a.clazz.prototype.$setValidity=function(a,g,k){A(g)?(this.$pending||(this.$pending={}),c(this.$pending,a,k)):(this.$pending&&e(this.$pending,a,k),de(this.$pending)&&(this.$pending=void 0));Ga(g)?g?(e(this.$error,a,k),c(this.$$success,a,k)):(c(this.$error,a,k),e(this.$$success,a,k)):(e(this.$error,a,k),e(this.$$success,a,k));this.$pending?(b(this,"ng-pending",!0),this.$valid=this.$invalid=void 0,d(this,"",null)):(b(this,"ng-pending",!1),this.$valid=
|
||||||
|
de(this.$error),this.$invalid=!this.$valid,d(this,"",this.$valid));g=this.$pending&&this.$pending[a]?void 0:this.$error[a]?!1:this.$$success[a]?!0:null;d(this,a,g);this.$$parentForm.$setValidity(a,g,this)}}function de(a){if(a)for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function Ic(a){a.$formatters.push(function(b){return a.$isEmpty(b)?b:b.toString()})}function Sa(a,b,d,c,e,f){var g=K(b[0].type);if(!e.android){var k=!1;b.on("compositionstart",function(){k=!0});b.on("compositionupdate",
|
||||||
|
function(a){if(A(a.data)||""===a.data)k=!1});b.on("compositionend",function(){k=!1;l()})}var h,l=function(a){h&&(f.defer.cancel(h),h=null);if(!k){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=V(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",l);else{var m=function(a,b,c){h||(h=f.defer(function(){h=null;b&&b.value===c||l(a)}))};b.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||
|
||||||
|
m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut drop",m)}b.on("change",l);if(ee[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!h){var b=this.validity,c=b.badInput,d=b.typeMismatch;h=f.defer(function(){h=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Rb(a,b){return function(d,c){var e,f;if(ha(d))return d;if(C(d)){'"'===d.charAt(0)&&'"'===d.charAt(d.length-
|
||||||
|
1)&&(d=d.substring(1,d.length-1));if(mh.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),e=new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0),100>f.yyyy&&e.setFullYear(f.yyyy),e}return NaN}}function ob(a,b,d,c){return function(e,f,g,k,h,l,m,
|
||||||
|
p){function n(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function s(a){return w(a)&&!ha(a)?r(a)||void 0:a}function r(a,b){var c=k.$options.getOption("timezone");v&&v!==c&&(b=Uc(b,fc(v)));var e=d(a,b);!isNaN(e)&&c&&(e=gc(e,c));return e}Jc(e,f,g,k,a);Sa(e,f,g,k,h,l);var t="time"===a||"datetimelocal"===a,q,v;k.$parsers.push(function(c){if(k.$isEmpty(c))return null;if(b.test(c))return r(c,q);k.$$parserName=a});k.$formatters.push(function(a){if(a&&!ha(a))throw pb("datefmt",a);if(n(a)){q=a;var b=
|
||||||
|
k.$options.getOption("timezone");b&&(v=b,q=gc(q,b,!0));var d=c;t&&C(k.$options.getOption("timeSecondsFormat"))&&(d=c.replace("ss.sss",k.$options.getOption("timeSecondsFormat")).replace(/:$/,""));a=m("date")(a,d,b);t&&k.$options.getOption("timeStripZeroSeconds")&&(a=a.replace(/(?::00)?(?:\.000)?$/,""));return a}v=q=null;return""});if(w(g.min)||g.ngMin){var x=g.min||p(g.ngMin)(e),z=s(x);k.$validators.min=function(a){return!n(a)||A(z)||d(a)>=z};g.$observe("min",function(a){a!==x&&(z=s(a),x=a,k.$validate())})}if(w(g.max)||
|
||||||
|
g.ngMax){var y=g.max||p(g.ngMax)(e),J=s(y);k.$validators.max=function(a){return!n(a)||A(J)||d(a)<=J};g.$observe("max",function(a){a!==y&&(J=s(a),y=a,k.$validate())})}}}function Jc(a,b,d,c,e){(c.$$hasNativeValidators=D(b[0].validity))&&c.$parsers.push(function(a){var d=b.prop("validity")||{};if(d.badInput||d.typeMismatch)c.$$parserName=e;else return a})}function fe(a){a.$parsers.push(function(b){if(a.$isEmpty(b))return null;if(nh.test(b))return parseFloat(b);a.$$parserName="number"});a.$formatters.push(function(b){if(!a.$isEmpty(b)){if(!X(b))throw pb("numfmt",
|
||||||
|
b);b=b.toString()}return b})}function na(a){w(a)&&!X(a)&&(a=parseFloat(a));return Y(a)?void 0:a}function Kc(a){var b=a.toString(),d=b.indexOf(".");return-1===d?-1<a&&1>a&&(a=/e-(\d+)$/.exec(b))?Number(a[1]):0:b.length-d-1}function ge(a,b,d){a=Number(a);var c=(a|0)!==a,e=(b|0)!==b,f=(d|0)!==d;if(c||e||f){var g=c?Kc(a):0,k=e?Kc(b):0,h=f?Kc(d):0,g=Math.max(g,k,h),g=Math.pow(10,g);a*=g;b*=g;d*=g;c&&(a=Math.round(a));e&&(b=Math.round(b));f&&(d=Math.round(d))}return 0===(a-b)%d}function he(a,b,d,c,e){if(w(c)){a=
|
||||||
|
a(c);if(!a.constant)throw pb("constexpr",d,c);return a(b)}return e}function Lc(a,b){function d(a,b){if(!a||!a.length)return[];if(!b||!b.length)return a;var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e===b[m])continue a;c.push(e)}return c}function c(a){if(!a)return a;var b=a;H(a)?b=a.map(c).join(" "):D(a)?b=Object.keys(a).filter(function(b){return a[b]}).join(" "):C(a)||(b=a+"");return b}a="ngClass"+a;var e;return["$parse",function(f){return{restrict:"AC",link:function(g,
|
||||||
|
k,h){function l(a,b){var c=[];r(a,function(a){if(0<b||p[a])p[a]=(p[a]||0)+b,p[a]===+(0<b)&&c.push(a)});return c.join(" ")}function m(a){if(a===b){var c=s,c=l(c&&c.split(" "),1);h.$addClass(c)}else c=s,c=l(c&&c.split(" "),-1),h.$removeClass(c);n=a}var p=k.data("$classCounts"),n=!0,s;p||(p=T(),k.data("$classCounts",p));"ngClass"!==a&&(e||(e=f("$index",function(a){return a&1})),g.$watch(e,m));g.$watch(f(h[a],c),function(a){if(n===b){var c=s&&s.split(" "),e=a&&a.split(" "),f=d(c,e),c=d(e,c),f=l(f,-1),
|
||||||
|
c=l(c,1);h.$addClass(c);h.$removeClass(f)}s=a})}}}]}function sd(a,b,d,c,e,f){return{restrict:"A",compile:function(g,k){var h=a(k[c]);return function(a,c){c.on(e,function(c){var e=function(){h(a,{$event:c})};if(b.$$phase)if(f)a.$evalAsync(e);else try{e()}catch(g){d(g)}else a.$apply(e)})}}}}function Sb(a,b,d,c,e,f,g,k,h){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;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=void 0;this.$name=h(d.name||"",!1)(a);this.$$parentForm=mb;this.$options=Tb;this.$$updateEvents="";this.$$updateEventHandler=this.$$updateEventHandler.bind(this);this.$$parsedNgModel=e(d.ngModel);this.$$parsedNgModelAssign=this.$$parsedNgModel.assign;this.$$ngModelGet=this.$$parsedNgModel;this.$$ngModelSet=this.$$parsedNgModelAssign;this.$$pendingDebounce=
|
||||||
|
null;this.$$parserValid=void 0;this.$$parserName="parse";this.$$currentValidationRunId=0;this.$$scope=a;this.$$rootScope=a.$root;this.$$attr=d;this.$$element=c;this.$$animate=f;this.$$timeout=g;this.$$parse=e;this.$$q=k;this.$$exceptionHandler=b;ae(this);oh(this)}function oh(a){a.$$scope.$watch(function(b){b=a.$$ngModelGet(b);b===a.$modelValue||a.$modelValue!==a.$modelValue&&b!==b||a.$$setModelValue(b);return b})}function Mc(a){this.$$options=a}function ie(a,b){r(b,function(b,c){w(a[c])||(a[c]=b)})}
|
||||||
|
function Oa(a,b){a.prop("selected",b);a.attr("selected",b)}function je(a,b,d){if(a){C(a)&&(a=new RegExp("^"+a+"$"));if(!a.test)throw F("ngPattern")("noregexp",b,a,Aa(d));return a}}function Ub(a){a=fa(a);return Y(a)?-1:a}var Xb={objectMaxDepth:5,urlErrorParamsEnabled:!0},ke=/^\/(.+)\/([a-z]*)$/,ta=Object.prototype.hasOwnProperty,K=function(a){return C(a)?a.toLowerCase():a},vb=function(a){return C(a)?a.toUpperCase():a},wa,x,sb,Ha=[].slice,Kg=[].splice,ph=[].push,la=Object.prototype.toString,Rc=Object.getPrototypeOf,
|
||||||
|
oa=F("ng"),ca=z.angular||(z.angular={}),lc,qb=0;wa=z.document.documentMode;var Y=Number.isNaN||function(a){return a!==a};E.$inject=[];Ta.$inject=[];var ze=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,V=function(a){return C(a)?a.trim():a},Od=function(a){return a.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},Ba=function(){if(!w(Ba.rules)){var a=z.document.querySelector("[ng-csp]")||z.document.querySelector("[data-ng-csp]");if(a){var b=
|
||||||
|
a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ba.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ba;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ba.rules},rb=function(){if(w(rb.name_))return rb.name_;var a,b,d=Qa.length,c,e;for(b=0;b<d;++b)if(c=Qa[b],a=z.document.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+"jq");break}return rb.name_=e},Be=/:/g,Qa=["ng-",
|
||||||
|
"data-ng-","ng:","x-ng-"],Fe=function(a){var b=a.currentScript;if(!b)return!0;if(!(b instanceof z.HTMLScriptElement||b instanceof z.SVGScriptElement))return!1;b=b.attributes;return[b.getNamedItem("src"),b.getNamedItem("href"),b.getNamedItem("xlink:href")].every(function(b){if(!b)return!0;if(!b.value)return!1;var c=a.createElement("a");c.href=b.value;if(a.location.origin===c.origin)return!0;switch(c.protocol){case "http:":case "https:":case "ftp:":case "blob:":case "file:":case "data:":return!0;default:return!1}})}(z.document),
|
||||||
|
Ie=/[A-Z]/g,Yc=!1,Pa=3,Pe={full:"1.8.0",major:1,minor:8,dot:0,codeName:"nested-vaccination"};U.expando="ng339";var Ka=U.cache={},ug=1;U._data=function(a){return this.cache[a[this.expando]]||{}};var qg=/-([a-z])/g,qh=/^-ms-/,Bb={mouseleave:"mouseout",mouseenter:"mouseover"},oc=F("jqLite"),tg=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,nc=/<|&#?\w+;/,rg=/<([\w:-]+)/,sg=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,qa={thead:["table"],col:["colgroup","table"],tr:["tbody","table"],td:["tr",
|
||||||
|
"tbody","table"]};qa.tbody=qa.tfoot=qa.colgroup=qa.caption=qa.thead;qa.th=qa.td;var hb={option:[1,'<select multiple="multiple">',"</select>"],_default:[0,"",""]},Nc;for(Nc in qa){var le=qa[Nc],me=le.slice().reverse();hb[Nc]=[me.length,"<"+me.join("><")+">","</"+le.join("></")+">"]}hb.optgroup=hb.option;var zg=z.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Wa=U.prototype={ready:hd,toString:function(){var a=[];r(this,function(b){a.push(""+b)});return"["+a.join(", ")+
|
||||||
|
"]"},eq:function(a){return 0<=a?x(this[a]):x(this[this.length+a])},length:0,push:ph,sort:[].sort,splice:[].splice},Hb={};r("multiple selected checked disabled readOnly required open".split(" "),function(a){Hb[K(a)]=a});var od={};r("input select option textarea button form details".split(" "),function(a){od[a]=!0});var vd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern",ngStep:"step"};r({data:sc,removeData:rc,hasData:function(a){for(var b in Ka[a.ng339])return!0;
|
||||||
|
return!1},cleanData:function(a){for(var b=0,d=a.length;b<d;b++)rc(a[b]),kd(a[b])}},function(a,b){U[b]=a});r({data:sc,inheritedData:Fb,scope:function(a){return x.data(a,"$scope")||Fb(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return x.data(a,"$isolateScope")||x.data(a,"$isolateScopeNoTemplate")},controller:ld,injector:function(a){return Fb(a,"$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:Cb,css:function(a,b,d){b=yb(b.replace(qh,"ms-"));if(w(d))a.style[b]=
|
||||||
|
d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Pa&&2!==c&&8!==c&&a.getAttribute){var c=K(b),e=Hb[c];if(w(d))null===d||!1===d&&e?a.removeAttribute(b):a.setAttribute(b,e?c:d);else return a=a.getAttribute(b),e&&null!==a&&(a=c),null===a?void 0:a}},prop:function(a,b,d){if(w(d))a[b]=d;else return a[b]},text:function(){function a(a,d){if(A(d)){var c=a.nodeType;return 1===c||c===Pa?a.textContent:""}a.textContent=d}a.$dv="";return a}(),val:function(a,b){if(A(b)){if(a.multiple&&"select"===
|
||||||
|
ua(a)){var d=[];r(a.options,function(a){a.selected&&d.push(a.value||a.text)});return d}return a.value}a.value=b},html:function(a,b){if(A(b))return a.innerHTML;zb(a,!0);a.innerHTML=b},empty:md},function(a,b){U.prototype[b]=function(b,c){var e,f,g=this.length;if(a!==md&&A(2===a.length&&a!==Cb&&a!==ld?b:c)){if(D(b)){for(e=0;e<g;e++)if(a===sc)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}e=a.$dv;g=A(e)?Math.min(g,1):g;for(f=0;f<g;f++){var k=a(this[f],b,c);e=e?e+k:k}return e}for(e=0;e<g;e++)a(this[e],
|
||||||
|
b,c);return this}});r({removeData:rc,on:function(a,b,d,c){if(w(c))throw oc("onargs");if(mc(a)){c=Ab(a,!0);var e=c.events,f=c.handle;f||(f=c.handle=wg(a,e));c=0<=b.indexOf(" ")?b.split(" "):[b];for(var g=c.length,k=function(b,c,g){var k=e[b];k||(k=e[b]=[],k.specialHandlerWrapper=c,"$destroy"===b||g||a.addEventListener(b,f));k.push(d)};g--;)b=c[g],Bb[b]?(k(Bb[b],yg),k(b,void 0,!0)):k(b)}},off:kd,one:function(a,b,d){a=x(a);a.on(b,function e(){a.off(b,d);a.off(b,e)});a.on(b,d)},replaceWith:function(a,
|
||||||
|
b){var d,c=a.parentNode;zb(a);r(new U(b),function(b){d?c.insertBefore(b,d.nextSibling):c.replaceChild(b,a);d=b})},children:function(a){var b=[];r(a.childNodes,function(a){1===a.nodeType&&b.push(a)});return b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,b){var d=a.nodeType;if(1===d||11===d){b=new U(b);for(var d=0,c=b.length;d<c;d++)a.appendChild(b[d])}},prepend:function(a,b){if(1===a.nodeType){var d=a.firstChild;r(new U(b),function(b){a.insertBefore(b,d)})}},
|
||||||
|
wrap:function(a,b){var d=x(b).eq(0).clone()[0],c=a.parentNode;c&&c.replaceChild(d,a);d.appendChild(a)},remove:Gb,detach:function(a){Gb(a,!0)},after:function(a,b){var d=a,c=a.parentNode;if(c){b=new U(b);for(var e=0,f=b.length;e<f;e++){var g=b[e];c.insertBefore(g,d.nextSibling);d=g}}},addClass:Eb,removeClass:Db,toggleClass:function(a,b,d){b&&r(b.split(" "),function(b){var e=d;A(e)&&(e=!Cb(a,b));(e?Eb:Db)(a,b)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},
|
||||||
|
find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:qc,triggerHandler:function(a,b,d){var c,e,f=b.type||b,g=Ab(a);if(g=(g=g&&g.events)&&g[f])c={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:E,type:f,target:a},b.type&&(c=S(c,
|
||||||
|
b)),b=ja(g),e=d?[c].concat(d):[c],r(b,function(b){c.isImmediatePropagationStopped()||b.apply(a,e)})}},function(a,b){U.prototype[b]=function(b,c,e){for(var f,g=0,k=this.length;g<k;g++)A(f)?(f=a(this[g],b,c,e),w(f)&&(f=x(f))):pc(f,a(this[g],b,c,e));return w(f)?f:this}});U.prototype.bind=U.prototype.on;U.prototype.unbind=U.prototype.off;var rh=Object.create(null);pd.prototype={_idx:function(a){a!==this._lastKey&&(this._lastKey=a,this._lastIndex=this._keys.indexOf(a));return this._lastIndex},_transformKey:function(a){return Y(a)?
|
||||||
|
rh:a},get:function(a){a=this._transformKey(a);a=this._idx(a);if(-1!==a)return this._values[a]},has:function(a){a=this._transformKey(a);return-1!==this._idx(a)},set:function(a,b){a=this._transformKey(a);var d=this._idx(a);-1===d&&(d=this._lastIndex=this._keys.length);this._keys[d]=a;this._values[d]=b},delete:function(a){a=this._transformKey(a);a=this._idx(a);if(-1===a)return!1;this._keys.splice(a,1);this._values.splice(a,1);this._lastKey=NaN;this._lastIndex=-1;return!0}};var Ib=pd,og=[function(){this.$get=
|
||||||
|
[function(){return Ib}]}],Bg=/^([^(]+?)=>/,Cg=/^[^(]*\(\s*([^)]*)\)/m,sh=/,/,th=/^\s*(_?)(\S+?)\1\s*$/,Ag=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ca=F("$injector");fb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw C(d)&&d||(d=a.name||Dg(a)),Ca("strictdi",d);b=qd(a);r(b[1].split(sh),function(a){a.replace(th,function(a,b,d){c.push(d)})})}a.$inject=c}}else H(a)?(b=a.length-1,tb(a[b],"fn"),c=a.slice(0,b)):tb(a,"fn",!0);return c};var ne=F("$animate"),
|
||||||
|
Ef=function(){this.$get=E},Ff=function(){var a=new Ib,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=C(b)?b.split(" "):H(b)?b:[],r(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){r(b,function(b){var c=a.get(b);if(c){var d=Eg(b.attr("class")),e="",f="";r(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});r(b,function(a){e&&Eb(a,e);f&&Db(a,f)});a.delete(b)}});b.length=0}return{enabled:E,on:E,off:E,pin:E,push:function(g,
|
||||||
|
k,h,l){l&&l();h=h||{};h.from&&g.css(h.from);h.to&&g.css(h.to);if(h.addClass||h.removeClass)if(k=h.addClass,l=h.removeClass,h=a.get(g)||{},k=e(h,k,!0),l=e(h,l,!1),k||l)a.set(g,h),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Cf=["$provide",function(a){var b=this,d=null,c=null;this.$$registeredAnimations=Object.create(null);this.register=function(c,d){if(c&&"."!==c.charAt(0))throw ne("notcsel",c);var g=c+"-animation";b.$$registeredAnimations[c.substr(1)]=g;a.factory(g,
|
||||||
|
d)};this.customFilter=function(a){1===arguments.length&&(c=B(a)?a:null);return c};this.classNameFilter=function(a){if(1===arguments.length&&(d=a instanceof RegExp?a:null)&&/[(\s|\/)]ng-animate[(\s|\/)]/.test(d.toString()))throw d=null,ne("nongcls","ng-animate");return d};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var e;a:{for(e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){e=f;break a}}e=void 0}!e||e.parentNode||e.previousElementSibling||(d=null)}d?d.after(a):c.prepend(a)}return{on:a.on,
|
||||||
|
off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.cancel&&a.cancel()},enter:function(c,d,h,l){d=d&&x(d);h=h&&x(h);d=d||h.parent();b(c,d,h);return a.push(c,"enter",ra(l))},move:function(c,d,h,l){d=d&&x(d);h=h&&x(h);d=d||h.parent();b(c,d,h);return a.push(c,"move",ra(l))},leave:function(b,c){return a.push(b,"leave",ra(c),function(){b.remove()})},addClass:function(b,c,d){d=ra(d);d.addClass=ib(d.addclass,c);return a.push(b,"addClass",d)},removeClass:function(b,c,d){d=ra(d);d.removeClass=ib(d.removeClass,
|
||||||
|
c);return a.push(b,"removeClass",d)},setClass:function(b,c,d,f){f=ra(f);f.addClass=ib(f.addClass,c);f.removeClass=ib(f.removeClass,d);return a.push(b,"setClass",f)},animate:function(b,c,d,f,m){m=ra(m);m.from=m.from?S(m.from,c):c;m.to=m.to?S(m.to,d):d;m.tempClasses=ib(m.tempClasses,f||"ng-inline-animate");return a.push(b,"animate",m)}}}]}],Hf=function(){this.$get=["$$rAF",function(a){function b(b){d.push(b);1<d.length||a(function(){for(var a=0;a<d.length;a++)d[a]();d=[]})}var d=[];return function(){var a=
|
||||||
|
!1;b(function(){a=!0});return function(d){a?d():b(d)}}}]},Gf=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$$isDocumentHidden","$timeout",function(a,b,d,c,e){function f(a){this.setHost(a);var b=d();this._doneCallbacks=[];this._tick=function(a){c()?e(a,0,!1):b(a)};this._state=0}f.chain=function(a,b){function c(){if(d===a.length)b(!0);else a[d](function(a){!1===a?b(!1):(d++,c())})}var d=0;c()};f.all=function(a,b){function c(f){e=e&&f;++d===a.length&&b(e)}var d=0,e=!0;r(a,function(a){a.done(c)})};
|
||||||
|
f.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:E,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},"finally":function(a){return this.getPromise()["finally"](a)},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(a){var b=this;0===b._state&&(b._state=1,b._tick(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(r(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=0,this._state=2)}};return f}]},Df=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(a,b,d){return function(b,e){function f(){a(function(){g.addClass&&
|
||||||
|
(b.addClass(g.addClass),g.addClass=null);g.removeClass&&(b.removeClass(g.removeClass),g.removeClass=null);g.to&&(b.css(g.to),g.to=null);k||h.complete();k=!0});return h}var g=e||{};g.$$prepared||(g=Ia(g));g.cleanupStyles&&(g.from=g.to=null);g.from&&(b.css(g.from),g.from=null);var k,h=new d;return{start:f,end:f}}}]},$=F("$compile"),uc=new function(){};Zc.$inject=["$provide","$$sanitizeUriProvider"];Kb.prototype.isFirstChange=function(){return this.previousValue===uc};var rd=/^((?:x|data)[:\-_])/i,Jg=
|
||||||
|
/[:\-_]+(.)/g,xd=F("$controller"),wd=/^(\S+)(\s+as\s+([\w$]+))?$/,Of=function(){this.$get=["$document",function(a){return function(b){b?!b.nodeType&&b instanceof x&&(b=b[0]):b=a[0].body;return b.offsetWidth+1}}]},yd="application/json",xc={"Content-Type":yd+";charset=utf-8"},Mg=/^\[|^\{(?!\{)/,Ng={"[":/]$/,"{":/}$/},Lg=/^\)]\}',?\n/,Lb=F("$http"),Ma=ca.$interpolateMinErr=F("$interpolate");Ma.throwNoconcat=function(a){throw Ma("noconcat",a);};Ma.interr=function(a,b){return Ma("interr",a,b.toString())};
|
||||||
|
var Qg=F("$interval"),Xf=function(){this.$get=function(){function a(a){var b=function(a){b.data=a;b.called=!0};b.id=a;return b}var b=ca.callbacks,d={};return{createCallback:function(c){c="_"+(b.$$counter++).toString(36);var e="angular.callbacks."+c,f=a(c);d[e]=b[c]=f;return e},wasCalled:function(a){return d[a].called},getResponse:function(a){return d[a].data},removeCallback:function(a){delete b[d[a].id];delete d[a]}}}},uh=/^([^?#]*)(\?([^#]*))?(#(.*))?$/,Rg={http:80,https:443,ftp:21},kb=F("$location"),
|
||||||
|
Sg=/^\s*[\\/]{2,}/,vh={$$absUrl:"",$$html5:!1,$$replace:!1,$$compose:function(){for(var a=this.$$path,b=this.$$hash,d=Ce(this.$$search),b=b?"#"+ic(b):"",a=a.split("/"),c=a.length;c--;)a[c]=ic(a[c].replace(/%2F/g,"/"));this.$$url=a.join("/")+(d?"?"+d:"")+b;this.$$absUrl=this.$$normalizeUrl(this.$$url);this.$$urlUpdatedByLocation=!0},absUrl:Mb("$$absUrl"),url:function(a){if(A(a))return this.$$url;var b=uh.exec(a);(b[1]||""===a)&&this.path(decodeURIComponent(b[1]));(b[2]||b[1]||""===a)&&this.search(b[3]||
|
||||||
|
"");this.hash(b[5]||"");return this},protocol:Mb("$$protocol"),host:Mb("$$host"),port:Mb("$$port"),path:Fd("$$path",function(a){a=null!==a?a.toString():"";return"/"===a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(C(a)||X(a))a=a.toString(),this.$$search=hc(a);else if(D(a))a=Ia(a,{}),r(a,function(b,c){null==b&&delete a[c]}),this.$$search=a;else throw kb("isrcharg");break;default:A(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}this.$$compose();
|
||||||
|
return this},hash:Fd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};r([Ed,Ac,zc],function(a){a.prototype=Object.create(vh);a.prototype.state=function(b){if(!arguments.length)return this.$$state;if(a!==zc||!this.$$html5)throw kb("nostate");this.$$state=A(b)?null:b;this.$$urlUpdatedByLocation=!0;return this}});var Ya=F("$parse"),Wg={}.constructor.prototype.valueOf,Vb=T();r("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(a){Vb[a]=
|
||||||
|
!0});var wh={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Ob=function(a){this.options=a};Ob.prototype={constructor:Ob,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,
|
||||||
|
text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var b=a+this.peek(),d=b+this.peek(2),c=Vb[b],e=Vb[d];Vb[a]||c||e?(a=e?d:c?b:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,b){return-1!==b.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===
|
||||||
|
typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},
|
||||||
|
isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=
|
||||||
|
w(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw Ya("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var d=K(this.text.charAt(this.index));if("."===d||this.isNumber(d))a+=d;else{var c=this.peek();if("e"===d&&this.isExpOperator(c))a+=d;else if(this.isExpOperator(d)&&c&&this.isNumber(c)&&"e"===a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||c&&this.isNumber(c)||"e"!==a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:b,
|
||||||
|
text:a,constant:!0,value:Number(a)})},readIdent:function(){var a=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var b=this.peekMultichar();if(!this.isIdentifierContinue(b))break;this.index+=b.length}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var b=this.index;this.index++;for(var d="",c=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),c=c+f;if(e)"u"===f?(e=this.text.substring(this.index+
|
||||||
|
1,this.index+5),e.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+e+"]"),this.index+=4,d+=String.fromCharCode(parseInt(e,16))):d+=wh[f]||f,e=!1;else if("\\"===f)e=!0;else{if(f===a){this.index++;this.tokens.push({index:b,text:c,constant:!0,value:d});return}d+=f}this.index++}this.throwError("Unterminated quote",b)}};var q=function(a,b){this.lexer=a;this.options=b};q.Program="Program";q.ExpressionStatement="ExpressionStatement";q.AssignmentExpression="AssignmentExpression";q.ConditionalExpression=
|
||||||
|
"ConditionalExpression";q.LogicalExpression="LogicalExpression";q.BinaryExpression="BinaryExpression";q.UnaryExpression="UnaryExpression";q.CallExpression="CallExpression";q.MemberExpression="MemberExpression";q.Identifier="Identifier";q.Literal="Literal";q.ArrayExpression="ArrayExpression";q.Property="Property";q.ObjectExpression="ObjectExpression";q.ThisExpression="ThisExpression";q.LocalsExpression="LocalsExpression";q.NGValueParameter="NGValueParameter";q.prototype={ast:function(a){this.text=
|
||||||
|
a;this.tokens=this.lexer.lex(a);a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:q.Program,body:a}},expressionStatement:function(){return{type:q.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},
|
||||||
|
expression:function(){return this.assignment()},assignment:function(){var a=this.ternary();if(this.expect("=")){if(!Jd(a))throw Ya("lval");a={type:q.AssignmentExpression,left:a,right:this.assignment(),operator:"="}}return a},ternary:function(){var a=this.logicalOR(),b,d;return this.expect("?")&&(b=this.expression(),this.consume(":"))?(d=this.expression(),{type:q.ConditionalExpression,test:a,alternate:b,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:q.LogicalExpression,
|
||||||
|
operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=this.equality();this.expect("&&");)a={type:q.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),b;b=this.expect("==","!=","===","!==");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),b;b=this.expect("<",">","<=",">=");)a={type:q.BinaryExpression,operator:b.text,
|
||||||
|
left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.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.selfReferential.hasOwnProperty(this.peek().text)?a=Ia(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:q.Literal,value:this.options.literals[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 b;b=this.expect("(","[",".");)"("===b.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:q.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());
|
||||||
|
return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.filterChain());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.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:q.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:q.Property,kind:"init"};this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()):this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"),
|
||||||
|
b.value=this.expression()):this.throwError("invalid key",this.peek());a.push(b)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}},throwError:function(a,b){throw Ya("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw Ya("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw Ya("ueoe",
|
||||||
|
this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:q.ThisExpression},$locals:{type:q.LocalsExpression}}};var Hd=2;Ld.prototype={compile:function(a){var b=this;this.state={nextId:0,filters:{},fn:{vars:[],
|
||||||
|
body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};Z(a,b.$filter);var d="",c;this.stage="assign";if(c=Kd(a))this.state.computing="assign",d=this.nextId(),this.recurse(c,d),this.return_(d),d="fn.assign="+this.generateFunction("assign","s,v,l");c=Id(a.body);b.stage="inputs";r(c,function(a,c){var d="fn"+c;b.state[d]={vars:[],body:[],own:{}};b.state.computing=d;var k=b.nextId();b.recurse(a,k);b.return_(k);b.state.inputs.push({name:d,isPure:a.isPure});a.watchId=c});this.state.computing="fn";this.stage=
|
||||||
|
"main";this.recurse(a);a='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+d+this.watchFns()+"return fn;";a=(new Function("$filter","getStringValue","ifDefined","plus",a))(this.$filter,Tg,Ug,Gd);this.state=this.stage=void 0;return a},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;r(b,function(b){a.push("var "+b.name+"="+d.generateFunction(b.name,"s"));b.isPure&&a.push(b.name,".isPure="+JSON.stringify(b.isPure)+
|
||||||
|
";")});b.length&&a.push("fn.inputs=["+b.map(function(a){return a.name}).join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;r(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});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,b,d,c,e,f){var g,k,h=this,l,m,p;c=c||E;if(!f&&w(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case q.Program:r(a.body,function(b,c){h.recurse(b.expression,void 0,void 0,function(a){k=a});c!==a.body.length-1?h.current().body.push(k,";"):h.return_(k)});break;case q.Literal:m=this.escape(a.value);this.assign(b,m);c(b||m);break;case q.UnaryExpression:this.recurse(a.argument,void 0,
|
||||||
|
void 0,function(a){k=a});m=a.operator+"("+this.ifDefined(k,0)+")";this.assign(b,m);c(m);break;case q.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){k=a});m="+"===a.operator?this.plus(g,k):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(k,0):"("+g+")"+a.operator+"("+k+")";this.assign(b,m);c(m);break;case q.LogicalExpression:b=b||this.nextId();h.recurse(a.left,b);h.if_("&&"===a.operator?b:h.not(b),h.lazyRecurse(a.right,
|
||||||
|
b));c(b);break;case q.ConditionalExpression:b=b||this.nextId();h.recurse(a.test,b);h.if_(b,h.lazyRecurse(a.alternate,b),h.lazyRecurse(a.consequent,b));c(b);break;case q.Identifier:b=b||this.nextId();d&&(d.context="inputs"===h.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);h.if_("inputs"===h.stage||h.not(h.getHasOwnProperty("l",a.name)),function(){h.if_("inputs"===h.stage||"s",function(){e&&1!==e&&h.if_(h.isNull(h.nonComputedMember("s",a.name)),
|
||||||
|
h.lazyAssign(h.nonComputedMember("s",a.name),"{}"));h.assign(b,h.nonComputedMember("s",a.name))})},b&&h.lazyAssign(b,h.nonComputedMember("l",a.name)));c(b);break;case q.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();h.recurse(a.object,g,void 0,function(){h.if_(h.notNull(g),function(){a.computed?(k=h.nextId(),h.recurse(a.property,k),h.getStringValue(k),e&&1!==e&&h.if_(h.not(h.computedMember(g,k)),h.lazyAssign(h.computedMember(g,k),"{}")),m=h.computedMember(g,k),h.assign(b,
|
||||||
|
m),d&&(d.computed=!0,d.name=k)):(e&&1!==e&&h.if_(h.isNull(h.nonComputedMember(g,a.property.name)),h.lazyAssign(h.nonComputedMember(g,a.property.name),"{}")),m=h.nonComputedMember(g,a.property.name),h.assign(b,m),d&&(d.computed=!1,d.name=a.property.name))},function(){h.assign(b,"undefined")});c(b)},!!e);break;case q.CallExpression:b=b||this.nextId();a.filter?(k=h.filter(a.callee.name),l=[],r(a.arguments,function(a){var b=h.nextId();h.recurse(a,b);l.push(b)}),m=k+"("+l.join(",")+")",h.assign(b,m),c(b)):
|
||||||
|
(k=h.nextId(),g={},l=[],h.recurse(a.callee,k,g,function(){h.if_(h.notNull(k),function(){r(a.arguments,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})});m=g.name?h.member(g.context,g.name,g.computed)+"("+l.join(",")+")":k+"("+l.join(",")+")";h.assign(b,m)},function(){h.assign(b,"undefined")});c(b)}));break;case q.AssignmentExpression:k=this.nextId();g={};this.recurse(a.left,void 0,g,function(){h.if_(h.notNull(g.context),function(){h.recurse(a.right,k);m=h.member(g.context,
|
||||||
|
g.name,g.computed)+a.operator+k;h.assign(b,m);c(b||m)})},1);break;case q.ArrayExpression:l=[];r(a.elements,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(b||m);break;case q.ObjectExpression:l=[];p=!1;r(a.properties,function(a){a.computed&&(p=!0)});p?(b=b||this.nextId(),this.assign(b,"{}"),r(a.properties,function(a){a.computed?(g=h.nextId(),h.recurse(a.key,g)):g=a.key.type===q.Identifier?a.key.name:""+a.key.value;k=h.nextId();
|
||||||
|
h.recurse(a.value,k);h.assign(h.member(b,g,a.computed),k)})):(r(a.properties,function(b){h.recurse(b.value,a.constant?void 0:h.nextId(),void 0,function(a){l.push(h.escape(b.key.type===q.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b,m));c(b||m);break;case q.ThisExpression:this.assign(b,"s");c(b||"s");break;case q.LocalsExpression:this.assign(b,"l");c(b||"l");break;case q.NGValueParameter:this.assign(b,"v"),c(b||"v")}},getHasOwnProperty:function(a,b){var d=a+"."+
|
||||||
|
b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,
|
||||||
|
b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},isNull:function(a){return a+"==null"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,
|
||||||
|
b)},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(C(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 Ya("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};Md.prototype={compile:function(a){var b=this;Z(a,b.$filter);var d,c;if(d=Kd(a))c=this.recurse(d);d=Id(a.body);var e;d&&(e=[],r(d,function(a,c){var d=b.recurse(a);d.isPure=a.isPure;a.input=d;e.push(d);a.watchId=c}));var f=[];r(a.body,
|
||||||
|
function(a){f.push(b.recurse(a.expression))});a=0===a.body.length?E:1===a.body.length?f[0]:function(a,b){var c;r(f,function(d){c=d(a,b)});return c};c&&(a.assign=function(a,b,d){return c(a,d,b)});e&&(a.inputs=e);return a},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,b);case q.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case q.BinaryExpression:return c=this.recurse(a.left),
|
||||||
|
e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case q.Identifier:return f.identifier(a.name,b,d);case q.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,
|
||||||
|
e,b,d):this.nonComputedMember(c,e,b,d);case q.CallExpression:return g=[],r(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var p=[],n=0;n<g.length;++n)p.push(g[n](a,c,d,f));a=e.apply(void 0,p,f);return b?{context:void 0,name:void 0,value:a}:a}:function(a,c,d,f){var p=e(a,c,d,f),n;if(null!=p.value){n=[];for(var s=0;s<g.length;++s)n.push(g[s](a,c,d,f));n=p.value.apply(p.context,n)}return b?
|
||||||
|
{value:n}:n};case q.AssignmentExpression:return c=this.recurse(a.left,!0,1),e=this.recurse(a.right),function(a,d,f,g){var p=c(a,d,f,g);a=e(a,d,f,g);p.context[p.name]=a;return b?{value:a}:a};case q.ArrayExpression:return g=[],r(a.elements,function(a){g.push(f.recurse(a))}),function(a,c,d,e){for(var f=[],n=0;n<g.length;++n)f.push(g[n](a,c,d,e));return b?{value:f}:f};case q.ObjectExpression:return g=[],r(a.properties,function(a){a.computed?g.push({key:f.recurse(a.key),computed:!0,value:f.recurse(a.value)}):
|
||||||
|
g.push({key:a.key.type===q.Identifier?a.key.name:""+a.key.value,computed:!1,value:f.recurse(a.value)})}),function(a,c,d,e){for(var f={},n=0;n<g.length;++n)g[n].computed?f[g[n].key(a,c,d,e)]=g[n].value(a,c,d,e):f[g[n].key]=g[n].value(a,c,d,e);return b?{value:f}:f};case q.ThisExpression:return function(a){return b?{value:a}:a};case q.LocalsExpression:return function(a,c){return b?{value:c}:c};case q.NGValueParameter:return function(a,c,d){return b?{value:d}:d}}},"unary+":function(a,b){return function(d,
|
||||||
|
c,e,f){d=a(d,c,e,f);d=w(d)?+d:0;return b?{value:d}:d}},"unary-":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=w(d)?-d:-0;return b?{value:d}:d}},"unary!":function(a,b){return function(d,c,e,f){d=!a(d,c,e,f);return b?{value:d}:d}},"binary+":function(a,b,d){return function(c,e,f,g){var k=a(c,e,f,g);c=b(c,e,f,g);k=Gd(k,c);return d?{value:k}:k}},"binary-":function(a,b,d){return function(c,e,f,g){var k=a(c,e,f,g);c=b(c,e,f,g);k=(w(k)?k:0)-(w(c)?c:0);return d?{value:k}:k}},"binary*":function(a,b,
|
||||||
|
d){return function(c,e,f,g){c=a(c,e,f,g)*b(c,e,f,g);return d?{value:c}:c}},"binary/":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)/b(c,e,f,g);return d?{value:c}:c}},"binary%":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)%b(c,e,f,g);return d?{value:c}:c}},"binary===":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)===b(c,e,f,g);return d?{value:c}:c}},"binary!==":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!==b(c,e,f,g);return d?{value:c}:c}},"binary==":function(a,b,d){return function(c,
|
||||||
|
e,f,g){c=a(c,e,f,g)==b(c,e,f,g);return d?{value:c}:c}},"binary!=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!=b(c,e,f,g);return d?{value:c}:c}},"binary<":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<b(c,e,f,g);return d?{value:c}:c}},"binary>":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=
|
||||||
|
a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,k){e=a(e,f,g,k)?b(e,f,g,k):d(e,f,g,k);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a,b,d){return function(c,e,f,g){c=
|
||||||
|
e&&a in e?e:c;d&&1!==d&&c&&null==c[a]&&(c[a]={});e=c?c[a]:void 0;return b?{context:c,name:a,value:e}:e}},computedMember:function(a,b,d,c){return function(e,f,g,k){var h=a(e,f,g,k),l,m;null!=h&&(l=b(e,f,g,k),l+="",c&&1!==c&&h&&!h[l]&&(h[l]={}),m=h[l]);return d?{context:h,name:l,value:m}:m}},nonComputedMember:function(a,b,d,c){return function(e,f,g,k){e=a(e,f,g,k);c&&1!==c&&e&&null==e[b]&&(e[b]={});f=null!=e?e[b]:void 0;return d?{context:e,name:b,value:f}:f}},inputs:function(a,b){return function(d,
|
||||||
|
c,e,f){return f?f[b]:a(d,c,e)}}};Nb.prototype={constructor:Nb,parse:function(a){a=this.getAst(a);var b=this.astCompiler.compile(a.ast),d=a.ast;b.literal=0===d.body.length||1===d.body.length&&(d.body[0].expression.type===q.Literal||d.body[0].expression.type===q.ArrayExpression||d.body[0].expression.type===q.ObjectExpression);b.constant=a.ast.constant;b.oneTime=a.oneTime;return b},getAst:function(a){var b=!1;a=a.trim();":"===a.charAt(0)&&":"===a.charAt(1)&&(b=!0,a=a.substring(2));return{ast:this.ast.ast(a),
|
||||||
|
oneTime:b}}};var Ea=F("$sce"),W={HTML:"html",CSS:"css",MEDIA_URL:"mediaUrl",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Dc=/_([a-z])/g,Zg=F("$templateRequest"),$g=F("$timeout"),aa=z.document.createElement("a"),Qd=ga(z.location.href),Na;aa.href="http://[::1]";var ah="[::1]"===aa.hostname;Rd.$inject=["$document"];fd.$inject=["$provide"];var Yd=22,Xd=".",Fc="0";Sd.$inject=["$locale"];Ud.$inject=["$locale"];var lh={yyyy:ea("FullYear",4,0,!1,!0),yy:ea("FullYear",2,0,!0,!0),y:ea("FullYear",1,0,!1,!0),
|
||||||
|
MMMM:lb("Month"),MMM:lb("Month",!0),MM:ea("Month",2,1),M:ea("Month",1,1),LLLL:lb("Month",!1,!0),dd:ea("Date",2),d:ea("Date",1),HH:ea("Hours",2),H:ea("Hours",1),hh:ea("Hours",2,-12),h:ea("Hours",1,-12),mm:ea("Minutes",2),m:ea("Minutes",1),ss:ea("Seconds",2),s:ea("Seconds",1),sss:ea("Milliseconds",3),EEEE:lb("Day"),EEE:lb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Pb(Math[0<a?"floor":"ceil"](a/60),2)+Pb(Math.abs(a%60),2))},
|
||||||
|
ww:$d(2),w:$d(1),G:Gc,GG:Gc,GGG:Gc,GGGG:function(a,b){return 0>=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},kh=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,jh=/^-?\d+$/;Td.$inject=["$locale"];var eh=ia(K),fh=ia(vb);Vd.$inject=["$parse"];var Re=ia({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===la.call(b.prop("href"))?"xlink:href":"href";
|
||||||
|
b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),wb={};r(Hb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!==a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});wb[c]=function(){return{restrict:"A",priority:100,link:e}}}});r(vd,function(a,b){wb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"===e.ngPattern.charAt(0)&&(c=e.ngPattern.match(ke))){e.$set("ngPattern",new RegExp(c[1],
|
||||||
|
c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});r(["src","srcset","href"],function(a){var b=xa("ng-"+a);wb[b]=["$sce",function(d){return{priority:99,link:function(c,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===la.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$set(b,d.getTrustedMediaUrl(f[b]));f.$observe(b,function(b){b?(f.$set(k,b),wa&&g&&e.prop(g,f[k])):"href"===a&&f.$set(k,null)})}}}]});var mb={$addControl:E,$getControls:ia([]),$$renameControl:function(a,
|
||||||
|
b){a.$name=b},$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E,$setSubmitted:E,$$setSubmitted:E};Qb.$inject=["$element","$attrs","$scope","$animate","$interpolate"];Qb.prototype={$rollbackViewValue:function(){r(this.$$controls,function(a){a.$rollbackViewValue()})},$commitViewValue:function(){r(this.$$controls,function(a){a.$commitViewValue()})},$addControl:function(a){Ja(a.$name,"input");this.$$controls.push(a);a.$name&&(this[a.$name]=a);a.$$parentForm=this},$getControls:function(){return ja(this.$$controls)},
|
||||||
|
$$renameControl:function(a,b){var d=a.$name;this[d]===a&&delete this[d];this[b]=a;a.$name=b},$removeControl:function(a){a.$name&&this[a.$name]===a&&delete this[a.$name];r(this.$pending,function(b,d){this.$setValidity(d,null,a)},this);r(this.$error,function(b,d){this.$setValidity(d,null,a)},this);r(this.$$success,function(b,d){this.$setValidity(d,null,a)},this);cb(this.$$controls,a);a.$$parentForm=mb},$setDirty:function(){this.$$animate.removeClass(this.$$element,Za);this.$$animate.addClass(this.$$element,
|
||||||
|
Wb);this.$dirty=!0;this.$pristine=!1;this.$$parentForm.$setDirty()},$setPristine:function(){this.$$animate.setClass(this.$$element,Za,Wb+" ng-submitted");this.$dirty=!1;this.$pristine=!0;this.$submitted=!1;r(this.$$controls,function(a){a.$setPristine()})},$setUntouched:function(){r(this.$$controls,function(a){a.$setUntouched()})},$setSubmitted:function(){for(var a=this;a.$$parentForm&&a.$$parentForm!==mb;)a=a.$$parentForm;a.$$setSubmitted()},$$setSubmitted:function(){this.$$animate.addClass(this.$$element,
|
||||||
|
"ng-submitted");this.$submitted=!0;r(this.$$controls,function(a){a.$$setSubmitted&&a.$$setSubmitted()})}};ce({clazz:Qb,set:function(a,b,d){var c=a[b];c?-1===c.indexOf(d)&&c.push(d):a[b]=[d]},unset:function(a,b,d){var c=a[b];c&&(cb(c,d),0===c.length&&delete a[b])}});var oe=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||E}return{name:"form",restrict:a?"EAC":"E",require:["form","^^?form"],controller:Qb,compile:function(d,f){d.addClass(Za).addClass(nb);
|
||||||
|
var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var p=f[0];if(!("action"in e)){var n=function(b){a.$apply(function(){p.$commitViewValue();p.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",n);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",n)},0,!1)})}(f[1]||p.$$parentForm).$addControl(p);var s=g?c(p.$name):E;g&&(s(a,p),e.$observe(g,function(b){p.$name!==b&&(s(a,void 0),p.$$parentForm.$$renameControl(p,b),s=c(p.$name),s(a,p))}));
|
||||||
|
d.on("$destroy",function(){p.$$parentForm.$removeControl(p);s(a,void 0);S(p,mb)})}}}}}]},Se=oe(),df=oe(!0),mh=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,xh=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,yh=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,
|
||||||
|
nh=/^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,pe=/^(\d{4,})-(\d{2})-(\d{2})$/,qe=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oc=/^(\d{4,})-W(\d\d)$/,re=/^(\d{4,})-(\d\d)$/,se=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,ee=T();r(["date","datetime-local","month","time","week"],function(a){ee[a]=!0});var te={text:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c)},date:ob("date",pe,Rb(pe,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":ob("datetimelocal",qe,Rb(qe,"yyyy MM dd HH mm ss sss".split(" ")),
|
||||||
|
"yyyy-MM-ddTHH:mm:ss.sss"),time:ob("time",se,Rb(se,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:ob("week",Oc,function(a,b){if(ha(a))return a;if(C(a)){Oc.lastIndex=0;var d=Oc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,k=0,h=Zd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),k=b.getMilliseconds());return new Date(c,0,h.getDate()+e,d,f,g,k)}}return NaN},"yyyy-Www"),month:ob("month",re,Rb(re,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f,g,k){Jc(a,b,d,c,"number");fe(c);Sa(a,
|
||||||
|
b,d,c,e,f);var h;if(w(d.min)||d.ngMin){var l=d.min||k(d.ngMin)(a);h=na(l);c.$validators.min=function(a,b){return c.$isEmpty(b)||A(h)||b>=h};d.$observe("min",function(a){a!==l&&(h=na(a),l=a,c.$validate())})}if(w(d.max)||d.ngMax){var m=d.max||k(d.ngMax)(a),p=na(m);c.$validators.max=function(a,b){return c.$isEmpty(b)||A(p)||b<=p};d.$observe("max",function(a){a!==m&&(p=na(a),m=a,c.$validate())})}if(w(d.step)||d.ngStep){var n=d.step||k(d.ngStep)(a),s=na(n);c.$validators.step=function(a,b){return c.$isEmpty(b)||
|
||||||
|
A(s)||ge(b,h||0,s)};d.$observe("step",function(a){a!==n&&(s=na(a),n=a,c.$validate())})}},url:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c);c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||xh.test(d)}},email:function(a,b,d,c,e,f){Sa(a,b,d,c,e,f);Ic(c);c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||yh.test(d)}},radio:function(a,b,d,c){var e=!d.ngTrim||"false"!==V(d.ngTrim);A(d.name)&&b.attr("name",++qb);b.on("change",function(a){var g;b[0].checked&&(g=d.value,e&&(g=
|
||||||
|
V(g)),c.$setViewValue(g,a&&a.type))});c.$render=function(){var a=d.value;e&&(a=V(a));b[0].checked=a===c.$viewValue};d.$observe("value",c.$render)},range:function(a,b,d,c,e,f){function g(a,c){b.attr(a,d[a]);var e=d[a];d.$observe(a,function(a){a!==e&&(e=a,c(a))})}function k(a){p=na(a);Y(c.$modelValue)||(m?(a=b.val(),p>a&&(a=p,b.val(a)),c.$setViewValue(a)):c.$validate())}function h(a){n=na(a);Y(c.$modelValue)||(m?(a=b.val(),n<a&&(b.val(n),a=n<p?p:n),c.$setViewValue(a)):c.$validate())}function l(a){s=
|
||||||
|
na(a);Y(c.$modelValue)||(m?c.$viewValue!==b.val()&&c.$setViewValue(b.val()):c.$validate())}Jc(a,b,d,c,"range");fe(c);Sa(a,b,d,c,e,f);var m=c.$$hasNativeValidators&&"range"===b[0].type,p=m?0:void 0,n=m?100:void 0,s=m?1:void 0,r=b[0].validity;a=w(d.min);e=w(d.max);f=w(d.step);var q=c.$render;c.$render=m&&w(r.rangeUnderflow)&&w(r.rangeOverflow)?function(){q();c.$setViewValue(b.val())}:q;a&&(p=na(d.min),c.$validators.min=m?function(){return!0}:function(a,b){return c.$isEmpty(b)||A(p)||b>=p},g("min",k));
|
||||||
|
e&&(n=na(d.max),c.$validators.max=m?function(){return!0}:function(a,b){return c.$isEmpty(b)||A(n)||b<=n},g("max",h));f&&(s=na(d.step),c.$validators.step=m?function(){return!r.stepMismatch}:function(a,b){return c.$isEmpty(b)||A(s)||ge(b,p||0,s)},g("step",l))},checkbox:function(a,b,d,c,e,f,g,k){var h=he(k,a,"ngTrueValue",d.ngTrueValue,!0),l=he(k,a,"ngFalseValue",d.ngFalseValue,!1);b.on("change",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=
|
||||||
|
function(a){return!1===a};c.$formatters.push(function(a){return va(a,h)});c.$parsers.push(function(a){return a?h:l})},hidden:E,button:E,submit:E,reset:E,file:E},$c=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,k){k[0]&&(te[K(g.type)]||te.text)(e,f,g,k[0],b,a,d,c)}}}}],Af=function(){var a={configurable:!0,enumerable:!1,get:function(){return this.getAttribute("value")||""},set:function(a){this.setAttribute("value",a)}};
|
||||||
|
return{restrict:"E",priority:200,compile:function(b,d){if("hidden"===K(d.type))return{pre:function(b,d,f,g){b=d[0];b.parentNode&&b.parentNode.insertBefore(b,b.nextSibling);Object.defineProperty&&Object.defineProperty(b,"value",a)}}}}},zh=/^(true|false|\d+)$/,xf=function(){function a(a,d,c){var e=w(c)?c:9===wa?"":null;a.prop("value",e);d.$set("value",c)}return{restrict:"A",priority:100,compile:function(b,d){return zh.test(d.ngValue)?function(b,d,f){b=b.$eval(f.ngValue);a(d,f,b)}:function(b,d,f){b.$watch(f.ngValue,
|
||||||
|
function(b){a(d,f,b)})}}}},We=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=jc(a)})}}}}],Ye=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=A(a)?"":a})}}}}],
|
||||||
|
Xe=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(b){return a.valueOf(b)});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){var d=f(b);c.html(a.getTrustedHtml(d)||"")})}}}}],wf=ia({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Ze=Lc("",!0),af=Lc("Odd",0),$e=Lc("Even",1),bf=Ra({compile:function(a,
|
||||||
|
b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),cf=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],ed={},Ah={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);ed[b]=["$parse","$rootScope","$exceptionHandler",function(d,c,e){return sd(d,c,e,b,a,Ah[a])}]});var ff=["$animate","$compile",function(a,b){return{multiElement:!0,
|
||||||
|
transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var k,h,l;d.$watch(e.ngIf,function(d){d?h||g(function(d,f){h=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);k={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),h&&(h.$destroy(),h=null),k&&(l=ub(k.clone),a.leave(l).done(function(a){!1!==a&&(l=null)}),k=null))})}}}],gf=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",
|
||||||
|
controller:ca.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",k=e.autoscroll;return function(c,e,m,p,n){var r=0,q,t,x,v=function(){t&&(t.remove(),t=null);q&&(q.$destroy(),q=null);x&&(d.leave(x).done(function(a){!1!==a&&(t=null)}),t=x,x=null)};c.$watch(f,function(f){var m=function(a){!1===a||!w(k)||k&&!c.$eval(k)||b()},t=++r;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&t===r){var b=c.$new();p.template=a;a=n(b,function(a){v();d.enter(a,null,e).done(m)});q=b;x=a;q.$emit("$includeContentLoaded",
|
||||||
|
f);c.$eval(g)}},function(){c.$$destroyed||t!==r||(v(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(v(),p.template=null)})}}}}],zf=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){la.call(d[0]).match(/SVG/)?(d.empty(),a(gd(e.template,z.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],hf=Ra({priority:450,compile:function(){return{pre:function(a,
|
||||||
|
b,d){a.$eval(d.ngInit)}}}}),vf=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=d.ngList||", ",f="false"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!A(a)){var b=[];a&&r(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){if(H(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},nb="ng-valid",be="ng-invalid",Za="ng-pristine",Wb="ng-dirty",pb=F("ngModel");Sb.$inject="$scope $exceptionHandler $attrs $element $parse $animate $timeout $q $interpolate".split(" ");
|
||||||
|
Sb.prototype={$$initGetterSetters:function(){if(this.$options.getOption("getterSetter")){var a=this.$$parse(this.$$attr.ngModel+"()"),b=this.$$parse(this.$$attr.ngModel+"($$$p)");this.$$ngModelGet=function(b){var c=this.$$parsedNgModel(b);B(c)&&(c=a(b));return c};this.$$ngModelSet=function(a,c){B(this.$$parsedNgModel(a))?b(a,{$$$p:c}):this.$$parsedNgModelAssign(a,c)}}else if(!this.$$parsedNgModel.assign)throw pb("nonassign",this.$$attr.ngModel,Aa(this.$$element));},$render:E,$isEmpty:function(a){return A(a)||
|
||||||
|
""===a||null===a||a!==a},$$updateEmptyClasses:function(a){this.$isEmpty(a)?(this.$$animate.removeClass(this.$$element,"ng-not-empty"),this.$$animate.addClass(this.$$element,"ng-empty")):(this.$$animate.removeClass(this.$$element,"ng-empty"),this.$$animate.addClass(this.$$element,"ng-not-empty"))},$setPristine:function(){this.$dirty=!1;this.$pristine=!0;this.$$animate.removeClass(this.$$element,Wb);this.$$animate.addClass(this.$$element,Za)},$setDirty:function(){this.$dirty=!0;this.$pristine=!1;this.$$animate.removeClass(this.$$element,
|
||||||
|
Za);this.$$animate.addClass(this.$$element,Wb);this.$$parentForm.$setDirty()},$setUntouched:function(){this.$touched=!1;this.$untouched=!0;this.$$animate.setClass(this.$$element,"ng-untouched","ng-touched")},$setTouched:function(){this.$touched=!0;this.$untouched=!1;this.$$animate.setClass(this.$$element,"ng-touched","ng-untouched")},$rollbackViewValue:function(){this.$$timeout.cancel(this.$$pendingDebounce);this.$viewValue=this.$$lastCommittedViewValue;this.$render()},$validate:function(){if(!Y(this.$modelValue)){var a=
|
||||||
|
this.$$lastCommittedViewValue,b=this.$$rawModelValue,d=this.$valid,c=this.$modelValue,e=this.$options.getOption("allowInvalid"),f=this;this.$$runValidators(b,a,function(a){e||d===a||(f.$modelValue=a?b:void 0,f.$modelValue!==c&&f.$$writeModelToScope())})}},$$runValidators:function(a,b,d){function c(){var c=!0;r(h.$validators,function(d,e){var g=Boolean(d(a,b));c=c&&g;f(e,g)});return c?!0:(r(h.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;r(h.$asyncValidators,function(e,
|
||||||
|
g){var h=e(a,b);if(!h||!B(h.then))throw pb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?h.$$q.all(c).then(function(){g(d)},E):g(!0)}function f(a,b){k===h.$$currentValidationRunId&&h.$setValidity(a,b)}function g(a){k===h.$$currentValidationRunId&&d(a)}this.$$currentValidationRunId++;var k=this.$$currentValidationRunId,h=this;(function(){var a=h.$$parserName;if(A(h.$$parserValid))f(a,null);else return h.$$parserValid||(r(h.$validators,function(a,
|
||||||
|
b){f(b,null)}),r(h.$asyncValidators,function(a,b){f(b,null)})),f(a,h.$$parserValid),h.$$parserValid;return!0})()?c()?e():g(!1):g(!1)},$commitViewValue:function(){var a=this.$viewValue;this.$$timeout.cancel(this.$$pendingDebounce);if(this.$$lastCommittedViewValue!==a||""===a&&this.$$hasNativeValidators)this.$$updateEmptyClasses(a),this.$$lastCommittedViewValue=a,this.$pristine&&this.$setDirty(),this.$$parseAndValidate()},$$parseAndValidate:function(){var a=this.$$lastCommittedViewValue,b=this;this.$$parserValid=
|
||||||
|
A(a)?void 0:!0;this.$setValidity(this.$$parserName,null);this.$$parserName="parse";if(this.$$parserValid)for(var d=0;d<this.$parsers.length;d++)if(a=this.$parsers[d](a),A(a)){this.$$parserValid=!1;break}Y(this.$modelValue)&&(this.$modelValue=this.$$ngModelGet(this.$$scope));var c=this.$modelValue,e=this.$options.getOption("allowInvalid");this.$$rawModelValue=a;e&&(this.$modelValue=a,b.$modelValue!==c&&b.$$writeModelToScope());this.$$runValidators(a,this.$$lastCommittedViewValue,function(d){e||(b.$modelValue=
|
||||||
|
d?a:void 0,b.$modelValue!==c&&b.$$writeModelToScope())})},$$writeModelToScope:function(){this.$$ngModelSet(this.$$scope,this.$modelValue);r(this.$viewChangeListeners,function(a){try{a()}catch(b){this.$$exceptionHandler(b)}},this)},$setViewValue:function(a,b){this.$viewValue=a;this.$options.getOption("updateOnDefault")&&this.$$debounceViewValueCommit(b)},$$debounceViewValueCommit:function(a){var b=this.$options.getOption("debounce");X(b[a])?b=b[a]:X(b["default"])&&-1===this.$options.getOption("updateOn").indexOf(a)?
|
||||||
|
b=b["default"]:X(b["*"])&&(b=b["*"]);this.$$timeout.cancel(this.$$pendingDebounce);var d=this;0<b?this.$$pendingDebounce=this.$$timeout(function(){d.$commitViewValue()},b):this.$$rootScope.$$phase?this.$commitViewValue():this.$$scope.$apply(function(){d.$commitViewValue()})},$overrideModelOptions:function(a){this.$options=this.$options.createChild(a);this.$$setUpdateOnEvents()},$processModelValue:function(){var a=this.$$format();this.$viewValue!==a&&(this.$$updateEmptyClasses(a),this.$viewValue=this.$$lastCommittedViewValue=
|
||||||
|
a,this.$render(),this.$$runValidators(this.$modelValue,this.$viewValue,E))},$$format:function(){for(var a=this.$formatters,b=a.length,d=this.$modelValue;b--;)d=a[b](d);return d},$$setModelValue:function(a){this.$modelValue=this.$$rawModelValue=a;this.$$parserValid=void 0;this.$processModelValue()},$$setUpdateOnEvents:function(){this.$$updateEvents&&this.$$element.off(this.$$updateEvents,this.$$updateEventHandler);if(this.$$updateEvents=this.$options.getOption("updateOn"))this.$$element.on(this.$$updateEvents,
|
||||||
|
this.$$updateEventHandler)},$$updateEventHandler:function(a){this.$$debounceViewValueCommit(a&&a.type)}};ce({clazz:Sb,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]}});var uf=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Sb,priority:1,compile:function(b){b.addClass(Za).addClass("ng-untouched").addClass(nb);return{pre:function(a,b,e,f){var g=f[0];b=f[1]||g.$$parentForm;if(f=f[2])g.$options=f.$options;g.$$initGetterSetters();b.$addControl(g);
|
||||||
|
e.$observe("name",function(a){g.$name!==a&&g.$$parentForm.$$renameControl(g,a)});a.$on("$destroy",function(){g.$$parentForm.$removeControl(g)})},post:function(b,c,e,f){function g(){k.$setTouched()}var k=f[0];k.$$setUpdateOnEvents();c.on("blur",function(){k.$touched||(a.$$phase?b.$evalAsync(g):b.$apply(g))})}}}}}],Tb,Bh=/(\s+|^)default(\s+|$)/;Mc.prototype={getOption:function(a){return this.$$options[a]},createChild:function(a){var b=!1;a=S({},a);r(a,function(d,c){"$inherit"===d?"*"===c?b=!0:(a[c]=
|
||||||
|
this.$$options[c],"updateOn"===c&&(a.updateOnDefault=this.$$options.updateOnDefault)):"updateOn"===c&&(a.updateOnDefault=!1,a[c]=V(d.replace(Bh,function(){a.updateOnDefault=!0;return" "})))},this);b&&(delete a["*"],ie(a,this.$$options));ie(a,Tb.$$options);return new Mc(a)}};Tb=new Mc({updateOn:"",updateOnDefault:!0,debounce:0,getterSetter:!1,allowInvalid:!1,timezone:null});var yf=function(){function a(a,d){this.$$attrs=a;this.$$scope=d}a.$inject=["$attrs","$scope"];a.prototype={$onInit:function(){var a=
|
||||||
|
this.parentCtrl?this.parentCtrl.$options:Tb,d=this.$$scope.$eval(this.$$attrs.ngModelOptions);this.$options=a.createChild(d)}};return{restrict:"A",priority:10,require:{parentCtrl:"?^^ngModelOptions"},bindToController:!0,controller:a}},jf=Ra({terminal:!0,priority:1E3}),Ch=F("ngOptions"),Dh=/^\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]+?))?$/,
|
||||||
|
sf=["$compile","$document","$parse",function(a,b,d){function c(a,b,c){function e(a,b,c,d,f){this.selectValue=a;this.viewValue=b;this.label=c;this.group=d;this.disabled=f}function f(a){var b;if(!r&&za(a))b=a;else{b=[];for(var c in a)a.hasOwnProperty(c)&&"$"!==c.charAt(0)&&b.push(c)}return b}var p=a.match(Dh);if(!p)throw Ch("iexp",a,Aa(b));var n=p[5]||p[7],r=p[6];a=/ as /.test(p[0])&&p[1];var q=p[9];b=d(p[2]?p[1]:n);var t=a&&d(a)||b,w=q&&d(q),v=q?function(a,b){return w(c,b)}:function(a){return La(a)},
|
||||||
|
x=function(a,b){return v(a,B(a,b))},A=d(p[2]||p[1]),y=d(p[3]||""),J=d(p[4]||""),I=d(p[8]),z={},B=r?function(a,b){z[r]=b;z[n]=a;return z}:function(a){z[n]=a;return z};return{trackBy:q,getTrackByValue:x,getWatchables:d(I,function(a){var b=[];a=a||[];for(var d=f(a),e=d.length,g=0;g<e;g++){var k=a===d?g:d[g],l=a[k],k=B(l,k),l=v(l,k);b.push(l);if(p[2]||p[1])l=A(c,k),b.push(l);p[4]&&(k=J(c,k),b.push(k))}return b}),getOptions:function(){for(var a=[],b={},d=I(c)||[],g=f(d),k=g.length,n=0;n<k;n++){var p=d===
|
||||||
|
g?n:g[n],r=B(d[p],p),s=t(c,r),p=v(s,r),w=A(c,r),z=y(c,r),r=J(c,r),s=new e(p,s,w,z,r);a.push(s);b[p]=s}return{items:a,selectValueMap:b,getOptionFromViewValue:function(a){return b[x(a)]},getViewValueFromOption:function(a){return q?Ia(a.viewValue):a.viewValue}}}}}var e=z.document.createElement("option"),f=z.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(a,b,c,d){d[0].registerOption=E},post:function(d,k,h,l){function m(a){var b=(a=v.getOptionFromViewValue(a))&&
|
||||||
|
a.element;b&&!b.selected&&(b.selected=!0);return a}function p(a,b){a.element=b;b.disabled=a.disabled;a.label!==b.label&&(b.label=a.label,b.textContent=a.label);b.value=a.selectValue}var n=l[0],q=l[1],A=h.multiple;l=0;for(var t=k.children(),z=t.length;l<z;l++)if(""===t[l].value){n.hasEmptyOption=!0;n.emptyOption=t.eq(l);break}k.empty();l=!!n.emptyOption;x(e.cloneNode(!1)).val("?");var v,B=c(h.ngOptions,k,d),C=b[0].createDocumentFragment();n.generateUnknownOptionValue=function(a){return"?"};A?(n.writeValue=
|
||||||
|
function(a){if(v){var b=a&&a.map(m)||[];v.items.forEach(function(a){a.element.selected&&-1===Array.prototype.indexOf.call(b,a)&&(a.element.selected=!1)})}},n.readValue=function(){var a=k.val()||[],b=[];r(a,function(a){(a=v.selectValueMap[a])&&!a.disabled&&b.push(v.getViewValueFromOption(a))});return b},B.trackBy&&d.$watchCollection(function(){if(H(q.$viewValue))return q.$viewValue.map(function(a){return B.getTrackByValue(a)})},function(){q.$render()})):(n.writeValue=function(a){if(v){var b=k[0].options[k[0].selectedIndex],
|
||||||
|
c=v.getOptionFromViewValue(a);b&&b.removeAttribute("selected");c?(k[0].value!==c.selectValue&&(n.removeUnknownOption(),k[0].value=c.selectValue,c.element.selected=!0),c.element.setAttribute("selected","selected")):n.selectUnknownOrEmptyOption(a)}},n.readValue=function(){var a=v.selectValueMap[k.val()];return a&&!a.disabled?(n.unselectEmptyOption(),n.removeUnknownOption(),v.getViewValueFromOption(a)):null},B.trackBy&&d.$watch(function(){return B.getTrackByValue(q.$viewValue)},function(){q.$render()}));
|
||||||
|
l&&(a(n.emptyOption)(d),k.prepend(n.emptyOption),8===n.emptyOption[0].nodeType?(n.hasEmptyOption=!1,n.registerOption=function(a,b){""===b.val()&&(n.hasEmptyOption=!0,n.emptyOption=b,n.emptyOption.removeClass("ng-scope"),q.$render(),b.on("$destroy",function(){var a=n.$isEmptyOptionSelected();n.hasEmptyOption=!1;n.emptyOption=void 0;a&&q.$render()}))}):n.emptyOption.removeClass("ng-scope"));d.$watchCollection(B.getWatchables,function(){var a=v&&n.readValue();if(v)for(var b=v.items.length-1;0<=b;b--){var c=
|
||||||
|
v.items[b];w(c.group)?Gb(c.element.parentNode):Gb(c.element)}v=B.getOptions();var d={};v.items.forEach(function(a){var b;if(w(a.group)){b=d[a.group];b||(b=f.cloneNode(!1),C.appendChild(b),b.label=null===a.group?"null":a.group,d[a.group]=b);var c=e.cloneNode(!1);b.appendChild(c);p(a,c)}else b=e.cloneNode(!1),C.appendChild(b),p(a,b)});k[0].appendChild(C);q.$render();q.$isEmpty(a)||(b=n.readValue(),(B.trackBy||A?va(a,b):a===b)||(q.$setViewValue(b),q.$render()))})}}}}],kf=["$locale","$interpolate","$log",
|
||||||
|
function(a,b,d){var c=/{}/g,e=/^when(Minus)?(.+)$/;return{link:function(f,g,k){function h(a){g.text(a||"")}var l=k.count,m=k.$attr.when&&g.attr(k.$attr.when),p=k.offset||0,n=f.$eval(m)||{},q={},w=b.startSymbol(),t=b.endSymbol(),x=w+l+"-"+p+t,v=ca.noop,z;r(k,function(a,b){var c=e.exec(b);c&&(c=(c[1]?"-":"")+K(c[2]),n[c]=g.attr(k.$attr[b]))});r(n,function(a,d){q[d]=b(a.replace(c,x))});f.$watch(l,function(b){var c=parseFloat(b),e=Y(c);e||c in n||(c=a.pluralCat(c-p));c===z||e&&Y(z)||(v(),e=q[c],A(e)?
|
||||||
|
(null!=b&&d.debug("ngPluralize: no rule defined for '"+c+"' in "+m),v=E,h()):v=f.$watch(e,h),z=c)})}}}],ue=F("ngRef"),lf=["$parse",function(a){return{priority:-1,restrict:"A",compile:function(b,d){var c=xa(ua(b)),e=a(d.ngRef),f=e.assign||function(){throw ue("nonassign",d.ngRef);};return function(a,b,h){var l;if(h.hasOwnProperty("ngRefRead"))if("$element"===h.ngRefRead)l=b;else{if(l=b.data("$"+h.ngRefRead+"Controller"),!l)throw ue("noctrl",h.ngRefRead,d.ngRef);}else l=b.data("$"+c+"Controller");l=
|
||||||
|
l||b;f(a,l);b.on("$destroy",function(){e(a)===l&&f(a,null)})}}}}],mf=["$parse","$animate","$compile",function(a,b,d){var c=F("ngRepeat"),e=function(a,b,c,d,e,f,g){a[c]=d;e&&(a[e]=f);a.$index=b;a.$first=0===b;a.$last=b===g-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(b&1))},f=function(a,b,c){return La(c)},g=function(a,b){return b};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(k,h){var l=h.ngRepeat,m=d.$$createComment("end ngRepeat",
|
||||||
|
l),p=l.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!p)throw c("iexp",l);var n=p[1],q=p[2],w=p[3],t=p[4],p=n.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/);if(!p)throw c("iidexp",n);var x=p[3]||p[1],v=p[2];if(w&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(w)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(w)))throw c("badident",w);var A;if(t){var z={$id:La},y=a(t);A=function(a,b,c,d){v&&
|
||||||
|
(z[v]=b);z[x]=c;z.$index=d;return y(a,z)}}return function(a,d,h,k,n){var p=T();a.$watchCollection(q,function(h){var k,q,t=d[0],s,y=T(),B,C,E,D,H,F,K;w&&(a[w]=h);if(za(h))H=h,q=A||f;else for(K in q=A||g,H=[],h)ta.call(h,K)&&"$"!==K.charAt(0)&&H.push(K);B=H.length;K=Array(B);for(k=0;k<B;k++)if(C=h===H?k:H[k],E=h[C],D=q(a,C,E,k),p[D])F=p[D],delete p[D],y[D]=F,K[k]=F;else{if(y[D])throw r(K,function(a){a&&a.scope&&(p[a.id]=a)}),c("dupes",l,D,E);K[k]={id:D,scope:void 0,clone:void 0};y[D]=!0}z&&(z[x]=void 0);
|
||||||
|
for(s in p){F=p[s];D=ub(F.clone);b.leave(D);if(D[0].parentNode)for(k=0,q=D.length;k<q;k++)D[k].$$NG_REMOVED=!0;F.scope.$destroy()}for(k=0;k<B;k++)if(C=h===H?k:H[k],E=h[C],F=K[k],F.scope){s=t;do s=s.nextSibling;while(s&&s.$$NG_REMOVED);F.clone[0]!==s&&b.move(ub(F.clone),null,t);t=F.clone[F.clone.length-1];e(F.scope,k,x,E,v,C,B)}else n(function(a,c){F.scope=c;var d=m.cloneNode(!1);a[a.length++]=d;b.enter(a,null,t);t=d;F.clone=a;y[F.id]=F;e(F.scope,k,x,E,v,C,B)});p=y})}}}}],nf=["$animate",function(a){return{restrict:"A",
|
||||||
|
multiElement:!0,link:function(b,d,c){b.$watch(c.ngShow,function(b){a[b?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],ef=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngHide,function(b){a[b?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],of=Ra(function(a,b,d){a.$watchCollection(d.ngStyle,function(a,d){d&&a!==d&&r(d,function(a,c){b.css(c,"")});a&&b.css(a)})}),pf=["$animate","$compile",function(a,
|
||||||
|
b){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(d,c,e,f){var g=[],k=[],h=[],l=[],m=function(a,b){return function(c){!1!==c&&a.splice(b,1)}};d.$watch(e.ngSwitch||e.on,function(c){for(var d,e;h.length;)a.cancel(h.pop());d=0;for(e=l.length;d<e;++d){var q=ub(k[d].clone);l[d].$destroy();(h[d]=a.leave(q)).done(m(h,d))}k.length=0;l.length=0;(g=f.cases["!"+c]||f.cases["?"])&&r(g,function(c){c.transclude(function(d,e){l.push(e);var f=c.element;d[d.length++]=b.$$createComment("end ngSwitchWhen");
|
||||||
|
k.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],qf=Ra({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){a=d.ngSwitchWhen.split(d.ngSwitchWhenSeparator).sort().filter(function(a,b,c){return c[b-1]!==a});r(a,function(a){c.cases["!"+a]=c.cases["!"+a]||[];c.cases["!"+a].push({transclude:e,element:b})})}}),rf=Ra({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["?"]=c.cases["?"]||[];c.cases["?"].push({transclude:e,
|
||||||
|
element:b})}}),Eh=F("ngTransclude"),tf=["$compile",function(a){return{restrict:"EAC",compile:function(b){var d=a(b.contents());b.empty();return function(a,b,f,g,k){function h(){d(a,function(a){b.append(a)})}if(!k)throw Eh("orphan",Aa(b));f.ngTransclude===f.$attr.ngTransclude&&(f.ngTransclude="");f=f.ngTransclude||f.ngTranscludeSlot;k(function(a,c){var d;if(d=a.length)a:{d=0;for(var f=a.length;d<f;d++){var g=a[d];if(g.nodeType!==Pa||g.nodeValue.trim()){d=!0;break a}}d=void 0}d?b.append(a):(h(),c.$destroy())},
|
||||||
|
null,f);f&&!k.isSlotFilled(f)&&h()}}}}],Te=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,d){"text/ng-template"===d.type&&a.put(d.id,b[0].text)}}}],Fh={$setViewValue:E,$render:E},Gh=["$element","$scope",function(a,b){function d(){g||(g=!0,b.$$postDigest(function(){g=!1;e.ngModelCtrl.$render()}))}function c(a){k||(k=!0,b.$$postDigest(function(){b.$$destroyed||(k=!1,e.ngModelCtrl.$setViewValue(e.readValue()),a&&e.ngModelCtrl.$render())}))}var e=this,f=new Ib;e.selectValueMap=
|
||||||
|
{};e.ngModelCtrl=Fh;e.multiple=!1;e.unknownOption=x(z.document.createElement("option"));e.hasEmptyOption=!1;e.emptyOption=void 0;e.renderUnknownOption=function(b){b=e.generateUnknownOptionValue(b);e.unknownOption.val(b);a.prepend(e.unknownOption);Oa(e.unknownOption,!0);a.val(b)};e.updateUnknownOption=function(b){b=e.generateUnknownOptionValue(b);e.unknownOption.val(b);Oa(e.unknownOption,!0);a.val(b)};e.generateUnknownOptionValue=function(a){return"? "+La(a)+" ?"};e.removeUnknownOption=function(){e.unknownOption.parent()&&
|
||||||
|
e.unknownOption.remove()};e.selectEmptyOption=function(){e.emptyOption&&(a.val(""),Oa(e.emptyOption,!0))};e.unselectEmptyOption=function(){e.hasEmptyOption&&Oa(e.emptyOption,!1)};b.$on("$destroy",function(){e.renderUnknownOption=E});e.readValue=function(){var b=a.val(),b=b in e.selectValueMap?e.selectValueMap[b]:b;return e.hasOption(b)?b:null};e.writeValue=function(b){var c=a[0].options[a[0].selectedIndex];c&&Oa(x(c),!1);e.hasOption(b)?(e.removeUnknownOption(),c=La(b),a.val(c in e.selectValueMap?
|
||||||
|
c:b),Oa(x(a[0].options[a[0].selectedIndex]),!0)):e.selectUnknownOrEmptyOption(b)};e.addOption=function(a,b){if(8!==b[0].nodeType){Ja(a,'"option value"');""===a&&(e.hasEmptyOption=!0,e.emptyOption=b);var c=f.get(a)||0;f.set(a,c+1);d()}};e.removeOption=function(a){var b=f.get(a);b&&(1===b?(f.delete(a),""===a&&(e.hasEmptyOption=!1,e.emptyOption=void 0)):f.set(a,b-1))};e.hasOption=function(a){return!!f.get(a)};e.$hasEmptyOption=function(){return e.hasEmptyOption};e.$isUnknownOptionSelected=function(){return a[0].options[0]===
|
||||||
|
e.unknownOption[0]};e.$isEmptyOptionSelected=function(){return e.hasEmptyOption&&a[0].options[a[0].selectedIndex]===e.emptyOption[0]};e.selectUnknownOrEmptyOption=function(a){null==a&&e.emptyOption?(e.removeUnknownOption(),e.selectEmptyOption()):e.unknownOption.parent().length?e.updateUnknownOption(a):e.renderUnknownOption(a)};var g=!1,k=!1;e.registerOption=function(a,b,f,g,k){if(f.$attr.ngValue){var q,r;f.$observe("value",function(a){var d,f=b.prop("selected");w(r)&&(e.removeOption(q),delete e.selectValueMap[r],
|
||||||
|
d=!0);r=La(a);q=a;e.selectValueMap[r]=a;e.addOption(a,b);b.attr("value",r);d&&f&&c()})}else g?f.$observe("value",function(a){e.readValue();var d,f=b.prop("selected");w(q)&&(e.removeOption(q),d=!0);q=a;e.addOption(a,b);d&&f&&c()}):k?a.$watch(k,function(a,d){f.$set("value",a);var g=b.prop("selected");d!==a&&e.removeOption(d);e.addOption(a,b);d&&g&&c()}):e.addOption(f.value,b);f.$observe("disabled",function(a){if("true"===a||a&&b.prop("selected"))e.multiple?c(!0):(e.ngModelCtrl.$setViewValue(null),e.ngModelCtrl.$render())});
|
||||||
|
b.on("$destroy",function(){var a=e.readValue(),b=f.value;e.removeOption(b);d();(e.multiple&&a&&-1!==a.indexOf(b)||a===b)&&c(!0)})}}],Ue=function(){return{restrict:"E",require:["select","?ngModel"],controller:Gh,priority:1,link:{pre:function(a,b,d,c){var e=c[0],f=c[1];if(f){if(e.ngModelCtrl=f,b.on("change",function(){e.removeUnknownOption();a.$apply(function(){f.$setViewValue(e.readValue())})}),d.multiple){e.multiple=!0;e.readValue=function(){var a=[];r(b.find("option"),function(b){b.selected&&!b.disabled&&
|
||||||
|
(b=b.value,a.push(b in e.selectValueMap?e.selectValueMap[b]:b))});return a};e.writeValue=function(a){r(b.find("option"),function(b){var c=!!a&&(-1!==Array.prototype.indexOf.call(a,b.value)||-1!==Array.prototype.indexOf.call(a,e.selectValueMap[b.value]));c!==b.selected&&Oa(x(b),c)})};var g,k=NaN;a.$watch(function(){k!==f.$viewValue||va(g,f.$viewValue)||(g=ja(f.$viewValue),f.$render());k=f.$viewValue});f.$isEmpty=function(a){return!a||0===a.length}}}else e.registerOption=E},post:function(a,b,d,c){var e=
|
||||||
|
c[1];if(e){var f=c[0];e.$render=function(){f.writeValue(e.$viewValue)}}}}}},Ve=["$interpolate",function(a){return{restrict:"E",priority:100,compile:function(b,d){var c,e;w(d.ngValue)||(w(d.value)?c=a(d.value,!0):(e=a(b.text(),!0))||d.$set("value",b.text()));return function(a,b,d){var h=b.parent();(h=h.data("$selectController")||h.parent().data("$selectController"))&&h.registerOption(a,b,d,c,e)}}}}],bd=["$parse",function(a){return{restrict:"A",require:"?ngModel",link:function(b,d,c,e){if(e){var f=
|
||||||
|
c.hasOwnProperty("required")||a(c.ngRequired)(b);c.ngRequired||(c.required=!0);e.$validators.required=function(a,b){return!f||!e.$isEmpty(b)};c.$observe("required",function(a){f!==a&&(f=a,e.$validate())})}}}}],ad=["$parse",function(a){return{restrict:"A",require:"?ngModel",compile:function(b,d){var c,e;d.ngPattern&&(c=d.ngPattern,e="/"===d.ngPattern.charAt(0)&&ke.test(d.ngPattern)?function(){return d.ngPattern}:a(d.ngPattern));return function(a,b,d,h){if(h){var l=d.pattern;d.ngPattern?l=e(a):c=d.pattern;
|
||||||
|
var m=je(l,c,b);d.$observe("pattern",function(a){var d=m;m=je(a,c,b);(d&&d.toString())!==(m&&m.toString())&&h.$validate()});h.$validators.pattern=function(a,b){return h.$isEmpty(b)||A(m)||m.test(b)}}}}}}],dd=["$parse",function(a){return{restrict:"A",require:"?ngModel",link:function(b,d,c,e){if(e){var f=c.maxlength||a(c.ngMaxlength)(b),g=Ub(f);c.$observe("maxlength",function(a){f!==a&&(g=Ub(a),f=a,e.$validate())});e.$validators.maxlength=function(a,b){return 0>g||e.$isEmpty(b)||b.length<=g}}}}}],cd=
|
||||||
|
["$parse",function(a){return{restrict:"A",require:"?ngModel",link:function(b,d,c,e){if(e){var f=c.minlength||a(c.ngMinlength)(b),g=Ub(f)||-1;c.$observe("minlength",function(a){f!==a&&(g=Ub(a)||-1,f=a,e.$validate())});e.$validators.minlength=function(a,b){return e.$isEmpty(b)||b.length>=g}}}}}];z.angular.bootstrap?z.console&&console.log("WARNING: Tried to load AngularJS more than once."):(Je(),Oe(ca),ca.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1==
|
||||||
|
b?0:a.length-b-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(" "),STANDALONEMONTH:"January February March April May June July August September October November December".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",localeID:"en_US",pluralCat:function(a,
|
||||||
|
c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),x(function(){Ee(z.document,Wc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(window.angular.element("<style>").text('@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}'));
|
||||||
|
//# sourceMappingURL=angular.min.js.map
|
BIN
common/resources/node_modules/angular/angular.min.js.gzip
generated
vendored
Normal file
8
common/resources/node_modules/angular/angular.min.js.map
generated
vendored
Normal file
9
common/resources/node_modules/angular/bower.json
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"name": "angular",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./angular.js",
|
||||||
|
"ignore": [],
|
||||||
|
"dependencies": {
|
||||||
|
}
|
||||||
|
}
|
2
common/resources/node_modules/angular/index.js
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
require('./angular');
|
||||||
|
module.exports = angular;
|
132
common/resources/node_modules/autofill-event/autofill-event.js
generated
vendored
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
/**
|
||||||
|
* Autofill event polyfill ##version:1.0.0##
|
||||||
|
* (c) 2014 Google, Inc.
|
||||||
|
* License: MIT
|
||||||
|
*/
|
||||||
|
(function(window) {
|
||||||
|
var $ = window.jQuery || window.angular.element;
|
||||||
|
var rootElement = window.document.documentElement,
|
||||||
|
$rootElement = $(rootElement);
|
||||||
|
|
||||||
|
addGlobalEventListener('change', markValue);
|
||||||
|
addValueChangeByJsListener(markValue);
|
||||||
|
|
||||||
|
$.prototype.checkAndTriggerAutoFillEvent = jqCheckAndTriggerAutoFillEvent;
|
||||||
|
|
||||||
|
// Need to use blur and not change event
|
||||||
|
// as Chrome does not fire change events in all cases an input is changed
|
||||||
|
// (e.g. when starting to type and then finish the input by auto filling a username)
|
||||||
|
addGlobalEventListener('blur', function(target) {
|
||||||
|
// setTimeout needed for Chrome as it fills other
|
||||||
|
// form fields a little later...
|
||||||
|
window.setTimeout(function() {
|
||||||
|
findParentForm(target).find('input').checkAndTriggerAutoFillEvent();
|
||||||
|
}, 20);
|
||||||
|
});
|
||||||
|
|
||||||
|
window.document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// mark all values that are present when the DOM is ready.
|
||||||
|
// We don't need to trigger a change event here,
|
||||||
|
// as js libs start with those values already being set!
|
||||||
|
forEach(document.getElementsByTagName('input'), markValue);
|
||||||
|
|
||||||
|
// The timeout is needed for Chrome as it auto fills
|
||||||
|
// login forms some time after DOMContentLoaded!
|
||||||
|
window.setTimeout(function() {
|
||||||
|
$rootElement.find('input').checkAndTriggerAutoFillEvent();
|
||||||
|
}, 200);
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
function jqCheckAndTriggerAutoFillEvent() {
|
||||||
|
var i, el;
|
||||||
|
for (i=0; i<this.length; i++) {
|
||||||
|
el = this[i];
|
||||||
|
if (!valueMarked(el)) {
|
||||||
|
markValue(el);
|
||||||
|
triggerChangeEvent(el);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function valueMarked(el) {
|
||||||
|
if (! ("$$currentValue" in el) ) {
|
||||||
|
// First time we see an element we take it's value attribute
|
||||||
|
// as real value. This might have been filled in the backend,
|
||||||
|
// ...
|
||||||
|
// Note: it's important to not use the value property here!
|
||||||
|
el.$$currentValue = el.getAttribute('value');
|
||||||
|
}
|
||||||
|
|
||||||
|
var val = el.value,
|
||||||
|
$$currentValue = el.$$currentValue;
|
||||||
|
if (!val && !$$currentValue) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return val === $$currentValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
function markValue(el) {
|
||||||
|
el.$$currentValue = el.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addValueChangeByJsListener(listener) {
|
||||||
|
var jq = window.jQuery || window.angular.element,
|
||||||
|
jqProto = jq.prototype;
|
||||||
|
var _val = jqProto.val;
|
||||||
|
jqProto.val = function(newValue) {
|
||||||
|
var res = _val.apply(this, arguments);
|
||||||
|
if (arguments.length > 0) {
|
||||||
|
forEach(this, function(el) {
|
||||||
|
listener(el, newValue);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function addGlobalEventListener(eventName, listener) {
|
||||||
|
// Use a capturing event listener so that
|
||||||
|
// we also get the event when it's stopped!
|
||||||
|
// Also, the blur event does not bubble.
|
||||||
|
rootElement.addEventListener(eventName, onEvent, true);
|
||||||
|
|
||||||
|
function onEvent(event) {
|
||||||
|
var target = event.target;
|
||||||
|
listener(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function findParentForm(el) {
|
||||||
|
while (el) {
|
||||||
|
if (el.nodeName === 'FORM') {
|
||||||
|
return $(el);
|
||||||
|
}
|
||||||
|
el = el.parentNode;
|
||||||
|
}
|
||||||
|
return $();
|
||||||
|
}
|
||||||
|
|
||||||
|
function forEach(arr, listener) {
|
||||||
|
if (arr.forEach) {
|
||||||
|
return arr.forEach(listener);
|
||||||
|
}
|
||||||
|
var i;
|
||||||
|
for (i=0; i<arr.length; i++) {
|
||||||
|
listener(arr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function triggerChangeEvent(element) {
|
||||||
|
var doc = window.document;
|
||||||
|
var event = doc.createEvent("HTMLEvents");
|
||||||
|
event.initEvent("change", true, true);
|
||||||
|
element.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})(window);
|
18
common/resources/node_modules/autofill-event/bower.json
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "autofill-event",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"main": "autofill-event.js",
|
||||||
|
"description": "Autofill Event module",
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"*.yml",
|
||||||
|
"*.xml",
|
||||||
|
"node_modules",
|
||||||
|
"bower_components",
|
||||||
|
"test",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"angular": "~1.2.10"
|
||||||
|
}
|
||||||
|
}
|
21
common/resources/node_modules/bootstrap/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2011-2019 Twitter, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
587
common/resources/node_modules/bootstrap/dist/css/bootstrap-theme.css
generated
vendored
Normal file
@ -0,0 +1,587 @@
|
|||||||
|
/*!
|
||||||
|
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2019 Twitter, Inc.
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
.btn-default,
|
||||||
|
.btn-primary,
|
||||||
|
.btn-success,
|
||||||
|
.btn-info,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger {
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-default.active,
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active {
|
||||||
|
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||||
|
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||||
|
}
|
||||||
|
.btn-default.disabled,
|
||||||
|
.btn-primary.disabled,
|
||||||
|
.btn-success.disabled,
|
||||||
|
.btn-info.disabled,
|
||||||
|
.btn-warning.disabled,
|
||||||
|
.btn-danger.disabled,
|
||||||
|
.btn-default[disabled],
|
||||||
|
.btn-primary[disabled],
|
||||||
|
.btn-success[disabled],
|
||||||
|
.btn-info[disabled],
|
||||||
|
.btn-warning[disabled],
|
||||||
|
.btn-danger[disabled],
|
||||||
|
fieldset[disabled] .btn-default,
|
||||||
|
fieldset[disabled] .btn-primary,
|
||||||
|
fieldset[disabled] .btn-success,
|
||||||
|
fieldset[disabled] .btn-info,
|
||||||
|
fieldset[disabled] .btn-warning,
|
||||||
|
fieldset[disabled] .btn-danger {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.btn-default .badge,
|
||||||
|
.btn-primary .badge,
|
||||||
|
.btn-success .badge,
|
||||||
|
.btn-info .badge,
|
||||||
|
.btn-warning .badge,
|
||||||
|
.btn-danger .badge {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
.btn:active,
|
||||||
|
.btn.active {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-default {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
|
||||||
|
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dbdbdb;
|
||||||
|
text-shadow: 0 1px 0 #fff;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
.btn-default:hover,
|
||||||
|
.btn-default:focus {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-default:active,
|
||||||
|
.btn-default.active {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
border-color: #dbdbdb;
|
||||||
|
}
|
||||||
|
.btn-default.disabled,
|
||||||
|
.btn-default[disabled],
|
||||||
|
fieldset[disabled] .btn-default,
|
||||||
|
.btn-default.disabled:hover,
|
||||||
|
.btn-default[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-default:hover,
|
||||||
|
.btn-default.disabled:focus,
|
||||||
|
.btn-default[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-default:focus,
|
||||||
|
.btn-default.disabled.focus,
|
||||||
|
.btn-default[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-default.focus,
|
||||||
|
.btn-default.disabled:active,
|
||||||
|
.btn-default[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-default:active,
|
||||||
|
.btn-default.disabled.active,
|
||||||
|
.btn-default[disabled].active,
|
||||||
|
fieldset[disabled] .btn-default.active {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #245580;
|
||||||
|
}
|
||||||
|
.btn-primary:hover,
|
||||||
|
.btn-primary:focus {
|
||||||
|
background-color: #265a88;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-primary:active,
|
||||||
|
.btn-primary.active {
|
||||||
|
background-color: #265a88;
|
||||||
|
border-color: #245580;
|
||||||
|
}
|
||||||
|
.btn-primary.disabled,
|
||||||
|
.btn-primary[disabled],
|
||||||
|
fieldset[disabled] .btn-primary,
|
||||||
|
.btn-primary.disabled:hover,
|
||||||
|
.btn-primary[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-primary:hover,
|
||||||
|
.btn-primary.disabled:focus,
|
||||||
|
.btn-primary[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-primary:focus,
|
||||||
|
.btn-primary.disabled.focus,
|
||||||
|
.btn-primary[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-primary.focus,
|
||||||
|
.btn-primary.disabled:active,
|
||||||
|
.btn-primary[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-primary:active,
|
||||||
|
.btn-primary.disabled.active,
|
||||||
|
.btn-primary[disabled].active,
|
||||||
|
fieldset[disabled] .btn-primary.active {
|
||||||
|
background-color: #265a88;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
|
||||||
|
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #3e8f3e;
|
||||||
|
}
|
||||||
|
.btn-success:hover,
|
||||||
|
.btn-success:focus {
|
||||||
|
background-color: #419641;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-success.active {
|
||||||
|
background-color: #419641;
|
||||||
|
border-color: #3e8f3e;
|
||||||
|
}
|
||||||
|
.btn-success.disabled,
|
||||||
|
.btn-success[disabled],
|
||||||
|
fieldset[disabled] .btn-success,
|
||||||
|
.btn-success.disabled:hover,
|
||||||
|
.btn-success[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-success:hover,
|
||||||
|
.btn-success.disabled:focus,
|
||||||
|
.btn-success[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-success:focus,
|
||||||
|
.btn-success.disabled.focus,
|
||||||
|
.btn-success[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-success.focus,
|
||||||
|
.btn-success.disabled:active,
|
||||||
|
.btn-success[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-success:active,
|
||||||
|
.btn-success.disabled.active,
|
||||||
|
.btn-success[disabled].active,
|
||||||
|
fieldset[disabled] .btn-success.active {
|
||||||
|
background-color: #419641;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
|
||||||
|
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #28a4c9;
|
||||||
|
}
|
||||||
|
.btn-info:hover,
|
||||||
|
.btn-info:focus {
|
||||||
|
background-color: #2aabd2;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-info:active,
|
||||||
|
.btn-info.active {
|
||||||
|
background-color: #2aabd2;
|
||||||
|
border-color: #28a4c9;
|
||||||
|
}
|
||||||
|
.btn-info.disabled,
|
||||||
|
.btn-info[disabled],
|
||||||
|
fieldset[disabled] .btn-info,
|
||||||
|
.btn-info.disabled:hover,
|
||||||
|
.btn-info[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-info:hover,
|
||||||
|
.btn-info.disabled:focus,
|
||||||
|
.btn-info[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-info:focus,
|
||||||
|
.btn-info.disabled.focus,
|
||||||
|
.btn-info[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-info.focus,
|
||||||
|
.btn-info.disabled:active,
|
||||||
|
.btn-info[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-info:active,
|
||||||
|
.btn-info.disabled.active,
|
||||||
|
.btn-info[disabled].active,
|
||||||
|
fieldset[disabled] .btn-info.active {
|
||||||
|
background-color: #2aabd2;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
|
||||||
|
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #e38d13;
|
||||||
|
}
|
||||||
|
.btn-warning:hover,
|
||||||
|
.btn-warning:focus {
|
||||||
|
background-color: #eb9316;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-warning:active,
|
||||||
|
.btn-warning.active {
|
||||||
|
background-color: #eb9316;
|
||||||
|
border-color: #e38d13;
|
||||||
|
}
|
||||||
|
.btn-warning.disabled,
|
||||||
|
.btn-warning[disabled],
|
||||||
|
fieldset[disabled] .btn-warning,
|
||||||
|
.btn-warning.disabled:hover,
|
||||||
|
.btn-warning[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-warning:hover,
|
||||||
|
.btn-warning.disabled:focus,
|
||||||
|
.btn-warning[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-warning:focus,
|
||||||
|
.btn-warning.disabled.focus,
|
||||||
|
.btn-warning[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-warning.focus,
|
||||||
|
.btn-warning.disabled:active,
|
||||||
|
.btn-warning[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-warning:active,
|
||||||
|
.btn-warning.disabled.active,
|
||||||
|
.btn-warning[disabled].active,
|
||||||
|
fieldset[disabled] .btn-warning.active {
|
||||||
|
background-color: #eb9316;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.btn-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
|
||||||
|
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #b92c28;
|
||||||
|
}
|
||||||
|
.btn-danger:hover,
|
||||||
|
.btn-danger:focus {
|
||||||
|
background-color: #c12e2a;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
.btn-danger:active,
|
||||||
|
.btn-danger.active {
|
||||||
|
background-color: #c12e2a;
|
||||||
|
border-color: #b92c28;
|
||||||
|
}
|
||||||
|
.btn-danger.disabled,
|
||||||
|
.btn-danger[disabled],
|
||||||
|
fieldset[disabled] .btn-danger,
|
||||||
|
.btn-danger.disabled:hover,
|
||||||
|
.btn-danger[disabled]:hover,
|
||||||
|
fieldset[disabled] .btn-danger:hover,
|
||||||
|
.btn-danger.disabled:focus,
|
||||||
|
.btn-danger[disabled]:focus,
|
||||||
|
fieldset[disabled] .btn-danger:focus,
|
||||||
|
.btn-danger.disabled.focus,
|
||||||
|
.btn-danger[disabled].focus,
|
||||||
|
fieldset[disabled] .btn-danger.focus,
|
||||||
|
.btn-danger.disabled:active,
|
||||||
|
.btn-danger[disabled]:active,
|
||||||
|
fieldset[disabled] .btn-danger:active,
|
||||||
|
.btn-danger.disabled.active,
|
||||||
|
.btn-danger[disabled].active,
|
||||||
|
fieldset[disabled] .btn-danger.active {
|
||||||
|
background-color: #c12e2a;
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.thumbnail,
|
||||||
|
.img-thumbnail {
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.dropdown-menu > li > a:hover,
|
||||||
|
.dropdown-menu > li > a:focus {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||||
|
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
}
|
||||||
|
.dropdown-menu > .active > a,
|
||||||
|
.dropdown-menu > .active > a:hover,
|
||||||
|
.dropdown-menu > .active > a:focus {
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-color: #2e6da4;
|
||||||
|
}
|
||||||
|
.navbar-default {
|
||||||
|
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
|
||||||
|
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.navbar-default .navbar-nav > .open > a,
|
||||||
|
.navbar-default .navbar-nav > .active > a {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
|
||||||
|
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.navbar-brand,
|
||||||
|
.navbar-nav > li > a {
|
||||||
|
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
|
||||||
|
}
|
||||||
|
.navbar-inverse {
|
||||||
|
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
|
||||||
|
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.navbar-inverse .navbar-nav > .open > a,
|
||||||
|
.navbar-inverse .navbar-nav > .active > a {
|
||||||
|
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
|
||||||
|
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||||
|
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.navbar-inverse .navbar-brand,
|
||||||
|
.navbar-inverse .navbar-nav > li > a {
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.navbar-static-top,
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.navbar .navbar-nav .open .dropdown-menu > .active > a,
|
||||||
|
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
|
||||||
|
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||||||
|
color: #fff;
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.alert {
|
||||||
|
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
.alert-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
|
||||||
|
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #b2dba1;
|
||||||
|
}
|
||||||
|
.alert-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
|
||||||
|
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #9acfea;
|
||||||
|
}
|
||||||
|
.alert-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
|
||||||
|
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #f5e79e;
|
||||||
|
}
|
||||||
|
.alert-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
|
||||||
|
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dca7a7;
|
||||||
|
}
|
||||||
|
.progress {
|
||||||
|
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
|
||||||
|
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar {
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-success {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
|
||||||
|
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-info {
|
||||||
|
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
|
||||||
|
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-warning {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
|
||||||
|
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-danger {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
|
||||||
|
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.progress-bar-striped {
|
||||||
|
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||||
|
}
|
||||||
|
.list-group {
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.list-group-item.active,
|
||||||
|
.list-group-item.active:hover,
|
||||||
|
.list-group-item.active:focus {
|
||||||
|
text-shadow: 0 -1px 0 #286090;
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #2b669a;
|
||||||
|
}
|
||||||
|
.list-group-item.active .badge,
|
||||||
|
.list-group-item.active:hover .badge,
|
||||||
|
.list-group-item.active:focus .badge {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
.panel {
|
||||||
|
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
.panel-default > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||||
|
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-primary > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||||
|
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-success > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
|
||||||
|
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-info > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
|
||||||
|
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-warning > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
|
||||||
|
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.panel-danger > .panel-heading {
|
||||||
|
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
|
||||||
|
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
.well {
|
||||||
|
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
|
||||||
|
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border-color: #dcdcdc;
|
||||||
|
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
/*# sourceMappingURL=bootstrap-theme.css.map */
|