Compare commits
No commits in common. "f2e265391ca20210587a78b30d6451dc00f863b6" and "237fd274892f8a06cc43b083e2e6fae792c2d81e" have entirely different histories.
f2e265391c
...
237fd27489
22
.eslintrc.js
22
.eslintrc.js
@ -1,22 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"es2021": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:@typescript-eslint/recommended"
|
|
||||||
],
|
|
||||||
"overrides": [
|
|
||||||
],
|
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": "latest",
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"plugins": [
|
|
||||||
"@typescript-eslint"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
}
|
|
||||||
}
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -49,6 +49,3 @@ Thumbs.db
|
|||||||
projects/common/node_modules/
|
projects/common/node_modules/
|
||||||
projects/common-map/node_modules/
|
projects/common-map/node_modules/
|
||||||
.angular/*
|
.angular/*
|
||||||
projects/common-map3d/node_modules/
|
|
||||||
projects/common-map/node_modules/
|
|
||||||
projects/common/node_modules/
|
|
||||||
|
@ -55,11 +55,5 @@ ng serve
|
|||||||
|
|
||||||
Point your browser to http://localhost:4200
|
Point your browser to http://localhost:4200
|
||||||
|
|
||||||
*ESLint*
|
|
||||||
|
|
||||||
```
|
|
||||||
npm run lint src
|
|
||||||
npm run lint projects/common/src
|
|
||||||
npm run lint projects/common-map/src
|
|
||||||
npm run lint projects/common-map3d/src
|
|
||||||
```
|
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"src/styles.css",
|
"src/styles.css",
|
||||||
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||||
"fontawesome-6.2.1/css/all.min.css",
|
"fontawesome-5.15.2/css/all.min.css",
|
||||||
"fonts/FMIconFont/style.css",
|
"fonts/FMIconFont/style.css",
|
||||||
"node_modules/cesium/Build/Cesium/Widgets/widgets.css",
|
"node_modules/cesium/Build/Cesium/Widgets/widgets.css",
|
||||||
"node_modules/ol/ol.css"
|
"node_modules/ol/ol.css"
|
||||||
|
12788
fontawesome-5.15.2/css/all.css
Normal file
12788
fontawesome-5.15.2/css/all.css
Normal file
File diff suppressed because it is too large
Load Diff
5
fontawesome-5.15.2/css/all.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
15
fontawesome-5.15.2/css/brands.css
Normal file
15
fontawesome-5.15.2/css/brands.css
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 5 Brands';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-brands-400.eot");
|
||||||
|
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
|
||||||
|
|
||||||
|
.fab {
|
||||||
|
font-family: 'Font Awesome 5 Brands';
|
||||||
|
font-weight: 400; }
|
5
fontawesome-5.15.2/css/brands.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/brands.min.css
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
|
5609
fontawesome-5.15.2/css/duotone.css
Normal file
5609
fontawesome-5.15.2/css/duotone.css
Normal file
File diff suppressed because it is too large
Load Diff
5
fontawesome-5.15.2/css/duotone.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/duotone.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7138
fontawesome-5.15.2/css/fontawesome.css
vendored
Normal file
7138
fontawesome-5.15.2/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5
fontawesome-5.15.2/css/fontawesome.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/fontawesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
15
fontawesome-5.15.2/css/light.css
Normal file
15
fontawesome-5.15.2/css/light.css
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-light-300.eot");
|
||||||
|
src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); }
|
||||||
|
|
||||||
|
.fal {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-weight: 300; }
|
5
fontawesome-5.15.2/css/light.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/light.min.css
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-family:"Font Awesome 5 Pro";font-weight:300}
|
15
fontawesome-5.15.2/css/regular.css
Normal file
15
fontawesome-5.15.2/css/regular.css
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-regular-400.eot");
|
||||||
|
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
|
||||||
|
|
||||||
|
.far {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-weight: 400; }
|
5
fontawesome-5.15.2/css/regular.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/regular.min.css
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Pro";font-weight:400}
|
16
fontawesome-5.15.2/css/solid.css
Normal file
16
fontawesome-5.15.2/css/solid.css
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-solid-900.eot");
|
||||||
|
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
|
||||||
|
|
||||||
|
.fa,
|
||||||
|
.fas {
|
||||||
|
font-family: 'Font Awesome 5 Pro';
|
||||||
|
font-weight: 900; }
|
5
fontawesome-5.15.2/css/solid.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/solid.min.css
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}
|
371
fontawesome-5.15.2/css/svg-with-js.css
Normal file
371
fontawesome-5.15.2/css/svg-with-js.css
Normal file
@ -0,0 +1,371 @@
|
|||||||
|
/*!
|
||||||
|
* Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license (Commercial License)
|
||||||
|
*/
|
||||||
|
svg:not(:root).svg-inline--fa {
|
||||||
|
overflow: visible; }
|
||||||
|
|
||||||
|
.svg-inline--fa {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: inherit;
|
||||||
|
height: 1em;
|
||||||
|
overflow: visible;
|
||||||
|
vertical-align: -.125em; }
|
||||||
|
.svg-inline--fa.fa-lg {
|
||||||
|
vertical-align: -.225em; }
|
||||||
|
.svg-inline--fa.fa-w-1 {
|
||||||
|
width: 0.0625em; }
|
||||||
|
.svg-inline--fa.fa-w-2 {
|
||||||
|
width: 0.125em; }
|
||||||
|
.svg-inline--fa.fa-w-3 {
|
||||||
|
width: 0.1875em; }
|
||||||
|
.svg-inline--fa.fa-w-4 {
|
||||||
|
width: 0.25em; }
|
||||||
|
.svg-inline--fa.fa-w-5 {
|
||||||
|
width: 0.3125em; }
|
||||||
|
.svg-inline--fa.fa-w-6 {
|
||||||
|
width: 0.375em; }
|
||||||
|
.svg-inline--fa.fa-w-7 {
|
||||||
|
width: 0.4375em; }
|
||||||
|
.svg-inline--fa.fa-w-8 {
|
||||||
|
width: 0.5em; }
|
||||||
|
.svg-inline--fa.fa-w-9 {
|
||||||
|
width: 0.5625em; }
|
||||||
|
.svg-inline--fa.fa-w-10 {
|
||||||
|
width: 0.625em; }
|
||||||
|
.svg-inline--fa.fa-w-11 {
|
||||||
|
width: 0.6875em; }
|
||||||
|
.svg-inline--fa.fa-w-12 {
|
||||||
|
width: 0.75em; }
|
||||||
|
.svg-inline--fa.fa-w-13 {
|
||||||
|
width: 0.8125em; }
|
||||||
|
.svg-inline--fa.fa-w-14 {
|
||||||
|
width: 0.875em; }
|
||||||
|
.svg-inline--fa.fa-w-15 {
|
||||||
|
width: 0.9375em; }
|
||||||
|
.svg-inline--fa.fa-w-16 {
|
||||||
|
width: 1em; }
|
||||||
|
.svg-inline--fa.fa-w-17 {
|
||||||
|
width: 1.0625em; }
|
||||||
|
.svg-inline--fa.fa-w-18 {
|
||||||
|
width: 1.125em; }
|
||||||
|
.svg-inline--fa.fa-w-19 {
|
||||||
|
width: 1.1875em; }
|
||||||
|
.svg-inline--fa.fa-w-20 {
|
||||||
|
width: 1.25em; }
|
||||||
|
.svg-inline--fa.fa-pull-left {
|
||||||
|
margin-right: .3em;
|
||||||
|
width: auto; }
|
||||||
|
.svg-inline--fa.fa-pull-right {
|
||||||
|
margin-left: .3em;
|
||||||
|
width: auto; }
|
||||||
|
.svg-inline--fa.fa-border {
|
||||||
|
height: 1.5em; }
|
||||||
|
.svg-inline--fa.fa-li {
|
||||||
|
width: 2em; }
|
||||||
|
.svg-inline--fa.fa-fw {
|
||||||
|
width: 1.25em; }
|
||||||
|
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0; }
|
||||||
|
|
||||||
|
.fa-layers {
|
||||||
|
display: inline-block;
|
||||||
|
height: 1em;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: -.125em;
|
||||||
|
width: 1em; }
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center; }
|
||||||
|
|
||||||
|
.fa-layers-text, .fa-layers-counter {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center; }
|
||||||
|
|
||||||
|
.fa-layers-text {
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center; }
|
||||||
|
|
||||||
|
.fa-layers-counter {
|
||||||
|
background-color: #ff253a;
|
||||||
|
border-radius: 1em;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #fff;
|
||||||
|
height: 1.5em;
|
||||||
|
line-height: 1;
|
||||||
|
max-width: 5em;
|
||||||
|
min-width: 1.5em;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: .25em;
|
||||||
|
right: 0;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
top: 0;
|
||||||
|
-webkit-transform: scale(0.25);
|
||||||
|
transform: scale(0.25);
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right; }
|
||||||
|
|
||||||
|
.fa-layers-bottom-right {
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(0.25);
|
||||||
|
transform: scale(0.25);
|
||||||
|
-webkit-transform-origin: bottom right;
|
||||||
|
transform-origin: bottom right; }
|
||||||
|
|
||||||
|
.fa-layers-bottom-left {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: auto;
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(0.25);
|
||||||
|
transform: scale(0.25);
|
||||||
|
-webkit-transform-origin: bottom left;
|
||||||
|
transform-origin: bottom left; }
|
||||||
|
|
||||||
|
.fa-layers-top-right {
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
-webkit-transform: scale(0.25);
|
||||||
|
transform: scale(0.25);
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right; }
|
||||||
|
|
||||||
|
.fa-layers-top-left {
|
||||||
|
left: 0;
|
||||||
|
right: auto;
|
||||||
|
top: 0;
|
||||||
|
-webkit-transform: scale(0.25);
|
||||||
|
transform: scale(0.25);
|
||||||
|
-webkit-transform-origin: top left;
|
||||||
|
transform-origin: top left; }
|
||||||
|
|
||||||
|
.fa-lg {
|
||||||
|
font-size: 1.33333em;
|
||||||
|
line-height: 0.75em;
|
||||||
|
vertical-align: -.0667em; }
|
||||||
|
|
||||||
|
.fa-xs {
|
||||||
|
font-size: .75em; }
|
||||||
|
|
||||||
|
.fa-sm {
|
||||||
|
font-size: .875em; }
|
||||||
|
|
||||||
|
.fa-1x {
|
||||||
|
font-size: 1em; }
|
||||||
|
|
||||||
|
.fa-2x {
|
||||||
|
font-size: 2em; }
|
||||||
|
|
||||||
|
.fa-3x {
|
||||||
|
font-size: 3em; }
|
||||||
|
|
||||||
|
.fa-4x {
|
||||||
|
font-size: 4em; }
|
||||||
|
|
||||||
|
.fa-5x {
|
||||||
|
font-size: 5em; }
|
||||||
|
|
||||||
|
.fa-6x {
|
||||||
|
font-size: 6em; }
|
||||||
|
|
||||||
|
.fa-7x {
|
||||||
|
font-size: 7em; }
|
||||||
|
|
||||||
|
.fa-8x {
|
||||||
|
font-size: 8em; }
|
||||||
|
|
||||||
|
.fa-9x {
|
||||||
|
font-size: 9em; }
|
||||||
|
|
||||||
|
.fa-10x {
|
||||||
|
font-size: 10em; }
|
||||||
|
|
||||||
|
.fa-fw {
|
||||||
|
text-align: center;
|
||||||
|
width: 1.25em; }
|
||||||
|
|
||||||
|
.fa-ul {
|
||||||
|
list-style-type: none;
|
||||||
|
margin-left: 2.5em;
|
||||||
|
padding-left: 0; }
|
||||||
|
.fa-ul > li {
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
.fa-li {
|
||||||
|
left: -2em;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: 2em;
|
||||||
|
line-height: inherit; }
|
||||||
|
|
||||||
|
.fa-border {
|
||||||
|
border: solid 0.08em #eee;
|
||||||
|
border-radius: .1em;
|
||||||
|
padding: .2em .25em .15em; }
|
||||||
|
|
||||||
|
.fa-pull-left {
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.fa-pull-right {
|
||||||
|
float: right; }
|
||||||
|
|
||||||
|
.fa.fa-pull-left,
|
||||||
|
.fas.fa-pull-left,
|
||||||
|
.far.fa-pull-left,
|
||||||
|
.fal.fa-pull-left,
|
||||||
|
.fab.fa-pull-left {
|
||||||
|
margin-right: .3em; }
|
||||||
|
|
||||||
|
.fa.fa-pull-right,
|
||||||
|
.fas.fa-pull-right,
|
||||||
|
.far.fa-pull-right,
|
||||||
|
.fal.fa-pull-right,
|
||||||
|
.fab.fa-pull-right {
|
||||||
|
margin-left: .3em; }
|
||||||
|
|
||||||
|
.fa-spin {
|
||||||
|
-webkit-animation: fa-spin 2s infinite linear;
|
||||||
|
animation: fa-spin 2s infinite linear; }
|
||||||
|
|
||||||
|
.fa-pulse {
|
||||||
|
-webkit-animation: fa-spin 1s infinite steps(8);
|
||||||
|
animation: fa-spin 1s infinite steps(8); }
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg); } }
|
||||||
|
|
||||||
|
@keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg); }
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg); } }
|
||||||
|
|
||||||
|
.fa-rotate-90 {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg); }
|
||||||
|
|
||||||
|
.fa-rotate-180 {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg); }
|
||||||
|
|
||||||
|
.fa-rotate-270 {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg); }
|
||||||
|
|
||||||
|
.fa-flip-horizontal {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
|
||||||
|
-webkit-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, 1); }
|
||||||
|
|
||||||
|
.fa-flip-vertical {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||||
|
-webkit-transform: scale(1, -1);
|
||||||
|
transform: scale(1, -1); }
|
||||||
|
|
||||||
|
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||||
|
-webkit-transform: scale(-1, -1);
|
||||||
|
transform: scale(-1, -1); }
|
||||||
|
|
||||||
|
:root .fa-rotate-90,
|
||||||
|
:root .fa-rotate-180,
|
||||||
|
:root .fa-rotate-270,
|
||||||
|
:root .fa-flip-horizontal,
|
||||||
|
:root .fa-flip-vertical,
|
||||||
|
:root .fa-flip-both {
|
||||||
|
-webkit-filter: none;
|
||||||
|
filter: none; }
|
||||||
|
|
||||||
|
.fa-stack {
|
||||||
|
display: inline-block;
|
||||||
|
height: 2em;
|
||||||
|
position: relative;
|
||||||
|
width: 2.5em; }
|
||||||
|
|
||||||
|
.fa-stack-1x,
|
||||||
|
.fa-stack-2x {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0; }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-stack-1x {
|
||||||
|
height: 1em;
|
||||||
|
width: 1.25em; }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-stack-2x {
|
||||||
|
height: 2em;
|
||||||
|
width: 2.5em; }
|
||||||
|
|
||||||
|
.fa-inverse {
|
||||||
|
color: #fff; }
|
||||||
|
|
||||||
|
.sr-only {
|
||||||
|
border: 0;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 1px; }
|
||||||
|
|
||||||
|
.sr-only-focusable:active, .sr-only-focusable:focus {
|
||||||
|
clip: auto;
|
||||||
|
height: auto;
|
||||||
|
margin: 0;
|
||||||
|
overflow: visible;
|
||||||
|
position: static;
|
||||||
|
width: auto; }
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-primary {
|
||||||
|
fill: var(--fa-primary-color, currentColor);
|
||||||
|
opacity: 1;
|
||||||
|
opacity: var(--fa-primary-opacity, 1); }
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-secondary {
|
||||||
|
fill: var(--fa-secondary-color, currentColor);
|
||||||
|
opacity: 0.4;
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||||
|
opacity: 0.4;
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||||
|
opacity: 1;
|
||||||
|
opacity: var(--fa-primary-opacity, 1); }
|
||||||
|
|
||||||
|
.svg-inline--fa mask .fa-primary,
|
||||||
|
.svg-inline--fa mask .fa-secondary {
|
||||||
|
fill: black; }
|
||||||
|
|
||||||
|
.fad.fa-inverse {
|
||||||
|
color: #fff; }
|
5
fontawesome-5.15.2/css/svg-with-js.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/svg-with-js.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
5
fontawesome-5.15.2/css/v4-shims.min.css
vendored
Normal file
5
fontawesome-5.15.2/css/v4-shims.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.eot
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.eot
Normal file
Binary file not shown.
3717
fontawesome-5.15.2/webfonts/fa-brands-400.svg
Normal file
3717
fontawesome-5.15.2/webfonts/fa-brands-400.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 730 KiB |
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.ttf
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.ttf
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.woff
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.woff
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.woff2
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-brands-400.woff2
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.eot
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.eot
Normal file
Binary file not shown.
15319
fontawesome-5.15.2/webfonts/fa-duotone-900.svg
Normal file
15319
fontawesome-5.15.2/webfonts/fa-duotone-900.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 2.5 MiB |
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.ttf
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.ttf
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.woff
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.woff
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.woff2
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-duotone-900.woff2
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-light-300.eot
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-light-300.eot
Normal file
Binary file not shown.
12420
fontawesome-5.15.2/webfonts/fa-light-300.svg
Normal file
12420
fontawesome-5.15.2/webfonts/fa-light-300.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 2.3 MiB |
BIN
fontawesome-5.15.2/webfonts/fa-light-300.ttf
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-light-300.ttf
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-light-300.woff
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-light-300.woff
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-light-300.woff2
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-light-300.woff2
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.eot
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.eot
Normal file
Binary file not shown.
11318
fontawesome-5.15.2/webfonts/fa-regular-400.svg
Normal file
11318
fontawesome-5.15.2/webfonts/fa-regular-400.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 2.1 MiB |
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.ttf
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.ttf
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.woff
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.woff
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.woff2
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-regular-400.woff2
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.eot
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.eot
Normal file
Binary file not shown.
9647
fontawesome-5.15.2/webfonts/fa-solid-900.svg
Normal file
9647
fontawesome-5.15.2/webfonts/fa-solid-900.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 1.7 MiB |
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.ttf
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.ttf
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.woff
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.woff
Normal file
Binary file not shown.
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.woff2
Normal file
BIN
fontawesome-5.15.2/webfonts/fa-solid-900.woff2
Normal file
Binary file not shown.
@ -1,18 +0,0 @@
|
|||||||
Font Awesome Pro License
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
Font Awesome Pro is commercial software that requires a paid license. Full
|
|
||||||
Font Awesome Pro license: https://fontawesome.com/license.
|
|
||||||
|
|
||||||
# Commercial License
|
|
||||||
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
|
|
||||||
it, and use it just about everywhere you'd like.
|
|
||||||
|
|
||||||
# Attribution
|
|
||||||
Attribution is not required by the Font Awesome Pro commercial license.
|
|
||||||
|
|
||||||
# Brand Icons
|
|
||||||
All brand icons are trademarks of their respective owners. The use of these
|
|
||||||
trademarks does not indicate endorsement of the trademark holder by Font
|
|
||||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
|
||||||
to represent the company, product, or service to which they refer.**
|
|
File diff suppressed because it is too large
Load Diff
6
fontawesome-6.2.1/css/all.min.css
vendored
6
fontawesome-6.2.1/css/all.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
6
fontawesome-6.2.1/css/brands.min.css
vendored
6
fontawesome-6.2.1/css/brands.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
6
fontawesome-6.2.1/css/duotone.min.css
vendored
6
fontawesome-6.2.1/css/duotone.min.css
vendored
File diff suppressed because one or more lines are too long
12940
fontawesome-6.2.1/css/fontawesome.css
vendored
12940
fontawesome-6.2.1/css/fontawesome.css
vendored
File diff suppressed because it is too large
Load Diff
6
fontawesome-6.2.1/css/fontawesome.min.css
vendored
6
fontawesome-6.2.1/css/fontawesome.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1,19 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
|
||||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro'; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 6 Pro';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 300;
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
.fal,
|
|
||||||
.fa-light {
|
|
||||||
font-weight: 300; }
|
|
6
fontawesome-6.2.1/css/light.min.css
vendored
6
fontawesome-6.2.1/css/light.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}.fa-light,.fal{font-weight:300}
|
|
@ -1,19 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
|
||||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Pro'; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 6 Pro';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
.far,
|
|
||||||
.fa-regular {
|
|
||||||
font-weight: 400; }
|
|
6
fontawesome-6.2.1/css/regular.min.css
vendored
6
fontawesome-6.2.1/css/regular.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
|
@ -1,19 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-style-family-sharp: 'Font Awesome 6 Sharp';
|
|
||||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp'; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 6 Sharp';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 900;
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-sharp-solid-900.woff2") format("woff2"), url("../webfonts/fa-sharp-solid-900.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
.fass,
|
|
||||||
.fa-sharp-solid {
|
|
||||||
font-weight: 900; }
|
|
6
fontawesome-6.2.1/css/sharp-solid.min.css
vendored
6
fontawesome-6.2.1/css/sharp-solid.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-sharp-solid-900.woff2) format("woff2"),url(../webfonts/fa-sharp-solid-900.ttf) format("truetype")}.fa-sharp-solid,.fass{font-weight:900}
|
|
@ -1,19 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
|
||||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Pro'; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 6 Pro';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 900;
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
.fas,
|
|
||||||
.fa-solid {
|
|
||||||
font-weight: 900; }
|
|
6
fontawesome-6.2.1/css/solid.min.css
vendored
6
fontawesome-6.2.1/css/solid.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
|
@ -1,635 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
|
||||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
|
||||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
|
||||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
|
||||||
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
|
||||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
|
||||||
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
|
||||||
|
|
||||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
||||||
overflow: visible;
|
|
||||||
box-sizing: content-box; }
|
|
||||||
|
|
||||||
.svg-inline--fa {
|
|
||||||
display: var(--fa-display, inline-block);
|
|
||||||
height: 1em;
|
|
||||||
overflow: visible;
|
|
||||||
vertical-align: -.125em; }
|
|
||||||
.svg-inline--fa.fa-2xs {
|
|
||||||
vertical-align: 0.1em; }
|
|
||||||
.svg-inline--fa.fa-xs {
|
|
||||||
vertical-align: 0em; }
|
|
||||||
.svg-inline--fa.fa-sm {
|
|
||||||
vertical-align: -0.07143em; }
|
|
||||||
.svg-inline--fa.fa-lg {
|
|
||||||
vertical-align: -0.2em; }
|
|
||||||
.svg-inline--fa.fa-xl {
|
|
||||||
vertical-align: -0.25em; }
|
|
||||||
.svg-inline--fa.fa-2xl {
|
|
||||||
vertical-align: -0.3125em; }
|
|
||||||
.svg-inline--fa.fa-pull-left {
|
|
||||||
margin-right: var(--fa-pull-margin, 0.3em);
|
|
||||||
width: auto; }
|
|
||||||
.svg-inline--fa.fa-pull-right {
|
|
||||||
margin-left: var(--fa-pull-margin, 0.3em);
|
|
||||||
width: auto; }
|
|
||||||
.svg-inline--fa.fa-li {
|
|
||||||
width: var(--fa-li-width, 2em);
|
|
||||||
top: 0.25em; }
|
|
||||||
.svg-inline--fa.fa-fw {
|
|
||||||
width: var(--fa-fw-width, 1.25em); }
|
|
||||||
|
|
||||||
.fa-layers svg.svg-inline--fa {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0; }
|
|
||||||
|
|
||||||
.fa-layers-text, .fa-layers-counter {
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
text-align: center; }
|
|
||||||
|
|
||||||
.fa-layers {
|
|
||||||
display: inline-block;
|
|
||||||
height: 1em;
|
|
||||||
position: relative;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: -.125em;
|
|
||||||
width: 1em; }
|
|
||||||
.fa-layers svg.svg-inline--fa {
|
|
||||||
-webkit-transform-origin: center center;
|
|
||||||
transform-origin: center center; }
|
|
||||||
|
|
||||||
.fa-layers-text {
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
-webkit-transform: translate(-50%, -50%);
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
-webkit-transform-origin: center center;
|
|
||||||
transform-origin: center center; }
|
|
||||||
|
|
||||||
.fa-layers-counter {
|
|
||||||
background-color: var(--fa-counter-background-color, #ff253a);
|
|
||||||
border-radius: var(--fa-counter-border-radius, 1em);
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: var(--fa-inverse, #fff);
|
|
||||||
line-height: var(--fa-counter-line-height, 1);
|
|
||||||
max-width: var(--fa-counter-max-width, 5em);
|
|
||||||
min-width: var(--fa-counter-min-width, 1.5em);
|
|
||||||
overflow: hidden;
|
|
||||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-counter-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top right;
|
|
||||||
transform-origin: top right; }
|
|
||||||
|
|
||||||
.fa-layers-bottom-right {
|
|
||||||
bottom: var(--fa-bottom, 0);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
top: auto;
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: bottom right;
|
|
||||||
transform-origin: bottom right; }
|
|
||||||
|
|
||||||
.fa-layers-bottom-left {
|
|
||||||
bottom: var(--fa-bottom, 0);
|
|
||||||
left: var(--fa-left, 0);
|
|
||||||
right: auto;
|
|
||||||
top: auto;
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: bottom left;
|
|
||||||
transform-origin: bottom left; }
|
|
||||||
|
|
||||||
.fa-layers-top-right {
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top right;
|
|
||||||
transform-origin: top right; }
|
|
||||||
|
|
||||||
.fa-layers-top-left {
|
|
||||||
left: var(--fa-left, 0);
|
|
||||||
right: auto;
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top left;
|
|
||||||
transform-origin: top left; }
|
|
||||||
|
|
||||||
.fa-1x {
|
|
||||||
font-size: 1em; }
|
|
||||||
|
|
||||||
.fa-2x {
|
|
||||||
font-size: 2em; }
|
|
||||||
|
|
||||||
.fa-3x {
|
|
||||||
font-size: 3em; }
|
|
||||||
|
|
||||||
.fa-4x {
|
|
||||||
font-size: 4em; }
|
|
||||||
|
|
||||||
.fa-5x {
|
|
||||||
font-size: 5em; }
|
|
||||||
|
|
||||||
.fa-6x {
|
|
||||||
font-size: 6em; }
|
|
||||||
|
|
||||||
.fa-7x {
|
|
||||||
font-size: 7em; }
|
|
||||||
|
|
||||||
.fa-8x {
|
|
||||||
font-size: 8em; }
|
|
||||||
|
|
||||||
.fa-9x {
|
|
||||||
font-size: 9em; }
|
|
||||||
|
|
||||||
.fa-10x {
|
|
||||||
font-size: 10em; }
|
|
||||||
|
|
||||||
.fa-2xs {
|
|
||||||
font-size: 0.625em;
|
|
||||||
line-height: 0.1em;
|
|
||||||
vertical-align: 0.225em; }
|
|
||||||
|
|
||||||
.fa-xs {
|
|
||||||
font-size: 0.75em;
|
|
||||||
line-height: 0.08333em;
|
|
||||||
vertical-align: 0.125em; }
|
|
||||||
|
|
||||||
.fa-sm {
|
|
||||||
font-size: 0.875em;
|
|
||||||
line-height: 0.07143em;
|
|
||||||
vertical-align: 0.05357em; }
|
|
||||||
|
|
||||||
.fa-lg {
|
|
||||||
font-size: 1.25em;
|
|
||||||
line-height: 0.05em;
|
|
||||||
vertical-align: -0.075em; }
|
|
||||||
|
|
||||||
.fa-xl {
|
|
||||||
font-size: 1.5em;
|
|
||||||
line-height: 0.04167em;
|
|
||||||
vertical-align: -0.125em; }
|
|
||||||
|
|
||||||
.fa-2xl {
|
|
||||||
font-size: 2em;
|
|
||||||
line-height: 0.03125em;
|
|
||||||
vertical-align: -0.1875em; }
|
|
||||||
|
|
||||||
.fa-fw {
|
|
||||||
text-align: center;
|
|
||||||
width: 1.25em; }
|
|
||||||
|
|
||||||
.fa-ul {
|
|
||||||
list-style-type: none;
|
|
||||||
margin-left: var(--fa-li-margin, 2.5em);
|
|
||||||
padding-left: 0; }
|
|
||||||
.fa-ul > li {
|
|
||||||
position: relative; }
|
|
||||||
|
|
||||||
.fa-li {
|
|
||||||
left: calc(var(--fa-li-width, 2em) * -1);
|
|
||||||
position: absolute;
|
|
||||||
text-align: center;
|
|
||||||
width: var(--fa-li-width, 2em);
|
|
||||||
line-height: inherit; }
|
|
||||||
|
|
||||||
.fa-border {
|
|
||||||
border-color: var(--fa-border-color, #eee);
|
|
||||||
border-radius: var(--fa-border-radius, 0.1em);
|
|
||||||
border-style: var(--fa-border-style, solid);
|
|
||||||
border-width: var(--fa-border-width, 0.08em);
|
|
||||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
|
||||||
|
|
||||||
.fa-pull-left {
|
|
||||||
float: left;
|
|
||||||
margin-right: var(--fa-pull-margin, 0.3em); }
|
|
||||||
|
|
||||||
.fa-pull-right {
|
|
||||||
float: right;
|
|
||||||
margin-left: var(--fa-pull-margin, 0.3em); }
|
|
||||||
|
|
||||||
.fa-beat {
|
|
||||||
-webkit-animation-name: fa-beat;
|
|
||||||
animation-name: fa-beat;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
|
||||||
|
|
||||||
.fa-bounce {
|
|
||||||
-webkit-animation-name: fa-bounce;
|
|
||||||
animation-name: fa-bounce;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
|
||||||
|
|
||||||
.fa-fade {
|
|
||||||
-webkit-animation-name: fa-fade;
|
|
||||||
animation-name: fa-fade;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
|
||||||
|
|
||||||
.fa-beat-fade {
|
|
||||||
-webkit-animation-name: fa-beat-fade;
|
|
||||||
animation-name: fa-beat-fade;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
|
||||||
|
|
||||||
.fa-flip {
|
|
||||||
-webkit-animation-name: fa-flip;
|
|
||||||
animation-name: fa-flip;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
|
||||||
|
|
||||||
.fa-shake {
|
|
||||||
-webkit-animation-name: fa-shake;
|
|
||||||
animation-name: fa-shake;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
|
||||||
|
|
||||||
.fa-spin {
|
|
||||||
-webkit-animation-name: fa-spin;
|
|
||||||
animation-name: fa-spin;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 2s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
|
||||||
|
|
||||||
.fa-spin-reverse {
|
|
||||||
--fa-animation-direction: reverse; }
|
|
||||||
|
|
||||||
.fa-pulse,
|
|
||||||
.fa-spin-pulse {
|
|
||||||
-webkit-animation-name: fa-spin;
|
|
||||||
animation-name: fa-spin;
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
.fa-beat,
|
|
||||||
.fa-bounce,
|
|
||||||
.fa-fade,
|
|
||||||
.fa-beat-fade,
|
|
||||||
.fa-flip,
|
|
||||||
.fa-pulse,
|
|
||||||
.fa-shake,
|
|
||||||
.fa-spin,
|
|
||||||
.fa-spin-pulse {
|
|
||||||
-webkit-animation-delay: -1ms;
|
|
||||||
animation-delay: -1ms;
|
|
||||||
-webkit-animation-duration: 1ms;
|
|
||||||
animation-duration: 1ms;
|
|
||||||
-webkit-animation-iteration-count: 1;
|
|
||||||
animation-iteration-count: 1;
|
|
||||||
transition-delay: 0s;
|
|
||||||
transition-duration: 0s; } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-beat {
|
|
||||||
0%, 90% {
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1); }
|
|
||||||
45% {
|
|
||||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
|
||||||
|
|
||||||
@keyframes fa-beat {
|
|
||||||
0%, 90% {
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1); }
|
|
||||||
45% {
|
|
||||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-bounce {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); }
|
|
||||||
10% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
|
||||||
30% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
|
||||||
50% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
|
||||||
57% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
|
||||||
64% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); }
|
|
||||||
100% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); } }
|
|
||||||
|
|
||||||
@keyframes fa-bounce {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); }
|
|
||||||
10% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
|
||||||
30% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
|
||||||
50% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
|
||||||
57% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
|
||||||
64% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); }
|
|
||||||
100% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-fade {
|
|
||||||
50% {
|
|
||||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
|
||||||
|
|
||||||
@keyframes fa-fade {
|
|
||||||
50% {
|
|
||||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-beat-fade {
|
|
||||||
0%, 100% {
|
|
||||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1); }
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
|
||||||
|
|
||||||
@keyframes fa-beat-fade {
|
|
||||||
0%, 100% {
|
|
||||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1); }
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-flip {
|
|
||||||
50% {
|
|
||||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
|
||||||
|
|
||||||
@keyframes fa-flip {
|
|
||||||
50% {
|
|
||||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-shake {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(-15deg);
|
|
||||||
transform: rotate(-15deg); }
|
|
||||||
4% {
|
|
||||||
-webkit-transform: rotate(15deg);
|
|
||||||
transform: rotate(15deg); }
|
|
||||||
8%, 24% {
|
|
||||||
-webkit-transform: rotate(-18deg);
|
|
||||||
transform: rotate(-18deg); }
|
|
||||||
12%, 28% {
|
|
||||||
-webkit-transform: rotate(18deg);
|
|
||||||
transform: rotate(18deg); }
|
|
||||||
16% {
|
|
||||||
-webkit-transform: rotate(-22deg);
|
|
||||||
transform: rotate(-22deg); }
|
|
||||||
20% {
|
|
||||||
-webkit-transform: rotate(22deg);
|
|
||||||
transform: rotate(22deg); }
|
|
||||||
32% {
|
|
||||||
-webkit-transform: rotate(-12deg);
|
|
||||||
transform: rotate(-12deg); }
|
|
||||||
36% {
|
|
||||||
-webkit-transform: rotate(12deg);
|
|
||||||
transform: rotate(12deg); }
|
|
||||||
40%, 100% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg); } }
|
|
||||||
|
|
||||||
@keyframes fa-shake {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(-15deg);
|
|
||||||
transform: rotate(-15deg); }
|
|
||||||
4% {
|
|
||||||
-webkit-transform: rotate(15deg);
|
|
||||||
transform: rotate(15deg); }
|
|
||||||
8%, 24% {
|
|
||||||
-webkit-transform: rotate(-18deg);
|
|
||||||
transform: rotate(-18deg); }
|
|
||||||
12%, 28% {
|
|
||||||
-webkit-transform: rotate(18deg);
|
|
||||||
transform: rotate(18deg); }
|
|
||||||
16% {
|
|
||||||
-webkit-transform: rotate(-22deg);
|
|
||||||
transform: rotate(-22deg); }
|
|
||||||
20% {
|
|
||||||
-webkit-transform: rotate(22deg);
|
|
||||||
transform: rotate(22deg); }
|
|
||||||
32% {
|
|
||||||
-webkit-transform: rotate(-12deg);
|
|
||||||
transform: rotate(-12deg); }
|
|
||||||
36% {
|
|
||||||
-webkit-transform: rotate(12deg);
|
|
||||||
transform: rotate(12deg); }
|
|
||||||
40%, 100% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg); } }
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg); }
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg); } }
|
|
||||||
|
|
||||||
@keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg); }
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg); } }
|
|
||||||
|
|
||||||
.fa-rotate-90 {
|
|
||||||
-webkit-transform: rotate(90deg);
|
|
||||||
transform: rotate(90deg); }
|
|
||||||
|
|
||||||
.fa-rotate-180 {
|
|
||||||
-webkit-transform: rotate(180deg);
|
|
||||||
transform: rotate(180deg); }
|
|
||||||
|
|
||||||
.fa-rotate-270 {
|
|
||||||
-webkit-transform: rotate(270deg);
|
|
||||||
transform: rotate(270deg); }
|
|
||||||
|
|
||||||
.fa-flip-horizontal {
|
|
||||||
-webkit-transform: scale(-1, 1);
|
|
||||||
transform: scale(-1, 1); }
|
|
||||||
|
|
||||||
.fa-flip-vertical {
|
|
||||||
-webkit-transform: scale(1, -1);
|
|
||||||
transform: scale(1, -1); }
|
|
||||||
|
|
||||||
.fa-flip-both,
|
|
||||||
.fa-flip-horizontal.fa-flip-vertical {
|
|
||||||
-webkit-transform: scale(-1, -1);
|
|
||||||
transform: scale(-1, -1); }
|
|
||||||
|
|
||||||
.fa-rotate-by {
|
|
||||||
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
|
||||||
transform: rotate(var(--fa-rotate-angle, none)); }
|
|
||||||
|
|
||||||
.fa-stack {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
height: 2em;
|
|
||||||
position: relative;
|
|
||||||
width: 2.5em; }
|
|
||||||
|
|
||||||
.fa-stack-1x,
|
|
||||||
.fa-stack-2x {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: var(--fa-stack-z-index, auto); }
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-stack-1x {
|
|
||||||
height: 1em;
|
|
||||||
width: 1.25em; }
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-stack-2x {
|
|
||||||
height: 2em;
|
|
||||||
width: 2.5em; }
|
|
||||||
|
|
||||||
.fa-inverse {
|
|
||||||
color: var(--fa-inverse, #fff); }
|
|
||||||
|
|
||||||
.sr-only,
|
|
||||||
.fa-sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border-width: 0; }
|
|
||||||
|
|
||||||
.sr-only-focusable:not(:focus),
|
|
||||||
.fa-sr-only-focusable:not(:focus) {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border-width: 0; }
|
|
||||||
|
|
||||||
.svg-inline--fa .fa-primary {
|
|
||||||
fill: var(--fa-primary-color, currentColor);
|
|
||||||
opacity: var(--fa-primary-opacity, 1); }
|
|
||||||
|
|
||||||
.svg-inline--fa .fa-secondary {
|
|
||||||
fill: var(--fa-secondary-color, currentColor);
|
|
||||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
|
||||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
|
||||||
opacity: var(--fa-primary-opacity, 1); }
|
|
||||||
|
|
||||||
.svg-inline--fa mask .fa-primary,
|
|
||||||
.svg-inline--fa mask .fa-secondary {
|
|
||||||
fill: black; }
|
|
||||||
|
|
||||||
.fad.fa-inverse,
|
|
||||||
.fa-duotone.fa-inverse {
|
|
||||||
color: var(--fa-inverse, #fff); }
|
|
6
fontawesome-6.2.1/css/svg-with-js.min.css
vendored
6
fontawesome-6.2.1/css/svg-with-js.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1,19 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:root, :host {
|
|
||||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
|
||||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Pro'; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 6 Pro';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 100;
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-thin-100.woff2") format("woff2"), url("../webfonts/fa-thin-100.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
.fat,
|
|
||||||
.fa-thin {
|
|
||||||
font-weight: 100; }
|
|
6
fontawesome-6.2.1/css/thin.min.css
vendored
6
fontawesome-6.2.1/css/thin.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:100;font-display:block;src:url(../webfonts/fa-thin-100.woff2) format("woff2"),url(../webfonts/fa-thin-100.ttf) format("truetype")}.fa-thin,.fat{font-weight:100}
|
|
@ -1,26 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
|
||||||
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
font-display: block;
|
|
||||||
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
|
||||||
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
|
6
fontawesome-6.2.1/css/v4-font-face.min.css
vendored
6
fontawesome-6.2.1/css/v4-font-face.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
|
6
fontawesome-6.2.1/css/v4-shims.min.css
vendored
6
fontawesome-6.2.1/css/v4-shims.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1,34 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 5 Brands';
|
|
||||||
font-display: block;
|
|
||||||
font-weight: 400;
|
|
||||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 5 Pro';
|
|
||||||
font-display: block;
|
|
||||||
font-weight: 900;
|
|
||||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 5 Pro';
|
|
||||||
font-display: block;
|
|
||||||
font-weight: 400;
|
|
||||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 5 Pro';
|
|
||||||
font-display: block;
|
|
||||||
font-weight: 300;
|
|
||||||
src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Font Awesome 5 Duotone';
|
|
||||||
font-display: block;
|
|
||||||
font-weight: 900;
|
|
||||||
src: url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.ttf") format("truetype"); }
|
|
6
fontawesome-6.2.1/css/v5-font-face.min.css
vendored
6
fontawesome-6.2.1/css/v5-font-face.min.css
vendored
@ -1,6 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
|
|
||||||
* License - https://fontawesome.com/license (Commercial License)
|
|
||||||
* Copyright 2022 Fonticons, Inc.
|
|
||||||
*/
|
|
||||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:300;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Duotone";font-display:block;font-weight:900;src:url(../webfonts/fa-duotone-900.woff2) format("woff2"),url(../webfonts/fa-duotone-900.ttf) format("truetype")}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4691
package-lock.json
generated
4691
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "farmmaps-lib-app",
|
"name": "farmmaps-lib-app",
|
||||||
"version": "3.0.2",
|
"version": "3.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
"build": "ng build",
|
"build": "ng build",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "eslint -c .eslintrc.js --ext .ts",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e"
|
"e2e": "ng e2e"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -15,7 +15,6 @@
|
|||||||
"@angular/common": "^14.1.3",
|
"@angular/common": "^14.1.3",
|
||||||
"@angular/compiler": "^14.1.3",
|
"@angular/compiler": "^14.1.3",
|
||||||
"@angular/core": "^14.1.3",
|
"@angular/core": "^14.1.3",
|
||||||
"@angular-eslint/eslint-plugin": "^15.2.1",
|
|
||||||
"@angular/forms": "^14.1.3",
|
"@angular/forms": "^14.1.3",
|
||||||
"@angular/platform-browser": "^14.1.3",
|
"@angular/platform-browser": "^14.1.3",
|
||||||
"@angular/platform-browser-dynamic": "^14.1.3",
|
"@angular/platform-browser-dynamic": "^14.1.3",
|
||||||
@ -31,7 +30,7 @@
|
|||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"angular-oauth2-oidc": "^13",
|
"angular-oauth2-oidc": "^13",
|
||||||
"assert": "^2.0.0",
|
"assert": "^2.0.0",
|
||||||
"bootstrap": "^5.2.0",
|
"bootstrap": "^4.6.0",
|
||||||
"browserify-zlib": "^0.2.0",
|
"browserify-zlib": "^0.2.0",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"cesium": "^1.97.0",
|
"cesium": "^1.97.0",
|
||||||
@ -67,13 +66,7 @@
|
|||||||
"@types/jasmine": "~2.8.8",
|
"@types/jasmine": "~2.8.8",
|
||||||
"@types/jasminewd2": "^2.0.9",
|
"@types/jasminewd2": "^2.0.9",
|
||||||
"@types/node": "^12.20.15",
|
"@types/node": "^12.20.15",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
|
||||||
"@typescript-eslint/eslint-plugin-tslint": "^5.54.0",
|
|
||||||
"@typescript-eslint/parser": "^5.54.0",
|
|
||||||
"codelyzer": "^0.0.28",
|
"codelyzer": "^0.0.28",
|
||||||
"eslint": "^8.35.0",
|
|
||||||
"eslint-config-prettier": "^8.6.0",
|
|
||||||
"eslint-plugin-import": "^2.27.5",
|
|
||||||
"jasmine-core": "^4.3.0",
|
"jasmine-core": "^4.3.0",
|
||||||
"jasmine-spec-reporter": "^7.0.0",
|
"jasmine-spec-reporter": "^7.0.0",
|
||||||
"karma": "^6.3.20",
|
"karma": "^6.3.20",
|
||||||
@ -84,6 +77,7 @@
|
|||||||
"ng-packagr": "^14.1.0",
|
"ng-packagr": "^14.1.0",
|
||||||
"protractor": "~7.0.0",
|
"protractor": "~7.0.0",
|
||||||
"ts-node": "^8.8.1",
|
"ts-node": "^8.8.1",
|
||||||
|
"tslint": "~6.1.0",
|
||||||
"typescript": "~4.6.4"
|
"typescript": "~4.6.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"es2021": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:@typescript-eslint/recommended"
|
|
||||||
],
|
|
||||||
"overrides": [
|
|
||||||
],
|
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": "latest",
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"plugins": [
|
|
||||||
"@typescript-eslint"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
}
|
|
||||||
}
|
|
25
projects/common-map/package-lock.json
generated
25
projects/common-map/package-lock.json
generated
@ -1,27 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@farmmaps/common-map",
|
"name": "@farmmaps/common-map",
|
||||||
"version": "2.0.0",
|
"version": "0.0.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"dependencies": {
|
||||||
"": {
|
"tslib": {
|
||||||
"name": "@farmmaps/common-map",
|
|
||||||
"version": "2.0.0",
|
|
||||||
"dependencies": {
|
|
||||||
"tslib": "^2.0.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@angular/core": ">=14.0.0",
|
|
||||||
"@ngrx/effects": ">=14.0.0",
|
|
||||||
"@ngrx/router-store": ">=14.0.0",
|
|
||||||
"@ngrx/store": ">=14.0.0",
|
|
||||||
"ngrx-store-localstorage": ">=14.0.0",
|
|
||||||
"ngx-openlayers": ">=1.0.0-next.19",
|
|
||||||
"ol": ">=6.8.1",
|
|
||||||
"tassign": ">=1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tslib": {
|
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
|
||||||
"integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ=="
|
"integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ=="
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
"@ngrx/router-store":">=14.0.0",
|
"@ngrx/router-store":">=14.0.0",
|
||||||
"@ngrx/store":">=14.0.0",
|
"@ngrx/store":">=14.0.0",
|
||||||
"tassign": ">=1.0.0",
|
"tassign": ">=1.0.0",
|
||||||
|
"@farmmaps/common": ">=2.0.0",
|
||||||
"ngx-openlayers": ">=1.0.0-next.19",
|
"ngx-openlayers": ">=1.0.0-next.19",
|
||||||
"ol": ">=6.8.1"
|
"ol": ">=6.8.1"
|
||||||
}
|
}
|
||||||
|
@ -79,13 +79,13 @@ export function LocalStorageSync(reducer: ActionReducer<any>): ActionReducer<any
|
|||||||
const r2 = reducer(state, action);
|
const r2 = reducer(state, action);
|
||||||
|
|
||||||
if(action.type == "@ngrx/store/update-reducers") {
|
if(action.type == "@ngrx/store/update-reducers") {
|
||||||
const ms = window.localStorage.getItem(MODULE_NAME+"_mapState");
|
let ms = window.localStorage.getItem(MODULE_NAME+"_mapState");
|
||||||
if(ms) {
|
if(ms) {
|
||||||
r2["mapState"] = JSON.parse(ms);
|
r2["mapState"] = JSON.parse(ms);
|
||||||
}
|
}
|
||||||
const sp = window.localStorage.getItem(MODULE_NAME+"_searchPeriod");
|
let sp = window.localStorage.getItem(MODULE_NAME+"_searchPeriod");
|
||||||
if(sp) {
|
if(sp) {
|
||||||
const p = JSON.parse(sp);
|
let p = JSON.parse(sp);
|
||||||
r2["period"] = { startDate: new Date(Date.parse(p.startDate)),endDate:new Date(Date.parse(p.endDate))};
|
r2["period"] = { startDate: new Date(Date.parse(p.startDate)),endDate:new Date(Date.parse(p.endDate))};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ export class FileDropTargetComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.element = this.map.instance.getViewport();
|
this.element = this.map.instance.getViewport();
|
||||||
const other = this;
|
let other = this;
|
||||||
this.element.addEventListener('drop', this.onDrop, false);
|
this.element.addEventListener('drop', this.onDrop, false);
|
||||||
this.element.addEventListener('dragover', this.preventDefault, false);
|
this.element.addEventListener('dragover', this.preventDefault, false);
|
||||||
this.element.addEventListener('dragenter', this.preventDefault, false);
|
this.element.addEventListener('dragenter', this.preventDefault, false);
|
||||||
@ -36,20 +36,20 @@ export class FileDropTargetComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
private onDrop = (event: DragEvent) => {
|
private onDrop = (event: DragEvent) => {
|
||||||
this.stopEvent(event);
|
this.stopEvent(event);
|
||||||
const geojsonFormat = new GeoJSON();
|
let geojsonFormat = new GeoJSON();
|
||||||
let parentCode = this.parentCode;
|
var parentCode = this.parentCode;
|
||||||
const coordinate = this.map.instance.getEventCoordinate(event);
|
var coordinate = this.map.instance.getEventCoordinate(event);
|
||||||
//coordinate = proj.transform(coordinate, this.map.instance.getView().getProjection(), 'EPSG:4326');
|
//coordinate = proj.transform(coordinate, this.map.instance.getView().getProjection(), 'EPSG:4326');
|
||||||
let geometry:Geometry = new Point(coordinate);
|
var geometry:Geometry = new Point(coordinate);
|
||||||
const hitFeatures = this.map.instance.getFeaturesAtPixel([event.pageX, event.pageY]);
|
var hitFeatures = this.map.instance.getFeaturesAtPixel([event.pageX, event.pageY]);
|
||||||
const hitFeature = hitFeatures && hitFeatures.length > 0 ? hitFeatures[0] : null;
|
var hitFeature = hitFeatures && hitFeatures.length > 0 ? hitFeatures[0] : null;
|
||||||
if (hitFeature) {
|
if (hitFeature) {
|
||||||
if (hitFeature.get("code")) {
|
if (hitFeature.get("code")) {
|
||||||
parentCode = hitFeature.get("code");
|
parentCode = hitFeature.get("code");
|
||||||
}
|
}
|
||||||
geometry = geojsonFormat.readGeometry(geojsonFormat.writeGeometry(geometry)); // create copy instead of reference
|
geometry = geojsonFormat.readGeometry(geojsonFormat.writeGeometry(geometry)); // create copy instead of reference
|
||||||
}
|
}
|
||||||
const projectedGeometry = geometry.transform(this.map.instance.getView().getProjection(), 'EPSG:4326');
|
var projectedGeometry = geometry.transform(this.map.instance.getView().getProjection(), 'EPSG:4326');
|
||||||
|
|
||||||
if (event.dataTransfer && event.dataTransfer.files) {
|
if (event.dataTransfer && event.dataTransfer.files) {
|
||||||
this.onFileDropped.emit({ files: event.dataTransfer.files, event: event, geometry: JSON.parse(geojsonFormat.writeGeometry(projectedGeometry)),parentCode:parentCode})
|
this.onFileDropped.emit({ files: event.dataTransfer.files, event: event, geometry: JSON.parse(geojsonFormat.writeGeometry(projectedGeometry)),parentCode:parentCode})
|
||||||
|
@ -15,16 +15,16 @@ export class GpsLocation implements OnInit,OnChanges{
|
|||||||
public instance: Overlay;
|
public instance: Overlay;
|
||||||
@Input() position: GeolocationPosition;
|
@Input() position: GeolocationPosition;
|
||||||
@Input() location: number[]=[0,0];
|
@Input() location: number[]=[0,0];
|
||||||
@Input() locationTolerance = 0;
|
@Input() locationTolerance: number = 0;
|
||||||
@Input() showHeading = false;
|
@Input() showHeading: boolean = false;
|
||||||
@Input() showTolerance = false;
|
@Input() showTolerance: boolean = false;
|
||||||
@Input() heading = 0;
|
@Input() heading: number = 0;
|
||||||
@Input() headingTolerance = 0;
|
@Input() headingTolerance: number = 0;
|
||||||
public locTolerancePixels = 0;
|
public locTolerancePixels: number = 0;
|
||||||
public path = "";
|
public path: string = "";
|
||||||
public rotate = "";
|
public rotate: string = "";
|
||||||
private resolution = 0;
|
private resolution: number = 0;
|
||||||
initialized = false;
|
initialized:boolean = false;
|
||||||
@ViewChild('location', { static: true }) locationElement: ElementRef;
|
@ViewChild('location', { static: true }) locationElement: ElementRef;
|
||||||
|
|
||||||
constructor(private map: MapComponent) {
|
constructor(private map: MapComponent) {
|
||||||
@ -42,12 +42,12 @@ export class GpsLocation implements OnInit,OnChanges{
|
|||||||
position: fromLonLat( this.location),
|
position: fromLonLat( this.location),
|
||||||
element: this.locationElement.nativeElement
|
element: this.locationElement.nativeElement
|
||||||
});
|
});
|
||||||
const x = Math.tan(this.headingTolerance * Math.PI / 180)*40;
|
var x = Math.tan(this.headingTolerance * Math.PI / 180)*40;
|
||||||
const y = Math.cos(this.headingTolerance * Math.PI / 180) * 40;
|
var y = Math.cos(this.headingTolerance * Math.PI / 180) * 40;
|
||||||
const y1 = Math.round(500 - y);
|
var y1 = Math.round(500 - y);
|
||||||
const x1 = Math.round(500 - x);
|
var x1 = Math.round(500 - x);
|
||||||
const y2 = Math.round(y1);
|
var y2 = Math.round(y1);
|
||||||
const x2 = Math.round(500 + x);
|
var x2 = Math.round(500 + x);
|
||||||
this.path = "M " + x2 + " " + y2 + " A 45 45,0,0,0, " + x1 + " " + y1 + " L 493 500 L 507 500 Z";
|
this.path = "M " + x2 + " " + y2 + " A 45 45,0,0,0, " + x1 + " " + y1 + " L 493 500 L 507 500 Z";
|
||||||
this.rotate = "rotate(" + Math.round(this.heading) + " 500 500)";
|
this.rotate = "rotate(" + Math.round(this.heading) + " 500 500)";
|
||||||
this.locTolerancePixels = this.locationTolerance;
|
this.locTolerancePixels = this.locationTolerance;
|
||||||
@ -61,7 +61,7 @@ export class GpsLocation implements OnInit,OnChanges{
|
|||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges) {
|
ngOnChanges(changes: SimpleChanges) {
|
||||||
if (changes.position && this.instance) {
|
if (changes.position && this.instance) {
|
||||||
const p = changes.position.currentValue as GeolocationPosition;
|
var p = changes.position.currentValue as GeolocationPosition;
|
||||||
if(p && this.initialized) {
|
if(p && this.initialized) {
|
||||||
this.instance.setPosition(fromLonLat([p.coords.longitude, p.coords.latitude]));
|
this.instance.setPosition(fromLonLat([p.coords.longitude, p.coords.latitude]));
|
||||||
this.locationTolerance = p.coords.accuracy;
|
this.locationTolerance = p.coords.accuracy;
|
||||||
|
@ -35,7 +35,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
@Output() onFeatureHover: EventEmitter<any> = new EventEmitter<any>();
|
@Output() onFeatureHover: EventEmitter<any> = new EventEmitter<any>();
|
||||||
@Output() onPrerender: EventEmitter<any> = new EventEmitter<any>();
|
@Output() onPrerender: EventEmitter<any> = new EventEmitter<any>();
|
||||||
private _apiEndPoint: string;
|
private _apiEndPoint: string;
|
||||||
private initialized = false;
|
private initialized:boolean = false;
|
||||||
private mapEventHandlerInstalled = false;
|
private mapEventHandlerInstalled = false;
|
||||||
private topLayerPrerenderEventhandlerInstalled = false;
|
private topLayerPrerenderEventhandlerInstalled = false;
|
||||||
private selectedFeatures = {};
|
private selectedFeatures = {};
|
||||||
@ -49,7 +49,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
private styleCache = {}
|
private styleCache = {}
|
||||||
|
|
||||||
componentToHex(c) {
|
componentToHex(c) {
|
||||||
const hex = c.toString(16);
|
var hex = c.toString(16);
|
||||||
return hex.length == 1 ? "0" + hex : hex;
|
return hex.length == 1 ? "0" + hex : hex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,28 +58,28 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
getColorFromGradient(layer: ILayer, value: number): IColor {
|
getColorFromGradient(layer: ILayer, value: number): IColor {
|
||||||
const gradient: IGradientstop[] = layer.renderer.colorMap.gradient;
|
var gradient: IGradientstop[] = layer.renderer.colorMap.gradient;
|
||||||
const histogram: IHistogram = layer.renderer.band.histogram;
|
var histogram: IHistogram = layer.renderer.band.histogram;
|
||||||
const index = (value - histogram.min) / histogram.max;
|
var index = (value - histogram.min) / histogram.max;
|
||||||
let min = gradient[0];
|
var min = gradient[0];
|
||||||
let max = gradient[gradient.length - 1];
|
var max = gradient[gradient.length - 1];
|
||||||
for (let n = 0; n < gradient.length; n++) {
|
for (var n = 0; n < gradient.length; n++) {
|
||||||
const s = gradient[n];
|
var s = gradient[n];
|
||||||
if (s.relativestop <= index && min.relativestop < s.relativestop && n < gradient.length - 1) min = s;
|
if (s.relativestop <= index && min.relativestop < s.relativestop && n < gradient.length - 1) min = s;
|
||||||
if (s.relativestop >= index && max.relativestop > s.relativestop && n > 0) max = s;
|
if (s.relativestop >= index && max.relativestop > s.relativestop && n > 0) max = s;
|
||||||
}
|
}
|
||||||
const i = index - min.relativestop;
|
var i = index - min.relativestop;
|
||||||
const size = max.relativestop - min.relativestop;
|
var size = max.relativestop - min.relativestop;
|
||||||
const alpha = Math.round(min.color.alpha + ((max.color.alpha - min.color.alpha) * i / size));
|
var alpha = Math.round(min.color.alpha + ((max.color.alpha - min.color.alpha) * i / size));
|
||||||
const red = Math.round(min.color.red + ((max.color.red - min.color.red) * i / size));
|
var red = Math.round(min.color.red + ((max.color.red - min.color.red) * i / size));
|
||||||
const green = Math.round(min.color.green + ((max.color.green - min.color.green) * i / size));
|
var green = Math.round(min.color.green + ((max.color.green - min.color.green) * i / size));
|
||||||
const blue = Math.round(min.color.blue + ((max.color.blue - min.color.blue) * i / size));
|
var blue = Math.round(min.color.blue + ((max.color.blue - min.color.blue) * i / size));
|
||||||
|
|
||||||
return { alpha: alpha, red: red, green: green, blue: blue };
|
return { alpha: alpha, red: red, green: green, blue: blue };
|
||||||
}
|
}
|
||||||
|
|
||||||
getColorForValue(layer: ILayer, value: number): IColor {
|
getColorForValue(layer: ILayer, value: number): IColor {
|
||||||
let color: IColor = { alpha:0,red:0,green:0,blue:0};
|
var color: IColor = { alpha:0,red:0,green:0,blue:0};
|
||||||
if(layer.renderer.colorMap.entries.length>0) {
|
if(layer.renderer.colorMap.entries.length>0) {
|
||||||
color=layer.renderer.colorMap.noValue;
|
color=layer.renderer.colorMap.noValue;
|
||||||
}
|
}
|
||||||
@ -94,10 +94,10 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
getColor(item: IItem, layer: ILayer, feature): style.Style {
|
getColor(item: IItem, layer: ILayer, feature): style.Style {
|
||||||
const value = layer.indexKey ? feature.get(layer.indexKey) : feature.get(layer.name);
|
var value = layer.indexKey ? feature.get(layer.indexKey) : feature.get(layer.name);
|
||||||
const key = item.code + "_" + value;
|
var key = item.code + "_" + value;
|
||||||
if (!this.styleCache[key]) {
|
if (!this.styleCache[key]) {
|
||||||
let color: IColor;
|
var color: IColor;
|
||||||
if(layer.renderer.colorMap.colormapType == "manual") {
|
if(layer.renderer.colorMap.colormapType == "manual") {
|
||||||
color = this.getColorForValue(layer, value);
|
color = this.getColorForValue(layer, value);
|
||||||
} else {
|
} else {
|
||||||
@ -125,32 +125,34 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
||||||
let layerIndex = -1;
|
var layerIndex = -1;
|
||||||
let layer: Layer<Source> = null;
|
var layer: Layer<Source> = null;
|
||||||
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
|
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
|
||||||
const source = new XYZ({ maxZoom: 19, minZoom: 1, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
|
let source = new XYZ({ maxZoom: 19, minZoom: 1, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
const data = item.data;
|
var data = item.data;
|
||||||
const l = (data && data.layers && data.layers.length > 0) ? data.layers[0] : null;
|
var l = (data && data.layers && data.layers.length > 0) ? data.layers[0] : null;
|
||||||
if (l && l.rendering && l.rendering.renderoutputType == "Tiles") {
|
if (l && l.rendering && l.rendering.renderoutputType == "Tiles") {
|
||||||
const rt = l.rendering as IRenderoutputTiles;
|
var rt = l.rendering as IRenderoutputTiles;
|
||||||
const source = new XYZ({crossOrigin: 'use-credentials', maxZoom: rt.maxzoom, minZoom: rt.minzoom, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
|
let source = new XYZ({crossOrigin: 'use-credentials', maxZoom: rt.maxzoom, minZoom: rt.minzoom, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
}
|
}
|
||||||
if (l && l.rendering && l.rendering.renderoutputType == "Image") {
|
if (l && l.rendering && l.rendering.renderoutputType == "Image") {
|
||||||
const ri = l.rendering as IRenderoutputImage;
|
var ri = l.rendering as IRenderoutputImage;
|
||||||
const source = new ImageStatic({ imageExtent:ri.extent,projection:'EPSG:3857', crossOrigin: 'use-credentials', url: `${this._apiEndPoint}/api/v1/items/${item.code}/mapimage/${layerIndex}?v=${Date.parse(item.updated)}` });
|
// convert to EPSG:4326 asworkaround for cesium
|
||||||
|
var projectedExtent = proj.transformExtent( ri.extent, 'EPSG:3857','EPSG:4326');
|
||||||
|
let source = new ImageStatic({ imageExtent:projectedExtent,projection:'EPSG:4326', crossOrigin: 'use-credentials', url: `${this._apiEndPoint}/api/v1/items/${item.code}/mapimage/${layerIndex}?v=${Date.parse(item.updated)}` });
|
||||||
layer = new Image({ source: source });
|
layer = new Image({ source: source });
|
||||||
}
|
}
|
||||||
return layer;
|
return layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
||||||
let layerIndex = -1;
|
var layerIndex = -1;
|
||||||
let layer: Layer<Source> = null;
|
var layer: Layer<Source> = null;
|
||||||
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
|
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
|
||||||
const data = item.data;
|
var data = item.data;
|
||||||
const l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
|
var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
|
||||||
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
|
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
|
||||||
var rt = l.rendering as IRenderoutputTiles;
|
var rt = l.rendering as IRenderoutputTiles;
|
||||||
layer = new VectorTileLayer({
|
layer = new VectorTileLayer({
|
||||||
@ -175,15 +177,15 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const __this = this;
|
let __this = this;
|
||||||
const format = new GeoJSON();
|
let format = new GeoJSON();
|
||||||
const source = new VectorSource({
|
let source = new VectorSource({
|
||||||
strategy: loadingstrategy.bbox,
|
strategy: loadingstrategy.bbox,
|
||||||
loader: function (extent: Extent, resolution: number, projection: Projection) {
|
loader: function (extent: Extent, resolution: number, projection: Projection) {
|
||||||
const source = this as VectorSource<Geometry>;
|
var source = this as VectorSource<Geometry>;
|
||||||
__this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) {
|
__this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) {
|
||||||
const features = format.readFeatures(data);
|
var features = format.readFeatures(data);
|
||||||
for (const f of features) {
|
for (let f of features) {
|
||||||
if (f.get("code")) {
|
if (f.get("code")) {
|
||||||
f.setId(f.get("code"));
|
f.setId(f.get("code"));
|
||||||
}
|
}
|
||||||
@ -196,9 +198,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
declutter: true,
|
declutter: true,
|
||||||
source: source,
|
source: source,
|
||||||
style: (feature) => {
|
style: (feature) => {
|
||||||
const key =feature.get("code") + "_" + feature.get("color");
|
var key =feature.get("code") + "_" + feature.get("color");
|
||||||
if (!this.styleCache[key]) {
|
if (!this.styleCache[key]) {
|
||||||
const color = feature.get("color");
|
var color = feature.get("color");
|
||||||
this.styleCache[key] = new style.Style(
|
this.styleCache[key] = new style.Style(
|
||||||
{
|
{
|
||||||
fill: new style.Fill({
|
fill: new style.Fill({
|
||||||
@ -235,11 +237,11 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
createSelectionLayer(itemLayer:IItemLayer):Layer<Source> {
|
createSelectionLayer(itemLayer:IItemLayer):Layer<Source> {
|
||||||
let layerIndex = -1;
|
var layerIndex = -1;
|
||||||
const layer: Layer<Source> = null;
|
var layer: Layer<Source> = null;
|
||||||
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : itemLayer.item.data.layers[0].index;
|
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : itemLayer.item.data.layers[0].index;
|
||||||
const data = itemLayer.item.data;
|
var data = itemLayer.item.data;
|
||||||
const l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
|
var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
|
||||||
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
|
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
|
||||||
return new VectorTileLayer({
|
return new VectorTileLayer({
|
||||||
renderMode: 'vector',
|
renderMode: 'vector',
|
||||||
@ -265,36 +267,36 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
|
||||||
const data = item.data as ILayerData;
|
let data = item.data as ILayerData;
|
||||||
let layer: Layer<Source> = null;
|
var layer: Layer<Source> = null;
|
||||||
switch (data.interfaceType) {
|
switch (data.interfaceType) {
|
||||||
case 'OSM': {
|
case 'OSM': {
|
||||||
const source = new OSM();
|
let source = new OSM();
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'BingMaps': {
|
case 'BingMaps': {
|
||||||
const source = new BingMaps(data.options);
|
let source = new BingMaps(data.options);
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'TileWMS': {
|
case 'TileWMS': {
|
||||||
const source = new TileWMS(data.options);
|
let source = new TileWMS(data.options);
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'TileJSON': {
|
case 'TileJSON': {
|
||||||
const source = new TileJSON(data.options);
|
let source = new TileJSON(data.options);
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'TileArcGISRest': {
|
case 'TileArcGISRest': {
|
||||||
const source = new TileArcGISRest(data.options);
|
let source = new TileArcGISRest(data.options);
|
||||||
layer = new Tile({ source: source });
|
layer = new Tile({ source: source });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'VectorWFSJson': {
|
case 'VectorWFSJson': {
|
||||||
const source = new VectorSource({
|
let source = new VectorSource({
|
||||||
format: new GeoJSON(),
|
format: new GeoJSON(),
|
||||||
url: function (extent) {
|
url: function (extent) {
|
||||||
return (
|
return (
|
||||||
@ -317,8 +319,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
createLayer(itemLayer: IItemLayer): Layer<Source> {
|
createLayer(itemLayer: IItemLayer): Layer<Source> {
|
||||||
let layer: Layer<Source> = null;
|
var layer: Layer<Source> = null;
|
||||||
const layerIndex = -1;
|
var layerIndex = -1;
|
||||||
if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.geotiff.processed') {
|
if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.geotiff.processed') {
|
||||||
layer = this.createGeotiffLayer(itemLayer.item,itemLayer);
|
layer = this.createGeotiffLayer(itemLayer.item,itemLayer);
|
||||||
} else if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
|
} else if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
|
||||||
@ -327,8 +329,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
layer = this.createExternalLayer(itemLayer.item,itemLayer);
|
layer = this.createExternalLayer(itemLayer.item,itemLayer);
|
||||||
}
|
}
|
||||||
if (layer) {
|
if (layer) {
|
||||||
const geometry = new GeoJSON().readGeometry(itemLayer.item.geometry);
|
let geometry = new GeoJSON().readGeometry(itemLayer.item.geometry);
|
||||||
const extent = geometry ? proj.transformExtent(geometry.getExtent(), 'EPSG:4326', 'EPSG:3857') : null;
|
let extent = geometry ? proj.transformExtent(geometry.getExtent(), 'EPSG:4326', 'EPSG:3857') : null;
|
||||||
if (extent) layer.setExtent(extent);
|
if (extent) layer.setExtent(extent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,7 +380,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
if(this.topLayerPrerenderEventhandlerInstalled && this.onPrerender.observers.length > 0 )
|
if(this.topLayerPrerenderEventhandlerInstalled && this.onPrerender.observers.length > 0 )
|
||||||
{
|
{
|
||||||
if(this.instance.getVisible()) {
|
if(this.instance.getVisible()) {
|
||||||
const olLayers = this.instance.getLayers().getArray().forEach((l:any) => {
|
var olLayers = this.instance.getLayers().getArray().forEach((l:any) => {
|
||||||
l.un('prerender',this.topLayerPrerenderEventhandler);
|
l.un('prerender',this.topLayerPrerenderEventhandler);
|
||||||
l.un('postrender',this.topLayerPostrenderEventhandler);
|
l.un('postrender',this.topLayerPostrenderEventhandler);
|
||||||
});
|
});
|
||||||
@ -390,9 +392,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
|
|
||||||
addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer<Source> {
|
addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer<Source> {
|
||||||
if(!itemLayer) return null;
|
if(!itemLayer) return null;
|
||||||
const olLayers = this.instance.getLayers();
|
var olLayers = this.instance.getLayers();
|
||||||
let layer = itemLayer.layer;
|
var layer = itemLayer.layer;
|
||||||
const olIndex = olLayers.getArray().indexOf(layer);
|
let olIndex = olLayers.getArray().indexOf(layer);
|
||||||
if (olIndex < 0) {
|
if (olIndex < 0) {
|
||||||
// New layer: we add it to the map
|
// New layer: we add it to the map
|
||||||
layer = this.createLayer(itemLayer);
|
layer = this.createLayer(itemLayer);
|
||||||
@ -415,33 +417,33 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
updateLayers(itemLayers: IItemLayer[] | IItemLayer) {
|
updateLayers(itemLayers: IItemLayer[] | IItemLayer) {
|
||||||
this.unInstallTopLayerPrerenderEventhandler();
|
this.unInstallTopLayerPrerenderEventhandler();
|
||||||
let dataLayer = false;
|
let dataLayer = false;
|
||||||
let ils:IItemLayer[] = [];
|
var ils:IItemLayer[] = [];
|
||||||
if(Array.isArray(itemLayers)) {
|
if(Array.isArray(itemLayers)) {
|
||||||
ils = itemLayers;
|
ils = itemLayers;
|
||||||
} else {
|
} else {
|
||||||
dataLayer=true;
|
dataLayer=true;
|
||||||
ils=[itemLayers];
|
ils=[itemLayers];
|
||||||
}
|
}
|
||||||
const newLayers: Layer<Source>[] = [];
|
let newLayers: Layer<Source>[] = [];
|
||||||
if (ils) {
|
if (ils) {
|
||||||
ils.forEach((itemLayer, index) => {
|
ils.forEach((itemLayer, index) => {
|
||||||
if(itemLayer.item.itemType == 'vnd.farmmaps.itemtype.temporal') {
|
if(itemLayer.item.itemType == 'vnd.farmmaps.itemtype.temporal') {
|
||||||
const il = itemLayer as ITemporalItemLayer;
|
let il = itemLayer as ITemporalItemLayer;
|
||||||
const previousLayer = this.addOrUpdateOlLayer(il.previousItemLayer,newLayers.length);
|
let previousLayer = this.addOrUpdateOlLayer(il.previousItemLayer,newLayers.length);
|
||||||
if(previousLayer) newLayers.push(previousLayer);
|
if(previousLayer) newLayers.push(previousLayer);
|
||||||
const selectedLayer = this.addOrUpdateOlLayer(il.selectedItemLayer,newLayers.length);
|
let selectedLayer = this.addOrUpdateOlLayer(il.selectedItemLayer,newLayers.length);
|
||||||
if(selectedLayer) newLayers.push(selectedLayer);
|
if(selectedLayer) newLayers.push(selectedLayer);
|
||||||
const nextLayer = this.addOrUpdateOlLayer(il.nextItemLayer,newLayers.length);
|
let nextLayer = this.addOrUpdateOlLayer(il.nextItemLayer,newLayers.length);
|
||||||
if(nextLayer) newLayers.push(nextLayer);
|
if(nextLayer) newLayers.push(nextLayer);
|
||||||
this.installTopLayerPrerenderEventhandler(selectedLayer);
|
this.installTopLayerPrerenderEventhandler(selectedLayer);
|
||||||
} else {
|
} else {
|
||||||
const layer = this.addOrUpdateOlLayer(itemLayer,newLayers.length);
|
let layer = this.addOrUpdateOlLayer(itemLayer,newLayers.length);
|
||||||
if(layer) newLayers.push(layer);
|
if(layer) newLayers.push(layer);
|
||||||
this.installTopLayerPrerenderEventhandler(layer);
|
this.installTopLayerPrerenderEventhandler(layer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Remove the layers that have disapeared from childrenLayers
|
// Remove the layers that have disapeared from childrenLayers
|
||||||
const olLayers = this.instance.getLayers();
|
var olLayers = this.instance.getLayers();
|
||||||
while(olLayers.getLength() > newLayers.length) {
|
while(olLayers.getLength() > newLayers.length) {
|
||||||
olLayers.removeAt(newLayers.length);
|
olLayers.removeAt(newLayers.length);
|
||||||
}
|
}
|
||||||
@ -467,20 +469,20 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
// select only when having observers
|
// select only when having observers
|
||||||
if(event.type === 'click' && !this.onFeatureSelected.observers.length) return;
|
if(event.type === 'click' && !this.onFeatureSelected.observers.length) return;
|
||||||
if(event.type === 'pointermove' && !this.onFeatureHover.observers.length) return;
|
if(event.type === 'pointermove' && !this.onFeatureHover.observers.length) return;
|
||||||
const itemLayer= this.getItemlayer(this.itemLayer);
|
let itemLayer= this.getItemlayer(this.itemLayer);
|
||||||
if(itemLayer && itemLayer.layer) {
|
if(itemLayer && itemLayer.layer) {
|
||||||
this.selectedFeatures = {};
|
this.selectedFeatures = {};
|
||||||
if(itemLayer.layer ) {
|
if(itemLayer.layer ) {
|
||||||
const minZoom = itemLayer.layer.getMinZoom();
|
let minZoom = itemLayer.layer.getMinZoom();
|
||||||
const currentZoom = this.map.instance.getView().getZoom();
|
let currentZoom = this.map.instance.getView().getZoom();
|
||||||
if(currentZoom>minZoom) {
|
if(currentZoom>minZoom) {
|
||||||
itemLayer.layer.getFeatures(event.pixel).then((features) => {
|
itemLayer.layer.getFeatures(event.pixel).then((features) => {
|
||||||
if(!features.length) {
|
if(!features.length) {
|
||||||
this.onFeatureHover.emit(null);
|
this.onFeatureHover.emit(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const fid = features[0].getId();
|
let fid = features[0].getId();
|
||||||
const feature = features[0];
|
let feature = features[0];
|
||||||
if(event.type === 'pointermove') {
|
if(event.type === 'pointermove') {
|
||||||
this.selectedFeatures[fid] = features[0];
|
this.selectedFeatures[fid] = features[0];
|
||||||
this.onFeatureHover.emit({ "feature": feature,"itemCode":itemLayer.item.code });
|
this.onFeatureHover.emit({ "feature": feature,"itemCode":itemLayer.item.code });
|
||||||
@ -502,11 +504,11 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
ngOnChanges(changes: SimpleChanges) {
|
ngOnChanges(changes: SimpleChanges) {
|
||||||
if (this.instance && this.initialized) {
|
if (this.instance && this.initialized) {
|
||||||
if (changes['itemLayers']) {
|
if (changes['itemLayers']) {
|
||||||
const itemLayers = changes['itemLayers'].currentValue as IItemLayer[];
|
var itemLayers = changes['itemLayers'].currentValue as IItemLayer[];
|
||||||
this.updateLayers(itemLayers);
|
this.updateLayers(itemLayers);
|
||||||
}
|
}
|
||||||
if (changes['itemLayer']) {
|
if (changes['itemLayer']) {
|
||||||
const itemLayer = changes['itemLayer'].currentValue as IItemLayer;
|
var itemLayer = changes['itemLayer'].currentValue as IItemLayer;
|
||||||
this.itemLayer = itemLayer
|
this.itemLayer = itemLayer
|
||||||
if(itemLayer) {
|
if(itemLayer) {
|
||||||
if(this.getItemlayer(this.itemLayer).item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
|
if(this.getItemlayer(this.itemLayer).item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { Component, Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken } from '@angular/core';
|
import { Component, Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken } from '@angular/core';
|
||||||
import { LayerVectorComponent, SourceVectorComponent, MapComponent } from 'ngx-openlayers';
|
import { LayerVectorComponent, SourceVectorComponent, MapComponent } from 'ngx-openlayers';
|
||||||
import { ItemService, ItemTypeService, IItem, IItemType } from '@farmmaps/common';
|
import { ItemService,ItemTypeService,IItem, IItemType } from '@farmmaps/common';
|
||||||
|
|
||||||
import { Feature } from 'ol';
|
import { Feature } from 'ol';
|
||||||
import { Point, Geometry } from 'ol/geom';
|
import { Point,Geometry } from 'ol/geom';
|
||||||
import { MapBrowserEvent } from 'ol';
|
import { MapBrowserEvent } from 'ol';
|
||||||
import { Types } from 'ol/MapBrowserEventType';
|
import { Types } from 'ol/MapBrowserEventType';
|
||||||
import * as style from 'ol/style';
|
import * as style from 'ol/style';
|
||||||
@ -11,18 +11,18 @@ import * as color from 'ol/color';
|
|||||||
import * as loadingstrategy from 'ol/loadingstrategy';
|
import * as loadingstrategy from 'ol/loadingstrategy';
|
||||||
import * as condition from 'ol/events/condition';
|
import * as condition from 'ol/events/condition';
|
||||||
import * as extent from 'ol/extent';
|
import * as extent from 'ol/extent';
|
||||||
import { Vector, Cluster, Source } from 'ol/source';
|
import {Vector,Cluster,Source} from 'ol/source';
|
||||||
import { Layer } from 'ol/layer';
|
import {Layer} from 'ol/layer';
|
||||||
import { GeoJSON } from 'ol/format';
|
import {GeoJSON} from 'ol/format';
|
||||||
import { Select } from 'ol/interaction';
|
import {Select} from 'ol/interaction';
|
||||||
import { IStyles } from '../../../models/style.cache';
|
import {IStyles} from '../../../models/style.cache';
|
||||||
import { FeatureIconService } from '../../../services/feature-icon.service';
|
import {FeatureIconService} from '../../../services/feature-icon.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'fm-map-item-source-vector',
|
selector: 'fm-map-item-source-vector',
|
||||||
template: `<ng-content></ng-content>`,
|
template: `<ng-content></ng-content>`,
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: SourceVectorComponent, useExisting: forwardRef(() => ItemVectorSourceComponent) }
|
{ provide: SourceVectorComponent , useExisting: forwardRef(() => ItemVectorSourceComponent) }
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class ItemVectorSourceComponent extends SourceVectorComponent implements OnInit, OnChanges {
|
export class ItemVectorSourceComponent extends SourceVectorComponent implements OnInit, OnChanges {
|
||||||
@ -30,48 +30,48 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
|
|||||||
private _format: GeoJSON;
|
private _format: GeoJSON;
|
||||||
private _select: Select;
|
private _select: Select;
|
||||||
private _hoverSelect: Select;
|
private _hoverSelect: Select;
|
||||||
private _iconScale = 0.05;
|
private _iconScale: number = 0.05;
|
||||||
@Input() features: Array<Feature<Geometry>>;
|
@Input() features: Array<Feature<Geometry>>;
|
||||||
@Input() selectedFeature: Feature<Geometry>;
|
@Input() selectedFeature: Feature<Geometry>;
|
||||||
@Input() selectedItem: IItem;
|
@Input() selectedItem: IItem;
|
||||||
@Input() styles: IStyles;
|
@Input() styles:IStyles;
|
||||||
@Output() onFeatureSelected: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
|
@Output() onFeatureSelected: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
|
||||||
@Output() onFeatureHover: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
|
@Output() onFeatureHover: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
|
||||||
private stylesCache: IStyles = {};
|
private stylesCache:IStyles = {};
|
||||||
|
|
||||||
constructor(@Host() private layer: LayerVectorComponent, private itemService: ItemService, private map: MapComponent, private itemTypeService: ItemTypeService, private featureIconService$: FeatureIconService) {
|
constructor(@Host() private layer: LayerVectorComponent, private itemService: ItemService, private map: MapComponent, private itemTypeService: ItemTypeService,private featureIconService$:FeatureIconService) {
|
||||||
super(layer);
|
super(layer);
|
||||||
this._format = new GeoJSON();
|
this._format = new GeoJSON();
|
||||||
}
|
}
|
||||||
|
|
||||||
geometry(feature: Feature<Geometry>) {
|
geometry(feature: Feature<Geometry>) {
|
||||||
const view = this.map.instance.getView();
|
let view = this.map.instance.getView();
|
||||||
const resolution = view.getResolution();
|
let resolution = view.getResolution();
|
||||||
let geometry = feature.getGeometry();
|
var geometry = feature.getGeometry();
|
||||||
const e = geometry.getExtent();
|
let e = geometry.getExtent();
|
||||||
//var size = Math.max((e[2] - e[0]) / resolution, (e[3] - e[1]) / resolution);
|
//var size = Math.max((e[2] - e[0]) / resolution, (e[3] - e[1]) / resolution);
|
||||||
if (resolution > 12) {
|
if (resolution > 12) {
|
||||||
geometry = new Point(extent.getCenter(e));
|
geometry = new Point(extent.getCenter(e));
|
||||||
}
|
}
|
||||||
return geometry;
|
return geometry;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSelectedStyle(feature: Feature<Geometry>): style.Style {
|
getSelectedStyle(feature:Feature<Geometry>):style.Style {
|
||||||
const key = feature.get('itemType') + "_selected";
|
let key = feature.get('itemType')+"_selected";
|
||||||
let evaluatedStyle: style.Style = undefined;
|
let evaluatedStyle: style.Style =undefined;
|
||||||
const styleEntry = this.stylesCache[key];
|
var styleEntry = this.stylesCache[key];
|
||||||
if (styleEntry) {
|
if(styleEntry) {
|
||||||
if (typeof styleEntry === 'function') {
|
if(typeof styleEntry === 'function') {
|
||||||
evaluatedStyle = styleEntry(feature);
|
evaluatedStyle = styleEntry(feature);
|
||||||
} else {
|
} else {
|
||||||
evaluatedStyle = styleEntry;
|
evaluatedStyle = styleEntry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
evaluatedStyle = this.stylesCache["selected"] as style.Style;
|
evaluatedStyle = this.stylesCache["selected"] as style.Style;
|
||||||
}
|
}
|
||||||
if (evaluatedStyle) {
|
if(evaluatedStyle ) {
|
||||||
evaluatedStyle.setGeometry((feature: Feature<Geometry>) => this.geometry(feature));
|
evaluatedStyle .setGeometry((feature:Feature<Geometry>) => this.geometry(feature));
|
||||||
}
|
}
|
||||||
return evaluatedStyle as style.Style
|
return evaluatedStyle as style.Style
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,12 +79,12 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
|
|||||||
this.strategy = loadingstrategy.bbox;
|
this.strategy = loadingstrategy.bbox;
|
||||||
this.format = new GeoJSON();
|
this.format = new GeoJSON();
|
||||||
this._select = new Select({
|
this._select = new Select({
|
||||||
style: null,
|
style:null,
|
||||||
hitTolerance: 10,
|
hitTolerance: 10,
|
||||||
layers: [this.layer.instance as Layer<Source>]
|
layers: [this.layer.instance as Layer<Source>]
|
||||||
});
|
});
|
||||||
this._hoverSelect = new Select({
|
this._hoverSelect = new Select({
|
||||||
style: (feature: Feature<Geometry>) => {
|
style: (feature:Feature<Geometry>) => {
|
||||||
return this.getSelectedStyle(feature);
|
return this.getSelectedStyle(feature);
|
||||||
},
|
},
|
||||||
hitTolerance: 10,
|
hitTolerance: 10,
|
||||||
@ -94,7 +94,7 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
|
|||||||
layers: [this.layer.instance as Layer<Source>]
|
layers: [this.layer.instance as Layer<Source>]
|
||||||
});
|
});
|
||||||
this.map.instance.addInteraction(this._select);
|
this.map.instance.addInteraction(this._select);
|
||||||
this.map.instance.addInteraction(this._hoverSelect);
|
this.map.instance.addInteraction(this._hoverSelect);
|
||||||
this._select.on('select', (e) => {
|
this._select.on('select', (e) => {
|
||||||
if (e.selected.length > 0 && e.selected[0]) {
|
if (e.selected.length > 0 && e.selected[0]) {
|
||||||
this.onFeatureSelected.emit(e.selected[0]);
|
this.onFeatureSelected.emit(e.selected[0]);
|
||||||
@ -111,44 +111,44 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
|
|||||||
});
|
});
|
||||||
this.instance = new Vector(this);
|
this.instance = new Vector(this);
|
||||||
this.host.instance.setSource(this.instance);
|
this.host.instance.setSource(this.instance);
|
||||||
|
|
||||||
this.host.instance.setStyle((feature) => {
|
this.host.instance.setStyle((feature) => {
|
||||||
const itemType = feature.get('itemType');
|
var itemType = feature.get('itemType');
|
||||||
let key = itemType + (this.selectedItem ? "_I" : "");
|
var key = itemType + (this.selectedItem?"_I":"");
|
||||||
if (!this.stylesCache[key]) {
|
if (!this.stylesCache[key]) {
|
||||||
if (this.itemTypeService.itemTypes[itemType]) {
|
if (this.itemTypeService.itemTypes[itemType]) {
|
||||||
const itemTypeEntry = this.itemTypeService.itemTypes[itemType];
|
let itemTypeEntry = this.itemTypeService.itemTypes[itemType];
|
||||||
const fillColor = color.asArray(itemTypeEntry.iconColor);
|
let fillColor = color.asArray(itemTypeEntry.iconColor);
|
||||||
fillColor[3] = 0;
|
fillColor[3] = 0;
|
||||||
this.stylesCache[key] = new style.Style({
|
this.stylesCache[key] = new style.Style({
|
||||||
image: itemTypeEntry.icon ? new style.Icon({
|
image: itemTypeEntry.icon ? new style.Icon({
|
||||||
anchor: [0.5, 1],
|
anchor: [0.5, 1],
|
||||||
scale: 0.05,
|
scale: 0.05,
|
||||||
src: this.featureIconService$.getIconImageDataUrl(itemTypeEntry.icon)
|
src: this.featureIconService$.getIconImageDataUrl(itemTypeEntry.icon)
|
||||||
}) : null,
|
}):null,
|
||||||
stroke: new style.Stroke({
|
stroke: new style.Stroke({
|
||||||
color: 'red',
|
color: 'red',
|
||||||
width: 1
|
width: 1
|
||||||
}),
|
}),
|
||||||
fill: new style.Fill({
|
fill: new style.Fill({
|
||||||
color: fillColor
|
color: fillColor
|
||||||
}),
|
}),
|
||||||
geometry: (feature: Feature<Geometry>) => this.geometry(feature)
|
geometry:(feature:Feature<Geometry>) => this.geometry(feature)
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
key = 'file';
|
key = 'file';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let evaluatedStyle = null;
|
let evaluatedStyle =null;
|
||||||
const styleEntry = this.stylesCache[key];
|
var styleEntry = this.stylesCache[key];
|
||||||
if (typeof styleEntry === 'function') {
|
if(typeof styleEntry === 'function') {
|
||||||
evaluatedStyle = styleEntry(feature);
|
evaluatedStyle = styleEntry(feature);
|
||||||
} else {
|
} else {
|
||||||
evaluatedStyle = styleEntry;
|
evaluatedStyle = styleEntry;
|
||||||
}
|
}
|
||||||
if (evaluatedStyle && evaluatedStyle.geometry_ == null && !Array.isArray(evaluatedStyle)) {
|
if(evaluatedStyle && evaluatedStyle.geometry_ == null) {
|
||||||
evaluatedStyle.setGeometry((feature) => this.geometry(feature));
|
evaluatedStyle.setGeometry((feature) => this.geometry(feature));
|
||||||
}
|
}
|
||||||
return evaluatedStyle;
|
return evaluatedStyle;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -161,29 +161,29 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (changes["selectedFeature"] && this.instance) {
|
if (changes["selectedFeature"] && this.instance) {
|
||||||
const features = this._hoverSelect.getFeatures();
|
var features = this._hoverSelect.getFeatures();
|
||||||
const feature = changes["selectedFeature"].currentValue
|
var feature = changes["selectedFeature"].currentValue
|
||||||
//this.instance.clear(false);
|
//this.instance.clear(false);
|
||||||
//this.instance.addFeatures(features.getArray());
|
//this.instance.addFeatures(features.getArray());
|
||||||
features.clear();
|
features.clear();
|
||||||
if (feature) {
|
if (feature) {
|
||||||
//this.instance.removeFeature(feature);
|
//this.instance.removeFeature(feature);
|
||||||
features.push(feature)
|
features.push(feature)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changes["selectedItem"] && this.instance) {
|
if (changes["selectedItem"] && this.instance) {
|
||||||
const item = changes["selectedItem"].currentValue
|
var item = changes["selectedItem"].currentValue
|
||||||
if (item) {
|
if (item) {
|
||||||
this.map.instance.removeInteraction(this._hoverSelect);
|
this.map.instance.removeInteraction(this._hoverSelect);
|
||||||
} else {
|
} else {
|
||||||
this.map.instance.addInteraction(this._hoverSelect);
|
this.map.instance.addInteraction(this._hoverSelect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changes["styles"]) {
|
if (changes["styles"] && this.instance) {
|
||||||
const styles = changes["styles"].currentValue;
|
let styles = changes["styles"].currentValue;
|
||||||
for (const key in styles) {
|
for (const key in styles) {
|
||||||
if (styles.hasOwnProperty(key)) {
|
if (styles.hasOwnProperty(key)) {
|
||||||
this.stylesCache[key] = styles[key];
|
this.stylesCache[key]=styles[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<a href="#" title="Zoom to extent" class="btn btn-light btn-sm" (click)="handleZoomToExtent($event,itemLayer)"><i class="far fa-search-plus" aria-hidden="true"></i></a>
|
<a href="#" title="Zoom to extent" class="btn btn-light btn-sm" (click)="handleZoomToExtent($event,itemLayer)"><i class="far fa-search-plus" aria-hidden="true"></i></a>
|
||||||
<span *ngIf="firstLayer(itemLayer)"><a href="#" title="Toggle legend" class="btn btn-light btn-sm" (click)="itemLayer.legendVisible=toggleLegend($event,itemLayer.legendVisible)"><i class="far fa-chart-bar" aria-hidden="true"></i></a></span>
|
<span *ngIf="firstLayer(itemLayer)"><a href="#" title="Toggle legend" class="btn btn-light btn-sm" (click)="itemLayer.legendVisible=toggleLegend($event,itemLayer.legendVisible)"><i class="far fa-chart-bar" aria-hidden="true"></i></a></span>
|
||||||
<span *ngIf="!dataLayers" class="float-end"><a href="#" title="Remove overlay" class="btn btn-light btn-sm" (click)="handleDelete($event,itemLayer)"><i class="fas fa-layer-minus" aria-hidden="true"></i></a></span>
|
<span *ngIf="!dataLayers" class="float-right"><a href="#" title="Remove overlay" class="btn btn-light btn-sm" (click)="handleDelete($event,itemLayer)"><i class="fas fa-layer-minus" aria-hidden="true"></i></a></span>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="itemLayer.legendVisible">
|
<div *ngIf="itemLayer.legendVisible">
|
||||||
<div class="card legend">
|
<div class="card legend">
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user