form builder

This commit is contained in:
Davide Alberani 2016-06-18 20:01:17 +02:00
parent 6781f06ebe
commit 3541ed8701
42 changed files with 20670 additions and 7 deletions

View file

@ -23,6 +23,18 @@
<span class="input-group-addon min100">{{'Title' | translate}}</span>
<input type="text" class="form-control" placeholder="{{'Title' | translate}}" ng-model="event.title" ng-required="1">
</div>
<div class="input-group input-group-lg top5">
<span class="input-group-addon min100">{{'Tagline' | translate}}</span>
<input type="text" class="form-control" placeholder="{{'Tagline' | translate}}" ng-model="event.tagline">
</div>
<div class="input-group input-group-lg top5">
<span class="input-group-addon min100">{{'Short summary' | translate}}</span>
<input type="text" class="form-control" placeholder="{{'Short summary' | translate}}" ng-model="event.summary">
</div>
<div class="input-group top5">
<span class="input-group-addon min100">{{'Long description' | translate}}</span>
<textarea class="form-control" placeholder="{{'Long description' | translate}}" ng-model="event.description" rows="5"></textarea>
</div>
<div class="input-group top5 well form-horizontal" ng-controller="DatetimePickerCtrl">
<div class="form-group">
@ -56,7 +68,28 @@
</div>
</div>
<div class="input-group input-group-lg top5">
<span class="input-group-addon min100">{{'Where' | translate}}</span>
<input type="text" class="form-control" placeholder="{{'Where' | translate}}" ng-model="event.where">
</div>
<div class="panel panel-info top10">
<div class="panel-heading">
<h1>{{'Registration form' | translate}}</h1>
</div>
<div class="panel-body">
<eda-step-way-easy-form-gen eda-easy-form-generator-model="event.formSchema" eda-save-form-event="saveForm(edaEasyFormGeneratorModel)"></eda-step-way-easy-form-gen>
</div>
</div>
<label></label>
<input type="submit" class="outside-screen" />
<div ng-class="{clearfix: true, alert: true, 'alert-success': !eventForm.$dirty, 'alert-danger': eventForm.$dirty}">
<button type="button" class="btn btn-default pull-right" ng-click="save($event)" ng-disabled="!eventForm.$dirty">
<span class="fa fa-floppy-o vcenter"></span>
{{'save' | translate}}
</button>
</div>
</form>
</div>
</div>

View file

@ -5,17 +5,30 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="/static/js/jquery-2.1.3.min.js"></script>
<script src="/static/js/angular.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/ui-bootstrap-tpls-0.14.3.min.js"></script>
<script src="/static/js/angular-route.min.js"></script>
<script src="/static/js/angular-animate.min.js"></script>
<script src="/static/js/angular-touch.min.js"></script>
<script src="/static/js/angular-resource.min.js"></script>
<script src="/static/js/angular-file-upload.min.js"></script>
<script src="/static/js/ui-bootstrap-tpls-0.14.3.min.js"></script>
<script src="/static/js/angular-file-upload.min.js"></script>
<script src="/static/js/angular-ui-router.min.js"></script>
<script src="/static/js/angular-websocket.js"></script>
<script src="/static/js/angular-translate.min.js"></script>
<script src="/static/js/angular-translate-loader-static-files.min.js"></script>
<script src="/static/js/nya-bs-select.min.js"></script>
<script type="text/javascript" src="/static/js/eda.stepway.min.js"></script>
<script type="text/javascript" src="/static/js/textAngular-rangy.min.js"></script>
<script type="text/javascript" src="/static/js/textAngular-sanitize.min.js"></script>
<script type="text/javascript" src="/static/js/textAngular.min.js"></script>
<script type="text/javascript" src="/static/js/lodash.min.js"></script>
<script type="text/javascript" src="/static/js/toaster.min.js"></script>
<script type="text/javascript" src="/static/js/api-check.min.js"></script>
<script type="text/javascript" src="/static/js/formly.min.js"></script>
<script type="text/javascript" src="/static/js/angular-formly-templates-bootstrap.min.js"></script>
<script src="/static/js/eventman.js"></script>
<script src="/js/app.js"></script>
<script src="/js/i18n.js"></script>
@ -23,13 +36,19 @@
<script src="/js/directives.js"></script>
<script src="/js/services.js"></script>
<script src="/js/controllers.js"></script>
<link href="/static/css/normalize.css" rel="stylesheet">
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/css/animate.min.css" rel="stylesheet">
<link href="/static/css/textAngular.css" rel="stylesheet">
<link href="/static/css/toaster.min.css" rel="stylesheet">
<link href="/static/css/normalize.css" rel="stylesheet">
<link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
<link href="/static/css/font-awesome-4.3.0/css/font-awesome.min.css" rel="stylesheet">
<link href="/static/css/eda.stepway.min.css" rel="stylesheet">
<link href="/static/css/nya-bs-select.min.css" rel="stylesheet">
<link href="/static/css/eventman.css" rel="stylesheet">
</head>
<!--
Copyright 2015-2016 Davide Alberani <da@erlug.linux.it>
RaspiBO <info@raspibo.org>

View file

@ -23,7 +23,8 @@ var eventManApp = angular.module('eventManApp', [
'ui.router',
'pascalprecht.translate',
'angularFileUpload',
'angular-websocket'
'angular-websocket',
'eda.easyformGen.stepway'
]);

View file

@ -95,8 +95,8 @@ eventManControllers.controller('EventsListCtrl', ['$scope', 'Event', '$modal', '
);
eventManControllers.controller('EventDetailsCtrl', ['$scope', '$state', 'Event', 'EventTicket', 'Person', 'EventUpdates', '$stateParams', 'Setting', '$log', '$translate', '$rootScope',
function ($scope, $state, Event, EventTicket, Person, EventUpdates, $stateParams, Setting, $log, $translate, $rootScope) {
eventManControllers.controller('EventDetailsCtrl', ['$scope', '$state', 'Event', 'EventTicket', 'Person', 'EventUpdates', '$stateParams', 'Setting', '$log', '$translate', '$rootScope', 'easyFormSteWayConfig',
function ($scope, $state, Event, EventTicket, Person, EventUpdates, $stateParams, Setting, $log, $translate, $rootScope, easyFormSteWayConfig) {
$scope.personsOrder = ["name", "surname"];
$scope.countAttendees = 0;
$scope.message = {};
@ -106,6 +106,8 @@ eventManControllers.controller('EventDetailsCtrl', ['$scope', '$state', 'Event',
$scope.newTicket = $state.is('event.ticket.new');
$scope.event.formSchema = {};
if ($stateParams.id) {
$scope.event = Event.get($stateParams, function() {
if ($scope.newTicket) {
@ -348,6 +350,11 @@ eventManControllers.controller('EventDetailsCtrl', ['$scope', '$state', 'Event',
});
};
$scope.saveForm = function(easyFormGeneratorModel) {
$scope.event.formSchema = easyFormGeneratorModel;
$scope.save();
};
$scope.showMessage = function(cfg) {
$scope.message.show(cfg);
};

6
static/css/animate.min.css vendored Executable file

File diff suppressed because one or more lines are too long

1
static/css/dropzone.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,862 @@
/*!
* easyFormGenerator drag and drop way version
* Version 1.2.0
* Author : Erwan Datin (MacKentoch)
*Link: https://github.com/MacKentoch/easyFormGenerator
* License : 2015 MIT
*/
/*=========================================================
colors const
===========================================================*/
/*=========================================================
fonts const
===========================================================*/
/*=========================================================
common
===========================================================*/
/*=========================================================
common
===========================================================*/
body {
padding-top: 50px;
padding-bottom: 20px;
height: 100%;
background-color: #F2F2F2;
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.margintop60px {
margin-top: 80px; }
.margintop120px {
margin-top: 120px; }
.vAlignMiddle {
vertical-align: middle; }
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important; }
/*=========================================================
bootstrap overrides
===========================================================*/
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
background-color: #0d87e9;
border-color: #2196f3; }
/*correction bug sur theme bootstrap journal*/
.modal-backdrop {
z-index: -1; }
.navbar-right {
margin-right: 20px; }
textarea, textarea.form-control, input.form-control,
input[type=text], input[type=password], input[type=email],
input[type=number], [type=text].form-control, [type=password].form-control,
[type=email].form-control, [type=tel].form-control, [contenteditable].form-control {
font-size: 13px; }
select, select.form-control {
font-size: 13px; }
/*container to 100%*/
@media (min-width: 1200px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 768px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 992px) {
.container {
width: 100%; } }
.container-fluid {
margin-right: auto;
margin-left: auto; }
.container-fluid padding {
left: 30px;
right: 30px; }
.panel-default > .panel-heading {
color: #212121;
background-color: #fff;
border-color: #eee; }
.navbar-nav > li > a {
line-height: 30px; }
.navbar-default .navbar-brand {
line-height: initial; }
.panel-heading {
background-color: none;
border-bottom: solid 1px #eee; }
.navBtnGroup {
padding-top: 20px;
padding-bottom: 22px;
padding-right: 15px;
padding-left: 15px; }
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
vertical-align: middle; }
a:hover {
color: #fff; }
a:focus {
color: #fff; }
/*Forms setup*/
.form-control {
border-radius: 0;
box-shadow: none;
height: auto; }
.float-label {
font-size: 10px; }
.socialIcon {
font-size: 32px; }
.socialIcon:hover {
color: #F2F2F2; }
input[type="text"].form-control,
input[type="search"].form-control {
border: none;
border-bottom: 1px dotted #CFCFCF; }
textarea {
border: 1px dotted #CFCFCF !important;
height: 130px !important; }
/*Content Container*/
.content-container {
background-color: #fff;
padding: 35px 20px;
margin-bottom: 20px; }
h1.content-title {
font-size: 32px;
font-weight: 300;
text-align: center;
margin-top: 0;
margin-bottom: 20px;
font-family: "Open Sans", sans-serif !important; }
/*paper theme bootstrap*/
.form-control {
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
display: block;
width: 100%;
height: 39px;
padding: 8px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #777777;
background-color: #ffffff;
background-image: none;
border: 1px solid #cccccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
.form-control::-moz-placeholder {
color: #999999;
opacity: 1; }
.form-control:-ms-input-placeholder {
color: #999999; }
.form-control::-webkit-input-placeholder {
color: #999999; }
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eeeeee;
opacity: 1; }
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed; }
textarea.form-control {
height: auto; }
.fakeControl[disabled] {
background-color: #fff;
opacity: 1; }
.fakeControl[disabled] {
cursor: all-scroll; }
.radio input[type=radio].fakeCheck {
cursor: all-scroll; }
.checkbox input[type=checkbox].fakeCheck {
cursor: all-scroll; }
label.fakeCheck {
cursor: all-scroll; }
/* animation ng-repeat
easy customize animation from here : http://www.nganimate.org/angularjs/ng-repeat/yo-yo-css3-keyframes-animation*/
.animate-enter {
-webkit-animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@-webkit-keyframes enter {
from {
opacity: 0;
height: 0px;
left: -70px; }
75% {
left: 15px; }
to {
opacity: 1;
height: 30px;
left: 0px; } }
@keyframes enter {
from {
opacity: 0;
height: 0px;
left: -70px; }
75% {
left: 15px; }
to {
opacity: 1;
height: 30px;
left: 0px; } }
.animate-leave {
-webkit-animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@-webkit-keyframes leave {
to {
opacity: 0;
height: 0px;
left: -70px; }
25% {
left: 15px; }
from {
opacity: 1;
height: 30px;
left: 0px; } }
@keyframes leave {
to {
opacity: 0;
height: 0px;
left: -70px; }
25% {
left: 15px; }
from {
opacity: 1;
height: 30px;
left: 0px; } }
/* td table in myprofile */
.tdCommun, .td40, .td60 {
height: 75px;
vertical-align: none; }
.td40 {
width: 40%; }
.td60 {
width: 60%; }
.table-user-information > thead > tr > th,
.table-user-information > tbody > tr > th,
.table-user-information > tfoot > tr > th,
.table-user-information > thead > tr > td,
.table-user-information > tbody > tr > td,
.table-user-information > tfoot > tr > td {
vertical-align: middle; }
/*=========================================================
ANGULAR ANIMATIONS (in pair on animate.css)
===========================================================*/
/* animation on ng-switch */
.switchAngularFadeIn .ng-enter {
-webkit-animation: fadeIn 1s;
-moz-animation: fadeIn 1s;
-ms-animation: fadeIn 1s;
animation: fadeIn 1s; }
/*=========================================================
wfEdit
===========================================================*/
#pageWfEdit {
margin-top: 40px;
margin-/* right:2%;
left:2%; */
padding-top: 30px;
padding-bottom: 30px;
background-color: #F2F2F2;
/* border-top: solid 3px white;
border-bottom: solid 3px white; */ }
.lineCommandButtons {
padding-bottom: 25px; }
.addNewLine {
font-size: 24px;
vertical-align: middle;
color: #666666; }
#editor {
margin-top: 0px;
margin-bottom: 0px;
height: 150px;
background-color: #52B3D9;
border-bottom: solid 1px #2C3E50; }
#editor-content {
/* padding-top: 25px; */
/* padding-bottom: 25px; */
text-align: center;
color: white;
font-size: 13px; }
#preview {
margin-top: 0px;
margin-bottom: 0px;
/* background-color: #E4F1FE; */
border: solid 1 px #2C3E50;
-moz-box-shadow: 0px 0px 10px 0px #ddd;
-webkit-box-shadow: 0px 10px 5px 0px #ddd;
-o-box-shadow: 0px 0px 10px 0px #ddd;
box-shadow: 0px 0px 10px 0px #ddd;
filter: progid:DXImageTransform.Microsoft.Shadow(color=#ddd, Direction=NaN, Strength=10); }
#preview-content {
background-color: #FFF;
padding-bottom: 25px;
/*text-align: center;*/
color: black;
/*font-size: 13px;*/ }
#commandPanel {
padding-top: 25px;
padding-bottom: 25px; }
/* #commandPanel.affix {
position: fixed;
top: 0;
width:25%;
margin-top: -45px;
} */
#visualPanel {
padding-top: 25px;
padding-bottom: 25px; }
.customPagerButton {
width: 100px; }
.numberOfColumnsLabel {
font-size: 32px;
text-align: center;
padding-top: 25%;
padding-bottom: 25%;
font-weight: bold;
text-align: center;
color: #666666; }
.btnMinusColumns {
margin-top: 10px; }
.btnAddColumns {
margin-top: 10px; }
.numberOfcolumsText {
color: #666666; }
.greyText {
color: #666666; }
.blackText {
color: #000; }
/*=========================================================
ANIMATE NG-SWITCH
=========================================================*/
.animate-switch-container {
position: relative;
background: white;
border-top: solid 1px #ECECEC;
border-bottom: solid 1px #ECECEC;
overflow: scroll; }
.animate-switch-container .well {
background-color: #89C4F4;
margin-bottom: 0px;
color: #ECECEC; }
.linesList {
margin-top: 5px; }
/*switch 1 : move top*/
.animate-switch {
padding: 10px; }
.animate-switch.ng-animate {
-webkit-transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0; }
.animate-switch.ng-leave.ng-leave-active,
.animate-switch.ng-enter {
left: 0px;
top: -500px;
opacity: 0; }
.animate-switch.ng-leave,
.animate-switch.ng-enter.ng-enter-active {
left: 0px;
top: 0px;
opacity: 0.8; }
/*=========================================================
STEP INDICATOR
=========================================================*/
.stepwizardTopmargin {
margin-top: 25px; }
.stepwizard-step p {
margin-top: 10px;
color: #666666; }
.stepwizard-row {
display: table-row; }
.stepwizard {
display: table;
width: 100%;
position: relative; }
.stepwizard-step button[disabled] {
opacity: 1 !important;
filter: alpha(opacity=100) !important; }
.stepwizard-row:before {
top: 14px;
bottom: 0;
position: absolute;
content: " ";
width: 100%;
height: 1px;
background-color: #ccc;
z-order: 0; }
.stepwizard-step {
display: table-cell;
text-align: center;
position: relative; }
.btn-circle {
width: 30px;
height: 30px;
text-align: center;
padding: 6px 0;
font-size: 12px;
line-height: 1.428571429;
border-radius: 15px; }
.panelDebugScope {
color: #000; }
/*=========================================================
Modal add control
=========================================================*/
.texteRouge {
color: #CF000F; }
.editPropertiesLabel {
margin-top: 6px; }
.textControlLabel {
color: #000; }
.marginTopFivepixels {
margin-top: 5px; }
.marginTopTenpixels {
margin-top: 5px; }
.checkboxCssCorrection {
font-size: 4px; }
.noGroupText {
margin-bottom: 0px; }
.nya-bs-select {
margin-bottom: 16px; }
.ta-scroll-window {
margin-bottom: 16px; }
.formly-field-checkbox {
margin-top: 28px; }
#inputAddNewRadioOption {
margin-bottom: 20px; }
#inputAddNewBasicOption {
margin-bottom: 20px; }
#inputAddNewGroupedOption {
margin-bottom: 20px; }
#inputAddNewGroupGroupedOption {
margin-bottom: 20px; }
.editGroupedSelectnyaSelect {
margin-bottom: 0px; }
.heading-preview {
cursor: pointer; }
/*=========================================================
specific drag and drop test (will change or be deleted)
===========================================================*/
/***************************** pageSlide directive css *****************************/
/* Needed for hiding crollbars when pushing */
html {
overflow-x: hidden; }
.ng-pageslide {
background: #eee;
box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
-moz-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
-webkit-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7); }
#controlEditLeftPanel {
margin-top: 95px;
padding-top: 20px;
padding-bottom: 20px;
padding-right: 10px;
padding-left: 10px;
height: 85%;
overflow-y: scroll; }
.separator10pixel {
margin-top: 5px;
margin-bottom: 5px;
height: 25px; }
.panelControlWidth {
width: 45%; }
/***************************** Required styles *****************************/
/**
* For the correct positioning of the placeholder element, the dnd-list and
* it's children must have position: relative
*/
.advancedDemo ul[dnd-list],
.advancedDemo ul[dnd-list] > li {
position: relative;
border: solid 1px #F1F1F1; }
/***************************** Dropzone Styling *****************************/
/**
* The dnd-list should always have a min-height,
* otherwise you can't drop to it once it's empty
*/
.advancedDemo .dropzone ul[dnd-list] {
min-height: 42px;
margin: 0px;
padding-left: 0px; }
/**
* The dnd-lists's child elements currently MUST have
* position: relative. Otherwise we can not determine
* whether the mouse pointer is in the upper or lower
* half of the element we are dragging over. In other
* browsers we can use event.offsetY for this.
*/
.advancedDemo .dropzone li {
display: block; }
/**
* Reduce opacity of elements during the drag operation. This allows the user
* to see where he is dropping his element, even if the element is huge. The
* .dndDragging class is automatically set during the drag operation.
*/
.advancedDemo .dropzone .dndDragging {
opacity: 0.7;
border: 2px dotted #000; }
/**
* The dndDraggingSource class will be applied to the source element of a drag
* operation. It makes sense to hide it to give the user the feeling that he's
* actually moving it. Note that the source element has also .dndDragging class.
*/
.advancedDemo .dropzone .dndDraggingSource {
display: none; }
/**
* An element with .dndPlaceholder class will be added as child of the dnd-list
* while the user is dragging over it.
*/
.advancedDemo .dropzone .dndPlaceholder {
background-color: #ddd !important;
min-height: 155px;
display: block;
position: relative;
-moz-box-shadow: inset 0px 0px 5px 0px #343434;
-webkit-box-shadow: inset 0px 0px 5px 0px #343434;
-o-box-shadow: inset 0px 0px 5px 0px #343434;
box-shadow: inset 0px 0px 5px 0px #343434;
filter: progid:DXImageTransform.Microsoft.Shadow(color=#343434, Direction=NaN, Strength=5); }
/***************************** Element type specific styles *****************************/
.advancedDemo .dropzone .itemlist {
min-height: 115px !important; }
ul.itemlist.ng-scope {
border: none; }
.effect1ForDragDropItem, #itemContent {
-webkit-box-shadow: 0 10px 6px -6px #777;
-moz-box-shadow: 0 10px 6px -6px #777;
box-shadow: 0 10px 6px -6px #777;
min-height: 115px; }
.advancedDemo .dropzone .itemlist > li {
border: none;
min-width: 180px;
border-radius: .25em;
float: left;
font-weight: 700;
height: 135px; }
#itemContent {
background-color: #fff;
border: 2px outset #0d87e9;
border-radius: .25em;
color: #fff;
float: left;
font-weight: 700;
height: 115px;
margin: 5px;
padding: 3px;
text-align: center;
width: 100%;
cursor: all-scroll; }
.dragItemtextarea {
height: 60px; }
textarea {
border: 1px dotted #CFCFCF !important;
height: 50px !important; }
.advancedDemo .dropzone .container-element {
margin: 10px; }
.isCollapsableZone {
cursor: pointer; }
.buttonHeaderAddNewLine {
margin-top: 15px;
margin-bottom: 0px; }
.buttonCloneLineHidden {
visibility: hidden; }
.buttonCloseLine {
margin-top: -10px;
margin-right: -10px;
border-radius: 50%;
height: 45px; }
.interligne {
padding-bottom: 10px; }
.confirmLineDelete {
margin-top: 0;
margin-bottom: 0;
background-color: #F5F5F5;
opacity: 1.0;
-webkit-animation: shake 1.3s infinite;
-moz-animation: shake 1.3s infinite;
-ms-animation: shake 1.3s infinite;
-o-animation: shake 1.3s infinite;
animation: shake 1.3s infinite; }
.demoddDatepicker {
padding-left: 0;
margin-left: 0; }
.selectfordemo {
margin-top: 30px; }
/*=========================================================
animation shake
===========================================================*/
@-webkit-keyframes shake {
0%, 100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0); }
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0); }
20%, 40%, 60%, 80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0); } }
@keyframes shake {
0%, 100% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0); }
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0); }
20%, 40%, 60%, 80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0); } }
.shake {
-webkit-animation-name: shake;
animation-name: shake; }
.previewControlinItem {
margin-top: 2%;
background-color: #fff;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 10px;
padding-right: 10px;
border-radius: 5px;
color: #F1F1F1;
font-size: 18px; }
.vertical-line {
border-left: thick solid #000; }
/*=========================================================
animation glyphicon rotate
===========================================================*/
.gly-spin {
-webkit-animation: spin 2s infinite linear;
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
animation: spin 2s infinite linear; }
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg); }
100% {
-moz-transform: rotate(359deg); } }
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg); }
100% {
-webkit-transform: rotate(359deg); } }
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg); }
100% {
-o-transform: rotate(359deg); } }
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg); } }
.gly-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg); }
.gly-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg); }
.gly-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-ms-transform: rotate(270deg);
-o-transform: rotate(270deg);
transform: rotate(270deg); }
.gly-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-webkit-transform: scale(-1, 1);
-moz-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
transform: scale(-1, 1); }
.gly-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-webkit-transform: scale(1, -1);
-moz-transform: scale(1, -1);
-ms-transform: scale(1, -1);
-o-transform: scale(1, -1);
transform: scale(1, -1); }
.rightClickCtrl {
opacity: 1.0;
-webkit-transition: opacity .3s ease-in;
-moz-transition: opacity .3s ease-in;
-o-transition: opacity .3s ease-in;
transition: opacity .3s ease-in; }
.rightClickCtrlSelected {
opacity: 0.5; }
/*=========================================================
colors const
===========================================================*/
/*=========================================================
fonts const
===========================================================*/
/*=========================================================
common
===========================================================*/

10
static/css/eda.dragdropway.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,70 @@
/*!
* easyFormViewer
* Version 1.2.0
* Author : Erwan Datin (MacKentoch)
*Link: https://github.com/MacKentoch/easyFormGenerator
* License : 2015 MIT
*/
/*=========================================================
fonts const
===========================================================*/
body {
margin: 20px;
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.ta-scroll-window {
margin-bottom: 16px; }
/**
* formly fields css
*/
.formly-field {
margin-bottom: 20px; }
.validation {
position: absolute;
font-size: .8em;
color: #a94442; }
.formly-template-wrapper {
position: relative; }
.error-messages {
position: relative; }
.error-messages, .message, .validation {
opacity: 1;
transition: .3s linear all; }
.message {
font-size: .8em;
position: absolute;
width: 100%;
color: #a94442;
margin-top: 2px; }
.error-messages.ng-enter.ng-enter-active,
.message.ng-enter.ng-enter-active,
.validation.ng-enter.ng-enter-active {
opacity: 1; }
.error-messages.ng-enter,
.message.ng-enter,
.validation.ng-enter {
opacity: 0; }
.error-messages.ng-leave,
.message.ng-leave,
.validation.ng-leave {
opacity: 1; }
.error-messages.ng-leave-active,
.message.ng-leave-active,
.validation.ng-leave-active {
opacity: 0; }
/*=========================================================
fonts const
===========================================================*/

9
static/css/eda.easyFormViewer.min.css vendored Normal file
View file

@ -0,0 +1,9 @@
/*!
* easyFormViewer
* Version 1.2.0
* Author : Erwan Datin (MacKentoch)
*Link: https://github.com/MacKentoch/easyFormGenerator
* License : 2015 MIT
*/
.message,.validation{font-size:.8em;color:#a94442}body{margin:20px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif}.ta-scroll-window{margin-bottom:16px}.formly-field{margin-bottom:20px}.validation{position:absolute}.error-messages,.formly-template-wrapper{position:relative}.error-messages,.message,.validation{opacity:1;transition:.3s linear all}.message{position:absolute;width:100%;margin-top:2px}.error-messages.ng-enter.ng-enter-active,.message.ng-enter.ng-enter-active,.validation.ng-enter.ng-enter-active{opacity:1}.error-messages.ng-enter,.message.ng-enter,.validation.ng-enter{opacity:0}.error-messages.ng-leave,.message.ng-leave,.validation.ng-leave{opacity:1}.error-messages.ng-leave-active,.message.ng-leave-active,.validation.ng-leave-active{opacity:0}

591
static/css/eda.stepway.css Executable file
View file

@ -0,0 +1,591 @@
/*!
* easyFormGenerator step way version
* Version 1.2.1-beta1
* Author : Erwan Datin (MacKentoch)
*Link: https://github.com/MacKentoch/easyFormGenerator
* License : 2015 MIT
*/
/*=========================================================
colors const
===========================================================*/
/*=========================================================
fonts const
===========================================================*/
/*=========================================================
common
===========================================================*/
/*=========================================================
common
===========================================================*/
body {
padding-top: 50px;
padding-bottom: 20px;
height: 100%;
background-color: #F2F2F2;
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.margintop60px {
margin-top: 80px; }
.margintop120px {
margin-top: 120px; }
.vAlignMiddle {
vertical-align: middle; }
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important; }
/*=========================================================
bootstrap overrides
===========================================================*/
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
background-color: #0d87e9;
border-color: #2196f3; }
/*correction bug sur theme bootstrap journal*/
.modal-backdrop {
z-index: -1; }
.navbar-right {
margin-right: 20px; }
textarea, textarea.form-control, input.form-control,
input[type=text], input[type=password], input[type=email],
input[type=number], [type=text].form-control, [type=password].form-control,
[type=email].form-control, [type=tel].form-control, [contenteditable].form-control {
font-size: 13px; }
select, select.form-control {
font-size: 13px; }
/*container to 100%*/
@media (min-width: 1200px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 768px) {
.container {
width: 100%;
margin-right: 20px; } }
@media (min-width: 992px) {
.container {
width: 100%; } }
.container-fluid {
margin-right: auto;
margin-left: auto; }
.container-fluid padding {
left: 30px;
right: 30px; }
.panel-default > .panel-heading {
color: #212121;
background-color: #fff;
border-color: #eee; }
.navbar-nav > li > a {
line-height: 30px; }
.navbar-default .navbar-brand {
line-height: initial; }
.panel-heading {
background-color: none;
border-bottom: solid 1px #eee; }
.navBtnGroup {
padding-top: 20px;
padding-bottom: 22px;
padding-right: 15px;
padding-left: 15px; }
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
vertical-align: middle; }
a:hover {
color: #fff; }
a:focus {
color: #fff; }
/*Forms setup*/
.form-control {
border-radius: 0;
box-shadow: none;
height: auto; }
.float-label {
font-size: 10px; }
.socialIcon {
font-size: 32px; }
.socialIcon:hover {
color: #F2F2F2; }
input[type="text"].form-control,
input[type="search"].form-control {
border: none;
border-bottom: 1px dotted #CFCFCF; }
textarea {
border: 1px dotted #CFCFCF !important;
height: 130px !important; }
/*Content Container*/
.content-container {
background-color: #fff;
padding: 35px 20px;
margin-bottom: 20px; }
h1.content-title {
font-size: 32px;
font-weight: 300;
text-align: center;
margin-top: 0;
margin-bottom: 20px;
font-family: "Open Sans", sans-serif !important; }
/*paper them bootstrap*/
.form-control {
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
display: block;
width: 100%;
height: 39px;
padding: 8px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #777777;
background-color: #ffffff;
background-image: none;
border: 1px solid #cccccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
.form-control::-moz-placeholder {
color: #999999;
opacity: 1; }
.form-control:-ms-input-placeholder {
color: #999999; }
.form-control::-webkit-input-placeholder {
color: #999999; }
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eeeeee;
opacity: 1; }
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed; }
textarea.form-control {
height: auto; }
/* animation ng-repeat in mailbox
easy customize animation from here : http://www.nganimate.org/angularjs/ng-repeat/yo-yo-css3-keyframes-animation*/
.animate-enter {
-webkit-animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@-webkit-keyframes enter {
from {
opacity: 0;
height: 0px;
left: -70px; }
75% {
left: 15px; }
to {
opacity: 1;
height: 30px;
left: 0px; } }
@keyframes enter {
from {
opacity: 0;
height: 0px;
left: -70px; }
75% {
left: 15px; }
to {
opacity: 1;
height: 30px;
left: 0px; } }
.animate-leave {
-webkit-animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
display: block;
position: relative; }
@-webkit-keyframes leave {
to {
opacity: 0;
height: 0px;
left: -70px; }
25% {
left: 15px; }
from {
opacity: 1;
height: 30px;
left: 0px; } }
@keyframes leave {
to {
opacity: 0;
height: 0px;
left: -70px; }
25% {
left: 15px; }
from {
opacity: 1;
height: 30px;
left: 0px; } }
/* td table in myprofile */
.tdCommun, .td40, .td60 {
height: 75px;
vertical-align: none; }
.td40 {
width: 40%; }
.td60 {
width: 60%; }
.table-user-information > thead > tr > th,
.table-user-information > tbody > tr > th,
.table-user-information > tfoot > tr > th,
.table-user-information > thead > tr > td,
.table-user-information > tbody > tr > td,
.table-user-information > tfoot > tr > td {
vertical-align: middle; }
/*=========================================================
ANGULAR ANIMATIONS (in pair on animate.css)
===========================================================*/
/* animation on ng-switch */
.switchAngularFadeIn .ng-enter {
-webkit-animation: fadeIn 1s;
-moz-animation: fadeIn 1s;
-ms-animation: fadeIn 1s;
animation: fadeIn 1s; }
/*=========================================================
wfEdit
===========================================================*/
#pageWfEdit {
margin-top: 40px;
margin-/* right:2%;
left:2%; */
padding-top: 30px;
padding-bottom: 30px;
background-color: #F2F2F2;
/* border-top: solid 3px white;
border-bottom: solid 3px white; */ }
.lineCommandButtons {
padding-bottom: 25px; }
.addNewLine {
font-size: 24px;
vertical-align: middle;
color: #666666; }
#editor {
margin-top: 0px;
margin-bottom: 0px;
height: 150px;
background-color: #52B3D9;
border-bottom: solid 1px #2C3E50; }
#editor-content {
/* padding-top: 25px; */
/* padding-bottom: 25px; */
text-align: center;
color: white;
font-size: 13px; }
#preview {
margin-top: 0px;
margin-bottom: 0px;
/* background-color: #E4F1FE; */
border: solid 1 px #2C3E50;
-moz-box-shadow: 0px 0px 10px 0px #ddd;
-webkit-box-shadow: 0px 10px 5px 0px #ddd;
-o-box-shadow: 0px 0px 10px 0px #ddd;
box-shadow: 0px 0px 10px 0px #ddd;
filter: progid:DXImageTransform.Microsoft.Shadow(color=#ddd, Direction=NaN, Strength=10); }
#preview-content {
background-color: #FFF;
padding-bottom: 25px;
/*text-align: center;*/
color: black;
/*font-size: 13px;*/ }
#commandPanel {
padding-top: 25px;
padding-bottom: 25px; }
/* #commandPanel.affix {
position: fixed;
top: 0;
width:25%;
margin-top: -45px;
} */
#visualPanel {
padding-top: 25px;
padding-bottom: 25px; }
.customPagerButton {
width: 145px;
margin-left: 2px;
margin-right: 2px; }
.numberOfColumnsLabel {
font-size: 32px;
text-align: center;
padding-top: 25%;
padding-bottom: 25%;
font-weight: bold;
text-align: center;
color: #666666; }
.btnMinusColumns {
margin-top: 10px; }
.btnAddColumns {
margin-top: 10px; }
.numberOfcolumsText {
color: #666666; }
.greyText {
color: #666666; }
.blackText {
color: #000; }
/*=========================================================
ANIMATE NG-SWITCH
=========================================================*/
.animate-switch-container {
position: relative;
background: white;
border-top: solid 1px #ECECEC;
border-bottom: solid 1px #ECECEC;
height: 750px;
overflow: scroll; }
.animate-switch-container .well {
background-color: #89C4F4;
margin-bottom: 0px;
color: #ECECEC; }
.linesList {
margin-top: 5px; }
/*switch 1 : move top*/
.animate-switch {
padding: 10px; }
.animate-switch.ng-animate {
-webkit-transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0; }
.animate-switch.ng-leave.ng-leave-active,
.animate-switch.ng-enter {
left: 0px;
top: -500px;
opacity: 0; }
.animate-switch.ng-leave,
.animate-switch.ng-enter.ng-enter-active {
left: 0px;
top: 0px;
opacity: 0.8; }
/*=========================================================
STEP INDICATOR
=========================================================*/
.stepwizardTopmargin {
margin-top: 25px; }
.stepwizard-step p {
margin-top: 10px;
color: #666666; }
.stepwizard-row {
display: table-row; }
.stepwizard {
display: table;
width: 100%;
position: relative; }
.stepwizard-step button[disabled] {
opacity: 1 !important;
filter: alpha(opacity=100) !important; }
.stepwizard-row:before {
top: 14px;
bottom: 0;
position: absolute;
content: " ";
width: 100%;
height: 1px;
background-color: #ccc;
z-order: 0; }
.stepwizard-step {
display: table-cell;
text-align: center;
position: relative; }
.btn-circle {
width: 30px;
height: 30px;
text-align: center;
padding: 6px 0;
font-size: 12px;
line-height: 1.428571429;
border-radius: 15px; }
.panelDebugScope {
color: #000; }
/*=========================================================
Modal add control
=========================================================*/
.texteRouge {
color: #CF000F; }
.editPropertiesLabel {
margin-top: 6px; }
.textControlLabel {
color: #000; }
.marginTopFivepixels {
margin-top: 5px; }
.marginTopTenpixels {
margin-top: 5px; }
.checkboxCssCorrection {
font-size: 4px; }
.noGroupText {
margin-bottom: 0px; }
.nya-bs-select {
margin-bottom: 16px; }
.ta-scroll-window {
margin-bottom: 16px; }
.formly-field-checkbox {
margin-top: 28px; }
#inputAddNewRadioOption {
margin-bottom: 20px; }
#inputAddNewBasicOption {
margin-bottom: 20px; }
#inputAddNewGroupedOption {
margin-bottom: 20px; }
#inputAddNewGroupGroupedOption {
margin-bottom: 20px; }
.editGroupedSelectnyaSelect {
margin-bottom: 0px; }
/**
* formly fiedl css
*/
.formly-field {
margin-bottom: 20px; }
.validation {
position: absolute;
font-size: .8em;
color: #a94442; }
.formly-template-wrapper {
position: relative; }
.error-messages {
position: relative; }
.error-messages, .message, .validation {
opacity: 1;
transition: .3s linear all; }
.message {
font-size: .8em;
position: absolute;
width: 100%;
color: #a94442;
margin-top: 2px; }
.error-messages.ng-enter.ng-enter-active,
.message.ng-enter.ng-enter-active,
.validation.ng-enter.ng-enter-active {
opacity: 1; }
.error-messages.ng-enter,
.message.ng-enter,
.validation.ng-enter {
opacity: 0; }
.error-messages.ng-leave,
.message.ng-leave,
.validation.ng-leave {
opacity: 1; }
.error-messages.ng-leave-active,
.message.ng-leave-active,
.validation.ng-leave-active {
opacity: 0; }
/*=========================================================
colors const
===========================================================*/
/*=========================================================
fonts const
===========================================================*/
/*=========================================================
common
===========================================================*/

10
static/css/eda.stepway.min.css vendored Executable file
View file

@ -0,0 +1,10 @@
/*!
* easyFormGenerator step way version
* Version 1.2.1-beta1
* Author : Erwan Datin (MacKentoch)
*Link: https://github.com/MacKentoch/easyFormGenerator
* License : 2015 MIT
*/
.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th,.vAlignMiddle{vertical-align:middle}body{padding-top:50px;padding-bottom:20px;height:100%;background-color:#F2F2F2;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif}.margintop60px{margin-top:80px}.margintop120px{margin-top:120px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#0d87e9;border-color:#2196f3}.modal-backdrop{z-index:-1}.navbar-right{margin-right:20px}[contenteditable].form-control,[type=email].form-control,[type=password].form-control,[type=tel].form-control,[type=text].form-control,input.form-control,input[type=email],input[type=number],input[type=password],input[type=text],select,select.form-control,textarea,textarea.form-control{font-size:13px}@media (min-width:1200px){.container{width:100%;margin-right:20px}}@media (min-width:768px){.container{width:100%;margin-right:20px}}@media (min-width:992px){.container{width:100%}}.container-fluid{margin-right:auto;margin-left:auto}.container-fluid padding{left:30px;right:30px}.panel-default>.panel-heading{color:#212121;background-color:#fff;border-color:#eee}.navbar-nav>li>a{line-height:30px}.navbar-default .navbar-brand{line-height:initial}.panel-heading{background-color:none;border-bottom:solid 1px #eee}.navBtnGroup{padding:20px 15px 22px}a:focus,a:hover{color:#fff}.float-label{font-size:10px}.socialIcon{font-size:32px}.socialIcon:hover{color:#F2F2F2}input[type=text].form-control,input[type=search].form-control{border:none;border-bottom:1px dotted #CFCFCF}textarea{border:1px dotted #CFCFCF!important;height:130px!important}.content-container{background-color:#fff;padding:35px 20px;margin-bottom:20px}h1.content-title{font-size:32px;font-weight:300;text-align:center;margin-top:0;margin-bottom:20px;font-family:"Open Sans",sans-serif!important}.form-control{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;display:block;width:100%;height:39px;padding:8px 12px;font-size:13px;line-height:1.42857143;color:#777;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}.animate-enter{-webkit-animation:enter 600ms cubic-bezier(.445,.05,.55,.95);animation:enter 600ms cubic-bezier(.445,.05,.55,.95);display:block;position:relative}@-webkit-keyframes enter{from{opacity:0;height:0;left:-70px}75%{left:15px}to{opacity:1;height:30px;left:0}}@keyframes enter{from{opacity:0;height:0;left:-70px}75%{left:15px}to{opacity:1;height:30px;left:0}}.animate-leave{-webkit-animation:leave 600ms cubic-bezier(.445,.05,.55,.95);animation:leave 600ms cubic-bezier(.445,.05,.55,.95);display:block;position:relative}@-webkit-keyframes leave{to{opacity:0;height:0;left:-70px}25%{left:15px}from{opacity:1;height:30px;left:0}}@keyframes leave{to{opacity:0;height:0;left:-70px}25%{left:15px}from{opacity:1;height:30px;left:0}}.td40,.td60,.tdCommun{height:75px;vertical-align:none}.addNewLine,.table-user-information>tbody>tr>td,.table-user-information>tbody>tr>th,.table-user-information>tfoot>tr>td,.table-user-information>tfoot>tr>th,.table-user-information>thead>tr>td,.table-user-information>thead>tr>th{vertical-align:middle}.td40{width:40%}.td60{width:60%}.switchAngularFadeIn .ng-enter{-webkit-animation:fadeIn 1s;-moz-animation:fadeIn 1s;-ms-animation:fadeIn 1s;animation:fadeIn 1s}#pageWfEdit{margin-top:40px;margin-
padding-top:30px;padding-bottom:30px;background-color:#F2F2F2}#preview-content,.lineCommandButtons{padding-bottom:25px}#editor,#preview{margin-bottom:0;margin-top:0}.addNewLine{font-size:24px;color:#666}#editor{height:150px;background-color:#52B3D9;border-bottom:solid 1px #2C3E50}#editor-content{text-align:center;color:#fff;font-size:13px}#preview{border:1 solid px;-moz-box-shadow:0 0 10px 0 #ddd;-webkit-box-shadow:0 10px 5px 0 #ddd;-o-box-shadow:0 0 10px 0 #ddd;box-shadow:0 0 10px 0 #ddd;filter:progid:DXImageTransform.Microsoft.Shadow(color=#ddd, Direction=NaN, Strength=10)}#preview-content{background-color:#FFF;color:#000}#commandPanel,#visualPanel{padding-top:25px;padding-bottom:25px}.customPagerButton{width:145px;margin-left:2px;margin-right:2px}.numberOfColumnsLabel{font-size:32px;padding-top:25%;padding-bottom:25%;font-weight:700;text-align:center;color:#666}.btnAddColumns,.btnMinusColumns{margin-top:10px}.greyText,.numberOfcolumsText{color:#666}.blackText{color:#000}.animate-switch-container{position:relative;background:#fff;border-top:solid 1px #ECECEC;border-bottom:solid 1px #ECECEC;height:750px;overflow:scroll}.animate-switch-container .well{background-color:#89C4F4;margin-bottom:0;color:#ECECEC}.linesList{margin-top:5px}.animate-switch{padding:10px}.animate-switch.ng-animate{-webkit-transition:all cubic-bezier(.25,.46,.45,.94) .6s;transition:all cubic-bezier(.25,.46,.45,.94) .6s;position:absolute;top:0;left:0;right:0;bottom:0}.animate-switch.ng-enter,.animate-switch.ng-leave.ng-leave-active{left:0;top:-500px;opacity:0}.animate-switch.ng-enter.ng-enter-active,.animate-switch.ng-leave{left:0;top:0;opacity:.8}.stepwizardTopmargin{margin-top:25px}.stepwizard-step p{margin-top:10px;color:#666}.stepwizard-row{display:table-row}.stepwizard{display:table;width:100%;position:relative}.stepwizard-step button[disabled]{opacity:1!important;filter:alpha(opacity=100)!important}.stepwizard-row:before{top:14px;bottom:0;position:absolute;content:" ";width:100%;height:1px;background-color:#ccc;z-order:0}.stepwizard-step{display:table-cell;text-align:center;position:relative}.btn-circle{width:30px;height:30px;text-align:center;padding:6px 0;font-size:12px;line-height:1.428571429;border-radius:15px}.panelDebugScope{color:#000}.texteRouge{color:#CF000F}.editPropertiesLabel{margin-top:6px}.textControlLabel{color:#000}.marginTopFivepixels,.marginTopTenpixels{margin-top:5px}.checkboxCssCorrection{font-size:4px}.message,.validation{font-size:.8em;color:#a94442}.noGroupText{margin-bottom:0}.nya-bs-select,.ta-scroll-window{margin-bottom:16px}.formly-field-checkbox{margin-top:28px}#inputAddNewBasicOption,#inputAddNewGroupGroupedOption,#inputAddNewGroupedOption,#inputAddNewRadioOption{margin-bottom:20px}.editGroupedSelectnyaSelect{margin-bottom:0}.formly-field{margin-bottom:20px}.validation{position:absolute}.error-messages,.formly-template-wrapper{position:relative}.error-messages,.message,.validation{opacity:1;transition:.3s linear all}.message{position:absolute;width:100%;margin-top:2px}.error-messages.ng-enter.ng-enter-active,.message.ng-enter.ng-enter-active,.validation.ng-enter.ng-enter-active{opacity:1}.error-messages.ng-enter,.message.ng-enter,.validation.ng-enter{opacity:0}.error-messages.ng-leave,.message.ng-leave,.validation.ng-leave{opacity:1}.error-messages.ng-leave-active,.message.ng-leave-active,.validation.ng-leave-active{opacity:0}

1
static/css/eda.textAngular.min.css vendored Normal file
View file

@ -0,0 +1 @@
.ta-hidden-input{width:1px;height:1px;border:none;margin:0;padding:0;position:absolute;top:-10000px;left:-10000px;opacity:0;overflow:hidden}.ta-root.focussed>.ta-scroll-window.form-control{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ta-editor.ta-html,.ta-scroll-window.form-control{min-height:300px;height:auto;overflow:auto;font-family:inherit;font-size:100%}.ta-scroll-window.form-control{position:relative;padding:0}.ta-scroll-window>.ta-bind{height:auto;min-height:300px;padding:6px 12px}.ta-editor:focus{user-select:text}.ta-resizer-handle-overlay{z-index:100;position:absolute;display:none}.ta-resizer-handle-overlay>.ta-resizer-handle-info{position:absolute;bottom:16px;right:16px;border:1px solid #000;background-color:#FFF;padding:0 4px;opacity:.7}.ta-resizer-handle-overlay>.ta-resizer-handle-background{position:absolute;bottom:5px;right:5px;left:5px;top:5px;border:1px solid #000;background-color:rgba(0,0,0,.2)}.ta-resizer-handle-overlay>.ta-resizer-handle-corner{width:10px;height:10px;position:absolute}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tl{top:0;left:0;border-left:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tr{top:0;right:0;border-right:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-bl{bottom:0;left:0;border-left:1px solid #000;border-bottom:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-br{bottom:0;right:0;border:1px solid #000;cursor:se-resize;background-color:#fff}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.bottom{margin-top:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}

8
static/css/loading-bar.min.css vendored Normal file
View file

@ -0,0 +1,8 @@
/*!
* angular-loading-bar v0.7.1
* https://chieffancypants.github.io/angular-loading-bar
* Copyright (c) 2015 Wes Cruver
* License: MIT
*/
#loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:350ms linear all;-moz-transition:350ms linear all;-o-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{-webkit-transition:width 350ms;-moz-transition:width 350ms;-o-transition:width 350ms;transition:width 350ms;background:#29d;position:fixed;z-index:10002;top:0;left:0;width:100%;height:2px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}#loading-bar-spinner{display:block;position:fixed;z-index:10002;top:10px;left:10px}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:loading-bar-spinner 400ms linear infinite;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}}

View file

@ -0,0 +1,226 @@
/**
* nya-bootstrap-select v2.1.6
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
.nya-bs-select {
/*width: 220px\9; IE8 and below*/
width: 220px \0;
/*IE9 and below*/
padding: 0;
margin: 0;
}
.nya-bs-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
width: 220px;
}
.nya-bs-select.form-control {
margin-bottom: 0;
padding: 0;
border: none;
}
.nya-bs-select.form-control:not([class*="col-"]) {
width: 100%;
}
.nya-bs-select .dropdown-toggle {
width: 100%;
padding-right: 25px;
}
.nya-bs-select .dropdown-toggle .filter-option,
.nya-bs-select .dropdown-toggle .special-title {
overflow: hidden;
width: 100%;
text-align: left;
}
.nya-bs-select .dropdown-toggle .filter-option {
display: inline-block;
}
.nya-bs-select .dropdown-toggle .special-title {
display: none;
}
.nya-bs-select .dropdown-toggle.show-special-title .filter-option {
display: none;
}
.nya-bs-select .dropdown-toggle.show-special-title .special-title {
display: inline-block;
}
.nya-bs-select .dropdown-toggle .caret {
position: absolute;
top: 50%;
right: 12px;
margin-top: -2px;
vertical-align: middle;
}
.nya-bs-select.fit-width {
width: auto !important;
}
.nya-bs-select.btn-group:not(.input-group-btn),
.nya-bs-select.btn-group[class*="col-"] {
float: none;
display: inline-block;
margin-left: 0;
}
.nya-bs-select.btn-group.dropdown-menu-right,
.nya-bs-select.btn-group[class*="col-"].dropdown-menu-right,
.row-fluid .nya-bs-select.btn-group[class*="col-"].dropdown-menu-right {
float: right;
}
.nya-bs-select.btn-group[class*="col-"] .btn {
width: 100%;
}
.nya-bs-select.btn-group .dropdown-menu {
min-width: 100%;
z-index: 1035;
box-sizing: border-box;
}
.nya-bs-select.btn-group .dropdown-menu.inner {
position: static;
border: 0;
padding: 0;
margin: 0;
border-radius: 0;
box-shadow: none;
}
.nya-bs-select.btn-group .dropdown-menu li {
position: relative;
}
.nya-bs-select.btn-group .dropdown-menu li.disabled a {
cursor: not-allowed;
}
.nya-bs-select.btn-group .dropdown-menu li.not-match {
display: none;
}
.nya-bs-select.btn-group .dropdown-menu li.no-search-result {
display: none;
padding: 3px;
background: #f5f5f5;
margin: 0 5px;
}
.nya-bs-select.btn-group .dropdown-menu li.no-search-result.show {
display: list-item;
}
.nya-bs-select.btn-group .dropdown-menu li.group-item a {
padding-left: 2.25em;
}
.nya-bs-select.btn-group .dropdown-menu li a {
cursor: pointer;
}
.nya-bs-select.btn-group .dropdown-menu li a span.check-mark {
display: none;
}
.nya-bs-select.btn-group .dropdown-menu li a span.text {
display: inline-block;
}
.nya-bs-select.btn-group .dropdown-menu li small {
padding-left: 0.5em;
}
.nya-bs-select.btn-group .dropdown-menu li.selected a .check-mark {
position: absolute;
display: inline-block;
right: 15px;
margin-top: 5px;
}
.nya-bs-select.btn-group .dropdown-menu li a span.text {
margin-right: 34px;
}
.nya-bs-select.btn-group .dropdown-menu li .dropdown-header {
display: none;
}
.nya-bs-select.btn-group .dropdown-menu li.first-in-group {
margin-top: 1.75em;
}
.nya-bs-select.btn-group .dropdown-menu li.first-in-group .dropdown-header {
display: block;
position: absolute;
top: -1.75em;
left: 0;
}
.nya-bs-select.show-menu-arrow.open > .btn {
z-index: 1036;
}
.nya-bs-select.show-menu-arrow .dropdown-toggle:before {
content: " ";
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom-width: 7px;
border-bottom-style: solid;
border-bottom-color: rgba(204, 204, 204, 0.2);
position: absolute;
bottom: -4px;
left: 9px;
display: none;
}
.nya-bs-select.show-menu-arrow .dropdown-toggle:after {
content: '';
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid white;
position: absolute;
bottom: -4px;
left: 10px;
display: none;
}
.nya-bs-select.show-menu-arrow.dropup .dropdown-toggle:before {
bottom: auto;
top: -3px;
border-bottom: 0;
border-top-width: 7px;
border-top-style: solid;
border-top-color: rgba(204, 204, 204, 0.2);
}
.nya-bs-select.show-menu-arrow.dropup .dropdown-toggle:after {
bottom: auto;
top: -3px;
border-top: 6px solid white;
border-bottom: 0;
}
.nya-bs-select.show-menu-arrow.pull-right .dropdown-toggle:before {
right: 12px;
left: auto;
}
.nya-bs-select.show-menu-arrow.pull-right .dropdown-toggle:after {
right: 13px;
left: auto;
}
.nya-bs-select.show-menu-arrow.open > .dropdown-toggle:before,
.nya-bs-select.show-menu-arrow.open > .dropdown-toggle:after {
display: block;
}
.nya-bs-select .bs-searchbox,
.nya-bs-select .bs-actionsbox {
padding: 4px 8px;
}
.nya-bs-select .bs-actionsbox {
float: left;
width: 100%;
box-sizing: border-box;
}
.nya-bs-select .bs-actionsbox .btn-group button {
width: 50%;
}
.nya-bs-select .bs-searchbox + .bs-actionsbox {
padding: 0 8px 4px;
}
.nya-bs-select .bs-searchbox input.form-control {
margin-bottom: 0;
width: 100%;
float: none;
z-index: inherit;
display: block;
position: static;
border-radius: 4px;
}
.nya-bs-select.fit-width .btn .filter-option,
.nya-bs-select.fit-width .btn .special-title {
position: static;
}
.nya-bs-select.fit-width .btn .caret {
position: static;
top: auto;
margin-top: -1px;
}
.nya-bs-select.on-modal .dropdown-menu {
z-index: 1040;
}
.nya-bs-select.on-modal.open > .btn {
z-index: 1041;
}

7
static/css/nya-bs-select.min.css vendored Normal file
View file

@ -0,0 +1,7 @@
/**
* nya-bootstrap-select v2.0.10
* Copyright 2014 Nyasoft
* Licensed under MIT license
*/
.nya-bs-select{width:220px \0;padding:0;margin:0}.nya-bs-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.nya-bs-select.form-control{margin-bottom:0;padding:0;border:none}.nya-bs-select.form-control:not([class*=col-]){width:100%}.nya-bs-select>.btn{width:100%;padding-right:25px}.nya-bs-select>.btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.nya-bs-select>.btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.nya-bs-select.fit-width{width:auto!important}.nya-bs-select.btn-group:not(.input-group-btn),.nya-bs-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.nya-bs-select.btn-group.dropdown-menu-right,.nya-bs-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .nya-bs-select.btn-group[class*=col-].dropdown-menu-right{float:right}.nya-bs-select.btn-group[class*=col-] .btn{width:100%}.nya-bs-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;box-sizing:border-box}.nya-bs-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;box-shadow:none}.nya-bs-select.btn-group .dropdown-menu li{position:relative}.nya-bs-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.nya-bs-select.btn-group .dropdown-menu li.not-match{display:none}.nya-bs-select.btn-group .dropdown-menu li.no-search-result{display:none;padding:3px;background:#f5f5f5;margin:0 5px}.nya-bs-select.btn-group .dropdown-menu li.no-search-result.show{display:list-item}.nya-bs-select.btn-group .dropdown-menu li.group-item a{padding-left:2.25em}.nya-bs-select.btn-group .dropdown-menu li a{cursor:pointer}.nya-bs-select.btn-group .dropdown-menu li a span.check-mark{display:none}.nya-bs-select.btn-group .dropdown-menu li a span.text{display:inline-block}.nya-bs-select.btn-group .dropdown-menu li small{padding-left:.5em}.nya-bs-select.btn-group .dropdown-menu li.selected a .check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.nya-bs-select.btn-group .dropdown-menu li a span.text{margin-right:34px}.nya-bs-select.btn-group .dropdown-menu li .dropdown-header{display:none}.nya-bs-select.btn-group .dropdown-menu li.first-in-group{margin-top:1.75em}.nya-bs-select.btn-group .dropdown-menu li.first-in-group .dropdown-header{display:block;position:absolute;top:-1.75em;left:0}.nya-bs-select.show-menu-arrow.open>.btn{z-index:1036}.nya-bs-select.show-menu-arrow .dropdown-toggle:before{content:" ";border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.nya-bs-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.nya-bs-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:rgba(204,204,204,.2)}.nya-bs-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.nya-bs-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.nya-bs-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.nya-bs-select.show-menu-arrow.open>.dropdown-toggle:after,.nya-bs-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.nya-bs-select .bs-searchbox{padding:4px 8px}.nya-bs-select .bs-searchbox input.form-control{margin-bottom:0;width:100%;float:none;z-index:inherit;display:block;position:static;border-radius:4px}.nya-bs-select.fit-width .btn .filter-option{position:static}.nya-bs-select.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.nya-bs-select.on-modal .dropdown-menu{z-index:1040}.nya-bs-select.on-modal.open>.btn{z-index:1041}

193
static/css/textAngular.css Normal file
View file

@ -0,0 +1,193 @@
.ta-hidden-input {
width: 1px;
height: 1px;
border: none;
margin: 0;
padding: 0;
position: absolute;
top: -10000px;
left: -10000px;
opacity: 0;
overflow: hidden;
}
/* add generic styling for the editor */
.ta-root.focussed > .ta-scroll-window.form-control {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.ta-editor.ta-html, .ta-scroll-window.form-control {
min-height: 300px;
height: auto;
overflow: auto;
font-family: inherit;
font-size: 100%;
}
.ta-scroll-window.form-control {
position: relative;
padding: 0;
}
.ta-scroll-window > .ta-bind {
height: auto;
min-height: 300px;
padding: 6px 12px;
}
.ta-editor:focus {
user-select: text;
}
/* add the styling for the awesomness of the resizer */
.ta-resizer-handle-overlay {
z-index: 100;
position: absolute;
display: none;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-info {
position: absolute;
bottom: 16px;
right: 16px;
border: 1px solid black;
background-color: #FFF;
padding: 0 4px;
opacity: 0.7;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-background {
position: absolute;
bottom: 5px;
right: 5px;
left: 5px;
top: 5px;
border: 1px solid black;
background-color: rgba(0, 0, 0, 0.2);
}
.ta-resizer-handle-overlay > .ta-resizer-handle-corner {
width: 10px;
height: 10px;
position: absolute;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tl{
top: 0;
left: 0;
border-left: 1px solid black;
border-top: 1px solid black;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tr{
top: 0;
right: 0;
border-right: 1px solid black;
border-top: 1px solid black;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-bl{
bottom: 0;
left: 0;
border-left: 1px solid black;
border-bottom: 1px solid black;
}
.ta-resizer-handle-overlay > .ta-resizer-handle-corner-br{
bottom: 0;
right: 0;
border: 1px solid black;
cursor: se-resize;
background-color: white;
}
/* copy the popover code from bootstrap so this will work even without it */
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
font-size: 14px;
font-weight: normal;
line-height: 1.42857143;
text-align: left;
white-space: normal;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .2);
border-radius: 6px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
}
.popover.top {
margin-top: -10px;
}
.popover.bottom {
margin-top: 10px;
}
.popover-title {
padding: 8px 14px;
margin: 0;
font-size: 14px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 5px 5px 0 0;
}
.popover-content {
padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.popover > .arrow {
border-width: 11px;
}
.popover > .arrow:after {
content: "";
border-width: 10px;
}
.popover.top > .arrow {
bottom: -11px;
left: 50%;
margin-left: -11px;
border-top-color: #999;
border-top-color: rgba(0, 0, 0, .25);
border-bottom-width: 0;
}
.popover.top > .arrow:after {
bottom: 1px;
margin-left: -10px;
content: " ";
border-top-color: #fff;
border-bottom-width: 0;
}
.popover.bottom > .arrow {
top: -11px;
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999;
border-bottom-color: rgba(0, 0, 0, .25);
}
.popover.bottom > .arrow:after {
top: 1px;
margin-left: -10px;
content: " ";
border-top-width: 0;
border-bottom-color: #fff;
}

1
static/css/textAngular.min.css vendored Normal file
View file

@ -0,0 +1 @@
.ta-hidden-input{width:1px;height:1px;border:none;margin:0;padding:0;position:absolute;top:-10000px;left:-10000px;opacity:0;overflow:hidden}.ta-root.focussed>.ta-scroll-window.form-control{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ta-editor.ta-html,.ta-scroll-window.form-control{min-height:300px;height:auto;overflow:auto;font-family:inherit;font-size:100%}.ta-scroll-window.form-control{position:relative;padding:0}.ta-scroll-window>.ta-bind{height:auto;min-height:300px;padding:6px 12px}.ta-editor:focus{user-select:text}.ta-resizer-handle-overlay{z-index:100;position:absolute;display:none}.ta-resizer-handle-overlay>.ta-resizer-handle-info{position:absolute;bottom:16px;right:16px;border:1px solid #000;background-color:#FFF;padding:0 4px;opacity:.7}.ta-resizer-handle-overlay>.ta-resizer-handle-background{position:absolute;bottom:5px;right:5px;left:5px;top:5px;border:1px solid #000;background-color:rgba(0,0,0,.2)}.ta-resizer-handle-overlay>.ta-resizer-handle-corner{width:10px;height:10px;position:absolute}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tl{top:0;left:0;border-left:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tr{top:0;right:0;border-right:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-bl{bottom:0;left:0;border-left:1px solid #000;border-bottom:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-br{bottom:0;right:0;border:1px solid #000;cursor:se-resize;background-color:#fff}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.bottom{margin-top:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}

240
static/css/toaster.css Normal file
View file

@ -0,0 +1,240 @@
/*
* Toastr
* Version 2.0.1
* Copyright 2012 John Papa and Hans Fjallemark.
* All Rights Reserved.
* Use, reproduction, distribution, and modification of this code is subject to the terms and
* conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
*
* Author: John Papa and Hans Fjallemark
* Project: https://github.com/CodeSeven/toastr
*/
.toast-title {
font-weight: bold;
}
.toast-message {
-ms-word-wrap: break-word;
word-wrap: break-word;
}
.toast-message a,
.toast-message label {
color: #ffffff;
}
.toast-message a:hover {
color: #cccccc;
text-decoration: none;
}
.toast-close-button {
position: relative;
right: -0.3em;
top: -0.3em;
float: right;
font-size: 20px;
font-weight: bold;
color: #ffffff;
-webkit-text-shadow: 0 1px 0 #ffffff;
text-shadow: 0 1px 0 #ffffff;
opacity: 0.8;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
filter: alpha(opacity=80);
}
.toast-close-button:hover,
.toast-close-button:focus {
color: #000000;
text-decoration: none;
cursor: pointer;
opacity: 0.4;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
filter: alpha(opacity=40);
}
/*Additional properties for button version
iOS requires the button element instead of an anchor tag.
If you want the anchor version, it requires `href="#"`.*/
button.toast-close-button {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}
.toast-top-full-width {
top: 0;
right: 0;
width: 100%;
}
.toast-bottom-full-width {
bottom: 0;
right: 0;
width: 100%;
}
.toast-top-left {
top: 12px;
left: 12px;
}
.toast-top-center {
top: 12px;
}
.toast-top-right {
top: 12px;
right: 12px;
}
.toast-bottom-right {
right: 12px;
bottom: 12px;
}
.toast-bottom-center {
bottom: 12px;
}
.toast-bottom-left {
bottom: 12px;
left: 12px;
}
.toast-center {
top: 45%;
}
#toast-container {
position: fixed;
z-index: 999999;
pointer-events: auto;
/*overrides*/
}
#toast-container.toast-center,
#toast-container.toast-top-center,
#toast-container.toast-bottom-center{
width: 100%;
pointer-events: none;
}
#toast-container.toast-center > div,
#toast-container.toast-top-center > div,
#toast-container.toast-bottom-center > div{
margin: auto;
pointer-events: auto;
}
#toast-container.toast-center > button,
#toast-container.toast-top-center > button,
#toast-container.toast-bottom-center > button{
pointer-events: auto;
}
#toast-container * {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
#toast-container > div {
margin: 0 0 6px;
padding: 15px 15px 15px 50px;
width: 300px;
-moz-border-radius: 3px 3px 3px 3px;
-webkit-border-radius: 3px 3px 3px 3px;
border-radius: 3px 3px 3px 3px;
background-position: 15px center;
background-repeat: no-repeat;
-moz-box-shadow: 0 0 12px #999999;
-webkit-box-shadow: 0 0 12px #999999;
box-shadow: 0 0 12px #999999;
color: #ffffff;
opacity: 0.8;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
filter: alpha(opacity=80);
}
#toast-container > :hover {
-moz-box-shadow: 0 0 12px #000000;
-webkit-box-shadow: 0 0 12px #000000;
box-shadow: 0 0 12px #000000;
opacity: 1;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
filter: alpha(opacity=100);
cursor: pointer;
}
#toast-container > .toast-info {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-wait {
background-image: url("data:image/gif;base64,R0lGODlhIAAgAIQAAAQCBISGhMzKzERCROTm5CQiJKyurHx+fPz+/ExOTOzu7Dw+PIyOjCwqLFRWVAwKDIyKjMzOzOzq7CQmJLy6vFRSVPTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAXACwAAAAAIAAgAAAF3eAljmRpnmh6VRSVqLDpIDTixOdUlFSNUDhSQUAT7ES9GnD0SFQAKWItMqr4bqKHVPDI+WiTkaOFFVlrFe83rDrT0qeIjwrT0iLdU0GOiBxhAA4VeSk6QYeIOAsQEAuJKgw+EI8nA18IA48JBAQvFxCXDI8SNAQikV+iiaQIpheWX5mJmxKeF6g0qpQmA4yOu8C7EwYWCgZswRcTFj4KyMAGlwYxDwcHhCXMXxYxBzQHKNo+3DDeCOAn0V/TddbYJA0K48gAEAFQicMWFsfwNA3JSgAIAAFfwIMIL4QAACH5BAkJABoALAAAAAAgACAAhAQCBIyKjERCRMzOzCQiJPTy9DQyNGRmZMTCxOTm5CwqLHx+fBQWFJyenNTW1Pz6/Dw6PGxubAwKDIyOjNTS1CQmJCwuLPz+/Dw+PHRydAAAAAAAAAAAAAAAAAAAAAAAAAXboCaOZGmeaKoxWcSosMkk15W8cZ7VdZaXkcEgQtrxfD9RhHchima1GwlCGUBSFCaFxMrgRtnLFhWujWHhs2nJc8KoVlWGQnEn7/i8XgOwWAB7JwoONQ4KgSQAZRcOgHgSCwsSIhZMNRZ5CzULIgaWF5h4mhecfIQ8jXmQkiODhYeIiRYGjrG2PxgBARi3IhNMAbcCnwI5BAQpAZ8TIwK6vCQVDwUVKL+WzAANTA210g/VJ8OWxQefByQE4dZMzBoInwh4zrtgn2p725YNthUFTNRuGYB3AYGBHCEAACH5BAkJAB0ALAAAAAAgACAAhAQCBISChFRWVMzKzCQiJOTm5GxqbCwuLJSWlPz6/NTW1AwODJSSlGRmZCwqLOzu7HR2dDQ2NAQGBISGhFxaXNTS1CQmJOzq7GxubDQyNKSmpPz+/Nza3AAAAAAAAAAAAAXfYCeOZGmeaKqurHBdAiuP17Zdc0lMAVHWt9yI8LA9fCPB4xEjARoNSWpis01kBpshFahurqzsZosiGpErScMAUO0maKF8Tq/bTQCIQgFp30cQXhB1BHEcXhx0FgkJFiOHVYlzi42AgoRxeRx8fn+en3UABwedKgsBAwMBCygOCjYKDisLFV4VrCUAtVUKpSZdXl8mB8EbByQWcQPFAyYZxccdB7sV0cvBzbmvvG0LBV4FrFTBYCWuNhyyHRTFFB20trh4BxmdYl4YIqepq0IRxRE+IfDCAFQHARo0NGERAgAh+QQJCQAgACwAAAAAIAAgAIUEAgSEgoRMTkzMyswcHhzk5uR0cnQUFhRcXlwsKiz09vQMCgyMiozU1tQkJiR8fnxkZmT8/vwEBgSEhoRcWlzU0tQkIiT08vR0dnQcGhxkYmQ0MjT8+vwMDgyMjozc2twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+UCQcEgsGo/IpHLJXDweC6Z0+IhEHlOjRGIMWLHZoUZx0RQlAajxkFFKFFYFl5m5KNpIySU+X2bIBEoQZBBZGQdMElFhjI2Oj5AgHQEDAw8dQxYeDBaNHRVWVhWYCXsRFwmMXqFWEyAerB6MA6xWA6+xs7URt6VWqIwTu64gDh4eDp6goaORQ5OVAZjO1EgEGhB4RwAYDQ0YAEwIcBEKFEgYrBhLBORxgUYfrB9LELuF8fNDAAaVBuEg7NXCVyRdqHVCGLBiIIQAB1Yc4BXh9uEbwAXuyi2iQI7DuSwHdiFqCEGDtizLRFUDsaGAlQIbVoJYIEDAIiZBAAAh+QQJCQAbACwAAAAAIAAgAIQEAgSMioxcWlz08vQcHhysqqwMDgx8enwsKiykoqRkZmT8+vzEwsQMCgyUlpQkJiS0srQEBgSMjoxcXlz09vQkIiSsrqwUEhQ0MjRsamz8/vwAAAAAAAAAAAAAAAAAAAAF7+AmjmRpnmiqruz2PG0sIssCj4CQJAIgj4/abRNJaI6agu9kCAQaphdJgEQKUIFjgGWsahJYLdf7RTWfLKr3+jsBClVlG5Xb9eb4fImgUBBKDVB4ExRHFGwbGRQLGXMEhUgUfw2QC4IyCmSNDQtHlm2ZXgoiGQsUjW0EnUgLfyKBeYSeiHojfH61uS0GBisVEgEVLRcWRxAXKAgDRwMILMVIECgSVRIrBmS9JtRI1iMVBweuGxerSNolyszOIhjLGs0jEFXSKA8SEkMbcEgWIxfzNBxrw6AKgxIGkM05UOWALhERHJhysOThBgAVWYQAACH5BAkJABkALAAAAAAgACAAhAQGBIyKjERCRMzOzCwuLGRiZPz6/OTm5AwODLSytFRSVNTW1Dw6PHx6fAwKDJSSlERGRNTS1DQyNGxqbPz+/BQSFLy6vFRWVNza3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqYCaO5FgFwxBUZeu61ULNFMa+eBvQdJD/owFvFhkBBAwHsBQZUooZyWF2YOQkBNJu6ANMaQeli0AxSEwymi0DcUJeEgPlbEJFAghRe/h+Eeg/Dl9UYks5DF9VhksOAgKFi5GSSwh5kzgVCXIJNxknD5aSCTwJIw8zD5MITpanFKmSCHI8NxUPoJejNKWXLZkznL0vCJ3CxsckDpA/ChYJFzkTBgYTSxc80C4OswbLLhY8Fi/bMwYAJVgl4DTiL9LUJADrFuci1zTZLwD1IwU8BSQuWLCQb1EDHg2QiSDALYvCDAISJLDy8FIIACH5BAkJAB4ALAAAAAAgACAAhAQGBISGhFRSVNTW1CQiJKyqrGRmZOzu7CwuLIyOjGxubPz6/BQSFGRiZOTi5CwqLLy6vDQ2NIyKjFRWVCQmJKyurGxqbPT29DQyNJSSlHRydPz+/BQWFOzq7AAAAAAAAAXhoCeOJElYClGubOs117YtjWuvxCLLi3qbhc6h4FPsdorfiNI5dige43GT9AAkHUcCwCpMNxVP7tgTJY4J1uF7EBl0M8Ooueuo2SOCIkVa11kVX2E2EmgsFH4yBz4uAAkdHVstBAUHQ4xKmZqbnJ2bAhAQAiURGJ4eE0cTIxgzpp0QRxCsrp6xO7MjpaepO6unKxOhv8DFxsfIJBwaChw2DAkZDEocDjIOzi0ZMhlKUjIaLtsb3T8aR+EtDBkJ0yQUBQVQI9XX2ZsDMgMlyxr3mzE2XEgmotCGAARFIHiQ0FMIACH5BAkJABgALAAAAAAgACAAhAQCBISGhDw+POTi5CwuLLS2tPTy9BQSFJyenGRiZDQ2NIyOjLy+vPz6/BweHIyKjFRSVOzq7DQyNLy6vBQWFHRydDw6PPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXICaOZHkcZaquIjVd10SxtFrAcFGrVhBYIwoON9uNAsOA6DCEFTEKBEKxEjQvAtELNxkpGrAGNfW4Plpb2QgxRKjKzfPoVGLj3CnLNUv7hscpSDhKOxJSgDwPP0ZGAACMjAQFDQYFBJA0BAZDBpeYGBQVFUU3TV2YFAMwAzNgTQ2PkBVDFRiuQ7CYszi1pUOnkKmrM5qcnqiiTwQTDQ2Wn9DR0tPUfRKQEBEREDQSFw3XRhEwEd3f4TvjF+XWKgJ8JNnb0QkwCdUlCzAL+CQODAwc9BtIMAQAOw==") !important;
}
#toast-container > .toast-error {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-success {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}
#toast-container > .toast-warning {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}
#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
width: 96%;
margin: auto;
}
.toast {
background-color: #030303;
}
.toast-success {
background-color: #51a351;
}
.toast-error {
background-color: #bd362f;
}
.toast-info {
background-color: #2f96b4;
}
.toast-wait {
background-color: #2f96b4;
}
.toast-warning {
background-color: #f89406;
}
/*Responsive Design*/
@media all and (max-width: 240px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 11em;
}
#toast-container .toast-close-button {
right: -0.2em;
top: -0.2em;
}
}
@media all and (min-width: 241px) and (max-width: 480px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 18em;
}
#toast-container .toast-close-button {
right: -0.2em;
top: -0.2em;
}
}
@media all and (min-width: 481px) and (max-width: 768px) {
#toast-container > div {
padding: 15px 15px 15px 50px;
width: 25em;
}
}
/*
* AngularJS-Toaster
* Version 0.3
*/
:not(.no-enter)#toast-container > div.ng-enter,
:not(.no-leave)#toast-container > div.ng-leave
{
-webkit-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
-moz-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
-ms-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
-o-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
}
:not(.no-enter)#toast-container > div.ng-enter.ng-enter-active,
:not(.no-leave)#toast-container > div.ng-leave {
opacity: 0.8;
}
:not(.no-leave)#toast-container > div.ng-leave.ng-leave-active,
:not(.no-enter)#toast-container > div.ng-enter {
opacity: 0;
}

12
static/css/toaster.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
static/js/api-check.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6153
static/js/eda.dragdropway.js Normal file

File diff suppressed because one or more lines are too long

6
static/js/eda.dragdropway.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

3
static/js/eda.easyFormViewer.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4414
static/js/eda.stepway.js Normal file

File diff suppressed because one or more lines are too long

6
static/js/eda.stepway.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4
static/js/formly.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

98
static/js/lodash.min.js vendored Normal file
View file

@ -0,0 +1,98 @@
/**
* @license
* lodash 3.9.3 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash modern -o ./lodash.js`
*/
;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===m,u=n===n,i=null===t,o=t===m,f=t===t;if(n>t&&!i||!u||r&&!o&&f||e&&f)return 1;if(n<t&&!r||!f||i&&!e&&u||o&&u)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return s(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return typeof n=="string"?n:null==n?"":n+""}function i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
return r}function o(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function f(t,r){return n(t.a,r.a)||t.b-r.b}function l(n){return Nn[n]}function a(n){return Ln[n]}function c(n){return"\\"+Mn[n]}function s(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function p(n){return!!n&&typeof n=="object"}function h(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
}function _(n,t){for(var r=-1,e=n.length,u=-1,i=[];++r<e;)n[r]===t&&(n[r]=L,i[++u]=r);return i}function v(n){for(var t=-1,r=n.length;++t<r&&h(n.charCodeAt(t)););return t}function g(n){for(var t=n.length;t--&&h(n.charCodeAt(t)););return t}function y(n){return zn[n]}function d(h){function Nn(n){if(p(n)&&!(Ti(n)||n instanceof Bn)){if(n instanceof zn)return n;if(ru.call(n,"__chain__")&&ru.call(n,"__wrapped__"))return Mr(n)}return new zn(n)}function Ln(){}function zn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
this.__chain__=!!t}function Bn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=Su,this.__views__=null}function Mn(){this.__data__={}}function Pn(n){var t=n?n.length:0;for(this.data={hash:bu(null),set:new vu};t--;)this.push(n[t])}function qn(n,t){var r=n.data;return(typeof t=="string"||ve(t)?r.set.has(t):r.hash[t])?0:-1}function Dn(n,t){var r=-1,e=n.length;for(t||(t=Me(e));++r<e;)t[r]=n[r];return t}function Kn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
return n}function Vn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Gn(n,t){for(var r=-1,e=n.length,u=-1,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[++u]=o)}return i}function Jn(n,t){for(var r=-1,e=n.length,u=Me(e);++r<e;)u[r]=t(n[r],r,n);return u}function Xn(n,t,r,e){var u=-1,i=n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);return r}function Hn(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Qn(n,t){return n===m?t:n}function nt(n,t,r,e){
return n!==m&&ru.call(e,r)?n:t}function tt(n,t,r){for(var e=-1,u=Ki(t),i=u.length;++e<i;){var o=u[e],f=n[o],l=r(f,t[o],o,n,t);(l===l?l===f:f!==f)&&(f!==m||o in n)||(n[o]=l)}return n}function rt(n,t){return null==t?n:ut(t,Ki(t),n)}function et(n,t){for(var r=-1,e=null==n,u=!e&&Ir(n),i=u?n.length:0,o=t.length,f=Me(o);++r<o;){var l=t[r];f[r]=u?Er(l,i)?n[l]:m:e?m:n[l]}return f}function ut(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var i=t[e];r[i]=n[i]}return r}function it(n,t,r){var e=typeof n;return"function"==e?t===m?n:Mt(n,t,r):null==n?Fe:"object"==e?xt(n):t===m?Be(n):At(n,t);
}function ot(n,t,r,e,u,i,o){var f;if(r&&(f=u?r(n,e,u):r(n)),f!==m)return f;if(!ve(n))return n;if(e=Ti(n)){if(f=jr(n),!t)return Dn(n,f)}else{var l=uu.call(n),a=l==D;if(l!=V&&l!=z&&(!a||u))return $n[l]?Or(n,l,t):u?n:{};if(f=kr(a?{}:n),!t)return rt(f,n)}for(i||(i=[]),o||(o=[]),u=i.length;u--;)if(i[u]==n)return o[u];return i.push(n),o.push(f),(e?Kn:vt)(n,function(e,u){f[u]=ot(e,t,r,u,n,i,o)}),f}function ft(n,t,r){if(typeof n!="function")throw new Je(N);return gu(function(){n.apply(m,r)},t)}function lt(n,t){
var e=n?n.length:0,u=[];if(!e)return u;var i=-1,o=br(),f=o==r,l=f&&200<=t.length?Vu(t):null,a=t.length;l&&(o=qn,f=false,t=l);n:for(;++i<e;)if(l=n[i],f&&l===l){for(var c=a;c--;)if(t[c]===l)continue n;u.push(l)}else 0>o(t,l,0)&&u.push(l);return u}function at(n,t){var r=true;return Mu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ct(n,t,r,e){var u=e,i=u;return Mu(n,function(n,o,f){o=+t(n,o,f),(r(o,u)||o===e&&o===i)&&(u=o,i=n)}),i}function st(n,t){var r=[];return Mu(n,function(n,e,u){t(n,e,u)&&r.push(n);
}),r}function pt(n,t,r,e){var u;return r(n,function(n,r,i){return t(n,r,i)?(u=e?r:n,false):void 0}),u}function ht(n,t,r){for(var e=-1,u=n.length,i=-1,o=[];++e<u;){var f=n[e];if(p(f)&&Ir(f)&&(r||Ti(f)||se(f))){t&&(f=ht(f,t,r));for(var l=-1,a=f.length;++l<a;)o[++i]=f[l]}else r||(o[++i]=f)}return o}function _t(n,t){qu(n,t,ke)}function vt(n,t){return qu(n,t,Ki)}function gt(n,t){return Du(n,t,Ki)}function yt(n,t){for(var r=-1,e=t.length,u=-1,i=[];++r<e;){var o=t[r];$i(n[o])&&(i[++u]=o)}return i}function dt(n,t,r){
if(null!=n){r!==m&&r in zr(n)&&(t=[r]),r=0;for(var e=t.length;null!=n&&r<e;)n=n[t[r++]];return r&&r==e?n:m}}function mt(n,t,r,e,u,i){if(n===t)n=true;else if(null==n||null==t||!ve(n)&&!p(t))n=n!==n&&t!==t;else n:{var o=mt,f=Ti(n),l=Ti(t),a=B,c=B;f||(a=uu.call(n),a==z?a=V:a!=V&&(f=we(n))),l||(c=uu.call(t),c==z?c=V:c!=V&&we(t));var s=a==V,l=c==V,c=a==c;if(!c||f||s){if(!e&&(a=s&&ru.call(n,"__wrapped__"),l=l&&ru.call(t,"__wrapped__"),a||l)){n=o(a?n.value():n,l?t.value():t,r,e,u,i);break n}if(c){for(u||(u=[]),
i||(i=[]),a=u.length;a--;)if(u[a]==n){n=i[a]==t;break n}u.push(n),i.push(t),n=(f?gr:dr)(n,t,o,r,e,u,i),u.pop(),i.pop()}else n=false}else n=yr(n,t,a)}return n}function wt(n,t,r){var e=t.length,u=e,i=!r;if(null==n)return!u;for(n=zr(n);e--;){var o=t[e];if(i&&o[2]?o[1]!==n[o[0]]:!(o[0]in n))return false}for(;++e<u;){var o=t[e],f=o[0],l=n[f],a=o[1];if(i&&o[2]){if(l===m&&!(f in n))return false}else if(o=r?r(l,a,f):m,o===m?!mt(a,l,r,true):!o)return false}return true}function bt(n,t){var r=-1,e=Ir(n)?Me(n.length):[];return Mu(n,function(n,u,i){
e[++r]=t(n,u,i)}),e}function xt(n){var t=xr(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:n[r]===e&&(e!==m||r in zr(n))}}return function(n){return wt(n,t)}}function At(n,t){var r=Ti(n),e=Wr(n)&&t===t&&!ve(t),u=n+"";return n=Br(n),function(i){if(null==i)return false;var o=u;if(i=zr(i),!(!r&&e||o in i)){if(i=1==n.length?i:dt(i,Ct(n,0,-1)),null==i)return false;o=Vr(n),i=zr(i)}return i[o]===t?t!==m||o in i:mt(t,i[o],m,true)}}function jt(n,t,r,e,u){if(!ve(n))return n;var i=Ir(t)&&(Ti(t)||we(t)),o=i?null:Ki(t);
return Kn(o||t,function(f,l){if(o&&(l=f,f=t[l]),p(f)){e||(e=[]),u||(u=[]);n:{for(var a=l,c=e,s=u,h=c.length,_=t[a];h--;)if(c[h]==_){n[a]=s[h];break n}var h=n[a],v=r?r(h,_,a,n,t):m,g=v===m;g&&(v=_,Ir(_)&&(Ti(_)||we(_))?v=Ti(h)?h:Ir(h)?Dn(h):[]:Fi(_)||se(_)?v=se(h)?Ae(h):Fi(h)?h:{}:g=false),c.push(_),s.push(v),g?n[a]=jt(v,_,r,c,s):(v===v?v!==h:h===h)&&(n[a]=v)}}else a=n[l],c=r?r(a,f,l,n,t):m,(s=c===m)&&(c=f),c===m&&(!i||l in n)||!s&&(c===c?c===a:a!==a)||(n[l]=c)}),n}function kt(n){return function(t){return null==t?m:t[n];
}}function Ot(n){var t=n+"";return n=Br(n),function(r){return dt(r,n,t)}}function Rt(n,t){for(var r=n?t.length:0;r--;){var e=t[r];if(e!=u&&Er(e)){var u=e;yu.call(n,e,1)}}}function It(n,t){return n+su(Cu()*(t-n+1))}function Et(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function Ct(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=r===m||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Me(u);++e<u;)r[e]=n[e+t];return r}function Wt(n,t){var r;return Mu(n,function(n,e,u){
return r=t(n,e,u),!r}),!!r}function St(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Tt(t,r,e){var u=mr(),i=-1;return r=Jn(r,function(n){return u(n)}),t=bt(t,function(n){return{a:Jn(r,function(t){return t(n)}),b:++i,c:n}}),St(t,function(t,r){var u;n:{u=-1;for(var i=t.a,o=r.a,f=i.length,l=e.length;++u<f;){var a=n(i[u],o[u]);if(a){u=u<l?a*(e[u]?1:-1):a;break n}}u=t.b-r.b}return u})}function Ut(n,t){var r=0;return Mu(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function $t(n,t){var e=-1,u=br(),i=n.length,o=u==r,f=o&&200<=i,l=f?Vu():null,a=[];
l?(u=qn,o=false):(f=false,l=t?[]:a);n:for(;++e<i;){var c=n[e],s=t?t(c,e,n):c;if(o&&c===c){for(var p=l.length;p--;)if(l[p]===s)continue n;t&&l.push(s),a.push(c)}else 0>u(l,s,0)&&((t||f)&&l.push(s),a.push(c))}return a}function Ft(n,t){for(var r=-1,e=t.length,u=Me(e);++r<e;)u[r]=n[t[r]];return u}function Nt(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?Ct(n,e?0:i,e?i+1:u):Ct(n,e?i+1:0,e?u:i)}function Lt(n,t){var r=n;r instanceof Bn&&(r=r.value());for(var e=-1,u=t.length;++e<u;){
var r=[r],i=t[e];_u.apply(r,i.args),r=i.func.apply(i.thisArg,r)}return r}function zt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Uu){for(;e<u;){var i=e+u>>>1,o=n[i];(r?o<=t:o<t)&&null!==o?e=i+1:u=i}return u}return Bt(n,t,Fe,r)}function Bt(n,t,r,e){t=r(t);for(var u=0,i=n?n.length:0,o=t!==t,f=null===t,l=t===m;u<i;){var a=su((u+i)/2),c=r(n[a]),s=c!==m,p=c===c;(o?p||e:f?p&&s&&(e||null!=c):l?p&&(e||s):null==c?0:e?c<=t:c<t)?u=a+1:i=a}return Ou(i,Tu)}function Mt(n,t,r){if(typeof n!="function")return Fe;
if(t===m)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)};case 5:return function(r,e,u,i,o){return n.call(t,r,e,u,i,o)}}return function(){return n.apply(t,arguments)}}function Pt(n){return lu.call(n,0)}function qt(n,t,r){for(var e=r.length,u=-1,i=ku(n.length-e,0),o=-1,f=t.length,l=Me(i+f);++o<f;)l[o]=t[o];for(;++u<e;)l[r[u]]=n[u];for(;i--;)l[o++]=n[u++];return l}function Dt(n,t,r){
for(var e=-1,u=r.length,i=-1,o=ku(n.length-u,0),f=-1,l=t.length,a=Me(o+l);++i<o;)a[i]=n[i];for(o=i;++f<l;)a[o+f]=t[f];for(;++e<u;)a[o+r[e]]=n[i++];return a}function Kt(n,t){return function(r,e,u){var i=t?t():{};if(e=mr(e,u,3),Ti(r)){u=-1;for(var o=r.length;++u<o;){var f=r[u];n(i,f,e(f,u,r),r)}}else Mu(r,function(t,r,u){n(i,t,e(t,r,u),u)});return i}}function Vt(n){return ae(function(t,r){var e=-1,u=null==t?0:r.length,i=2<u?r[u-2]:m,o=2<u?r[2]:m,f=1<u?r[u-1]:m;for(typeof i=="function"?(i=Mt(i,f,5),
u-=2):(i=typeof f=="function"?f:m,u-=i?1:0),o&&Cr(r[0],r[1],o)&&(i=3>u?m:i,u=1);++e<u;)(o=r[e])&&n(t,o,i);return t})}function Yt(n,t){return function(r,e){var u=r?Zu(r):0;if(!Tr(u))return n(r,e);for(var i=t?u:-1,o=zr(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Zt(n){return function(t,r,e){var u=zr(t);e=e(t);for(var i=e.length,o=n?i:-1;n?o--:++o<i;){var f=e[o];if(false===r(u[f],f,u))break}return t}}function Gt(n,t){function r(){return(this&&this!==Yn&&this instanceof r?e:n).apply(t,arguments);
}var e=Xt(n);return r}function Jt(n){return function(t){var r=-1;t=Te(Ie(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Xt(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4])}var r=Bu(n.prototype),t=n.apply(r,t);return ve(t)?t:r}}function Ht(n){function t(r,e,u){return u&&Cr(r,e,u)&&(e=null),
r=vr(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Qt(n,t){return function(r,e,u){if(u&&Cr(r,e,u)&&(e=null),e=mr(e,u,3),1==e.length){u=r=Lr(r);for(var i=e,o=-1,f=u.length,l=t,a=l;++o<f;){var c=u[o],s=+i(c);n(s,l)&&(l=s,a=c)}if(u=a,!r.length||u!==t)return u}return ct(r,e,n,t)}}function nr(n,r){return function(e,u,i){return u=mr(u,i,3),Ti(e)?(u=t(e,u,r),-1<u?e[u]:m):pt(e,u,n)}}function tr(n){return function(r,e,u){return r&&r.length?(e=mr(e,u,3),t(r,e,n)):-1}}function rr(n){
return function(t,r,e){return r=mr(r,e,3),pt(t,r,n,true)}}function er(n){return function(){for(var t,r=arguments.length,e=n?r:-1,u=0,i=Me(r);n?e--:++e<r;){var o=i[u++]=arguments[e];if(typeof o!="function")throw new Je(N);!t&&zn.prototype.thru&&"wrapper"==wr(o)&&(t=new zn([]))}for(e=t?-1:r;++e<r;){var o=i[e],u=wr(o),f="wrapper"==u?Yu(o):null;t=f&&Sr(f[0])&&f[1]==(I|j|O|E)&&!f[4].length&&1==f[9]?t[wr(f[0])].apply(t,f[3]):1==o.length&&Sr(o)?t[u]():t.thru(o)}return function(){var n=arguments;if(t&&1==n.length&&Ti(n[0]))return t.plant(n[0]).value();
for(var e=0,n=r?i[e].apply(this,n):n[0];++e<r;)n=i[e].call(this,n);return n}}}function ur(n,t){return function(r,e,u){return typeof e=="function"&&u===m&&Ti(r)?n(r,e):t(r,Mt(e,u,3))}}function ir(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=Mt(r,e,3)),n(t,r,ke)}}function or(n){return function(t,r,e){return(typeof r!="function"||e!==m)&&(r=Mt(r,e,3)),n(t,r)}}function fr(n){return function(t,r,e){var u={};return r=mr(r,e,3),vt(t,function(t,e,i){i=r(t,e,i),e=n?i:e,t=n?t:i,u[e]=t}),
u}}function lr(n){return function(t,r,e){return t=u(t),(n?t:"")+pr(t,r,e)+(n?"":t)}}function ar(n){var t=ae(function(r,e){var u=_(e,t.placeholder);return vr(r,n,null,e,u)});return t}function cr(n,t){return function(r,e,u,i){var o=3>arguments.length;return typeof e=="function"&&i===m&&Ti(r)?n(r,e,u,o):Et(r,mr(e,i,4),u,o,t)}}function sr(n,t,r,e,u,i,o,f,l,a){function c(){for(var w=arguments.length,A=w,j=Me(w);A--;)j[A]=arguments[A];if(e&&(j=qt(j,e,u)),i&&(j=Dt(j,i,o)),v||y){var A=c.placeholder,k=_(j,A),w=w-k.length;
if(w<a){var I=f?Dn(f):null,w=ku(a-w,0),E=v?k:null,k=v?null:k,C=v?j:null,j=v?null:j;return t|=v?O:R,t&=~(v?R:O),g||(t&=~(b|x)),j=[n,t,r,C,E,j,k,I,l,w],I=sr.apply(m,j),Sr(n)&&Gu(I,j),I.placeholder=A,I}}if(A=p?r:this,I=h?A[n]:n,f)for(w=j.length,E=Ou(f.length,w),k=Dn(j);E--;)C=f[E],j[E]=Er(C,w)?k[C]:m;return s&&l<j.length&&(j.length=l),this&&this!==Yn&&this instanceof c&&(I=d||Xt(n)),I.apply(A,j)}var s=t&I,p=t&b,h=t&x,v=t&j,g=t&A,y=t&k,d=h?null:Xt(n);return c}function pr(n,t,r){return n=n.length,t=+t,
n<t&&Au(t)?(t-=n,r=null==r?" ":r+"",We(r,au(t/r.length)).slice(0,t)):""}function hr(n,t,r,e){function u(){for(var t=-1,f=arguments.length,l=-1,a=e.length,c=Me(f+a);++l<a;)c[l]=e[l];for(;f--;)c[l++]=arguments[++t];return(this&&this!==Yn&&this instanceof u?o:n).apply(i?r:this,c)}var i=t&b,o=Xt(n);return u}function _r(n){return function(t,r,e,u){var i=mr(e);return null==e&&i===it?zt(t,r,n):Bt(t,r,i(e,u,1),n)}}function vr(n,t,r,e,u,i,o,f){var l=t&x;if(!l&&typeof n!="function")throw new Je(N);var a=e?e.length:0;
if(a||(t&=~(O|R),e=u=null),a-=u?u.length:0,t&R){var c=e,s=u;e=u=null}var p=l?null:Yu(n);return r=[n,t,r,e,u,c,s,i,o,f],p&&(e=r[1],t=p[1],f=e|t,u=t==I&&e==j||t==I&&e==E&&r[7].length<=p[8]||t==(I|E)&&e==j,(f<I||u)&&(t&b&&(r[2]=p[2],f|=e&b?0:A),(e=p[3])&&(u=r[3],r[3]=u?qt(u,e,p[4]):Dn(e),r[4]=u?_(r[3],L):Dn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Dt(u,e,p[6]):Dn(e),r[6]=u?_(r[5],L):Dn(p[6])),(e=p[7])&&(r[7]=Dn(e)),t&I&&(r[8]=null==r[8]?p[8]:Ou(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=f),t=r[1],f=r[9]),
r[9]=null==f?l?0:n.length:ku(f-a,0)||0,(p?Ku:Gu)(t==b?Gt(r[0],r[2]):t!=O&&t!=(b|O)||r[4].length?sr.apply(m,r):hr.apply(m,r),r)}function gr(n,t,r,e,u,i,o){var f=-1,l=n.length,a=t.length;if(l!=a&&(!u||a<=l))return false;for(;++f<l;){var c=n[f],a=t[f],s=e?e(u?a:c,u?c:a,f):m;if(s!==m){if(s)continue;return false}if(u){if(!Hn(t,function(n){return c===n||r(c,n,e,u,i,o)}))return false}else if(c!==a&&!r(c,a,e,u,i,o))return false}return true}function yr(n,t,r){switch(r){case M:case P:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
case K:return n!=+n?t!=+t:n==+t;case Y:case Z:return n==t+""}return false}function dr(n,t,r,e,u,i,o){var f=Ki(n),l=f.length,a=Ki(t).length;if(l!=a&&!u)return false;for(a=l;a--;){var c=f[a];if(!(u?c in t:ru.call(t,c)))return false}for(var s=u;++a<l;){var c=f[a],p=n[c],h=t[c],_=e?e(u?h:p,u?p:h,c):m;if(_===m?!r(p,h,e,u,i,o):!_)return false;s||(s="constructor"==c)}return s||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false;
}function mr(n,t,r){var e=Nn.callback||Ue,e=e===Ue?it:e;return r?e(n,t,r):e}function wr(n){for(var t=n.name,r=Lu[t],e=r?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function br(n,t,e){var u=Nn.indexOf||Kr,u=u===Kr?r:u;return n?u(n,t,e):u}function xr(n){n=Oe(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!ve(r)}return n}function Ar(n,t){var r=null==n?m:n[t];return ge(r)?r:m}function jr(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&ru.call(n,"index")&&(r.index=n.index,
r.input=n.input),r}function kr(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Ye),new n}function Or(n,t,r){var e=n.constructor;switch(t){case G:return Pt(n);case M:case P:return new e(+n);case J:case X:case H:case Q:case nn:case tn:case rn:case en:case un:return t=n.buffer,new e(r?Pt(t):t,n.byteOffset,n.length);case K:case Z:return new e(n);case Y:var u=new e(n.source,jn.exec(n));u.lastIndex=n.lastIndex}return u}function Rr(n,t,r){return null==n||Wr(t,n)||(t=Br(t),n=1==t.length?n:dt(n,Ct(t,0,-1)),
t=Vr(t)),t=null==n?n:n[t],null==t?m:t.apply(n,r)}function Ir(n){return null!=n&&Tr(Zu(n))}function Er(n,t){return n=typeof n=="number"||Rn.test(n)?+n:-1,t=null==t?Fu:t,-1<n&&0==n%1&&n<t}function Cr(n,t,r){if(!ve(r))return false;var e=typeof t;return("number"==e?Ir(r)&&Er(t,r.length):"string"==e&&t in r)?(t=r[t],n===n?n===t:t!==t):false}function Wr(n,t){var r=typeof n;return"string"==r&&yn.test(n)||"number"==r?true:Ti(n)?false:!gn.test(n)||null!=t&&n in zr(t)}function Sr(n){var t=wr(n);return t in Bn.prototype?(t=Nn[t],
n===t?true:(t=Yu(t),!!t&&n===t[0])):false}function Tr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Fu}function Ur(n,t){n=zr(n);for(var r=-1,e=t.length,u={};++r<e;){var i=t[r];i in n&&(u[i]=n[i])}return u}function $r(n,t){var r={};return _t(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Fr(n){var t;if(!p(n)||uu.call(n)!=V||!(ru.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return _t(n,function(n,t){r=t}),r===m||ru.call(n,r)}function Nr(n){for(var t=ke(n),r=t.length,e=r&&n.length,u=!!e&&Tr(e)&&(Ti(n)||se(n)),i=-1,o=[];++i<r;){
var f=t[i];(u&&Er(f,e)||ru.call(n,f))&&o.push(f)}return o}function Lr(n){return null==n?[]:Ir(n)?ve(n)?n:Ye(n):Re(n)}function zr(n){return ve(n)?n:Ye(n)}function Br(n){if(Ti(n))return n;var t=[];return u(n).replace(dn,function(n,r,e,u){t.push(e?u.replace(xn,"$1"):r||n)}),t}function Mr(n){return n instanceof Bn?n.clone():new zn(n.__wrapped__,n.__chain__,Dn(n.__actions__))}function Pr(n,t,r){return n&&n.length?((r?Cr(n,t,r):null==t)&&(t=1),Ct(n,0>t?0:t)):[]}function qr(n,t,r){var e=n?n.length:0;return e?((r?Cr(n,t,r):null==t)&&(t=1),
t=e-(+t||0),Ct(n,0,0>t?0:t)):[]}function Dr(n){return n?n[0]:m}function Kr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?ku(u+e,0):e;else if(e)return e=zt(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Vr(n){var t=n?n.length:0;return t?n[t-1]:m}function Yr(n){return Pr(n,1)}function Zr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Cr(n,t,u)?null:t,t=false);var i=mr();if((null!=e||i!==it)&&(e=i(e,u,3)),t&&br()==r){t=e;var o;e=-1,u=n.length;
for(var i=-1,f=[];++e<u;){var l=n[e],a=t?t(l,e,n):l;e&&o===a||(o=a,f[++i]=l)}n=f}else n=$t(n,e);return n}function Gr(n){if(!n||!n.length)return[];var t=-1,r=0;n=Gn(n,function(n){return Ir(n)?(r=ku(n.length,r),true):void 0});for(var e=Me(r);++t<r;)e[t]=Jn(n,kt(t));return e}function Jr(n,t,r){return n&&n.length?(n=Gr(n),null==t?n:(t=Mt(t,r,4),Jn(n,function(n){return Xn(n,t,m,true)}))):[]}function Xr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Ti(n[0])||(t=[]);++r<e;){var i=n[r];t?u[i]=t[r]:i&&(u[i[0]]=i[1]);
}return u}function Hr(n){return n=Nn(n),n.__chain__=true,n}function Qr(n,t,r){return t.call(r,n)}function ne(n,t,r){var e=Ti(n)?Vn:at;return r&&Cr(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=mr(t,r,3)),e(n,t)}function te(n,t,r){var e=Ti(n)?Gn:st;return t=mr(t,r,3),e(n,t)}function re(n,t,r,e){var u=n?Zu(n):0;return Tr(u)||(n=Re(n),u=n.length),u?(r=typeof r!="number"||e&&Cr(t,r,e)?0:0>r?ku(u+r,0):r||0,typeof n=="string"||!Ti(n)&&me(n)?r<u&&-1<n.indexOf(t,r):-1<br(n,t,r)):false}function ee(n,t,r){
var e=Ti(n)?Jn:bt;return t=mr(t,r,3),e(n,t)}function ue(n,t,r){if(r?Cr(n,t,r):null==t){n=Lr(n);var e=n.length;return 0<e?n[It(0,e-1)]:m}r=-1,n=xe(n);var e=n.length,u=e-1;for(t=Ou(0>t?0:+t||0,e);++r<t;){var e=It(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function ie(n,t,r){var e=Ti(n)?Hn:Wt;return r&&Cr(n,t,r)&&(t=null),(typeof t!="function"||r!==m)&&(t=mr(t,r,3)),e(n,t)}function oe(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Je(N);var e=n;n=t,t=e}return function(){
return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function fe(n,t,r){function e(){var r=t-(wi()-a);0>=r||r>t?(f&&cu(f),r=p,f=s=p=m,r&&(h=wi(),l=n.apply(c,o),s||f||(o=c=null))):s=gu(e,r)}function u(){s&&cu(s),f=s=p=m,(v||_!==t)&&(h=wi(),l=n.apply(c,o),s||f||(o=c=null))}function i(){if(o=arguments,a=wi(),c=this,p=v&&(s||!g),false===_)var r=g&&!s;else{f||g||(h=a);var i=_-(a-h),y=0>=i||i>_;y?(f&&(f=cu(f)),h=a,l=n.apply(c,o)):f||(f=gu(u,i))}return y&&s?s=cu(s):s||t===_||(s=gu(e,t)),r&&(y=true,l=n.apply(c,o)),
!y||s||f||(o=c=null),l}var o,f,l,a,c,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new Je(N);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else ve(r)&&(g=r.leading,_="maxWait"in r&&ku(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return i.cancel=function(){s&&cu(s),f&&cu(f),f=s=p=m},i}function le(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Je(N);return r.cache=new le.Cache,
r}function ae(n,t){if(typeof n!="function")throw new Je(N);return t=ku(t===m?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=ku(r.length-t,0),i=Me(u);++e<u;)i[e]=r[t+e];switch(t){case 0:return n.call(this,i);case 1:return n.call(this,r[0],i);case 2:return n.call(this,r[0],r[1],i)}for(u=Me(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=i,n.apply(this,u)}}function ce(n,t){return n>t}function se(n){return p(n)&&Ir(n)&&uu.call(n)==z}function pe(n){return!!n&&1===n.nodeType&&p(n)&&-1<uu.call(n).indexOf("Element");
}function he(n,t,r,e){return e=(r=typeof r=="function"?Mt(r,e,3):m)?r(n,t):m,e===m?mt(n,t,r):!!e}function _e(n){return p(n)&&typeof n.message=="string"&&uu.call(n)==q}function ve(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ge(n){return null==n?false:uu.call(n)==D?ou.test(tu.call(n)):p(n)&&On.test(n)}function ye(n){return typeof n=="number"||p(n)&&uu.call(n)==K}function de(n){return p(n)&&uu.call(n)==Y}function me(n){return typeof n=="string"||p(n)&&uu.call(n)==Z}function we(n){return p(n)&&Tr(n.length)&&!!Un[uu.call(n)];
}function be(n,t){return n<t}function xe(n){var t=n?Zu(n):0;return Tr(t)?t?Dn(n):[]:Re(n)}function Ae(n){return ut(n,ke(n))}function je(n){return yt(n,ke(n))}function ke(n){if(null==n)return[];ve(n)||(n=Ye(n));for(var t=n.length,t=t&&Tr(t)&&(Ti(n)||se(n))&&t||0,r=n.constructor,e=-1,r=typeof r=="function"&&r.prototype===n,u=Me(t),i=0<t;++e<t;)u[e]=e+"";for(var o in n)i&&Er(o,t)||"constructor"==o&&(r||!ru.call(n,o))||u.push(o);return u}function Oe(n){n=zr(n);for(var t=-1,r=Ki(n),e=r.length,u=Me(e);++t<e;){
var i=r[t];u[t]=[i,n[i]]}return u}function Re(n){return Ft(n,Ki(n))}function Ie(n){return(n=u(n))&&n.replace(In,l).replace(bn,"")}function Ee(n){return(n=u(n))&&wn.test(n)?n.replace(mn,"\\$&"):n}function Ce(n,t,r){return r&&Cr(n,t,r)&&(t=0),Eu(n,t)}function We(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!Au(t))return r;do t%2&&(r+=n),t=su(t/2),n+=n;while(t);return r}function Se(n,t,r){var e=n;return(n=u(n))?(r?Cr(e,t,r):null==t)?n.slice(v(n),g(n)+1):(t+="",n.slice(i(n,t),o(n,t)+1)):n}function Te(n,t,r){
return r&&Cr(n,t,r)&&(t=null),n=u(n),n.match(t||Wn)||[]}function Ue(n,t,r){return r&&Cr(n,t,r)&&(t=null),p(n)?Ne(n):it(n,t)}function $e(n){return function(){return n}}function Fe(n){return n}function Ne(n){return xt(ot(n,true))}function Le(n,t,r){if(null==r){var e=ve(t),u=e?Ki(t):null;((u=u&&u.length?yt(t,u):null)?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=yt(t,Ki(t)));var i=true,e=-1,o=$i(n),f=u.length;false===r?i=false:ve(r)&&"chain"in r&&(i=r.chain);for(;++e<f;){r=u[e];var l=t[r];n[r]=l,o&&(n.prototype[r]=function(t){
return function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=Dn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],_u.apply(r,arguments),t.apply(n,r)}}(l))}return n}function ze(){}function Be(n){return Wr(n)?kt(n):Ot(n)}h=h?Zn.defaults(Yn.Object(),h,Zn.pick(Yn,Tn)):Yn;var Me=h.Array,Pe=h.Date,qe=h.Error,De=h.Function,Ke=h.Math,Ve=h.Number,Ye=h.Object,Ze=h.RegExp,Ge=h.String,Je=h.TypeError,Xe=Me.prototype,He=Ye.prototype,Qe=Ge.prototype,nu=(nu=h.window)?nu.document:null,tu=De.prototype.toString,ru=He.hasOwnProperty,eu=0,uu=He.toString,iu=h._,ou=Ze("^"+Ee(tu.call(ru)).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fu=Ar(h,"ArrayBuffer"),lu=Ar(fu&&new fu(0),"slice"),au=Ke.ceil,cu=h.clearTimeout,su=Ke.floor,pu=Ar(Ye,"getPrototypeOf"),hu=h.parseFloat,_u=Xe.push,vu=Ar(h,"Set"),gu=h.setTimeout,yu=Xe.splice,du=Ar(h,"Uint8Array"),mu=Ar(h,"WeakMap"),wu=function(){
try{var n=Ar(h,"Float64Array"),t=new n(new fu(10),0,1)&&n}catch(r){}return t||null}(),bu=Ar(Ye,"create"),xu=Ar(Me,"isArray"),Au=h.isFinite,ju=Ar(Ye,"keys"),ku=Ke.max,Ou=Ke.min,Ru=Ar(Pe,"now"),Iu=Ar(Ve,"isFinite"),Eu=h.parseInt,Cu=Ke.random,Wu=Ve.NEGATIVE_INFINITY,Su=Ve.POSITIVE_INFINITY,Tu=4294967294,Uu=2147483647,$u=wu?wu.BYTES_PER_ELEMENT:0,Fu=9007199254740991,Nu=mu&&new mu,Lu={},zu=Nn.support={};!function(n){function t(){this.x=n}var r=[];t.prototype={valueOf:n,y:n};for(var e in new t)r.push(e);
try{zu.dom=11===nu.createDocumentFragment().nodeType}catch(u){zu.dom=false}}(1,0),Nn.templateSettings={escape:hn,evaluate:_n,interpolate:vn,variable:"",imports:{_:Nn}};var Bu=function(){function n(){}return function(t){if(ve(t)){n.prototype=t;var r=new n;n.prototype=null}return r||{}}}(),Mu=Yt(vt),Pu=Yt(gt,true),qu=Zt(),Du=Zt(true),Ku=Nu?function(n,t){return Nu.set(n,t),n}:Fe;lu||(Pt=fu&&du?function(n){var t=n.byteLength,r=wu?su(t/$u):0,e=r*$u,u=new fu(t);if(r){var i=new wu(u,0,r);i.set(new wu(n,0,r))}return t!=e&&(i=new du(u,e),
i.set(new du(n,e))),u}:$e(null));var Vu=bu&&vu?function(n){return new Pn(n)}:$e(null),Yu=Nu?function(n){return Nu.get(n)}:ze,Zu=kt("length"),Gu=function(){var n=0,t=0;return function(r,e){var u=wi(),i=T-(u-t);if(t=u,0<i){if(++n>=S)return r}else n=0;return Ku(r,e)}}(),Ju=ae(function(n,t){return Ir(n)?lt(n,ht(t,false,true)):[]}),Xu=tr(),Hu=tr(true),Qu=ae(function(n){for(var t=n.length,e=t,u=Me(c),i=br(),o=i==r,f=[];e--;){var l=n[e]=Ir(l=n[e])?l:[];u[e]=o&&120<=l.length?Vu(e&&l):null}var o=n[0],a=-1,c=o?o.length:0,s=u[0];
n:for(;++a<c;)if(l=o[a],0>(s?qn(s,l):i(f,l,0))){for(e=t;--e;){var p=u[e];if(0>(p?qn(p,l):i(n[e],l,0)))continue n}s&&s.push(l),f.push(l)}return f}),ni=ae(function(t,r){r=ht(r);var e=et(t,r);return Rt(t,r.sort(n)),e}),ti=_r(),ri=_r(true),ei=ae(function(n){return $t(ht(n,false,true))}),ui=ae(function(n,t){return Ir(n)?lt(n,t):[]}),ii=ae(Gr),oi=ae(function(n){var t=n.length,r=2<t?n[t-2]:m,e=1<t?n[t-1]:m;return 2<t&&typeof r=="function"?t-=2:(r=1<t&&typeof e=="function"?(--t,e):m,e=m),n.length=t,Jr(n,r,e)}),fi=ae(function(n,t){
return et(n,ht(t))}),li=Kt(function(n,t,r){ru.call(n,r)?++n[r]:n[r]=1}),ai=nr(Mu),ci=nr(Pu,true),si=ur(Kn,Mu),pi=ur(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Pu),hi=Kt(function(n,t,r){ru.call(n,r)?n[r].push(t):n[r]=[t]}),_i=Kt(function(n,t,r){n[r]=t}),vi=ae(function(n,t,r){var e=-1,u=typeof t=="function",i=Wr(t),o=Ir(n)?Me(n.length):[];return Mu(n,function(n){var f=u?t:i&&null!=n?n[t]:null;o[++e]=f?f.apply(n,r):Rr(n,t,r)}),o}),gi=Kt(function(n,t,r){n[r?0:1].push(t)},function(){
return[[],[]]}),yi=cr(Xn,Mu),di=cr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Pu),mi=ae(function(n,t){if(null==n)return[];var r=t[2];return r&&Cr(t[0],t[1],r)&&(t.length=1),Tt(n,ht(t),[])}),wi=Ru||function(){return(new Pe).getTime()},bi=ae(function(n,t,r){var e=b;if(r.length)var u=_(r,bi.placeholder),e=e|O;return vr(n,e,t,r,u)}),xi=ae(function(n,t){t=t.length?ht(t):je(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=vr(n[u],b,n)}return n}),Ai=ae(function(n,t,r){
var e=b|x;if(r.length)var u=_(r,Ai.placeholder),e=e|O;return vr(t,e,n,r,u)}),ji=Ht(j),ki=Ht(k),Oi=ae(function(n,t){return ft(n,1,t)}),Ri=ae(function(n,t,r){return ft(n,t,r)}),Ii=er(),Ei=er(true),Ci=ar(O),Wi=ar(R),Si=ae(function(n,t){return vr(n,E,null,null,null,ht(t))}),Ti=xu||function(n){return p(n)&&Tr(n.length)&&uu.call(n)==B};zu.dom||(pe=function(n){return!!n&&1===n.nodeType&&p(n)&&!Fi(n)});var Ui=Iu||function(n){return typeof n=="number"&&Au(n)},$i=e(/x/)||du&&!e(du)?function(n){return uu.call(n)==D;
}:e,Fi=pu?function(n){if(!n||uu.call(n)!=V)return false;var t=Ar(n,"valueOf"),r=t&&(r=pu(t))&&pu(r);return r?n==r||pu(n)==r:Fr(n)}:Fr,Ni=Vt(function(n,t,r){return r?tt(n,t,r):rt(n,t)}),Li=ae(function(n){var t=n[0];return null==t?t:(n.push(Qn),Ni.apply(m,n))}),zi=rr(vt),Bi=rr(gt),Mi=ir(qu),Pi=ir(Du),qi=or(vt),Di=or(gt),Ki=ju?function(n){var t=null==n?null:n.constructor;return typeof t=="function"&&t.prototype===n||typeof n!="function"&&Ir(n)?Nr(n):ve(n)?ju(n):[]}:Nr,Vi=fr(true),Yi=fr(),Zi=Vt(jt),Gi=ae(function(n,t){
if(null==n)return{};if("function"!=typeof t[0])return t=Jn(ht(t),Ge),Ur(n,lt(ke(n),t));var r=Mt(t[0],t[1],3);return $r(n,function(n,t,e){return!r(n,t,e)})}),Ji=ae(function(n,t){return null==n?{}:"function"==typeof t[0]?$r(n,Mt(t[0],t[1],3)):Ur(n,ht(t))}),Xi=Jt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Hi=Jt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Qi=lr(),no=lr(true);8!=Eu(Sn+"08")&&(Ce=function(n,t,r){return(r?Cr(n,t,r):null==t)?t=0:t&&(t=+t),
n=Se(n),Eu(n,t||(kn.test(n)?16:10))});var to=Jt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),ro=Jt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),eo=ae(function(n,t){try{return n.apply(m,t)}catch(r){return _e(r)?r:new qe(r)}}),uo=ae(function(n,t){return function(r){return Rr(r,n,t)}}),io=ae(function(n,t){return function(r){return Rr(n,r,t)}}),oo=Qt(ce,Wu),fo=Qt(be,Su);return Nn.prototype=Ln.prototype,zn.prototype=Bu(Ln.prototype),zn.prototype.constructor=zn,
Bn.prototype=Bu(Ln.prototype),Bn.prototype.constructor=Bn,Mn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Mn.prototype.get=function(n){return"__proto__"==n?m:this.__data__[n]},Mn.prototype.has=function(n){return"__proto__"!=n&&ru.call(this.__data__,n)},Mn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Pn.prototype.push=function(n){var t=this.data;typeof n=="string"||ve(n)?t.set.add(n):t.hash[n]=true},le.Cache=Mn,Nn.after=function(n,t){if(typeof t!="function"){
if(typeof n!="function")throw new Je(N);var r=n;n=t,t=r}return n=Au(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},Nn.ary=function(n,t,r){return r&&Cr(n,t,r)&&(t=null),t=n&&null==t?n.length:ku(+t||0,0),vr(n,I,null,null,null,null,t)},Nn.assign=Ni,Nn.at=fi,Nn.before=oe,Nn.bind=bi,Nn.bindAll=xi,Nn.bindKey=Ai,Nn.callback=Ue,Nn.chain=Hr,Nn.chunk=function(n,t,r){t=(r?Cr(n,t,r):null==t)?1:ku(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,i=Me(au(e/t));r<e;)i[++u]=Ct(n,r,r+=t);return i},Nn.compact=function(n){
for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var i=n[t];i&&(u[++e]=i)}return u},Nn.constant=$e,Nn.countBy=li,Nn.create=function(n,t,r){var e=Bu(n);return r&&Cr(n,t,r)&&(t=null),t?rt(e,t):e},Nn.curry=ji,Nn.curryRight=ki,Nn.debounce=fe,Nn.defaults=Li,Nn.defer=Oi,Nn.delay=Ri,Nn.difference=Ju,Nn.drop=Pr,Nn.dropRight=qr,Nn.dropRightWhile=function(n,t,r){return n&&n.length?Nt(n,mr(t,r,3),true,true):[]},Nn.dropWhile=function(n,t,r){return n&&n.length?Nt(n,mr(t,r,3),true):[]},Nn.fill=function(n,t,r,e){var u=n?n.length:0;
if(!u)return[];for(r&&typeof r!="number"&&Cr(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===m||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Nn.filter=te,Nn.flatten=function(n,t,r){var e=n?n.length:0;return r&&Cr(n,t,r)&&(t=false),e?ht(n,t):[]},Nn.flattenDeep=function(n){return n&&n.length?ht(n,true):[]},Nn.flow=Ii,Nn.flowRight=Ei,Nn.forEach=si,Nn.forEachRight=pi,Nn.forIn=Mi,Nn.forInRight=Pi,Nn.forOwn=qi,Nn.forOwnRight=Di,Nn.functions=je,Nn.groupBy=hi,Nn.indexBy=_i,
Nn.initial=function(n){return qr(n,1)},Nn.intersection=Qu,Nn.invert=function(n,t,r){r&&Cr(n,t,r)&&(t=null),r=-1;for(var e=Ki(n),u=e.length,i={};++r<u;){var o=e[r],f=n[o];t?ru.call(i,f)?i[f].push(o):i[f]=[o]:i[f]=o}return i},Nn.invoke=vi,Nn.keys=Ki,Nn.keysIn=ke,Nn.map=ee,Nn.mapKeys=Vi,Nn.mapValues=Yi,Nn.matches=Ne,Nn.matchesProperty=function(n,t){return At(n,ot(t,true))},Nn.memoize=le,Nn.merge=Zi,Nn.method=uo,Nn.methodOf=io,Nn.mixin=Le,Nn.negate=function(n){if(typeof n!="function")throw new Je(N);return function(){
return!n.apply(this,arguments)}},Nn.omit=Gi,Nn.once=function(n){return oe(2,n)},Nn.pairs=Oe,Nn.partial=Ci,Nn.partialRight=Wi,Nn.partition=gi,Nn.pick=Ji,Nn.pluck=function(n,t){return ee(n,Be(t))},Nn.property=Be,Nn.propertyOf=function(n){return function(t){return dt(n,Br(t),t+"")}},Nn.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=br(),u=n.length;++r<u;)for(var i=0,o=n[r];-1<(i=e(t,o,i));)yu.call(t,i,1);return t},Nn.pullAt=ni,Nn.range=function(n,t,r){r&&Cr(n,t,r)&&(t=r=null),
n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=ku(au((t-n)/(r||1)),0);for(var u=Me(t);++e<t;)u[e]=n,n+=r;return u},Nn.rearg=Si,Nn.reject=function(n,t,r){var e=Ti(n)?Gn:st;return t=mr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Nn.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,i=[],o=n.length;for(t=mr(t,r,3);++u<o;)r=n[u],t(r,u,n)&&(e.push(r),i.push(u));return Rt(n,i),e},Nn.rest=Yr,Nn.restParam=ae,Nn.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||Wr(t,n)?[e]:Br(t);
for(var e=-1,u=t.length,i=u-1,o=n;null!=o&&++e<u;){var f=t[e];ve(o)&&(e==i?o[f]=r:null==o[f]&&(o[f]=Er(t[e+1])?[]:{})),o=o[f]}return n},Nn.shuffle=function(n){return ue(n,Su)},Nn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Cr(n,t,r)&&(t=0,r=e),Ct(n,t,r)):[]},Nn.sortBy=function(n,t,r){if(null==n)return[];r&&Cr(n,t,r)&&(t=null);var e=-1;return t=mr(t,r,3),n=bt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),St(n,f)},Nn.sortByAll=mi,Nn.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Cr(t,r,e)&&(r=null),
Ti(t)||(t=null==t?[]:[t]),Ti(r)||(r=null==r?[]:[r]),Tt(n,t,r))},Nn.spread=function(n){if(typeof n!="function")throw new Je(N);return function(t){return n.apply(this,t)}},Nn.take=function(n,t,r){return n&&n.length?((r?Cr(n,t,r):null==t)&&(t=1),Ct(n,0,0>t?0:t)):[]},Nn.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Cr(n,t,r):null==t)&&(t=1),t=e-(+t||0),Ct(n,0>t?0:t)):[]},Nn.takeRightWhile=function(n,t,r){return n&&n.length?Nt(n,mr(t,r,3),false,true):[]},Nn.takeWhile=function(n,t,r){return n&&n.length?Nt(n,mr(t,r,3)):[];
},Nn.tap=function(n,t,r){return t.call(r,n),n},Nn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Je(N);return false===r?e=false:ve(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Fn.leading=e,Fn.maxWait=+t,Fn.trailing=u,fe(n,t,Fn)},Nn.thru=Qr,Nn.times=function(n,t,r){if(n=su(n),1>n||!Au(n))return[];var e=-1,u=Me(Ou(n,4294967295));for(t=Mt(t,r,1);++e<n;)4294967295>e?u[e]=t(e):t(e);return u},Nn.toArray=xe,Nn.toPlainObject=Ae,Nn.transform=function(n,t,r,e){var u=Ti(n)||we(n);
return t=mr(t,e,4),null==r&&(u||ve(n)?(e=n.constructor,r=u?Ti(n)?new e:[]:Bu($i(e)?e.prototype:null)):r={}),(u?Kn:vt)(n,function(n,e,u){return t(r,n,e,u)}),r},Nn.union=ei,Nn.uniq=Zr,Nn.unzip=Gr,Nn.unzipWith=Jr,Nn.values=Re,Nn.valuesIn=function(n){return Ft(n,ke(n))},Nn.where=function(n,t){return te(n,xt(t))},Nn.without=ui,Nn.wrap=function(n,t){return t=null==t?Fe:t,vr(t,O,null,[n],[])},Nn.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Ir(r))var e=e?lt(e,r).concat(lt(r,e)):r;
}return e?$t(e):[]},Nn.zip=ii,Nn.zipObject=Xr,Nn.zipWith=oi,Nn.backflow=Ei,Nn.collect=ee,Nn.compose=Ei,Nn.each=si,Nn.eachRight=pi,Nn.extend=Ni,Nn.iteratee=Ue,Nn.methods=je,Nn.object=Xr,Nn.select=te,Nn.tail=Yr,Nn.unique=Zr,Le(Nn,Nn),Nn.add=function(n,t){return(+n||0)+(+t||0)},Nn.attempt=eo,Nn.camelCase=Xi,Nn.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Nn.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&Cr(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),typeof r=="function"?ot(n,t,Mt(r,e,1)):ot(n,t);
},Nn.cloneDeep=function(n,t,r){return typeof t=="function"?ot(n,true,Mt(t,r,1)):ot(n,true)},Nn.deburr=Ie,Nn.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===m?e:Ou(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Nn.escape=function(n){return(n=u(n))&&pn.test(n)?n.replace(cn,a):n},Nn.escapeRegExp=Ee,Nn.every=ne,Nn.find=ai,Nn.findIndex=Xu,Nn.findKey=zi,Nn.findLast=ci,Nn.findLastIndex=Hu,Nn.findLastKey=Bi,Nn.findWhere=function(n,t){return ai(n,xt(t))},Nn.first=Dr,Nn.get=function(n,t,r){
return n=null==n?m:dt(n,Br(t),t+""),n===m?r:n},Nn.gt=ce,Nn.gte=function(n,t){return n>=t},Nn.has=function(n,t){if(null==n)return false;var r=ru.call(n,t);if(!r&&!Wr(t)){if(t=Br(t),n=1==t.length?n:dt(n,Ct(t,0,-1)),null==n)return false;t=Vr(t),r=ru.call(n,t)}return r||Tr(n.length)&&Er(t,n.length)&&(Ti(n)||se(n))},Nn.identity=Fe,Nn.includes=re,Nn.indexOf=Kr,Nn.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=Ou(t,r)&&n<ku(t,r)},Nn.isArguments=se,Nn.isArray=Ti,Nn.isBoolean=function(n){
return true===n||false===n||p(n)&&uu.call(n)==M},Nn.isDate=function(n){return p(n)&&uu.call(n)==P},Nn.isElement=pe,Nn.isEmpty=function(n){return null==n?true:Ir(n)&&(Ti(n)||me(n)||se(n)||p(n)&&$i(n.splice))?!n.length:!Ki(n).length},Nn.isEqual=he,Nn.isError=_e,Nn.isFinite=Ui,Nn.isFunction=$i,Nn.isMatch=function(n,t,r,e){return r=typeof r=="function"?Mt(r,e,3):m,wt(n,xr(t),r)},Nn.isNaN=function(n){return ye(n)&&n!=+n},Nn.isNative=ge,Nn.isNull=function(n){return null===n},Nn.isNumber=ye,Nn.isObject=ve,Nn.isPlainObject=Fi,
Nn.isRegExp=de,Nn.isString=me,Nn.isTypedArray=we,Nn.isUndefined=function(n){return n===m},Nn.kebabCase=Hi,Nn.last=Vr,Nn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?ku(e+r,0):Ou(r||0,e-1))+1;else if(r)return u=zt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return s(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Nn.lt=be,Nn.lte=function(n,t){return n<=t},Nn.max=oo,Nn.min=fo,Nn.noConflict=function(){return h._=iu,this},Nn.noop=ze,Nn.now=wi,
Nn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&Au(t)?(e=(t-e)/2,t=su(e),e=au(e),r=pr("",e,r),r.slice(0,t)+n+r):n},Nn.padLeft=Qi,Nn.padRight=no,Nn.parseInt=Ce,Nn.random=function(n,t,r){r&&Cr(n,t,r)&&(t=r=null);var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=Cu(),Ou(n+r*(t-n+hu("1e-"+((r+"").length-1))),t)):It(n,t)},Nn.reduce=yi,Nn.reduceRight=di,Nn.repeat=We,Nn.result=function(n,t,r){
var e=null==n?m:n[t];return e===m&&(null==n||Wr(t,n)||(t=Br(t),n=1==t.length?n:dt(n,Ct(t,0,-1)),e=null==n?m:n[Vr(t)]),e=e===m?r:e),$i(e)?e.call(n):e},Nn.runInContext=d,Nn.size=function(n){var t=n?Zu(n):0;return Tr(t)?t:Ki(n).length},Nn.snakeCase=to,Nn.some=ie,Nn.sortedIndex=ti,Nn.sortedLastIndex=ri,Nn.startCase=ro,Nn.startsWith=function(n,t,r){return n=u(n),r=null==r?0:Ou(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Nn.sum=function(n,t,r){r&&Cr(n,t,r)&&(t=null);var e=mr(),u=null==t;if(u&&e===it||(u=false,
t=e(t,r,3)),u){for(n=Ti(n)?n:Lr(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Ut(n,t);return n},Nn.template=function(n,t,r){var e=Nn.templateSettings;r&&Cr(n,t,r)&&(t=r=null),n=u(n),t=tt(rt({},r||t),e,nt),r=tt(rt({},t.imports),e.imports,nt);var i,o,f=Ki(r),l=Ft(r,f),a=0;r=t.interpolate||En;var s="__p+='";r=Ze((t.escape||En).source+"|"+r.source+"|"+(r===vn?An:En).source+"|"+(t.evaluate||En).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,l){
return e||(e=u),s+=n.slice(a,l).replace(Cn,c),r&&(i=true,s+="'+__e("+r+")+'"),f&&(o=true,s+="';"+f+";\n__p+='"),e&&(s+="'+((__t=("+e+"))==null?'':__t)+'"),a=l+t.length,t}),s+="';",(t=t.variable)||(s="with(obj){"+s+"}"),s=(o?s.replace(on,""):s).replace(fn,"$1").replace(ln,"$1;"),s="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(i?",__e=_.escape":"")+(o?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+s+"return __p}",t=eo(function(){return De(f,p+"return "+s).apply(m,l);
}),t.source=s,_e(t))throw t;return t},Nn.trim=Se,Nn.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Cr(e,t,r):null==t)?v(n):i(n,t+"")):n},Nn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Cr(e,t,r):null==t)?n.slice(0,g(n)+1):n.slice(0,o(n,t+"")+1):n},Nn.trunc=function(n,t,r){r&&Cr(n,t,r)&&(t=null);var e=C;if(r=W,null!=t)if(ve(t)){var i="separator"in t?t.separator:i,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,
1>e)return r;if(t=n.slice(0,e),null==i)return t+r;if(de(i)){if(n.slice(e).search(i)){var o,f=n.slice(0,e);for(i.global||(i=Ze(i.source,(jn.exec(i)||"")+"g")),i.lastIndex=0;n=i.exec(f);)o=n.index;t=t.slice(0,null==o?e:o)}}else n.indexOf(i,e)!=e&&(i=t.lastIndexOf(i),-1<i&&(t=t.slice(0,i)));return t+r},Nn.unescape=function(n){return(n=u(n))&&sn.test(n)?n.replace(an,y):n},Nn.uniqueId=function(n){var t=++eu;return u(n)+t},Nn.words=Te,Nn.all=ne,Nn.any=ie,Nn.contains=re,Nn.eq=he,Nn.detect=ai,Nn.foldl=yi,
Nn.foldr=di,Nn.head=Dr,Nn.include=re,Nn.inject=yi,Le(Nn,function(){var n={};return vt(Nn,function(t,r){Nn.prototype[r]||(n[r]=t)}),n}(),false),Nn.sample=ue,Nn.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return ue(t,n)}):ue(this.value())},Nn.VERSION=w,Kn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Nn[n].placeholder=Nn}),Kn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=F,e=t==U;Bn.prototype[n]=function(n,u){var i=this.__filtered__,o=i&&e?new Bn(this):this.clone();
return(o.__iteratees__||(o.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:mr(n,u,1),limit:-1,type:t}),o.__filtered__=i||r,o}}),Kn(["drop","take"],function(n,t){var r=n+"While";Bn.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:ku(su(r)||0,0),e?t?u.__takeCount__=Ou(u.__takeCount__,r):Vr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},Bn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse();
},Bn.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),Kn(["first","last"],function(n,t){var r="take"+(t?"Right":"");Bn.prototype[n]=function(){return this[r](1).value()[0]}}),Kn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");Bn.prototype[n]=function(){return this[r](1)}}),Kn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?xt:Be;Bn.prototype[n]=function(n){return this[r](e(n))}}),Bn.prototype.compact=function(){return this.filter(Fe)},Bn.prototype.reject=function(n,t){
return n=mr(n,t,1),this.filter(function(t){return!n(t)})},Bn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return 0>n?r=this.takeRight(-n):n&&(r=this.drop(n)),t!==m&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Bn.prototype.toArray=function(){return this.drop(0)},vt(Bn.prototype,function(n,t){var r=Nn[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Nn.prototype[t]=function(){function t(n){return n=[n],_u.apply(n,i),r.apply(Nn,n)}var i=arguments,o=this.__chain__,f=this.__wrapped__,l=!!this.__actions__.length,a=f instanceof Bn,c=i[0],s=a||Ti(f);
return s&&e&&typeof c=="function"&&1!=c.length&&(a=s=false),a=a&&!l,u&&!o?a?n.call(f):r.call(Nn,this.value()):s?(f=n.apply(a?f:new Bn(this),i),u||!l&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Qr,args:[t],thisArg:Nn}),new zn(f,o)):this.thru(t)}}}),Kn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?Qe:Xe)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);Nn.prototype[n]=function(){
var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),vt(Bn.prototype,function(n,t){var r=Nn[t];if(r){var e=r.name;(Lu[e]||(Lu[e]=[])).push({name:t,func:r})}}),Lu[sr(null,x).name]=[{name:"wrapper",func:null}],Bn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Bn(this.__wrapped__);return e.__actions__=n?Dn(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?Dn(t):null,
e.__takeCount__=this.__takeCount__,e.__views__=r?Dn(r):null,e},Bn.prototype.reverse=function(){if(this.__filtered__){var n=new Bn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Bn.prototype.value=function(){var n=this.__wrapped__.value();if(!Ti(n))return Lt(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,i=0,o=-1,f=u?u.length:0;++o<f;){var l=u[o],a=l.size;switch(l.type){case"drop":i+=a;break;case"dropRight":t-=a;break;case"take":
t=Ou(t,i+a);break;case"takeRight":i=ku(i,t-a)}}t={start:i,end:t},u=t.start,i=t.end,t=i-u,u=e?i:u-1,i=Ou(t,this.__takeCount__),f=(o=this.__iteratees__)?o.length:0,l=0,a=[];n:for(;t--&&l<i;){for(var u=u+r,c=-1,s=n[u];++c<f;){var p=o[c],h=p.iteratee,_=p.type;if(_==U){if(p.done&&(e?u>p.index:u<p.index)&&(p.count=0,p.done=false),p.index=u,!(p.done||(_=p.limit,p.done=-1<_?p.count++>=_:!h(s))))continue n}else if(p=h(s),_==F)s=p;else if(!p){if(_==$)continue n;break n}}a[l++]=s}return a},Nn.prototype.chain=function(){
return Hr(this)},Nn.prototype.commit=function(){return new zn(this.value(),this.__chain__)},Nn.prototype.plant=function(n){for(var t,r=this;r instanceof Ln;){var e=Mr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Nn.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Bn?(this.__actions__.length&&(n=new Bn(this)),new zn(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Nn.prototype.toString=function(){return this.value()+""},Nn.prototype.run=Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){
return Lt(this.__wrapped__,this.__actions__)},Nn.prototype.collect=Nn.prototype.map,Nn.prototype.head=Nn.prototype.first,Nn.prototype.select=Nn.prototype.filter,Nn.prototype.tail=Nn.prototype.rest,Nn}var m,w="3.9.3",b=1,x=2,A=4,j=8,k=16,O=32,R=64,I=128,E=256,C=30,W="...",S=150,T=16,U=0,$=1,F=2,N="Expected a function",L="__lodash_placeholder__",z="[object Arguments]",B="[object Array]",M="[object Boolean]",P="[object Date]",q="[object Error]",D="[object Function]",K="[object Number]",V="[object Object]",Y="[object RegExp]",Z="[object String]",G="[object ArrayBuffer]",J="[object Float32Array]",X="[object Float64Array]",H="[object Int8Array]",Q="[object Int16Array]",nn="[object Int32Array]",tn="[object Uint8Array]",rn="[object Uint8ClampedArray]",en="[object Uint16Array]",un="[object Uint32Array]",on=/\b__p\+='';/g,fn=/\b(__p\+=)''\+/g,ln=/(__e\(.*?\)|\b__t\))\+'';/g,an=/&(?:amp|lt|gt|quot|#39|#96);/g,cn=/[&<>"'`]/g,sn=RegExp(an.source),pn=RegExp(cn.source),hn=/<%-([\s\S]+?)%>/g,_n=/<%([\s\S]+?)%>/g,vn=/<%=([\s\S]+?)%>/g,gn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,yn=/^\w*$/,dn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,mn=/[.*+?^${}()|[\]\/\\]/g,wn=RegExp(mn.source),bn=/[\u0300-\u036f\ufe20-\ufe23]/g,xn=/\\(\\)?/g,An=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,jn=/\w*$/,kn=/^0[xX]/,On=/^\[object .+?Constructor\]$/,Rn=/^\d+$/,In=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,En=/($^)/,Cn=/['\n\r\u2028\u2029\\]/g,Wn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Sn=" \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Tn="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Un={};
Un[J]=Un[X]=Un[H]=Un[Q]=Un[nn]=Un[tn]=Un[rn]=Un[en]=Un[un]=true,Un[z]=Un[B]=Un[G]=Un[M]=Un[P]=Un[q]=Un[D]=Un["[object Map]"]=Un[K]=Un[V]=Un[Y]=Un["[object Set]"]=Un[Z]=Un["[object WeakMap]"]=false;var $n={};$n[z]=$n[B]=$n[G]=$n[M]=$n[P]=$n[J]=$n[X]=$n[H]=$n[Q]=$n[nn]=$n[K]=$n[V]=$n[Y]=$n[Z]=$n[tn]=$n[rn]=$n[en]=$n[un]=true,$n[q]=$n[D]=$n["[object Map]"]=$n["[object Set]"]=$n["[object WeakMap]"]=false;var Fn={leading:false,maxWait:0,trailing:false},Nn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A",
"\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u",
"\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Ln={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},zn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Bn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Pn=Bn[typeof exports]&&exports&&!exports.nodeType&&exports,qn=Bn[typeof module]&&module&&!module.nodeType&&module,Dn=Bn[typeof self]&&self&&self.Object&&self,Kn=Bn[typeof window]&&window&&window.Object&&window,Vn=qn&&qn.exports===Pn&&Pn,Yn=Pn&&qn&&typeof global=="object"&&global&&global.Object&&global||Kn!==(this&&this.window)&&Kn||Dn||this,Zn=d();
typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Yn._=Zn, define(function(){return Zn})):Pn&&qn?Vn?(qn.exports=Zn)._=Zn:Pn._=Zn:Yn._=Zn}).call(this);

1723
static/js/nya-bs-select.js Normal file

File diff suppressed because it is too large Load diff

6
static/js/nya-bs-select.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
static/js/textAngular-rangy.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,791 @@
/**
* @license AngularJS v1.3.10
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window, angular, undefined) {'use strict';
var $sanitizeMinErr = angular.$$minErr('$sanitize');
/**
* @ngdoc module
* @name ngSanitize
* @description
*
* # ngSanitize
*
* The `ngSanitize` module provides functionality to sanitize HTML.
*
*
* <div doc-module-components="ngSanitize"></div>
*
* See {@link ngSanitize.$sanitize `$sanitize`} for usage.
*/
/*
* HTML Parser By Misko Hevery (misko@hevery.com)
* based on: HTML Parser By John Resig (ejohn.org)
* Original code by Erik Arvidsson, Mozilla Public License
* http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
*
* // Use like so:
* htmlParser(htmlString, {
* start: function(tag, attrs, unary) {},
* end: function(tag) {},
* chars: function(text) {},
* comment: function(text) {}
* });
*
*/
/**
* @ngdoc service
* @name $sanitize
* @kind function
*
* @description
* The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
* then serialized back to properly escaped html string. This means that no unsafe input can make
* it into the returned string, however, since our parser is more strict than a typical browser
* parser, it's possible that some obscure input, which would be recognized as valid HTML by a
* browser, won't make it through the sanitizer. The input may also contain SVG markup.
* The whitelist is configured using the functions `aHrefSanitizationWhitelist` and
* `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider `$compileProvider`}.
*
* @param {string} html HTML input.
* @returns {string} Sanitized HTML.
*
* @example
<example module="sanitizeExample" deps="angular-sanitize.js">
<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>&lt;div ng-bind-html="snippet"&gt;<br/>&lt;/div&gt;</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>&lt;div ng-bind-html="deliberatelyTrustDangerousSnippet()"&gt;
&lt;/div&gt;</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>&lt;div ng-bind="snippet"&gt;<br/>&lt;/div&gt;</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')).getInnerHtml()).
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')).getInnerHtml()).
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')).getInnerHtml()).
toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
"&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
"snippet&lt;/p&gt;");
});
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')).getInnerHtml()).
toBe('new <b>text</b>');
expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
'new <b onclick="alert(1)">text</b>');
expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
"new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
});
</file>
</example>
*/
function $SanitizeProvider() {
this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
return function(html) {
if (typeof arguments[1] != 'undefined') {
arguments[1].version = 'taSanitize';
}
var buf = [];
htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
return !/^unsafe/.test($$sanitizeUri(uri, isImage));
}));
return buf.join('');
};
}];
}
function sanitizeText(chars) {
var buf = [];
var writer = htmlSanitizeWriter(buf, angular.noop);
writer.chars(chars);
return buf.join('');
}
// Regular Expressions for parsing tags and attributes
var START_TAG_REGEXP =
/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,
END_TAG_REGEXP = /^<\/\s*([\w:-]+)[^>]*>/,
ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
BEGIN_TAG_REGEXP = /^</,
BEGING_END_TAGE_REGEXP = /^<\//,
COMMENT_REGEXP = /<!--(.*?)-->/g,
SINGLE_COMMENT_REGEXP = /(^<!--.*?-->)/,
DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i,
CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
// Match everything outside of normal chars and " (quote character)
NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g,
WHITE_SPACE_REGEXP = /^(\s+)/;
// 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 = makeMap("area,br,col,hr,img,wbr,input");
// Elements that you can, intentionally, leave open (and which close themselves)
// http://dev.w3.org/html5/spec/Overview.html#optional-tags
var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
optionalEndTagInlineElements = makeMap("rp,rt"),
optionalEndTagElements = angular.extend({},
optionalEndTagInlineElements,
optionalEndTagBlockElements);
// Safe Block Elements - HTML5
var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("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,script,section,table,ul"));
// Inline Elements - HTML5
var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("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
var svgElements = makeMap("animate,animateColor,animateMotion,animateTransform,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,set," +
"stop,svg,switch,text,title,tspan,use");
// Special Elements (can contain anything)
var specialElements = makeMap("script,style");
var validElements = angular.extend({},
voidElements,
blockElements,
inlineElements,
optionalEndTagElements,
svgElements);
//Attributes that have href and hence need to be sanitized
var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap,xlink:href");
var htmlAttrs = makeMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+
'id,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+
'scope,scrolling,shape,size,span,start,summary,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 = makeMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
'attributeName,attributeType,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');
var validAttrs = angular.extend({},
uriAttrs,
svgAttrs,
htmlAttrs);
function makeMap(str) {
var obj = {}, items = str.split(','), i;
for (i = 0; i < items.length; i++) obj[items[i]] = true;
return obj;
}
/**
* @example
* htmlParser(htmlString, {
* start: function(tag, attrs, unary) {},
* end: function(tag) {},
* chars: function(text) {},
* comment: function(text) {}
* });
*
* @param {string} html string
* @param {object} handler
*/
function htmlParser(html, handler) {
if (typeof html !== 'string') {
if (html === null || typeof html === 'undefined') {
html = '';
} else {
html = '' + html;
}
}
var index, chars, match, stack = [], last = html, text;
stack.last = function() { return stack[ stack.length - 1 ]; };
while (html) {
text = '';
chars = true;
// Make sure we're not in a script or style element
if (!stack.last() || !specialElements[ stack.last() ]) {
// White space
if (WHITE_SPACE_REGEXP.test(html)) {
match = html.match(WHITE_SPACE_REGEXP);
if (match) {
var mat = match[0];
if (handler.whitespace) handler.whitespace(match[0]);
html = html.replace(match[0], '');
chars = false;
}
//Comment
} else if (SINGLE_COMMENT_REGEXP.test(html)) {
match = html.match(SINGLE_COMMENT_REGEXP);
if (match) {
if (handler.comment) handler.comment(match[1]);
html = html.replace(match[0], '');
chars = false;
}
// DOCTYPE
} else if (DOCTYPE_REGEXP.test(html)) {
match = html.match(DOCTYPE_REGEXP);
if (match) {
html = html.replace(match[0], '');
chars = false;
}
// end tag
} else if (BEGING_END_TAGE_REGEXP.test(html)) {
match = html.match(END_TAG_REGEXP);
if (match) {
html = html.substring(match[0].length);
match[0].replace(END_TAG_REGEXP, parseEndTag);
chars = false;
}
// start tag
} else if (BEGIN_TAG_REGEXP.test(html)) {
match = html.match(START_TAG_REGEXP);
if (match) {
// We only have a valid start-tag if there is a '>'.
if (match[4]) {
html = html.substring(match[0].length);
match[0].replace(START_TAG_REGEXP, parseStartTag);
}
chars = false;
} else {
// no ending tag found --- this piece should be encoded as an entity.
text += '<';
html = html.substring(1);
}
}
if (chars) {
index = html.indexOf("<");
text += index < 0 ? html : html.substring(0, index);
html = index < 0 ? "" : html.substring(index);
if (handler.chars) handler.chars(decodeEntities(text));
}
} else {
html = html.replace(new RegExp("([^]*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
function(all, text) {
text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1");
if (handler.chars) handler.chars(decodeEntities(text));
return "";
});
parseEndTag("", stack.last());
}
if (html == last) {
throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " +
"of html: {0}", html);
}
last = html;
}
// Clean up any remaining tags
parseEndTag();
function parseStartTag(tag, tagName, rest, unary) {
tagName = angular.lowercase(tagName);
if (blockElements[ tagName ]) {
while (stack.last() && inlineElements[ stack.last() ]) {
parseEndTag("", stack.last());
}
}
if (optionalEndTagElements[ tagName ] && stack.last() == tagName) {
parseEndTag("", tagName);
}
unary = voidElements[ tagName ] || !!unary;
if (!unary)
stack.push(tagName);
var attrs = {};
rest.replace(ATTR_REGEXP,
function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) {
var value = doubleQuotedValue
|| singleQuotedValue
|| unquotedValue
|| '';
attrs[name] = decodeEntities(value);
});
if (handler.start) handler.start(tagName, attrs, unary);
}
function parseEndTag(tag, tagName) {
var pos = 0, i;
tagName = angular.lowercase(tagName);
if (tagName)
// Find the closest opened tag of the same type
for (pos = stack.length - 1; pos >= 0; pos--)
if (stack[ pos ] == tagName)
break;
if (pos >= 0) {
// Close all the open elements, up the stack
for (i = stack.length - 1; i >= pos; i--)
if (handler.end) handler.end(stack[ i ]);
// Remove the open elements from the stack
stack.length = pos;
}
}
}
var hiddenPre=document.createElement("pre");
var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
/**
* decodes all entities into regular string
* @param value
* @returns {string} A string with decoded entities.
*/
function decodeEntities(value) {
if (!value) { return ''; }
// Note: IE8 does not preserve spaces at the start/end of innerHTML
// so we must capture them and reattach them afterward
var parts = spaceRe.exec(value);
var spaceBefore = parts[1];
var spaceAfter = parts[3];
var content = parts[2];
if (content) {
hiddenPre.innerHTML=content.replace(/</g,"&lt;");
// innerText depends on styling as it doesn't display hidden elements.
// Therefore, it's better to use textContent not to cause unnecessary
// reflows. However, IE<9 don't support textContent so the innerText
// fallback is necessary.
content = 'textContent' in hiddenPre ?
hiddenPre.textContent : hiddenPre.innerText;
}
return spaceBefore + content + spaceAfter;
}
/**
* 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, '&amp;').
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) {
// unsafe chars are: \u0000-\u001f \u007f-\u009f \u00ad \u0600-\u0604 \u070f \u17b4 \u17b5 \u200c-\u200f \u2028-\u202f \u2060-\u206f \ufeff \ufff0-\uffff from jslint.com/lint.html
// decimal values are: 0-31, 127-159, 173, 1536-1540, 1807, 6068, 6069, 8204-8207, 8232-8239, 8288-8303, 65279, 65520-65535
var c = value.charCodeAt(0);
// if unsafe character encode
if(c <= 159 ||
c == 173 ||
(c >= 1536 && c <= 1540) ||
c == 1807 ||
c == 6068 ||
c == 6069 ||
(c >= 8204 && c <= 8207) ||
(c >= 8232 && c <= 8239) ||
(c >= 8288 && c <= 8303) ||
c == 65279 ||
(c >= 65520 && c <= 65535)) return '&#' + c + ';';
return value; // avoids multilingual issues
}).
replace(/</g, '&lt;').
replace(/>/g, '&gt;');
}
var trim = (function() {
// native trim is way faster: http://jsperf.com/angular-trim-test
// but IE doesn't have it... :-(
// TODO: we should move this into IE/ES5 polyfill
if (!String.prototype.trim) {
return function(value) {
return angular.isString(value) ? value.replace(/^\s\s*/, '').replace(/\s\s*$/, '') : value;
};
}
return function(value) {
return angular.isString(value) ? value.trim() : value;
};
})();
// Custom logic for accepting certain style options only - textAngular
// Currently allows only the color, background-color, text-align, float, width and height attributes
// all other attributes should be easily done through classes.
function validStyles(styleAttr){
var result = '';
var styleArray = styleAttr.split(';');
angular.forEach(styleArray, function(value){
var v = value.split(':');
if(v.length == 2){
var key = trim(angular.lowercase(v[0]));
var value = trim(angular.lowercase(v[1]));
if(
(key === 'color' || key === 'background-color') && (
value.match(/^rgb\([0-9%,\. ]*\)$/i)
|| value.match(/^rgba\([0-9%,\. ]*\)$/i)
|| value.match(/^hsl\([0-9%,\. ]*\)$/i)
|| value.match(/^hsla\([0-9%,\. ]*\)$/i)
|| value.match(/^#[0-9a-f]{3,6}$/i)
|| value.match(/^[a-z]*$/i)
)
||
key === 'text-align' && (
value === 'left'
|| value === 'right'
|| value === 'center'
|| value === 'justify'
)
||
key === 'text-decoration' && (
value === 'underline'
|| value === 'line-through'
)
|| key === 'font-weight' && (
value === 'bold'
)
||
key === 'float' && (
value === 'left'
|| value === 'right'
|| value === 'none'
)
||
(key === 'width' || key === 'height') && (
value.match(/[0-9\.]*(px|em|rem|%)/)
)
|| // Reference #520
(key === 'direction' && value.match(/^ltr|rtl|initial|inherit$/))
) result += key + ': ' + value + ';';
}
});
return result;
}
// this function is used to manually allow specific attributes on specific tags with certain prerequisites
function validCustomTag(tag, attrs, lkey, value){
// catch the div placeholder for the iframe replacement
if (tag === 'img' && attrs['ta-insert-video']){
if(lkey === 'ta-insert-video' || lkey === 'allowfullscreen' || lkey === 'frameborder' || (lkey === 'contenteditable' && value === 'false')) return true;
}
return false;
}
/**
* create an HTML/XML writer which writes to buffer
* @param {Array} buf use buf.jain('') to get out sanitized html string
* @returns {object} in the form of {
* start: function(tag, attrs, unary) {},
* end: function(tag) {},
* chars: function(text) {},
* comment: function(text) {}
* }
*/
function htmlSanitizeWriter(buf, uriValidator) {
var ignore = false;
var out = angular.bind(buf, buf.push);
return {
start: function(tag, attrs, unary) {
tag = angular.lowercase(tag);
if (!ignore && specialElements[tag]) {
ignore = tag;
}
if (!ignore && validElements[tag] === true) {
out('<');
out(tag);
angular.forEach(attrs, function(value, key) {
var lkey=angular.lowercase(key);
var isImage=(tag === 'img' && lkey === 'src') || (lkey === 'background');
if ((lkey === 'style' && (value = validStyles(value)) !== '') || validCustomTag(tag, attrs, lkey, value) || validAttrs[lkey] === true &&
(uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
out(' ');
out(key);
out('="');
out(encodeEntities(value));
out('"');
}
});
out(unary ? '/>' : '>');
}
},
comment: function (com) {
out(com);
},
whitespace: function (ws) {
out(encodeEntities(ws));
},
end: function(tag) {
tag = angular.lowercase(tag);
if (!ignore && validElements[tag] === true) {
out('</');
out(tag);
out('>');
}
if (tag == ignore) {
ignore = false;
}
},
chars: function(chars) {
if (!ignore) {
out(encodeEntities(chars));
}
}
};
}
// define ngSanitize module and register $sanitize service
angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
/* global sanitizeText: false */
/**
* @ngdoc filter
* @name linky
* @kind function
*
* @description
* Finds links in text input and turns them into html links. Supports http/https/ftp/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.
* @returns {string} Html-linkified text.
*
* @usage
<span ng-bind-html="linky_expression | linky"></span>
*
* @example
<example module="linkyExample" deps="angular-sanitize.js">
<file name="index.html">
<script>
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.snippetWithTarget = 'http://angularjs.org/';
}]);
</script>
<div ng-controller="ExampleController">
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
<table>
<tr>
<td>Filter</td>
<td>Source</td>
<td>Rendered</td>
</tr>
<tr id="linky-filter">
<td>linky filter</td>
<td>
<pre>&lt;div ng-bind-html="snippet | linky"&gt;<br>&lt;/div&gt;</pre>
</td>
<td>
<div ng-bind-html="snippet | linky"></div>
</td>
</tr>
<tr id="linky-target">
<td>linky target</td>
<td>
<pre>&lt;div ng-bind-html="snippetWithTarget | linky:'_blank'"&gt;<br>&lt;/div&gt;</pre>
</td>
<td>
<div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
</td>
</tr>
<tr id="escaped-html">
<td>no filter</td>
<td><pre>&lt;div ng-bind="snippet"&gt;<br>&lt;/div&gt;</pre></td>
<td><div ng-bind="snippet"></div></td>
</tr>
</table>
</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("snippetWithTarget | linky:'_blank'")).getText()).
toBe('http://angularjs.org/');
expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
});
</file>
</example>
*/
angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
var LINKY_URL_REGEXP =
/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"”’]/,
MAILTO_REGEXP = /^mailto:/;
return function(text, target) {
if (!text) return text;
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) {
html.push('<a ');
if (angular.isDefined(target)) {
html.push('target="',
target,
'" ');
}
html.push('href="',
url.replace(/"/g, '&quot;'),
'">');
addText(text);
html.push('</a>');
}
};
}]);
})(window, window.angular);

6
static/js/textAngular-sanitize.min.js vendored Normal file

File diff suppressed because one or more lines are too long

3069
static/js/textAngular.js Normal file

File diff suppressed because it is too large Load diff

3
static/js/textAngular.min.js vendored Normal file

File diff suppressed because one or more lines are too long

507
static/js/toaster.js Normal file
View file

@ -0,0 +1,507 @@
/* global angular */
(function(window, document) {
'use strict';
/*
* AngularJS Toaster
* Version: 2.0.0
*
* Copyright 2013-2016 Jiri Kavulak.
* All Rights Reserved.
* Use, reproduction, distribution, and modification of this code is subject to the terms and
* conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
*
* Author: Jiri Kavulak
* Related to project of John Papa, Hans Fjällemark and Nguyễn Thiện Hùng (thienhung1989)
*/
angular.module('toaster', []).constant(
'toasterConfig', {
'limit': 0, // limits max number of toasts
'tap-to-dismiss': true,
'close-button': false,
'close-html': '<button class="toast-close-button" type="button">&times;</button>',
'newest-on-top': true,
'time-out': 5000,
'icon-classes': {
error: 'toast-error',
info: 'toast-info',
wait: 'toast-wait',
success: 'toast-success',
warning: 'toast-warning'
},
'body-output-type': '', // Options: '', 'trustedHtml', 'template', 'templateWithData', 'directive'
'body-template': 'toasterBodyTmpl.html',
'icon-class': 'toast-info',
'position-class': 'toast-top-right', // Options (see CSS):
// 'toast-top-full-width', 'toast-bottom-full-width', 'toast-center',
// 'toast-top-left', 'toast-top-center', 'toast-top-right',
// 'toast-bottom-left', 'toast-bottom-center', 'toast-bottom-right',
'title-class': 'toast-title',
'message-class': 'toast-message',
'prevent-duplicates': false,
'mouseover-timer-stop': true // stop timeout on mouseover and restart timer on mouseout
}
).service(
'toaster', [
'$rootScope', 'toasterConfig', function($rootScope, toasterConfig) {
// http://stackoverflow.com/questions/26501688/a-typescript-guid-class
var Guid = (function() {
var Guid = {};
Guid.newGuid = function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
};
return Guid;
}());
this.pop = function(type, title, body, timeout, bodyOutputType, clickHandler, toasterId, showCloseButton, toastId, onHideCallback) {
if (angular.isObject(type)) {
var params = type; // Enable named parameters as pop argument
this.toast = {
type: params.type,
title: params.title,
body: params.body,
timeout: params.timeout,
bodyOutputType: params.bodyOutputType,
clickHandler: params.clickHandler,
showCloseButton: params.showCloseButton,
closeHtml: params.closeHtml,
toastId: params.toastId,
onShowCallback: params.onShowCallback,
onHideCallback: params.onHideCallback,
directiveData: params.directiveData
};
toasterId = params.toasterId;
} else {
this.toast = {
type: type,
title: title,
body: body,
timeout: timeout,
bodyOutputType: bodyOutputType,
clickHandler: clickHandler,
showCloseButton: showCloseButton,
toastId: toastId,
onHideCallback: onHideCallback
};
}
if (!this.toast.toastId || !this.toast.toastId.length) {
this.toast.toastId = Guid.newGuid();
}
$rootScope.$emit('toaster-newToast', toasterId, this.toast.toastId);
return {
toasterId: toasterId,
toastId: this.toast.toastId
};
};
this.clear = function(toasterId, toastId) {
if (angular.isObject(toasterId)) {
$rootScope.$emit('toaster-clearToasts', toasterId.toasterId, toasterId.toastId);
} else {
$rootScope.$emit('toaster-clearToasts', toasterId, toastId);
}
};
// Create one method per icon class, to allow to call toaster.info() and similar
for (var type in toasterConfig['icon-classes']) {
this[type] = createTypeMethod(type);
}
function createTypeMethod(toasterType) {
return function(title, body, timeout, bodyOutputType, clickHandler, toasterId, showCloseButton, toastId, onHideCallback) {
if (angular.isString(title)) {
return this.pop(
toasterType,
title,
body,
timeout,
bodyOutputType,
clickHandler,
toasterId,
showCloseButton,
toastId,
onHideCallback);
} else { // 'title' is actually an object with options
return this.pop(angular.extend(title, { type: toasterType }));
}
};
}
}]
).factory(
'toasterEventRegistry', [
'$rootScope', function($rootScope) {
var deregisterNewToast = null, deregisterClearToasts = null, newToastEventSubscribers = [], clearToastsEventSubscribers = [], toasterFactory;
toasterFactory = {
setup: function() {
if (!deregisterNewToast) {
deregisterNewToast = $rootScope.$on(
'toaster-newToast', function(event, toasterId, toastId) {
for (var i = 0, len = newToastEventSubscribers.length; i < len; i++) {
newToastEventSubscribers[i](event, toasterId, toastId);
}
});
}
if (!deregisterClearToasts) {
deregisterClearToasts = $rootScope.$on(
'toaster-clearToasts', function(event, toasterId, toastId) {
for (var i = 0, len = clearToastsEventSubscribers.length; i < len; i++) {
clearToastsEventSubscribers[i](event, toasterId, toastId);
}
});
}
},
subscribeToNewToastEvent: function(onNewToast) {
newToastEventSubscribers.push(onNewToast);
},
subscribeToClearToastsEvent: function(onClearToasts) {
clearToastsEventSubscribers.push(onClearToasts);
},
unsubscribeToNewToastEvent: function(onNewToast) {
var index = newToastEventSubscribers.indexOf(onNewToast);
if (index >= 0) {
newToastEventSubscribers.splice(index, 1);
}
if (newToastEventSubscribers.length === 0) {
deregisterNewToast();
deregisterNewToast = null;
}
},
unsubscribeToClearToastsEvent: function(onClearToasts) {
var index = clearToastsEventSubscribers.indexOf(onClearToasts);
if (index >= 0) {
clearToastsEventSubscribers.splice(index, 1);
}
if (clearToastsEventSubscribers.length === 0) {
deregisterClearToasts();
deregisterClearToasts = null;
}
}
};
return {
setup: toasterFactory.setup,
subscribeToNewToastEvent: toasterFactory.subscribeToNewToastEvent,
subscribeToClearToastsEvent: toasterFactory.subscribeToClearToastsEvent,
unsubscribeToNewToastEvent: toasterFactory.unsubscribeToNewToastEvent,
unsubscribeToClearToastsEvent: toasterFactory.unsubscribeToClearToastsEvent
};
}]
)
.directive('directiveTemplate', ['$compile', '$injector', function($compile, $injector) {
return {
restrict: 'A',
scope: {
directiveName: '@directiveName',
directiveData: '@directiveData'
},
replace: true,
link: function(scope, elm, attrs) {
scope.$watch('directiveName', function(directiveName) {
if (angular.isUndefined(directiveName) || directiveName.length <= 0)
throw new Error('A valid directive name must be provided via the toast body argument when using bodyOutputType: directive');
var directive;
try {
directive = $injector.get(attrs.$normalize(directiveName) + 'Directive');
} catch (e) {
throw new Error(directiveName + ' could not be found. ' +
'The name should appear as it exists in the markup, not camelCased as it would appear in the directive declaration,' +
' e.g. directive-name not directiveName.');
}
var directiveDetails = directive[0];
if (directiveDetails.scope !== true && directiveDetails.scope) {
throw new Error('Cannot use a directive with an isolated scope. ' +
'The scope must be either true or falsy (e.g. false/null/undefined). ' +
'Occurred for directive ' + directiveName + '.');
}
if (directiveDetails.restrict.indexOf('A') < 0) {
throw new Error('Directives must be usable as attributes. ' +
'Add "A" to the restrict option (or remove the option entirely). Occurred for directive ' +
directiveName + '.');
}
if (scope.directiveData)
scope.directiveData = angular.fromJson(scope.directiveData);
var template = $compile('<div ' + directiveName + '></div>')(scope);
elm.append(template);
});
}
};
}])
.directive(
'toasterContainer', [
'$parse', '$rootScope', '$interval', '$sce', 'toasterConfig', 'toaster', 'toasterEventRegistry',
function($parse, $rootScope, $interval, $sce, toasterConfig, toaster, toasterEventRegistry) {
return {
replace: true,
restrict: 'EA',
scope: true, // creates an internal scope for this directive (one per directive instance)
link: function(scope, elm, attrs) {
var mergedConfig;
// Merges configuration set in directive with default one
mergedConfig = angular.extend({}, toasterConfig, scope.$eval(attrs.toasterOptions));
scope.config = {
toasterId: mergedConfig['toaster-id'],
position: mergedConfig['position-class'],
title: mergedConfig['title-class'],
message: mergedConfig['message-class'],
tap: mergedConfig['tap-to-dismiss'],
closeButton: mergedConfig['close-button'],
closeHtml: mergedConfig['close-html'],
animation: mergedConfig['animation-class'],
mouseoverTimer: mergedConfig['mouseover-timer-stop']
};
scope.$on(
"$destroy", function() {
toasterEventRegistry.unsubscribeToNewToastEvent(scope._onNewToast);
toasterEventRegistry.unsubscribeToClearToastsEvent(scope._onClearToasts);
}
);
function setTimeout(toast, time) {
toast.timeoutPromise = $interval(
function() {
scope.removeToast(toast.toastId);
}, time, 1
);
}
scope.configureTimer = function(toast) {
var timeout = angular.isNumber(toast.timeout) ? toast.timeout : mergedConfig['time-out'];
if (typeof timeout === "object") timeout = timeout[toast.type];
if (timeout > 0) {
setTimeout(toast, timeout);
}
};
function addToast(toast, toastId) {
toast.type = mergedConfig['icon-classes'][toast.type];
if (!toast.type) {
toast.type = mergedConfig['icon-class'];
}
if (mergedConfig['prevent-duplicates'] === true && scope.toasters.length) {
if (scope.toasters[scope.toasters.length - 1].body === toast.body) {
return;
} else {
var i, len, dupFound = false;
for (i = 0, len = scope.toasters.length; i < len; i++) {
if (scope.toasters[i].toastId === toastId) {
dupFound = true;
break;
}
}
if (dupFound) return;
}
}
// set the showCloseButton property on the toast so that
// each template can bind directly to the property to show/hide
// the close button
var closeButton = mergedConfig['close-button'];
// if toast.showCloseButton is a boolean value,
// it was specifically overriden in the pop arguments
if (typeof toast.showCloseButton === "boolean") {
} else if (typeof closeButton === "boolean") {
toast.showCloseButton = closeButton;
} else if (typeof closeButton === "object") {
var closeButtonForType = closeButton[toast.type];
if (typeof closeButtonForType !== "undefined" && closeButtonForType !== null) {
toast.showCloseButton = closeButtonForType;
}
} else {
// if an option was not set, default to false.
toast.showCloseButton = false;
}
if (toast.showCloseButton) {
toast.closeHtml = $sce.trustAsHtml(toast.closeHtml || scope.config.closeHtml);
}
// Set the toast.bodyOutputType to the default if it isn't set
toast.bodyOutputType = toast.bodyOutputType || mergedConfig['body-output-type'];
switch (toast.bodyOutputType) {
case 'trustedHtml':
toast.html = $sce.trustAsHtml(toast.body);
break;
case 'template':
toast.bodyTemplate = toast.body || mergedConfig['body-template'];
break;
case 'templateWithData':
var fcGet = $parse(toast.body || mergedConfig['body-template']);
var templateWithData = fcGet(scope);
toast.bodyTemplate = templateWithData.template;
toast.data = templateWithData.data;
break;
case 'directive':
toast.html = toast.body;
break;
}
scope.configureTimer(toast);
if (mergedConfig['newest-on-top'] === true) {
scope.toasters.unshift(toast);
if (mergedConfig['limit'] > 0 && scope.toasters.length > mergedConfig['limit']) {
scope.toasters.pop();
}
} else {
scope.toasters.push(toast);
if (mergedConfig['limit'] > 0 && scope.toasters.length > mergedConfig['limit']) {
scope.toasters.shift();
}
}
if (angular.isFunction(toast.onShowCallback)) {
toast.onShowCallback();
}
}
scope.removeToast = function(toastId) {
var i, len;
for (i = 0, len = scope.toasters.length; i < len; i++) {
if (scope.toasters[i].toastId === toastId) {
removeToast(i);
break;
}
}
};
function removeToast(toastIndex) {
var toast = scope.toasters[toastIndex];
// toast is always defined since the index always has a match
if (toast.timeoutPromise) {
$interval.cancel(toast.timeoutPromise);
}
scope.toasters.splice(toastIndex, 1);
if (angular.isFunction(toast.onHideCallback)) {
toast.onHideCallback();
}
}
function removeAllToasts(toastId) {
for (var i = scope.toasters.length - 1; i >= 0; i--) {
if (isUndefinedOrNull(toastId)) {
removeToast(i);
} else {
if (scope.toasters[i].toastId == toastId) {
removeToast(i);
}
}
}
}
scope.toasters = [];
function isUndefinedOrNull(val) {
return angular.isUndefined(val) || val === null;
}
scope._onNewToast = function(event, toasterId, toastId) {
// Compatibility: if toaster has no toasterId defined, and if call to display
// hasn't either, then the request is for us
if ((isUndefinedOrNull(scope.config.toasterId) && isUndefinedOrNull(toasterId)) || (!isUndefinedOrNull(scope.config.toasterId) && !isUndefinedOrNull(toasterId) && scope.config.toasterId == toasterId)) {
addToast(toaster.toast, toastId);
}
};
scope._onClearToasts = function(event, toasterId, toastId) {
// Compatibility: if toaster has no toasterId defined, and if call to display
// hasn't either, then the request is for us
if (toasterId == '*' || (isUndefinedOrNull(scope.config.toasterId) && isUndefinedOrNull(toasterId)) || (!isUndefinedOrNull(scope.config.toasterId) && !isUndefinedOrNull(toasterId) && scope.config.toasterId == toasterId)) {
removeAllToasts(toastId);
}
};
toasterEventRegistry.setup();
toasterEventRegistry.subscribeToNewToastEvent(scope._onNewToast);
toasterEventRegistry.subscribeToClearToastsEvent(scope._onClearToasts);
},
controller: [
'$scope', '$element', '$attrs', function($scope, $element, $attrs) {
// Called on mouseover
$scope.stopTimer = function(toast) {
if ($scope.config.mouseoverTimer === true) {
if (toast.timeoutPromise) {
$interval.cancel(toast.timeoutPromise);
toast.timeoutPromise = null;
}
}
};
// Called on mouseout
$scope.restartTimer = function(toast) {
if ($scope.config.mouseoverTimer === true) {
if (!toast.timeoutPromise) {
$scope.configureTimer(toast);
}
} else if (toast.timeoutPromise === null) {
$scope.removeToast(toast.toastId);
}
};
$scope.click = function(toast, isCloseButton) {
if ($scope.config.tap === true || (toast.showCloseButton === true && isCloseButton === true)) {
var removeToast = true;
if (toast.clickHandler) {
if (angular.isFunction(toast.clickHandler)) {
removeToast = toast.clickHandler(toast, isCloseButton);
} else if (angular.isFunction($scope.$parent.$eval(toast.clickHandler))) {
removeToast = $scope.$parent.$eval(toast.clickHandler)(toast, isCloseButton);
} else {
console.log("TOAST-NOTE: Your click handler is not inside a parent scope of toaster-container.");
}
}
if (removeToast) {
$scope.removeToast(toast.toastId);
}
}
};
}],
template:
'<div id="toast-container" ng-class="[config.position, config.animation]">' +
'<div ng-repeat="toaster in toasters" class="toast" ng-class="toaster.type" ng-click="click(toaster)" ng-mouseover="stopTimer(toaster)" ng-mouseout="restartTimer(toaster)">' +
'<div ng-if="toaster.showCloseButton" ng-click="click(toaster, true)" ng-bind-html="toaster.closeHtml"></div>' +
'<div ng-class="config.title">{{toaster.title}}</div>' +
'<div ng-class="config.message" ng-switch on="toaster.bodyOutputType">' +
'<div ng-switch-when="trustedHtml" ng-bind-html="toaster.html"></div>' +
'<div ng-switch-when="template"><div ng-include="toaster.bodyTemplate"></div></div>' +
'<div ng-switch-when="templateWithData"><div ng-include="toaster.bodyTemplate"></div></div>' +
'<div ng-switch-when="directive"><div directive-template directive-name="{{toaster.html}}" directive-data="{{toaster.directiveData}}"></div></div>' +
'<div ng-switch-default >{{toaster.body}}</div>' +
'</div>' +
'</div>' +
'</div>'
};
}]
);
})(window, document);

13
static/js/toaster.min.js vendored Normal file

File diff suppressed because one or more lines are too long