form builder
This commit is contained in:
parent
6781f06ebe
commit
3541ed8701
42 changed files with 20670 additions and 7 deletions
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
3
angular_app/js/app.js
vendored
3
angular_app/js/app.js
vendored
|
@ -23,7 +23,8 @@ var eventManApp = angular.module('eventManApp', [
|
|||
'ui.router',
|
||||
'pascalprecht.translate',
|
||||
'angularFileUpload',
|
||||
'angular-websocket'
|
||||
'angular-websocket',
|
||||
'eda.easyformGen.stepway'
|
||||
]);
|
||||
|
||||
|
||||
|
|
11
angular_app/js/controllers.js
vendored
11
angular_app/js/controllers.js
vendored
|
@ -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
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
1
static/css/dropzone.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
862
static/css/eda.dragdropway.css
Normal file
862
static/css/eda.dragdropway.css
Normal 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
10
static/css/eda.dragdropway.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
70
static/css/eda.easyFormViewer.css
Normal file
70
static/css/eda.easyFormViewer.css
Normal 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
9
static/css/eda.easyFormViewer.min.css
vendored
Normal 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
591
static/css/eda.stepway.css
Executable 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
10
static/css/eda.stepway.min.css
vendored
Executable 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
1
static/css/eda.textAngular.min.css
vendored
Normal 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
8
static/css/loading-bar.min.css
vendored
Normal 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)}}
|
226
static/css/nya-bs-select.css
Normal file
226
static/css/nya-bs-select.css
Normal 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
7
static/css/nya-bs-select.min.css
vendored
Normal 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
193
static/css/textAngular.css
Normal 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
1
static/css/textAngular.min.css
vendored
Normal 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
240
static/css/toaster.css
Normal 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
12
static/css/toaster.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
3
static/js/angular-formly-templates-bootstrap.min.js
vendored
Normal file
3
static/js/angular-formly-templates-bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/js/angular-formly-templates-bootstrap.min.js.map
Normal file
1
static/js/angular-formly-templates-bootstrap.min.js.map
Normal file
File diff suppressed because one or more lines are too long
4
static/js/api-check.min.js
vendored
Normal file
4
static/js/api-check.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/js/api-check.min.js.map
Normal file
1
static/js/api-check.min.js.map
Normal file
File diff suppressed because one or more lines are too long
6153
static/js/eda.dragdropway.js
Normal file
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
6
static/js/eda.dragdropway.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1542
static/js/eda.easyFormViewer.js
Normal file
1542
static/js/eda.easyFormViewer.js
Normal file
File diff suppressed because it is too large
Load diff
3
static/js/eda.easyFormViewer.min.js
vendored
Normal file
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
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
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
4
static/js/formly.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/js/formly.min.js.map
Normal file
1
static/js/formly.min.js.map
Normal file
File diff suppressed because one or more lines are too long
98
static/js/lodash.min.js
vendored
Normal file
98
static/js/lodash.min.js
vendored
Normal 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={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},zn={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},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
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
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
2
static/js/textAngular-rangy.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
791
static/js/textAngular-sanitize.js
Normal file
791
static/js/textAngular-sanitize.js
Normal 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><div ng-bind-html="snippet"><br/></div></pre></td>
|
||||
<td><div ng-bind-html="snippet"></div></td>
|
||||
</tr>
|
||||
<tr id="bind-html-with-trust">
|
||||
<td>ng-bind-html</td>
|
||||
<td>Bypass $sanitize by explicitly trusting the dangerous value</td>
|
||||
<td>
|
||||
<pre><div ng-bind-html="deliberatelyTrustDangerousSnippet()">
|
||||
</div></pre>
|
||||
</td>
|
||||
<td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
|
||||
</tr>
|
||||
<tr id="bind-default">
|
||||
<td>ng-bind</td>
|
||||
<td>Automatically escapes</td>
|
||||
<td><pre><div ng-bind="snippet"><br/></div></pre></td>
|
||||
<td><div ng-bind="snippet"></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</file>
|
||||
<file name="protractor.js" type="protractor">
|
||||
it('should sanitize the html snippet by default', function() {
|
||||
expect(element(by.css('#bind-html-with-sanitize div')).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("<p style=\"color:blue\">an html\n" +
|
||||
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
|
||||
"snippet</p>");
|
||||
});
|
||||
|
||||
it('should update', function() {
|
||||
element(by.model('snippet')).clear();
|
||||
element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
|
||||
expect(element(by.css('#bind-html-with-sanitize div')).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 <b onclick=\"alert(1)\">text</b>");
|
||||
});
|
||||
</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,"<");
|
||||
// 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, '&').
|
||||
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, '<').
|
||||
replace(/>/g, '>');
|
||||
}
|
||||
|
||||
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><div ng-bind-html="snippet | linky"><br></div></pre>
|
||||
</td>
|
||||
<td>
|
||||
<div ng-bind-html="snippet | linky"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="linky-target">
|
||||
<td>linky target</td>
|
||||
<td>
|
||||
<pre><div ng-bind-html="snippetWithTarget | linky:'_blank'"><br></div></pre>
|
||||
</td>
|
||||
<td>
|
||||
<div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="escaped-html">
|
||||
<td>no filter</td>
|
||||
<td><pre><div ng-bind="snippet"><br></div></pre></td>
|
||||
<td><div ng-bind="snippet"></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</file>
|
||||
<file name="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, '"'),
|
||||
'">');
|
||||
addText(text);
|
||||
html.push('</a>');
|
||||
}
|
||||
};
|
||||
}]);
|
||||
|
||||
|
||||
})(window, window.angular);
|
6
static/js/textAngular-sanitize.min.js
vendored
Normal file
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
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
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
507
static/js/toaster.js
Normal 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">×</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
13
static/js/toaster.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue