mirror of
https://github.com/Icinga/icinga-php-library.git
synced 2025-07-03 03:44:29 +02:00
Version v0.7.0
This commit is contained in:
parent
0f43b60372
commit
2e5e17d67f
36
asset/css/awesome-icons.less
Normal file
36
asset/css/awesome-icons.less
Normal file
@ -0,0 +1,36 @@
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url('@{iplWebAssets}/font/awesome/fa-regular-400.eot');
|
||||
src: url('@{iplWebAssets}/font/awesome/fa-regular-400.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-regular-400.woff2') format('woff2'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-regular-400.woff') format('woff'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-regular-400.ttf') format('truetype'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-regular-400.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.far {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url('@{iplWebAssets}/font/awesome/fa-solid-900.eot');
|
||||
src: url('@{iplWebAssets}/font/awesome/fa-solid-900.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-solid-900.woff2') format('woff2'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-solid-900.woff') format('woff'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-solid-900.ttf') format('truetype'),
|
||||
url('@{iplWebAssets}/font/awesome/fa-solid-900.svg#fontawesome') format('svg');
|
||||
}
|
||||
|
||||
.fa,
|
||||
.fas {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-weight: 900;
|
||||
}
|
143
asset/css/balls.less
Normal file
143
asset/css/balls.less
Normal file
@ -0,0 +1,143 @@
|
||||
@ball-pad: 1/6em;
|
||||
|
||||
.ball {
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.ball-size-xs {
|
||||
height: 1/3em;
|
||||
width: 1/3em;
|
||||
}
|
||||
|
||||
.ball-size-s {
|
||||
height: 0.5em;
|
||||
width: 0.5em;
|
||||
}
|
||||
|
||||
.ball-size-m {
|
||||
height: 0.75em;
|
||||
width: 0.75em;
|
||||
line-height: 0;
|
||||
|
||||
i.icon:before {
|
||||
font-size: .75 - @ball-pad * 2;
|
||||
line-height: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.ball-size-ml {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
line-height: 0;
|
||||
|
||||
i.icon {
|
||||
line-height: 0.3;
|
||||
|
||||
&:before {
|
||||
font-size: 0.8 - @ball-pad * 2;
|
||||
line-height: 1 - @ball-pad * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ball-size-l {
|
||||
height: 1.5em;
|
||||
width: 1.5em;
|
||||
line-height: 1em;
|
||||
|
||||
i.icon:before {
|
||||
font-size: 1 - @ball-pad * 2;
|
||||
line-height: 1.5 - @ball-pad * 2;
|
||||
}
|
||||
}
|
||||
|
||||
.ball-size-xl {
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
|
||||
i.icon:before {
|
||||
line-height: 2 - @ball-pad * 2;
|
||||
}
|
||||
}
|
||||
|
||||
.ball-outline(@color) {
|
||||
border: @ball-pad solid @color;
|
||||
color: @color;
|
||||
}
|
||||
|
||||
.ball-solid(@color) {
|
||||
background-color: @color;
|
||||
color: var(--default-text-color-inverted, @default-text-color-inverted);
|
||||
padding: @ball-pad;
|
||||
}
|
||||
|
||||
.state-ball {
|
||||
.ball();
|
||||
|
||||
&.state-pending {
|
||||
.ball-solid(var(--state-pending, @state-pending));
|
||||
}
|
||||
|
||||
&.state-up:not(.ball-size-l):not(.ball-size-xl) {
|
||||
.ball-solid(var(--state-up, @state-up));
|
||||
}
|
||||
|
||||
&.state-up.ball-size-l,
|
||||
&.state-up.ball-size-xl {
|
||||
.ball-outline(var(--state-up, @state-up));
|
||||
}
|
||||
|
||||
&.state-down {
|
||||
.ball-solid(var(--state-down, @state-down));
|
||||
}
|
||||
|
||||
&.state-ok:not(.ball-size-l):not(.ball-size-xl) {
|
||||
.ball-solid(var(--state-ok, @state-ok));
|
||||
}
|
||||
|
||||
&.state-ok.ball-size-l,
|
||||
&.state-ok.ball-size-xl {
|
||||
.ball-outline(var(--state-ok, @state-ok));
|
||||
}
|
||||
|
||||
&.state-warning {
|
||||
.ball-solid(var(--state-warning, @state-warning));
|
||||
}
|
||||
|
||||
&.state-critical {
|
||||
.ball-solid(var(--state-critical, @state-critical));
|
||||
}
|
||||
|
||||
&.state-unknown {
|
||||
.ball-solid(var(--state-unknown, @state-unknown));
|
||||
}
|
||||
|
||||
&.handled {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
i {
|
||||
text-align: center;
|
||||
display: block;
|
||||
|
||||
&:before {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Specific icon styles
|
||||
&.ball-size-l i {
|
||||
&.fa-sitemap:before {
|
||||
font-size: 8px; // px to ignore browser min font-size
|
||||
}
|
||||
}
|
||||
|
||||
&.ball-size-xl i {
|
||||
&.fa-sitemap:before {
|
||||
font-size: .857em;
|
||||
line-height: (2 - @ball-pad * 2) / .857;
|
||||
}
|
||||
}
|
||||
}
|
76
asset/css/controls.less
Normal file
76
asset/css/controls.less
Normal file
@ -0,0 +1,76 @@
|
||||
.pagination-control {
|
||||
li > a {
|
||||
color: var(--control-color, @control-color);
|
||||
border-radius: .25em;
|
||||
}
|
||||
|
||||
li > a:hover {
|
||||
background: var(--control-hover-bg, @control-hover-bg);
|
||||
}
|
||||
|
||||
.previous-page,
|
||||
.next-page {
|
||||
padding: .5em .25em;
|
||||
|
||||
i {
|
||||
display: block;
|
||||
}
|
||||
|
||||
i:before {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.previous-page > i {
|
||||
margin-left: -.125em;
|
||||
}
|
||||
|
||||
.next-page > i {
|
||||
margin-right: -.125em;
|
||||
}
|
||||
}
|
||||
|
||||
// Style
|
||||
|
||||
.control-button {
|
||||
.appearance(none);
|
||||
background: none;
|
||||
border: none;
|
||||
color: var(--control-color, @control-color);
|
||||
.rounded-corners();
|
||||
|
||||
&:hover, &:focus, &.active {
|
||||
background-color: var(--control-hover-bg, @control-hover-bg);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: var(--control-disabled-color, @control-disabled-color);
|
||||
|
||||
&:hover {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
i.icon:before {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
// Layout
|
||||
|
||||
.control-button {
|
||||
display: inline-block;
|
||||
padding: .25em .5em;
|
||||
|
||||
> i.icon {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
i.icon:before {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
9
asset/css/datetime-picker.less
Normal file
9
asset/css/datetime-picker.less
Normal file
@ -0,0 +1,9 @@
|
||||
.flatpickr-input + .input {
|
||||
padding-right: 2em;
|
||||
|
||||
& + .fa-calendar {
|
||||
margin: .5em 1em 0 -3.5em;
|
||||
padding: 0 .5em 0 1em;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
4582
asset/css/fontawesome.css
vendored
Normal file
4582
asset/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
17
asset/css/horizontal-key-value.less
Normal file
17
asset/css/horizontal-key-value.less
Normal file
@ -0,0 +1,17 @@
|
||||
.horizontal-key-value {
|
||||
display: flex;
|
||||
padding: .25em 0;
|
||||
align-items: baseline;
|
||||
|
||||
.key {
|
||||
color: var(--default-text-color-light, @default-text-color-light);
|
||||
flex: 0 0 auto;
|
||||
white-space: nowrap;
|
||||
width: 12em;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: var(--default-text-color, @default-text-color);
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
36
asset/css/icinga-icons.less
Normal file
36
asset/css/icinga-icons.less
Normal file
@ -0,0 +1,36 @@
|
||||
@font-face {
|
||||
font-family: 'Icinga-Icons';
|
||||
src: url('@{iplWebAssets}/font/Icinga-Icons.eot');
|
||||
src: url('@{iplWebAssets}/font/Icinga-Icons.eot') format('embedded-opentype'),
|
||||
url('@{iplWebAssets}/font/Icinga-Icons.ttf') format('truetype'),
|
||||
url('@{iplWebAssets}/font/Icinga-Icons.woff') format('woff'),
|
||||
url('@{iplWebAssets}/font/Icinga-Icons.svg') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
|
||||
[class^="iicon-"]:before, [class*=" iicon-"]:before {
|
||||
/* use !important to prevent issues with browser extensions that change fonts */
|
||||
font-family: 'Icinga-Icons';
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1em;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.iicon-minimal:before {
|
||||
content: "\e900";
|
||||
}
|
||||
.iicon-detailed:before {
|
||||
content: "\e901";
|
||||
}
|
||||
.iicon-default:before {
|
||||
content: "\e902";
|
||||
}
|
12
asset/css/icons-base.less
Normal file
12
asset/css/icons-base.less
Normal file
@ -0,0 +1,12 @@
|
||||
i.icon {
|
||||
vertical-align: middle; // Firefox will place icons weird otherwise
|
||||
|
||||
&:before {
|
||||
display: inline-block;
|
||||
min-width: 1em;
|
||||
margin-right: .2em;
|
||||
|
||||
text-align: center;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
}
|
23
asset/css/mixin/card.less
Normal file
23
asset/css/mixin/card.less
Normal file
@ -0,0 +1,23 @@
|
||||
.card() {
|
||||
&.card {
|
||||
.rounded-corners(.5em);
|
||||
border: 1px solid var(--card-border-color, @card-border-color);
|
||||
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
padding: .5em;
|
||||
|
||||
border-bottom: 1px solid var(--card-border-color, @card-border-color);
|
||||
|
||||
.meta span {
|
||||
font-size: 11/12em;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: .5em;
|
||||
}
|
||||
}
|
||||
}
|
316
asset/css/search-bar.less
Normal file
316
asset/css/search-bar.less
Normal file
@ -0,0 +1,316 @@
|
||||
// Style
|
||||
.search-bar {
|
||||
.rounded-corners(.25em);
|
||||
background: var(--searchbar-bg, @searchbar-bg);
|
||||
|
||||
// Reset all input styles
|
||||
input, [type="button"] {
|
||||
.appearance(none);
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
// Submit button styles
|
||||
input[type=submit],
|
||||
button[type=submit],
|
||||
button:not([type]) {
|
||||
background: var(--primary-button-bg, @primary-button-bg);
|
||||
color: var(--primary-button-color, @primary-button-color);
|
||||
border-top-right-radius: .25em;
|
||||
border-bottom-right-radius: .25em;
|
||||
}
|
||||
|
||||
// General input styles
|
||||
input:focus {
|
||||
outline-offset: -1px;
|
||||
}
|
||||
|
||||
// Hide the submit button, it must exist, but shouldn't be shown to the user
|
||||
input[type=submit][value="hidden"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Left-most search dropdown style
|
||||
button.search-options {
|
||||
i.icon:before {
|
||||
font-size: 1.2em;
|
||||
margin-right: 0;
|
||||
color: var(--control-color, @control-color);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
i.icon:before {
|
||||
color: var(--control-disabled-color, @control-disabled-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Scrollbar style
|
||||
.filter-input-area {
|
||||
// Firefox
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--searchbar-scrollbar-bg, @searchbar-scrollbar-bg) transparent;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
height: .5em;
|
||||
}
|
||||
|
||||
&:hover::-webkit-scrollbar {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
border-radius: .25em;
|
||||
background: var(--searchbar-scrollbar-bg, @searchbar-scrollbar-bg);
|
||||
}
|
||||
}
|
||||
|
||||
// Term styles
|
||||
.filter-condition {
|
||||
button {
|
||||
border-radius: .4em 0 0 .4em;
|
||||
background-color: var(--search-condition-remove-bg, @search-condition-remove-bg);
|
||||
color: var(--search-condition-remove-color, @search-condition-remove-color);
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: .4em;
|
||||
height: 100%;
|
||||
right: 0;
|
||||
top: 0;
|
||||
|
||||
background-color: var(--searchbar-bg, @searchbar-bg);
|
||||
border: .2em solid var(--search-condition-remove-bg, @search-condition-remove-bg);
|
||||
border-width: 0 0 0 .2em;
|
||||
border-top-left-radius: .4em;
|
||||
border-bottom-left-radius: .4em;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
background-color: var(--search-term-bg, @search-term-bg);
|
||||
color: var(--search-term-color, @search-term-color);
|
||||
}
|
||||
}
|
||||
|
||||
.terms > .filter-condition:first-child button {
|
||||
border-radius: 0 .4em .4em 0;
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: .4em;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
|
||||
background-color: var(--searchbar-bg, @searchbar-bg);
|
||||
border: .2em solid var(--search-condition-remove-bg, @search-condition-remove-bg);
|
||||
border-width: 0 .2em 0 0;
|
||||
border-top-right-radius: .4em;
|
||||
border-bottom-right-radius: .4em;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
|
||||
.logical_operator,
|
||||
.grouping_operator_open,
|
||||
.grouping_operator_close {
|
||||
input {
|
||||
.rounded-corners();
|
||||
background-color: var(--search-logical-operator-bg, @search-logical-operator-bg);
|
||||
color: var(--search-logical-operator-color, @search-logical-operator-color);
|
||||
}
|
||||
}
|
||||
|
||||
.operator,
|
||||
.logical_operator,
|
||||
.grouping_operator_open,
|
||||
.grouping_operator_close {
|
||||
input {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
[data-index] input:invalid {
|
||||
background-color: var(--search-term-invalid-bg, @search-term-invalid-bg);
|
||||
color: var(--search-term-invalid-color, @search-term-invalid-color);
|
||||
}
|
||||
|
||||
[data-index] input:disabled {
|
||||
background-color: var(--search-term-disabled-bg, @search-term-disabled-bg);
|
||||
}
|
||||
|
||||
.column input {
|
||||
.rounded-corners(.4em);
|
||||
}
|
||||
.column:not(:last-of-type),
|
||||
.column.last-term {
|
||||
input {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.operator:last-of-type:not(.last-term) input {
|
||||
.rounded-corners(.4em);
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.value input {
|
||||
.rounded-corners(.4em);
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.highlighted input {
|
||||
background-color: var(--search-term-highlighted-bg, @search-term-highlighted-bg);
|
||||
color: var(--search-term-highlighted-color, @search-term-highlighted-color);
|
||||
}
|
||||
|
||||
.selected input {
|
||||
background-color: var(--search-term-selected-bg, @search-term-selected-bg);
|
||||
color: var(--search-term-selected-color, @search-term-selected-color);
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
ul.comma-separated {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
|
||||
list-style-type: none;
|
||||
|
||||
li {
|
||||
display: inline;
|
||||
|
||||
&:not(:first-of-type):before {
|
||||
display: inline;
|
||||
content: ', ';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Layout
|
||||
.search-bar {
|
||||
height: 2em;
|
||||
display: flex;
|
||||
position: relative; // Required for the suggestions
|
||||
|
||||
button.search-options {
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.filter-input-area {
|
||||
overflow: auto hidden;
|
||||
overflow-x: overlay; // Not invalid, but proprietary feature by chrome/webkit
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: ~"calc(2em + 10px)"; // Search bar height + approximate scrollbar height
|
||||
padding: 2/12em; // 2 (px) desired / default font size (px)
|
||||
|
||||
// Lets inputs grow based on their contents, Inspired by https://css-tricks.com/auto-growing-inputs-textareas/
|
||||
label {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
min-width: 2em;
|
||||
|
||||
&::after,
|
||||
input {
|
||||
width: auto;
|
||||
padding: 0 .5em;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
line-height: 20/12; // 20 (px) desired / default font size (px)
|
||||
}
|
||||
|
||||
&::after {
|
||||
height: 0;
|
||||
content: attr(data-label);
|
||||
visibility: hidden;
|
||||
white-space: nowrap;
|
||||
padding: 0 7/12em; // 7 (px) desired / default font size (px)
|
||||
}
|
||||
}
|
||||
|
||||
> label {
|
||||
flex: 1 0 auto;
|
||||
|
||||
&::after,
|
||||
input {
|
||||
max-width: none;
|
||||
min-width: 8em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.terms {
|
||||
display: inline;
|
||||
flex-shrink: 0;
|
||||
|
||||
.filter-chain,
|
||||
.filter-condition {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.filter-condition {
|
||||
position: relative;
|
||||
|
||||
button {
|
||||
display: none;
|
||||
z-index: 1;
|
||||
width: ~"calc(2em + 2px)";
|
||||
padding: .15em .6em .15em .4em;
|
||||
position: absolute;
|
||||
left: ~"calc(-2em - 2px)"; // That's min-width + margin-right of an operator
|
||||
line-height: 16/12; // 16 (px) desired / default font size (px)
|
||||
|
||||
i:before {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(._hover_delay):hover button {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
> .filter-condition:first-child button {
|
||||
padding: .15em .4em .15em .6em;
|
||||
left: auto;
|
||||
right: ~"calc(-2em - 1px)"; // That's min-width + margin-left of an operator
|
||||
}
|
||||
|
||||
label {
|
||||
margin-right: 1px;
|
||||
|
||||
&.logical_operator,
|
||||
&.grouping_operator_open,
|
||||
&.grouping_operator_close {
|
||||
margin-left: 1px; // adds up to 2px with the previous term
|
||||
margin-right: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
.terms .filter-condition:hover button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.search-suggestions {
|
||||
// 2 (px) desired / default font-size to match .filter-input outline-offset (-1px) + outline-width (3px)
|
||||
margin-top: 2/12em;
|
||||
}
|
||||
}
|
100
asset/css/search-base.less
Normal file
100
asset/css/search-base.less
Normal file
@ -0,0 +1,100 @@
|
||||
// Style
|
||||
.search-suggestions {
|
||||
background: var(--suggestions-bg, @suggestions-bg);
|
||||
border: 1px solid var(--suggestions-border-color, @suggestions-border-color);
|
||||
border-bottom-right-radius: .5em;
|
||||
border-bottom-left-radius: .5em;
|
||||
|
||||
> ul {
|
||||
list-style-type: none;
|
||||
|
||||
> li {
|
||||
border-top: 1px solid var(--suggestions-separation-bg, @suggestions-separation-bg);
|
||||
}
|
||||
> li.suggestion-title + li {
|
||||
border: none;
|
||||
}
|
||||
> li:not(.default) + li.suggestion-title {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.default {
|
||||
color: var(--suggestions-default-opt-color, @suggestions-default-opt-color);
|
||||
font-style: italic;
|
||||
|
||||
[type="button"] {
|
||||
background-color: var(--suggestions-default-opt-bg, @suggestions-default-opt-bg);
|
||||
}
|
||||
}
|
||||
|
||||
.suggestion-title {
|
||||
color: var(--suggestions-color, @suggestions-color);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
font-weight: bold;
|
||||
|
||||
em {
|
||||
font-weight: normal;
|
||||
color: var(--suggestions-failure-message-color, @suggestions-failure-message-color);
|
||||
}
|
||||
}
|
||||
|
||||
[type="button"] {
|
||||
.appearance(none);
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
[type="button"]:focus {
|
||||
background: var(--suggestions-focus-bg, @suggestions-focus-bg);
|
||||
color: var(--suggestions-focus-color, @suggestions-focus-color);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
[type="button"]:not(:focus):hover {
|
||||
background: var(--suggestions-hover-bg, @suggestions-hover-bg);
|
||||
}
|
||||
}
|
||||
|
||||
// Layout
|
||||
.search-suggestions {
|
||||
z-index: 2; // Required so that nothing else can overlap it (such as opaque elements and the impact overlay)
|
||||
position: absolute;
|
||||
overflow: auto;
|
||||
min-width: 5em;
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
> ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
li.suggestion-title {
|
||||
padding: 1.25em .625em 0 .625em;
|
||||
}
|
||||
|
||||
li.failure-message {
|
||||
padding: .5em 1em;
|
||||
|
||||
em {
|
||||
margin-right: .5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[type="button"] {
|
||||
padding: .5em 1em;
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
|
||||
&[data-class="operator"], &[data-class="logical_operator"] {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
267
asset/css/search-editor.less
Normal file
267
asset/css/search-editor.less
Normal file
@ -0,0 +1,267 @@
|
||||
// Style
|
||||
|
||||
.search-editor {
|
||||
ul, ol {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: none;
|
||||
}
|
||||
|
||||
button, input[type="submit"] {
|
||||
.appearance(none);
|
||||
background: none;
|
||||
|
||||
&:not(.cancel-button) {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
select:not([multiple]) {
|
||||
.appearance(none);
|
||||
padding-right: 1.5625em;
|
||||
background-image: url('@{iplWebAssets}/img/select-icon-text-color.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
background-size: contain;
|
||||
.rounded-corners(0);
|
||||
}
|
||||
|
||||
i.icon:before {
|
||||
color: var(--search-editor-control-color, @search-editor-control-color);
|
||||
}
|
||||
|
||||
.drag-initiator {
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
input[type="text"], select {
|
||||
border: none;
|
||||
background: var(--search-term-bg, @search-term-bg);
|
||||
color: var(--search-term-color, @search-term-color);
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
:not(fieldset) > select {
|
||||
.rounded-corners();
|
||||
}
|
||||
|
||||
input[data-type="column"] {
|
||||
.rounded-corners(.4em 0 0 .4em);
|
||||
}
|
||||
|
||||
input[data-type="value"] {
|
||||
.rounded-corners(0 .4em .4em 0);
|
||||
}
|
||||
|
||||
.search-error {
|
||||
input:invalid {
|
||||
background: var(--search-term-invalid-bg, @search-term-invalid-bg);
|
||||
}
|
||||
|
||||
.search-errors {
|
||||
color: var(--search-term-invalid-color, @search-term-invalid-color);
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
li > select:not([multiple]) {
|
||||
background-color: var(--search-logical-operator-bg, @search-logical-operator-bg);
|
||||
color: var(--search-logical-operator-color, @search-logical-operator-color);
|
||||
.rounded-corners();
|
||||
}
|
||||
|
||||
.sortable-ghost {
|
||||
border: dashed .2em var(--search-editor-drag-outline-color, @search-editor-drag-outline-color);
|
||||
|
||||
fieldset {
|
||||
opacity: .5;
|
||||
}
|
||||
}
|
||||
|
||||
.buttons {
|
||||
ul {
|
||||
.rounded-corners();
|
||||
.box-shadow(0, 0, .5em);
|
||||
border: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color);
|
||||
background: var(--search-editor-context-menu-bg, @search-editor-context-menu-bg);
|
||||
|
||||
li:not(:first-child) {
|
||||
border-top: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color);
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background: var(--primary-button-bg, @primary-button-bg);
|
||||
color: var(--primary-button-color, @primary-button-color);
|
||||
}
|
||||
|
||||
// Add rounded corners to buttons as well, otherwise their
|
||||
// background is not rounded and overlaps the list's corners
|
||||
:first-child button {
|
||||
.rounded-corners();
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
:last-child button {
|
||||
.rounded-corners();
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
&:before {
|
||||
// The left pointing arrow
|
||||
border-bottom: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color);
|
||||
border-left: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color);
|
||||
background: var(--search-editor-context-menu-bg, @search-editor-context-menu-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover i.icon:before {
|
||||
.rounded-corners();
|
||||
background: var(--primary-button-bg, @primary-button-bg);
|
||||
color: var(--primary-button-color, @primary-button-color);
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
.rounded-corners();
|
||||
background: var(--primary-button-bg, @primary-button-bg);
|
||||
color: var(--primary-button-color, @primary-button-color);
|
||||
|
||||
&:hover {
|
||||
background: var(--primary-button-hover-bg, @primary-button-hover-bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Layout
|
||||
|
||||
.search-editor-opener + a.modal-opener {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search-editor {
|
||||
padding: 1em;
|
||||
|
||||
@item-spacing: .5em;
|
||||
|
||||
ul, ol {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: flex;
|
||||
|
||||
> :not(:first-child) {
|
||||
margin-left: @item-spacing;
|
||||
}
|
||||
}
|
||||
|
||||
ol {
|
||||
padding-left: 1em;
|
||||
padding-bottom: @item-spacing;
|
||||
|
||||
> li:first-child,
|
||||
> :not(.filter-chain) + li {
|
||||
margin-top: @item-spacing;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="text"], select {
|
||||
padding: 0 .5em;
|
||||
}
|
||||
|
||||
li > select {
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
input[data-type="value"] {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
> :not(:first-child) {
|
||||
margin-left: .1em;
|
||||
}
|
||||
}
|
||||
|
||||
input, button, select {
|
||||
height: 28/12em; // Target Pixels @ default font size / default font size
|
||||
}
|
||||
|
||||
.search-errors {
|
||||
margin-left: .5em;
|
||||
}
|
||||
|
||||
i.icon:before {
|
||||
margin: 0;
|
||||
font-size: 1.5em;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
position: relative;
|
||||
|
||||
ul {
|
||||
position: absolute;
|
||||
right: 32/12em; // Target distance @ default font size / default font size
|
||||
z-index: 1;
|
||||
width: auto;
|
||||
padding: 0;
|
||||
|
||||
display: none;
|
||||
|
||||
button {
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&:before {
|
||||
// The left pointing arrow
|
||||
content: "";
|
||||
display: block;
|
||||
height: 1em;
|
||||
transform: rotate(-135deg);
|
||||
width: 1em;
|
||||
z-index: 1;
|
||||
|
||||
position: absolute;
|
||||
top: ((28/12)/2)-.5em; // ((First row pixels @ default font size / default font size) / 2) - own half width
|
||||
right: -.5em;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
i.icon:before {
|
||||
padding: ((28/18)-1)/2em; // (Container pixels / default font size) - line height / (padding-top,padding-bottom)
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.cancel-button {
|
||||
margin-top: 2em - @item-spacing;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
float: right;
|
||||
width: 6em;
|
||||
margin-top: 2em - @item-spacing;
|
||||
}
|
||||
|
||||
input[type="submit"]:not(:last-of-type) {
|
||||
display: none;
|
||||
}
|
||||
}
|
173
asset/css/variables.less
Normal file
173
asset/css/variables.less
Normal file
@ -0,0 +1,173 @@
|
||||
/*
|
||||
RECOMMENDATION:
|
||||
Please do not use the base color variables directly,
|
||||
define a new variable instead that assigns the value of this base variable.
|
||||
Examples:
|
||||
- @base-color: red;
|
||||
- @my-new-var: @base-color;
|
||||
- @my-second-new-var: @base-color;
|
||||
|
||||
Do not use the same variable for different use cases, but define a new variable for each use case.
|
||||
|
||||
NOTICE::
|
||||
Color vars identification:
|
||||
- Vars with `-bg` suffix are background-color vars. Please use only for setting bg-color.
|
||||
- Vars with `-color` suffix color vars. Please use only for setting color.
|
||||
|
||||
To use ipl-web widgets, the two theme mode variables @prefer-light-color-scheme and @enable-color-preference must be defined.
|
||||
We have used a trick to have control over the system's preferred theme mode and our own.
|
||||
The following describes how to initialise a variable to have your own theme mode:
|
||||
|
||||
- Default css is for dark mode.
|
||||
- 0px = true (min-height: 0px), 999999px = false (min-height: 999999px, not reachable on the normal screen, so false)
|
||||
|
||||
System mode:
|
||||
@enable-color-preference: 0px; // true
|
||||
@prefer-light-color-scheme: 999999px; // false
|
||||
If the system uses the light mode, the media query will be true
|
||||
|
||||
Light mode:
|
||||
@prefer-light-color-scheme: 0px // true.
|
||||
@enable-color-preference: 999999px; // false, so that we have control over the system's preferred theme mode.
|
||||
|
||||
Dark mode:
|
||||
@prefer-light-color-scheme: 999999px // false,
|
||||
@enable-color-preference: 999999px; // false, so that we have control over the system's preferred theme mode.
|
||||
The media query code will be ignored.
|
||||
|
||||
|
||||
true OR true and true
|
||||
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
|
||||
// css here
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
@default-bg: #282E39;
|
||||
|
||||
@base-gray: #c4c4c4;
|
||||
@base-gray-light: #5c5c5c;
|
||||
@base-gray-lighter: #4b4b4b;
|
||||
@base-disabled: #9a9a9a;
|
||||
|
||||
@base-primary-color: #00C3ED;
|
||||
@base-primary-bg: #00C3ED;
|
||||
|
||||
@default-text-color: #fff;
|
||||
@default-text-color-light: fade(@default-text-color, 75%);
|
||||
@default-text-color-inverted: @default-bg;
|
||||
|
||||
@state-ok: #44bb77;
|
||||
@state-up: @state-ok;
|
||||
@state-warning: #ffaa44;
|
||||
@state-critical: #ff5566;
|
||||
@state-down: @state-critical;
|
||||
@state-pending: #77aaff;
|
||||
@state-unknown: #aa44ff;
|
||||
|
||||
@primary-button-color: @default-text-color-inverted;
|
||||
@primary-button-bg: @base-primary-bg;
|
||||
@primary-button-hover-bg: #0081a6;
|
||||
|
||||
@search-term-bg: @base-gray;
|
||||
@search-term-color: @default-text-color-inverted;
|
||||
@search-term-selected-bg: @base-gray-light;
|
||||
@search-term-invalid-bg: @state-critical;
|
||||
@search-term-invalid-color: @default-text-color-inverted;
|
||||
@search-term-disabled-bg: @base-disabled;
|
||||
@search-term-selected-color: @base-gray-light;
|
||||
@search-term-highlighted-bg: @base-primary-bg;
|
||||
@search-term-highlighted-color: @default-text-color-inverted;
|
||||
|
||||
@search-condition-remove-bg: @state-critical;
|
||||
@search-condition-remove-color: @default-text-color-inverted;
|
||||
|
||||
@search-logical-operator-bg: @base-gray-light;
|
||||
@search-logical-operator-color: @default-text-color-light;
|
||||
|
||||
@searchbar-bg: #404d72;
|
||||
@searchbar-scrollbar-bg: @base-gray-light;
|
||||
|
||||
@search-editor-control-color: @base-gray-light;
|
||||
@search-editor-logical-op-bg: @base-gray-light;
|
||||
@search-editor-context-menu-border-color: @base-gray-light;
|
||||
@search-editor-context-menu-bg: @default-bg;
|
||||
@search-editor-drag-outline-color: @base-gray;
|
||||
|
||||
@control-color: @base-primary-color;
|
||||
@control-hover-bg: @base-gray-lighter;
|
||||
@control-disabled-color: @base-gray-light;
|
||||
|
||||
@suggestions-bg: @default-bg;
|
||||
@suggestions-color: @default-text-color-light;
|
||||
@suggestions-focus-bg: @base-primary-bg;
|
||||
@suggestions-focus-color: @default-text-color-inverted;
|
||||
@suggestions-default-opt-bg: fade(@base-primary-bg, 10%);
|
||||
@suggestions-default-opt-color: @default-text-color-light;
|
||||
@suggestions-hover-bg: fade(@base-primary-bg, 30%);
|
||||
@suggestions-border-color: @base-gray-light;
|
||||
@suggestions-separation-bg: @base-gray-lighter;
|
||||
@suggestions-failure-message-color: @default-text-color-light;
|
||||
|
||||
@card-border-color: @base-gray-light;
|
||||
|
||||
@media (min-height: @prefer-light-color-scheme), (prefers-color-scheme: light) and (min-height: @enable-color-preference) {
|
||||
:root {
|
||||
--base-gray: #819398;
|
||||
--base-gray-semilight: #94a5a6;
|
||||
--base-gray-light: #d0d3da;
|
||||
--base-gray-lighter: #e8ecef;
|
||||
|
||||
--base-remove-bg: #ff5566;
|
||||
|
||||
--default-text-color: #535353;
|
||||
--default-text-color-light: fade(#535353, 75%); // --default-text-color
|
||||
--default-text-color-inverted: #F5F9FA;
|
||||
|
||||
--primary-button-color: var(--default-text-color-inverted);
|
||||
--primary-button-bg: #00C3ED;
|
||||
--primary-button-hover-bg: #0081a6;
|
||||
|
||||
--searchbar-bg: #DEECF1;
|
||||
--searchbar-scrollbar-bg: var(--base-gray-light);
|
||||
|
||||
--search-term-bg: var(--base-gray-light);
|
||||
--search-term-color: var(--default-text-color);
|
||||
--search-term-selected-bg: var(--base-gray-light);
|
||||
--search-term-invalid-bg: var(--base-remove-bg);
|
||||
--search-term-invalid-color: var(--default-text-color-inverted);
|
||||
--search-term-disabled-bg: var(--base-gray-light);
|
||||
--search-term-selected-color: var(--base-gray-light);
|
||||
--search-term-highlighted-bg: var(--primary-button-bg);
|
||||
--search-term-highlighted-color: var(--default-text-color-inverted);
|
||||
|
||||
--search-condition-remove-bg: var(--base-remove-bg);
|
||||
--search-condition-remove-color: var(--default-text-color-inverted);
|
||||
|
||||
--search-logical-operator-bg: fade(#819398, 50%); // --base-gray
|
||||
--search-logical-operator-color: var(--default-text-color-light);
|
||||
|
||||
--search-editor-control-color: var(--base-gray-light);
|
||||
--search-editor-logical-op-bg: var(--base-gray-light);
|
||||
--search-editor-context-menu-border-color: var(--base-gray-light);
|
||||
--search-editor-context-menu-bg: var(--default-text-color-inverted);
|
||||
--search-editor-drag-outline-color: var(--base-gray);
|
||||
|
||||
--control-color: var(--primary-button-bg);
|
||||
--control-hover-bg: var(--base-gray-lighter);
|
||||
--control-disabled-color: var(--base-gray-light);
|
||||
|
||||
--suggestions-bg: var(--default-text-color-inverted);
|
||||
--suggestions-color: var(--default-text-color-light);
|
||||
--suggestions-focus-bg: var(--primary-button-bg);
|
||||
--suggestions-focus-color: var(--default-text-color-inverted);
|
||||
--suggestions-default-opt-bg: fade(#00C3ED, 10%); // --primary-button-bg
|
||||
--suggestions-default-opt-color: var(--default-text-color-light);
|
||||
--suggestions-hover-bg: fade(#00C3ED, 30%); // --primary-button-bg
|
||||
--suggestions-border-color: var(--base-gray-light);
|
||||
--suggestions-separation-bg: var(--base-gray-lighter);
|
||||
--suggestions-failure-message-color: var(--default-text-color-light);
|
||||
|
||||
--card-border-color: var(--base-gray-light);
|
||||
}
|
||||
}
|
791
asset/css/vendor/flatpickr.css
vendored
Normal file
791
asset/css/vendor/flatpickr.css
vendored
Normal file
@ -0,0 +1,791 @@
|
||||
.flatpickr-calendar {
|
||||
background: transparent;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
text-align: center;
|
||||
visibility: hidden;
|
||||
padding: 0;
|
||||
-webkit-animation: none;
|
||||
animation: none;
|
||||
direction: ltr;
|
||||
border: 0;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
border-radius: 5px;
|
||||
position: absolute;
|
||||
width: 307.875px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-ms-touch-action: manipulation;
|
||||
touch-action: manipulation;
|
||||
background: #fff;
|
||||
-webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
|
||||
box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
|
||||
}
|
||||
.flatpickr-calendar.open,
|
||||
.flatpickr-calendar.inline {
|
||||
opacity: 1;
|
||||
max-height: 640px;
|
||||
visibility: visible;
|
||||
}
|
||||
.flatpickr-calendar.open {
|
||||
display: inline-block;
|
||||
z-index: 99999;
|
||||
}
|
||||
.flatpickr-calendar.animate.open {
|
||||
-webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
||||
animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
||||
}
|
||||
.flatpickr-calendar.inline {
|
||||
display: block;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
.flatpickr-calendar.static {
|
||||
position: absolute;
|
||||
top: calc(100% + 2px);
|
||||
}
|
||||
.flatpickr-calendar.static.open {
|
||||
z-index: 999;
|
||||
display: block;
|
||||
}
|
||||
.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
|
||||
-webkit-box-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
|
||||
-webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
||||
box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
||||
}
|
||||
.flatpickr-calendar .hasWeeks .dayContainer,
|
||||
.flatpickr-calendar .hasTime .dayContainer {
|
||||
border-bottom: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.flatpickr-calendar .hasWeeks .dayContainer {
|
||||
border-left: 0;
|
||||
}
|
||||
.flatpickr-calendar.hasTime .flatpickr-time {
|
||||
height: 40px;
|
||||
border-top: 1px solid #e6e6e6;
|
||||
}
|
||||
.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
|
||||
height: auto;
|
||||
}
|
||||
.flatpickr-calendar:before,
|
||||
.flatpickr-calendar:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
pointer-events: none;
|
||||
border: solid transparent;
|
||||
content: '';
|
||||
height: 0;
|
||||
width: 0;
|
||||
left: 22px;
|
||||
}
|
||||
.flatpickr-calendar.rightMost:before,
|
||||
.flatpickr-calendar.arrowRight:before,
|
||||
.flatpickr-calendar.rightMost:after,
|
||||
.flatpickr-calendar.arrowRight:after {
|
||||
left: auto;
|
||||
right: 22px;
|
||||
}
|
||||
.flatpickr-calendar.arrowCenter:before,
|
||||
.flatpickr-calendar.arrowCenter:after {
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
}
|
||||
.flatpickr-calendar:before {
|
||||
border-width: 5px;
|
||||
margin: 0 -5px;
|
||||
}
|
||||
.flatpickr-calendar:after {
|
||||
border-width: 4px;
|
||||
margin: 0 -4px;
|
||||
}
|
||||
.flatpickr-calendar.arrowTop:before,
|
||||
.flatpickr-calendar.arrowTop:after {
|
||||
bottom: 100%;
|
||||
}
|
||||
.flatpickr-calendar.arrowTop:before {
|
||||
border-bottom-color: #e6e6e6;
|
||||
}
|
||||
.flatpickr-calendar.arrowTop:after {
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.flatpickr-calendar.arrowBottom:before,
|
||||
.flatpickr-calendar.arrowBottom:after {
|
||||
top: 100%;
|
||||
}
|
||||
.flatpickr-calendar.arrowBottom:before {
|
||||
border-top-color: #e6e6e6;
|
||||
}
|
||||
.flatpickr-calendar.arrowBottom:after {
|
||||
border-top-color: #fff;
|
||||
}
|
||||
.flatpickr-calendar:focus {
|
||||
outline: 0;
|
||||
}
|
||||
.flatpickr-wrapper {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
.flatpickr-months {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
.flatpickr-months .flatpickr-month {
|
||||
background: transparent;
|
||||
color: rgba(0,0,0,0.9);
|
||||
fill: rgba(0,0,0,0.9);
|
||||
height: 34px;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
overflow: hidden;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month,
|
||||
.flatpickr-months .flatpickr-next-month {
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 34px;
|
||||
padding: 10px;
|
||||
z-index: 3;
|
||||
color: rgba(0,0,0,0.9);
|
||||
fill: rgba(0,0,0,0.9);
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
|
||||
.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
|
||||
display: none;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month i,
|
||||
.flatpickr-months .flatpickr-next-month i {
|
||||
position: relative;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
|
||||
.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
|
||||
/*
|
||||
/*rtl:begin:ignore*/
|
||||
/*
|
||||
*/
|
||||
left: 0;
|
||||
/*
|
||||
/*rtl:end:ignore*/
|
||||
/*
|
||||
*/
|
||||
}
|
||||
/*
|
||||
/*rtl:begin:ignore*/
|
||||
/*
|
||||
/*rtl:end:ignore*/
|
||||
.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
|
||||
.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
|
||||
/*
|
||||
/*rtl:begin:ignore*/
|
||||
/*
|
||||
*/
|
||||
right: 0;
|
||||
/*
|
||||
/*rtl:end:ignore*/
|
||||
/*
|
||||
*/
|
||||
}
|
||||
/*
|
||||
/*rtl:begin:ignore*/
|
||||
/*
|
||||
/*rtl:end:ignore*/
|
||||
.flatpickr-months .flatpickr-prev-month:hover,
|
||||
.flatpickr-months .flatpickr-next-month:hover {
|
||||
color: #959ea9;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month:hover svg,
|
||||
.flatpickr-months .flatpickr-next-month:hover svg {
|
||||
fill: #f64747;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month svg,
|
||||
.flatpickr-months .flatpickr-next-month svg {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month svg path,
|
||||
.flatpickr-months .flatpickr-next-month svg path {
|
||||
-webkit-transition: fill 0.1s;
|
||||
transition: fill 0.1s;
|
||||
fill: inherit;
|
||||
}
|
||||
.numInputWrapper {
|
||||
position: relative;
|
||||
height: auto;
|
||||
}
|
||||
.numInputWrapper input,
|
||||
.numInputWrapper span {
|
||||
display: inline-block;
|
||||
}
|
||||
.numInputWrapper input {
|
||||
width: 100%;
|
||||
}
|
||||
.numInputWrapper input::-ms-clear {
|
||||
display: none;
|
||||
}
|
||||
.numInputWrapper input::-webkit-outer-spin-button,
|
||||
.numInputWrapper input::-webkit-inner-spin-button {
|
||||
margin: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
.numInputWrapper span {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 14px;
|
||||
padding: 0 4px 0 2px;
|
||||
height: 50%;
|
||||
line-height: 50%;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
border: 1px solid rgba(57,57,57,0.15);
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.numInputWrapper span:hover {
|
||||
background: rgba(0,0,0,0.1);
|
||||
}
|
||||
.numInputWrapper span:active {
|
||||
background: rgba(0,0,0,0.2);
|
||||
}
|
||||
.numInputWrapper span:after {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
}
|
||||
.numInputWrapper span.arrowUp {
|
||||
top: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.numInputWrapper span.arrowUp:after {
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 4px solid rgba(57,57,57,0.6);
|
||||
top: 26%;
|
||||
}
|
||||
.numInputWrapper span.arrowDown {
|
||||
top: 50%;
|
||||
}
|
||||
.numInputWrapper span.arrowDown:after {
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-top: 4px solid rgba(57,57,57,0.6);
|
||||
top: 40%;
|
||||
}
|
||||
.numInputWrapper span svg {
|
||||
width: inherit;
|
||||
height: auto;
|
||||
}
|
||||
.numInputWrapper span svg path {
|
||||
fill: rgba(0,0,0,0.5);
|
||||
}
|
||||
.numInputWrapper:hover {
|
||||
background: rgba(0,0,0,0.05);
|
||||
}
|
||||
.numInputWrapper:hover span {
|
||||
opacity: 1;
|
||||
}
|
||||
.flatpickr-current-month {
|
||||
font-size: 135%;
|
||||
line-height: inherit;
|
||||
font-weight: 300;
|
||||
color: inherit;
|
||||
position: absolute;
|
||||
width: 75%;
|
||||
left: 12.5%;
|
||||
padding: 7.48px 0 0 0;
|
||||
line-height: 1;
|
||||
height: 34px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
||||
transform: translate3d(0px, 0px, 0px);
|
||||
}
|
||||
.flatpickr-current-month span.cur-month {
|
||||
font-family: inherit;
|
||||
font-weight: 700;
|
||||
color: inherit;
|
||||
display: inline-block;
|
||||
margin-left: 0.5ch;
|
||||
padding: 0;
|
||||
}
|
||||
.flatpickr-current-month span.cur-month:hover {
|
||||
background: rgba(0,0,0,0.05);
|
||||
}
|
||||
.flatpickr-current-month .numInputWrapper {
|
||||
width: 6ch;
|
||||
width: 7ch\0;
|
||||
display: inline-block;
|
||||
}
|
||||
.flatpickr-current-month .numInputWrapper span.arrowUp:after {
|
||||
border-bottom-color: rgba(0,0,0,0.9);
|
||||
}
|
||||
.flatpickr-current-month .numInputWrapper span.arrowDown:after {
|
||||
border-top-color: rgba(0,0,0,0.9);
|
||||
}
|
||||
.flatpickr-current-month input.cur-year {
|
||||
background: transparent;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: inherit;
|
||||
cursor: text;
|
||||
padding: 0 0 0 0.5ch;
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
font-weight: 300;
|
||||
line-height: inherit;
|
||||
height: auto;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
vertical-align: initial;
|
||||
-webkit-appearance: textfield;
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
}
|
||||
.flatpickr-current-month input.cur-year:focus {
|
||||
outline: 0;
|
||||
}
|
||||
.flatpickr-current-month input.cur-year[disabled],
|
||||
.flatpickr-current-month input.cur-year[disabled]:hover {
|
||||
font-size: 100%;
|
||||
color: rgba(0,0,0,0.5);
|
||||
background: transparent;
|
||||
pointer-events: none;
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months {
|
||||
appearance: menulist;
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
box-sizing: border-box;
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
font-weight: 300;
|
||||
height: auto;
|
||||
line-height: inherit;
|
||||
margin: -1px 0 0 0;
|
||||
outline: none;
|
||||
padding: 0 0 0 0.5ch;
|
||||
position: relative;
|
||||
vertical-align: initial;
|
||||
-webkit-box-sizing: border-box;
|
||||
-webkit-appearance: menulist;
|
||||
-moz-appearance: menulist;
|
||||
width: auto;
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months:active {
|
||||
outline: none;
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
|
||||
background: rgba(0,0,0,0.05);
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
|
||||
background-color: transparent;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
}
|
||||
.flatpickr-weekdays {
|
||||
background: transparent;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
height: 28px;
|
||||
}
|
||||
.flatpickr-weekdays .flatpickr-weekdaycontainer {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
}
|
||||
span.flatpickr-weekday {
|
||||
cursor: default;
|
||||
font-size: 90%;
|
||||
background: transparent;
|
||||
color: rgba(0,0,0,0.54);
|
||||
line-height: 1;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
display: block;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.dayContainer,
|
||||
.flatpickr-weeks {
|
||||
padding: 1px 0 0 0;
|
||||
}
|
||||
.flatpickr-days {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-flex-align: start;
|
||||
align-items: flex-start;
|
||||
width: 307.875px;
|
||||
}
|
||||
.flatpickr-days:focus {
|
||||
outline: 0;
|
||||
}
|
||||
.dayContainer {
|
||||
padding: 0;
|
||||
outline: 0;
|
||||
text-align: left;
|
||||
width: 307.875px;
|
||||
min-width: 307.875px;
|
||||
max-width: 307.875px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
display: -ms-flexbox;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-ms-flex-wrap: wrap;
|
||||
-ms-flex-pack: justify;
|
||||
-webkit-justify-content: space-around;
|
||||
justify-content: space-around;
|
||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
||||
transform: translate3d(0px, 0px, 0px);
|
||||
opacity: 1;
|
||||
}
|
||||
.dayContainer + .dayContainer {
|
||||
-webkit-box-shadow: -1px 0 0 #e6e6e6;
|
||||
box-shadow: -1px 0 0 #e6e6e6;
|
||||
}
|
||||
.flatpickr-day {
|
||||
background: none;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 150px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #393939;
|
||||
cursor: pointer;
|
||||
font-weight: 400;
|
||||
width: 14.2857143%;
|
||||
-webkit-flex-basis: 14.2857143%;
|
||||
-ms-flex-preferred-size: 14.2857143%;
|
||||
flex-basis: 14.2857143%;
|
||||
max-width: 39px;
|
||||
height: 39px;
|
||||
line-height: 39px;
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
.flatpickr-day.inRange,
|
||||
.flatpickr-day.prevMonthDay.inRange,
|
||||
.flatpickr-day.nextMonthDay.inRange,
|
||||
.flatpickr-day.today.inRange,
|
||||
.flatpickr-day.prevMonthDay.today.inRange,
|
||||
.flatpickr-day.nextMonthDay.today.inRange,
|
||||
.flatpickr-day:hover,
|
||||
.flatpickr-day.prevMonthDay:hover,
|
||||
.flatpickr-day.nextMonthDay:hover,
|
||||
.flatpickr-day:focus,
|
||||
.flatpickr-day.prevMonthDay:focus,
|
||||
.flatpickr-day.nextMonthDay:focus {
|
||||
cursor: pointer;
|
||||
outline: 0;
|
||||
background: #e6e6e6;
|
||||
border-color: #e6e6e6;
|
||||
}
|
||||
.flatpickr-day.today {
|
||||
border-color: #959ea9;
|
||||
}
|
||||
.flatpickr-day.today:hover,
|
||||
.flatpickr-day.today:focus {
|
||||
border-color: #959ea9;
|
||||
background: #959ea9;
|
||||
color: #fff;
|
||||
}
|
||||
.flatpickr-day.selected,
|
||||
.flatpickr-day.startRange,
|
||||
.flatpickr-day.endRange,
|
||||
.flatpickr-day.selected.inRange,
|
||||
.flatpickr-day.startRange.inRange,
|
||||
.flatpickr-day.endRange.inRange,
|
||||
.flatpickr-day.selected:focus,
|
||||
.flatpickr-day.startRange:focus,
|
||||
.flatpickr-day.endRange:focus,
|
||||
.flatpickr-day.selected:hover,
|
||||
.flatpickr-day.startRange:hover,
|
||||
.flatpickr-day.endRange:hover,
|
||||
.flatpickr-day.selected.prevMonthDay,
|
||||
.flatpickr-day.startRange.prevMonthDay,
|
||||
.flatpickr-day.endRange.prevMonthDay,
|
||||
.flatpickr-day.selected.nextMonthDay,
|
||||
.flatpickr-day.startRange.nextMonthDay,
|
||||
.flatpickr-day.endRange.nextMonthDay {
|
||||
background: #569ff7;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
color: #fff;
|
||||
border-color: #569ff7;
|
||||
}
|
||||
.flatpickr-day.selected.startRange,
|
||||
.flatpickr-day.startRange.startRange,
|
||||
.flatpickr-day.endRange.startRange {
|
||||
border-radius: 50px 0 0 50px;
|
||||
}
|
||||
.flatpickr-day.selected.endRange,
|
||||
.flatpickr-day.startRange.endRange,
|
||||
.flatpickr-day.endRange.endRange {
|
||||
border-radius: 0 50px 50px 0;
|
||||
}
|
||||
.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
|
||||
.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
|
||||
.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
|
||||
-webkit-box-shadow: -10px 0 0 #569ff7;
|
||||
box-shadow: -10px 0 0 #569ff7;
|
||||
}
|
||||
.flatpickr-day.selected.startRange.endRange,
|
||||
.flatpickr-day.startRange.startRange.endRange,
|
||||
.flatpickr-day.endRange.startRange.endRange {
|
||||
border-radius: 50px;
|
||||
}
|
||||
.flatpickr-day.inRange {
|
||||
border-radius: 0;
|
||||
-webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
||||
box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
||||
}
|
||||
.flatpickr-day.flatpickr-disabled,
|
||||
.flatpickr-day.flatpickr-disabled:hover,
|
||||
.flatpickr-day.prevMonthDay,
|
||||
.flatpickr-day.nextMonthDay,
|
||||
.flatpickr-day.notAllowed,
|
||||
.flatpickr-day.notAllowed.prevMonthDay,
|
||||
.flatpickr-day.notAllowed.nextMonthDay {
|
||||
color: rgba(57,57,57,0.3);
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
.flatpickr-day.flatpickr-disabled,
|
||||
.flatpickr-day.flatpickr-disabled:hover {
|
||||
cursor: not-allowed;
|
||||
color: rgba(57,57,57,0.1);
|
||||
}
|
||||
.flatpickr-day.week.selected {
|
||||
border-radius: 0;
|
||||
-webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
|
||||
box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
|
||||
}
|
||||
.flatpickr-day.hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
.rangeMode .flatpickr-day {
|
||||
margin-top: 1px;
|
||||
}
|
||||
.flatpickr-weekwrapper {
|
||||
float: left;
|
||||
}
|
||||
.flatpickr-weekwrapper .flatpickr-weeks {
|
||||
padding: 0 12px;
|
||||
-webkit-box-shadow: 1px 0 0 #e6e6e6;
|
||||
box-shadow: 1px 0 0 #e6e6e6;
|
||||
}
|
||||
.flatpickr-weekwrapper .flatpickr-weekday {
|
||||
float: none;
|
||||
width: 100%;
|
||||
line-height: 28px;
|
||||
}
|
||||
.flatpickr-weekwrapper span.flatpickr-day,
|
||||
.flatpickr-weekwrapper span.flatpickr-day:hover {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
color: rgba(57,57,57,0.3);
|
||||
background: transparent;
|
||||
cursor: default;
|
||||
border: none;
|
||||
}
|
||||
.flatpickr-innerContainer {
|
||||
display: block;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
.flatpickr-rContainer {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.flatpickr-time {
|
||||
text-align: center;
|
||||
outline: 0;
|
||||
display: block;
|
||||
height: 0;
|
||||
line-height: 40px;
|
||||
max-height: 40px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
.flatpickr-time:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.flatpickr-time .numInputWrapper {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
width: 40%;
|
||||
height: 40px;
|
||||
float: left;
|
||||
}
|
||||
.flatpickr-time .numInputWrapper span.arrowUp:after {
|
||||
border-bottom-color: #393939;
|
||||
}
|
||||
.flatpickr-time .numInputWrapper span.arrowDown:after {
|
||||
border-top-color: #393939;
|
||||
}
|
||||
.flatpickr-time.hasSeconds .numInputWrapper {
|
||||
width: 26%;
|
||||
}
|
||||
.flatpickr-time.time24hr .numInputWrapper {
|
||||
width: 49%;
|
||||
}
|
||||
.flatpickr-time input {
|
||||
background: transparent;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: inherit;
|
||||
line-height: inherit;
|
||||
color: #393939;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-appearance: textfield;
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
}
|
||||
.flatpickr-time input.flatpickr-hour {
|
||||
font-weight: bold;
|
||||
}
|
||||
.flatpickr-time input.flatpickr-minute,
|
||||
.flatpickr-time input.flatpickr-second {
|
||||
font-weight: 400;
|
||||
}
|
||||
.flatpickr-time input:focus {
|
||||
outline: 0;
|
||||
border: 0;
|
||||
}
|
||||
.flatpickr-time .flatpickr-time-separator,
|
||||
.flatpickr-time .flatpickr-am-pm {
|
||||
height: inherit;
|
||||
float: left;
|
||||
line-height: inherit;
|
||||
color: #393939;
|
||||
font-weight: bold;
|
||||
width: 2%;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-align-self: center;
|
||||
-ms-flex-item-align: center;
|
||||
align-self: center;
|
||||
}
|
||||
.flatpickr-time .flatpickr-am-pm {
|
||||
outline: 0;
|
||||
width: 18%;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
font-weight: 400;
|
||||
}
|
||||
.flatpickr-time input:hover,
|
||||
.flatpickr-time .flatpickr-am-pm:hover,
|
||||
.flatpickr-time input:focus,
|
||||
.flatpickr-time .flatpickr-am-pm:focus {
|
||||
background: #eee;
|
||||
}
|
||||
.flatpickr-input[readonly] {
|
||||
cursor: pointer;
|
||||
}
|
||||
@-webkit-keyframes fpFadeInDown {
|
||||
from {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, -20px, 0);
|
||||
transform: translate3d(0, -20px, 0);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
@keyframes fpFadeInDown {
|
||||
from {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, -20px, 0);
|
||||
transform: translate3d(0, -20px, 0);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
327
asset/css/vendor/flatpickr.vars.less
vendored
Normal file
327
asset/css/vendor/flatpickr.vars.less
vendored
Normal file
@ -0,0 +1,327 @@
|
||||
/**
|
||||
* This file's only purpose is to make the flatpickr themeable. DO NOT add ANY custom style here!
|
||||
* Also, DO NOT re-arrange the CSS blocks to make them more LESS like. They're based off of the
|
||||
* pre-compiled flatpickr.css file and so can easily identified when updating to a new version.
|
||||
*
|
||||
* Non-standard LESS variables were added to allow usage of CSS variables. All of them hold a
|
||||
* value calculated by LESS functions. If not temporarily stored in another LESS variable,
|
||||
* they wouldn't be available to CSS variable usage.
|
||||
*
|
||||
* Latest state from version: v4.6.9
|
||||
*/
|
||||
|
||||
@fp-calendarBackground: #ffffff;
|
||||
@fp-calendarBorderColor: #e6e6e6;
|
||||
|
||||
@fp-arrowColor: fadeout(@fp-dayForeground, 40%); // Non-standard variable
|
||||
@fp-arrow_hover_color: #f64747;
|
||||
|
||||
@fp-monthForeground: fadeout(black, 10%);
|
||||
@fp-monthBackground: transparent;
|
||||
|
||||
@fp-weekdaysBackground: transparent;
|
||||
@fp-weekdaysForeground: fadeout(black, 46%);
|
||||
@fp-weekNumberForeground: fadeout(@fp-dayForeground, 70%); // Non-standard variable
|
||||
|
||||
@fp-dayForeground: #393939;
|
||||
@fp-dayHoverBackground: #e6e6e6;
|
||||
@fp-disabledDayForeground: fadeout(@fp-dayForeground, 90%); // Non-standard variable
|
||||
@fp-outsideRangeDayForeground: @fp-weekNumberForeground; // Non-standard variable
|
||||
@fp-selectedDayBackground: #569FF7;
|
||||
@fp-todayColor: #959ea9;
|
||||
|
||||
@fp-timeHoverBg: lighten(@fp-dayHoverBackground, 3); // Non-standard variable
|
||||
|
||||
@fp-invertedBg: black;
|
||||
@fp-hoverInvertedBg: fadeout(@fp-invertedBg, 95%); // Non-standard variable
|
||||
|
||||
@fp-numChooserSvgFillColor: fadeout(@fp-monthForeground, 50%); // Non-standard variable
|
||||
@fp-hoverNumChooserBg: fadeout(@fp-invertedBg, 90%); // Non-standard variable
|
||||
@fp-numChooserBorderColor: fadeout(@fp-dayForeground, 85%); // Non-standard variable
|
||||
|
||||
.icinga-datetime-picker {
|
||||
&.flatpickr-calendar {
|
||||
background: @fp-calendarBackground;
|
||||
background: var(--fp-calendarBackground, @fp-calendarBackground);
|
||||
box-shadow: 1px 0 0 @fp-calendarBorderColor,
|
||||
-1px 0 0 @fp-calendarBorderColor,
|
||||
0 1px 0 @fp-calendarBorderColor,
|
||||
0 -1px 0 @fp-calendarBorderColor,
|
||||
0 3px 13px fadeout(black, 92%);
|
||||
box-shadow: 1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor),
|
||||
-1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor),
|
||||
0 1px 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor),
|
||||
0 -1px 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor),
|
||||
0 3px 13px fadeout(black, 92%);
|
||||
}
|
||||
|
||||
&.flatpickr-calendar.arrowTop:before {
|
||||
border-bottom-color: @fp-calendarBorderColor;
|
||||
border-bottom-color: var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
}
|
||||
&.flatpickr-calendar.arrowTop:after {
|
||||
border-bottom-color: @fp-calendarBackground;
|
||||
border-bottom-color: var(--fp-calendarBackground, @fp-calendarBackground);
|
||||
}
|
||||
&.flatpickr-calendar.arrowBottom:before {
|
||||
border-top-color: @fp-calendarBorderColor;
|
||||
border-top-color: var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
}
|
||||
&.flatpickr-calendar.arrowBottom:after {
|
||||
border-top-color: @fp-calendarBackground;
|
||||
border-top-color: var(--fp-calendarBackground, @fp-calendarBackground);
|
||||
}
|
||||
|
||||
&.flatpickr-calendar.hasTime .flatpickr-time {
|
||||
border-top-color: @fp-calendarBorderColor;
|
||||
border-top-color: var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
}
|
||||
|
||||
.dayContainer + .dayContainer {
|
||||
-webkit-box-shadow: -1px 0 0 @fp-calendarBorderColor;
|
||||
-webkit-box-shadow: -1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
box-shadow: -1px 0 0 @fp-calendarBorderColor;
|
||||
box-shadow: -1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
}
|
||||
|
||||
.flatpickr-day {
|
||||
color: @fp-dayForeground;
|
||||
color: var(--fp-dayForeground, @fp-dayForeground);
|
||||
}
|
||||
.flatpickr-day.today {
|
||||
border-color: @fp-todayColor;
|
||||
border-color: var(--fp-todayColor, @fp-todayColor);
|
||||
}
|
||||
.flatpickr-day.today:hover,
|
||||
.flatpickr-day.today:focus {
|
||||
border-color: @fp-todayColor;
|
||||
border-color: var(--fp-todayColor, @fp-todayColor);
|
||||
background: @fp-todayColor;
|
||||
background: var(--fp-todayColor, @fp-todayColor);
|
||||
color: @fp-calendarBackground;
|
||||
color: var(--fp-calendarBackground, @fp-calendarBackground);
|
||||
}
|
||||
.flatpickr-day.selected,
|
||||
.flatpickr-day.startRange,
|
||||
.flatpickr-day.endRange,
|
||||
.flatpickr-day.selected.inRange,
|
||||
.flatpickr-day.startRange.inRange,
|
||||
.flatpickr-day.endRange.inRange,
|
||||
.flatpickr-day.selected:focus,
|
||||
.flatpickr-day.startRange:focus,
|
||||
.flatpickr-day.endRange:focus,
|
||||
.flatpickr-day.selected:hover,
|
||||
.flatpickr-day.startRange:hover,
|
||||
.flatpickr-day.endRange:hover,
|
||||
.flatpickr-day.selected.prevMonthDay,
|
||||
.flatpickr-day.startRange.prevMonthDay,
|
||||
.flatpickr-day.endRange.prevMonthDay,
|
||||
.flatpickr-day.selected.nextMonthDay,
|
||||
.flatpickr-day.startRange.nextMonthDay,
|
||||
.flatpickr-day.endRange.nextMonthDay {
|
||||
color: @fp-calendarBackground;
|
||||
color: var(--fp-calendarBackground, @fp-calendarBackground);
|
||||
}
|
||||
.flatpickr-day.inRange,
|
||||
.flatpickr-day.prevMonthDay.inRange,
|
||||
.flatpickr-day.nextMonthDay.inRange,
|
||||
.flatpickr-day.today.inRange,
|
||||
.flatpickr-day.prevMonthDay.today.inRange,
|
||||
.flatpickr-day.nextMonthDay.today.inRange,
|
||||
.flatpickr-day:hover,
|
||||
.flatpickr-day.prevMonthDay:hover,
|
||||
.flatpickr-day.nextMonthDay:hover,
|
||||
.flatpickr-day:focus,
|
||||
.flatpickr-day.nextMonthDay:focus {
|
||||
background: @fp-dayHoverBackground;
|
||||
background: var(--fp-dayHoverBackground, @fp-dayHoverBackground);
|
||||
border-color: @fp-dayHoverBackground;
|
||||
border-color: var(--fp-dayHoverBackground, @fp-dayHoverBackground);
|
||||
}
|
||||
.flatpickr-day.inRange {
|
||||
-webkit-box-shadow: -5px 0 0 @fp-dayHoverBackground, 5px 0 0 @fp-dayHoverBackground;
|
||||
-webkit-box-shadow: -5px 0 0 var(--fp-dayHoverBackground, @fp-dayHoverBackground),
|
||||
5px 0 0 var(--fp-dayHoverBackground, @fp-dayHoverBackground);
|
||||
box-shadow: -5px 0 0 @fp-dayHoverBackground, 5px 0 0 @fp-dayHoverBackground;
|
||||
box-shadow: -5px 0 0 var(--fp-dayHoverBackground, @fp-dayHoverBackground),
|
||||
5px 0 0 var(--fp-dayHoverBackground, @fp-dayHoverBackground);
|
||||
}
|
||||
.flatpickr-day.prevMonthDay,
|
||||
.flatpickr-day.nextMonthDay,
|
||||
.flatpickr-day.notAllowed,
|
||||
.flatpickr-day.notAllowed.prevMonthDay,
|
||||
.flatpickr-day.notAllowed.nextMonthDay {
|
||||
color: @fp-outsideRangeDayForeground;
|
||||
color: var(--fp-outsideRangeDayForeground, @fp-outsideRangeDayForeground);
|
||||
}
|
||||
.flatpickr-day.flatpickr-disabled,
|
||||
.flatpickr-day.flatpickr-disabled:hover {
|
||||
color: @fp-disabledDayForeground;
|
||||
color: var(--fp-disabledDayForeground, @fp-disabledDayForeground);
|
||||
}
|
||||
.flatpickr-day.selected,
|
||||
.flatpickr-day.startRange,
|
||||
.flatpickr-day.endRange,
|
||||
.flatpickr-day.selected.inRange,
|
||||
.flatpickr-day.startRange.inRange,
|
||||
.flatpickr-day.endRange.inRange,
|
||||
.flatpickr-day.selected:focus,
|
||||
.flatpickr-day.startRange:focus,
|
||||
.flatpickr-day.endRange:focus,
|
||||
.flatpickr-day.selected:hover,
|
||||
.flatpickr-day.startRange:hover,
|
||||
.flatpickr-day.endRange:hover,
|
||||
.flatpickr-day.selected.prevMonthDay,
|
||||
.flatpickr-day.startRange.prevMonthDay,
|
||||
.flatpickr-day.endRange.prevMonthDay,
|
||||
.flatpickr-day.selected.nextMonthDay,
|
||||
.flatpickr-day.startRange.nextMonthDay,
|
||||
.flatpickr-day.endRange.nextMonthDay {
|
||||
background: @fp-selectedDayBackground;
|
||||
background: var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
border-color: @fp-selectedDayBackground;
|
||||
border-color: var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
}
|
||||
.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
|
||||
.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
|
||||
.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
|
||||
-webkit-box-shadow: -10px 0 0 @fp-selectedDayBackground;
|
||||
-webkit-box-shadow: -10px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
box-shadow: -10px 0 0 @fp-selectedDayBackground;
|
||||
box-shadow: -10px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
}
|
||||
.flatpickr-day.week.selected {
|
||||
-webkit-box-shadow: -5px 0 0 @fp-selectedDayBackground, 5px 0 0 @fp-selectedDayBackground;
|
||||
-webkit-box-shadow: -5px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground),
|
||||
5px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
box-shadow: -5px 0 0 @fp-selectedDayBackground, 5px 0 0 @fp-selectedDayBackground;
|
||||
box-shadow: -5px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground),
|
||||
5px 0 0 var(--fp-selectedDayBackground, @fp-selectedDayBackground);
|
||||
}
|
||||
|
||||
.flatpickr-weekwrapper .flatpickr-weeks {
|
||||
-webkit-box-shadow: 1px 0 0 @fp-calendarBorderColor;
|
||||
-webkit-box-shadow: 1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
box-shadow: 1px 0 0 @fp-calendarBorderColor;
|
||||
box-shadow: 1px 0 0 var(--fp-calendarBorderColor, @fp-calendarBorderColor);
|
||||
}
|
||||
.flatpickr-weekwrapper span.flatpickr-day,
|
||||
.flatpickr-weekwrapper span.flatpickr-day:hover {
|
||||
color: @fp-weekNumberForeground;
|
||||
color: var(--fp-weekNumberForeground, @fp-weekNumberForeground);
|
||||
}
|
||||
.flatpickr-weekdays {
|
||||
background: @fp-weekdaysBackground;
|
||||
background: var(--fp-weekdaysBackground, @fp-weekdaysBackground);
|
||||
}
|
||||
span.flatpickr-weekday {
|
||||
background: @fp-monthBackground;
|
||||
background: var(--fp-monthBackground, @fp-monthBackground);
|
||||
color: @fp-weekdaysForeground;
|
||||
color: var(--fp-weekdaysForeground, @fp-weekdaysForeground);
|
||||
}
|
||||
|
||||
.flatpickr-months .flatpickr-month {
|
||||
background: @fp-monthBackground;
|
||||
background: var(--fp-monthBackground, @fp-monthBackground);
|
||||
color: @fp-monthForeground;
|
||||
color: var(--fp-monthForeground, @fp-monthForeground);
|
||||
fill: @fp-monthForeground;
|
||||
fill: var(--fp-monthForeground, @fp-monthForeground);
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month,
|
||||
.flatpickr-months .flatpickr-next-month {
|
||||
color: @fp-monthForeground;
|
||||
color: var(--fp-monthForeground, @fp-monthForeground);
|
||||
fill: @fp-monthForeground;
|
||||
fill: var(--fp-monthForeground, @fp-monthForeground);
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month:hover,
|
||||
.flatpickr-months .flatpickr-next-month:hover {
|
||||
color: @fp-todayColor;
|
||||
color: var(--fp-todayColor, @fp-todayColor);
|
||||
}
|
||||
.flatpickr-months .flatpickr-prev-month:hover svg,
|
||||
.flatpickr-months .flatpickr-next-month:hover svg {
|
||||
fill: @fp-arrow_hover_color;
|
||||
fill: var(--fp-arrow_hover_color, @fp-arrow_hover_color);
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months {
|
||||
background: @fp-monthBackground;
|
||||
background: var(--fp-monthBackground, @fp-monthBackground);
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
|
||||
background-color: @fp-monthBackground;
|
||||
background-color: var(--fp-monthBackground, @fp-monthBackground);
|
||||
}
|
||||
.flatpickr-current-month .numInputWrapper span.arrowUp:after {
|
||||
border-bottom-color: @fp-monthForeground;
|
||||
border-bottom-color: var(--fp-monthForeground, @fp-monthForeground);
|
||||
}
|
||||
.flatpickr-current-month .numInputWrapper span.arrowDown:after {
|
||||
border-top-color: @fp-monthForeground;
|
||||
border-top-color: var(--fp-monthForeground, @fp-monthForeground);
|
||||
}
|
||||
|
||||
.numInputWrapper span {
|
||||
border-color: @fp-numChooserBorderColor;
|
||||
border-color: var(--fp-numChooserBorderColor, @fp-numChooserBorderColor);
|
||||
}
|
||||
.numInputWrapper span:hover {
|
||||
background: @fp-hoverNumChooserBg;
|
||||
background: var(--fp-hoverNumChooserBg, @fp-hoverNumChooserBg);
|
||||
}
|
||||
.numInputWrapper span:active {
|
||||
background: @fp-hoverNumChooserBg;
|
||||
background: var(--fp-hoverNumChooserBg, @fp-hoverNumChooserBg);
|
||||
}
|
||||
.numInputWrapper span svg path {
|
||||
fill: @fp-numChooserSvgFillColor;
|
||||
fill: var(--fp-numChooserSvgFillColor, @fp-numChooserSvgFillColor);
|
||||
}
|
||||
.numInputWrapper span.arrowUp:after {
|
||||
border-bottom-color: @fp-arrowColor;
|
||||
border-bottom-color: var(--fp-arrowColor, @fp-arrowColor);
|
||||
}
|
||||
.numInputWrapper span.arrowDown:after {
|
||||
border-top-color: @fp-arrowColor;
|
||||
border-top-color: var(--fp-arrowColor, @fp-arrowColor);
|
||||
}
|
||||
.numInputWrapper:hover {
|
||||
background: @fp-hoverInvertedBg;
|
||||
background: var(--fp-hoverInvertedBg, @fp-hoverInvertedBg);
|
||||
}
|
||||
.flatpickr-current-month span.cur-month:hover {
|
||||
background: @fp-hoverInvertedBg;
|
||||
background: var(--fp-hoverInvertedBg, @fp-hoverInvertedBg);
|
||||
}
|
||||
.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
|
||||
background: @fp-hoverInvertedBg;
|
||||
background: var(--fp-hoverInvertedBg, @fp-hoverInvertedBg);
|
||||
}
|
||||
|
||||
.flatpickr-time input:hover,
|
||||
.flatpickr-time .flatpickr-am-pm:hover,
|
||||
.flatpickr-time input:focus,
|
||||
.flatpickr-time .flatpickr-am-pm:focus {
|
||||
background: @fp-timeHoverBg;
|
||||
background: var(--fp-timeHoverBg, @fp-timeHoverBg);
|
||||
}
|
||||
.flatpickr-time .numInputWrapper span.arrowUp:after {
|
||||
border-bottom-color: @fp-dayForeground;
|
||||
border-bottom-color: var(--fp-dayForeground, @fp-dayForeground);
|
||||
}
|
||||
.flatpickr-time .numInputWrapper span.arrowDown:after {
|
||||
border-top-color: @fp-dayForeground;
|
||||
border-top-color: var(--fp-dayForeground, @fp-dayForeground);
|
||||
}
|
||||
.flatpickr-time input {
|
||||
color: @fp-dayForeground;
|
||||
color: var(--fp-dayForeground, @fp-dayForeground);
|
||||
}
|
||||
.flatpickr-time .flatpickr-time-separator,
|
||||
.flatpickr-time .flatpickr-am-pm {
|
||||
color: @fp-dayForeground;
|
||||
color: var(--fp-dayForeground, @fp-dayForeground);
|
||||
}
|
||||
}
|
17
asset/css/vertical-key-value.less
Normal file
17
asset/css/vertical-key-value.less
Normal file
@ -0,0 +1,17 @@
|
||||
.vertical-key-value {
|
||||
display: inline-block;
|
||||
line-height: .75;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
|
||||
.value {
|
||||
color: var(--default-text-color, @default-text-color);
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.key {
|
||||
font-size: 10/12em;
|
||||
color: var(--default-text-color-light, @default-text-color-light);
|
||||
}
|
||||
}
|
161
asset/js/notjQuery.js
Normal file
161
asset/js/notjQuery.js
Normal file
@ -0,0 +1,161 @@
|
||||
define(function () {
|
||||
|
||||
"use strict";
|
||||
|
||||
class notjQuery {
|
||||
/**
|
||||
* Create a new notjQuery object
|
||||
*
|
||||
* @param {Element} element
|
||||
*/
|
||||
constructor(element) {
|
||||
if (! element) {
|
||||
throw new Error("Can't create a notjQuery object for `" + element + "`");
|
||||
}
|
||||
|
||||
this.element = element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an event listener to the element
|
||||
*
|
||||
* @param {string} type
|
||||
* @param {string} selector
|
||||
* @param {function} handler
|
||||
* @param {object} context
|
||||
*/
|
||||
on(type, selector, handler, context = null) {
|
||||
if (typeof selector === 'function') {
|
||||
context = handler;
|
||||
handler = selector;
|
||||
selector = null;
|
||||
}
|
||||
|
||||
if (selector === null) {
|
||||
this.element.addEventListener(type, e => {
|
||||
if (type === 'focusin' && e.target.receivesCustomFocus) {
|
||||
// Ignore native focus event if a custom one follows
|
||||
if (e instanceof FocusEvent) {
|
||||
delete e.target.receivesCustomFocus;
|
||||
e.stopImmediatePropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (context === null) {
|
||||
handler.apply(e.currentTarget, [e]);
|
||||
} else {
|
||||
handler.apply(context, [e]);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.element.addEventListener(type, e => {
|
||||
if (type === 'focusin' && e.target.receivesCustomFocus) {
|
||||
// Ignore native focus event if a custom one follows
|
||||
if (e instanceof FocusEvent) {
|
||||
delete e.target.receivesCustomFocus;
|
||||
e.stopImmediatePropagation();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Object.defineProperty(e, 'currentTarget', { value: e.currentTarget, writable: true });
|
||||
|
||||
let currentParent = e.currentTarget.parentNode;
|
||||
for (let target = e.target; target && target !== currentParent; target = target.parentNode) {
|
||||
if (target.matches(selector)) {
|
||||
e.currentTarget = target;
|
||||
if (context === null) {
|
||||
handler.apply(target, [e]);
|
||||
} else {
|
||||
handler.apply(context, [e]);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a custom event on the element, asynchronously
|
||||
*
|
||||
* The event will bubble and is not cancelable.
|
||||
*
|
||||
* @param {string} type
|
||||
* @param {{}} detail
|
||||
*/
|
||||
trigger(type, detail = null) {
|
||||
setTimeout(() => {
|
||||
this.element.dispatchEvent(new CustomEvent(type, {
|
||||
cancelable: true, // TODO: this should depend on whether it's a native or custom event
|
||||
bubbles: true,
|
||||
detail: detail
|
||||
}));
|
||||
}, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Focus the element
|
||||
*
|
||||
* Any other option than `preventScroll` is used as `event.detail`.
|
||||
*
|
||||
* @param {{}} options
|
||||
*/
|
||||
focus(options = {}) {
|
||||
let { preventScroll = false, ...data } = options;
|
||||
|
||||
const hasData = Object.keys(data).length > 0;
|
||||
if (hasData) {
|
||||
this.element.receivesCustomFocus = true;
|
||||
}
|
||||
|
||||
// Put separately on the event loop because focus() forces layout.
|
||||
setTimeout(() => this.element.focus({ preventScroll: preventScroll }), 0);
|
||||
|
||||
if (hasData) {
|
||||
this.trigger('focusin', data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the element string as DOM Element
|
||||
*
|
||||
* @param {string} html
|
||||
* @return {Element}
|
||||
*/
|
||||
static render(html) {
|
||||
if (typeof html !== 'string') {
|
||||
throw new Error("Can\'t render `" + html + "`");
|
||||
}
|
||||
|
||||
let template = document.createElement('template');
|
||||
template.innerHTML = html;
|
||||
return template.content.firstChild;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a notjQuery object for the given element
|
||||
*
|
||||
* @param {Element} element
|
||||
* @return {notjQuery}
|
||||
*/
|
||||
let factory = function (element) {
|
||||
return new notjQuery(element);
|
||||
}
|
||||
|
||||
// Define the static methods on the factory
|
||||
for (let name of Object.getOwnPropertyNames(notjQuery)) {
|
||||
if (['length', 'prototype', 'name'].includes(name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Object.defineProperty(factory, name, {
|
||||
value: notjQuery[name]
|
||||
});
|
||||
}
|
||||
|
||||
return factory;
|
||||
});
|
3721
asset/js/vendor/Sortable.js
vendored
Normal file
3721
asset/js/vendor/Sortable.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
asset/js/vendor/Sortable.min.js
vendored
Normal file
2
asset/js/vendor/Sortable.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2705
asset/js/vendor/flatpickr.js
vendored
Normal file
2705
asset/js/vendor/flatpickr.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
asset/js/vendor/flatpickr.min.js
vendored
Normal file
2
asset/js/vendor/flatpickr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
62
asset/js/vendor/flatpickr/l10n/ar.js
vendored
Normal file
62
asset/js/vendor/flatpickr/l10n/ar.js
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ar = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Arabic = {
|
||||
weekdays: {
|
||||
shorthand: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت"],
|
||||
longhand: [
|
||||
"الأحد",
|
||||
"الاثنين",
|
||||
"الثلاثاء",
|
||||
"الأربعاء",
|
||||
"الخميس",
|
||||
"الجمعة",
|
||||
"السبت",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
|
||||
longhand: [
|
||||
"يناير",
|
||||
"فبراير",
|
||||
"مارس",
|
||||
"أبريل",
|
||||
"مايو",
|
||||
"يونيو",
|
||||
"يوليو",
|
||||
"أغسطس",
|
||||
"سبتمبر",
|
||||
"أكتوبر",
|
||||
"نوفمبر",
|
||||
"ديسمبر",
|
||||
],
|
||||
},
|
||||
firstDayOfWeek: 6,
|
||||
rangeSeparator: " إلى ",
|
||||
weekAbbreviation: "Wk",
|
||||
scrollTitle: "قم بالتمرير للزيادة",
|
||||
toggleTitle: "اضغط للتبديل",
|
||||
amPM: ["ص", "م"],
|
||||
yearAriaLabel: "سنة",
|
||||
monthAriaLabel: "شهر",
|
||||
hourAriaLabel: "ساعة",
|
||||
minuteAriaLabel: "دقيقة",
|
||||
time_24hr: false,
|
||||
};
|
||||
fp.l10ns.ar = Arabic;
|
||||
var ar = fp.l10ns;
|
||||
|
||||
exports.Arabic = Arabic;
|
||||
exports.default = ar;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
70
asset/js/vendor/flatpickr/l10n/de.js
vendored
Normal file
70
asset/js/vendor/flatpickr/l10n/de.js
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.de = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var German = {
|
||||
weekdays: {
|
||||
shorthand: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
|
||||
longhand: [
|
||||
"Sonntag",
|
||||
"Montag",
|
||||
"Dienstag",
|
||||
"Mittwoch",
|
||||
"Donnerstag",
|
||||
"Freitag",
|
||||
"Samstag",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Jan",
|
||||
"Feb",
|
||||
"Mär",
|
||||
"Apr",
|
||||
"Mai",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dez",
|
||||
],
|
||||
longhand: [
|
||||
"Januar",
|
||||
"Februar",
|
||||
"März",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Dezember",
|
||||
],
|
||||
},
|
||||
firstDayOfWeek: 1,
|
||||
weekAbbreviation: "KW",
|
||||
rangeSeparator: " bis ",
|
||||
scrollTitle: "Zum Ändern scrollen",
|
||||
toggleTitle: "Zum Umschalten klicken",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.de = German;
|
||||
var de = fp.l10ns;
|
||||
|
||||
exports.German = German;
|
||||
exports.default = de;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
70
asset/js/vendor/flatpickr/l10n/es.js
vendored
Normal file
70
asset/js/vendor/flatpickr/l10n/es.js
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.es = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Spanish = {
|
||||
weekdays: {
|
||||
shorthand: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"],
|
||||
longhand: [
|
||||
"Domingo",
|
||||
"Lunes",
|
||||
"Martes",
|
||||
"Miércoles",
|
||||
"Jueves",
|
||||
"Viernes",
|
||||
"Sábado",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Ene",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dic",
|
||||
],
|
||||
longhand: [
|
||||
"Enero",
|
||||
"Febrero",
|
||||
"Marzo",
|
||||
"Abril",
|
||||
"Mayo",
|
||||
"Junio",
|
||||
"Julio",
|
||||
"Agosto",
|
||||
"Septiembre",
|
||||
"Octubre",
|
||||
"Noviembre",
|
||||
"Diciembre",
|
||||
],
|
||||
},
|
||||
ordinal: function () {
|
||||
return "º";
|
||||
},
|
||||
firstDayOfWeek: 1,
|
||||
rangeSeparator: " a ",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.es = Spanish;
|
||||
var es = fp.l10ns;
|
||||
|
||||
exports.Spanish = Spanish;
|
||||
exports.default = es;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
69
asset/js/vendor/flatpickr/l10n/fi.js
vendored
Normal file
69
asset/js/vendor/flatpickr/l10n/fi.js
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fi = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Finnish = {
|
||||
firstDayOfWeek: 1,
|
||||
weekdays: {
|
||||
shorthand: ["su", "ma", "ti", "ke", "to", "pe", "la"],
|
||||
longhand: [
|
||||
"sunnuntai",
|
||||
"maanantai",
|
||||
"tiistai",
|
||||
"keskiviikko",
|
||||
"torstai",
|
||||
"perjantai",
|
||||
"lauantai",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"tammi",
|
||||
"helmi",
|
||||
"maalis",
|
||||
"huhti",
|
||||
"touko",
|
||||
"kesä",
|
||||
"heinä",
|
||||
"elo",
|
||||
"syys",
|
||||
"loka",
|
||||
"marras",
|
||||
"joulu",
|
||||
],
|
||||
longhand: [
|
||||
"tammikuu",
|
||||
"helmikuu",
|
||||
"maaliskuu",
|
||||
"huhtikuu",
|
||||
"toukokuu",
|
||||
"kesäkuu",
|
||||
"heinäkuu",
|
||||
"elokuu",
|
||||
"syyskuu",
|
||||
"lokakuu",
|
||||
"marraskuu",
|
||||
"joulukuu",
|
||||
],
|
||||
},
|
||||
ordinal: function () {
|
||||
return ".";
|
||||
},
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.fi = Finnish;
|
||||
var fi = fp.l10ns;
|
||||
|
||||
exports.Finnish = Finnish;
|
||||
exports.default = fi;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
75
asset/js/vendor/flatpickr/l10n/fr.js
vendored
Normal file
75
asset/js/vendor/flatpickr/l10n/fr.js
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var French = {
|
||||
firstDayOfWeek: 1,
|
||||
weekdays: {
|
||||
shorthand: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"],
|
||||
longhand: [
|
||||
"dimanche",
|
||||
"lundi",
|
||||
"mardi",
|
||||
"mercredi",
|
||||
"jeudi",
|
||||
"vendredi",
|
||||
"samedi",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"janv",
|
||||
"févr",
|
||||
"mars",
|
||||
"avr",
|
||||
"mai",
|
||||
"juin",
|
||||
"juil",
|
||||
"août",
|
||||
"sept",
|
||||
"oct",
|
||||
"nov",
|
||||
"déc",
|
||||
],
|
||||
longhand: [
|
||||
"janvier",
|
||||
"février",
|
||||
"mars",
|
||||
"avril",
|
||||
"mai",
|
||||
"juin",
|
||||
"juillet",
|
||||
"août",
|
||||
"septembre",
|
||||
"octobre",
|
||||
"novembre",
|
||||
"décembre",
|
||||
],
|
||||
},
|
||||
ordinal: function (nth) {
|
||||
if (nth > 1)
|
||||
return "";
|
||||
return "er";
|
||||
},
|
||||
rangeSeparator: " au ",
|
||||
weekAbbreviation: "Sem",
|
||||
scrollTitle: "Défiler pour augmenter la valeur",
|
||||
toggleTitle: "Cliquer pour basculer",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.fr = French;
|
||||
var fr = fp.l10ns;
|
||||
|
||||
exports.French = French;
|
||||
exports.default = fr;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
71
asset/js/vendor/flatpickr/l10n/it.js
vendored
Normal file
71
asset/js/vendor/flatpickr/l10n/it.js
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.it = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Italian = {
|
||||
weekdays: {
|
||||
shorthand: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"],
|
||||
longhand: [
|
||||
"Domenica",
|
||||
"Lunedì",
|
||||
"Martedì",
|
||||
"Mercoledì",
|
||||
"Giovedì",
|
||||
"Venerdì",
|
||||
"Sabato",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Gen",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Mag",
|
||||
"Giu",
|
||||
"Lug",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Ott",
|
||||
"Nov",
|
||||
"Dic",
|
||||
],
|
||||
longhand: [
|
||||
"Gennaio",
|
||||
"Febbraio",
|
||||
"Marzo",
|
||||
"Aprile",
|
||||
"Maggio",
|
||||
"Giugno",
|
||||
"Luglio",
|
||||
"Agosto",
|
||||
"Settembre",
|
||||
"Ottobre",
|
||||
"Novembre",
|
||||
"Dicembre",
|
||||
],
|
||||
},
|
||||
firstDayOfWeek: 1,
|
||||
ordinal: function () { return "°"; },
|
||||
rangeSeparator: " al ",
|
||||
weekAbbreviation: "Se",
|
||||
scrollTitle: "Scrolla per aumentare",
|
||||
toggleTitle: "Clicca per cambiare",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.it = Italian;
|
||||
var it = fp.l10ns;
|
||||
|
||||
exports.Italian = Italian;
|
||||
exports.default = it;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
71
asset/js/vendor/flatpickr/l10n/ja.js
vendored
Normal file
71
asset/js/vendor/flatpickr/l10n/ja.js
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ja = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Japanese = {
|
||||
weekdays: {
|
||||
shorthand: ["日", "月", "火", "水", "木", "金", "土"],
|
||||
longhand: [
|
||||
"日曜日",
|
||||
"月曜日",
|
||||
"火曜日",
|
||||
"水曜日",
|
||||
"木曜日",
|
||||
"金曜日",
|
||||
"土曜日",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"1月",
|
||||
"2月",
|
||||
"3月",
|
||||
"4月",
|
||||
"5月",
|
||||
"6月",
|
||||
"7月",
|
||||
"8月",
|
||||
"9月",
|
||||
"10月",
|
||||
"11月",
|
||||
"12月",
|
||||
],
|
||||
longhand: [
|
||||
"1月",
|
||||
"2月",
|
||||
"3月",
|
||||
"4月",
|
||||
"5月",
|
||||
"6月",
|
||||
"7月",
|
||||
"8月",
|
||||
"9月",
|
||||
"10月",
|
||||
"11月",
|
||||
"12月",
|
||||
],
|
||||
},
|
||||
time_24hr: true,
|
||||
rangeSeparator: " から ",
|
||||
monthAriaLabel: "月",
|
||||
amPM: ["午前", "午後"],
|
||||
yearAriaLabel: "年",
|
||||
hourAriaLabel: "時間",
|
||||
minuteAriaLabel: "分",
|
||||
};
|
||||
fp.l10ns.ja = Japanese;
|
||||
var ja = fp.l10ns;
|
||||
|
||||
exports.Japanese = Japanese;
|
||||
exports.default = ja;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
66
asset/js/vendor/flatpickr/l10n/pt.js
vendored
Normal file
66
asset/js/vendor/flatpickr/l10n/pt.js
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pt = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Portuguese = {
|
||||
weekdays: {
|
||||
shorthand: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
|
||||
longhand: [
|
||||
"Domingo",
|
||||
"Segunda-feira",
|
||||
"Terça-feira",
|
||||
"Quarta-feira",
|
||||
"Quinta-feira",
|
||||
"Sexta-feira",
|
||||
"Sábado",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Jan",
|
||||
"Fev",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"Mai",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Out",
|
||||
"Nov",
|
||||
"Dez",
|
||||
],
|
||||
longhand: [
|
||||
"Janeiro",
|
||||
"Fevereiro",
|
||||
"Março",
|
||||
"Abril",
|
||||
"Maio",
|
||||
"Junho",
|
||||
"Julho",
|
||||
"Agosto",
|
||||
"Setembro",
|
||||
"Outubro",
|
||||
"Novembro",
|
||||
"Dezembro",
|
||||
],
|
||||
},
|
||||
rangeSeparator: " até ",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.pt = Portuguese;
|
||||
var pt = fp.l10ns;
|
||||
|
||||
exports.Portuguese = Portuguese;
|
||||
exports.default = pt;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
75
asset/js/vendor/flatpickr/l10n/ru.js
vendored
Normal file
75
asset/js/vendor/flatpickr/l10n/ru.js
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ru = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Russian = {
|
||||
weekdays: {
|
||||
shorthand: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
||||
longhand: [
|
||||
"Воскресенье",
|
||||
"Понедельник",
|
||||
"Вторник",
|
||||
"Среда",
|
||||
"Четверг",
|
||||
"Пятница",
|
||||
"Суббота",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Янв",
|
||||
"Фев",
|
||||
"Март",
|
||||
"Апр",
|
||||
"Май",
|
||||
"Июнь",
|
||||
"Июль",
|
||||
"Авг",
|
||||
"Сен",
|
||||
"Окт",
|
||||
"Ноя",
|
||||
"Дек",
|
||||
],
|
||||
longhand: [
|
||||
"Январь",
|
||||
"Февраль",
|
||||
"Март",
|
||||
"Апрель",
|
||||
"Май",
|
||||
"Июнь",
|
||||
"Июль",
|
||||
"Август",
|
||||
"Сентябрь",
|
||||
"Октябрь",
|
||||
"Ноябрь",
|
||||
"Декабрь",
|
||||
],
|
||||
},
|
||||
firstDayOfWeek: 1,
|
||||
ordinal: function () {
|
||||
return "";
|
||||
},
|
||||
rangeSeparator: " — ",
|
||||
weekAbbreviation: "Нед.",
|
||||
scrollTitle: "Прокрутите для увеличения",
|
||||
toggleTitle: "Нажмите для переключения",
|
||||
amPM: ["ДП", "ПП"],
|
||||
yearAriaLabel: "Год",
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.ru = Russian;
|
||||
var ru = fp.l10ns;
|
||||
|
||||
exports.Russian = Russian;
|
||||
exports.default = ru;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
66
asset/js/vendor/flatpickr/l10n/uk.js
vendored
Normal file
66
asset/js/vendor/flatpickr/l10n/uk.js
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.icinga ? define(["exports"], factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.uk = {}));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var fp = typeof window !== "undefined" && window.flatpickr !== undefined
|
||||
? window.flatpickr
|
||||
: {
|
||||
l10ns: {},
|
||||
};
|
||||
var Ukrainian = {
|
||||
firstDayOfWeek: 1,
|
||||
weekdays: {
|
||||
shorthand: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
|
||||
longhand: [
|
||||
"Неділя",
|
||||
"Понеділок",
|
||||
"Вівторок",
|
||||
"Середа",
|
||||
"Четвер",
|
||||
"П'ятниця",
|
||||
"Субота",
|
||||
],
|
||||
},
|
||||
months: {
|
||||
shorthand: [
|
||||
"Січ",
|
||||
"Лют",
|
||||
"Бер",
|
||||
"Кві",
|
||||
"Тра",
|
||||
"Чер",
|
||||
"Лип",
|
||||
"Сер",
|
||||
"Вер",
|
||||
"Жов",
|
||||
"Лис",
|
||||
"Гру",
|
||||
],
|
||||
longhand: [
|
||||
"Січень",
|
||||
"Лютий",
|
||||
"Березень",
|
||||
"Квітень",
|
||||
"Травень",
|
||||
"Червень",
|
||||
"Липень",
|
||||
"Серпень",
|
||||
"Вересень",
|
||||
"Жовтень",
|
||||
"Листопад",
|
||||
"Грудень",
|
||||
],
|
||||
},
|
||||
time_24hr: true,
|
||||
};
|
||||
fp.l10ns.uk = Ukrainian;
|
||||
var uk = fp.l10ns;
|
||||
|
||||
exports.Ukrainian = Ukrainian;
|
||||
exports.default = uk;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
869
asset/js/widget/BaseInput.js
Normal file
869
asset/js/widget/BaseInput.js
Normal file
@ -0,0 +1,869 @@
|
||||
define(["../notjQuery", "Completer"], function ($, Completer) {
|
||||
|
||||
"use strict";
|
||||
|
||||
class BaseInput {
|
||||
constructor(input) {
|
||||
this.input = input;
|
||||
this.disabled = false;
|
||||
this.separator = '';
|
||||
this.usedTerms = [];
|
||||
this.completer = null;
|
||||
this.lastCompletedTerm = null;
|
||||
this._dataInput = null;
|
||||
this._termInput = null;
|
||||
this._termContainer = null;
|
||||
}
|
||||
|
||||
get dataInput() {
|
||||
if (this._dataInput === null) {
|
||||
this._dataInput = document.querySelector(this.input.dataset.dataInput);
|
||||
}
|
||||
|
||||
return this._dataInput;
|
||||
}
|
||||
|
||||
get termInput() {
|
||||
if (this._termInput === null) {
|
||||
this._termInput = document.querySelector(this.input.dataset.termInput);
|
||||
}
|
||||
|
||||
return this._termInput;
|
||||
}
|
||||
|
||||
get termContainer() {
|
||||
if (this._termContainer === null) {
|
||||
this._termContainer = document.querySelector(this.input.dataset.termContainer);
|
||||
}
|
||||
|
||||
return this._termContainer;
|
||||
}
|
||||
|
||||
bind() {
|
||||
// Form submissions
|
||||
$(this.input.form).on('submit', this.onSubmit, this);
|
||||
$(this.input.form).on(
|
||||
'click', 'button:not([type]), button[type="submit"], input[type="submit"]', this.onButtonClick, this);
|
||||
|
||||
// User interactions
|
||||
$(this.input).on('input', this.onInput, this);
|
||||
$(this.input).on('keydown', this.onKeyDown, this);
|
||||
$(this.input).on('keyup', this.onKeyUp, this);
|
||||
$(this.input).on('blur', this.onInputBlur, this);
|
||||
$(this.input).on('focusin', this.onTermFocus, this);
|
||||
$(this.termContainer).on('input', '[data-label]', this.onInput, this);
|
||||
$(this.termContainer).on('keydown', '[data-label]', this.onKeyDown, this);
|
||||
$(this.termContainer).on('keyup', '[data-label]', this.onKeyUp, this);
|
||||
$(this.termContainer).on('focusout', '[data-index]', this.onTermFocusOut, this);
|
||||
$(this.termContainer).on('focusin', '[data-index]', this.onTermFocus, this);
|
||||
|
||||
// Copy/Paste
|
||||
$(this.input).on('paste', this.onPaste, this);
|
||||
$(this.input).on('copy', this.onCopyAndCut, this);
|
||||
$(this.input).on('cut', this.onCopyAndCut, this);
|
||||
|
||||
// Should terms be completed?
|
||||
if (this.input.dataset.suggestUrl) {
|
||||
if (this.completer === null) {
|
||||
this.completer = new Completer(this.input, true);
|
||||
this.completer.bind(this.termContainer);
|
||||
}
|
||||
|
||||
$(this.input).on('suggestion', this.onSuggestion, this);
|
||||
$(this.input).on('completion', this.onCompletion, this);
|
||||
$(this.termContainer).on('suggestion', '[data-label]', this.onSuggestion, this);
|
||||
$(this.termContainer).on('completion', '[data-label]', this.onCompletion, this);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
refresh(input) {
|
||||
if (input === this.input) {
|
||||
// If the DOM node is still the same, nothing has changed
|
||||
return;
|
||||
}
|
||||
|
||||
this._termInput = null;
|
||||
this._termContainer = null;
|
||||
|
||||
this.input = input;
|
||||
this.bind();
|
||||
|
||||
if (this.completer !== null) {
|
||||
this.completer.refresh(input, this.termContainer);
|
||||
}
|
||||
|
||||
if (! this.restoreTerms()) {
|
||||
this.reset();
|
||||
}
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.usedTerms = [];
|
||||
this.lastCompletedTerm = null;
|
||||
|
||||
this.togglePlaceholder();
|
||||
this.termInput.value = '';
|
||||
this.termContainer.innerHTML = '';
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this._termContainer = null;
|
||||
this._termInput = null;
|
||||
this.input = null;
|
||||
|
||||
if (this.completer !== null) {
|
||||
this.completer.destroy();
|
||||
this.completer = null;
|
||||
}
|
||||
}
|
||||
|
||||
disable() {
|
||||
this.disabled = true;
|
||||
this.input.disabled = true;
|
||||
this.input.form.classList.add('disabled');
|
||||
this.termContainer.querySelectorAll('[data-index]').forEach(el => el.firstChild.disabled = true);
|
||||
|
||||
if (this.completer !== null) {
|
||||
this.completer.reset();
|
||||
}
|
||||
}
|
||||
|
||||
enable() {
|
||||
this.input.disabled = false;
|
||||
this.input.form.classList.remove('disabled');
|
||||
this.termContainer.querySelectorAll('[data-index]').forEach(el => el.firstChild.disabled = false);
|
||||
this.disabled = false;
|
||||
}
|
||||
|
||||
restoreTerms() {
|
||||
if (this.hasTerms()) {
|
||||
this.usedTerms.forEach((termData, termIndex) => this.addTerm(termData, termIndex));
|
||||
this.togglePlaceholder();
|
||||
this.clearPartialTerm(this.input);
|
||||
} else {
|
||||
this.registerTerms();
|
||||
this.togglePlaceholder();
|
||||
}
|
||||
|
||||
return this.hasTerms();
|
||||
}
|
||||
|
||||
registerTerms() {
|
||||
this.termContainer.querySelectorAll('[data-index]').forEach((label) => {
|
||||
let termData = { ...label.dataset };
|
||||
delete termData.index;
|
||||
|
||||
if (label.className) {
|
||||
termData['class'] = label.className;
|
||||
}
|
||||
|
||||
this.registerTerm(this.decodeTerm(termData), label.dataset.index);
|
||||
});
|
||||
}
|
||||
|
||||
registerTerm(termData, termIndex = null) {
|
||||
if (termIndex !== null) {
|
||||
this.usedTerms.splice(termIndex, 0, termData);
|
||||
return termIndex;
|
||||
} else {
|
||||
return this.usedTerms.push(termData) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
updateTerms(changedTerms) {
|
||||
// Reset the data input, otherwise the value remains and is sent continuously with subsequent requests
|
||||
this.dataInput.value = '';
|
||||
|
||||
for (const termIndex of Object.keys(changedTerms)) {
|
||||
let label = this.termContainer.querySelector(`[data-index="${ termIndex }"]`);
|
||||
if (! label) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let input = label.firstChild;
|
||||
let termData = changedTerms[termIndex];
|
||||
|
||||
if (termData.label) {
|
||||
this.writePartialTerm(termData.label, input);
|
||||
}
|
||||
|
||||
this.updateTermData(termData, input);
|
||||
this.usedTerms[termIndex] = termData;
|
||||
}
|
||||
}
|
||||
|
||||
clearPartialTerm(input) {
|
||||
if (this.completer !== null) {
|
||||
this.completer.reset();
|
||||
}
|
||||
|
||||
this.writePartialTerm('', input);
|
||||
}
|
||||
|
||||
writePartialTerm(value, input) {
|
||||
input.value = value;
|
||||
this.updateTermData({ label: value }, input);
|
||||
}
|
||||
|
||||
readPartialTerm(input) {
|
||||
return input.value.trim();
|
||||
}
|
||||
|
||||
readFullTerm(input, termIndex = null) {
|
||||
let value = this.readPartialTerm(input);
|
||||
if (! value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let termData = {};
|
||||
|
||||
if (termIndex !== null) {
|
||||
termData = { ...this.usedTerms[termIndex] };
|
||||
}
|
||||
|
||||
termData.label = value;
|
||||
termData.search = value;
|
||||
|
||||
if (this.lastCompletedTerm !== null) {
|
||||
if (termData.label === this.lastCompletedTerm.label) {
|
||||
Object.assign(termData, this.lastCompletedTerm);
|
||||
}
|
||||
|
||||
this.lastCompletedTerm = null;
|
||||
}
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
exchangeTerm() {
|
||||
if (this.completer !== null) {
|
||||
this.completer.reset();
|
||||
}
|
||||
|
||||
let termData = this.readFullTerm(this.input);
|
||||
if (! termData) {
|
||||
return {};
|
||||
}
|
||||
|
||||
let addedTerms = {};
|
||||
if (Array.isArray(termData)) {
|
||||
for (let data of termData) {
|
||||
this.addTerm(data);
|
||||
addedTerms[this.usedTerms.length - 1] = data;
|
||||
}
|
||||
} else {
|
||||
this.addTerm(termData);
|
||||
addedTerms[this.usedTerms.length - 1] = termData;
|
||||
}
|
||||
|
||||
this.clearPartialTerm(this.input);
|
||||
|
||||
return addedTerms;
|
||||
}
|
||||
|
||||
insertTerm(termData, termIndex) {
|
||||
this.reIndexTerms(termIndex, 1, true);
|
||||
this.registerTerm(termData, termIndex);
|
||||
return this.insertRenderedTerm(this.renderTerm(termData, termIndex));
|
||||
}
|
||||
|
||||
insertRenderedTerm(label) {
|
||||
let next = this.termContainer.querySelector(`[data-index="${ label.dataset.index + 1 }"]`);
|
||||
this.termContainer.insertBefore(label, next);
|
||||
return label;
|
||||
}
|
||||
|
||||
addTerm(termData, termIndex = null) {
|
||||
if (termIndex === null) {
|
||||
termIndex = this.registerTerm(termData);
|
||||
}
|
||||
|
||||
this.addRenderedTerm(this.renderTerm(termData, termIndex));
|
||||
}
|
||||
|
||||
addRenderedTerm(label) {
|
||||
this.termContainer.appendChild(label);
|
||||
}
|
||||
|
||||
hasTerms() {
|
||||
return this.usedTerms.length > 0;
|
||||
}
|
||||
|
||||
hasSyntaxError(input) {
|
||||
if (typeof input === 'undefined') {
|
||||
input = this.input;
|
||||
}
|
||||
|
||||
return 'hasSyntaxError' in input.dataset;
|
||||
}
|
||||
|
||||
clearSyntaxError(input) {
|
||||
if (typeof input === 'undefined') {
|
||||
input = this.input;
|
||||
}
|
||||
|
||||
delete input.dataset.hasSyntaxError;
|
||||
input.removeAttribute('pattern');
|
||||
input.removeAttribute('title');
|
||||
}
|
||||
|
||||
getQueryString() {
|
||||
return this.termsToQueryString(this.usedTerms);
|
||||
}
|
||||
|
||||
saveTerm(input, updateDOM = true) {
|
||||
let termIndex = input.parentNode.dataset.index;
|
||||
let termData = this.readFullTerm(input, termIndex);
|
||||
|
||||
// Only save if something has changed
|
||||
if (termData === false) {
|
||||
return this.removeTerm(input.parentNode, updateDOM);
|
||||
} else if (this.usedTerms[termIndex].label !== termData.label) {
|
||||
this.usedTerms[termIndex] = termData;
|
||||
this.updateTermData(termData, input);
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
updateTermData(termData, input) {
|
||||
let label = input.parentNode;
|
||||
label.dataset.label = termData.label;
|
||||
|
||||
if (!! termData.search || termData.search === '') {
|
||||
label.dataset.search = termData.search;
|
||||
}
|
||||
}
|
||||
|
||||
termsToQueryString(terms) {
|
||||
return terms.map(e => this.encodeTerm(e).search).join(this.separator).trim();
|
||||
}
|
||||
|
||||
lastTerm() {
|
||||
if (! this.hasTerms()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return this.usedTerms[this.usedTerms.length - 1];
|
||||
}
|
||||
|
||||
popTerm() {
|
||||
let lastTermIndex = this.usedTerms.length - 1;
|
||||
return this.removeTerm(this.termContainer.querySelector(`[data-index="${ lastTermIndex }"]`));
|
||||
}
|
||||
|
||||
removeTerm(label, updateDOM = true) {
|
||||
if (this.completer !== null) {
|
||||
this.completer.reset();
|
||||
}
|
||||
|
||||
let termIndex = Number(label.dataset.index);
|
||||
|
||||
// Re-index following remaining terms
|
||||
this.reIndexTerms(termIndex);
|
||||
|
||||
// Cut the term's data
|
||||
let [termData] = this.usedTerms.splice(termIndex, 1);
|
||||
|
||||
// Avoid saving the term, it's removed after all
|
||||
label.firstChild.skipSaveOnBlur = true;
|
||||
|
||||
if (updateDOM) {
|
||||
// Remove it from the DOM
|
||||
this.removeRenderedTerm(label);
|
||||
}
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
removeRenderedTerm(label) {
|
||||
label.remove();
|
||||
}
|
||||
|
||||
removeRange(labels) {
|
||||
let from = Number(labels[0].dataset.index);
|
||||
let to = Number(labels[labels.length - 1].dataset.index);
|
||||
let deleteCount = to - from + 1;
|
||||
|
||||
if (to < this.usedTerms.length - 1) {
|
||||
// Only re-index if there's something left
|
||||
this.reIndexTerms(to, deleteCount);
|
||||
}
|
||||
|
||||
let removedData = this.usedTerms.splice(from, deleteCount);
|
||||
|
||||
this.removeRenderedRange(labels);
|
||||
|
||||
let removedTerms = {};
|
||||
for (let i = from; removedData.length; i++) {
|
||||
removedTerms[i] = removedData.shift();
|
||||
}
|
||||
|
||||
return removedTerms;
|
||||
}
|
||||
|
||||
removeRenderedRange(labels) {
|
||||
labels.forEach(label => this.removeRenderedTerm(label));
|
||||
}
|
||||
|
||||
reIndexTerms(from, howMuch = 1, forward = false) {
|
||||
if (forward) {
|
||||
for (let i = this.usedTerms.length - 1; i >= from; i--) {
|
||||
let label = this.termContainer.querySelector(`[data-index="${ i }"]`);
|
||||
label.dataset.index = `${ i + howMuch }`;
|
||||
}
|
||||
} else {
|
||||
for (let i = ++from; i < this.usedTerms.length; i++) {
|
||||
let label = this.termContainer.querySelector(`[data-index="${ i }"]`);
|
||||
label.dataset.index = `${ i - howMuch }`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
complete(input, data) {
|
||||
if (this.completer !== null) {
|
||||
$(input).trigger('complete', data);
|
||||
}
|
||||
}
|
||||
|
||||
selectTerms() {
|
||||
this.termContainer.querySelectorAll('[data-index]').forEach(el => el.classList.add('selected'));
|
||||
}
|
||||
|
||||
deselectTerms() {
|
||||
this.termContainer.querySelectorAll('.selected').forEach(el => el.classList.remove('selected'));
|
||||
}
|
||||
|
||||
clearSelectedTerms() {
|
||||
if (this.hasTerms()) {
|
||||
let labels = this.termContainer.querySelectorAll('.selected');
|
||||
if (labels.length) {
|
||||
return this.removeRange(Array.from(labels));
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
togglePlaceholder() {
|
||||
let placeholder = '';
|
||||
|
||||
if (! this.hasTerms()) {
|
||||
if (this.input.dataset.placeholder) {
|
||||
placeholder = this.input.dataset.placeholder;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else if (this.input.placeholder) {
|
||||
if (! this.input.dataset.placeholder) {
|
||||
this.input.dataset.placeholder = this.input.placeholder;
|
||||
}
|
||||
}
|
||||
|
||||
this.input.placeholder = placeholder;
|
||||
}
|
||||
|
||||
renderTerm(termData, termIndex) {
|
||||
let label = $.render('<label><input type="text"></label>');
|
||||
|
||||
if (termData.class) {
|
||||
label.classList.add(termData.class);
|
||||
}
|
||||
|
||||
label.dataset.label = termData.label;
|
||||
label.dataset.search = termData.search;
|
||||
label.dataset.index = termIndex;
|
||||
|
||||
label.firstChild.value = termData.label;
|
||||
|
||||
return label;
|
||||
}
|
||||
|
||||
encodeTerm(termData) {
|
||||
termData = { ...termData };
|
||||
termData.search = encodeURIComponent(termData.search);
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
decodeTerm(termData) {
|
||||
termData.search = decodeURIComponent(termData.search);
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
shouldNotAutoSubmit() {
|
||||
return 'noAutoSubmit' in this.input.dataset;
|
||||
}
|
||||
|
||||
autoSubmit(input, changeType, changedTerms) {
|
||||
if (this.shouldNotAutoSubmit()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.dataInput.value = JSON.stringify({
|
||||
type: changeType,
|
||||
terms: changedTerms
|
||||
});
|
||||
|
||||
if (Object.keys(changedTerms).length) {
|
||||
$(this.input.form).trigger('submit', { submittedBy: input });
|
||||
}
|
||||
}
|
||||
|
||||
submitTerms(terms) {
|
||||
$(this.input.form).trigger(
|
||||
'submit',
|
||||
{ terms: terms }
|
||||
);
|
||||
}
|
||||
|
||||
moveFocusForward(from = null) {
|
||||
let toFocus;
|
||||
|
||||
let inputs = Array.from(this.termContainer.querySelectorAll('input'));
|
||||
if (from === null) {
|
||||
let focused = this.termContainer.querySelector('input:focus');
|
||||
from = inputs.indexOf(focused);
|
||||
}
|
||||
|
||||
if (from === -1) {
|
||||
toFocus = inputs.shift();
|
||||
} else if (from + 1 < inputs.length) {
|
||||
toFocus = inputs[from + 1];
|
||||
} else {
|
||||
toFocus = this.input;
|
||||
}
|
||||
|
||||
toFocus.selectionStart = toFocus.selectionEnd = 0;
|
||||
$(toFocus).focus();
|
||||
|
||||
return toFocus;
|
||||
}
|
||||
|
||||
moveFocusBackward(from = null) {
|
||||
let toFocus;
|
||||
|
||||
let inputs = Array.from(this.termContainer.querySelectorAll('input'));
|
||||
if (from === null) {
|
||||
let focused = this.termContainer.querySelector('input:focus');
|
||||
from = inputs.indexOf(focused);
|
||||
}
|
||||
|
||||
if (from === -1) {
|
||||
toFocus = inputs.pop();
|
||||
} else if (from > 0 && from - 1 < inputs.length) {
|
||||
toFocus = inputs[from - 1];
|
||||
} else {
|
||||
toFocus = this.input;
|
||||
}
|
||||
|
||||
toFocus.selectionStart = toFocus.selectionEnd = toFocus.value.length;
|
||||
$(toFocus).focus();
|
||||
|
||||
return toFocus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listeners
|
||||
*/
|
||||
|
||||
onSubmit(event) {
|
||||
// Unset the input's name, to prevent its submission (It may actually have a name, as no-js fallback)
|
||||
this.input.name = '';
|
||||
|
||||
// Set the hidden input's value, it's what's sent
|
||||
if (event.detail && 'terms' in event.detail) {
|
||||
this.termInput.value = event.detail.terms;
|
||||
} else {
|
||||
let renderedTerms = this.termsToQueryString(this.usedTerms);
|
||||
if (this.hasSyntaxError()) {
|
||||
renderedTerms += this.input.value;
|
||||
}
|
||||
|
||||
this.termInput.value = renderedTerms;
|
||||
}
|
||||
|
||||
// Enable the hidden input, otherwise it's not submitted
|
||||
this.termInput.disabled = false;
|
||||
}
|
||||
|
||||
onSuggestion(event) {
|
||||
let data = event.detail;
|
||||
let input = event.target;
|
||||
|
||||
let termData;
|
||||
if (typeof data === 'object') {
|
||||
termData = data;
|
||||
} else {
|
||||
termData = { label: data, search: data };
|
||||
}
|
||||
|
||||
this.lastCompletedTerm = termData;
|
||||
this.writePartialTerm(termData.label, input);
|
||||
}
|
||||
|
||||
onCompletion(event) {
|
||||
let input = event.target;
|
||||
let termData = event.detail;
|
||||
let termIndex = Number(input.parentNode.dataset.index);
|
||||
|
||||
this.lastCompletedTerm = termData;
|
||||
this.writePartialTerm(termData.label, input);
|
||||
|
||||
if (termIndex >= 0) {
|
||||
this.autoSubmit(input, 'save', { [termIndex]: this.saveTerm(input) });
|
||||
} else {
|
||||
this.autoSubmit(input, 'exchange', this.exchangeTerm());
|
||||
this.togglePlaceholder();
|
||||
}
|
||||
}
|
||||
|
||||
onInput(event) {
|
||||
let input = event.target;
|
||||
let isTerm = input.parentNode.dataset.index >= 0;
|
||||
|
||||
let termData = { label: this.readPartialTerm(input) };
|
||||
this.updateTermData(termData, input);
|
||||
|
||||
if (! input.value && this.hasSyntaxError(input)) {
|
||||
this.clearSyntaxError(input);
|
||||
}
|
||||
|
||||
if (! this.hasSyntaxError(input)) {
|
||||
this.complete(input, { term: termData });
|
||||
}
|
||||
|
||||
if (! isTerm) {
|
||||
this.autoSubmit(this.input, 'remove', this.clearSelectedTerms());
|
||||
this.togglePlaceholder();
|
||||
}
|
||||
}
|
||||
|
||||
onKeyDown(event) {
|
||||
let input = event.target;
|
||||
let termIndex = Number(input.parentNode.dataset.index);
|
||||
|
||||
if (this.hasSyntaxError(input) && ! (/[A-Z]/.test(event.key.charAt(0)) || event.ctrlKey || event.metaKey)) {
|
||||
// Clear syntax error flag if the user types entirely new input after having selected the entire input
|
||||
// (This way the input isn't empty but switches from input to input immediately, causing the clearing
|
||||
// in onInput to not work)
|
||||
if (input.selectionEnd - input.selectionStart === input.value.length) {
|
||||
this.clearSyntaxError(input);
|
||||
}
|
||||
}
|
||||
|
||||
let removedTerms;
|
||||
switch (event.key) {
|
||||
case ' ':
|
||||
if (! this.readPartialTerm(input)) {
|
||||
this.complete(input, { term: { label: '' } });
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
case 'Backspace':
|
||||
removedTerms = this.clearSelectedTerms();
|
||||
|
||||
if (termIndex >= 0 && ! input.value) {
|
||||
let removedTerm = this.removeTerm(input.parentNode);
|
||||
if (removedTerm !== false) {
|
||||
input = this.moveFocusBackward(termIndex);
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
this.clearPartialTerm(input);
|
||||
} else {
|
||||
this.writePartialTerm(input.value.slice(0, -1), input);
|
||||
}
|
||||
|
||||
removedTerms[termIndex] = removedTerm;
|
||||
event.preventDefault();
|
||||
}
|
||||
} else if (isNaN(termIndex)) {
|
||||
if (! input.value && this.hasTerms()) {
|
||||
let termData = this.popTerm();
|
||||
if (! event.ctrlKey && ! event.metaKey) {
|
||||
// Removing the last char programmatically is not
|
||||
// necessary since the browser default is not prevented
|
||||
this.writePartialTerm(termData.label, input);
|
||||
}
|
||||
|
||||
removedTerms[this.usedTerms.length] = termData;
|
||||
}
|
||||
}
|
||||
|
||||
this.togglePlaceholder();
|
||||
this.autoSubmit(input, 'remove', removedTerms);
|
||||
break;
|
||||
case 'Delete':
|
||||
removedTerms = this.clearSelectedTerms();
|
||||
|
||||
if (termIndex >= 0 && ! input.value) {
|
||||
let removedTerm = this.removeTerm(input.parentNode);
|
||||
if (removedTerm !== false) {
|
||||
input = this.moveFocusForward(termIndex - 1);
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
this.clearPartialTerm(input);
|
||||
} else {
|
||||
this.writePartialTerm(input.value.slice(1), input);
|
||||
}
|
||||
|
||||
removedTerms[termIndex] = removedTerm;
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
this.togglePlaceholder();
|
||||
this.autoSubmit(input, 'remove', removedTerms);
|
||||
break;
|
||||
case 'Enter':
|
||||
if (termIndex >= 0) {
|
||||
this.saveTerm(input, false);
|
||||
}
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
if (input.selectionStart === 0 && this.hasTerms()) {
|
||||
event.preventDefault();
|
||||
this.moveFocusBackward();
|
||||
}
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
if (input.selectionStart === input.value.length && this.hasTerms()) {
|
||||
event.preventDefault();
|
||||
this.moveFocusForward();
|
||||
}
|
||||
break;
|
||||
case 'a':
|
||||
if ((event.ctrlKey || event.metaKey) && ! this.readPartialTerm(input)) {
|
||||
this.selectTerms();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onKeyUp(event) {
|
||||
if (event.target.parentNode.dataset.index >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.key) {
|
||||
case 'End':
|
||||
case 'ArrowLeft':
|
||||
case 'ArrowRight':
|
||||
this.deselectTerms();
|
||||
break;
|
||||
case 'Home':
|
||||
if (this.input.selectionStart === 0 && this.input.selectionEnd === 0) {
|
||||
if (event.shiftKey) {
|
||||
this.selectTerms();
|
||||
} else {
|
||||
this.deselectTerms();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 'Delete':
|
||||
this.autoSubmit(event.target, 'remove', this.clearSelectedTerms());
|
||||
this.togglePlaceholder();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
onInputBlur() {
|
||||
this.deselectTerms();
|
||||
}
|
||||
|
||||
onTermFocusOut(event) {
|
||||
let input = event.target;
|
||||
if (this.hasSyntaxError(input)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// skipSaveOnBlur is set if the input is about to be removed anyway.
|
||||
// If saveTerm would remove the input as well, the other removal will fail
|
||||
// without any chance to handle it. (Element.remove() blurs the input)
|
||||
if (typeof input.skipSaveOnBlur === 'undefined' || ! input.skipSaveOnBlur) {
|
||||
setTimeout(() => {
|
||||
if (this.completer === null || ! this.completer.isBeingCompleted(input)) {
|
||||
let savedTerm = this.saveTerm(input);
|
||||
if (savedTerm !== false) {
|
||||
let termIndex = Number(input.parentNode.dataset.index);
|
||||
this.autoSubmit(input, 'save', { [termIndex]: savedTerm });
|
||||
}
|
||||
}
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
|
||||
onTermFocus(event) {
|
||||
if (event.detail.scripted) {
|
||||
// Only request suggestions if the user manually focuses the term
|
||||
return;
|
||||
}
|
||||
|
||||
this.deselectTerms();
|
||||
|
||||
let input = event.target;
|
||||
if (! this.hasSyntaxError(input) && ! this.completer.isBeingCompleted(input, false)) {
|
||||
// Only request suggestions if the input is valid and not already being completed
|
||||
let value = this.readPartialTerm(input);
|
||||
this.complete(input, { trigger: 'script', term: { label: value } });
|
||||
}
|
||||
}
|
||||
|
||||
onButtonClick(event) {
|
||||
if (! this.hasSyntaxError()) {
|
||||
// Register current input value, otherwise it's not included
|
||||
this.exchangeTerm();
|
||||
}
|
||||
|
||||
if (this.hasTerms()) {
|
||||
this.input.required = false;
|
||||
|
||||
// This is not part of `onSubmit()` because otherwise it would override what `autoSubmit()` does
|
||||
this.dataInput.value = JSON.stringify({ type: 'submit', terms: this.usedTerms });
|
||||
} else if (typeof this.input.dataset.manageRequired !== 'undefined') {
|
||||
this.input.required = true;
|
||||
}
|
||||
}
|
||||
|
||||
onPaste(event) {
|
||||
if (this.hasTerms() || this.input.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.submitTerms(event.clipboardData.getData('text/plain'));
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
onCopyAndCut(event) {
|
||||
if (! this.hasTerms()) {
|
||||
return;
|
||||
}
|
||||
|
||||
let data = '';
|
||||
|
||||
let selectedTerms = this.termContainer.querySelectorAll('.selected');
|
||||
if (selectedTerms.length) {
|
||||
data = Array.from(selectedTerms).map(label => label.dataset.search).join(this.separator);
|
||||
}
|
||||
|
||||
if (this.input.selectionStart < this.input.selectionEnd) {
|
||||
data += this.separator + this.input.value.slice(this.input.selectionStart, this.input.selectionEnd);
|
||||
}
|
||||
|
||||
event.clipboardData.setData('text/plain', data);
|
||||
event.preventDefault();
|
||||
|
||||
if (event.type === 'cut') {
|
||||
this.clearPartialTerm(this.input);
|
||||
this.autoSubmit(this.input, 'remove', this.clearSelectedTerms());
|
||||
this.togglePlaceholder();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return BaseInput;
|
||||
});
|
517
asset/js/widget/Completer.js
Normal file
517
asset/js/widget/Completer.js
Normal file
@ -0,0 +1,517 @@
|
||||
define(["../notjQuery"], function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
class Completer {
|
||||
constructor(input, instrumented = false) {
|
||||
this.input = input;
|
||||
this.instrumented = instrumented;
|
||||
this.nextSuggestion = null;
|
||||
this.activeSuggestion = null;
|
||||
this.suggestionKiller = null;
|
||||
this.completedInput = null;
|
||||
this.completedValue = null;
|
||||
this.completedData = null;
|
||||
this._termSuggestions = null;
|
||||
}
|
||||
|
||||
get termSuggestions() {
|
||||
if (this._termSuggestions === null) {
|
||||
this._termSuggestions = document.querySelector(this.input.dataset.termSuggestions);
|
||||
}
|
||||
|
||||
return this._termSuggestions;
|
||||
}
|
||||
|
||||
bind(to = null) {
|
||||
// Form submissions
|
||||
$(this.input.form).on('submit', this.onSubmit, this);
|
||||
|
||||
// User interactions
|
||||
$(this.termSuggestions).on('focusout', '[type="button"]', this.onFocusOut, this);
|
||||
$(this.termSuggestions).on('click', '[type="button"]', this.onSuggestionClick, this);
|
||||
$(this.termSuggestions).on('keydown', '[type="button"]', this.onSuggestionKeyDown, this);
|
||||
|
||||
if (this.instrumented) {
|
||||
if (to !== null) {
|
||||
$(to).on('focusout', 'input[type="text"]', this.onFocusOut, this);
|
||||
$(to).on('keydown', 'input[type="text"]', this.onKeyDown, this);
|
||||
$(to).on('complete', 'input[type="text"]', this.onComplete, this);
|
||||
}
|
||||
|
||||
$(this.input).on('complete', this.onComplete, this);
|
||||
} else {
|
||||
$(this.input).on('input', this.onInput, this);
|
||||
}
|
||||
|
||||
$(this.input).on('focusout', this.onFocusOut, this);
|
||||
$(this.input).on('keydown', this.onKeyDown, this);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
refresh(input, bindTo = null) {
|
||||
if (input === this.input) {
|
||||
// If the DOM node is still the same, nothing has changed
|
||||
return;
|
||||
}
|
||||
|
||||
this._termSuggestions = null;
|
||||
this.abort();
|
||||
|
||||
this.input = input;
|
||||
this.bind(bindTo);
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.abort();
|
||||
this.hideSuggestions();
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this._termSuggestions = null;
|
||||
this.input = null;
|
||||
}
|
||||
|
||||
renderSuggestions(html) {
|
||||
let template = document.createElement('template');
|
||||
template.innerHTML = html;
|
||||
|
||||
return template.content;
|
||||
}
|
||||
|
||||
showSuggestions(suggestions, input) {
|
||||
this.termSuggestions.innerHTML = '';
|
||||
this.termSuggestions.appendChild(suggestions);
|
||||
this.termSuggestions.style.display = '';
|
||||
|
||||
let containingBlock = this.termSuggestions.offsetParent || document.body;
|
||||
let containingBlockRect = containingBlock.getBoundingClientRect();
|
||||
let inputRect = input.getBoundingClientRect();
|
||||
let inputPosX = inputRect.left - containingBlockRect.left;
|
||||
let inputPosY = inputRect.bottom - containingBlockRect.top;
|
||||
let suggestionWidth = this.termSuggestions.offsetWidth;
|
||||
|
||||
let maxAvailableHeight = document.body.clientHeight - inputRect.bottom;
|
||||
let localMarginBottom = window.getComputedStyle(this.termSuggestions).marginBottom;
|
||||
|
||||
this.termSuggestions.style.top = `${ inputPosY }px`;
|
||||
this.termSuggestions.style.maxHeight = `calc(${maxAvailableHeight}px - ${localMarginBottom})`;
|
||||
if (inputPosX + suggestionWidth > containingBlockRect.right - containingBlockRect.left) {
|
||||
this.termSuggestions.style.left =
|
||||
`${ containingBlockRect.right - containingBlockRect.left - suggestionWidth }px`;
|
||||
} else {
|
||||
this.termSuggestions.style.left = `${ inputPosX }px`;
|
||||
}
|
||||
}
|
||||
|
||||
hasSuggestions() {
|
||||
return this.termSuggestions.childNodes.length > 0;
|
||||
}
|
||||
|
||||
hideSuggestions() {
|
||||
if (this.nextSuggestion !== null || this.activeSuggestion !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.suggestionKiller !== null) {
|
||||
// onFocusOut initiates this timer in order to hide the suggestions if the user
|
||||
// doesn't navigate them. Since it does this by checking after a short interval
|
||||
// if the focus is inside the suggestions, the interval has to be long enough to
|
||||
// have a chance to detect the focus. `focusout` runs before `blur` and `focus`,
|
||||
// so this may lead to a race condition which is addressed by the timeout. Though,
|
||||
// to not close the newly opened suggestions of the next input the timer has to
|
||||
// be cancelled here since it's purpose is already fulfilled.
|
||||
clearTimeout(this.suggestionKiller);
|
||||
this.suggestionKiller = null;
|
||||
}
|
||||
|
||||
this.termSuggestions.style.display = 'none';
|
||||
this.termSuggestions.innerHTML = '';
|
||||
|
||||
this.completedInput = null;
|
||||
this.completedValue = null;
|
||||
this.completedData = null;
|
||||
}
|
||||
|
||||
prepareCompletionData(input, data = null) {
|
||||
if (data === null) {
|
||||
data = { term: { ...input.dataset } };
|
||||
data.term.label = input.value;
|
||||
}
|
||||
|
||||
let value = data.term.label;
|
||||
data.term.search = value;
|
||||
data.term.label = this.addWildcards(value);
|
||||
|
||||
if (input.parentElement instanceof HTMLFieldSetElement) {
|
||||
for (let element of input.parentElement.elements) {
|
||||
if (element !== input
|
||||
&& element.name !== input.name + '-search'
|
||||
&& (element.name.substr(-7) === '-search'
|
||||
|| typeof input.form[element.name + '-search'] === 'undefined')
|
||||
) {
|
||||
// Make sure we'll use a key that the server can understand..
|
||||
let dataName = element.name;
|
||||
if (dataName.substr(-7) === '-search') {
|
||||
dataName = dataName.substr(0, dataName.length - 7);
|
||||
}
|
||||
if (dataName.substr(0, input.parentElement.name.length) === input.parentElement.name) {
|
||||
dataName = dataName.substr(input.parentElement.name.length);
|
||||
}
|
||||
|
||||
if (! dataName in data || element.value) {
|
||||
data[dataName] = element.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [value, data];
|
||||
}
|
||||
|
||||
addWildcards(value) {
|
||||
if (! value) {
|
||||
return '*';
|
||||
}
|
||||
|
||||
if (value.slice(0, 1) !== '*' && value.slice(-1) !== '*') {
|
||||
return '*' + value + '*';
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
abort() {
|
||||
if (this.activeSuggestion !== null) {
|
||||
this.activeSuggestion.abort();
|
||||
this.activeSuggestion = null;
|
||||
}
|
||||
|
||||
if (this.nextSuggestion !== null) {
|
||||
clearTimeout(this.nextSuggestion);
|
||||
this.nextSuggestion = null;
|
||||
}
|
||||
}
|
||||
|
||||
requestCompletion(input, data, trigger = 'user') {
|
||||
this.abort();
|
||||
|
||||
this.nextSuggestion = setTimeout(() => {
|
||||
let req = new XMLHttpRequest();
|
||||
req.open('POST', this.input.dataset.suggestUrl, true);
|
||||
req.setRequestHeader('Content-Type', 'application/json');
|
||||
|
||||
if (typeof icinga !== 'undefined') {
|
||||
let windowId = icinga.ui.getWindowId();
|
||||
let containerId = icinga.ui.getUniqueContainerId(this.termSuggestions);
|
||||
if (containerId) {
|
||||
req.setRequestHeader('X-Icinga-WindowId', windowId + '_' + containerId);
|
||||
} else {
|
||||
req.setRequestHeader('X-Icinga-WindowId', windowId);
|
||||
}
|
||||
}
|
||||
|
||||
req.addEventListener('loadend', () => {
|
||||
if (req.readyState > 0) {
|
||||
if (req.responseText) {
|
||||
let suggestions = this.renderSuggestions(req.responseText);
|
||||
if (trigger === 'script') {
|
||||
// If the suggestions are to be displayed due to a scripted event,
|
||||
// show them only if the completed input is still focused..
|
||||
if (document.activeElement === input) {
|
||||
this.showSuggestions(suggestions, input);
|
||||
}
|
||||
} else {
|
||||
this.showSuggestions(suggestions, input);
|
||||
}
|
||||
} else {
|
||||
this.hideSuggestions();
|
||||
}
|
||||
}
|
||||
|
||||
this.activeSuggestion = null;
|
||||
this.nextSuggestion = null;
|
||||
});
|
||||
|
||||
req.send(JSON.stringify(data));
|
||||
|
||||
this.activeSuggestion = req;
|
||||
}, 200);
|
||||
}
|
||||
|
||||
suggest(input, value, data = null) {
|
||||
if (this.instrumented) {
|
||||
if (data === null) {
|
||||
data = value;
|
||||
}
|
||||
|
||||
$(input).trigger('suggestion', data);
|
||||
} else {
|
||||
input.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
complete(input, value, data) {
|
||||
$(input).focus({ scripted: true });
|
||||
|
||||
if (this.instrumented) {
|
||||
$(input).trigger('completion', data);
|
||||
} else {
|
||||
input.value = value;
|
||||
|
||||
for (let name in data) {
|
||||
let dataElement = input.form[input.name + '-' + name];
|
||||
if (typeof dataElement !== 'undefined') {
|
||||
if (dataElement instanceof RadioNodeList) {
|
||||
dataElement = dataElement[dataElement.length - 1];
|
||||
}
|
||||
|
||||
dataElement.value = data[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.hideSuggestions();
|
||||
}
|
||||
|
||||
moveToSuggestion(backwards = false) {
|
||||
let focused = this.termSuggestions.querySelector('[type="button"]:focus');
|
||||
let inputs = Array.from(this.termSuggestions.querySelectorAll('[type="button"]'));
|
||||
|
||||
let input;
|
||||
if (focused !== null) {
|
||||
let sibling = inputs[backwards ? inputs.indexOf(focused) - 1 : inputs.indexOf(focused) + 1];
|
||||
if (sibling) {
|
||||
input = sibling;
|
||||
} else {
|
||||
input = this.completedInput;
|
||||
}
|
||||
} else {
|
||||
input = inputs[backwards ? inputs.length - 1 : 0];
|
||||
}
|
||||
|
||||
$(input).focus();
|
||||
|
||||
if (this.completedValue !== null) {
|
||||
if (input === this.completedInput) {
|
||||
this.suggest(this.completedInput, this.completedValue);
|
||||
} else {
|
||||
this.suggest(this.completedInput, input.value, { ...input.dataset });
|
||||
}
|
||||
}
|
||||
|
||||
return input;
|
||||
}
|
||||
|
||||
isBeingCompleted(input, activeElement = null) {
|
||||
if (activeElement === null) {
|
||||
activeElement = document.activeElement;
|
||||
}
|
||||
|
||||
return input === this.completedInput && (
|
||||
(! activeElement && this.hasSuggestions())
|
||||
|| (activeElement && this.termSuggestions.contains(activeElement))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listeners
|
||||
*/
|
||||
|
||||
onSubmit(event) {
|
||||
// Reset all states, the user is about to navigate away
|
||||
this.reset();
|
||||
}
|
||||
|
||||
onFocusOut(event) {
|
||||
if (this.completedInput === null) {
|
||||
// If there are multiple instances of Completer bound to the same suggestion container
|
||||
// all of them try to handle the event. Though, only one of them is responsible and
|
||||
// that's the one which has a completed input set.
|
||||
return;
|
||||
}
|
||||
|
||||
let input = event.target;
|
||||
let completedInput = this.completedInput;
|
||||
this.suggestionKiller = setTimeout(() => {
|
||||
if (completedInput !== this.completedInput) {
|
||||
// Don't hide another input's suggestions
|
||||
} else if (document.activeElement !== completedInput
|
||||
&& ! this.termSuggestions.contains(document.activeElement)
|
||||
) {
|
||||
// Hide the suggestions if the user doesn't navigate them
|
||||
if (input !== completedInput) {
|
||||
// Restore input if a suggestion lost focus
|
||||
this.suggest(completedInput, this.completedValue);
|
||||
}
|
||||
|
||||
this.hideSuggestions();
|
||||
}
|
||||
}, 250);
|
||||
}
|
||||
|
||||
onSuggestionKeyDown(event) {
|
||||
if (this.completedInput === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.key) {
|
||||
case 'Escape':
|
||||
$(this.completedInput).focus({ scripted: true });
|
||||
this.suggest(this.completedInput, this.completedValue);
|
||||
break;
|
||||
case 'Tab':
|
||||
event.preventDefault();
|
||||
this.moveToSuggestion(event.shiftKey);
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
case 'ArrowUp':
|
||||
event.preventDefault();
|
||||
this.moveToSuggestion(true);
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
case 'ArrowDown':
|
||||
event.preventDefault();
|
||||
this.moveToSuggestion();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
onSuggestionClick(event) {
|
||||
if (this.completedInput === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
let input = event.currentTarget;
|
||||
|
||||
this.complete(this.completedInput, input.value, { ...input.dataset });
|
||||
}
|
||||
|
||||
onKeyDown(event) {
|
||||
let suggestions;
|
||||
|
||||
switch (event.key) {
|
||||
case ' ':
|
||||
if (this.instrumented) {
|
||||
break;
|
||||
}
|
||||
|
||||
let input = event.target;
|
||||
|
||||
if (! input.value) {
|
||||
if (input.minLength <= 0) {
|
||||
let [value, data] = this.prepareCompletionData(input);
|
||||
this.completedInput = input;
|
||||
this.completedValue = value;
|
||||
this.completedData = data;
|
||||
this.requestCompletion(input, data);
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'Tab':
|
||||
suggestions = this.termSuggestions.querySelectorAll('[type="button"]');
|
||||
if (suggestions.length === 1) {
|
||||
event.preventDefault();
|
||||
let input = event.target;
|
||||
let suggestion = suggestions[0];
|
||||
|
||||
this.complete(input, suggestion.value, { ...suggestion.dataset });
|
||||
}
|
||||
|
||||
break;
|
||||
case 'Enter':
|
||||
let defaultSuggestion = this.termSuggestions.querySelector('.default > [type="button"]');
|
||||
if (defaultSuggestion !== null) {
|
||||
event.preventDefault();
|
||||
let input = event.target;
|
||||
|
||||
this.complete(input, defaultSuggestion.value, { ...defaultSuggestion.dataset });
|
||||
}
|
||||
|
||||
break;
|
||||
case 'Escape':
|
||||
if (this.hasSuggestions()) {
|
||||
this.hideSuggestions()
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'ArrowUp':
|
||||
suggestions = this.termSuggestions.querySelectorAll('[type="button"]');
|
||||
if (suggestions.length) {
|
||||
event.preventDefault();
|
||||
this.moveToSuggestion(true);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
suggestions = this.termSuggestions.querySelectorAll('[type="button"]');
|
||||
if (suggestions.length) {
|
||||
event.preventDefault();
|
||||
this.moveToSuggestion();
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
if (/[A-Z]/.test(event.key.charAt(0)) || event.key === '"') {
|
||||
// Ignore control keys not resulting in new input data
|
||||
break;
|
||||
}
|
||||
|
||||
let typedSuggestion = this.termSuggestions.querySelector(`[value="${ event.key }"]`);
|
||||
if (typedSuggestion !== null) {
|
||||
this.hideSuggestions();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onInput(event) {
|
||||
let input = event.target;
|
||||
|
||||
if (input.minLength > 0 && input.value.length < input.minLength) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the input's value as search value. This ensures that if the user doesn't
|
||||
// choose a suggestion, an up2date contextual value will be transmitted with
|
||||
// completion requests and the server can properly identify a new value upon submit
|
||||
input.dataset.search = input.value;
|
||||
if (typeof input.form[input.name + '-search'] !== 'undefined') {
|
||||
let dataElement = input.form[input.name + '-search'];
|
||||
if (dataElement instanceof RadioNodeList) {
|
||||
dataElement = dataElement[dataElement.length - 1];
|
||||
}
|
||||
|
||||
dataElement.value = input.value;
|
||||
}
|
||||
|
||||
let [value, data] = this.prepareCompletionData(input);
|
||||
this.completedInput = input;
|
||||
this.completedValue = value;
|
||||
this.completedData = data;
|
||||
this.requestCompletion(input, data);
|
||||
}
|
||||
|
||||
onComplete(event) {
|
||||
let input = event.target;
|
||||
let { trigger = 'user' , ...detail } = event.detail;
|
||||
|
||||
let [value, data] = this.prepareCompletionData(input, detail);
|
||||
this.completedInput = input;
|
||||
this.completedValue = value;
|
||||
this.completedData = data;
|
||||
|
||||
if (typeof data.suggestions !== 'undefined') {
|
||||
this.showSuggestions(data.suggestions, input);
|
||||
} else {
|
||||
this.requestCompletion(input, data, trigger);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Completer;
|
||||
});
|
1557
asset/js/widget/FilterInput.js
Normal file
1557
asset/js/widget/FilterInput.js
Normal file
File diff suppressed because it is too large
Load Diff
81
asset/js/widget/SearchBar.js
Normal file
81
asset/js/widget/SearchBar.js
Normal file
@ -0,0 +1,81 @@
|
||||
define(["../notjQuery"], function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
class SearchBar {
|
||||
constructor(form) {
|
||||
this.form = form;
|
||||
this.filterInput = null;
|
||||
}
|
||||
|
||||
bind() {
|
||||
$(this.form.parentNode).on('click', '[data-search-editor-url]', this.onOpenerClick, this);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
refresh(form) {
|
||||
if (form === this.form) {
|
||||
// If the DOM node is still the same, nothing has changed
|
||||
return;
|
||||
}
|
||||
|
||||
this.form = form;
|
||||
this.bind();
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this.form = null;
|
||||
this.filterInput = null;
|
||||
}
|
||||
|
||||
setFilterInput(filterInput) {
|
||||
this.filterInput = filterInput;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
onOpenerClick(event) {
|
||||
let opener = event.currentTarget;
|
||||
let editorUrl = opener.dataset.searchEditorUrl;
|
||||
let filterQueryString = this.filterInput.getQueryString();
|
||||
let layout = document.getElementById('layout');
|
||||
|
||||
editorUrl += (editorUrl.indexOf('?') > -1 ? '&' : '?') + filterQueryString;
|
||||
|
||||
// Disable pointer events to block further function calls
|
||||
opener.style.pointerEvents = 'none';
|
||||
|
||||
let observer = new MutationObserver((mutations) => {
|
||||
for (let mutation of mutations) {
|
||||
if (mutation.type === 'childList') {
|
||||
mutation.removedNodes.forEach((node) => {
|
||||
// Remove the pointerEvent none style to make the button clickable again
|
||||
// after the modal has been removed
|
||||
if (node.id === 'modal') {
|
||||
opener.style.pointerEvents = '';
|
||||
observer.disconnect();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
observer.observe(layout, {childList: true});
|
||||
|
||||
// The search editor should open in a modal. We simulate a click on an anchor
|
||||
// appropriately prepared so that Icinga Web 2 will handle it natively.
|
||||
let a = document.createElement('a');
|
||||
a.classList.add('modal-opener');
|
||||
a.href = editorUrl;
|
||||
a.dataset.noIcingaAjax = '';
|
||||
a.dataset.icingaModal = '';
|
||||
|
||||
opener.parentNode.insertBefore(a, opener.nextSibling);
|
||||
a.click();
|
||||
a.remove();
|
||||
}
|
||||
}
|
||||
|
||||
return SearchBar;
|
||||
});
|
79
asset/js/widget/SearchEditor.js
Normal file
79
asset/js/widget/SearchEditor.js
Normal file
@ -0,0 +1,79 @@
|
||||
define(["../notjQuery", "../vendor/Sortable"], function ($, Sortable) {
|
||||
|
||||
"use strict";
|
||||
|
||||
class SearchEditor {
|
||||
constructor(form) {
|
||||
this.form = form;
|
||||
}
|
||||
|
||||
bind() {
|
||||
$(this.form).on('end', this.onRuleDropped, this);
|
||||
|
||||
this.form.querySelectorAll('ol').forEach(sortable => {
|
||||
let options = {
|
||||
scroll: true,
|
||||
group: 'rules',
|
||||
direction: 'vertical',
|
||||
invertSwap: true,
|
||||
handle: '.drag-initiator'
|
||||
};
|
||||
|
||||
Sortable.create(sortable, options);
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
refresh(form) {
|
||||
if (form === this.form) {
|
||||
// If the DOM node is still the same, nothing has changed
|
||||
return;
|
||||
}
|
||||
|
||||
this.form = form;
|
||||
this.bind();
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this.form = null;
|
||||
this.filterInput = null;
|
||||
}
|
||||
|
||||
onRuleDropped(event) {
|
||||
if (event.to === event.from && event.newIndex === event.oldIndex) {
|
||||
// The user dropped the rule at its previous position
|
||||
return;
|
||||
}
|
||||
|
||||
let placement = 'before';
|
||||
let neighbour = event.to.querySelector(':scope > :nth-child(' + (event.newIndex + 2) + ')');
|
||||
if (! neighbour) {
|
||||
// User dropped the rule at the end of a group
|
||||
placement = 'after';
|
||||
neighbour = event.to.querySelector(':scope > :nth-child(' + event.newIndex + ')')
|
||||
if (! neighbour) {
|
||||
// User dropped the rule into an empty group
|
||||
placement = 'to';
|
||||
neighbour = event.to.closest('[id]');
|
||||
}
|
||||
}
|
||||
|
||||
// It's a submit element, the very first one, otherwise Icinga Web 2 sends another "structural-change"
|
||||
this.form.insertBefore(
|
||||
$.render(
|
||||
'<input type="hidden" name="structural-change[1]" value="' + placement + ':' + neighbour.id + '">'
|
||||
),
|
||||
this.form.firstChild
|
||||
);
|
||||
this.form.insertBefore(
|
||||
$.render('<input type="submit" name="structural-change[0]" value="move-rule:' + event.item.id + '">'),
|
||||
this.form.firstChild
|
||||
);
|
||||
|
||||
$(this.form).trigger('submit');
|
||||
}
|
||||
}
|
||||
|
||||
return SearchEditor;
|
||||
});
|
128
asset/js/widget/TermInput.js
Normal file
128
asset/js/widget/TermInput.js
Normal file
@ -0,0 +1,128 @@
|
||||
define(["BaseInput"], function (BaseInput) {
|
||||
|
||||
"use strict";
|
||||
|
||||
class TermInput extends BaseInput {
|
||||
constructor(input) {
|
||||
super(input);
|
||||
|
||||
this.separator = ' ';
|
||||
this.ignoreSpaceUntil = null;
|
||||
this.ignoreSpaceSince = null;
|
||||
}
|
||||
|
||||
reset() {
|
||||
super.reset();
|
||||
|
||||
this.ignoreSpaceUntil = null;
|
||||
this.ignoreSpaceSince = null;
|
||||
}
|
||||
|
||||
writePartialTerm(value, input) {
|
||||
if (this.ignoreSpaceUntil !== null && this.ignoreSpaceSince === 0) {
|
||||
value = this.ignoreSpaceUntil + value;
|
||||
}
|
||||
|
||||
super.writePartialTerm(value, input);
|
||||
}
|
||||
|
||||
readFullTerm(input, termIndex = null) {
|
||||
let termData = super.readFullTerm(input, termIndex);
|
||||
if (this.ignoreSpaceUntil !== null && termData.label[this.ignoreSpaceSince] === this.ignoreSpaceUntil) {
|
||||
if (termData.label.length - 1 === this.ignoreSpaceSince
|
||||
|| termData.label.slice(-1) !== this.ignoreSpaceUntil
|
||||
|| (this.ignoreSpaceSince === 0 && (termData.label.length < 2
|
||||
|| termData.label.slice(0, 1) !== this.ignoreSpaceUntil)
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return termData;
|
||||
}
|
||||
|
||||
addTerm(termData, termIndex = null) {
|
||||
if (this.ignoreSpaceUntil !== null) {
|
||||
if (this.ignoreSpaceSince === 0 && termData.label[this.ignoreSpaceSince] === this.ignoreSpaceUntil) {
|
||||
termData.label = termData.label.slice(1, -1);
|
||||
}
|
||||
|
||||
this.ignoreSpaceUntil = null;
|
||||
this.ignoreSpaceSince = null;
|
||||
}
|
||||
|
||||
super.addTerm(termData, termIndex);
|
||||
}
|
||||
|
||||
complete(input, data) {
|
||||
data.exclude = this.usedTerms.map(termData => termData.search);
|
||||
|
||||
super.complete(input, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listeners
|
||||
*/
|
||||
|
||||
onSubmit(event) {
|
||||
super.onSubmit(event);
|
||||
|
||||
this.ignoreSpaceUntil = null;
|
||||
this.ignoreSpaceSince = null;
|
||||
}
|
||||
|
||||
onKeyDown(event) {
|
||||
super.onKeyDown(event);
|
||||
if (event.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
|
||||
let label = event.target.parentNode;
|
||||
if (label.dataset.index >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.key !== this.separator) {
|
||||
return;
|
||||
}
|
||||
|
||||
let addedTerms = this.exchangeTerm();
|
||||
if (addedTerms.length) {
|
||||
this.togglePlaceholder();
|
||||
event.preventDefault();
|
||||
this.autoSubmit(this.input, 'exchange', addedTerms);
|
||||
}
|
||||
}
|
||||
|
||||
onKeyUp(event) {
|
||||
super.onKeyUp(event);
|
||||
|
||||
let label = event.target.parentNode;
|
||||
if (label.dataset.index >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.ignoreSpaceUntil !== null) {
|
||||
// Reset if the user changes/removes the source char
|
||||
let value = event.target.value;
|
||||
if (value[this.ignoreSpaceSince] !== this.ignoreSpaceUntil) {
|
||||
this.ignoreSpaceUntil = null;
|
||||
this.ignoreSpaceSince = null;
|
||||
}
|
||||
}
|
||||
|
||||
let input = event.target;
|
||||
switch (event.key) {
|
||||
case '"':
|
||||
case "'":
|
||||
if (this.ignoreSpaceUntil === null) {
|
||||
this.ignoreSpaceUntil = event.key;
|
||||
this.ignoreSpaceSince = input.selectionStart - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TermInput;
|
||||
});
|
BIN
asset/static/font/Icinga-Icons.eot
Normal file
BIN
asset/static/font/Icinga-Icons.eot
Normal file
Binary file not shown.
13
asset/static/font/Icinga-Icons.svg
Normal file
13
asset/static/font/Icinga-Icons.svg
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="Icinga-Icons" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="minimal" d="M192.009 831.995c0-35.361-28.665-64.026-64.026-64.026s-64.026 28.665-64.026 64.026c0 35.361 28.665 64.026 64.026 64.026s64.026-28.665 64.026-64.026zM192.009 639.671c0-35.361-28.665-64.026-64.026-64.026s-64.026 28.665-64.026 64.026c0 35.361 28.665 64.026 64.026 64.026s64.026-28.665 64.026-64.026zM192.009 447.671c0-35.361-28.665-64.026-64.026-64.026s-64.026 28.665-64.026 64.026c0 35.361 28.665 64.026 64.026 64.026s64.026-28.665 64.026-64.026zM256.005 863.997h704.001v-64.005h-704.001v64.005zM256.005 479.674h704.001v-64.005h-704.001v64.005zM256.005 671.674h704.001v-64.005h-704.001v64.005zM256.005 287.674h704.001v-64.005h-704.001v64.005zM256.005 95.674h704.001v-64.005h-704.001v64.005zM192.009 255.348c0-35.361-28.665-64.026-64.026-64.026s-64.026 28.665-64.026 64.026c0 35.361 28.665 64.026 64.026 64.026s64.026-28.665 64.026-64.026zM192.009 63.671c0-35.361-28.665-64.026-64.026-64.026s-64.026 28.665-64.026 64.026c0 35.361 28.665 64.026 64.026 64.026s64.026-28.665 64.026-64.026z" />
|
||||
<glyph unicode="" glyph-name="detailed" d="M320.007 831.679h639.993v-191.358h-639.993v191.358zM320.007 575.997h639.993v-63.992h-639.993v63.992zM256.014 736.317c0-53.041-42.998-96.039-96.039-96.039s-96.039 42.998-96.039 96.039c0 53.041 42.998 96.039 96.039 96.039s96.039-42.998 96.039-96.039zM256.014 287.992c0-53.041-42.998-96.039-96.039-96.039s-96.039 42.998-96.039 96.039c0 53.041 42.998 96.039 96.039 96.039s96.039-42.998 96.039-96.039zM320.007 384.004h639.993v-192.005h-639.993v192.005zM320.007 128.005h639.993v-63.992h-639.993v63.992z" />
|
||||
<glyph unicode="" glyph-name="default" d="M256.015 767.992c0-53.041-42.998-96.039-96.039-96.039s-96.039 42.998-96.039 96.039c0 53.041 42.998 96.039 96.039 96.039s96.039-42.998 96.039-96.039zM384.001 864h576.002v-192.008h-576.002v192.008zM384.001 543.998h576.002v-192.008h-576.002v192.008zM384.001 223.998h576.002v-192.008h-576.002v192.008zM256.015 447.99c0-53.041-42.998-96.039-96.039-96.039s-96.039 42.998-96.039 96.039c0 53.041 42.998 96.039 96.039 96.039s96.039-42.998 96.039-96.039zM256.015 127.99c0-53.041-42.998-96.039-96.039-96.039s-96.039 42.998-96.039 96.039c0 53.041 42.998 96.039 96.039 96.039s96.039-42.998 96.039-96.039z" />
|
||||
</font></defs></svg>
|
After Width: | Height: | Size: 2.6 KiB |
BIN
asset/static/font/Icinga-Icons.ttf
Normal file
BIN
asset/static/font/Icinga-Icons.ttf
Normal file
Binary file not shown.
BIN
asset/static/font/Icinga-Icons.woff
Normal file
BIN
asset/static/font/Icinga-Icons.woff
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-brands-400.eot
Normal file
BIN
asset/static/font/awesome/fa-brands-400.eot
Normal file
Binary file not shown.
3717
asset/static/font/awesome/fa-brands-400.svg
Normal file
3717
asset/static/font/awesome/fa-brands-400.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 730 KiB |
BIN
asset/static/font/awesome/fa-brands-400.ttf
Normal file
BIN
asset/static/font/awesome/fa-brands-400.ttf
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-brands-400.woff
Normal file
BIN
asset/static/font/awesome/fa-brands-400.woff
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-brands-400.woff2
Normal file
BIN
asset/static/font/awesome/fa-brands-400.woff2
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-regular-400.eot
Normal file
BIN
asset/static/font/awesome/fa-regular-400.eot
Normal file
Binary file not shown.
801
asset/static/font/awesome/fa-regular-400.svg
Normal file
801
asset/static/font/awesome/fa-regular-400.svg
Normal file
@ -0,0 +1,801 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<metadata>
|
||||
Created by FontForge 20201107 at Wed Aug 4 12:22:50 2021
|
||||
By Robert Madole
|
||||
Copyright (c) Font Awesome
|
||||
</metadata>
|
||||
<!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
|
||||
<font id="FontAwesome5Free-Regular" horiz-adv-x="512" >
|
||||
<font-face
|
||||
font-family="Font Awesome 5 Free Regular"
|
||||
font-weight="400"
|
||||
font-stretch="normal"
|
||||
units-per-em="512"
|
||||
panose-1="2 0 5 3 0 0 0 0 0 0"
|
||||
ascent="448"
|
||||
descent="-64"
|
||||
bbox="-0.0663408 -64.0662 640.004 448.1"
|
||||
underline-thickness="25"
|
||||
underline-position="-50"
|
||||
unicode-range="U+0020-F5C8"
|
||||
/>
|
||||
<missing-glyph />
|
||||
<glyph glyph-name="heart" unicode=""
|
||||
d="M458.4 383.7c75.2998 -63.4004 64.0996 -166.601 10.5996 -221.3l-175.4 -178.7c-10 -10.2002 -23.2998 -15.7998 -37.5996 -15.7998c-14.2002 0 -27.5996 5.69922 -37.5996 15.8994l-175.4 178.7c-53.5996 54.7002 -64.5996 157.9 10.5996 221.2
|
||||
c57.8008 48.7002 147.101 41.2998 202.4 -15c55.2998 56.2998 144.6 63.5996 202.4 15zM434.8 196.2c36.2002 36.8994 43.7998 107.7 -7.2998 150.8c-38.7002 32.5996 -98.7002 27.9004 -136.5 -10.5996l-35 -35.7002l-35 35.7002
|
||||
c-37.5996 38.2998 -97.5996 43.1992 -136.5 10.5c-51.2002 -43.1006 -43.7998 -113.5 -7.2998 -150.7l175.399 -178.7c2.40039 -2.40039 4.40039 -2.40039 6.80078 0z" />
|
||||
<glyph glyph-name="star" unicode="" horiz-adv-x="576"
|
||||
d="M528.1 276.5c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103
|
||||
c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998l65.2998 132.4c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4zM388.6 135.7l100.601 98l-139 20.2002l-62.2002 126l-62.2002 -126l-139 -20.2002l100.601 -98l-23.7002 -138.4l124.3 65.2998
|
||||
l124.3 -65.2998z" />
|
||||
<glyph glyph-name="user" unicode="" horiz-adv-x="448"
|
||||
d="M313.6 144c74.2002 0 134.4 -60.2002 134.4 -134.4v-25.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v25.5996c0 74.2002 60.2002 134.4 134.4 134.4c28.7998 0 42.5 -16 89.5996 -16s60.9004 16 89.5996 16zM400 -16v25.5996
|
||||
c0 47.6006 -38.7998 86.4004 -86.4004 86.4004c-14.6992 0 -37.8994 -16 -89.5996 -16c-51.2998 0 -75 16 -89.5996 16c-47.6006 0 -86.4004 -38.7998 -86.4004 -86.4004v-25.5996h352zM224 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144
|
||||
s-64.5 -144 -144 -144zM224 400c-52.9004 0 -96 -43.0996 -96 -96s43.0996 -96 96 -96s96 43.0996 96 96s-43.0996 96 -96 96z" />
|
||||
<glyph glyph-name="clock" unicode=""
|
||||
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM317.8 96.4004l-84.8994 61.6992
|
||||
c-3.10059 2.30078 -4.90039 5.90039 -4.90039 9.7002v164.2c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12v-141.7l66.7998 -48.5996c5.40039 -3.90039 6.5 -11.4004 2.60059 -16.7998l-18.8008 -25.9004c-3.89941 -5.2998 -11.3994 -6.5 -16.7998 -2.59961z
|
||||
" />
|
||||
<glyph glyph-name="list-alt" unicode=""
|
||||
d="M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM458 16c3.31152 0 6 2.68848 6 6v340c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-340
|
||||
c0 -3.31152 2.68848 -6 6 -6h404zM416 108v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 204v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12
|
||||
v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 300v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM164 288c0 -19.8818 -16.1182 -36 -36 -36
|
||||
s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 192c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 96c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36z" />
|
||||
<glyph glyph-name="flag" unicode=""
|
||||
d="M336.174 368c35.4668 0 73.0195 12.6914 108.922 28.1797c31.6406 13.6514 66.9043 -9.65723 66.9043 -44.1162v-239.919c0 -16.1953 -8.1543 -31.3057 -21.7129 -40.1631c-26.5762 -17.3643 -70.0693 -39.9814 -128.548 -39.9814c-68.6084 0 -112.781 32 -161.913 32
|
||||
c-56.5674 0 -89.957 -11.2803 -127.826 -28.5566v-83.4434c0 -8.83691 -7.16309 -16 -16 -16h-16c-8.83691 0 -16 7.16309 -16 16v406.438c-14.3428 8.2998 -24 23.7979 -24 41.5615c0 27.5693 23.2422 49.71 51.2012 47.8965
|
||||
c22.9658 -1.49023 41.8662 -19.4717 44.4805 -42.3379c0.213867 -1.83398 0.308594 -3.65918 0.308594 -5.5498c0 -5.30273 -0.860352 -10.4053 -2.4502 -15.1768c22.418 8.68555 49.4199 15.168 80.7207 15.168c68.6084 0 112.781 -32 161.913 -32zM464 112v240
|
||||
c-31.5059 -14.6338 -84.5547 -32 -127.826 -32c-59.9111 0 -101.968 32 -161.913 32c-41.4365 0 -80.4766 -16.5879 -102.261 -32v-232c31.4473 14.5967 84.4648 24 127.826 24c59.9111 0 101.968 -32 161.913 -32c41.4365 0 80.4775 16.5879 102.261 32z" />
|
||||
<glyph glyph-name="bookmark" unicode="" horiz-adv-x="384"
|
||||
d="M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 21.4902 48 48 48h288zM336 19.5703v374.434c0 3.31348 -2.68555 5.99609 -6 5.99609h-276c-3.31152 0 -6 -2.68848 -6 -6v-374.43l144 84z" />
|
||||
<glyph glyph-name="image" unicode=""
|
||||
d="M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276
|
||||
c0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515
|
||||
c4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z" />
|
||||
<glyph glyph-name="edit" unicode="" horiz-adv-x="576"
|
||||
d="M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352
|
||||
v113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002
|
||||
c22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994
|
||||
c4 4.2002 4 10.7998 -0.0996094 14.9004z" />
|
||||
<glyph glyph-name="times-circle" unicode=""
|
||||
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM357.8 254.2l-62.2002 -62.2002l62.2002 -62.2002
|
||||
c4.7002 -4.7002 4.7002 -12.2998 0 -17l-22.5996 -22.5996c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-62.2002 62.2002l-62.2002 -62.2002c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-22.5996 22.5996c-4.7002 4.7002 -4.7002 12.2998 0 17l62.2002 62.2002l-62.2002 62.2002
|
||||
c-4.7002 4.7002 -4.7002 12.2998 0 17l22.5996 22.5996c4.7002 4.7002 12.2998 4.7002 17 0l62.2002 -62.2002l62.2002 62.2002c4.7002 4.7002 12.2998 4.7002 17 0l22.5996 -22.5996c4.7002 -4.7002 4.7002 -12.2998 0 -17z" />
|
||||
<glyph glyph-name="check-circle" unicode=""
|
||||
d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200z
|
||||
M396.204 261.733c4.66699 -4.70508 4.63672 -12.3037 -0.0673828 -16.9717l-172.589 -171.204c-4.70508 -4.66797 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66797 4.70605 -4.63672 12.3047 0.0683594 16.9717l22.7188 22.5361
|
||||
c4.70508 4.66699 12.3027 4.63574 16.9697 -0.0693359l59.792 -60.2773l141.353 140.216c4.70508 4.66797 12.3027 4.6377 16.9697 -0.0673828z" />
|
||||
<glyph glyph-name="question-circle" unicode=""
|
||||
d="M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 -8c110.569 0 200 89.4697 200 200c0 110.529 -89.5088 200 -200 200c-110.528 0 -200 -89.5049 -200 -200
|
||||
c0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72.4209 -92.8633v-6.33691c0 -6.62695 -5.37305 -12 -12 -12h-45.6475c-6.62695 0 -12 5.37305 -12 12v8.65918c0 35.7451 27.1006 50.0342 47.5791 61.5156
|
||||
c17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986
|
||||
c-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z" />
|
||||
<glyph glyph-name="eye" unicode="" horiz-adv-x="576"
|
||||
d="M288 304c0.114258 0 0.240234 -0.0175781 0.354492 -0.0175781c61.6543 0 111.71 -50.0557 111.71 -111.71s-50.0557 -111.71 -111.71 -111.71s-111.71 50.0557 -111.71 111.71c0 10.7422 1.51953 21.1328 4.35547 30.9678
|
||||
c7.95898 -4.52637 17.2129 -7.17188 27 -7.24023c30.9072 0 56 25.0928 56 56c-0.0683594 9.78711 -2.71387 19.041 -7.24023 27c9.88379 3.07617 20.3896 4.83008 31.2402 5zM572.52 206.6c2.21387 -4.37793 3.46094 -9.38965 3.46094 -14.626
|
||||
c0 -5.2373 -1.24707 -10.1855 -3.46094 -14.5635c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635
|
||||
c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z" />
|
||||
<glyph glyph-name="eye-slash" unicode="" horiz-adv-x="640"
|
||||
d="M634 -23c3.66895 -2.93262 6.00391 -7.45117 6.00391 -12.5088c0 -3.7832 -1.31543 -7.26074 -3.51367 -10.001l-10 -12.4902c-2.93359 -3.66309 -7.44824 -5.99414 -12.502 -5.99414c-3.77637 0 -7.25 1.31152 -9.98828 3.50391l-598 467.49
|
||||
c-3.66895 2.93262 -6.00391 7.45117 -6.00391 12.5088c0 3.7832 1.31543 7.26074 3.51367 10.001l10 12.4902c2.93359 3.66309 7.44824 5.99414 12.502 5.99414c3.77637 0 7.25 -1.31152 9.98828 -3.50391zM296.79 301.53c7.51172 1.60254 15.2266 2.45508 23.21 2.46973
|
||||
c60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-7.51367 -1.59375 -15.2285 -2.44336 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29
|
||||
c32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c2.21289 -4.37793 3.45996 -9.38965 3.45996 -14.626c0 -5.2373 -1.24707 -10.1855 -3.45996 -14.5635c-14.1924 -27.5625 -31.9229 -52.6689 -52.9004 -75.1104l-37.7402 29.5
|
||||
c17.2305 18.0527 31.9385 38.1318 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4
|
||||
c-2.21387 4.37793 -3.46094 9.38965 -3.46094 14.626c0 5.2373 1.24707 10.1855 3.46094 14.5635c14.1885 27.5586 31.916 52.6621 52.8896 75.1006l37.7402 -29.5c-17.249 -18.0469 -31.9727 -38.1221 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z" />
|
||||
<glyph glyph-name="calendar-alt" unicode="" horiz-adv-x="448"
|
||||
d="M148 160h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM256 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40
|
||||
c6.59961 0 12 -5.40039 12 -12v-40zM352 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM256 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40
|
||||
c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM160 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM352 76c0 -6.59961 -5.40039 -12 -12 -12h-40
|
||||
c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40
|
||||
c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="comment" unicode=""
|
||||
d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5c-3.80078 8.7998 -2 19 4.59961 26
|
||||
c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004
|
||||
l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z" />
|
||||
<glyph glyph-name="folder" unicode=""
|
||||
d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62
|
||||
c-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z" />
|
||||
<glyph glyph-name="folder-open" unicode="" horiz-adv-x="576"
|
||||
d="M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2
|
||||
c8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z" />
|
||||
<glyph glyph-name="chart-bar" unicode=""
|
||||
d="M396.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM204.8 96
|
||||
c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM300.8 96
|
||||
c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM496 48c8.83984 0 16 -7.16016 16 -16v-16
|
||||
c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-320h448zM108.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004
|
||||
c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004z" />
|
||||
<glyph glyph-name="comments" unicode="" horiz-adv-x="576"
|
||||
d="M532 61.7998c15.2998 -30.7002 37.4004 -54.5 37.7998 -54.7998c6.2998 -6.7002 8 -16.5 4.40039 -25c-3.7002 -8.5 -12 -14 -21.2002 -14c-53.5996 0 -96.7002 20.2998 -125.2 38.7998c-19 -4.39941 -39 -6.7998 -59.7998 -6.7998
|
||||
c-86.2002 0 -159.9 40.4004 -191.3 97.7998c-9.7002 1.2002 -19.2002 2.7998 -28.4004 4.90039c-28.5 -18.6006 -71.7002 -38.7998 -125.2 -38.7998c-9.19922 0 -17.5996 5.5 -21.1992 14c-3.7002 8.5 -1.90039 18.2998 4.39941 25
|
||||
c0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44 98.2002c0 88.4004 93.0996 160 208 160c86.2998 0 160.3 -40.5 191.8 -98.0996c99.7002 -11.8008 176.2 -77.9004 176.2 -157.9c0 -37.0996 -16.5 -71.0996 -44 -98.2002zM139.2 154.1
|
||||
l19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008
|
||||
c14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3
|
||||
c29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z" />
|
||||
<glyph glyph-name="star-half" unicode="" horiz-adv-x="576"
|
||||
d="M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126
|
||||
l-139 -20.2002l100.601 -98l-23.7002 -138.4z" />
|
||||
<glyph glyph-name="lemon" unicode=""
|
||||
d="M484.112 420.111c28.1221 -28.123 35.9434 -68.0039 19.0215 -97.0547c-23.0576 -39.584 50.1436 -163.384 -82.3311 -295.86c-132.301 -132.298 -256.435 -59.3594 -295.857 -82.3291c-29.0459 -16.917 -68.9219 -9.11426 -97.0576 19.0205
|
||||
c-28.1221 28.1221 -35.9434 68.0029 -19.0215 97.0547c23.0566 39.5859 -50.1436 163.386 82.3301 295.86c132.308 132.309 256.407 59.3496 295.862 82.332c29.0498 16.9219 68.9307 9.09863 97.0537 -19.0234zM461.707 347.217
|
||||
c13.5166 23.2031 -27.7578 63.7314 -50.4883 50.4912c-66.6025 -38.7939 -165.646 45.5898 -286.081 -74.8457c-120.444 -120.445 -36.0449 -219.472 -74.8447 -286.08c-13.542 -23.2471 27.8145 -63.6953 50.4932 -50.4883
|
||||
c66.6006 38.7949 165.636 -45.5996 286.076 74.8428c120.444 120.445 36.0449 219.472 74.8447 286.08zM291.846 338.481c1.37012 -10.96 -6.40332 -20.957 -17.3643 -22.3271c-54.8467 -6.85547 -135.779 -87.7871 -142.636 -142.636
|
||||
c-1.37305 -10.9883 -11.3984 -18.7334 -22.3262 -17.3643c-10.9609 1.37012 -18.7344 11.3652 -17.3643 22.3262c9.16211 73.2852 104.167 168.215 177.364 177.364c10.9531 1.36816 20.9561 -6.40234 22.3262 -17.3633z" />
|
||||
<glyph glyph-name="credit-card" unicode="" horiz-adv-x="576"
|
||||
d="M527.9 416c26.5996 0 48.0996 -21.5 48.0996 -48v-352c0 -26.5 -21.5 -48 -48.0996 -48h-479.801c-26.5996 0 -48.0996 21.5 -48.0996 48v352c0 26.5 21.5 48 48.0996 48h479.801zM54.0996 368c-3.2998 0 -6 -2.7002 -6 -6v-42h479.801v42c0 3.2998 -2.7002 6 -6 6
|
||||
h-467.801zM521.9 16c3.2998 0 6 2.7002 6 6v170h-479.801v-170c0 -3.2998 2.7002 -6 6 -6h467.801zM192 116v-40c0 -6.59961 -5.40039 -12 -12 -12h-72c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h72c6.59961 0 12 -5.40039 12 -12zM384 116v-40
|
||||
c0 -6.59961 -5.40039 -12 -12 -12h-136c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h136c6.59961 0 12 -5.40039 12 -12z" />
|
||||
<glyph glyph-name="hdd" unicode="" horiz-adv-x="576"
|
||||
d="M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 10.167 3.19531 19.6465 8.59668 27.4121l105.08 151.053
|
||||
c8.67383 12.4678 23.0791 20.5889 39.4043 20.5889h269.838c16.3252 0 30.7305 -8.12109 39.4043 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32
|
||||
s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z" />
|
||||
<glyph glyph-name="hand-point-right" unicode=""
|
||||
d="M428.8 310.4c45.0996 0 83.2002 -38.1016 83.2002 -83.2002c0 -45.6162 -37.7646 -83.2002 -83.2002 -83.2002h-35.6475c-1.71387 -7.70605 -4.43555 -15.2051 -7.92969 -22.0645c2.50586 -22.0059 -3.50293 -44.9775 -15.9844 -62.791
|
||||
c-1.14062 -52.4863 -37.3984 -91.1445 -99.9404 -91.1445h-21.2988c-60.0635 0 -98.5117 40 -127.2 40h-2.67871c-5.74707 -4.95215 -13.5361 -8 -22.1201 -8h-64c-17.6729 0 -32 12.8936 -32 28.7998v230.4c0 15.9062 14.3271 28.7998 32 28.7998h64.001
|
||||
c8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816 23.6689l0.128906 0.148438l0.130859 0.145508c8.85645 9.93652 18.1162 20.8398 25.8506 33.2529c18.7051 30.2471 30.3936 78.7842 75.707 78.7842c56.9277 0 92 -35.2861 92 -83.2002
|
||||
c0 -0.0283203 0 0.0361328 0 0.0078125c0 -7.66602 -0.748047 -15.1582 -2.17578 -22.4072h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994
|
||||
c0 26.4004 -20.625 35.2002 -44 35.2002c-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988
|
||||
c40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
|
||||
<glyph glyph-name="hand-point-left" unicode=""
|
||||
d="M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529
|
||||
l0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64
|
||||
c-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-3.49414 6.85938 -6.21582 14.3584 -7.92969 22.0645h-35.6465
|
||||
c-45.4355 0 -83.2002 37.584 -83.2002 83.2002zM48 227.2c0 -18.9756 16.2246 -35.2002 35.2002 -35.2002h91.0244c-12.8369 -14.6689 -14.415 -42.8252 4.9502 -61.0498c-11.2256 -19.6465 -1.68652 -45.624 12.9248 -53.625
|
||||
c-6.52246 -39.1279 10.0771 -61.3252 50.6016 -61.3252h21.2988c45.4912 0 77.21 35.9131 120 39.6768v176.752c-25.2393 2.96289 -42.9658 21.2227 -59.0752 39.5967c-11.2744 12.6494 -21.7246 25.2998 -30.7988 39.875
|
||||
c-14.4814 23.3877 -26.1318 56.0996 -34.9258 56.0996c-23.375 0 -44 -8.7998 -44 -35.2002c0 -35.2002 26.3994 -53.0752 26.3994 -70.3994h-158.399c-18.4248 0 -35.2002 -16.5 -35.2002 -35.2002zM448 88c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24
|
||||
s24 10.7451 24 24s-10.7451 24 -24 24z" />
|
||||
<glyph glyph-name="hand-point-up" unicode="" horiz-adv-x="448"
|
||||
d="M105.6 364.8c0 45.0996 38.1016 83.2002 83.2002 83.2002c45.6162 0 83.2002 -37.7646 83.2002 -83.2002v-35.6465c7.70605 -1.71387 15.2051 -4.43555 22.0645 -7.92969c22.0059 2.50684 44.9775 -3.50293 62.791 -15.9844
|
||||
c52.4863 -1.14062 91.1445 -37.3984 91.1445 -99.9404v-21.2988c0 -60.0635 -40 -98.5117 -40 -127.2v-2.67871c4.95215 -5.74707 8 -13.5361 8 -22.1201v-64c0 -17.6729 -12.8936 -32 -28.7998 -32h-230.4c-15.9062 0 -28.7998 14.3271 -28.7998 32v64
|
||||
c0 8.58398 3.04785 16.373 8 22.1201v2.67871c0 6.96387 -6.19336 14.8623 -23.6689 30.1816l-0.148438 0.128906l-0.145508 0.130859c-9.93652 8.85645 -20.8398 18.1162 -33.2529 25.8506c-30.2471 18.7051 -78.7842 30.3936 -78.7842 75.707
|
||||
c0 56.9277 35.2861 92 83.2002 92c0.0283203 0 -0.0361328 0 -0.0078125 0c7.66602 0 15.1582 -0.748047 22.4072 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399
|
||||
c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994c-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753
|
||||
c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988c0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24
|
||||
s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z" />
|
||||
<glyph glyph-name="hand-point-down" unicode="" horiz-adv-x="448"
|
||||
d="M188.8 -64c-45.0986 0 -83.2002 38.1006 -83.2002 83.2002v86.1758c-6.91016 -1.3623 -14.374 -2.17578 -22.3994 -2.17578c-47.9141 0 -83.2002 35.0723 -83.2002 92c0 45.3135 48.5371 57.002 78.7852 75.707c12.4121 7.73438 23.3154 16.9951 33.2529 25.8506
|
||||
l0.145508 0.130859l0.148438 0.128906c17.4746 15.3213 23.668 23.2197 23.668 30.1836v2.67871c-4.95215 5.74707 -8 13.5361 -8 22.1201v64c0 17.6729 12.8936 32 28.7998 32h230.4c15.9062 0 28.7998 -14.3271 28.7998 -32v-64.001
|
||||
c0 -8.58398 -3.04785 -16.373 -8 -22.1201v-2.67871c0 -28.6885 40 -67.1367 40 -127.2v-21.2988c0 -62.542 -38.6582 -98.8008 -91.1445 -99.9404c-17.8135 -12.4814 -40.7852 -18.4922 -62.791 -15.9844c-6.85938 -3.49414 -14.3584 -6.21582 -22.0645 -7.92969v-35.6465
|
||||
c0 -45.4355 -37.584 -83.2002 -83.2002 -83.2002zM188.8 -16c18.9756 0 35.2002 16.2246 35.2002 35.2002v91.0244c14.6689 -12.8369 42.8252 -14.415 61.0498 4.9502c19.6465 -11.2256 45.624 -1.68652 53.625 12.9248c39.1279 -6.52246 61.3252 10.0771 61.3252 50.6016
|
||||
v21.2988c0 45.4912 -35.9131 77.21 -39.6768 120h-176.752c-2.96289 -25.2393 -21.2227 -42.9658 -39.5967 -59.0752c-12.6494 -11.2744 -25.2998 -21.7246 -39.875 -30.7988c-23.3877 -14.4814 -56.0996 -26.1318 -56.0996 -34.9258c0 -23.375 8.7998 -44 35.2002 -44
|
||||
c35.2002 0 53.0752 26.3994 70.3994 26.3994v-158.399c0 -18.4248 16.5 -35.2002 35.2002 -35.2002zM328 384c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24z" />
|
||||
<glyph glyph-name="copy" unicode="" horiz-adv-x="448"
|
||||
d="M433.941 382.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48
|
||||
h172.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88
|
||||
c-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184v-64h64z" />
|
||||
<glyph glyph-name="save" unicode="" horiz-adv-x="448"
|
||||
d="M433.941 318.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM272 368h-128v-80h128v80z
|
||||
M394 16c3.31152 0 6 2.68848 6 6v259.632c0 1.65527 -0.670898 3.15723 -1.75684 4.24316l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340z
|
||||
M224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z" />
|
||||
<glyph glyph-name="square" unicode="" horiz-adv-x="448"
|
||||
d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM394 16c3.2998 0 6 2.7002 6 6v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340z" />
|
||||
<glyph glyph-name="envelope" unicode=""
|
||||
d="M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM464 336h-416v-40.8047c22.4248 -18.2627 58.1797 -46.6602 134.587 -106.49
|
||||
c16.834 -13.2422 50.2051 -45.0762 73.4131 -44.7012c23.2119 -0.371094 56.5723 31.4541 73.4131 44.7012c76.4189 59.8389 112.165 88.2305 134.587 106.49v40.8047zM48 48h416v185.601c-22.915 -18.252 -55.4189 -43.8691 -104.947 -82.6523
|
||||
c-22.5439 -17.748 -60.3359 -55.1787 -103.053 -54.9473c-42.9277 -0.231445 -81.2051 37.75 -103.062 54.9551c-49.5293 38.7842 -82.0244 64.3945 -104.938 82.6455v-185.602z" />
|
||||
<glyph glyph-name="lightbulb" unicode="" horiz-adv-x="352"
|
||||
d="M176 368c8.83984 0 16 -7.16016 16 -16s-7.16016 -16 -16 -16c-35.2803 0 -64 -28.7002 -64 -64c0 -8.83984 -7.16016 -16 -16 -16s-16 7.16016 -16 16c0 52.9404 43.0596 96 96 96zM96.0596 -11.1699l-0.0400391 43.1797h159.961l-0.0507812 -43.1797
|
||||
c-0.00976562 -3.13965 -0.939453 -6.21973 -2.67969 -8.83984l-24.5098 -36.8398c-2.95996 -4.45996 -7.95996 -7.14062 -13.3203 -7.14062h-78.8496c-5.35059 0 -10.3506 2.68066 -13.3203 7.14062l-24.5098 36.8398c-1.75 2.62012 -2.68066 5.68945 -2.68066 8.83984z
|
||||
M176 448c97.2002 0 176 -78.7998 176 -176c0 -44.3701 -16.4502 -84.8496 -43.5498 -115.79c-16.6406 -18.9795 -42.7402 -58.79 -52.4199 -92.1602v-0.0498047h-48v0.0996094c0.00488281 4.98145 0.790039 9.78809 2.21973 14.3008
|
||||
c5.67969 17.9893 22.9902 64.8496 62.0996 109.46c20.4102 23.29 31.6504 53.1699 31.6504 84.1396c0 70.5801 -57.4199 128 -128 128c-68.2803 0 -128.15 -54.3604 -127.95 -128c0.0898438 -30.9902 11.0703 -60.71 31.6104 -84.1396
|
||||
c39.3496 -44.9004 56.5801 -91.8604 62.1699 -109.67c1.42969 -4.56055 2.13965 -9.30078 2.15039 -14.0703v-0.120117h-48v0.0595703c-9.68066 33.3604 -35.7803 73.1709 -52.4209 92.1602c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78
|
||||
c0 93.0303 73.7197 176 176 176z" />
|
||||
<glyph glyph-name="bell" unicode="" horiz-adv-x="448"
|
||||
d="M439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29
|
||||
c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29zM67.5303 80h312.939
|
||||
c-21.2197 27.96 -44.4199 74.3203 -44.5293 159.42c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112s-112 -50.1396 -112 -112c0 -0.200195 0.0595703 -0.379883 0.0595703 -0.580078
|
||||
c-0.109375 -85.0898 -23.3096 -131.45 -44.5293 -159.42zM224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" />
|
||||
<glyph glyph-name="hospital" unicode="" horiz-adv-x="448"
|
||||
d="M128 204v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12zM268 192c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40
|
||||
c0 -6.62695 -5.37305 -12 -12 -12h-40zM192 108c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM268 96c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40
|
||||
c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.62695 5.37305 12 12 12h19.5v378.965c0 11.6172 10.7451 21.0352 24 21.0352h88.5v40c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-40h88.5
|
||||
c13.2549 0 24 -9.41797 24 -21.0352v-378.965h19.5c6.62695 0 12 -5.37305 12 -12zM79.5 -15h112.5v67c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-67h112.5v351h-64.5v-24c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v24
|
||||
h-64.5v-351zM266 384h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20
|
||||
c0 3.31152 -2.68848 6 -6 6z" />
|
||||
<glyph glyph-name="plus-square" unicode="" horiz-adv-x="448"
|
||||
d="M352 208v-32c0 -6.59961 -5.40039 -12 -12 -12h-88v-88c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v88h-88c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h88v88c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12
|
||||
v-88h88c6.59961 0 12 -5.40039 12 -12zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340
|
||||
c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="circle" unicode=""
|
||||
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200z" />
|
||||
<glyph glyph-name="smile" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM332 135.4c8.5 10.1992 23.7002 11.5 33.7998 3.09961c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998
|
||||
c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.0996 8.40039 25.2998 7.09961 33.7998 -3.09961c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004z" />
|
||||
<glyph glyph-name="frown" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 144c40.2002 0 78 -17.7002 103.8 -48.5996c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008
|
||||
c-10.7002 -8.7998 -25.7002 -6.59961 -33.7998 3.10059c-16.6006 20 -41 31.3994 -66.9004 31.3994s-50.2998 -11.5 -66.9004 -31.3994c-8.5 -10.2002 -23.5996 -11.5 -33.7998 -3.10059c-10.2002 8.5 -11.5996 23.6006 -3.09961 33.8008
|
||||
c25.7998 30.8994 63.5996 48.5996 103.8 48.5996z" />
|
||||
<glyph glyph-name="meh" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM336 128c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-176c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h176z
|
||||
" />
|
||||
<glyph glyph-name="keyboard" unicode="" horiz-adv-x="576"
|
||||
d="M528 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480zM536 48v288c0 4.41113 -3.58887 8 -8 8h-480c-4.41113 0 -8 -3.58887 -8 -8v-288c0 -4.41113 3.58887 -8 8 -8
|
||||
h480c4.41113 0 8 3.58887 8 8zM170 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM266 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28
|
||||
c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM362 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM458 178c0 -6.62695 -5.37305 -12 -12 -12h-28
|
||||
c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 96c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 96
|
||||
c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28
|
||||
c6.62695 0 12 -5.37305 12 -12v-28zM218 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM314 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28
|
||||
c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM410 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 260c0 -6.62695 -5.37305 -12 -12 -12h-28
|
||||
c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM408 102c0 -6.62695 -5.37305 -12 -12 -12h-216c-6.62695 0 -12 5.37305 -12 12v16c0 6.62695 5.37305 12 12 12h216c6.62695 0 12 -5.37305 12 -12v-16z" />
|
||||
<glyph glyph-name="calendar" unicode="" horiz-adv-x="448"
|
||||
d="M400 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12
|
||||
v-52h48zM394 -16c3.2998 0 6 2.7002 6 6v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340z" />
|
||||
<glyph glyph-name="play-circle" unicode=""
|
||||
d="M371.7 210c16.3994 -9.2002 16.3994 -32.9004 0 -42l-176 -101c-15.9004 -8.7998 -35.7002 2.59961 -35.7002 21v208c0 18.5 19.9004 29.7998 35.7002 21zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192
|
||||
c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200z" />
|
||||
<glyph glyph-name="minus-square" unicode="" horiz-adv-x="448"
|
||||
d="M108 164c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h232c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-232zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352
|
||||
c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="check-square" unicode="" horiz-adv-x="448"
|
||||
d="M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM400 16v352h-352v-352h352zM364.136 257.724l-172.589 -171.204
|
||||
c-4.70508 -4.66699 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66699 4.70508 -4.63672 12.3037 0.0693359 16.9717l22.7188 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l59.792 -60.2773l141.353 140.217
|
||||
c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4.70605 4.63672 -12.3047 -0.0683594 -16.9717z" />
|
||||
<glyph glyph-name="share-square" unicode="" horiz-adv-x="576"
|
||||
d="M561.938 289.94c18.75 -18.7402 18.75 -49.1406 0 -67.8809l-143.998 -144c-29.9727 -29.9727 -81.9404 -9.05273 -81.9404 33.9404v53.7998c-101.266 -7.83691 -99.625 -31.6406 -84.1104 -78.7598c14.2285 -43.0889 -33.4736 -79.248 -71.0195 -55.7402
|
||||
c-51.6924 32.3057 -84.8701 83.0635 -84.8701 144.76c0 39.3408 12.2197 72.7402 36.3301 99.3008c19.8398 21.8398 47.7402 38.4697 82.9102 49.4199c36.7295 11.4395 78.3096 16.1094 120.76 17.9893v57.1982c0 42.9355 51.9258 63.9541 81.9404 33.9404zM384 112l144 144
|
||||
l-144 144v-104.09c-110.86 -0.90332 -240 -10.5166 -240 -119.851c0 -52.1396 32.79 -85.6094 62.3096 -104.06c-39.8174 120.65 48.999 141.918 177.69 143.84v-103.84zM408.74 27.5068c7.4375 2.125 14.5508 5.30566 20.9736 9.30273
|
||||
c7.97656 4.95215 18.2861 -0.825195 18.2861 -10.2139v-42.5957c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h132c6.62695 0 12 -5.37305 12 -12v-4.48633c0 -4.91699 -2.9873 -9.36914 -7.56934 -11.1514
|
||||
c-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.82715 -1.11523 -3.98633 -1.76953 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541z
|
||||
" />
|
||||
<glyph glyph-name="compass" unicode="" horiz-adv-x="496"
|
||||
d="M347.94 318.14c16.6592 7.61035 33.8096 -9.54004 26.1992 -26.1992l-65.9697 -144.341c-3.19238 -6.9834 -8.78613 -12.5771 -15.7695 -15.7695l-144.341 -65.9697c-16.6592 -7.61035 -33.8096 9.5498 -26.1992 26.1992l65.9697 144.341
|
||||
c3.19238 6.9834 8.78613 12.5771 15.7695 15.7695zM270.58 169.42c12.4697 12.4697 12.4697 32.6904 0 45.1602s-32.6904 12.4697 -45.1602 0s-12.4697 -32.6904 0 -45.1602s32.6904 -12.4697 45.1602 0zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248
|
||||
s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z" />
|
||||
<glyph glyph-name="caret-square-down" unicode="" horiz-adv-x="448"
|
||||
d="M125.1 240h197.801c10.6992 0 16.0996 -13 8.5 -20.5l-98.9004 -98.2998c-4.7002 -4.7002 -12.2002 -4.7002 -16.9004 0l-98.8994 98.2998c-7.7002 7.5 -2.2998 20.5 8.39941 20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
|
||||
c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="caret-square-up" unicode="" horiz-adv-x="448"
|
||||
d="M322.9 144h-197.801c-10.6992 0 -16.0996 13 -8.5 20.5l98.9004 98.2998c4.7002 4.7002 12.2002 4.7002 16.9004 0l98.8994 -98.2998c7.7002 -7.5 2.2998 -20.5 -8.39941 -20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
|
||||
c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="caret-square-right" unicode="" horiz-adv-x="448"
|
||||
d="M176 93.0996v197.801c0 10.6992 13 16.0996 20.5 8.5l98.2998 -98.9004c4.7002 -4.7002 4.7002 -12.2002 0 -16.9004l-98.2998 -98.8994c-7.5 -7.7002 -20.5 -2.2998 -20.5 8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
|
||||
c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="file" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z" />
|
||||
<glyph glyph-name="file-alt" unicode="" horiz-adv-x="384"
|
||||
d="M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12
|
||||
v28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z
|
||||
M256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z" />
|
||||
<glyph glyph-name="thumbs-up" unicode=""
|
||||
d="M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562
|
||||
c-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004
|
||||
c13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48
|
||||
c21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305
|
||||
c-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004
|
||||
c15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
|
||||
<glyph glyph-name="thumbs-down" unicode=""
|
||||
d="M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73
|
||||
c-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8
|
||||
h10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152
|
||||
c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM394.18 135.27c21.1104 0 37.7305 18.9102 37.8203 37.8203c0.0898438 18.9004 -12.8203 37.8105 -22.2695 37.8105c13.4883 14.5547 16.3701 45.2354 -5.21094 65.6191
|
||||
c12.5605 21.1309 1.26074 49.4102 -13.9395 57.5703c7.7002 48.7803 -17.6084 65.9004 -53.1201 65.9004h-37.8203c-71.6387 0 -118.028 -37.8203 -171.64 -37.8203v-186.17h10.9199c28.3604 0 67.9805 -70.8896 94.54 -97.46
|
||||
c28.3604 -28.3604 18.9102 -75.6299 37.8203 -94.54c47.2695 0 47.2695 32.9805 47.2695 56.7305c0 39.1699 -28.3594 56.7197 -28.3594 94.5391h103.989z" />
|
||||
<glyph glyph-name="sun" unicode=""
|
||||
d="M494.2 226.1c11.2002 -7.59961 17.7998 -20.0996 17.8994 -33.6992c0 -13.4004 -6.69922 -26 -17.7998 -33.5l-59.7998 -40.5l13.7002 -71c2.5 -13.2002 -1.60059 -26.8008 -11.1006 -36.3008s-22.8994 -13.7998 -36.2998 -11.0996l-70.8994 13.7002l-40.4004 -59.9004
|
||||
c-7.5 -11.0996 -20.0996 -17.7998 -33.5 -17.7998s-26 6.7002 -33.5 17.9004l-40.4004 59.8994l-70.7998 -13.7002c-13.3994 -2.59961 -26.7998 1.60059 -36.2998 11.1006s-13.7002 23.0996 -11.0996 36.2998l13.6992 71l-59.7998 40.5
|
||||
c-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l-13.6992 71c-2.60059 13.2002 1.59961 26.7002 11.0996 36.3008c9.5 9.59961 23 13.6992 36.2998 11.1992l70.7998 -13.6992l40.4004 59.8994c15.0996 22.2998 51.9004 22.2998 67 0
|
||||
l40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998
|
||||
l-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136
|
||||
c30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z" />
|
||||
<glyph glyph-name="moon" unicode=""
|
||||
d="M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c16.0342 -0.00292969 31.5078 -1.46875 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836
|
||||
c0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208
|
||||
c65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z" />
|
||||
<glyph glyph-name="caret-square-left" unicode="" horiz-adv-x="448"
|
||||
d="M272 290.9v-197.801c0 -10.6992 -13 -16.0996 -20.5 -8.5l-98.2998 98.9004c-4.7002 4.7002 -4.7002 12.2002 0 16.9004l98.2998 98.8994c7.5 7.7002 20.5 2.2998 20.5 -8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352
|
||||
c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="dot-circle" unicode=""
|
||||
d="M256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z
|
||||
M256 272c44.1826 0 80 -35.8174 80 -80s-35.8174 -80 -80 -80s-80 35.8174 -80 80s35.8174 80 80 80z" />
|
||||
<glyph glyph-name="building" unicode="" horiz-adv-x="448"
|
||||
d="M128 300v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM268 288c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40
|
||||
c0 -6.59961 -5.40039 -12 -12 -12h-40zM140 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM268 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40
|
||||
c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM192 108c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM268 96c-6.59961 0 -12 5.40039 -12 12v40
|
||||
c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.59961 5.40039 12 12 12h19.5v440c0 13.2998 10.7002 24 24 24h337c13.2998 0 24 -10.7002 24 -24v-440h19.5
|
||||
c6.59961 0 12 -5.40039 12 -12zM79.5 -15h112.5v67c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-67h112.5v414l-288.5 1z" />
|
||||
<glyph glyph-name="file-pdf" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM298.2 127.7c10.5 -10.5 8 -38.7002 -17.5 -38.7002c-14.7998 0 -36.9004 6.7998 -55.7998 17c-21.6006 -3.59961 -46 -12.7002 -68.4004 -20.0996c-50.0996 -86.4004 -79.4004 -47 -76.0996 -31.2002
|
||||
c4 20 31 35.8994 51 46.2002c10.5 18.3994 25.3994 50.5 35.3994 74.3994c-7.39941 28.6006 -11.3994 51 -7 67.1006c4.7998 17.6992 38.4004 20.2998 42.6006 -5.90039c4.69922 -15.4004 -1.5 -39.9004 -5.40039 -56c8.09961 -21.2998 19.5996 -35.7998 36.7998 -46.2998
|
||||
c17.4004 2.2002 52.2002 5.5 64.4004 -6.5zM100.1 49.9004c0 -0.700195 11.4004 4.69922 30.4004 35c-5.90039 -5.5 -25.2998 -21.3008 -30.4004 -35zM181.7 240.5c-2.5 0 -2.60059 -26.9004 1.7998 -40.7998c4.90039 8.7002 5.59961 40.7998 -1.7998 40.7998zM157.3 103.9
|
||||
c15.9004 6.09961 34 14.8994 54.7998 19.1992c-11.1992 8.30078 -21.7998 20.4004 -30.0996 35.5c-6.7002 -17.6992 -15 -37.7998 -24.7002 -54.6992zM288.9 108.9c3.59961 2.39941 -2.2002 10.3994 -37.3008 7.7998c32.3008 -13.7998 37.3008 -7.7998 37.3008 -7.7998z" />
|
||||
<glyph glyph-name="file-word" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM268.1 192v0.200195h15.8008c7.7998 0 13.5 -7.2998 11.5996 -14.9004c-4.2998 -17 -13.7002 -54.0996 -34.5 -136c-1.2998 -5.39941 -6.09961 -9.09961 -11.5996 -9.09961h-24.7002
|
||||
c-5.5 0 -10.2998 3.7998 -11.6006 9.09961c-5.2998 20.9004 -17.7998 71 -17.8994 71.4004l-2.90039 17.2998c-0.5 -5.2998 -1.5 -11.0996 -3 -17.2998l-17.8994 -71.4004c-1.30078 -5.39941 -6.10059 -9.09961 -11.6006 -9.09961h-25.2002
|
||||
c-5.59961 0 -10.3994 3.7002 -11.6992 9.09961c-6.5 26.5 -25.2002 103.4 -33.2002 136c-1.7998 7.5 3.89941 14.7998 11.7002 14.7998h16.7998c5.7998 0 10.7002 -4.09961 11.7998 -9.69922c5 -25.7002 18.4004 -93.8008 19.0996 -99
|
||||
c0.300781 -1.7002 0.400391 -3.10059 0.5 -4.2002c0.800781 7.5 0.400391 4.7002 24.8008 103.7c1.39941 5.2998 6.19922 9.09961 11.6992 9.09961h13.3008c5.59961 0 10.3994 -3.7998 11.6992 -9.2002c23.9004 -99.7002 22.8008 -94.3994 23.6006 -99.5
|
||||
c0.299805 -1.7002 0.5 -3.09961 0.700195 -4.2998c0.599609 8.09961 0.399414 5.7998 21 103.5c1.09961 5.5 6 9.5 11.6992 9.5z" />
|
||||
<glyph glyph-name="file-excel" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM260 224c9.2002 0 15 -10 10.2998 -18c-16 -27.5 -45.5996 -76.9004 -46.2998 -78l46.4004 -78c4.59961 -8 -1.10059 -18 -10.4004 -18h-28.7998c-4.40039 0 -8.5 2.40039 -10.6006 6.2998
|
||||
c-22.6992 41.7998 -13.6992 27.5 -28.5996 57.7002c-5.59961 -12.7002 -6.90039 -17.7002 -28.5996 -57.7002c-2.10059 -3.89941 -6.10059 -6.2998 -10.5 -6.2998h-28.9004c-9.2998 0 -15.0996 10 -10.4004 18l46.3008 78l-46.3008 78c-4.59961 8 1.10059 18 10.4004 18
|
||||
h28.9004c4.39941 0 8.5 -2.40039 10.5996 -6.2998c21.7002 -40.4004 14.7002 -28.6006 28.5996 -57.7002c6.40039 15.2998 10.6006 24.5996 28.6006 57.7002c2.09961 3.89941 6.09961 6.2998 10.5 6.2998h28.7998z" />
|
||||
<glyph glyph-name="file-powerpoint" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM120 44v168c0 6.59961 5.40039 12 12 12h69.2002c36.7002 0 62.7998 -27 62.7998 -66.2998c0 -74.2998 -68.7002 -66.5 -95.5 -66.5v-47.2002c0 -6.59961 -5.40039 -12 -12 -12h-24.5c-6.59961 0 -12 5.40039 -12 12z
|
||||
M168.5 131.4h23c7.90039 0 13.9004 2.39941 18.0996 7.19922c8.5 9.80078 8.40039 28.5 0.100586 37.8008c-4.10059 4.59961 -9.90039 7 -17.4004 7h-23.8994v-52h0.0996094z" />
|
||||
<glyph glyph-name="file-image" unicode="" horiz-adv-x="384"
|
||||
d="M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288
|
||||
h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM80 32v64l39.5 39.5c4.7002 4.7002 12.2998 4.7002 17 0l39.5 -39.5l87.5 87.5c4.7002 4.7002 12.2998 4.7002 17 0l23.5 -23.5v-128h-224zM128 272c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48
|
||||
s21.5 48 48 48z" />
|
||||
<glyph glyph-name="file-archive" unicode="" horiz-adv-x="384"
|
||||
d="M128.3 288h32v-32h-32v32zM192.3 384v-32h-32v32h32zM128.3 352h32v-32h-32v32zM192.3 320v-32h-32v32h32zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1
|
||||
c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-48.2998v-16h-32v16h-79.7002v-416h288zM194.2 182.3l17.2998 -87.7002c6.40039 -32.3994 -18.4004 -62.5996 -51.5 -62.5996
|
||||
c-33.2002 0 -58 30.4004 -51.4004 62.9004l19.7002 97.0996v32h32v-32h22.1006c5.7998 0 10.6992 -4.09961 11.7998 -9.7002zM160.3 57.9004c17.9004 0 32.4004 12.0996 32.4004 27c0 14.8994 -14.5 27 -32.4004 27c-17.8994 0 -32.3994 -12.1006 -32.3994 -27
|
||||
c0 -14.9004 14.5 -27 32.3994 -27zM192.3 256v-32h-32v32h32z" />
|
||||
<glyph glyph-name="file-audio" unicode="" horiz-adv-x="384"
|
||||
d="M369.941 350.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM332.118 320
|
||||
l-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM192 60.0244c0 -10.6914 -12.9258 -16.0459 -20.4854 -8.48535l-35.5146 35.9746h-28c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h28
|
||||
l35.5146 36.9473c7.56055 7.56055 20.4854 2.20605 20.4854 -8.48535v-135.951zM233.201 107.154c9.05078 9.29688 9.05957 24.1328 0.000976562 33.4385c-22.1494 22.752 12.2344 56.2461 34.3945 33.4814c27.1982 -27.9404 27.2119 -72.4443 0.000976562 -100.401
|
||||
c-21.793 -22.3857 -56.9463 10.3154 -34.3965 33.4814z" />
|
||||
<glyph glyph-name="file-video" unicode="" horiz-adv-x="384"
|
||||
d="M369.941 350.059c8.68848 -8.68848 14.0586 -20.6943 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c13.2461 0 25.252 -5.37012 33.9404 -14.0586zM332.118 320
|
||||
l-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM276.687 195.303c10.0049 10.0049 27.3135 2.99707 27.3135 -11.3135v-111.976c0 -14.2939 -17.2959 -21.332 -27.3135 -11.3135l-52.6865 52.6738v-37.374
|
||||
c0 -11.0459 -8.9541 -20 -20 -20h-104c-11.0459 0 -20 8.9541 -20 20v104c0 11.0459 8.9541 20 20 20h104c11.0459 0 20 -8.9541 20 -20v-37.374z" />
|
||||
<glyph glyph-name="file-code" unicode="" horiz-adv-x="384"
|
||||
d="M149.9 98.9004c3.5 -3.30078 3.69922 -8.90039 0.399414 -12.4004l-17.3994 -18.5996c-1.60059 -1.80078 -4 -2.80078 -6.40039 -2.80078c-2.2002 0 -4.40039 0.900391 -6 2.40039l-57.7002 54.0996c-3.7002 3.40039 -3.7002 9.30078 0 12.8008l57.7002 54.0996
|
||||
c3.40039 3.2998 9 3.2002 12.4004 -0.400391l17.3994 -18.5996l0.200195 -0.200195c3.2002 -3.59961 2.7998 -9.2002 -0.799805 -12.3994l-32.7998 -28.9004l32.7998 -28.9004zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288
|
||||
c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288zM209.6 234l24.4004 -7
|
||||
c4.7002 -1.2998 7.40039 -6.2002 6 -10.9004l-54.7002 -188.199c-1.2998 -4.60059 -6.2002 -7.40039 -10.8994 -6l-24.4004 7.09961c-4.7002 1.2998 -7.40039 6.2002 -6 10.9004l54.7002 188.1c1.39941 4.7002 6.2002 7.40039 10.8994 6zM234.1 157.1
|
||||
c-3.5 3.30078 -3.69922 8.90039 -0.399414 12.4004l17.3994 18.5996c3.30078 3.60059 8.90039 3.7002 12.4004 0.400391l57.7002 -54.0996c3.7002 -3.40039 3.7002 -9.30078 0 -12.8008l-57.7002 -54.0996c-3.5 -3.2998 -9.09961 -3.09961 -12.4004 0.400391
|
||||
l-17.3994 18.5996l-0.200195 0.200195c-3.2002 3.59961 -2.7998 9.2002 0.799805 12.3994l32.7998 28.9004l-32.7998 28.9004z" />
|
||||
<glyph glyph-name="life-ring" unicode=""
|
||||
d="M256 -56c-136.967 0 -248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248s-111.033 -248 -248 -248zM152.602 20.7197c63.2178 -38.3184 143.579 -38.3184 206.797 0l-53.4111 53.4111c-31.8467 -13.5215 -68.168 -13.5059 -99.9746 0zM336 192
|
||||
c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80zM427.28 88.6016c38.3184 63.2178 38.3184 143.579 0 206.797l-53.4111 -53.4111c13.5215 -31.8467 13.5049 -68.168 0 -99.9746zM359.397 363.28
|
||||
c-63.2168 38.3184 -143.578 38.3184 -206.796 0l53.4111 -53.4111c31.8457 13.5215 68.167 13.5049 99.9736 0zM84.7197 295.398c-38.3184 -63.2178 -38.3184 -143.579 0 -206.797l53.4111 53.4111c-13.5215 31.8467 -13.5059 68.168 0 99.9746z" />
|
||||
<glyph glyph-name="paper-plane" unicode=""
|
||||
d="M440 441.5c34.5996 19.9004 77.5996 -8.7998 71.5 -48.9004l-59.4004 -387.199c-2.2998 -14.5 -11.0996 -27.3008 -23.8994 -34.5c-7.2998 -4.10059 -15.4004 -6.2002 -23.6006 -6.2002c-6.19922 0 -12.3994 1.2002 -18.2998 3.59961l-111.899 46.2002l-43.8008 -59.0996
|
||||
c-27.3994 -36.9004 -86.5996 -17.8008 -86.5996 28.5996v84.4004l-114.3 47.2998c-36.7998 15.0996 -40.1006 66 -5.7002 85.8994zM192 -16l36.5996 49.5l-36.5996 15.0996v-64.5996zM404.6 12.7002l59.4004 387.3l-416 -240l107.8 -44.5996l211.5 184.3
|
||||
c14.2002 12.2998 34.4004 -5.7002 23.7002 -21.2002l-140.2 -202.3z" />
|
||||
<glyph glyph-name="futbol" unicode="" horiz-adv-x="496"
|
||||
d="M483.8 268.6c42.2998 -130.199 -29 -270.1 -159.2 -312.399c-25.5 -8.2998 -51.2998 -12.2002 -76.6992 -12.2002c-104.5 0 -201.7 66.5996 -235.7 171.4c-42.2998 130.199 29 270.1 159.2 312.399c25.5 8.2998 51.2998 12.2002 76.6992 12.2002
|
||||
c104.5 0 201.7 -66.5996 235.7 -171.4zM409.3 74.9004c6.10059 8.39941 12.1006 16.8994 16.7998 26.1992c14.3008 28.1006 21.5 58.5 21.7002 89.2002l-38.8994 36.4004l-71.1006 -22.1006l-24.3994 -75.1992l43.6992 -60.9004zM409.3 310.3
|
||||
c-24.5 33.4004 -58.7002 58.4004 -97.8994 71.4004l-47.4004 -26.2002v-73.7998l64.2002 -46.5l70.7002 22zM184.9 381.6c-39.9004 -13.2998 -73.5 -38.5 -97.8008 -71.8994l10.1006 -52.5l70.5996 -22l64.2002 46.5v73.7998zM139 68.5l43.5 61.7002l-24.2998 74.2998
|
||||
l-71.1006 22.2002l-39 -36.4004c0.5 -55.7002 23.4004 -95.2002 37.8008 -115.3zM187.2 1.5c64.0996 -20.4004 115.5 -1.7998 121.7 0l22.3994 48.0996l-44.2998 61.7002h-78.5996l-43.6006 -61.7002z" />
|
||||
<glyph glyph-name="newspaper" unicode="" horiz-adv-x="576"
|
||||
d="M552 384c13.2549 0 24 -10.7451 24 -24v-336c0 -13.2549 -10.7451 -24 -24 -24h-496c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h42.752c6.60547 18.623 24.3896 32 45.248 32h440zM48 56c0 -4.41113 3.58887 -8 8 -8s8 3.58887 8 8v248h-16v-248z
|
||||
M528 48v288h-416v-280c0 -2.7168 -0.204102 -5.38574 -0.578125 -8h416.578zM172 168c-6.62695 0 -12 5.37305 -12 12v96c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-96c0 -6.62695 -5.37305 -12 -12 -12h-136zM200 248v-40h80v40h-80zM160 108v24
|
||||
c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-136c-6.62695 0 -12 5.37305 -12 12zM352 108v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104
|
||||
c-6.62695 0 -12 5.37305 -12 12zM352 252v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12zM352 180v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24
|
||||
c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12z" />
|
||||
<glyph glyph-name="bell-slash" unicode="" horiz-adv-x="640"
|
||||
d="M633.99 -23.0195c6.91016 -5.52051 8.01953 -15.5908 2.5 -22.4902l-10 -12.4902c-5.53027 -6.88965 -15.5898 -8.00977 -22.4902 -2.49023l-598 467.51c-6.90039 5.52051 -8.01953 15.5908 -2.49023 22.4902l10 12.4902
|
||||
c5.52051 6.90039 15.5898 8.00977 22.4902 2.49023zM163.53 80h182.84l61.3994 -48h-279.659c-19.1201 0 -31.9902 15.5996 -32.1006 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c18.3701 19.7402 51.5703 49.6904 54.8398 140.42l45.4697 -35.5498
|
||||
c-6.91992 -54.7803 -24.6895 -88.5498 -41.3994 -110.58zM320 352c-23.3496 0 -45 -7.17969 -62.9404 -19.4004l-38.1699 29.8408c19.6807 15.7793 43.1104 27.3096 69.1299 32.7197v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398
|
||||
c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -41.3604 6.03027 -70.7197 14.3398 -92.8496l-59.5293 46.54c-1.63086 13.96 -2.77051 28.8896 -2.79004 45.7295c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112zM320 -64
|
||||
c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z" />
|
||||
<glyph glyph-name="copyright" unicode=""
|
||||
d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z
|
||||
M363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.37793 -2.1875 3.86914 -5.3252 3.86914 -8.80762
|
||||
c0 -2.39746 -0.717773 -4.64258 -1.93359 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924
|
||||
c32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.45996 -1.98145 2.32422 -4.42969 2.32422 -7.07715c0 -3.28809 -1.32422 -6.2793 -3.47656 -8.44043z" />
|
||||
<glyph glyph-name="closed-captioning" unicode=""
|
||||
d="M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM458 48c3.2998 0 6 2.7002 6 6v276c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-276c0 -3.2998 2.7002 -6 6 -6h404z
|
||||
M246.9 133.7c1.69922 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.6006 -56.7998 -172.801 -32.0996 -172.801 67.9004c0 97.2998 121.7 119.5 172.5 70.0996c2.10059 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.89941 -3.09961 -6.19922 -4 -9.09961 -1.7002
|
||||
c-40.7998 32 -94.5996 14.9004 -94.5996 -31.1992c0 -48 51 -70.5 92.1992 -32.6006c2.80078 2.5 7.10059 2.10059 9.2002 -0.899414zM437.3 133.7c1.7002 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.5996 -56.9004 -172.8 -32.0996 -172.8 67.9004
|
||||
c0 97.2998 121.7 119.5 172.5 70.0996c2.09961 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.90039 -3.09961 -6.2002 -4 -9.09961 -1.7002c-40.8008 32 -94.6006 14.9004 -94.6006 -31.1992c0 -48 51 -70.5 92.2002 -32.6006c2.7998 2.5 7.09961 2.10059 9.2002 -0.899414z
|
||||
" />
|
||||
<glyph glyph-name="object-group" unicode=""
|
||||
d="M500 320h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v256h-12
|
||||
c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM448 384v-32h32v32h-32zM32 384v-32h32v32h-32zM64 0v32
|
||||
h-32v-32h32zM480 0v32h-32v-32h32zM440 64v256h-12c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h12zM404 256c6.62695 0 12 -5.37207 12 -12v-168
|
||||
c0 -6.62793 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37207 -12 12v52h-84c-6.62695 0 -12 5.37207 -12 12v168c0 6.62793 5.37305 12 12 12h200c6.62695 0 12 -5.37207 12 -12v-52h84zM136 280v-112h144v112h-144zM376 104v112h-56v-76
|
||||
c0 -6.62793 -5.37305 -12 -12 -12h-76v-24h144z" />
|
||||
<glyph glyph-name="object-ungroup" unicode="" horiz-adv-x="576"
|
||||
d="M564 224h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v24h-88v-12
|
||||
c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h72
|
||||
c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-12v-24h88v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM352 384v-32h32v32h-32zM352 128v-32h32v32h-32zM64 96v32h-32v-32h32zM64 352v32
|
||||
h-32v-32h32zM96 136h224v12c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-12zM224 0v32h-32v-32h32zM504 64v160h-12c-6.62695 0 -12 5.37305 -12 12v12
|
||||
h-88v-88h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-88v-24h12c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h12zM544 0v32h-32v-32h32zM544 256v32h-32v-32h32z" />
|
||||
<glyph glyph-name="sticky-note" unicode="" horiz-adv-x="448"
|
||||
d="M448 99.8936c0 -13.2451 -5.37012 -25.252 -14.0586 -33.9404l-83.8828 -83.8818c-8.68848 -8.68848 -20.6943 -14.0596 -33.9404 -14.0596h-268.118c-26.5098 0 -48 21.4902 -48 48v351.988c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-268.106z
|
||||
M320 19.8936l76.1182 76.1182h-76.1182v-76.1182zM400 368h-352v-351.988h224v104c0 13.2549 10.7451 24 24 24h104v223.988z" />
|
||||
<glyph glyph-name="clone" unicode=""
|
||||
d="M464 448c26.5098 0 48 -21.4902 48 -48v-320c0 -26.5098 -21.4902 -48 -48 -48h-48v-48c0 -26.5098 -21.4902 -48 -48 -48h-320c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h48v48c0 26.5098 21.4902 48 48 48h320zM362 -16c3.31152 0 6 2.68848 6 6
|
||||
v42h-224c-26.5098 0 -48 21.4902 -48 48v224h-42c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308zM458 80c3.31152 0 6 2.68848 6 6v308c0 3.31152 -2.68848 6 -6 6h-308c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308z" />
|
||||
<glyph glyph-name="hourglass" unicode="" horiz-adv-x="384"
|
||||
d="M368 400c0 -80.0996 -31.8984 -165.619 -97.1797 -208c64.9912 -42.1934 97.1797 -127.436 97.1797 -208h4c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-360c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h4
|
||||
c0 80.0996 31.8994 165.619 97.1797 208c-64.9912 42.1934 -97.1797 127.436 -97.1797 208h-4c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h360c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-4zM64 400
|
||||
c0 -101.621 57.3066 -184 128 -184s128 82.3799 128 184h-256zM320 -16c0 101.62 -57.3076 184 -128 184s-128 -82.3799 -128 -184h256z" />
|
||||
<glyph glyph-name="hand-rock" unicode=""
|
||||
d="M408.864 368.948c48.8213 20.751 103.136 -15.0723 103.136 -67.9111v-114.443c0 -15.3955 -3.08887 -30.3906 -9.18262 -44.5674l-42.835 -99.6562c-4.99707 -11.625 -3.98242 -18.8574 -3.98242 -42.3701c0 -17.6729 -14.3271 -32 -32 -32h-252
|
||||
c-17.6729 0 -32 14.3271 -32 32c0 27.3301 1.1416 29.2012 -3.11035 32.9033l-97.71 85.0811c-24.8994 21.6797 -39.1797 52.8926 -39.1797 85.6338v56.9531c0 47.4277 44.8457 82.0215 91.0459 71.1807c1.96094 55.751 63.5107 87.8262 110.671 60.8057
|
||||
c29.1895 31.0713 78.8604 31.4473 108.334 -0.0214844c32.7051 18.6846 76.4121 10.3096 98.8135 -23.5879zM464 186.594v114.445c0 34.29 -52 33.8232 -52 0.676758c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v26.751
|
||||
c0 34.457 -52 33.707 -52 0.676758v-27.4287c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v40.4658c0 34.3525 -52 33.8115 -52 0.677734v-41.1436c0 -8.83594 -7.16406 -16 -16 -16h-7c-8.83594 0 -16 7.16406 -16 16v26.751
|
||||
c0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83105 -7.17773 -15.9961 -16.0078 -15.9961c-4.0166 0 -7.68848 1.48242 -10.499 3.92969l-7 6.09473c-3.37012 2.93457 -5.49316 7.25293 -5.49316 12.0674v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531
|
||||
c0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c3.37891 7.82715 5.28223 16.501 5.28223 25.5625v0.0498047z" />
|
||||
<glyph glyph-name="hand-paper" unicode="" horiz-adv-x="448"
|
||||
d="M372.57 335.359c39.9062 5.63281 75.4297 -25.7393 75.4297 -66.3594v-131.564c-0.00292969 -15.7393 -1.80566 -30.9482 -5.19531 -45.666l-30.1836 -130.958c-3.34668 -14.5234 -16.2783 -24.8125 -31.1816 -24.8125h-222.897
|
||||
c-10.7539 0 -20.2588 5.28613 -26.0615 13.4316l-119.97 168.415c-21.2441 29.8203 -14.8047 71.3574 14.5498 93.1533c18.7754 13.9395 42.1309 16.2979 62.083 8.87109v126.13c0 44.0547 41.125 75.5439 82.4053 64.9834c23.8926 48.1963 92.3535 50.2471 117.982 0.74707
|
||||
c42.5186 11.1445 83.0391 -21.9346 83.0391 -65.5469v-10.8242zM399.997 137.437l-0.00195312 131.563c0 24.9492 -36.5703 25.5508 -36.5703 -0.691406v-76.3086c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v154.184
|
||||
c0 25.501 -36.5703 26.3633 -36.5703 0.691406v-154.875c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v188.309c0 25.501 -36.5703 26.3545 -36.5703 0.691406v-189c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16
|
||||
v153.309c0 25.501 -36.5713 26.3359 -36.5713 0.691406v-206.494c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832l-27.1279 38.0791c-14.3711 20.1709 -43.833 -2.33496 -29.3945 -22.6045l115.196 -161.697h201.92l27.3252 118.551
|
||||
c2.63086 11.417 3.96484 23.1553 3.96484 34.8857z" />
|
||||
<glyph glyph-name="hand-scissors" unicode=""
|
||||
d="M256 -32c-44.9561 0 -77.3428 43.2627 -64.0244 85.8535c-21.6484 13.71 -34.0156 38.7617 -30.3408 65.0068h-87.6348c-40.8037 0 -74 32.8105 -74 73.1406c0 40.3291 33.1963 73.1396 74 73.1396l94 -9.14062l-78.8496 18.6787
|
||||
c-38.3076 14.7422 -57.04 57.4707 -41.9424 95.1123c15.0303 37.4736 57.7549 55.7803 95.6416 41.2012l144.929 -55.7568c24.9551 30.5566 57.8086 43.9932 92.2178 24.7324l97.999 -54.8525c20.9746 -11.7393 34.0049 -33.8457 34.0049 -57.6904v-205.702
|
||||
c0 -30.7422 -21.4404 -57.5576 -51.7979 -64.5537l-118.999 -27.4268c-4.97168 -1.14648 -10.0889 -1.72949 -15.2031 -1.72949zM256 16.0127l70 -0.000976562c1.52441 0 2.99707 0.174805 4.42285 0.501953l119.001 27.4277
|
||||
c8.58203 1.97754 14.5762 9.29102 14.5762 17.7812v205.701c0 6.4873 -3.62109 12.542 -9.44922 15.8047l-98 54.8545c-8.13965 4.55566 -18.668 2.61914 -24.4873 -4.50781l-21.7646 -26.6475c-2.93457 -3.59375 -7.40332 -5.87305 -12.4004 -5.87305
|
||||
c-2.02246 0 -3.95703 0.375977 -5.73828 1.06152l-166.549 64.0908c-32.6543 12.5664 -50.7744 -34.5771 -19.2227 -46.7168l155.357 -59.7852c6 -2.30859 10.2539 -8.12402 10.2539 -14.9326v-11.6328c0 -8.83691 -7.16309 -16 -16 -16h-182
|
||||
c-34.375 0 -34.4297 -50.2803 0 -50.2803h182c8.83691 0 16 -7.16309 16 -16v-6.85645c0 -8.83691 -7.16309 -16 -16 -16h-28c-25.1221 0 -25.1592 -36.5674 0 -36.5674h28c8.83691 0 16 -7.16211 16 -16v-6.85547c0 -8.83691 -7.16309 -16 -16 -16
|
||||
c-25.1201 0 -25.1602 -36.5674 0 -36.5674z" />
|
||||
<glyph glyph-name="hand-lizard" unicode="" horiz-adv-x="576"
|
||||
d="M556.686 157.458c12.6357 -19.4863 19.3145 -42.0615 19.3145 -65.2871v-124.171h-224v71.582l-99.751 38.7871c-2.7832 1.08203 -5.70996 1.63086 -8.69727 1.63086h-131.552c-30.8789 0 -56 25.1211 -56 56c0 48.5234 39.4766 88 88 88h113.709l18.333 48h-196.042
|
||||
c-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709c0 0.0166016 -0.0439453 0.106445 -0.0439453 0.12207c0 14.3945 -4.24219 27.8057 -11.5439 39.0498l-146.358 225.715
|
||||
c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917c-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709
|
||||
c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8h131.552c0.0175781 0 0.0712891 -0.0273438 0.0888672 -0.0273438c9.16992 0 17.9404 -1.72461 26.0039 -4.86621l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z" />
|
||||
<glyph glyph-name="hand-spock" unicode=""
|
||||
d="M501.03 331.824c6.92773 -11.1826 10.9697 -24.4053 10.9697 -38.5146c0 -5.92676 -0.706055 -11.6885 -2.03809 -17.208l-57.623 -241.963c-13.2236 -56.1904 -63.707 -98.1387 -123.908 -98.1387h-0.352539h-107.455
|
||||
c-0.0761719 0 -0.193359 0.00195312 -0.270508 0.00195312c-40.9248 0 -78.1475 15.9814 -105.761 42.0391l-91.3652 85.9766c-14.3076 13.4434 -23.2246 32.5547 -23.2246 53.7168c0 19.5254 7.61035 37.2861 20.0254 50.4766
|
||||
c5.31836 5.66406 29.875 29.3926 68.1152 21.8477l-24.3594 82.1973c-1.97363 6.64844 -2.97656 13.6836 -2.97656 20.9688c0 38.6953 29.8926 70.4639 67.8262 73.4531c-0.246094 2.45117 -0.34082 4.85547 -0.34082 7.37207c0 34.4199 23.585 63.376 55.4619 71.5752
|
||||
c43.248 10.9785 80.5645 -17.7012 89.6602 -53.0723l13.6836 -53.207l4.64648 22.6602c6.99023 33.5186 36.6826 58.8037 72.2373 58.916c8.73438 0 56.625 -3.26953 70.7383 -54.0801c15.0664 0.710938 46.9199 -3.50977 66.3105 -35.0176zM463.271 287.219
|
||||
c7.86914 32.9844 -42.1211 45.2695 -50.0859 11.9219l-24.8008 -104.146c-4.38867 -18.4141 -31.7783 -11.8926 -28.0557 6.2168l28.5479 139.166c7.39844 36.0703 -43.3076 45.0703 -50.1182 11.9629l-31.791 -154.971
|
||||
c-3.54883 -17.3086 -28.2832 -18.0469 -32.7109 -0.804688l-47.3262 184.035c-8.43359 32.8105 -58.3691 20.2676 -49.8652 -12.8359l42.4414 -165.039c4.81641 -18.7207 -23.3711 -26.9121 -28.9648 -8.00781l-31.3438 105.779
|
||||
c-9.6875 32.6465 -59.1191 18.2578 -49.3867 -14.625l36.0137 -121.539c6.59375 -22.2441 10.1777 -45.7803 10.1777 -70.1523c0 -6.54297 -8.05664 -10.9355 -13.4824 -5.82617l-51.123 48.1074c-24.7852 23.4082 -60.0527 -14.1875 -35.2793 -37.4902l91.3691 -85.9805
|
||||
c19.0469 -17.9736 44.75 -28.998 72.9795 -28.998h0.157227h107.455c0.0732422 0 0.138672 0.0429688 0.212891 0.0429688c37.5791 0 69.1016 26.1416 77.3564 61.2168z" />
|
||||
<glyph glyph-name="hand-pointer" unicode="" horiz-adv-x="448"
|
||||
d="M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -5.24023 -0.600586 -10.3037 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286
|
||||
c-21.2588 0 -41.3682 10.4102 -53.791 27.8457l-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338
|
||||
c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289c27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285
|
||||
c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21
|
||||
c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938c-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175
|
||||
c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832zM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96
|
||||
c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6
|
||||
c-7.73242 0 -14 7.16309 -14 16z" />
|
||||
<glyph glyph-name="hand-peace" unicode="" horiz-adv-x="448"
|
||||
d="M362.146 256.024c42.5908 13.3184 85.8535 -19.0684 85.8535 -64.0244l-0.0117188 -70.001c-0.000976562 -5.24023 -0.600586 -10.3027 -1.72949 -15.2031l-27.4268 -118.999c-6.99707 -30.3564 -33.8105 -51.7969 -64.5547 -51.7969h-205.702
|
||||
c-23.8447 0 -45.9502 13.0303 -57.6904 34.0059l-54.8525 97.999c-19.2607 34.4092 -5.82422 67.2617 24.7324 92.2178l-55.7568 144.928c-14.5791 37.8867 3.72754 80.6113 41.2012 95.6416c37.6406 15.0977 80.3691 -3.63477 95.1123 -41.9424l18.6787 -78.8496
|
||||
l-9.14062 94c0 40.8037 32.8096 74 73.1396 74s73.1406 -33.1963 73.1406 -74v-87.6348c26.2451 3.6748 51.2959 -8.69238 65.0068 -30.3408zM399.987 122l-0.000976562 70c0 25.1602 -36.5674 25.1201 -36.5674 0c0 -8.83691 -7.16309 -16 -16 -16h-6.85547
|
||||
c-8.83789 0 -16 7.16309 -16 16v28c0 25.1592 -36.5674 25.1221 -36.5674 0v-28c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v182c0 34.4297 -50.2803 34.375 -50.2803 0v-182c0 -8.83691 -7.16309 -16 -16 -16h-11.6328
|
||||
c-6.80859 0 -12.624 4.25391 -14.9326 10.2539l-59.7842 155.357c-12.1396 31.5518 -59.2842 13.4326 -46.7168 -19.2227l64.0898 -166.549c0.685547 -1.78125 1.07812 -3.71875 1.07812 -5.74121c0 -4.99707 -2.2959 -9.46289 -5.88965 -12.3975l-26.6475 -21.7646
|
||||
c-7.12695 -5.81934 -9.06445 -16.3467 -4.50781 -24.4873l54.8535 -98c3.26367 -5.82812 9.31934 -9.44922 15.8057 -9.44922h205.701c8.49121 0 15.8037 5.99414 17.7812 14.5762l27.4277 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285z" />
|
||||
<glyph glyph-name="registered" unicode=""
|
||||
d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z
|
||||
M366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096c-0.00488281 0 -0.000976562 -0.0126953 -0.00585938 -0.0126953c-4.58594 0 -8.57422 2.58301 -10.5869 6.37305l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12
|
||||
h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304c0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094
|
||||
c20.9131 0 32.4307 11.5186 32.4316 32.4316c0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z" />
|
||||
<glyph glyph-name="calendar-plus" unicode="" horiz-adv-x="448"
|
||||
d="M336 156v-24c0 -6.59961 -5.40039 -12 -12 -12h-76v-76c0 -6.59961 -5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12v76h-76c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h76v76c0 6.59961 5.40039 12 12 12h24c6.59961 0 12 -5.40039 12 -12
|
||||
v-76h76c6.59961 0 12 -5.40039 12 -12zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40
|
||||
c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="calendar-minus" unicode="" horiz-adv-x="448"
|
||||
d="M124 120c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h200c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12h-200zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52
|
||||
c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="calendar-times" unicode="" horiz-adv-x="448"
|
||||
d="M311.7 73.2998l-17 -17c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-53.7002 53.7998l-53.7002 -53.6992c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-17 17c-4.7002 4.69922 -4.7002 12.2998 0 17l53.7002 53.6992l-53.7002 53.7002c-4.7002 4.7002 -4.7002 12.2998 0 17
|
||||
l17 17c4.7002 4.7002 12.2998 4.7002 17 0l53.7002 -53.7002l53.7002 53.7002c4.7002 4.7002 12.2998 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17l-53.7998 -53.7998l53.6992 -53.7002c4.80078 -4.7002 4.80078 -12.2998 0.100586 -17zM448 336v-352
|
||||
c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10
|
||||
v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="calendar-check" unicode="" horiz-adv-x="448"
|
||||
d="M400 384c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40
|
||||
c6.62695 0 12 -5.37305 12 -12v-52h48zM394 -16c3.31152 0 6 2.68848 6 6v298h-352v-298c0 -3.31152 2.68848 -6 6 -6h340zM341.151 184.65l-142.31 -141.169c-4.70508 -4.66699 -12.3027 -4.6377 -16.9707 0.0673828l-75.0908 75.6992
|
||||
c-4.66699 4.70508 -4.6377 12.3027 0.0673828 16.9707l22.7197 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l44.1035 -44.4609l111.072 110.182c4.70508 4.66699 12.3027 4.63672 16.9707 -0.0683594l22.5361 -22.7178
|
||||
c4.66699 -4.70508 4.63672 -12.3027 -0.0683594 -16.9697z" />
|
||||
<glyph glyph-name="map" unicode="" horiz-adv-x="576"
|
||||
d="M560.02 416c8.4502 0 15.9805 -6.83008 15.9805 -16.0195v-346.32c0 -13.4707 -8.32422 -24.9951 -20.1201 -29.71l-151.83 -52.8105c-6.23242 -2.02832 -12.9023 -3.12305 -19.8076 -3.12305c-7.07324 0 -13.8799 1.15039 -20.2422 3.27344l-172 60.71l-170.05 -62.8398
|
||||
c-1.99023 -0.790039 -4 -1.16016 -5.95996 -1.16016c-8.45996 0 -15.9902 6.83008 -15.9902 16.0195v346.32c0.00292969 13.4697 8.32617 24.9932 20.1201 29.71l151.83 52.8105c6.43945 2.08984 13.1201 3.13965 19.8096 3.13965
|
||||
c7.06641 -0.00292969 13.8789 -1.16602 20.2402 -3.28027l172 -60.7197h0.00976562l170.05 62.8398c1.98047 0.790039 4 1.16016 5.95996 1.16016zM224 357.58v-285.97l128 -45.1904v285.97zM48 29.9502l127.36 47.0801l0.639648 0.229492v286.2l-128 -44.5303v-288.979z
|
||||
M528 65.0801v288.97l-127.36 -47.0693l-0.639648 -0.240234v-286.19z" />
|
||||
<glyph glyph-name="comment-alt" unicode=""
|
||||
d="M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.5996c-2.19922 -1.7002 -4.69922 -2.40039 -7.09961 -2.40039c-6.2002 0 -12 4.90039 -12 12v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z
|
||||
M464 96v288c0 8.7998 -7.2002 16 -16 16h-384c-8.7998 0 -16 -7.2002 -16 -16v-288c0 -8.7998 7.2002 -16 16 -16h144v-60l67.2002 50.4004l12.7998 9.59961h160c8.7998 0 16 7.2002 16 16z" />
|
||||
<glyph glyph-name="pause-circle" unicode=""
|
||||
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48
|
||||
c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16zM240 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16z" />
|
||||
<glyph glyph-name="stop-circle" unicode=""
|
||||
d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-160
|
||||
c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16z" />
|
||||
<glyph glyph-name="handshake" unicode="" horiz-adv-x="640"
|
||||
d="M519.2 320.1h120.8v-255.699h-64c-17.5 0 -31.7998 14.1992 -31.9004 31.6992h-57.8994c-1.7998 -8.19922 -5.2998 -16.0996 -10.9004 -23l-26.2002 -32.2998c-15.7998 -19.3994 -41.8994 -25.5 -64 -16.7998c-13.5 -16.5996 -30.5996 -24 -48.7998 -24
|
||||
c-15.0996 0 -28.5996 5.09961 -41.0996 15.9004c-31.7998 -21.9004 -74.7002 -21.3008 -105.601 3.7998l-84.5996 76.3994h-9.09961c-0.100586 -17.5 -14.3008 -31.6992 -31.9004 -31.6992h-64v255.699h118l47.5996 47.6006c10.5 10.3994 24.8008 16.2998 39.6006 16.2998
|
||||
h226.8c15.4326 0 29.4326 -6.22168 39.5996 -16.2998zM48 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM438 103.3c2.7002 3.40039 2.2002 8.5 -1.2002 11.2998l-108.2 87.8008l-8.19922 -7.5
|
||||
c-40.3008 -36.8008 -86.7002 -11.8008 -101.5 4.39941c-26.7002 29 -25 74.4004 4.39941 101.3l38.7002 35.5h-56.7002c-2 -0.799805 -3.7002 -1.5 -5.7002 -2.2998l-61.6992 -61.5996h-41.9004v-128.101h27.7002l97.2998 -88
|
||||
c16.0996 -13.0996 41.4004 -10.5 55.2998 6.60059l15.6006 19.2002l36.7998 -31.5c3 -2.40039 12 -4.90039 18 2.39941l30 36.5l23.8994 -19.3994c3.5 -2.80078 8.5 -2.2002 11.3008 1.19922zM544 144.1v128h-44.7002l-61.7002 61.6006
|
||||
c-1.39941 1.5 -3.39941 2.2998 -5.5 2.2998l-83.6992 -0.200195c-10 0 -19.6006 -3.7002 -27 -10.5l-65.6006 -60.0996c-9.7002 -8.7998 -10.5 -24 -1.2002 -33.9004c8.90039 -9.39941 25.1006 -8.7002 34.6006 0l55.2002 50.6006c6.5 5.89941 16.5996 5.5 22.5996 -1
|
||||
l10.9004 -11.7002c6 -6.5 5.5 -16.6006 -1 -22.6006l-12.5 -11.3994l102.699 -83.4004c2.80078 -2.2998 5.40039 -4.89941 7.7002 -7.7002h69.2002zM592 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z
|
||||
" />
|
||||
<glyph glyph-name="envelope-open" unicode=""
|
||||
d="M494.586 283.484c10.6523 -8.80762 17.4141 -22.1064 17.4141 -36.9932v-262.491c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v262.515c0 14.9355 6.80469 28.2705 17.5146 37.0771c4.08008 3.35449 110.688 89.0996 135.15 108.549
|
||||
c22.6992 18.1426 60.1299 55.8594 103.335 55.8594c43.4365 0 81.2314 -38.1914 103.335 -55.8594c23.5283 -18.707 130.554 -104.773 135.251 -108.656zM464 -10v253.632c0 0.00195312 0.00390625 0.000976562 0.00390625 0.00292969
|
||||
c0 1.88184 -0.869141 3.56152 -2.22754 4.66016c-15.8633 12.8232 -108.793 87.5752 -132.366 106.316c-17.5527 14.0195 -49.7168 45.3887 -73.4102 45.3887c-23.6016 0 -55.2451 -30.8799 -73.4102 -45.3887c-23.5713 -18.7393 -116.494 -93.4795 -132.364 -106.293
|
||||
c-1.40918 -1.13965 -2.22559 -2.85254 -2.22559 -4.66504v-253.653c0 -3.31152 2.68848 -6 6 -6h404c3.31152 0 6 2.68848 6 6zM432.009 177.704c4.24902 -5.15918 3.46484 -12.7949 -1.74512 -16.9814c-28.9746 -23.2822 -59.2734 -47.5967 -70.9287 -56.8623
|
||||
c-22.6992 -18.1436 -60.1299 -55.8604 -103.335 -55.8604c-43.4521 0 -81.2871 38.2373 -103.335 55.8604c-11.2793 8.9668 -41.7441 33.4131 -70.9268 56.8643c-5.20996 4.1875 -5.99316 11.8223 -1.74512 16.9814l15.2578 18.5283
|
||||
c4.17773 5.07227 11.6572 5.84277 16.7793 1.72559c28.6182 -23.001 58.5654 -47.0352 70.5596 -56.5713c17.5527 -14.0195 49.7168 -45.3887 73.4102 -45.3887c23.6016 0 55.2461 30.8799 73.4102 45.3887c11.9941 9.53516 41.9434 33.5703 70.5625 56.5684
|
||||
c5.12207 4.11621 12.6016 3.3457 16.7783 -1.72656z" />
|
||||
<glyph glyph-name="address-book" unicode="" horiz-adv-x="448"
|
||||
d="M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48
|
||||
h320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM368 -16v416h-320v-416h320zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM118.4 64
|
||||
c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002
|
||||
h-179.199z" />
|
||||
<glyph glyph-name="address-card" unicode="" horiz-adv-x="576"
|
||||
d="M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v352h-480v-352h480zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z
|
||||
M118.4 64c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002
|
||||
c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199zM360 128c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 192c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112
|
||||
c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 256c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112z" />
|
||||
<glyph glyph-name="user-circle" unicode="" horiz-adv-x="496"
|
||||
d="M248 344c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM248 200c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8
|
||||
c49.7002 0 95.0996 18.2998 130.1 48.4004c-14.8994 23 -40.3994 38.5 -69.5996 39.5c-20.7998 -6.5 -40.5996 -9.60059 -60.5 -9.60059s-39.7002 3.2002 -60.5 9.60059c-29.2002 -0.900391 -54.7002 -16.5 -69.5996 -39.5c35 -30.1006 80.3994 -48.4004 130.1 -48.4004z
|
||||
M410.7 76.0996c23.3994 32.7002 37.2998 72.7002 37.2998 115.9c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -43.2002 13.9004 -83.2002 37.2998 -115.9c24.5 31.4004 62.2002 51.9004 105.101 51.9004c10.1992 0 26.0996 -9.59961 57.5996 -9.59961
|
||||
c31.5996 0 47.4004 9.59961 57.5996 9.59961c43 0 80.7002 -20.5 105.101 -51.9004z" />
|
||||
<glyph glyph-name="id-badge" unicode="" horiz-adv-x="384"
|
||||
d="M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM336 -16v416h-288v-416h288zM144 336c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16
|
||||
h-96zM192 160c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM102.4 32c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8
|
||||
c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199z" />
|
||||
<glyph glyph-name="id-card" unicode="" horiz-adv-x="576"
|
||||
d="M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v288h-480v-288h32.7998c-1 4.5 -0.799805 -3.59961 -0.799805 22.4004c0 31.7998 30.0996 57.5996 67.2002 57.5996
|
||||
c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996c0 -26 0.0996094 -17.9004 -0.799805 -22.4004h224.8zM360 96c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16
|
||||
c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 160c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 224c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112
|
||||
c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM192 128c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z" />
|
||||
<glyph glyph-name="window-maximize" unicode=""
|
||||
d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v234h-416v-234c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="window-minimize" unicode=""
|
||||
d="M480 -32h-448c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h448c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
|
||||
<glyph glyph-name="window-restore" unicode=""
|
||||
d="M464 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-48v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h48v48c0 26.5 21.5 48 48 48h320zM368 -16v208h-320v-208h320zM464 80v320h-320v-48h224
|
||||
c26.5 0 48 -21.5 48 -48v-224h48z" />
|
||||
<glyph glyph-name="snowflake" unicode="" horiz-adv-x="448"
|
||||
d="M440.1 92.7998c7.60059 -4.39941 10.1006 -14.2002 5.5 -21.7002l-7.89941 -13.8994c-4.40039 -7.7002 -14 -10.2998 -21.5 -5.90039l-39.2002 23l9.09961 -34.7002c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.5996l-15.2002 -4.09961
|
||||
c-8.39941 -2.30078 -17.0996 2.7998 -19.2998 11.2998l-21.2998 81l-71.9004 42.2002v-84.5l58.2998 -59.3008c6.10059 -6.19922 6.10059 -16.3994 0 -22.5996l-11.0996 -11.2998c-6.09961 -6.2002 -16.0996 -6.2002 -22.2002 0l-24.8994 25.3994v-46.0996
|
||||
c0 -8.7998 -7 -16 -15.7002 -16h-15.7002c-8.7002 0 -15.7002 7.2002 -15.7002 16v45.9004l-24.8994 -25.4004c-6.10059 -6.2002 -16.1006 -6.2002 -22.2002 0l-11.1006 11.2998c-6.09961 6.2002 -6.09961 16.4004 0 22.6006l58.3008 59.2998v84.5l-71.9004 -42.2002
|
||||
l-21.2998 -81c-2.2998 -8.5 -10.9004 -13.5996 -19.2998 -11.2998l-15.2002 4.09961c-8.40039 2.2998 -13.2998 11.1006 -11.1006 19.6006l9.10059 34.6992l-39.2002 -23c-7.5 -4.39941 -17.2002 -1.7998 -21.5 5.90039l-7.90039 13.9004
|
||||
c-4.2998 7.69922 -1.69922 17.5 5.80078 21.8994l39.1992 23l-34.0996 9.2998c-8.40039 2.30078 -13.2998 11.1006 -11.0996 19.6006l4.09961 15.5c2.2998 8.5 10.9004 13.5996 19.2998 11.2998l79.7002 -21.7002l71.9004 42.2002l-71.9004 42.2002l-79.7002 -21.7002
|
||||
c-8.39941 -2.2998 -17.0996 2.7998 -19.2998 11.2998l-4.09961 15.5c-2.30078 8.5 2.69922 17.2998 11.0996 19.6006l34.0996 9.09961l-39.1992 23c-7.60059 4.5 -10.1006 14.2002 -5.80078 21.9004l7.90039 13.8994c4.40039 7.7002 14 10.2998 21.5 5.90039l39.2002 -23
|
||||
l-9.10059 34.7002c-2.2998 8.5 2.7002 17.2998 11.1006 19.5996l15.2002 4.09961c8.39941 2.30078 17.0996 -2.7998 19.2998 -11.2998l21.2998 -81l71.9004 -42.2002v84.5l-58.3008 59.3008c-6.09961 6.19922 -6.09961 16.3994 0 22.5996l11.5 11.2998
|
||||
c6.10059 6.2002 16.1006 6.2002 22.2002 0l24.9004 -25.3994v46.0996c0 8.7998 7 16 15.7002 16h15.6992c8.7002 0 15.7002 -7.2002 15.7002 -16v-45.9004l24.9004 25.4004c6.09961 6.2002 16.0996 6.2002 22.2002 0l11.0996 -11.2998
|
||||
c6.09961 -6.2002 6.09961 -16.4004 0 -22.6006l-58.2998 -59.2998v-84.5l71.8994 42.2002l21.3008 81c2.2998 8.5 10.8994 13.5996 19.2998 11.2998l15.2002 -4.09961c8.39941 -2.2998 13.2998 -11.1006 11.0996 -19.6006l-9.09961 -34.6992l39.1992 23
|
||||
c7.5 4.39941 17.2002 1.7998 21.5 -5.90039l7.90039 -13.9004c4.2998 -7.69922 1.7002 -17.5 -5.7998 -21.8994l-39.2002 -23l34.0996 -9.2998c8.40039 -2.30078 13.3008 -11.1006 11.1006 -19.6006l-4.10059 -15.5c-2.2998 -8.5 -10.8994 -13.5996 -19.2998 -11.2998
|
||||
l-79.7002 21.7002l-71.8994 -42.2002l71.7998 -42.2002l79.7002 21.7002c8.39941 2.2998 17.0996 -2.7998 19.2998 -11.2998l4.09961 -15.5c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.6006l-34.0996 -9.2998z" />
|
||||
<glyph glyph-name="trash-alt" unicode="" horiz-adv-x="448"
|
||||
d="M268 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216c0 -6.62305 -5.37695 -12 -12 -12h-24zM432 368c8.83105 0 16 -7.16895 16 -16v-16c0 -8.83105 -7.16895 -16 -16 -16h-16v-336
|
||||
c0 -26.4922 -21.5078 -48 -48 -48h-288c-26.4922 0 -48 21.5078 -48 48v336h-16c-8.83105 0 -16 7.16895 -16 16v16c0 8.83105 7.16895 16 16 16h82.4102l34.0195 56.7002c8.39258 13.9844 23.6777 23.2998 41.1602 23.2998h100.82
|
||||
c0.0078125 0 -0.015625 0.0517578 -0.0078125 0.0517578c17.4824 0 32.7949 -9.36719 41.1875 -23.3516l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-1.0498 1.74707 -2.95898 2.91016 -5.14355 2.91016h-0.00683594h-94
|
||||
c-0.00585938 0 -0.00683594 0.00683594 -0.0126953 0.00683594c-2.18457 0 -4.09766 -1.16992 -5.14746 -2.91699zM368 -16v336h-288v-336h288zM156 32c-6.62305 0 -12 5.37695 -12 12v216c0 6.62305 5.37695 12 12 12h24c6.62305 0 12 -5.37695 12 -12v-216
|
||||
c0 -6.62305 -5.37695 -12 -12 -12h-24z" />
|
||||
<glyph glyph-name="images" unicode="" horiz-adv-x="576"
|
||||
d="M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-48h-10c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v10h48zM522 368h-372
|
||||
c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v244c0 3.31152 -2.68848 6 -6 6zM528 416c26.5098 0 48 -21.4902 48 -48v-256c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256
|
||||
c0 26.5098 21.4902 48 48 48h384zM264 304c0 -22.0908 -17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40s40 -17.9092 40 -40zM192 208l39.5146 39.5146c4.68652 4.68652 12.2842 4.68652 16.9717 0l39.5137 -39.5146l103.515 103.515
|
||||
c4.68652 4.68652 12.2842 4.68652 16.9717 0l71.5137 -71.5146v-80h-288v48z" />
|
||||
<glyph glyph-name="clipboard" unicode="" horiz-adv-x="384"
|
||||
d="M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24
|
||||
s-10.7002 24 -24 24zM336 -10v340c0 3.2998 -2.7002 6 -6 6h-42v-36c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v36h-42c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h276c3.2998 0 6 2.7002 6 6z" />
|
||||
<glyph glyph-name="arrow-alt-circle-down" unicode=""
|
||||
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM224 308c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-116
|
||||
h67c10.7002 0 16.0996 -12.9004 8.5 -20.5l-99 -99c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-99 99c-7.5 7.59961 -2.2002 20.5 8.5 20.5h67v116z" />
|
||||
<glyph glyph-name="arrow-alt-circle-left" unicode=""
|
||||
d="M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM456 192c0 110.5 -89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200zM384 212v-40c0 -6.59961 -5.40039 -12 -12 -12h-116v-67
|
||||
c0 -10.7002 -12.9004 -16 -20.5 -8.5l-99 99c-4.7002 4.7002 -4.7002 12.2998 0 17l99 99c7.59961 7.59961 20.5 2.2002 20.5 -8.5v-67h116c6.59961 0 12 -5.40039 12 -12z" />
|
||||
<glyph glyph-name="arrow-alt-circle-right" unicode=""
|
||||
d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM128 172v40c0 6.59961 5.40039 12 12 12h116v67
|
||||
c0 10.7002 12.9004 16 20.5 8.5l99 -99c4.7002 -4.7002 4.7002 -12.2998 0 -17l-99 -99c-7.59961 -7.59961 -20.5 -2.2002 -20.5 8.5v67h-116c-6.59961 0 -12 5.40039 -12 12z" />
|
||||
<glyph glyph-name="arrow-alt-circle-up" unicode=""
|
||||
d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM256 392c-110.5 0 -200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200zM276 64h-40c-6.59961 0 -12 5.40039 -12 12v116h-67
|
||||
c-10.7002 0 -16 12.9004 -8.5 20.5l99 99c4.7002 4.7002 12.2998 4.7002 17 0l99 -99c7.59961 -7.59961 2.2002 -20.5 -8.5 -20.5h-67v-116c0 -6.59961 -5.40039 -12 -12 -12z" />
|
||||
<glyph glyph-name="gem" unicode="" horiz-adv-x="576"
|
||||
d="M464 448c4.09961 0 7.7998 -2 10.0996 -5.40039l99.9004 -147.199c2.90039 -4.40039 2.59961 -10.1006 -0.700195 -14.2002l-276 -340.8c-4.7998 -5.90039 -13.7998 -5.90039 -18.5996 0l-276 340.8c-3.2998 4 -3.60059 9.7998 -0.700195 14.2002l100 147.199
|
||||
c2.2002 3.40039 6 5.40039 10 5.40039h352zM444.7 400h-56.7998l51.6992 -96h68.4004zM242.6 400l-51.5996 -96h194l-51.7002 96h-90.7002zM131.3 400l-63.2998 -96h68.4004l51.6992 96h-56.7998zM88.2998 256l119.7 -160l-68.2998 160h-51.4004zM191.2 256l96.7998 -243.3
|
||||
l96.7998 243.3h-193.6zM368 96l119.6 160h-51.3994z" />
|
||||
<glyph glyph-name="money-bill-alt" unicode="" horiz-adv-x="640"
|
||||
d="M320 304c53.0195 0 96 -50.1396 96 -112c0 -61.8701 -43 -112 -96 -112c-53.0195 0 -96 50.1504 -96 112c0 61.8604 42.9805 112 96 112zM360 136v16c0 4.41992 -3.58008 8 -8 8h-16v88c0 4.41992 -3.58008 8 -8 8h-13.5801
|
||||
c-4.91113 0 -9.50586 -1.49316 -13.3096 -4.03027l-15.3301 -10.2197c-2.15332 -1.43262 -3.55957 -3.88379 -3.55957 -6.66113c0 -1.6377 0.493164 -3.16113 1.33887 -4.42871l8.88086 -13.3105c1.43164 -2.15234 3.88379 -3.55957 6.66113 -3.55957
|
||||
c1.6377 0 3.16016 0.494141 4.42871 1.33984l0.469727 0.310547v-55.4404h-16c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h64c4.41992 0 8 3.58008 8 8zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576
|
||||
c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM592 112v160c-35.3496 0 -64 28.6504 -64 64h-416c0 -35.3496 -28.6504 -64 -64 -64v-160c35.3496 0 64 -28.6504 64 -64h416c0 35.3496 28.6504 64 64 64z" />
|
||||
<glyph glyph-name="window-close" unicode=""
|
||||
d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v340c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z
|
||||
M356.5 253.4l-61.4004 -61.4004l61.4004 -61.4004c4.59961 -4.59961 4.59961 -12.0996 0 -16.7998l-22.2998 -22.2998c-4.60059 -4.59961 -12.1006 -4.59961 -16.7998 0l-61.4004 61.4004l-61.4004 -61.4004c-4.59961 -4.59961 -12.0996 -4.59961 -16.7998 0
|
||||
l-22.2998 22.2998c-4.59961 4.60059 -4.59961 12.1006 0 16.7998l61.4004 61.4004l-61.4004 61.4004c-4.59961 4.59961 -4.59961 12.0996 0 16.7998l22.2998 22.2998c4.60059 4.59961 12.1006 4.59961 16.7998 0l61.4004 -61.4004l61.4004 61.4004
|
||||
c4.59961 4.59961 12.0996 4.59961 16.7998 0l22.2998 -22.2998c4.7002 -4.60059 4.7002 -12.1006 0 -16.7998z" />
|
||||
<glyph glyph-name="comment-dots" unicode=""
|
||||
d="M144 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM256 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM368 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32
|
||||
s-32 14.2998 -32 32s14.2998 32 32 32zM256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5
|
||||
c-3.80078 8.7998 -2 19 4.59961 26c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160
|
||||
c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z" />
|
||||
<glyph glyph-name="smile-wink" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM365.8 138.4c10.2002 -8.5 11.6006 -23.6006 3.10059 -33.8008
|
||||
c-30 -36 -74.1006 -56.5996 -120.9 -56.5996s-90.9004 20.5996 -120.9 56.5996c-8.39941 10.2002 -7.09961 25.3008 3.10059 33.8008c10.0996 8.39941 25.2998 7.09961 33.7998 -3.10059c20.7998 -25.0996 51.5 -39.3994 84 -39.3994s63.2002 14.3994 84 39.3994
|
||||
c8.5 10.2002 23.5996 11.6006 33.7998 3.10059zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 268c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008l-9.5 8.5
|
||||
c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996z" />
|
||||
<glyph glyph-name="angry" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 136c33.5996 0 65.2002 -14.7998 86.7998 -40.5996
|
||||
c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008c-10.6006 -8.89941 -25.7002 -6.69922 -33.7998 3c-24.8008 29.7002 -75 29.7002 -99.8008 0c-8.5 -10.1992 -23.5996 -11.5 -33.7998 -3s-11.5996 23.6006 -3.09961 33.8008
|
||||
c21.5996 25.7998 53.2002 40.5996 86.7998 40.5996zM200 208c0 -17.7002 -14.2998 -32.0996 -32 -32.0996s-32 14.2998 -32 32c0 6.19922 2.2002 11.6992 5.2998 16.5996l-28.2002 8.5c-12.6992 3.7998 -19.8994 17.2002 -16.0996 29.9004
|
||||
c3.7998 12.6992 17.0996 20 29.9004 16.0996l80 -24c12.6992 -3.7998 19.8994 -17.2002 16.0996 -29.9004c-3.09961 -10.3994 -12.7002 -17.0996 -23 -17.0996zM399 262.9c3.7998 -12.7002 -3.40039 -26.1006 -16.0996 -29.8008l-28.2002 -8.5
|
||||
c3.09961 -4.89941 5.2998 -10.3994 5.2998 -16.5996c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c-10.2998 0 -19.9004 6.7002 -23 17.0996c-3.7998 12.7002 3.40039 26.1006 16.0996 29.9004l80 24c12.8008 3.7998 26.1006 -3.40039 29.9004 -16.0996z" />
|
||||
<glyph glyph-name="dizzy" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM214.2 209.9
|
||||
c-7.90039 -7.90039 -20.5 -7.90039 -28.4004 -0.200195l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998
|
||||
c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.9004c7.7998 7.7998 20.5 7.7998 28.2998 0s7.7998 -20.5 0 -28.2998l-17.9004 -17.9004l17.9004 -17.7998c7.7998 -7.7998 7.7998 -20.5 0 -28.2998zM374.2 302.1
|
||||
c7.7002 -7.7998 7.7002 -20.3994 0 -28.1992l-17.9004 -17.9004l17.7998 -18c7.80078 -7.7998 7.80078 -20.5 0 -28.2998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0
|
||||
c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.7998c7.7998 7.80078 20.5 7.80078 28.2998 0zM248 176
|
||||
c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64z" />
|
||||
<glyph glyph-name="flushed" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM344 304c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80
|
||||
s-80 35.7998 -80 80s35.7998 80 80 80zM344 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM232 224c0 -44.2002 -35.7998 -80 -80 -80
|
||||
s-80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80zM152 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM312 104
|
||||
c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z" />
|
||||
<glyph glyph-name="frown-open" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32
|
||||
s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 160c35.5996 0 88.7998 -21.2998 95.7998 -61.2002c2 -11.7998 -9.09961 -21.5996 -20.5 -18.0996
|
||||
c-31.2002 9.59961 -59.3994 15.2998 -75.2998 15.2998s-44.0996 -5.7002 -75.2998 -15.2998c-11.5 -3.40039 -22.5 6.2998 -20.5 18.0996c7 39.9004 60.2002 61.2002 95.7998 61.2002z" />
|
||||
<glyph glyph-name="grimace" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM344 192c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-192c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48
|
||||
h192zM176 96v24h-40v-8c0 -8.7998 7.2002 -16 16 -16h24zM176 136v24h-24c-8.7998 0 -16 -7.2002 -16 -16v-8h40zM240 96v24h-48v-24h48zM240 136v24h-48v-24h48zM304 96v24h-48v-24h48zM304 136v24h-48v-24h48zM360 112v8h-40v-24h24c8.7998 0 16 7.2002 16 16zM360 136v8
|
||||
c0 8.7998 -7.2002 16 -16 16h-24v-24h40z" />
|
||||
<glyph glyph-name="grin" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
|
||||
c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
|
||||
<glyph glyph-name="grin-alt" unicode="" horiz-adv-x="496"
|
||||
d="M200.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56
|
||||
c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM328.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0
|
||||
c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200
|
||||
s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006
|
||||
s79.7002 4.7998 105.6 13.1006z" />
|
||||
<glyph glyph-name="grin-beam" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
|
||||
c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM117.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
|
||||
c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996
|
||||
l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002zM277.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998
|
||||
c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002z" />
|
||||
<glyph glyph-name="grin-beam-sweat" unicode="" horiz-adv-x="496"
|
||||
d="M440 288c-29.5 0 -53.2998 26.2998 -53.2998 58.7002c0 25 31.7002 75.5 46.2002 97.2998c3.5 5.2998 10.5996 5.2998 14.1992 0c14.5 -21.7998 46.2002 -72.2998 46.2002 -97.2998c0 -32.4004 -23.7998 -58.7002 -53.2998 -58.7002zM248 48
|
||||
c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM378.3 216.3
|
||||
c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
|
||||
c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM483.6 269.2c8 -24.2998 12.4004 -50.2002 12.4004 -77.2002c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248
|
||||
c45.7002 0 88.4004 -12.5996 125.2 -34.2002c-10.9004 -21.5996 -15.5 -36.2002 -17.2002 -45.7002c-31.2002 20.1006 -68.2002 31.9004 -108 31.9004c-110.3 0 -200 -89.7002 -200 -200s89.7002 -200 200 -200s200 89.7002 200 200
|
||||
c0 22.5 -3.90039 44.0996 -10.7998 64.2998c0.399414 0 21.7998 -2.7998 46.3994 12.9004zM168 258.6c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998
|
||||
c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z" />
|
||||
<glyph glyph-name="grin-hearts" unicode="" horiz-adv-x="496"
|
||||
d="M353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM200.8 192.3
|
||||
l-70.2002 18.1006c-20.3994 5.2998 -31.8994 27 -24.1992 47.1992c6.69922 17.7002 26.6992 26.7002 44.8994 22l7.10059 -1.89941l2 7.09961c5.09961 18.1006 22.8994 30.9004 41.5 27.9004c21.3994 -3.40039 34.3994 -24.2002 28.7998 -44.5l-19.4004 -69.9004
|
||||
c-1.2998 -4.5 -6 -7.2002 -10.5 -6zM389.6 257.6c7.7002 -20.1992 -3.7998 -41.7998 -24.1992 -47.0996l-70.2002 -18.2002c-4.60059 -1.2002 -9.2998 1.5 -10.5 6l-19.4004 69.9004c-5.59961 20.2998 7.40039 41.0996 28.7998 44.5c18.7002 3 36.5 -9.7998 41.5 -27.9004
|
||||
l2 -7.09961l7.10059 1.89941c18.2002 4.7002 38.2002 -4.39941 44.8994 -22zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200
|
||||
s89.7002 -200 200 -200z" />
|
||||
<glyph glyph-name="grin-squint" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
|
||||
c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM118.9 184.2c-3.80078 4.39941 -3.90039 11 -0.100586 15.5l33.6006 40.2998
|
||||
l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5c3.89941 4.40039 10.1992 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5zM361.8 181.7
|
||||
l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5.10059 2.90039 11.5 1.90039 15.2998 -2.5c3.80078 -4.5 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5
|
||||
c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5z" />
|
||||
<glyph glyph-name="grin-squint-tears" unicode=""
|
||||
d="M117.1 63.9004c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998
|
||||
c16.8994 16.9004 75.0996 26.9004 100.899 30.6006zM75.9004 105.6c-19.6006 -3.89941 -35.1006 -8.09961 -47.3008 -12.1992c-39.2998 90.5996 -22.0996 199.899 52 274c48.5 48.3994 111.9 72.5996 175.4 72.5996c38.9004 0 77.7998 -9.2002 113.2 -27.4004
|
||||
c-4 -12.1992 -8.2002 -28 -12 -48.2998c-30.4004 17.9004 -65 27.7002 -101.2 27.7002c-53.4004 0 -103.6 -20.7998 -141.4 -58.5996c-61.5996 -61.5 -74.2998 -153.4 -38.6992 -227.801zM428.2 293.2c20.2998 3.89941 36.2002 8 48.5 12
|
||||
c47.8994 -93.2002 32.8994 -210.5 -45.2002 -288.601c-48.5 -48.3994 -111.9 -72.5996 -175.4 -72.5996c-33.6992 0 -67.2998 7 -98.6992 20.5996c4.19922 12.2002 8.2998 27.7002 12.1992 47.2002c26.6006 -12.7998 55.9004 -19.7998 86.4004 -19.7998
|
||||
c53.4004 0 103.6 20.7998 141.4 58.5996c65.6992 65.7002 75.7998 166 30.7998 242.601zM394.9 320.1c-6.30078 -0.899414 -11.7002 4.5 -10.9004 10.9004c3.7002 25.7998 13.7002 84 30.5996 100.9c22 21.8994 57.9004 21.5 80.3008 -0.900391
|
||||
c22.3994 -22.4004 22.7998 -58.4004 0.899414 -80.2998c-16.8994 -16.9004 -75.0996 -26.9004 -100.899 -30.6006zM207.9 211.8c3 -3 4.19922 -7.2998 3.19922 -11.5l-22.5996 -90.5c-1.40039 -5.39941 -6.2002 -9.09961 -11.7002 -9.09961h-0.899414
|
||||
c-5.80078 0.5 -10.5 5.09961 -11 10.8994l-4.80078 52.3008l-52.2998 4.7998c-5.7998 0.5 -10.3994 5.2002 -10.8994 11c-0.400391 5.89941 3.39941 11.2002 9.09961 12.5996l90.5 22.7002c4.2002 1 8.40039 -0.200195 11.4004 -3.2002zM247.6 236.9
|
||||
c-0.0996094 0 -6.39941 -1.80078 -11.3994 3.19922c-3 3 -4.2002 7.30078 -3.2002 11.4004l22.5996 90.5c1.40039 5.7002 7 9.2002 12.6006 9.09961c5.7998 -0.5 10.5 -5.09961 11 -10.8994l4.7998 -52.2998l52.2998 -4.80078c5.7998 -0.5 10.4004 -5.19922 10.9004 -11
|
||||
c0.399414 -5.89941 -3.40039 -11.1992 -9.10059 -12.5996zM299.6 148.4c29.1006 29.0996 53 59.5996 65.3008 83.7998c4.89941 9.2998 17.5996 9.89941 23.3994 1.7002c27.7002 -38.9004 6.10059 -106.9 -30.5996 -143.7s-104.8 -58.2998 -143.7 -30.6006
|
||||
c-8.2998 5.90039 -7.5 18.6006 1.7002 23.4004c24.2002 12.5 54.7998 36.2998 83.8994 65.4004z" />
|
||||
<glyph glyph-name="grin-stars" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008
|
||||
c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM125.7 200.9l6.09961 34.8994l-25.3994 24.6006
|
||||
c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006l34.9004 -5c6.19922 -1 8.7998 -8.69922 4.2998 -13.1992l-25.4004 -24.6006l6 -34.8994c1 -6.2002 -5.39941 -11 -11 -7.90039
|
||||
l-31.2998 16.2998l-31.2998 -16.2998c-5.60059 -3.09961 -12 1.7002 -11 7.90039zM385.4 273.6c6.19922 -1 8.89941 -8.59961 4.39941 -13.1992l-25.3994 -24.6006l6 -34.8994c1 -6.2002 -5.40039 -11 -11 -7.90039l-31.3008 16.2998l-31.2998 -16.2998
|
||||
c-5.59961 -3.09961 -12 1.7002 -11 7.90039l6 34.8994l-25.3994 24.6006c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006z" />
|
||||
<glyph glyph-name="grin-tears" unicode="" horiz-adv-x="640"
|
||||
d="M117.1 191.9c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998c16.8994 16.9004 75.0996 26.9004 100.899 30.6006
|
||||
zM623.8 161.3c21.9004 -21.8994 21.5 -57.8994 -0.799805 -80.2002c-22.4004 -22.3994 -58.4004 -22.7998 -80.2998 -0.899414c-16.9004 16.8994 -26.9004 75.0996 -30.6006 100.899c-0.899414 6.30078 4.5 11.7002 10.8008 10.8008
|
||||
c25.7998 -3.7002 84 -13.7002 100.899 -30.6006zM497.2 99.5996c12.3994 -37.2998 25.0996 -43.7998 28.2998 -46.5c-44.5996 -65.7998 -120 -109.1 -205.5 -109.1s-160.9 43.2998 -205.5 109.1c3.09961 2.60059 15.7998 9.10059 28.2998 46.5
|
||||
c33.4004 -63.8994 100.3 -107.6 177.2 -107.6s143.8 43.7002 177.2 107.6zM122.7 223.5c-2.40039 0.299805 -5 2.5 -49.5 -6.90039c12.3994 125.4 118.1 223.4 246.8 223.4s234.4 -98 246.8 -223.5c-44.2998 9.40039 -47.3994 7.2002 -49.5 7
|
||||
c-15.2002 95.2998 -97.7998 168.5 -197.3 168.5s-182.1 -73.2002 -197.3 -168.5zM320 48c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996
|
||||
c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM450.3 216.3c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17
|
||||
c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM240 258.6
|
||||
c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004
|
||||
c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z" />
|
||||
<glyph glyph-name="grin-tongue" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0
|
||||
l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200
|
||||
s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996
|
||||
s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32
|
||||
s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
|
||||
<glyph glyph-name="grin-tongue-squint" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0
|
||||
l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200
|
||||
s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996
|
||||
s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998
|
||||
l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 3 11.5 1.90039 15.2998 -2.5zM214.2 250.3
|
||||
c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5
|
||||
c3.89941 4.5 10.2998 5.5 15.2998 2.5z" />
|
||||
<glyph glyph-name="grin-tongue-wink" unicode="" horiz-adv-x="496"
|
||||
d="M152 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5
|
||||
c-3.7998 -3.39941 -9.2998 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM328 320c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80s-80 35.7998 -80 80s35.7998 80 80 80zM328 192
|
||||
c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM328 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z
|
||||
M312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998
|
||||
c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3
|
||||
c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998
|
||||
c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998z" />
|
||||
<glyph glyph-name="grin-wink" unicode="" horiz-adv-x="496"
|
||||
d="M328 268c25.6904 0 55.8799 -16.9199 59.8701 -42.1201c1.72949 -11.0898 -11.3506 -18.2695 -19.8301 -10.8398l-9.5498 8.47949c-14.8105 13.1904 -46.1602 13.1904 -60.9707 0l-9.5498 -8.47949c-8.33008 -7.40039 -21.5801 -0.379883 -19.8301 10.8398
|
||||
c3.98047 25.2002 34.1699 42.1201 59.8604 42.1201zM168 208c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32s-14.3301 -32 -32 -32zM353.55 143.36c10.04 3.13965 19.3906 -5.4502 17.71 -15.3408
|
||||
c-7.92969 -47.1494 -71.3193 -80.0195 -123.26 -80.0195s-115.33 32.8701 -123.26 80.0195c-1.69043 9.9707 7.76953 18.4707 17.71 15.3408c25.9297 -8.31055 64.3994 -13.0605 105.55 -13.0605s79.6201 4.75977 105.55 13.0605zM248 440c136.97 0 248 -111.03 248 -248
|
||||
s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z" />
|
||||
<glyph glyph-name="kiss" unicode="" horiz-adv-x="496"
|
||||
d="M168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5
|
||||
c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002
|
||||
c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM248 440c137 0 248 -111 248 -248
|
||||
s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z
|
||||
" />
|
||||
<glyph glyph-name="kiss-beam" unicode="" horiz-adv-x="496"
|
||||
d="M168 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17
|
||||
c-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8
|
||||
c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5
|
||||
c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002
|
||||
c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296
|
||||
c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17
|
||||
c-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z" />
|
||||
<glyph glyph-name="kiss-wink-heart" unicode="" horiz-adv-x="504"
|
||||
d="M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002
|
||||
c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002
|
||||
c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994
|
||||
c3.89941 25.2002 34.2002 42.1006 59.7998 42.1006s55.7998 -16.9004 59.7998 -42.1006c0.799805 -5 -1.7002 -10 -6.09961 -12.3994c-4.40039 -2.40039 -9.90039 -1.7002 -13.7002 1.59961zM136 239.5c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32
|
||||
s-32 14.2998 -32 32zM501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941
|
||||
l8.40039 2.2002c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM334 11.7002c17.7002 -64 10.9004 -39.5 13.4004 -46.7998c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 247.9 -248
|
||||
c0 -31.7998 -6.2002 -62.0996 -17.1006 -90c-6 1.5 -12.2002 2.7998 -18.5996 2.90039c-5.60059 9.69922 -13.6006 17.5 -22.6006 23.8994c6.7002 19.9004 10.4004 41.1006 10.4004 63.2002c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200
|
||||
c30.7998 0 59.9004 7.2002 86 19.7002z" />
|
||||
<glyph glyph-name="laugh" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
|
||||
c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM168 224
|
||||
c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
|
||||
<glyph glyph-name="laugh-beam" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
|
||||
c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.700195 -8.5 -10.7998 -11.8994 -14.8994 -4.5
|
||||
l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006c-12.3008 0 -23.8008 -7.90039 -31.5 -21.6006l-9.5 -17c-4.10059 -7.39941 -15.6006 -4.09961 -14.9004 4.5c3.2998 42.1006 32.2002 71.4004 56 71.4004zM127 220.1c-4.2002 -7.39941 -15.7002 -4 -15.0996 4.5
|
||||
c3.2998 42.1006 32.1992 71.4004 56 71.4004c23.7998 0 52.6992 -29.2998 56 -71.4004c0.699219 -8.5 -10.8008 -11.8994 -14.9004 -4.5l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006s-23.7998 -7.90039 -31.5 -21.6006zM362.4 160c8.19922 0 14.5 -7 13.5 -15
|
||||
c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
|
||||
<glyph glyph-name="laugh-squint" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
|
||||
c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM343.6 252l33.6006 -40.2998c8.59961 -10.4004 -3.90039 -24.7998 -15.4004 -18l-80 48
|
||||
c-7.7998 4.7002 -7.7998 15.8994 0 20.5996l80 48c11.6006 6.7998 24 -7.7002 15.4004 -18zM134.2 193.7c-11.6006 -6.7998 -24.1006 7.59961 -15.4004 18l33.6006 40.2998l-33.6006 40.2998c-8.59961 10.2998 3.7998 24.9004 15.4004 18l80 -48
|
||||
c7.7998 -4.7002 7.7998 -15.8994 0 -20.5996zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
|
||||
<glyph glyph-name="laugh-wink" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996
|
||||
c-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 284c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008
|
||||
l-9.5 8.5c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996zM168 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z
|
||||
M362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z" />
|
||||
<glyph glyph-name="meh-blank" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32
|
||||
s-32 14.2998 -32 32s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
|
||||
<glyph glyph-name="meh-rolling-eyes" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM336 296c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72
|
||||
s-72 32.2002 -72 72s32.2002 72 72 72zM336 184c22.0996 0 40 17.9004 40 40c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998
|
||||
c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998c0 -22.0996 17.9004 -40 40 -40zM232 224c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM120 224c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40
|
||||
c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998zM312 96
|
||||
c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z" />
|
||||
<glyph glyph-name="sad-cry" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM392 53.5996c34.5996 35.9004 56 84.7002 56 138.4c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -53.7002 21.4004 -102.4 56 -138.4v114.4
|
||||
c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-151.4c28.5 -15.5996 61.2002 -24.5996 96 -24.5996s67.5 9 96 24.5996v151.4c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-114.4zM205.8 213.5c-5.7998 -3.2002 -11.2002 -0.700195 -13.7002 1.59961l-9.5 8.5
|
||||
c-14.7998 13.2002 -46.1992 13.2002 -61 0l-9.5 -8.5c-3.7998 -3.39941 -9.2998 -4 -13.6992 -1.59961c-4.40039 2.40039 -6.90039 7.40039 -6.10059 12.4004c3.90039 25.1992 34.2002 42.0996 59.7998 42.0996c25.6006 0 55.8008 -16.9004 59.8008 -42.0996
|
||||
c0.799805 -5 -1.7002 -10 -6.10059 -12.4004zM344 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5
|
||||
c-3.7998 -3.39941 -9.2002 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM248 176c30.9004 0 56 -28.7002 56 -64s-25.0996 -64 -56 -64s-56 28.7002 -56 64s25.0996 64 56 64z" />
|
||||
<glyph glyph-name="sad-tear" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM256 144c38.0996 0 74 -16.7998 98.5 -46.0996
|
||||
c8.5 -10.2002 7.09961 -25.3008 -3.09961 -33.8008c-10.6006 -8.7998 -25.7002 -6.69922 -33.8008 3.10059c-15.2998 18.2998 -37.7998 28.7998 -61.5996 28.7998c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
|
||||
s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM162.4 173.2c2.7998 3.7002 8.39941 3.7002 11.1992 0c11.4004 -15.2998 36.4004 -50.6006 36.4004 -68.1006
|
||||
c0 -22.6992 -18.7998 -41.0996 -42 -41.0996s-42 18.4004 -42 41.0996c0 17.5 25 52.8008 36.4004 68.1006z" />
|
||||
<glyph glyph-name="smile-beam" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM332 135.4c8.5 10.1992 23.5996 11.5 33.7998 3.09961
|
||||
c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.2002 8.40039 25.2998 7.09961 33.7998 -3.09961
|
||||
c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004zM136.5 237l-9.5 -17c-1.90039 -3.2002 -5.90039 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004
|
||||
c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996zM328 296c23.7998 0 52.7002 -29.2998 56 -71.4004
|
||||
c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002
|
||||
c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z" />
|
||||
<glyph glyph-name="surprise" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 168c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64
|
||||
s-64 28.7002 -64 64s28.7002 64 64 64zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z" />
|
||||
<glyph glyph-name="tired" unicode="" horiz-adv-x="496"
|
||||
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5
|
||||
l-33.6006 -40.2998l33.6006 -40.2998c3.7998 -4.5 3.7002 -11 -0.100586 -15.5c-3.5 -4.10059 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 2.90039 11.5 1.90039 15.2998 -2.5z
|
||||
M220 240c0 -4.2002 -2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7998 -1.60059 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7998 4.5 -3.7002 11 0.100586 15.5
|
||||
c3.7998 4.40039 10.2998 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998zM248 176c45.4004 0 100.9 -38.2998 107.8 -93.2998c1.5 -11.9004 -7 -21.6006 -15.5 -17.9004c-22.7002 9.7002 -56.2998 15.2002 -92.2998 15.2002
|
||||
s-69.5996 -5.5 -92.2998 -15.2002c-8.60059 -3.7002 -17 6.10059 -15.5 17.9004c6.89941 55 62.3994 93.2998 107.8 93.2998z" />
|
||||
</font>
|
||||
</defs></svg>
|
After Width: | Height: | Size: 141 KiB |
BIN
asset/static/font/awesome/fa-regular-400.ttf
Normal file
BIN
asset/static/font/awesome/fa-regular-400.ttf
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-regular-400.woff
Normal file
BIN
asset/static/font/awesome/fa-regular-400.woff
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-regular-400.woff2
Normal file
BIN
asset/static/font/awesome/fa-regular-400.woff2
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-solid-900.eot
Normal file
BIN
asset/static/font/awesome/fa-solid-900.eot
Normal file
Binary file not shown.
5034
asset/static/font/awesome/fa-solid-900.svg
Normal file
5034
asset/static/font/awesome/fa-solid-900.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 898 KiB |
BIN
asset/static/font/awesome/fa-solid-900.ttf
Normal file
BIN
asset/static/font/awesome/fa-solid-900.ttf
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-solid-900.woff
Normal file
BIN
asset/static/font/awesome/fa-solid-900.woff
Normal file
Binary file not shown.
BIN
asset/static/font/awesome/fa-solid-900.woff2
Normal file
BIN
asset/static/font/awesome/fa-solid-900.woff2
Normal file
Binary file not shown.
1
asset/static/img/select-icon-text-color.svg
Normal file
1
asset/static/img/select-icon-text-color.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg height="32" viewBox="0 0 24 32" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m5.20126707.78766623 4.45386238 4.20402191c.16721345.15783356.16291017.40979541-.00961164.56277256-.081158.0719638-.18974398.11220597-.3027668.11220597h-8.90772462c-.24025844 0-.43502639-.17818569-.43502639-.39798892 0-.10340014.04398717-.20274128.12264801-.27698961l4.45386234-4.20402191c.16721345-.15783357.44262326-.16177048.61514507-.00879333.00325382.00288518.00645805.00581661.00961165.00879333z" fill="#282E39" transform="matrix(1 0 0 -1 7 20.666667)"/></svg>
|
After Width: | Height: | Size: 559 B |
1
asset/static/img/select-icon.svg
Normal file
1
asset/static/img/select-icon.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg height="32" viewBox="0 0 24 32" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m5.20126707.78766623 4.45386238 4.20402191c.16721345.15783356.16291017.40979541-.00961164.56277256-.081158.0719638-.18974398.11220597-.3027668.11220597h-8.90772462c-.24025844 0-.43502639-.17818569-.43502639-.39798892 0-.10340014.04398717-.20274128.12264801-.27698961l4.45386234-4.20402191c.16721345-.15783357.44262326-.16177048.61514507-.00879333.00325382.00288518.00645805.00581661.00961165.00879333z" fill="#00c3ed" transform="matrix(1 0 0 -1 7 20.666667)"/></svg>
|
After Width: | Height: | Size: 558 B |
453
composer.lock
generated
Normal file
453
composer.lock
generated
Normal file
@ -0,0 +1,453 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "19b25996ecc3bbe4d8f4f4f19de5014d",
|
||||
"packages": [
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"version": "v2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/igorw/evenement.git",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": [
|
||||
"event-dispatcher",
|
||||
"event-emitter"
|
||||
],
|
||||
"time": "2017-07-17T17:39:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fortawesome/font-awesome",
|
||||
"version": "5.15.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome.git",
|
||||
"reference": "7d3d774145ac38663f6d1effc6def0334b68ab7e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/7d3d774145ac38663f6d1effc6def0334b68ab7e",
|
||||
"reference": "7d3d774145ac38663f6d1effc6def0334b68ab7e",
|
||||
"shasum": ""
|
||||
},
|
||||
"type": "library",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"CC-BY-4.0",
|
||||
"OFL-1.1",
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"homepage": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Dave Gandy",
|
||||
"homepage": "http://twitter.com/davegandy"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"homepage": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Jory Raphael",
|
||||
"homepage": "http://twitter.com/sensibleworld"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"homepage": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"homepage": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"homepage": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"homepage": "https://fontawesome.com",
|
||||
"keywords": [
|
||||
"FontAwesome",
|
||||
"awesome",
|
||||
"bootstrap",
|
||||
"font",
|
||||
"icon",
|
||||
"svg"
|
||||
],
|
||||
"time": "2021-08-04T19:09:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/html",
|
||||
"version": "v0.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-html.git",
|
||||
"reference": "6de8d6b2f4b31454d18563c1c6661c3641b0e23d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-html/zipball/6de8d6b2f4b31454d18563c1c6661c3641b0e23d",
|
||||
"reference": "6de8d6b2f4b31454d18563c1c6661c3641b0e23d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ipl/stdlib": ">=0.5.0",
|
||||
"ipl/validator": ">=0.1.0",
|
||||
"php": ">=5.6.0",
|
||||
"psr/http-message": "~1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Html\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - HTML abstraction layer",
|
||||
"homepage": "https://github.com/Icinga/ipl-html",
|
||||
"keywords": [
|
||||
"html"
|
||||
],
|
||||
"time": "2021-10-07T14:11:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/i18n",
|
||||
"version": "v0.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-i18n.git",
|
||||
"reference": "22110a24ee589c424d6fe9ab5eb334e849abd1d0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/22110a24ee589c424d6fe9ab5eb334e849abd1d0",
|
||||
"reference": "22110a24ee589c424d6fe9ab5eb334e849abd1d0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-gettext": "*",
|
||||
"ipl/stdlib": ">=0.6.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"ipl\\I18n\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Internationalization",
|
||||
"homepage": "https://github.com/Icinga/ipl-i18n",
|
||||
"keywords": [
|
||||
"gettext",
|
||||
"i18n",
|
||||
"internationalization",
|
||||
"localization",
|
||||
"translation"
|
||||
],
|
||||
"time": "2021-06-09T09:14:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/orm",
|
||||
"version": "v0.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-orm.git",
|
||||
"reference": "14de55506c4689180ba06f1d7d3ac5353a4177f3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-orm/zipball/14de55506c4689180ba06f1d7d3ac5353a4177f3",
|
||||
"reference": "14de55506c4689180ba06f1d7d3ac5353a4177f3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"ipl/sql": ">=0.3.0",
|
||||
"ipl/stdlib": ">=0.10.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-pdo_sqlite": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Orm\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - ORM",
|
||||
"homepage": "https://github.com/Icinga/ipl-orm",
|
||||
"keywords": [
|
||||
"database",
|
||||
"orm",
|
||||
"sql"
|
||||
],
|
||||
"time": "2021-11-10T13:25:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/sql",
|
||||
"version": "v0.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-sql.git",
|
||||
"reference": "4bae3fb4bbe05407e378f8eafd379ebf0afc7faa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/4bae3fb4bbe05407e378f8eafd379ebf0afc7faa",
|
||||
"reference": "4bae3fb4bbe05407e378f8eafd379ebf0afc7faa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"ipl/stdlib": ">=0.9.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Sql\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - SQL abstraction layer",
|
||||
"homepage": "https://github.com/Icinga/ipl-sql",
|
||||
"keywords": [
|
||||
"database",
|
||||
"sql"
|
||||
],
|
||||
"time": "2021-07-20T08:30:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/stdlib",
|
||||
"version": "v0.10.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-stdlib.git",
|
||||
"reference": "d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32",
|
||||
"reference": "d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "^2",
|
||||
"ext-openssl": "*",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php",
|
||||
"src/polyfill-php71.php",
|
||||
"src/polyfill-php70.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"ipl\\Stdlib\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "ipl Standard Library",
|
||||
"time": "2021-10-29T11:01:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/validator",
|
||||
"version": "v0.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-validator.git",
|
||||
"reference": "e32eeec7bdaa1fbdf7c2734546835a72d799d4e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/e32eeec7bdaa1fbdf7c2734546835a72d799d4e7",
|
||||
"reference": "e32eeec7bdaa1fbdf7c2734546835a72d799d4e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-openssl": "*",
|
||||
"ipl/i18n": ">=0.1.0",
|
||||
"ipl/stdlib": ">=0.5.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Validator\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Common validators and validator chaining",
|
||||
"homepage": "https://github.com/Icinga/ipl-validator",
|
||||
"time": "2021-10-07T14:12:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ipl/web",
|
||||
"version": "v0.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-web.git",
|
||||
"reference": "2722bbeab75b98105d8504bfbaa115fbad5430e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-web/zipball/2722bbeab75b98105d8504bfbaa115fbad5430e7",
|
||||
"reference": "2722bbeab75b98105d8504bfbaa115fbad5430e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"fortawesome/font-awesome": "^5.13",
|
||||
"ipl/html": ">=0.4.0",
|
||||
"ipl/stdlib": ">=0.9.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Web\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Web Components",
|
||||
"homepage": "https://github.com/Icinga/ipl-web",
|
||||
"keywords": [
|
||||
"html"
|
||||
],
|
||||
"time": "2021-11-10T13:20:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-message.git",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP messages",
|
||||
"homepage": "https://github.com/php-fig/http-message",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
"psr",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
],
|
||||
"time": "2016-08-06T14:39:51+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
"php": "5.6.3"
|
||||
},
|
||||
"plugin-api-version": "1.1.0"
|
||||
}
|
7
vendor/autoload.php
vendored
Normal file
7
vendor/autoload.php
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit8bd90956b161cce6c34cc9480f0aa948::getLoader();
|
445
vendor/composer/ClassLoader.php
vendored
Normal file
445
vendor/composer/ClassLoader.php
vendored
Normal file
@ -0,0 +1,445 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see http://www.php-fig.org/psr/psr-0/
|
||||
* @see http://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
private $classMapAuthoritative = false;
|
||||
private $missingClasses = array();
|
||||
private $apcuPrefix;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
if (file_exists($file = $dir . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
21
vendor/composer/LICENSE
vendored
Normal file
21
vendor/composer/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
9
vendor/composer/autoload_classmap.php
vendored
Normal file
9
vendor/composer/autoload_classmap.php
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
13
vendor/composer/autoload_files.php
vendored
Normal file
13
vendor/composer/autoload_files.php
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'a2c78434f64e5f5ed402f42eee19c025' => $vendorDir . '/ipl/stdlib/src/functions_include.php',
|
||||
'14a6a72370de4c08174524928551af59' => $vendorDir . '/ipl/stdlib/src/polyfill-php71.php',
|
||||
'1096382ca2befc3ea8edac3309309ec4' => $vendorDir . '/ipl/stdlib/src/polyfill-php70.php',
|
||||
'6076de347104821999fcfc82c8f19bc5' => $vendorDir . '/ipl/i18n/src/functions_include.php',
|
||||
);
|
11
vendor/composer/autoload_namespaces.php
vendored
Normal file
11
vendor/composer/autoload_namespaces.php
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Evenement' => array($vendorDir . '/evenement/evenement/src'),
|
||||
'AssetLoader' => array($baseDir . '/'),
|
||||
);
|
17
vendor/composer/autoload_psr4.php
vendored
Normal file
17
vendor/composer/autoload_psr4.php
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'ipl\\Web\\' => array($vendorDir . '/ipl/web/src'),
|
||||
'ipl\\Validator\\' => array($vendorDir . '/ipl/validator/src'),
|
||||
'ipl\\Stdlib\\' => array($vendorDir . '/ipl/stdlib/src'),
|
||||
'ipl\\Sql\\' => array($vendorDir . '/ipl/sql/src'),
|
||||
'ipl\\Orm\\' => array($vendorDir . '/ipl/orm/src'),
|
||||
'ipl\\I18n\\' => array($vendorDir . '/ipl/i18n/src'),
|
||||
'ipl\\Html\\' => array($vendorDir . '/ipl/html/src'),
|
||||
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
|
||||
);
|
73
vendor/composer/autoload_real.php
vendored
Normal file
73
vendor/composer/autoload_real.php
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit8bd90956b161cce6c34cc9480f0aa948
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit8bd90956b161cce6c34cc9480f0aa948', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit8bd90956b161cce6c34cc9480f0aa948', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require_once __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire8bd90956b161cce6c34cc9480f0aa948($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire8bd90956b161cce6c34cc9480f0aa948($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
require $file;
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
}
|
||||
}
|
94
vendor/composer/autoload_static.php
vendored
Normal file
94
vendor/composer/autoload_static.php
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948
|
||||
{
|
||||
public static $files = array (
|
||||
'a2c78434f64e5f5ed402f42eee19c025' => __DIR__ . '/..' . '/ipl/stdlib/src/functions_include.php',
|
||||
'14a6a72370de4c08174524928551af59' => __DIR__ . '/..' . '/ipl/stdlib/src/polyfill-php71.php',
|
||||
'1096382ca2befc3ea8edac3309309ec4' => __DIR__ . '/..' . '/ipl/stdlib/src/polyfill-php70.php',
|
||||
'6076de347104821999fcfc82c8f19bc5' => __DIR__ . '/..' . '/ipl/i18n/src/functions_include.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'i' =>
|
||||
array (
|
||||
'ipl\\Web\\' => 8,
|
||||
'ipl\\Validator\\' => 14,
|
||||
'ipl\\Stdlib\\' => 11,
|
||||
'ipl\\Sql\\' => 8,
|
||||
'ipl\\Orm\\' => 8,
|
||||
'ipl\\I18n\\' => 9,
|
||||
'ipl\\Html\\' => 9,
|
||||
),
|
||||
'P' =>
|
||||
array (
|
||||
'Psr\\Http\\Message\\' => 17,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'ipl\\Web\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/web/src',
|
||||
),
|
||||
'ipl\\Validator\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/validator/src',
|
||||
),
|
||||
'ipl\\Stdlib\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/stdlib/src',
|
||||
),
|
||||
'ipl\\Sql\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/sql/src',
|
||||
),
|
||||
'ipl\\Orm\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/orm/src',
|
||||
),
|
||||
'ipl\\I18n\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/i18n/src',
|
||||
),
|
||||
'ipl\\Html\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/ipl/html/src',
|
||||
),
|
||||
'Psr\\Http\\Message\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/http-message/src',
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixesPsr0 = array (
|
||||
'E' =>
|
||||
array (
|
||||
'Evenement' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/evenement/evenement/src',
|
||||
),
|
||||
),
|
||||
'A' =>
|
||||
array (
|
||||
'AssetLoader' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948::$prefixDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInit8bd90956b161cce6c34cc9480f0aa948::$prefixesPsr0;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
451
vendor/composer/installed.json
vendored
Normal file
451
vendor/composer/installed.json
vendored
Normal file
@ -0,0 +1,451 @@
|
||||
[
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"version": "v2.1.0",
|
||||
"version_normalized": "2.1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/igorw/evenement.git",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
|
||||
},
|
||||
"time": "2017-07-17T17:39:19+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": [
|
||||
"event-dispatcher",
|
||||
"event-emitter"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "fortawesome/font-awesome",
|
||||
"version": "5.15.4",
|
||||
"version_normalized": "5.15.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome.git",
|
||||
"reference": "7d3d774145ac38663f6d1effc6def0334b68ab7e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/7d3d774145ac38663f6d1effc6def0334b68ab7e",
|
||||
"reference": "7d3d774145ac38663f6d1effc6def0334b68ab7e",
|
||||
"shasum": ""
|
||||
},
|
||||
"time": "2021-08-04T19:09:22+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"CC-BY-4.0",
|
||||
"OFL-1.1",
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"homepage": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Dave Gandy",
|
||||
"homepage": "http://twitter.com/davegandy"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"homepage": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Jory Raphael",
|
||||
"homepage": "http://twitter.com/sensibleworld"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"homepage": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"homepage": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"homepage": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"homepage": "https://fontawesome.com",
|
||||
"keywords": [
|
||||
"FontAwesome",
|
||||
"awesome",
|
||||
"bootstrap",
|
||||
"font",
|
||||
"icon",
|
||||
"svg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ipl/html",
|
||||
"version": "v0.4.2",
|
||||
"version_normalized": "0.4.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-html.git",
|
||||
"reference": "6de8d6b2f4b31454d18563c1c6661c3641b0e23d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-html/zipball/6de8d6b2f4b31454d18563c1c6661c3641b0e23d",
|
||||
"reference": "6de8d6b2f4b31454d18563c1c6661c3641b0e23d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ipl/stdlib": ">=0.5.0",
|
||||
"ipl/validator": ">=0.1.0",
|
||||
"php": ">=5.6.0",
|
||||
"psr/http-message": "~1.0"
|
||||
},
|
||||
"time": "2021-10-07T14:11:15+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Html\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - HTML abstraction layer",
|
||||
"homepage": "https://github.com/Icinga/ipl-html",
|
||||
"keywords": [
|
||||
"html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ipl/i18n",
|
||||
"version": "v0.1.0",
|
||||
"version_normalized": "0.1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-i18n.git",
|
||||
"reference": "22110a24ee589c424d6fe9ab5eb334e849abd1d0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/22110a24ee589c424d6fe9ab5eb334e849abd1d0",
|
||||
"reference": "22110a24ee589c424d6fe9ab5eb334e849abd1d0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-gettext": "*",
|
||||
"ipl/stdlib": ">=0.6.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"time": "2021-06-09T09:14:50+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"ipl\\I18n\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Internationalization",
|
||||
"homepage": "https://github.com/Icinga/ipl-i18n",
|
||||
"keywords": [
|
||||
"gettext",
|
||||
"i18n",
|
||||
"internationalization",
|
||||
"localization",
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ipl/orm",
|
||||
"version": "v0.3.0",
|
||||
"version_normalized": "0.3.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-orm.git",
|
||||
"reference": "14de55506c4689180ba06f1d7d3ac5353a4177f3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-orm/zipball/14de55506c4689180ba06f1d7d3ac5353a4177f3",
|
||||
"reference": "14de55506c4689180ba06f1d7d3ac5353a4177f3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"ipl/sql": ">=0.3.0",
|
||||
"ipl/stdlib": ">=0.10.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-pdo_sqlite": "*"
|
||||
},
|
||||
"time": "2021-11-10T13:25:03+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Orm\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - ORM",
|
||||
"homepage": "https://github.com/Icinga/ipl-orm",
|
||||
"keywords": [
|
||||
"database",
|
||||
"orm",
|
||||
"sql"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ipl/sql",
|
||||
"version": "v0.3.2",
|
||||
"version_normalized": "0.3.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-sql.git",
|
||||
"reference": "4bae3fb4bbe05407e378f8eafd379ebf0afc7faa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/4bae3fb4bbe05407e378f8eafd379ebf0afc7faa",
|
||||
"reference": "4bae3fb4bbe05407e378f8eafd379ebf0afc7faa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"ipl/stdlib": ">=0.9.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"time": "2021-07-20T08:30:24+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Sql\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - SQL abstraction layer",
|
||||
"homepage": "https://github.com/Icinga/ipl-sql",
|
||||
"keywords": [
|
||||
"database",
|
||||
"sql"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ipl/stdlib",
|
||||
"version": "v0.10.0",
|
||||
"version_normalized": "0.10.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-stdlib.git",
|
||||
"reference": "d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32",
|
||||
"reference": "d50b6eae04c5a4eb536ee858cecdccf3a6ca5a32",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "^2",
|
||||
"ext-openssl": "*",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"time": "2021-10-29T11:01:05+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php",
|
||||
"src/polyfill-php71.php",
|
||||
"src/polyfill-php70.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"ipl\\Stdlib\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "ipl Standard Library"
|
||||
},
|
||||
{
|
||||
"name": "ipl/validator",
|
||||
"version": "v0.3.0",
|
||||
"version_normalized": "0.3.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-validator.git",
|
||||
"reference": "e32eeec7bdaa1fbdf7c2734546835a72d799d4e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/e32eeec7bdaa1fbdf7c2734546835a72d799d4e7",
|
||||
"reference": "e32eeec7bdaa1fbdf7c2734546835a72d799d4e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-openssl": "*",
|
||||
"ipl/i18n": ">=0.1.0",
|
||||
"ipl/stdlib": ">=0.5.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"time": "2021-10-07T14:12:51+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Validator\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Common validators and validator chaining",
|
||||
"homepage": "https://github.com/Icinga/ipl-validator"
|
||||
},
|
||||
{
|
||||
"name": "ipl/web",
|
||||
"version": "v0.3.0",
|
||||
"version_normalized": "0.3.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Icinga/ipl-web.git",
|
||||
"reference": "2722bbeab75b98105d8504bfbaa115fbad5430e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Icinga/ipl-web/zipball/2722bbeab75b98105d8504bfbaa115fbad5430e7",
|
||||
"reference": "2722bbeab75b98105d8504bfbaa115fbad5430e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"fortawesome/font-awesome": "^5.13",
|
||||
"ipl/html": ">=0.4.0",
|
||||
"ipl/stdlib": ">=0.9.0",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"time": "2021-11-10T13:20:11+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Web\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Icinga PHP Library - Web Components",
|
||||
"homepage": "https://github.com/Icinga/ipl-web",
|
||||
"keywords": [
|
||||
"html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0.1",
|
||||
"version_normalized": "1.0.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-message.git",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2016-08-06T14:39:51+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP messages",
|
||||
"homepage": "https://github.com/php-fig/http-message",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
"psr",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
]
|
||||
}
|
||||
]
|
19
vendor/evenement/evenement/LICENSE
vendored
Normal file
19
vendor/evenement/evenement/LICENSE
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2011 Igor Wiedler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
34
vendor/evenement/evenement/composer.json
vendored
Normal file
34
vendor/evenement/evenement/composer.json
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": ["event-dispatcher", "event-emitter"],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-0": {
|
||||
"Evenement": "tests"
|
||||
},
|
||||
"files": ["tests/Evenement/Tests/functions.php"]
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0-dev"
|
||||
}
|
||||
}
|
||||
}
|
17
vendor/evenement/evenement/src/Evenement/EventEmitter.php
vendored
Normal file
17
vendor/evenement/evenement/src/Evenement/EventEmitter.php
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Evenement.
|
||||
*
|
||||
* (c) Igor Wiedler <igor@wiedler.ch>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Evenement;
|
||||
|
||||
class EventEmitter implements EventEmitterInterface
|
||||
{
|
||||
use EventEmitterTrait;
|
||||
}
|
22
vendor/evenement/evenement/src/Evenement/EventEmitterInterface.php
vendored
Normal file
22
vendor/evenement/evenement/src/Evenement/EventEmitterInterface.php
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Evenement.
|
||||
*
|
||||
* (c) Igor Wiedler <igor@wiedler.ch>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Evenement;
|
||||
|
||||
interface EventEmitterInterface
|
||||
{
|
||||
public function on($event, callable $listener);
|
||||
public function once($event, callable $listener);
|
||||
public function removeListener($event, callable $listener);
|
||||
public function removeAllListeners($event = null);
|
||||
public function listeners($event);
|
||||
public function emit($event, array $arguments = []);
|
||||
}
|
73
vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php
vendored
Normal file
73
vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Evenement.
|
||||
*
|
||||
* (c) Igor Wiedler <igor@wiedler.ch>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Evenement;
|
||||
|
||||
trait EventEmitterTrait
|
||||
{
|
||||
protected $listeners = [];
|
||||
|
||||
public function on($event, callable $listener)
|
||||
{
|
||||
if (!isset($this->listeners[$event])) {
|
||||
$this->listeners[$event] = [];
|
||||
}
|
||||
|
||||
$this->listeners[$event][] = $listener;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function once($event, callable $listener)
|
||||
{
|
||||
$onceListener = function () use (&$onceListener, $event, $listener) {
|
||||
$this->removeListener($event, $onceListener);
|
||||
|
||||
\call_user_func_array($listener, \func_get_args());
|
||||
};
|
||||
|
||||
$this->on($event, $onceListener);
|
||||
}
|
||||
|
||||
public function removeListener($event, callable $listener)
|
||||
{
|
||||
if (isset($this->listeners[$event])) {
|
||||
$index = \array_search($listener, $this->listeners[$event], true);
|
||||
if (false !== $index) {
|
||||
unset($this->listeners[$event][$index]);
|
||||
if (\count($this->listeners[$event]) === 0) {
|
||||
unset($this->listeners[$event]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function removeAllListeners($event = null)
|
||||
{
|
||||
if ($event !== null) {
|
||||
unset($this->listeners[$event]);
|
||||
} else {
|
||||
$this->listeners = [];
|
||||
}
|
||||
}
|
||||
|
||||
public function listeners($event)
|
||||
{
|
||||
return isset($this->listeners[$event]) ? $this->listeners[$event] : [];
|
||||
}
|
||||
|
||||
public function emit($event, array $arguments = [])
|
||||
{
|
||||
foreach ($this->listeners($event) as $listener) {
|
||||
\call_user_func_array($listener, $arguments);
|
||||
}
|
||||
}
|
||||
}
|
47
vendor/fortawesome/font-awesome/composer.json
vendored
Normal file
47
vendor/fortawesome/font-awesome/composer.json
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "fortawesome/font-awesome",
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": ["font", "awesome", "fontawesome", "icon", "svg", "font", "bootstrap"],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"homepage": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Dave Gandy",
|
||||
"homepage": "http://twitter.com/davegandy"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"homepage": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Jory Raphael",
|
||||
"homepage": "http://twitter.com/sensibleworld"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"homepage": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"homepage": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"homepage": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "hello@fontawesome.com",
|
||||
"issues": "https://github.com/FortAwesome/Font-Awesome/issues",
|
||||
"source": "https://github.com/FortAwesome/Font-Awesome",
|
||||
"docs": "http://fontawesome.com/how-to-use"
|
||||
},
|
||||
"license": [
|
||||
"CC-BY-4.0",
|
||||
"OFL-1.1",
|
||||
"MIT"
|
||||
]
|
||||
}
|
57
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-common-types/package.json
vendored
Normal file
57
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-common-types/package.json
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {},
|
||||
"version": "0.2.36",
|
||||
"name": "@fortawesome/fontawesome-common-types",
|
||||
"license": "MIT",
|
||||
"types": "./index.d.ts",
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
58
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-free/package.json
vendored
Normal file
58
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-free/package.json
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {},
|
||||
"version": "5.15.4",
|
||||
"name": "@fortawesome/fontawesome-free",
|
||||
"main": "js/fontawesome.js",
|
||||
"style": "css/fontawesome.css",
|
||||
"license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)",
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/package.json
vendored
Normal file
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/package.json
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.36"
|
||||
},
|
||||
"version": "1.2.36",
|
||||
"name": "@fortawesome/fontawesome-svg-core",
|
||||
"main": "index.js",
|
||||
"module": "index.es.js",
|
||||
"jsnext:main": "index.es.js",
|
||||
"style": "styles.css",
|
||||
"license": "MIT",
|
||||
"types": "./index.d.ts",
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-brands-svg-icons/package.json
vendored
Normal file
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-brands-svg-icons/package.json
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.36"
|
||||
},
|
||||
"version": "5.15.4",
|
||||
"name": "@fortawesome/free-brands-svg-icons",
|
||||
"main": "index.js",
|
||||
"module": "index.es.js",
|
||||
"jsnext:main": "index.es.js",
|
||||
"license": "(CC-BY-4.0 AND MIT)",
|
||||
"types": "./index.d.ts",
|
||||
"sideEffects": false,
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-regular-svg-icons/package.json
vendored
Normal file
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-regular-svg-icons/package.json
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.36"
|
||||
},
|
||||
"version": "5.15.4",
|
||||
"name": "@fortawesome/free-regular-svg-icons",
|
||||
"main": "index.js",
|
||||
"module": "index.es.js",
|
||||
"jsnext:main": "index.es.js",
|
||||
"license": "(CC-BY-4.0 AND MIT)",
|
||||
"types": "./index.d.ts",
|
||||
"sideEffects": false,
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-solid-svg-icons/package.json
vendored
Normal file
63
vendor/fortawesome/font-awesome/js-packages/@fortawesome/free-solid-svg-icons/package.json
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"description": "The iconic font, CSS, and SVG framework",
|
||||
"keywords": [
|
||||
"font",
|
||||
"awesome",
|
||||
"fontawesome",
|
||||
"icon",
|
||||
"svg",
|
||||
"bootstrap"
|
||||
],
|
||||
"homepage": "https://fontawesome.com",
|
||||
"bugs": {
|
||||
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "Dave Gandy",
|
||||
"email": "dave@fontawesome.com",
|
||||
"web": "http://twitter.com/davegandy"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Brian Talbot",
|
||||
"web": "http://twitter.com/talbs"
|
||||
},
|
||||
{
|
||||
"name": "Travis Chase",
|
||||
"web": "http://twitter.com/supercodepoet"
|
||||
},
|
||||
{
|
||||
"name": "Rob Madole",
|
||||
"web": "http://twitter.com/robmadole"
|
||||
},
|
||||
{
|
||||
"name": "Geremia Taglialatela",
|
||||
"web": "http://twitter.com/gtagliala"
|
||||
},
|
||||
{
|
||||
"name": "Mike Wilkerson",
|
||||
"web": "http://twitter.com/mw77"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FortAwesome/Font-Awesome"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.36"
|
||||
},
|
||||
"version": "5.15.4",
|
||||
"name": "@fortawesome/free-solid-svg-icons",
|
||||
"main": "index.js",
|
||||
"module": "index.es.js",
|
||||
"jsnext:main": "index.es.js",
|
||||
"license": "(CC-BY-4.0 AND MIT)",
|
||||
"types": "./index.d.ts",
|
||||
"sideEffects": false,
|
||||
"scripts": {
|
||||
"postinstall": "node attribution.js"
|
||||
}
|
||||
}
|
58522
vendor/fortawesome/font-awesome/metadata/icons.json
vendored
Normal file
58522
vendor/fortawesome/font-awesome/metadata/icons.json
vendored
Normal file
File diff suppressed because one or more lines are too long
2317
vendor/fortawesome/font-awesome/metadata/shims.json
vendored
Normal file
2317
vendor/fortawesome/font-awesome/metadata/shims.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
21
vendor/ipl/html/LICENSE
vendored
Normal file
21
vendor/ipl/html/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2018 Icinga GmbH https://www.icinga.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
27
vendor/ipl/html/composer.json
vendored
Normal file
27
vendor/ipl/html/composer.json
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "ipl/html",
|
||||
"type": "library",
|
||||
"description": "Icinga PHP Library - HTML abstraction layer",
|
||||
"license": "MIT",
|
||||
"keywords": ["html"],
|
||||
"homepage": "https://github.com/Icinga/ipl-html",
|
||||
"config": {
|
||||
"sort-packages": true
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6.0",
|
||||
"ipl/stdlib": ">=0.5.0",
|
||||
"ipl/validator": ">=0.1.0",
|
||||
"psr/http-message": "~1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ipl\\Html\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"ipl\\Tests\\Html\\": "tests"
|
||||
}
|
||||
}
|
||||
}
|
301
vendor/ipl/html/src/Attribute.php
vendored
Normal file
301
vendor/ipl/html/src/Attribute.php
vendored
Normal file
@ -0,0 +1,301 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* HTML Attribute
|
||||
*
|
||||
* Every single HTML attribute is (or should be) an instance of this class.
|
||||
* This guarantees that every attribute is safe and escaped correctly.
|
||||
*
|
||||
* Usually attributes are not instantiated directly, but created through an HTML
|
||||
* element's exposed methods.
|
||||
*/
|
||||
class Attribute
|
||||
{
|
||||
/** @var string */
|
||||
protected $name;
|
||||
|
||||
/** @var string|array|bool|null */
|
||||
protected $value;
|
||||
|
||||
/**
|
||||
* Create a new HTML attribute from the given name and value
|
||||
*
|
||||
* @param string $name The name of the attribute
|
||||
* @param string|bool|array|null $value The value of the attribute
|
||||
*
|
||||
* @throws InvalidArgumentException If the name of the attribute contains special characters
|
||||
*/
|
||||
public function __construct($name, $value = null)
|
||||
{
|
||||
$this->setName($name)->setValue($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new HTML attribute from the given name and value
|
||||
*
|
||||
* @param string $name The name of the attribute
|
||||
* @param string|bool|array|null $value The value of the attribute
|
||||
*
|
||||
* @return static
|
||||
*
|
||||
* @throws InvalidArgumentException If the name of the attribute contains special characters
|
||||
*/
|
||||
public static function create($name, $value)
|
||||
{
|
||||
return new static($name, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new empty HTML attribute from the given name
|
||||
*
|
||||
* The value of the attribute will be null after construction.
|
||||
*
|
||||
* @param string $name The name of the attribute
|
||||
*
|
||||
* @return static
|
||||
*
|
||||
* @throws InvalidArgumentException If the name of the attribute contains special characters
|
||||
*/
|
||||
public static function createEmpty($name)
|
||||
{
|
||||
return new static($name, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Escape the name of an attribute
|
||||
*
|
||||
* Makes sure that the name of an attribute really is a string.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function escapeName($name)
|
||||
{
|
||||
return (string) $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Escape the value of an attribute
|
||||
*
|
||||
* If the value is an array, returns the string representation
|
||||
* of all array elements joined with the specified glue string.
|
||||
*
|
||||
* Values are escaped according to the HTML5 double-quoted attribute value syntax:
|
||||
* {@link https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 }.
|
||||
*
|
||||
* @param string|array $value
|
||||
* @param string $glue Glue string to join elements if value is an array
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function escapeValue($value, $glue = ' ')
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$value = implode($glue, $value);
|
||||
}
|
||||
|
||||
// We force double-quoted attribute value syntax so let's start by escaping double quotes
|
||||
$value = str_replace('"', '"', $value);
|
||||
|
||||
// In addition, values must not contain ambiguous ampersands
|
||||
$value = preg_replace_callback(
|
||||
'/&[0-9A-Z]+;/i',
|
||||
function ($match) {
|
||||
$subject = $match[0];
|
||||
|
||||
if (htmlspecialchars_decode($subject, ENT_COMPAT | ENT_HTML5) === $subject) {
|
||||
// Ambiguous ampersand
|
||||
return str_replace('&', '&', $subject);
|
||||
}
|
||||
|
||||
return $subject;
|
||||
},
|
||||
$value
|
||||
);
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the attribute
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of the attribute
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws InvalidArgumentException If the name contains special characters
|
||||
*/
|
||||
protected function setName($name)
|
||||
{
|
||||
if (! preg_match('/^[a-z][a-z0-9:-]*$/i', $name)) {
|
||||
throw new InvalidArgumentException(sprintf(
|
||||
'Attribute names with special characters are not yet allowed: %s',
|
||||
$name
|
||||
));
|
||||
}
|
||||
|
||||
$this->name = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of the attribute
|
||||
*
|
||||
* @return string|bool|array|null
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of the attribute
|
||||
*
|
||||
* @param string|bool|array|null $value
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setValue($value)
|
||||
{
|
||||
$this->value = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the given value(s) to the attribute
|
||||
*
|
||||
* @param string|array $value The value(s) to add
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addValue($value)
|
||||
{
|
||||
$this->value = array_merge((array) $this->value, (array) $value);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the given value(s) from the attribute
|
||||
*
|
||||
* The current value is set to null if it matches the value to remove
|
||||
* or is in the array of values to remove.
|
||||
*
|
||||
* If the current value is an array, all elements are removed which
|
||||
* match the value(s) to remove.
|
||||
*
|
||||
* Does nothing if there is no such value to remove.
|
||||
*
|
||||
* @param string|array $value The value(s) to remove
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function removeValue($value)
|
||||
{
|
||||
$value = (array) $value;
|
||||
|
||||
$current = $this->getValue();
|
||||
|
||||
if (is_array($current)) {
|
||||
$this->setValue(array_diff($current, $value));
|
||||
} elseif (in_array($current, $value, true)) {
|
||||
$this->setValue(null);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test and return true if the attribute is boolean, false otherwise
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isBoolean()
|
||||
{
|
||||
return is_bool($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test and return true if the attribute is empty, false otherwise
|
||||
*
|
||||
* Null and the empty array will be considered empty.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return $this->value === null || $this->value === [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the attribute to HTML
|
||||
*
|
||||
* If the value of the attribute is of type boolean, it will be rendered as
|
||||
* {@link http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes boolean attribute}.
|
||||
* Note that in this case if the value of the attribute is false, the empty string will be returned.
|
||||
*
|
||||
* If the value of the attribute is null or an empty array,
|
||||
* the empty string will be returned as well.
|
||||
*
|
||||
* Escaping of the attribute's value takes place automatically using {@link Attribute::escapeValue()}.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
if ($this->isEmpty()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ($this->isBoolean()) {
|
||||
if ($this->value) {
|
||||
return $this->renderName();
|
||||
}
|
||||
|
||||
return '';
|
||||
} else {
|
||||
return sprintf(
|
||||
'%s="%s"',
|
||||
$this->renderName(),
|
||||
$this->renderValue()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the name of the attribute to HTML
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderName()
|
||||
{
|
||||
return static::escapeName($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the value of the attribute to HTML
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderValue()
|
||||
{
|
||||
return static::escapeValue($this->value);
|
||||
}
|
||||
}
|
511
vendor/ipl/html/src/Attributes.php
vendored
Normal file
511
vendor/ipl/html/src/Attributes.php
vendored
Normal file
@ -0,0 +1,511 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use ArrayAccess;
|
||||
use ArrayIterator;
|
||||
use InvalidArgumentException;
|
||||
use IteratorAggregate;
|
||||
|
||||
use function ipl\Stdlib\get_php_type;
|
||||
|
||||
/**
|
||||
* HTML attributes
|
||||
*
|
||||
* HTML attributes provide additional information about HTML elements, that configure the elements or adjust their
|
||||
* behavior in various ways.
|
||||
*
|
||||
* Attributes usually come in name-value pairs and are rendered as name="value".
|
||||
*/
|
||||
class Attributes implements ArrayAccess, IteratorAggregate
|
||||
{
|
||||
/** @var Attribute[] */
|
||||
protected $attributes = [];
|
||||
|
||||
/** @var callable[] */
|
||||
protected $callbacks = [];
|
||||
|
||||
/** @var string */
|
||||
protected $prefix = '';
|
||||
|
||||
/** @var callable[] */
|
||||
protected $setterCallbacks = [];
|
||||
|
||||
/**
|
||||
* Create new HTML attributes
|
||||
*
|
||||
* @param array $attributes
|
||||
*/
|
||||
public function __construct(array $attributes = null)
|
||||
{
|
||||
if (empty($attributes)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($attributes as $key => $value) {
|
||||
if ($value instanceof Attribute) {
|
||||
$this->addAttribute($value);
|
||||
} elseif (is_string($key)) {
|
||||
$this->add($key, $value);
|
||||
} elseif (is_array($value) && count($value) === 2) {
|
||||
$this->add(array_shift($value), array_shift($value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new HTML attributes
|
||||
*
|
||||
* @param array $attributes
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function create(array $attributes = null)
|
||||
{
|
||||
return new static($attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that the given attributes of mixed type are converted to an instance of attributes
|
||||
*
|
||||
* The conversion procedure is as follows:
|
||||
*
|
||||
* If the given attributes is already an instance of Attributes, returns the very same element.
|
||||
* If the attributes are given as an array of attribute name-value pairs, they are used to
|
||||
* construct and return a new Attributes instance.
|
||||
* If the attributes are null, an empty new instance of Attributes is returned.
|
||||
*
|
||||
* @param array|static|null $attributes
|
||||
*
|
||||
* @return static
|
||||
*
|
||||
* @throws InvalidArgumentException In case the given attributes are of an unsupported type
|
||||
*/
|
||||
public static function wantAttributes($attributes)
|
||||
{
|
||||
if ($attributes instanceof self) {
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
if (is_array($attributes)) {
|
||||
return new static($attributes);
|
||||
}
|
||||
|
||||
if ($attributes === null) {
|
||||
return new static();
|
||||
}
|
||||
|
||||
throw new InvalidArgumentException(sprintf(
|
||||
'Attributes instance, array or null expected. Got %s instead.',
|
||||
get_php_type($attributes)
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the collection of attributes as array
|
||||
*
|
||||
* @return Attribute[]
|
||||
*/
|
||||
public function getAttributes()
|
||||
{
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge the given attributes
|
||||
*
|
||||
* @param Attributes $attributes
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function merge(Attributes $attributes)
|
||||
{
|
||||
foreach ($attributes as $attribute) {
|
||||
$this->addAttribute($attribute);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the attribute with the given name exists, false otherwise
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has($name)
|
||||
{
|
||||
return array_key_exists($name, $this->attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the attribute with the given name
|
||||
*
|
||||
* If the attribute does not yet exist, it is automatically created and registered to this Attributes instance.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return Attribute
|
||||
*
|
||||
* @throws InvalidArgumentException If the attribute does not yet exist and its name contains special characters
|
||||
*/
|
||||
public function get($name)
|
||||
{
|
||||
if (! $this->has($name)) {
|
||||
$this->attributes[$name] = Attribute::createEmpty($name);
|
||||
}
|
||||
|
||||
return $this->attributes[$name];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the given attribute(s)
|
||||
*
|
||||
* If the attribute with the given name already exists, it gets overridden.
|
||||
*
|
||||
* @param string|array|Attribute|self $attribute The attribute(s) to add
|
||||
* @param string|bool|array $value The value of the attribute
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws InvalidArgumentException If the attribute name contains special characters
|
||||
*/
|
||||
public function set($attribute, $value = null)
|
||||
{
|
||||
if ($attribute instanceof self) {
|
||||
foreach ($attribute as $a) {
|
||||
$this->setAttribute($a);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if ($attribute instanceof Attribute) {
|
||||
$this->setAttribute($attribute);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (is_array($attribute)) {
|
||||
foreach ($attribute as $name => $value) {
|
||||
$this->set($name, $value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (array_key_exists($attribute, $this->setterCallbacks)) {
|
||||
$callback = $this->setterCallbacks[$attribute];
|
||||
|
||||
$callback($value);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
$this->attributes[$attribute] = Attribute::create($attribute, $value);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the given attribute(s)
|
||||
*
|
||||
* If an attribute with the same name already exists, the attribute's value will be added to the current value of
|
||||
* the attribute.
|
||||
*
|
||||
* @param string|array|Attribute|self $attribute The attribute(s) to add
|
||||
* @param string|bool|array $value The value of the attribute
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws InvalidArgumentException If the attribute does not yet exist and its name contains special characters
|
||||
*/
|
||||
public function add($attribute, $value = null)
|
||||
{
|
||||
if ($attribute === null) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
if ($attribute instanceof self) {
|
||||
foreach ($attribute as $attr) {
|
||||
$this->add($attr);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (is_array($attribute)) {
|
||||
foreach ($attribute as $name => $value) {
|
||||
$this->add($name, $value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if ($attribute instanceof Attribute) {
|
||||
$this->addAttribute($attribute);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (array_key_exists($attribute, $this->setterCallbacks)) {
|
||||
$callback = $this->setterCallbacks[$attribute];
|
||||
|
||||
$callback($value);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (! array_key_exists($attribute, $this->attributes)) {
|
||||
$this->attributes[$attribute] = Attribute::create($attribute, $value);
|
||||
} else {
|
||||
$this->attributes[$attribute]->addValue($value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the attribute with the given name or remove the given value from the attribute
|
||||
*
|
||||
* @param string $name The name of the attribute
|
||||
* @param null|string|array $value The value to remove if specified
|
||||
*
|
||||
* @return Attribute|false
|
||||
*/
|
||||
public function remove($name, $value = null)
|
||||
{
|
||||
if (! $this->has($name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$attribute = $this->attributes[$name];
|
||||
|
||||
if ($value === null) {
|
||||
unset($this->attributes[$name]);
|
||||
} else {
|
||||
$attribute->removeValue($value);
|
||||
}
|
||||
|
||||
return $attribute;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the specified attribute
|
||||
*
|
||||
* @param Attribute $attribute
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setAttribute(Attribute $attribute)
|
||||
{
|
||||
$this->attributes[$attribute->getName()] = $attribute;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the specified attribute
|
||||
*
|
||||
* If an attribute with the same name already exists, the given attribute's value
|
||||
* will be added to the current value of the attribute.
|
||||
*
|
||||
* @param Attribute $attribute
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addAttribute(Attribute $attribute)
|
||||
{
|
||||
$name = $attribute->getName();
|
||||
|
||||
if ($this->has($name)) {
|
||||
$this->attributes[$name]->addValue($attribute->getValue());
|
||||
} else {
|
||||
$this->attributes[$name] = $attribute;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the attributes name prefix
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getPrefix()
|
||||
{
|
||||
return $this->prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the attributes name prefix
|
||||
*
|
||||
* @param string $prefix
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPrefix($prefix)
|
||||
{
|
||||
$this->prefix = $prefix;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register callback for an attribute
|
||||
*
|
||||
* @param string $name Name of the attribute to register the callback for
|
||||
* @param callable $callback Callback to call when retrieving the attribute
|
||||
* @param callable $setterCallback Callback to call when setting the attribute
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws InvalidArgumentException If $callback is not callable or if $setterCallback is set and not callable
|
||||
*/
|
||||
public function registerAttributeCallback($name, $callback, $setterCallback = null)
|
||||
{
|
||||
if ($callback !== null) {
|
||||
if (! is_callable($callback)) {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects a callable callback');
|
||||
}
|
||||
|
||||
$this->callbacks[$name] = $callback;
|
||||
}
|
||||
|
||||
if ($setterCallback !== null) {
|
||||
if (! is_callable($setterCallback)) {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects a callable setterCallback');
|
||||
}
|
||||
|
||||
$this->setterCallbacks[$name] = $setterCallback;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render attributes to HTML
|
||||
*
|
||||
* If the value of an attribute is of type boolean, it will be rendered as
|
||||
* {@link http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes boolean attribute}.
|
||||
*
|
||||
* If the value of an attribute is null, it will be skipped.
|
||||
*
|
||||
* HTML-escaping of the attributes' values takes place automatically using {@link Attribute::escapeValue()}.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws InvalidArgumentException If the result of a callback is invalid
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
$attributes = $this->attributes;
|
||||
foreach ($this->callbacks as $name => $callback) {
|
||||
$attribute = call_user_func($callback);
|
||||
if ($attribute instanceof Attribute) {
|
||||
if ($attribute->isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($attribute === null) {
|
||||
continue;
|
||||
} elseif (is_scalar($attribute)) {
|
||||
$attribute = Attribute::create($name, $attribute);
|
||||
} else {
|
||||
throw new InvalidArgumentException(sprintf(
|
||||
'A registered attribute callback must return a scalar, null'
|
||||
. ' or an Attribute, got a %s',
|
||||
get_php_type($attribute)
|
||||
));
|
||||
}
|
||||
|
||||
$name = $attribute->getName();
|
||||
if (isset($attributes[$name])) {
|
||||
$attributes[$name] = clone $attributes[$name];
|
||||
$attributes[$name]->addValue($attribute->getValue());
|
||||
} else {
|
||||
$attributes[$name] = $attribute;
|
||||
}
|
||||
}
|
||||
|
||||
$parts = [];
|
||||
foreach ($attributes as $attribute) {
|
||||
if ($attribute->isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$parts[] = $attribute->render();
|
||||
}
|
||||
|
||||
if (empty($parts)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$separator = ' ' . $this->getPrefix();
|
||||
|
||||
return $separator . implode($separator, $parts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the attribute with the given name exists
|
||||
*
|
||||
* @param string $name Name of the attribute
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function offsetExists($name)
|
||||
{
|
||||
return $this->has($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the attribute with the given name
|
||||
*
|
||||
* If the attribute does not yet exist, it is automatically created and registered to this Attributes instance.
|
||||
*
|
||||
* @param string $name Name of the attribute
|
||||
*
|
||||
* @return Attribute
|
||||
*
|
||||
* @throws InvalidArgumentException If the attribute does not yet exist and its name contains special characters
|
||||
*/
|
||||
public function offsetGet($name)
|
||||
{
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the given attribute
|
||||
*
|
||||
* If the attribute with the given name already exists, it gets overridden.
|
||||
*
|
||||
* @param string $name Name of the attribute
|
||||
* @param mixed $value Value of the attribute
|
||||
*
|
||||
* @throws InvalidArgumentException If the attribute name contains special characters
|
||||
*/
|
||||
public function offsetSet($name, $value)
|
||||
{
|
||||
$this->set($name, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the attribute with the given name
|
||||
*
|
||||
* @param string $name Name of the attribute
|
||||
*/
|
||||
public function offsetUnset($name)
|
||||
{
|
||||
$this->remove($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an iterator for traversing the attributes
|
||||
*
|
||||
* @return Attribute[]|ArrayIterator
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
return new ArrayIterator($this->attributes);
|
||||
}
|
||||
}
|
355
vendor/ipl/html/src/BaseHtmlElement.php
vendored
Normal file
355
vendor/ipl/html/src/BaseHtmlElement.php
vendored
Normal file
@ -0,0 +1,355 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* Base class for HTML elements
|
||||
*
|
||||
* Extend this class in order to provide concrete HTML elements or series of HTML elements, e.g. widgets.
|
||||
* When extending this class you should provide the element's tag with {@link $tag}. Setting default attributes is
|
||||
* possible via {@link $defaultAttributes}. And the content of the element is provided in {@link assemble()}.
|
||||
*
|
||||
* # Example Usage
|
||||
* ```
|
||||
* namespace Acme\Widgets;
|
||||
*
|
||||
* use ipl\Html\BaseHtmlElement;
|
||||
*
|
||||
* class Dashboard extends BaseHtmlElement
|
||||
* {
|
||||
* protected $defaultAttributes = ['class' => 'acme-dashboard'];
|
||||
*
|
||||
* protected $tag = 'div';
|
||||
*
|
||||
* protected function assemble()
|
||||
* {
|
||||
* // ...
|
||||
* $this->add($content);
|
||||
* }
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
abstract class BaseHtmlElement extends HtmlDocument
|
||||
{
|
||||
/**
|
||||
* List of void elements which must not contain end tags or content
|
||||
*
|
||||
* If {@link $isVoid} is null, this property should be used to decide whether the content and end tag has to be
|
||||
* rendered.
|
||||
*
|
||||
* @var array
|
||||
*
|
||||
* @see https://www.w3.org/TR/html5/syntax.html#void-elements
|
||||
*/
|
||||
protected static $voidElements = [
|
||||
'area' => 1,
|
||||
'base' => 1,
|
||||
'br' => 1,
|
||||
'col' => 1,
|
||||
'embed' => 1,
|
||||
'hr' => 1,
|
||||
'img' => 1,
|
||||
'input' => 1,
|
||||
'link' => 1,
|
||||
'meta' => 1,
|
||||
'param' => 1,
|
||||
'source' => 1,
|
||||
'track' => 1,
|
||||
'wbr' => 1
|
||||
];
|
||||
|
||||
/** @var Attributes */
|
||||
protected $attributes;
|
||||
|
||||
/** @var bool Whether possible attribute callbacks have been registered */
|
||||
protected $attributeCallbacksRegistered = false;
|
||||
|
||||
/** @var bool|null Whether the element is void. If null, void check should use {@link $voidElements} */
|
||||
protected $isVoid;
|
||||
|
||||
/** @var array You may want to set default attributes when extending this class */
|
||||
protected $defaultAttributes;
|
||||
|
||||
/** @var string Tag of element. Set this property in order to provide the element's tag when extending this class */
|
||||
protected $tag;
|
||||
|
||||
/**
|
||||
* Get the attributes of the element
|
||||
*
|
||||
* @return Attributes
|
||||
*/
|
||||
public function getAttributes()
|
||||
{
|
||||
if ($this->attributes === null) {
|
||||
$default = $this->getDefaultAttributes();
|
||||
if (empty($default)) {
|
||||
$this->attributes = new Attributes();
|
||||
} else {
|
||||
$this->attributes = Attributes::wantAttributes($default);
|
||||
}
|
||||
|
||||
$this->ensureAttributeCallbacksRegistered();
|
||||
}
|
||||
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the attributes of the element
|
||||
*
|
||||
* @param Attributes|array|null $attributes
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setAttributes($attributes)
|
||||
{
|
||||
$this->attributes = Attributes::wantAttributes($attributes);
|
||||
|
||||
$this->attributeCallbacksRegistered = false;
|
||||
$this->ensureAttributeCallbacksRegistered();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the attribute with the given name and value
|
||||
*
|
||||
* If the attribute with the given name already exists, it gets overridden.
|
||||
*
|
||||
* @param string $name The name of the attribute
|
||||
* @param string|bool|array $value The value of the attribute
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setAttribute($name, $value)
|
||||
{
|
||||
$this->getAttributes()->set($name, $value);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the given attributes
|
||||
*
|
||||
* @param Attributes|array $attributes
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addAttributes($attributes)
|
||||
{
|
||||
$this->getAttributes()->add($attributes);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default attributes of the element
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getDefaultAttributes()
|
||||
{
|
||||
return $this->defaultAttributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the tag of the element
|
||||
*
|
||||
* Since HTML Elements must have a tag, this method throws an exception if the element does not have a tag.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws RuntimeException If the element does not have a tag
|
||||
*/
|
||||
final public function getTag()
|
||||
{
|
||||
$tag = $this->tag();
|
||||
|
||||
if (! strlen($tag)) {
|
||||
throw new RuntimeException('Element must have a tag');
|
||||
}
|
||||
|
||||
return $tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tag of the element
|
||||
*
|
||||
* @param string $tag
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setTag($tag)
|
||||
{
|
||||
$this->tag = $tag;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the element is void
|
||||
*
|
||||
* The default void detection which checks whether the element's tag is in the list of void elements according to
|
||||
* https://www.w3.org/TR/html5/syntax.html#void-elements.
|
||||
*
|
||||
* If you want to override this behavior, use {@link setVoid()}.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isVoid()
|
||||
{
|
||||
if ($this->isVoid !== null) {
|
||||
return $this->isVoid;
|
||||
}
|
||||
|
||||
$tag = $this->getTag();
|
||||
|
||||
return isset(self::$voidElements[$tag]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the element is void
|
||||
*
|
||||
* You may use this method to override the default void detection which checks whether the element's tag is in the
|
||||
* list of void elements according to https://www.w3.org/TR/html5/syntax.html#void-elements.
|
||||
*
|
||||
* If you specify null, void detection is reset to its default behavior.
|
||||
*
|
||||
* @param bool|null $void
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setVoid($void = true)
|
||||
{
|
||||
$this->isVoid = $void === null ?: (bool) $void;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that possible attribute callbacks have been registered
|
||||
*
|
||||
* Note that this method is automatically called in {@link getAttributes()} and {@link setAttributes()}.
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function ensureAttributeCallbacksRegistered()
|
||||
{
|
||||
if (! $this->attributeCallbacksRegistered) {
|
||||
$this->attributeCallbacksRegistered = true;
|
||||
$this->registerAttributeCallbacks($this->attributes);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the content of the element to HTML
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function renderContent()
|
||||
{
|
||||
return parent::renderUnwrapped();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the closing tag should be rendered
|
||||
*
|
||||
* @return bool True for void elements, false otherwise
|
||||
*/
|
||||
public function wantsClosingTag()
|
||||
{
|
||||
// TODO: There is more. SVG and MathML namespaces
|
||||
return ! $this->isVoid();
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this element to wrap the given document
|
||||
*
|
||||
* @param HtmlDocument $document
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function wrap(HtmlDocument $document)
|
||||
{
|
||||
$document->addWrapper($this);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal method for accessing the tag
|
||||
*
|
||||
* You may override this method in order to provide the tag dynamically
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function tag()
|
||||
{
|
||||
return $this->tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register attribute callbacks
|
||||
*
|
||||
* Override this method in order to register attribute callbacks in concrete classes.
|
||||
*/
|
||||
protected function registerAttributeCallbacks(Attributes $attributes)
|
||||
{
|
||||
}
|
||||
|
||||
public function addHtml(ValidHtml ...$content)
|
||||
{
|
||||
$this->ensureAssembled();
|
||||
|
||||
parent::addHtml(...$content);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* @throws RuntimeException If the element does not have a tag or is void but has content
|
||||
*/
|
||||
public function renderUnwrapped()
|
||||
{
|
||||
$this->ensureAssembled();
|
||||
|
||||
$tag = $this->getTag();
|
||||
$content = $this->renderContent();
|
||||
$attributes = $this->getAttributes()->render();
|
||||
|
||||
if (strlen($this->contentSeparator)) {
|
||||
$length = strlen($content);
|
||||
if ($length > 0) {
|
||||
if ($content[0] === '<') {
|
||||
$content = $this->contentSeparator . $content;
|
||||
$length++;
|
||||
}
|
||||
if ($content[$length - 1] === '>') {
|
||||
$content .= $this->contentSeparator;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! $this->wantsClosingTag()) {
|
||||
if (strlen($content)) {
|
||||
throw new RuntimeException('Void elements must not have content');
|
||||
}
|
||||
|
||||
return sprintf('<%s%s />', $tag, $attributes);
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<%s%s>%s</%s>',
|
||||
$tag,
|
||||
$attributes,
|
||||
$content,
|
||||
$tag
|
||||
);
|
||||
}
|
||||
}
|
115
vendor/ipl/html/src/Contract/FormElement.php
vendored
Normal file
115
vendor/ipl/html/src/Contract/FormElement.php
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\Contract;
|
||||
|
||||
use ipl\Html\Attributes;
|
||||
|
||||
/**
|
||||
* Representation of form elements
|
||||
*/
|
||||
interface FormElement extends Wrappable
|
||||
{
|
||||
/**
|
||||
* Get the attributes or options of the element
|
||||
*
|
||||
* @return Attributes
|
||||
*/
|
||||
public function getAttributes();
|
||||
|
||||
/**
|
||||
* Add attributes or options to the form element
|
||||
*
|
||||
* @param iterable $attributes
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addAttributes($attributes);
|
||||
|
||||
/**
|
||||
* Get the description for the element, if any
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDescription();
|
||||
|
||||
/**
|
||||
* Get the label for the element, if any
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getLabel();
|
||||
|
||||
/**
|
||||
* Get the validation error messages
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMessages();
|
||||
|
||||
/**
|
||||
* Add a validation error message
|
||||
*
|
||||
* @param string $message
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addMessage($message);
|
||||
|
||||
/**
|
||||
* Get the name of the element
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName();
|
||||
|
||||
/**
|
||||
* Get whether the element has a value
|
||||
*
|
||||
* @return bool False if the element's value is null, the empty string or the empty array; true otherwise
|
||||
*/
|
||||
public function hasValue();
|
||||
|
||||
/**
|
||||
* Get the value of the element
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValue();
|
||||
|
||||
/**
|
||||
* Set the value of the element
|
||||
*
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setValue($value);
|
||||
|
||||
/**
|
||||
* Get whether the element has been validated
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBeenValidated();
|
||||
|
||||
/**
|
||||
* Get whether the element is ignored
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isIgnored();
|
||||
|
||||
/**
|
||||
* Get whether the element is required
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isRequired();
|
||||
|
||||
/**
|
||||
* Get whether the element is valid
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isValid();
|
||||
}
|
18
vendor/ipl/html/src/Contract/FormElementDecorator.php
vendored
Normal file
18
vendor/ipl/html/src/Contract/FormElementDecorator.php
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\Contract;
|
||||
|
||||
use ipl\Html\ValidHtml;
|
||||
|
||||
/**
|
||||
* Representation of form element decorators
|
||||
*/
|
||||
interface FormElementDecorator extends ValidHtml
|
||||
{
|
||||
/**
|
||||
* Decorate the given form element
|
||||
*
|
||||
* @param FormElement $formElement
|
||||
*/
|
||||
public function decorate(FormElement $formElement);
|
||||
}
|
13
vendor/ipl/html/src/Contract/FormSubmitElement.php
vendored
Normal file
13
vendor/ipl/html/src/Contract/FormSubmitElement.php
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\Contract;
|
||||
|
||||
interface FormSubmitElement extends FormElement
|
||||
{
|
||||
/**
|
||||
* Get whether the element has been pressed
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBeenPressed();
|
||||
}
|
45
vendor/ipl/html/src/Contract/Wrappable.php
vendored
Normal file
45
vendor/ipl/html/src/Contract/Wrappable.php
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\Contract;
|
||||
|
||||
use ipl\Html\ValidHtml;
|
||||
|
||||
/**
|
||||
* Representation of wrappable elements
|
||||
*/
|
||||
interface Wrappable extends ValidHtml
|
||||
{
|
||||
/**
|
||||
* Get the wrapper, if any
|
||||
*
|
||||
* @return Wrappable|null
|
||||
*/
|
||||
public function getWrapper();
|
||||
|
||||
/**
|
||||
* Set the wrapper
|
||||
*
|
||||
* @param Wrappable $wrapper
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setWrapper(Wrappable $wrapper);
|
||||
|
||||
/**
|
||||
* Add a wrapper
|
||||
*
|
||||
* @param Wrappable $wrapper
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addWrapper(Wrappable $wrapper);
|
||||
|
||||
/**
|
||||
* Prepend a wrapper
|
||||
*
|
||||
* @param Wrappable $wrapper
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function prependWrapper(Wrappable $wrapper);
|
||||
}
|
114
vendor/ipl/html/src/DeferredText.php
vendored
Normal file
114
vendor/ipl/html/src/DeferredText.php
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* Text node where content creation is deferred until rendering
|
||||
*
|
||||
* The content is created by a passed in callback which is only called when the node is going to be rendered and
|
||||
* automatically escaped to HTML.
|
||||
* If the created content is already escaped, see {@link setEscaped()} to indicate this.
|
||||
*
|
||||
* # Example Usage
|
||||
* ```
|
||||
* $benchmark = new Benchmark();
|
||||
*
|
||||
* $performance = new DeferredText(function () use ($benchmark) {
|
||||
* return $benchmark->summary();
|
||||
* });
|
||||
*
|
||||
* execute_query();
|
||||
*
|
||||
* $benchmark->tick('Fetched results');
|
||||
*
|
||||
* generate_report();
|
||||
*
|
||||
* $benchmark->tick('Report generated');
|
||||
*
|
||||
* echo $performance;
|
||||
* ```
|
||||
*/
|
||||
class DeferredText implements ValidHtml
|
||||
{
|
||||
/** @var callable will return the text that should be rendered */
|
||||
protected $callback;
|
||||
|
||||
/** @var bool */
|
||||
protected $escaped = false;
|
||||
|
||||
/**
|
||||
* Create a new text node where content creation is deferred until rendering
|
||||
*
|
||||
* @param callable $callback Must return the content that should be rendered
|
||||
*/
|
||||
public function __construct(callable $callback)
|
||||
{
|
||||
$this->callback = $callback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new text node where content creation is deferred until rendering
|
||||
*
|
||||
* @param callable $callback Must return the content that should be rendered
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function create(callable $callback)
|
||||
{
|
||||
return new static($callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the callback promises that its content is already escaped
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isEscaped()
|
||||
{
|
||||
return $this->escaped;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the callback's content is already escaped
|
||||
*
|
||||
* @param bool $escaped
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setEscaped($escaped = true)
|
||||
{
|
||||
$this->escaped = $escaped;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render text to HTML when treated like a string
|
||||
*
|
||||
* Calls {@link render()} internally in order to render the text to HTML.
|
||||
* Exceptions will be automatically caught and returned as HTML string as well using {@link Error::render()}.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
try {
|
||||
return $this->render();
|
||||
} catch (Exception $e) {
|
||||
return Error::render($e);
|
||||
}
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
$callback = $this->callback;
|
||||
|
||||
if ($this->escaped) {
|
||||
return $callback();
|
||||
} else {
|
||||
return Html::escape($callback());
|
||||
}
|
||||
}
|
||||
}
|
117
vendor/ipl/html/src/Error.php
vendored
Normal file
117
vendor/ipl/html/src/Error.php
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use Exception;
|
||||
use Throwable;
|
||||
|
||||
use function ipl\Stdlib\get_php_type;
|
||||
|
||||
/**
|
||||
* Class Error
|
||||
*
|
||||
* TODO: Eventually allow to (statically) inject a custom error renderer.
|
||||
*
|
||||
* @package ipl\Html
|
||||
*/
|
||||
abstract class Error
|
||||
{
|
||||
/** @var bool */
|
||||
protected static $showTraces = true;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Exception|Throwable|string $error
|
||||
* @return HtmlDocument
|
||||
*/
|
||||
public static function show($error)
|
||||
{
|
||||
if ($error instanceof Throwable) {
|
||||
// PHP 7+
|
||||
$msg = static::createMessageForException($error);
|
||||
} elseif ($error instanceof Exception) {
|
||||
// PHP 5.x
|
||||
$msg = static::createMessageForException($error);
|
||||
} elseif (is_string($error)) {
|
||||
$msg = $error;
|
||||
} else {
|
||||
// TODO: translate?
|
||||
$msg = 'Got an invalid error';
|
||||
}
|
||||
|
||||
$result = static::renderErrorMessage($msg);
|
||||
if (static::showTraces()) {
|
||||
$result->addHtml(Html::tag('pre', $error->getTraceAsString()));
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Exception|Throwable|string $error
|
||||
* @return string
|
||||
*/
|
||||
public static function render($error)
|
||||
{
|
||||
return static::show($error)->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|null $show
|
||||
* @return bool
|
||||
*/
|
||||
public static function showTraces($show = null)
|
||||
{
|
||||
if ($show !== null) {
|
||||
self::$showTraces = (bool) $show;
|
||||
}
|
||||
|
||||
return self::$showTraces;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link get_php_type()} instead
|
||||
*/
|
||||
public static function getPhpTypeName($any)
|
||||
{
|
||||
return get_php_type($any);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Exception|Throwable $exception
|
||||
* @return string
|
||||
*/
|
||||
protected static function createMessageForException($exception)
|
||||
{
|
||||
$file = preg_split('/[\/\\\]/', $exception->getFile(), -1, PREG_SPLIT_NO_EMPTY);
|
||||
$file = array_pop($file);
|
||||
return sprintf(
|
||||
'%s (%s:%d)',
|
||||
$exception->getMessage(),
|
||||
$file,
|
||||
$exception->getLine()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string
|
||||
* @return HtmlDocument
|
||||
*/
|
||||
protected static function renderErrorMessage($message)
|
||||
{
|
||||
$output = new HtmlDocument();
|
||||
$output->addHtml(
|
||||
Html::tag('div', ['class' => 'exception'], [
|
||||
Html::tag('h1', [
|
||||
Html::tag('i', ['class' => 'icon-bug']),
|
||||
// TODO: Translate? More hints?
|
||||
'Oops, an error occurred!'
|
||||
]),
|
||||
Html::tag('pre', $message)
|
||||
])
|
||||
);
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
379
vendor/ipl/html/src/Form.php
vendored
Normal file
379
vendor/ipl/html/src/Form.php
vendored
Normal file
@ -0,0 +1,379 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html;
|
||||
|
||||
use Exception;
|
||||
use ipl\Html\Contract\FormElement;
|
||||
use ipl\Html\Contract\FormSubmitElement;
|
||||
use ipl\Html\FormElement\FormElements;
|
||||
use ipl\Stdlib\Messages;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
class Form extends BaseHtmlElement
|
||||
{
|
||||
use FormElements {
|
||||
remove as private removeElement;
|
||||
}
|
||||
use Messages;
|
||||
|
||||
const ON_ELEMENT_REGISTERED = 'elementRegistered';
|
||||
const ON_ERROR = 'error';
|
||||
const ON_REQUEST = 'request';
|
||||
const ON_SUCCESS = 'success';
|
||||
const ON_SENT = 'sent';
|
||||
|
||||
/** @var string Form submission URL */
|
||||
protected $action;
|
||||
|
||||
/** @var string HTTP method to submit the form with */
|
||||
protected $method = 'POST';
|
||||
|
||||
/** @var FormSubmitElement Primary submit button */
|
||||
protected $submitButton;
|
||||
|
||||
/** @var FormSubmitElement[] Other elements that may submit the form */
|
||||
protected $submitElements = [];
|
||||
|
||||
/** @var bool Whether the form is valid */
|
||||
protected $isValid;
|
||||
|
||||
/** @var ServerRequestInterface The server request being processed */
|
||||
protected $request;
|
||||
|
||||
/** @var string */
|
||||
protected $redirectUrl;
|
||||
|
||||
protected $tag = 'form';
|
||||
|
||||
/**
|
||||
* Get the Form submission URL
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getAction()
|
||||
{
|
||||
return $this->action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Form submission URL
|
||||
*
|
||||
* @param string $action
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setAction($action)
|
||||
{
|
||||
$this->action = $action;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HTTP method to submit the form with
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return $this->method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the HTTP method to submit the form with
|
||||
*
|
||||
* @param string $method
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setMethod($method)
|
||||
{
|
||||
$this->method = strtoupper($method);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the form has a primary submit button
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasSubmitButton()
|
||||
{
|
||||
return $this->submitButton !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary submit button
|
||||
*
|
||||
* @return FormSubmitElement|null
|
||||
*/
|
||||
public function getSubmitButton()
|
||||
{
|
||||
return $this->submitButton;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the primary submit button
|
||||
*
|
||||
* @param FormSubmitElement $element
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setSubmitButton(FormSubmitElement $element)
|
||||
{
|
||||
$this->submitButton = $element;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the submit element used to send the form
|
||||
*
|
||||
* @return FormSubmitElement|null
|
||||
*/
|
||||
public function getPressedSubmitElement()
|
||||
{
|
||||
foreach ($this->submitElements as $submitElement) {
|
||||
if ($submitElement->hasBeenPressed()) {
|
||||
return $submitElement;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ServerRequestInterface|null
|
||||
*/
|
||||
public function getRequest()
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
public function setRequest($request)
|
||||
{
|
||||
$this->request = $request;
|
||||
$this->emit(Form::ON_REQUEST, [$request]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the url to redirect to on success
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRedirectUrl()
|
||||
{
|
||||
return $this->redirectUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the url to redirect to on success
|
||||
*
|
||||
* @param string $url
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setRedirectUrl($url)
|
||||
{
|
||||
$this->redirectUrl = $url;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequestInterface $request
|
||||
* @return $this
|
||||
*/
|
||||
public function handleRequest(ServerRequestInterface $request)
|
||||
{
|
||||
$this->setRequest($request);
|
||||
|
||||
if (! $this->hasBeenSent()) {
|
||||
// Always assemble
|
||||
$this->ensureAssembled();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
switch ($request->getMethod()) {
|
||||
case 'POST':
|
||||
$params = $request->getParsedBody();
|
||||
|
||||
break;
|
||||
case 'GET':
|
||||
parse_str($request->getUri()->getQuery(), $params);
|
||||
|
||||
break;
|
||||
default:
|
||||
$params = [];
|
||||
}
|
||||
|
||||
$this->populate($params);
|
||||
|
||||
// Assemble after populate in order to conditionally provide form elements
|
||||
$this->ensureAssembled();
|
||||
|
||||
if ($this->hasBeenSubmitted()) {
|
||||
if ($this->isValid()) {
|
||||
try {
|
||||
$this->emit(Form::ON_SENT, [$this]);
|
||||
$this->onSuccess();
|
||||
$this->emitOnce(Form::ON_SUCCESS, [$this]);
|
||||
} catch (Exception $e) {
|
||||
$this->addMessage($e);
|
||||
$this->onError();
|
||||
$this->emit(Form::ON_ERROR, [$e, $this]);
|
||||
}
|
||||
} else {
|
||||
$this->onError();
|
||||
}
|
||||
} else {
|
||||
$this->validatePartial();
|
||||
$this->emit(Form::ON_SENT, [$this]);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the form has been sent
|
||||
*
|
||||
* A form is considered sent if the request's method equals the form's method.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBeenSent()
|
||||
{
|
||||
if ($this->request === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->request->getMethod() === $this->getMethod();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the form has been submitted
|
||||
*
|
||||
* A form is submitted when it has been sent and when the primary submit button, if set, has been pressed.
|
||||
* This method calls {@link hasBeenSent()} in order to detect whether the form has been sent.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBeenSubmitted()
|
||||
{
|
||||
if (! $this->hasBeenSent()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->hasSubmitButton()) {
|
||||
return $this->getSubmitButton()->hasBeenPressed();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether the form is valid
|
||||
*
|
||||
* {@link validate()} is called automatically if the form has not been validated before.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isValid()
|
||||
{
|
||||
if ($this->isValid === null) {
|
||||
$this->validate();
|
||||
}
|
||||
|
||||
return $this->isValid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate all elements
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
$valid = true;
|
||||
foreach ($this->elements as $element) {
|
||||
if ($element->isRequired() && ! $element->hasValue()) {
|
||||
$element->addMessage('This field is required');
|
||||
$valid = false;
|
||||
continue;
|
||||
}
|
||||
if (! $element->isValid()) {
|
||||
$valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->isValid = $valid;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate all elements that have a value
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function validatePartial()
|
||||
{
|
||||
foreach ($this->getElements() as $element) {
|
||||
$element->validate();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function remove(ValidHtml $elementOrHtml)
|
||||
{
|
||||
if ($this->submitButton === $elementOrHtml) {
|
||||
$this->submitButton = null;
|
||||
}
|
||||
|
||||
$this->removeElement($elementOrHtml);
|
||||
}
|
||||
|
||||
protected function onError()
|
||||
{
|
||||
$errors = Html::tag('ul', ['class' => 'errors']);
|
||||
foreach ($this->getMessages() as $message) {
|
||||
if ($message instanceof Exception) {
|
||||
$message = $message->getMessage();
|
||||
}
|
||||
|
||||
$errors->addHtml(Html::tag('li', $message));
|
||||
}
|
||||
|
||||
if (! $errors->isEmpty()) {
|
||||
$this->prependHtml($errors);
|
||||
}
|
||||
}
|
||||
|
||||
protected function onSuccess()
|
||||
{
|
||||
// $this->redirectOnSuccess();
|
||||
}
|
||||
|
||||
protected function onElementRegistered(FormElement $element)
|
||||
{
|
||||
if ($element instanceof FormSubmitElement) {
|
||||
$this->submitElements[$element->getName()] = $element;
|
||||
|
||||
if (! $this->hasSubmitButton()) {
|
||||
$this->setSubmitButton($element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function registerAttributeCallbacks(Attributes $attributes)
|
||||
{
|
||||
$attributes
|
||||
->registerAttributeCallback('action', [$this, 'getAction'], [$this, 'setAction'])
|
||||
->registerAttributeCallback('method', [$this, 'getMethod'], [$this, 'setMethod']);
|
||||
}
|
||||
}
|
41
vendor/ipl/html/src/FormDecorator/CallbackDecorator.php
vendored
Normal file
41
vendor/ipl/html/src/FormDecorator/CallbackDecorator.php
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\FormDecorator;
|
||||
|
||||
use Closure;
|
||||
use ipl\Html\Contract\FormElement;
|
||||
use ipl\Html\Contract\FormElementDecorator;
|
||||
use ipl\Html\HtmlDocument;
|
||||
|
||||
class CallbackDecorator extends HtmlDocument implements FormElementDecorator
|
||||
{
|
||||
/** @var Closure The decorating callback */
|
||||
protected $callback;
|
||||
|
||||
/** @var FormElement The decorated form element */
|
||||
protected $formElement;
|
||||
|
||||
/**
|
||||
* Create a new CallbackDecorator
|
||||
*
|
||||
* @param Closure $callback
|
||||
*/
|
||||
public function __construct(Closure $callback)
|
||||
{
|
||||
$this->callback = $callback;
|
||||
}
|
||||
|
||||
public function decorate(FormElement $formElement)
|
||||
{
|
||||
$decorator = clone $this;
|
||||
|
||||
$decorator->formElement = $formElement;
|
||||
|
||||
$formElement->prependWrapper($decorator);
|
||||
}
|
||||
|
||||
protected function assemble()
|
||||
{
|
||||
call_user_func($this->callback, $this->formElement, $this);
|
||||
}
|
||||
}
|
141
vendor/ipl/html/src/FormDecorator/DdDtDecorator.php
vendored
Normal file
141
vendor/ipl/html/src/FormDecorator/DdDtDecorator.php
vendored
Normal file
@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\FormDecorator;
|
||||
|
||||
use ipl\Html\BaseHtmlElement;
|
||||
use ipl\Html\FormElement\BaseFormElement;
|
||||
use ipl\Html\Html;
|
||||
use ipl\Html\ValidHtml;
|
||||
|
||||
class DdDtDecorator extends BaseHtmlElement implements DecoratorInterface
|
||||
{
|
||||
protected $tag = 'dl';
|
||||
|
||||
protected $dt;
|
||||
|
||||
protected $dd;
|
||||
|
||||
/** @var BaseFormElement */
|
||||
protected $wrappedElement;
|
||||
|
||||
protected $ready = false;
|
||||
|
||||
/**
|
||||
* @param BaseFormElement $element
|
||||
* @return static
|
||||
*/
|
||||
public function decorate(BaseFormElement $element)
|
||||
{
|
||||
// TODO: ignore hidden?
|
||||
$newWrapper = clone($this);
|
||||
$newWrapper->wrappedElement = $element;
|
||||
$element->prependWrapper($newWrapper);
|
||||
|
||||
return $newWrapper;
|
||||
}
|
||||
|
||||
protected function renderLabel()
|
||||
{
|
||||
if ($this->wrappedElement instanceof BaseFormElement) {
|
||||
$label = $this->wrappedElement->getLabel();
|
||||
if (strlen($label)) {
|
||||
return Html::tag('label', null, $label);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getAttributes()
|
||||
{
|
||||
$attributes = parent::getAttributes();
|
||||
|
||||
// TODO: only when sent?!
|
||||
if ($this->wrappedElement->hasBeenValidatedAndIsNotValid()) {
|
||||
$classes = $attributes->get('class');
|
||||
if (
|
||||
empty($classes)
|
||||
|| (is_array($classes) && ! in_array('errors', $classes))
|
||||
|| (is_string($classes) && $classes !== 'errors')
|
||||
) {
|
||||
$attributes->add('class', 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
protected function renderDescription()
|
||||
{
|
||||
if ($this->wrappedElement instanceof BaseFormElement) {
|
||||
$description = $this->wrappedElement->getDescription();
|
||||
if (strlen($description)) {
|
||||
return Html::tag('p', ['class' => 'description'], $description);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function renderErrors()
|
||||
{
|
||||
if ($this->wrappedElement instanceof BaseFormElement) {
|
||||
$errors = [];
|
||||
foreach ($this->wrappedElement->getMessages() as $message) {
|
||||
$errors[] = Html::tag('p', ['class' => 'error'], $message);
|
||||
}
|
||||
|
||||
if (! empty($errors)) {
|
||||
return $errors;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function addHtml(ValidHtml ...$content)
|
||||
{
|
||||
// TODO: is this required?
|
||||
if (! in_array($this->wrappedElement, $content, true)) {
|
||||
parent::addHtml(...$content);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function assemble()
|
||||
{
|
||||
$this->addHtml($this->dt(), $this->dd());
|
||||
$this->ready = true;
|
||||
}
|
||||
|
||||
protected function dt()
|
||||
{
|
||||
if ($this->dt === null) {
|
||||
$this->dt = Html::tag('dt', null, $this->renderLabel());
|
||||
}
|
||||
|
||||
return $this->dt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \ipl\Html\HtmlElement
|
||||
*/
|
||||
protected function dd()
|
||||
{
|
||||
if ($this->dd === null) {
|
||||
$this->dd = Html::tag('dd', null, [
|
||||
$this->wrappedElement,
|
||||
$this->renderErrors(),
|
||||
$this->renderDescription()
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->dd;
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
$this->wrapper = null;
|
||||
}
|
||||
}
|
19
vendor/ipl/html/src/FormDecorator/DecoratorInterface.php
vendored
Normal file
19
vendor/ipl/html/src/FormDecorator/DecoratorInterface.php
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\FormDecorator;
|
||||
|
||||
use ipl\Html\Contract\FormElementDecorator;
|
||||
use ipl\Html\FormElement\BaseFormElement;
|
||||
|
||||
/** @deprecated Use {@link FormElementDecorator} instead */
|
||||
interface DecoratorInterface
|
||||
{
|
||||
/**
|
||||
* Set the form element to decorate
|
||||
*
|
||||
* @param BaseFormElement $formElement
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function decorate(BaseFormElement $formElement);
|
||||
}
|
132
vendor/ipl/html/src/FormDecorator/DivDecorator.php
vendored
Normal file
132
vendor/ipl/html/src/FormDecorator/DivDecorator.php
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
namespace ipl\Html\FormDecorator;
|
||||
|
||||
use ipl\Html\Attributes;
|
||||
use ipl\Html\BaseHtmlElement;
|
||||
use ipl\Html\Contract\FormElement;
|
||||
use ipl\Html\Contract\FormElementDecorator;
|
||||
use ipl\Html\Contract\FormSubmitElement;
|
||||
use ipl\Html\FormElement\HiddenElement;
|
||||
use ipl\Html\Html;
|
||||
use ipl\Html\HtmlElement;
|
||||
use ipl\Html\Text;
|
||||
|
||||
/**
|
||||
* Form element decorator based on div elements
|
||||
*/
|
||||
class DivDecorator extends BaseHtmlElement implements FormElementDecorator
|
||||
{
|
||||
/** @var string CSS class to use for submit elements */
|
||||
const SUBMIT_ELEMENT_CLASS = 'form-control';
|
||||
|
||||
/** @var string CSS class to use for all input elements */
|
||||
const INPUT_ELEMENT_CLASS = 'form-element';
|
||||
|
||||
/** @var string CSS class to use for form descriptions */
|
||||
const DESCRIPTION_CLASS = 'form-element-description';
|
||||
|
||||
/** @var string CSS class to use for form errors */
|
||||
const ERROR_CLASS = 'form-element-errors';
|
||||
|
||||
/** @var string CSS class to set on the decorator if the element has errors */
|
||||
const ERROR_HINT_CLASS = 'has-error';
|
||||
|
||||
/** @var FormElement The decorated form element */
|
||||
protected $formElement;
|
||||
|
||||
protected $tag = 'div';
|
||||
|
||||
public function decorate(FormElement $formElement)
|
||||
{
|
||||
if ($formElement instanceof HiddenElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
$decorator = clone $this;
|
||||
|
||||
$decorator->formElement = $formElement;
|
||||
|
||||
$classes = [static::INPUT_ELEMENT_CLASS];
|
||||
if ($formElement instanceof FormSubmitElement) {
|
||||
$classes[] = static::SUBMIT_ELEMENT_CLASS;
|
||||
}
|
||||
|
||||
$decorator->getAttributes()->add('class', $classes);
|
||||
|
||||
$formElement->prependWrapper($decorator);
|
||||
}
|
||||
|
||||
protected function assembleDescription()
|
||||
{
|
||||
$description = $this->formElement->getDescription();
|
||||
|
||||
if ($description !== null) {
|
||||
$descriptionId = null;
|
||||
if ($this->formElement->getAttributes()->has('id')) {
|
||||
$descriptionId = 'desc_' . $this->formElement->getAttributes()->get('id')->getValue();
|
||||
$this->formElement->getAttributes()->set('aria-describedby', $descriptionId);
|
||||
}
|
||||
|
||||
return Html::tag('p', ['id' => $descriptionId, 'class' => static::DESCRIPTION_CLASS], $description);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function assembleElement()
|
||||
{
|
||||
if ($this->formElement->isRequired()) {
|
||||
$this->formElement->getAttributes()->set('aria-required', 'true');
|
||||
}
|
||||
|
||||
return $this->formElement;
|
||||
}
|
||||
|
||||
protected function assembleErrors()
|
||||
{
|
||||
$errors = new HtmlElement('ul', Attributes::create(['class' => static::ERROR_CLASS]));
|
||||
|
||||
foreach ($this->formElement->getMessages() as $message) {
|
||||
$errors->addHtml(
|
||||
new HtmlElement('li', Attributes::create(['class' => static::ERROR_CLASS]), Text::create($message))
|
||||
);
|
||||
}
|
||||
|
||||
if (! $errors->isEmpty()) {
|
||||
return $errors;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function assembleLabel()
|
||||
{
|
||||
$label = $this->formElement->getLabel();
|
||||
|
||||
if ($label !== null) {
|
||||
$attributes = null;
|
||||
if ($this->formElement->getAttributes()->has('id')) {
|
||||
$attributes = new Attributes(['for' => $this->formElement->getAttributes()->get('id')->getValue()]);
|
||||
}
|
||||
|
||||
return Html::tag('label', $attributes, $label);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function assemble()
|
||||
{
|
||||
if ($this->formElement->hasBeenValidated() && ! $this->formElement->isValid()) {
|
||||
$this->getAttributes()->add('class', static::ERROR_HINT_CLASS);
|
||||
}
|
||||
|
||||
$this->addHtml(...Html::wantHtmlList([
|
||||
$this->assembleLabel(),
|
||||
$this->assembleElement(),
|
||||
$this->assembleDescription(),
|
||||
$this->assembleErrors()
|
||||
]));
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user