Improve admin page (add new projects)
This commit is contained in:
1 parent
68bdbb4014
commit
d81b4a2428
12 files changed
+288
-55
No files matched your search
+60
-9
@@ -2,10 +2,7 @@
|
||||
|
||||
/**
|
||||
* Feed Class
|
||||
* Also takes care of spot (device) & messages
|
||||
*
|
||||
* To add a new feed, create a new records in the feed table:
|
||||
* INSERT INTO feeds (ref_feed_id, id_spot, id_project) VALUES ('<feed_id>', '<related_spot_id>', '<related_project_id>');
|
||||
* Also manages spots (devices) & messages
|
||||
*/
|
||||
class Feed extends PhpObject {
|
||||
|
||||
@@ -29,24 +26,68 @@ class Feed extends PhpObject {
|
||||
private $sRefFeedId;
|
||||
private $iLastUpdate;
|
||||
|
||||
public function __construct(Db &$oDb, $iFeedId) {
|
||||
public function __construct(Db &$oDb, $iFeedId=0) {
|
||||
parent::__construct(__CLASS__, Settings::DEBUG);
|
||||
$this->oDb = &$oDb;
|
||||
$this->setFeedId($iFeedId);
|
||||
if($iFeedId > 0) $this->setFeedId($iFeedId);
|
||||
}
|
||||
|
||||
public function getFeedId() {
|
||||
return $this->iFeedId;
|
||||
}
|
||||
|
||||
public function setFeedId($iFeedId) {
|
||||
$this->iFeedId = $iFeedId;
|
||||
$asFeed = $this->oDb->selectRow(self::FEED_TABLE, $this->iFeedId);
|
||||
$asFeed = $this->getFeed();
|
||||
$this->sRefFeedId = $asFeed['ref_feed_id'];
|
||||
$this->iLastUpdate = strtotime($asFeed['last_update']);
|
||||
}
|
||||
|
||||
public function createFeedId($oProjectId) {
|
||||
$this->setFeedId($this->oDb->insertRow(self::FEED_TABLE, array(
|
||||
Db::getId(Project::PROJ_TABLE) => $oProjectId,
|
||||
'status' => 'INACTIVE'
|
||||
)));
|
||||
return $this->getFeedId();
|
||||
}
|
||||
|
||||
public function setRefFeedId($sRefFeedId) {
|
||||
return $this->updateField('ref_feed_id', $sRefFeedId);
|
||||
}
|
||||
|
||||
public function setSpotId($iSpotId) {
|
||||
return $this->updateField(Db::getId(self::SPOT_TABLE), $iSpotId);
|
||||
}
|
||||
|
||||
public function setProjectId($iProjectId) {
|
||||
return $this->updateField(Db::getId(Project::PROJ_TABLE), $iProjectId);
|
||||
}
|
||||
|
||||
public function getSpots() {
|
||||
$asSpots = $this->oDb->selectRows(array('from'=>self::SPOT_TABLE));
|
||||
foreach($asSpots as &$asSpot) $asSpot['id'] = $asSpot[Db::getId(self::SPOT_TABLE)];
|
||||
return $asSpots;
|
||||
}
|
||||
|
||||
public function getFeeds($iFeedId=0) {
|
||||
$asInfo = array('from'=>self::FEED_TABLE);
|
||||
if($iFeedId > 0) $asInfo['constraint'] = array(Db::getId(self::FEED_TABLE)=>$iFeedId);
|
||||
$asFeeds = $this->oDb->selectRows($asInfo);
|
||||
|
||||
foreach($asFeeds as &$asFeed) $asFeed['id'] = $asFeed[Db::getId(self::FEED_TABLE)];
|
||||
return $asFeeds;
|
||||
}
|
||||
|
||||
public function getFeed() {
|
||||
$asFeeds = $this->getFeeds($this->getFeedId());
|
||||
return array_shift($asFeeds);
|
||||
}
|
||||
|
||||
public function getMessages($asActivePeriod = array()) {
|
||||
$asInfo = array(
|
||||
'select' => array('id_message', 'ref_msg_id', 'type', 'latitude', 'longitude', 'site_time', 'unix_time'),
|
||||
'from' => self::MSG_TABLE,
|
||||
'constraint'=> array(Db::getId(self::FEED_TABLE) => $this->iFeedId),
|
||||
'constraint'=> array(Db::getId(self::FEED_TABLE) => $this->getFeedId()),
|
||||
'constOpe' => array(Db::getId(self::FEED_TABLE) => "="),
|
||||
'orderBy' => array('site_time'=>'ASC')
|
||||
);
|
||||
@@ -114,12 +155,22 @@ class Feed extends PhpObject {
|
||||
}
|
||||
}
|
||||
}
|
||||
else $this->oDb->updateRow(self::FEED_TABLE, $this->iFeedId, array('last_update'=>$sLastUpdate));
|
||||
else $this->oDb->updateRow(self::FEED_TABLE, $this->getFeedId(), array('last_update'=>$sLastUpdate));
|
||||
}
|
||||
|
||||
private function retrieveFeed() {
|
||||
$sContent = '[]';
|
||||
if($this->sRefFeedId !='') {
|
||||
$sUrl = self::FEED_HOOK.$this->sRefFeedId.self::FEED_TYPE_JSON;
|
||||
$sContent = file_get_contents($sUrl);
|
||||
}
|
||||
return json_decode($sContent, true);
|
||||
}
|
||||
|
||||
private function updateField($sField, $oValue) {
|
||||
$bResult = ($this->oDb->updateRow(self::FEED_TABLE, $this->getFeedId(), array($sField=>$oValue)) > 0);
|
||||
$this->setFeedId($this->getFeedId());
|
||||
|
||||
return $bResult;
|
||||
}
|
||||
}
|
||||
+16
-2
@@ -24,9 +24,10 @@ class Project extends PhpObject {
|
||||
private $asActive;
|
||||
private $asGeo;
|
||||
|
||||
public function __construct(Db &$oDb) {
|
||||
public function __construct(Db &$oDb, $iProjectId=0) {
|
||||
parent::__construct(__CLASS__, Settings::DEBUG);
|
||||
$this->oDb = &$oDb;
|
||||
if($iProjectId > 0) $this->setProjectId($iProjectId);
|
||||
}
|
||||
|
||||
public function getProjectId() {
|
||||
@@ -64,10 +65,23 @@ class Project extends PhpObject {
|
||||
$this->setProjectInfo();
|
||||
}
|
||||
|
||||
public function createProjectId() {
|
||||
$this->setProjectId($this->oDb->insertRow(self::PROJ_TABLE, array('timezone'=>Settings::TIMEZONE)));
|
||||
return $this->getProjectId();
|
||||
}
|
||||
|
||||
public function getMode() {
|
||||
return $this->sMode;
|
||||
}
|
||||
|
||||
public function getProjectName() {
|
||||
return $this->sName;
|
||||
}
|
||||
|
||||
public function setProjectName($sName) {
|
||||
return $this->updateField('name', $sName);
|
||||
}
|
||||
|
||||
public function getProjectCodeName() {
|
||||
return $this->sCodeName;
|
||||
}
|
||||
@@ -130,7 +144,7 @@ class Project extends PhpObject {
|
||||
case 2: $asProject['mode'] = self::MODE_HISTO; break;
|
||||
}
|
||||
|
||||
if(!Converter::isGeoJsonValid($sCodeName)) Converter::convertToGeoJson($sCodeName);
|
||||
if($sCodeName!= '' && !Converter::isGeoJsonValid($sCodeName)) Converter::convertToGeoJson($sCodeName);
|
||||
|
||||
$asProject['geofilepath'] = Spot::addTimestampToFilePath(Geo::getFilePath($sCodeName, GeoJson::EXT));
|
||||
$asProject['gpxfilepath'] = Spot::addTimestampToFilePath(Geo::getFilePath($sCodeName, Gpx::EXT));
|
||||
|
||||
+51
-8
@@ -338,30 +338,73 @@ class Spot extends Main
|
||||
}
|
||||
|
||||
public function getAdminSettings() {
|
||||
return self::getJsonResult(true, '', array('projects'=>$this->oProject->getProjects()));
|
||||
$oFeed = new Feed($this->oDb);
|
||||
return self::getJsonResult(true, '', array(
|
||||
'project' => $this->oProject->getProjects(),
|
||||
'feed' => $oFeed->getFeeds(),
|
||||
'spot' => $oFeed->getSpots()
|
||||
));
|
||||
}
|
||||
|
||||
public function setAdminSettings($sField, $sValue) {
|
||||
public function setAdminSettings($sType, $iId, $sField, $sValue) {
|
||||
$bSuccess = false;
|
||||
$sDesc = '';
|
||||
|
||||
switch($sType) {
|
||||
case 'project':
|
||||
$oProject = new Project($this->oDb, $iId);
|
||||
switch($sField) {
|
||||
case 'name':
|
||||
$bSuccess = $oProject->setProjectName($sValue);
|
||||
break;
|
||||
case 'codename':
|
||||
$bSuccess = $this->oProject->setProjectCodeName($sValue);
|
||||
$bSuccess = $oProject->setProjectCodeName($sValue);
|
||||
break;
|
||||
case 'active_from':
|
||||
$bSuccess = $this->oProject->setActivePeriod($sValue.' 00:00:00', 'from');
|
||||
$bSuccess = $oProject->setActivePeriod($sValue.' 00:00:00', 'from');
|
||||
break;
|
||||
case 'active_to':
|
||||
$bSuccess = $this->oProject->setActivePeriod($sValue.' 23:59:59', 'to');
|
||||
$bSuccess = $oProject->setActivePeriod($sValue.' 23:59:59', 'to');
|
||||
break;
|
||||
case 'timezone':
|
||||
$bSuccess = $this->oProject->setTimeZone($sValue);
|
||||
$bSuccess = $oProject->setTimeZone($sValue);
|
||||
break;
|
||||
}
|
||||
$asResult = $oProject->getProject();
|
||||
break;
|
||||
case 'feed':
|
||||
case 'spot':
|
||||
$oFeed = new Feed($this->oDb, $iId);
|
||||
switch($sField) {
|
||||
case 'ref_feed_id':
|
||||
$bSuccess = $oFeed->setRefFeedId($sValue);
|
||||
break;
|
||||
case 'spot_id':
|
||||
$bSuccess = $oFeed->setSpotId($sValue);
|
||||
break;
|
||||
case 'project_id':
|
||||
$bSuccess = $oFeed->setProjectId($sValue);
|
||||
break;
|
||||
}
|
||||
$asResult = $oFeed->getFeed();
|
||||
break;
|
||||
}
|
||||
if(!$bSuccess) $sDesc = Mask::LANG_PREFIX.'error_commit_db';
|
||||
|
||||
return self::getJsonResult($bSuccess, $sDesc, array('values'=>$this->oProject->getProject()));
|
||||
return self::getJsonResult($bSuccess, $sDesc, array($sType=>array($asResult)));
|
||||
}
|
||||
|
||||
public function createProject() {
|
||||
$oProject = new Project($this->oDb);
|
||||
$iNewProjectId = $oProject->createProjectId();
|
||||
|
||||
$oFeed = new Feed($this->oDb);
|
||||
$oFeed->createFeedId($iNewProjectId);
|
||||
|
||||
return self::getJsonResult($iNewProjectId>0, '', array(
|
||||
'project' => array($oProject->getProject()),
|
||||
'feed' => array($oFeed->getFeed())
|
||||
));
|
||||
}
|
||||
|
||||
public function convertGpxToGeojson($sGeoFileName) {
|
||||
@@ -385,7 +428,7 @@ class Spot extends Main
|
||||
//Seconds
|
||||
$fSecond = round($dLeft * 3600, 1);
|
||||
|
||||
return $iDegree.'°'.$iMinute.'\''.$fSecond.'"'.$sDirection;
|
||||
return $iDegree.'°'.$iMinute."'".$fSecond.'"'.$sDirection;
|
||||
}
|
||||
|
||||
public function getTimeFormat($iTime) {
|
||||
|
||||
@@ -20,7 +20,8 @@ $iChunk = isset($_GET['chunk'])?$_GET['chunk']:0;
|
||||
$iProjectId = isset($_REQUEST['project_id'])?$_REQUEST['project_id']:0;
|
||||
$sField = isset($_REQUEST['field'])?$_REQUEST['field']:'';
|
||||
$oValue = isset($_REQUEST['value'])?$_REQUEST['value']:'';
|
||||
$iId = isset($_REQUEST['id'])?$_REQUEST['id']:'';
|
||||
$iId = isset($_REQUEST['id'])?$_REQUEST['id']:0;
|
||||
$sType = isset($_REQUEST['type'])?$_REQUEST['type']:'';
|
||||
|
||||
//Initiate class
|
||||
$oSpot = new Spot($oClassManagement, __FILE__, $sTimezone);
|
||||
@@ -52,11 +53,14 @@ if($sAction!='')
|
||||
case 'sync_pics':
|
||||
$sResult = $oSpot->syncPics();
|
||||
break;
|
||||
case 'get_admin':
|
||||
case 'admin_get':
|
||||
$sResult = $oSpot->getAdminSettings();
|
||||
break;
|
||||
case 'set_admin':
|
||||
$sResult = $oSpot->setAdminSettings($sField, $oValue);
|
||||
case 'admin_set':
|
||||
$sResult = $oSpot->setAdminSettings($sType, $iId, $sField, $oValue);
|
||||
break;
|
||||
case 'admin_new':
|
||||
$sResult = $oSpot->createProject();
|
||||
break;
|
||||
case 'build_geojson':
|
||||
$sResult = $oSpot->convertGpxToGeojson($sName);
|
||||
|
||||
@@ -41,11 +41,20 @@ media_comment_update= Comment of media "$0" updated
|
||||
|
||||
city_time = $0 Time
|
||||
|
||||
project_id = Project ID
|
||||
project = Project
|
||||
mode = Mode
|
||||
code_name = Code name
|
||||
start = Start
|
||||
end = End
|
||||
feed_id = Feed ID
|
||||
ref_feed_id = Ref. Feed ID
|
||||
spot_id = Spot ID
|
||||
name = Name
|
||||
status = Status
|
||||
last_update = Last Update
|
||||
ref_spot_id = Ref. Spot ID
|
||||
model = Model
|
||||
|
||||
date_time = $0 at $1
|
||||
time_zone = Time zone
|
||||
|
||||
@@ -41,11 +41,20 @@ media_comment_update= Commentaire du media "$0" mis-à-jour
|
||||
|
||||
city_time = heure de $0
|
||||
|
||||
project_id = ID projet
|
||||
project = Projet
|
||||
mode = Mode
|
||||
code_name = Nom de code
|
||||
start = Départ
|
||||
end = Arrivée
|
||||
feed_id = ID Feed
|
||||
ref_feed_id = ID Feed ref.
|
||||
spot_id = ID Spot
|
||||
name = Description
|
||||
status = Statut
|
||||
last_update = Dernière maj
|
||||
ref_spot_id = ID Spot ref.
|
||||
model = Modèle
|
||||
|
||||
date_time = $0 à $1
|
||||
time_zone = Fuseau horaire
|
||||
|
||||
+89
-25
@@ -1,7 +1,10 @@
|
||||
<div id="admin">
|
||||
<h1>Projects</h1>
|
||||
<div id="projects">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:project_id[#]</th>
|
||||
<th>[#]lang:project[#]</th>
|
||||
<th>[#]lang:mode[#]</th>
|
||||
<th>[#]lang:code_name[#]</th>
|
||||
@@ -9,18 +12,48 @@
|
||||
<th>[#]lang:end[#]</th>
|
||||
<th>[#]lang:time_zone[#]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<div id="new"></div>
|
||||
</div>
|
||||
<h1>Feeds</h1>
|
||||
<div id="feeds">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:feed_id[#]</th>
|
||||
<th>[#]lang:ref_feed_id[#]</th>
|
||||
<th>[#]lang:spot_id[#]</th>
|
||||
<th>[#]lang:project_id[#]</th>
|
||||
<th>[#]lang:name[#]</th>
|
||||
<th>[#]lang:status[#]</th>
|
||||
<th>[#]lang:last_update[#]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h1>Spots</h1>
|
||||
<div id="spots">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:spot_id[#]</th>
|
||||
<th>[#]lang:ref_spot_id[#]</th>
|
||||
<th>[#]lang:name[#]</th>
|
||||
<th>[#]lang:model[#]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="feedback"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
oSpot.pageInit = function(asHash) {
|
||||
self.get(
|
||||
'get_admin',
|
||||
function(asData){
|
||||
setProjects(asData.projects);
|
||||
}
|
||||
);
|
||||
self.get('admin_get', setProjects);
|
||||
$('#new').addInput('button', 'new', 'New Project', [{on:'click', callback:createProject}]);
|
||||
};
|
||||
|
||||
oSpot.onFeedback = function(sType, sMsg, asContext) {
|
||||
@@ -33,40 +66,71 @@ oSpot.onFeedback = function(sType, sMsg, asContext) {
|
||||
$('#feedback').append($('<p>', {'class': sType}).text(sMsg));
|
||||
};
|
||||
|
||||
function setProjects(asProjects) {
|
||||
$.each(asProjects, function(iKey, oProject) {
|
||||
var sElemId = 'proj_'+oProject.id;
|
||||
var $Project = ($('#'+sElemId).length==0)?$('<tr>', {'id': sElemId}):$('#'+sElemId).empty();
|
||||
function setProjects(asElemTypes) {
|
||||
var aoEvents = [{on:'change', callback:commit}, {on:'keyup', callback:waitAndCommit}];
|
||||
|
||||
$Project
|
||||
.data('project_id', oProject.id)
|
||||
.append($('<td>', {'class': 'name'}).text(oProject.name))
|
||||
.append($('<td>', {'class': 'mode'}).text(oProject.mode))
|
||||
.append($('<td>').addInput('text', 'codename', oProject.codename))
|
||||
.append($('<td>').addInput('date', 'active_from', oProject.active_from.substr(0, 10)))
|
||||
.append($('<td>').addInput('date', 'active_to', oProject.active_to.substr(0, 10)))
|
||||
.append($('<td>').addInput('text', 'timezone', oProject.timezone))
|
||||
.appendTo($('#projects').find('table'));
|
||||
$.each(asElemTypes, function(sElemType, aoElems) {
|
||||
$.each(aoElems, function(iKey, oElem) {
|
||||
var sElemId = sElemType+'_'+oElem.id;
|
||||
var bNew = ($('#'+sElemId).length == 0);
|
||||
|
||||
var $Elem = (bNew?$('<tr>', {'id': sElemId}):$('#'+sElemId).empty())
|
||||
.data('type', sElemType)
|
||||
.data('id', oElem.id)
|
||||
.append($('<td>').text(oElem.id || ''));
|
||||
|
||||
switch(sElemType) {
|
||||
case 'project':
|
||||
$Elem
|
||||
.append($('<td>').addInput('text', 'name', oElem.name, aoEvents))
|
||||
.append($('<td>', {'class': 'mode'}).text(oElem.mode))
|
||||
.append($('<td>').addInput('text', 'codename', oElem.codename, aoEvents))
|
||||
.append($('<td>').addInput('date', 'active_from', oElem.active_from.substr(0, 10), aoEvents))
|
||||
.append($('<td>').addInput('date', 'active_to', oElem.active_to.substr(0, 10), aoEvents))
|
||||
.append($('<td>').addInput('text', 'timezone', oElem.timezone, aoEvents));
|
||||
break;
|
||||
case 'feed':
|
||||
$Elem
|
||||
.append($('<td>').addInput('text', 'ref_feed_id', oElem.ref_feed_id, aoEvents))
|
||||
.append($('<td>').addInput('number', 'spot_id', oElem.id_spot, aoEvents))
|
||||
.append($('<td>').addInput('number', 'project_id', oElem.id_project, aoEvents))
|
||||
.append($('<td>').text(oElem.name))
|
||||
.append($('<td>').text(oElem.status))
|
||||
.append($('<td>').text(oElem.last_update));
|
||||
break;
|
||||
case 'spot':
|
||||
$Elem
|
||||
.append($('<td>').text(oElem.ref_spot_id))
|
||||
.append($('<td>').text(oElem.name))
|
||||
.append($('<td>').text(oElem.model))
|
||||
break;
|
||||
}
|
||||
|
||||
if(bNew) $Elem.appendTo($('#'+sElemType+'s').find('table tbody'));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$('input')
|
||||
.change(commit)
|
||||
.keyup(waitAndCommit);
|
||||
function createProject() {
|
||||
self.get('admin_new', setProjects);
|
||||
}
|
||||
|
||||
function commit(event, $This) {
|
||||
$This = $This || $(this);
|
||||
if(typeof self.tmp('wait') != 'undefined') clearTimeout(self.tmp('wait'));
|
||||
|
||||
var sOldVal = $This.data('old_value');
|
||||
var sNewVal = $This.val();
|
||||
if(sOldVal!=sNewVal) {
|
||||
$This.data('old_value', sNewVal);
|
||||
|
||||
var asInputs = {project_id: $This.closest('tr').data('project_id'), field: $This.attr('name'), value: sNewVal};
|
||||
var $Record = $This.closest('tr');
|
||||
var asInputs = {type: $Record.data('type'), id: $Record.data('id'), field: $This.attr('name'), value: sNewVal};
|
||||
self.get(
|
||||
'set_admin',
|
||||
'admin_set',
|
||||
function(asData){
|
||||
oSpot.onFeedback('success', self.lang('admin_save_success'), asInputs);
|
||||
setProjects([asData.values]);
|
||||
setProjects(asData);
|
||||
},
|
||||
asInputs,
|
||||
function(sError){
|
||||
|
||||
@@ -4,8 +4,12 @@
|
||||
* php-mbstring
|
||||
* php-imagick
|
||||
* ffprobe (ffmpeg)
|
||||
## Getting started
|
||||
1. Copy files onto web server
|
||||
2. Copy settings-sample.php to settings.php and populate
|
||||
3. Go to #admin and create a new project
|
||||
## To Do List
|
||||
* import/export
|
||||
* ECMA import/export
|
||||
* Reset zoom on image closing (lightbox)
|
||||
* Fix fullscreen button on ios
|
||||
* Fix video fullscreen button on ios
|
||||
* Fix lightbox portrait mode: push text under
|
||||
+7
-2
@@ -255,9 +255,14 @@ function getTimeZoneDesc(sTimeZoneName) {
|
||||
return oSpot.lang('city_time', sCity);
|
||||
}
|
||||
|
||||
$.prototype.addInput = function(sType, sName, sValue)
|
||||
$.prototype.addInput = function(sType, sName, sValue, aoEvents)
|
||||
{
|
||||
return $(this).append($('<input>', {type: sType, name: sName, value: sValue}).data('old_value', sValue));
|
||||
aoEvents = aoEvents || [];
|
||||
var $Input = $('<input>', {type: sType, name: sName, value: sValue}).data('old_value', sValue);
|
||||
$.each(aoEvents, function(iIndex, aoEvent) {
|
||||
$Input.on(aoEvent.on, aoEvent.callback);
|
||||
});
|
||||
return $(this).append($Input);
|
||||
};
|
||||
|
||||
$.prototype.addIcon = function(sIcon, bMargin, sStyle)
|
||||
|
||||
+31
-1
@@ -1,4 +1,33 @@
|
||||
#feedback {
|
||||
#admin {
|
||||
margin: 1em;
|
||||
|
||||
table {
|
||||
margin-bottom: 1em;
|
||||
border-collapse: collapse;
|
||||
tr {
|
||||
th {
|
||||
background: #AAA;
|
||||
color: white;
|
||||
padding: 0.2rem 0.5rem;
|
||||
}
|
||||
td {
|
||||
background: #EEE;
|
||||
text-align: center;
|
||||
padding: 0.2rem 0.5rem;
|
||||
|
||||
input {
|
||||
&[type="number"] {
|
||||
width: 50px;
|
||||
}
|
||||
&[name="ref_feed_id"] {
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#feedback {
|
||||
.error {
|
||||
color: red;
|
||||
}
|
||||
@@ -6,4 +35,5 @@
|
||||
.success {
|
||||
color: green;
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcg72j00.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKew72j00.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcw72j00.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKfA72j00.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCs6KVjbNBYlgoKcQ72j00.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:400;src:local("Ubuntu Regular"),local("Ubuntu-Regular"),url(fonts/4iCs6KVjbNBYlgoKfw72.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(https://fonts.gstatic.com/s/ubuntu/v13/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Ubuntu";font-style:normal;font-weight:700;src:local("Ubuntu Bold"),local("Ubuntu-Bold"),url(fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@-webkit-keyframes fadeIn{from{opacity:.3}}@-moz-keyframes fadeIn{from{opacity:.3}}@-ms-keyframes fadeIn{from{opacity:.3}}@-o-keyframes fadeIn{from{opacity:.3}}@keyframes fadeIn{from{opacity:.3}}.flicker,.lightbox .lb-cancel{-webkit-animation:fadeIn .5s infinite alternate;-moz-animation:fadeIn .5s infinite alternate;-ms-animation:fadeIn .5s infinite alternate;-o-animation:fadeIn .5s infinite alternate;animation:fadeIn .5s infinite alternate}body,textarea,input,button{font-size:14px;font-family:"Ubuntu",sans-serif;margin:0}textarea{resize:none}button{cursor:pointer;font-weight:bold}/*!
|
||||
* Font Awesome Pro 5.11.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:auto;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,.lightbox .lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.control-icon,#projects #post-button .fa,#projects #post-button .control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .lb-close,#projects #post-button .lightbox .lb-cancel,.lightbox #projects #post-button .lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.spot-theme.leaflet-control.elevation-collapsed #projects #post-button .elevation-toggle,#projects #post-button .leaflet-control-layers-toggle,#projects .leaflet-control-layers-toggle,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}.fa,.lightbox .lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.control-icon,#projects #post-button .fa,#projects #post-button .control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .lb-close,#projects #post-button .lightbox .lb-cancel,.lightbox #projects #post-button .lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.spot-theme.leaflet-control.elevation-collapsed #projects #post-button .elevation-toggle,#projects #post-button .leaflet-control-layers-toggle,#projects .leaflet-control-layers-toggle,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.fas,.far,.fal,.fad,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-0.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 .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.lightbox .fa-pull-left.lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .fa-pull-left.lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-prev,.fa-pull-left.control-icon,#projects #post-button .fa-pull-left.fa,#projects #post-button .fa-pull-left.control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.fa-pull-left.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.fa-pull-left.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .fa-pull-left.lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .fa-pull-left.lb-close,#projects #post-button .lightbox .fa-pull-left.lb-cancel,.lightbox #projects #post-button .fa-pull-left.lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .fa-pull-left.elevation-toggLine truncated
|
||||
*/@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:auto;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,.lightbox .lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.control-icon,#projects #post-button .fa,#projects #post-button .control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .lb-close,#projects #post-button .lightbox .lb-cancel,.lightbox #projects #post-button .lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.spot-theme.leaflet-control.elevation-collapsed #projects #post-button .elevation-toggle,#projects #post-button .leaflet-control-layers-toggle,#projects .leaflet-control-layers-toggle,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}.fa,.lightbox .lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.control-icon,#projects #post-button .fa,#projects #post-button .control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .lb-close,#projects #post-button .lightbox .lb-cancel,.lightbox #projects #post-button .lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.spot-theme.leaflet-control.elevation-collapsed #projects #post-button .elevation-toggle,#projects #post-button .leaflet-control-layers-toggle,#projects .leaflet-control-layers-toggle,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,.fas,.far,.fal,.fad,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-0.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 .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.lightbox .fa-pull-left.lb-cancel,.lightbox .lb-dataContainer .lb-data .lb-closeContainer .fa-pull-left.lb-close,.lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-prev,.fa-pull-left.control-icon,#projects #post-button .fa-pull-left.fa,#projects #post-button .fa-pull-left.control-icon,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-prev,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.fa-pull-left.lb-prev,#projects #post-button .lightbox .lb-outerContainer .lb-container .lb-nav a.fa-pull-left.lb-next,.lightbox .lb-outerContainer .lb-container .lb-nav #projects #post-button a.fa-pull-left.lb-next,#projects #post-button .lightbox .lb-dataContainer .lb-data .lb-closeContainer .fa-pull-left.lb-close,.lightbox .lb-dataContainer .lb-data .lb-closeContainer #projects #post-button .fa-pull-left.lb-close,#projects #post-button .lightbox .fa-pull-left.lb-cancel,.lightbox #projects #post-button .fa-pull-left.lb-cancel,#projects #post-button .spot-theme.leaflet-control.elevation-collapsed .fa-pull-left.elevation-toggLine truncated
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"sourceRoot":"","sources":["_fonts.scss","_common.scss","fa/solid.scss","fa/_variables.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","lightbox/_lightbox.scss","_lightbox.scss","_simplebar.scss","leaflet/_leaflet.scss","leaflet/_leaflet_elevation.scss","_leaflet.scss","_mask_project.scss","_mask_upload.scss","_mask_admin.scss","_mobile.scss"],"names":[],"mappings":"CAGA,WACE,qBACA,kBACA,gBACA,8IACA,iFAGF,WACE,qBACA,kBACA,gBACA,8IACA,yDAGF,WACE,qBACA,kBACA,gBACA,8IACA,0BAGF,WACE,qBACA,kBACA,gBACA,8IACA,0BAGF,WACE,qBACA,kBACA,gBACA,8IACA,2GAGF,WACE,qBACA,kBACA,gBACA,0GACA,yJAGF,WACE,qBACA,kBACA,gBACA,4IACA,iFAGF,WACE,qBACA,kBACA,gBACA,4IACA,yDAGF,WACE,qBACA,kBACA,gBACA,4IACA,0BAGF,WACE,qBACA,kBACA,gBACA,4IACA,0BAGF,WACE,qBACA,kBACA,gBACA,4IACA,2GAGF,WACE,qBACA,kBACA,gBACA,wGACA,yJC9FF,0BACE,iBAEF,uBACE,iBAEF,sBACE,iBAEF,qBACE,iBAEF,kBACE,iBAWF,8BAPC,kBAQoB,8BAPpB,eAOoB,8BANpB,cAMoB,8BALpB,aAKoB,8BAJpB,UAIoB,8BAkBrB,2BACC,eACA,gCACA,SAGD,SACC,YAGD,OACC,eACA,iBCzDD;AAAA;AAAA;AAAA,GAMA,WACE,iCACA,kBACA,gBACA,aCLqB,KDMrB,qCACA,2RAOF,qtCAEE,iCACA,gBEnBF,yuCAME,kCACA,mCACA,qBACA,kBACA,oBACA,oBACA,cCXF,OACE,yBACA,kBACA,yBAGF,OACE,gBAGF,OACE,iBAIA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eClBJ,OACE,kBACA,MHOqB,OIRvB,OACE,qBACA,kBACA,eAEA,4BAGF,OACE,UACA,kBACA,kBACA,MJLqB,IIMrB,oBCbF,WACE,wBACA,mBACA,yBAGF,yBACA,2BAOE,2jDACA,mlDCfF,SACE,qCAGF,UACE,uCAGF,mBACE,GACE,uBAGF,KACE,0BCdJ,cCWE,sEACA,wBDXF,eCUE,sEACA,yBDVF,eCSE,sEACA,yBDRF,oBCYE,gFACA,uBDZF,kBCWE,gFACA,uBDXF,mDCUE,gFACA,wBDLA,oIAME,YElBJ,UACE,qBACA,WACA,gBACA,kBACA,sBACA,YAGF,0BAEE,OACA,kBACA,kBACA,WAGF,aACE,oBAGF,aACE,cAGF,YACE,MTpBqB,KUQtB,yzCACC,kBAED,k6CACC,iBAIF,2/BACC,eACA,kBACA,iBACA,qBACA,WACA,gBAKD,2BACA,uCACA,kCACA,yCACA,mCACA,iCACA,8EACA,2GACA,gCACA,iCACA,iCACA,gCAGA,y/BACA,6BACA,6BACA,6BACA,+BACA,kCACA,4BACA,8BACA,mCACA,qCACA,2GACA,8BACA,kCACA,kCAGA,8BACA,4BAGA,0DACA,gGACA,+rCACA,sGCzEA,0BACE,gBAGF,iBACE,kBACA,MACA,OACA,aACA,sBACA,2DACA,WACA,aAGF,UACE,kBACA,OACA,WACA,cACA,kBACA,cACA,mBACA,aAGF,oBACE,cACA,YACA,kBACA,gBACA,kBAGA,sBAIF,oBACE,uBAEF,gCACC,yBAID,gBACE,YAGF,mBACE,kBACA,QACA,YACA,aACA,cACA,kBAIA,sBAGF,yBACE,WACA,cACA,WAGF,WACE,kBACA,QACA,OACA,WACA,WACA,kBACA,cAGF,WACE,cACA,WACA,YACA,cACA,gDAGF,QACE,kBACA,MACA,OACA,YACA,WACA,WAGF,mBACE,OAGF,UACE,aACA,2GAGF,kBACE,YACA,eACA,cAGF,kBACE,UACA,OACA,WACA,sDACA,0DACA,UACA,+BACA,4BACA,0BACA,uBAGF,wBACE,4DACA,UAGF,kBACE,UACA,QACA,YACA,uDACA,0DACA,UACA,+BACA,4BACA,0BACA,uBAGF,wBACE,4DACA,UAGF,kBACE,cACA,gBACA,QACA,WACA,8BACA,+BAGF,wBACE,WACA,cACA,WAGF,SACE,cACA,WAGF,qBACE,UACA,WACA,gBACA,kBAGF,qBACE,eACA,iBACA,gBAGF,uBACE,WAGF,oBACE,cACA,WACA,mBACA,eACA,WAGF,mBACE,cACA,YACA,WACA,YACA,wDACA,iBACA,aACA,2DACA,WACA,+BACA,4BACA,0BACA,uBAGF,yBACE,eACA,4DACA,UC1MF,iBACC,SACA,QAGD,UACC,aACA,mBACA,uBACA,WACA,YAGA,6BACC,SACA,gBACA,sCAEA,2CACC,gBAEA,qDACC,6BACA,YACA,iBACA,iBACA,WAEA,UACC,2FAMD,0HACC,WACA,qBAEA,wIACC,kBACA,oBAIF,6DAnDH,gBACA,cAoDI,oEACC,SAIF,6DA1DH,gBACA,cA2DI,oEACC,UAOL,4BACC,SACA,UACA,qBACA,mBACA,YACA,eACA,cACA,gBAEA,qCACC,oBAEA,iDACC,WAEA,kEACC,eACA,cACA,eAGD,8EACC,aAGD,4DACC,UACA,eAGF,wDACC,wBACA,eAEA,kEAvGH,gBACA,cAwGI,WAMJ,qBA/GA,gBACA,cAiHC,WCrHF,iBACE,kBACA,sBACA,eACA,2BACA,yBACA,uBAGF,mBACE,gBACA,cACA,eACA,kBACA,mBAGF,gBACE,kBACA,kBACA,gBACA,UACA,SACA,OACA,MACA,SACA,QACA,sBACA,uBACA,UAGF,kBACE,6BACA,8BACA,uBACA,kBACA,MACA,OACA,SACA,QACA,UACA,SACA,iCAGF,2BACE,kBACA,iCACA,kBACA,cACA,YACA,WACA,mBACA,eACA,gBACA,qBACA,wBAGF,2FAEE,QACA,SAGF,mDAEE,YACA,cAGF,uBACE,gBACA,eACA,WACA,oBAGF,wCACE,8BACA,YACA,WACA,cACA,kBACA,WACA,eACA,gBACA,WACA,UACA,SACA,oBACA,kBACA,cACA,aAGF,gCACE,mBACA,cACA,UACA,kBACA,MACA,OACA,aACA,YACA,eACA,cACA,gBACA,oBACA,WAGF,iBACE,UACA,kBACA,QACA,SACA,oBACA,gBAGF,uDACE,oBACA,iBACA,yBAGF,qDACE,mBAGF,qBACE,kBACA,UACA,UACA,gBAGF,4BACE,kBACA,WACA,gBACA,kBACA,OACA,QACA,UACA,8BAGF,8CAEE,WACA,6BAGF,oCACE,MACA,WAGF,gEACE,QACA,WAGF,sCACE,OACA,YAGF,kEACE,YACA,SACA,UAGF,2DACE,WACA,OACA,QACA,WACA,aACA,eACA,WAIF,mEACE,WACA,OAGF,yBACE,cACA,eACA,UACA,kBACA,aACA,YACA,kBACA,kBAGF,0BACE,eACA,OACA,kBACA,kBACA,qBACA,wBChNF,6LAUC,kBACA,OACA,MAED,mBACC,gBAED,0DAGC,yBACG,sBACK,iBACN,uBAGH,yBACC,uBAGD,8BACC,0CAGD,wCACC,aACA,cACA,6BAED,4CAEC,cAID,2PAMC,0BACA,2BAGD,sCACC,6BACA,yBAED,sCACC,4BAEA,kBACA,wBAED,yDACC,sBACA,kBAED,mBACC,wCAED,qBACC,gDAED,cACC,eACA,kBAED,qBACC,mBAED,kBACC,QACA,SACA,2BACK,sBACL,YAGD,0BACC,sBAGD,0BAEA,+BACA,kCACA,iCACA,iCACA,kCACA,gCAEA,qCACA,kCAEA,mBACC,UACA,WAED,MACC,2BACA,qBACA,kBAMD,iBACC,kBACA,YACA,8BACA,oBAED,6BAEC,kBACA,aACA,oBAED,aACC,MAED,eACC,QAED,gBACC,SAED,cACC,OAED,iBACC,WACA,WAED,gCACC,YAED,8BACC,gBAED,iCACC,mBAED,+BACC,iBAED,gCACC,kBAMD,iCACC,oBAED,kCACC,UACA,sCACG,mCACK,8BAET,oDACC,UAED,uBACC,6BACI,yBACI,qBAET,0CACC,sBAED,0CACC,sEACG,gEACK,sDAET,iEAEC,wBACG,qBACK,gBAGT,sCACC,kBAMD,qBACC,eAED,cACC,oBACA,iBACA,YAED,2DAEC,iBAED,qCAEC,YAED,iIAGC,YACLine truncated
|
||||
{"version":3,"sourceRoot":"","sources":["_fonts.scss","_common.scss","fa/solid.scss","fa/_variables.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","lightbox/_lightbox.scss","_lightbox.scss","_simplebar.scss","leaflet/_leaflet.scss","leaflet/_leaflet_elevation.scss","_leaflet.scss","_mask_project.scss","_mask_upload.scss","_mask_admin.scss","_mobile.scss"],"names":[],"mappings":"CAGA,WACE,qBACA,kBACA,gBACA,8IACA,iFAGF,WACE,qBACA,kBACA,gBACA,8IACA,yDAGF,WACE,qBACA,kBACA,gBACA,8IACA,0BAGF,WACE,qBACA,kBACA,gBACA,8IACA,0BAGF,WACE,qBACA,kBACA,gBACA,8IACA,2GAGF,WACE,qBACA,kBACA,gBACA,0GACA,yJAGF,WACE,qBACA,kBACA,gBACA,4IACA,iFAGF,WACE,qBACA,kBACA,gBACA,4IACA,yDAGF,WACE,qBACA,kBACA,gBACA,4IACA,0BAGF,WACE,qBACA,kBACA,gBACA,4IACA,0BAGF,WACE,qBACA,kBACA,gBACA,4IACA,2GAGF,WACE,qBACA,kBACA,gBACA,wGACA,yJC9FF,0BACE,iBAEF,uBACE,iBAEF,sBACE,iBAEF,qBACE,iBAEF,kBACE,iBAWF,8BAPC,kBAQoB,8BAPpB,eAOoB,8BANpB,cAMoB,8BALpB,aAKoB,8BAJpB,UAIoB,8BAkBrB,2BACC,eACA,gCACA,SAGD,SACC,YAGD,OACC,eACA,iBCzDD;AAAA;AAAA;AAAA,GAMA,WACE,iCACA,kBACA,gBACA,aCLqB,KDMrB,qCACA,2RAOF,qtCAEE,iCACA,gBEnBF,yuCAME,kCACA,mCACA,qBACA,kBACA,oBACA,oBACA,cCXF,OACE,yBACA,kBACA,yBAGF,OACE,gBAGF,OACE,iBAIA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eClBJ,OACE,kBACA,MHOqB,OIRvB,OACE,qBACA,kBACA,eAEA,4BAGF,OACE,UACA,kBACA,kBACA,MJLqB,IIMrB,oBCbF,WACE,wBACA,mBACA,yBAGF,yBACA,2BAOE,2jDACA,mlDCfF,SACE,qCAGF,UACE,uCAGF,mBACE,GACE,uBAGF,KACE,0BCdJ,cCWE,sEACA,wBDXF,eCUE,sEACA,yBDVF,eCSE,sEACA,yBDRF,oBCYE,gFACA,uBDZF,kBCWE,gFACA,uBDXF,mDCUE,gFACA,wBDLA,oIAME,YElBJ,UACE,qBACA,WACA,gBACA,kBACA,sBACA,YAGF,0BAEE,OACA,kBACA,kBACA,WAGF,aACE,oBAGF,aACE,cAGF,YACE,MTpBqB,KUQtB,yzCACC,kBAED,k6CACC,iBAIF,2/BACC,eACA,kBACA,iBACA,qBACA,WACA,gBAKD,2BACA,uCACA,kCACA,yCACA,mCACA,iCACA,8EACA,2GACA,gCACA,iCACA,iCACA,gCAGA,y/BACA,6BACA,6BACA,6BACA,+BACA,kCACA,4BACA,8BACA,mCACA,qCACA,2GACA,8BACA,kCACA,kCAGA,8BACA,4BAGA,0DACA,gGACA,+rCACA,sGCzEA,0BACE,gBAGF,iBACE,kBACA,MACA,OACA,aACA,sBACA,2DACA,WACA,aAGF,UACE,kBACA,OACA,WACA,cACA,kBACA,cACA,mBACA,aAGF,oBACE,cACA,YACA,kBACA,gBACA,kBAGA,sBAIF,oBACE,uBAEF,gCACC,yBAID,gBACE,YAGF,mBACE,kBACA,QACA,YACA,aACA,cACA,kBAIA,sBAGF,yBACE,WACA,cACA,WAGF,WACE,kBACA,QACA,OACA,WACA,WACA,kBACA,cAGF,WACE,cACA,WACA,YACA,cACA,gDAGF,QACE,kBACA,MACA,OACA,YACA,WACA,WAGF,mBACE,OAGF,UACE,aACA,2GAGF,kBACE,YACA,eACA,cAGF,kBACE,UACA,OACA,WACA,sDACA,0DACA,UACA,+BACA,4BACA,0BACA,uBAGF,wBACE,4DACA,UAGF,kBACE,UACA,QACA,YACA,uDACA,0DACA,UACA,+BACA,4BACA,0BACA,uBAGF,wBACE,4DACA,UAGF,kBACE,cACA,gBACA,QACA,WACA,8BACA,+BAGF,wBACE,WACA,cACA,WAGF,SACE,cACA,WAGF,qBACE,UACA,WACA,gBACA,kBAGF,qBACE,eACA,iBACA,gBAGF,uBACE,WAGF,oBACE,cACA,WACA,mBACA,eACA,WAGF,mBACE,cACA,YACA,WACA,YACA,wDACA,iBACA,aACA,2DACA,WACA,+BACA,4BACA,0BACA,uBAGF,yBACE,eACA,4DACA,UC1MF,iBACC,SACA,QAGD,UACC,aACA,mBACA,uBACA,WACA,YAGA,6BACC,SACA,gBACA,sCAEA,2CACC,gBAEA,qDACC,6BACA,YACA,iBACA,iBACA,WAEA,UACC,2FAMD,0HACC,WACA,qBAEA,wIACC,kBACA,oBAIF,6DAnDH,gBACA,cAoDI,oEACC,SAIF,6DA1DH,gBACA,cA2DI,oEACC,UAOL,4BACC,SACA,UACA,qBACA,mBACA,YACA,eACA,cACA,gBAEA,qCACC,oBAEA,iDACC,WAEA,kEACC,eACA,cACA,eAGD,8EACC,aAGD,4DACC,UACA,eAGF,wDACC,wBACA,eAEA,kEAvGH,gBACA,cAwGI,WAMJ,qBA/GA,gBACA,cAiHC,WCrHF,iBACE,kBACA,sBACA,eACA,2BACA,yBACA,uBAGF,mBACE,gBACA,cACA,eACA,kBACA,mBAGF,gBACE,kBACA,kBACA,gBACA,UACA,SACA,OACA,MACA,SACA,QACA,sBACA,uBACA,UAGF,kBACE,6BACA,8BACA,uBACA,kBACA,MACA,OACA,SACA,QACA,UACA,SACA,iCAGF,2BACE,kBACA,iCACA,kBACA,cACA,YACA,WACA,mBACA,eACA,gBACA,qBACA,wBAGF,2FAEE,QACA,SAGF,mDAEE,YACA,cAGF,uBACE,gBACA,eACA,WACA,oBAGF,wCACE,8BACA,YACA,WACA,cACA,kBACA,WACA,eACA,gBACA,WACA,UACA,SACA,oBACA,kBACA,cACA,aAGF,gCACE,mBACA,cACA,UACA,kBACA,MACA,OACA,aACA,YACA,eACA,cACA,gBACA,oBACA,WAGF,iBACE,UACA,kBACA,QACA,SACA,oBACA,gBAGF,uDACE,oBACA,iBACA,yBAGF,qDACE,mBAGF,qBACE,kBACA,UACA,UACA,gBAGF,4BACE,kBACA,WACA,gBACA,kBACA,OACA,QACA,UACA,8BAGF,8CAEE,WACA,6BAGF,oCACE,MACA,WAGF,gEACE,QACA,WAGF,sCACE,OACA,YAGF,kEACE,YACA,SACA,UAGF,2DACE,WACA,OACA,QACA,WACA,aACA,eACA,WAIF,mEACE,WACA,OAGF,yBACE,cACA,eACA,UACA,kBACA,aACA,YACA,kBACA,kBAGF,0BACE,eACA,OACA,kBACA,kBACA,qBACA,wBChNF,6LAUC,kBACA,OACA,MAED,mBACC,gBAED,0DAGC,yBACG,sBACK,iBACN,uBAGH,yBACC,uBAGD,8BACC,0CAGD,wCACC,aACA,cACA,6BAED,4CAEC,cAID,2PAMC,0BACA,2BAGD,sCACC,6BACA,yBAED,sCACC,4BAEA,kBACA,wBAED,yDACC,sBACA,kBAED,mBACC,wCAED,qBACC,gDAED,cACC,eACA,kBAED,qBACC,mBAED,kBACC,QACA,SACA,2BACK,sBACL,YAGD,0BACC,sBAGD,0BAEA,+BACA,kCACA,iCACA,iCACA,kCACA,gCAEA,qCACA,kCAEA,mBACC,UACA,WAED,MACC,2BACA,qBACA,kBAMD,iBACC,kBACA,YACA,8BACA,oBAED,6BAEC,kBACA,aACA,oBAED,aACC,MAED,eACC,QAED,gBACC,SAED,cACC,OAED,iBACC,WACA,WAED,gCACC,YAED,8BACC,gBAED,iCACC,mBAED,+BACC,iBAED,gCACC,kBAMD,iCACC,oBAED,kCACC,UACA,sCACG,mCACK,8BAET,oDACC,UAED,uBACC,6BACI,yBACI,qBAET,0CACC,sBAED,0CACC,sEACG,gEACK,sDAET,iEAEC,wBACG,qBACK,gBAGT,sCACC,kBAMD,qBACC,eAED,cACC,oBACA,iBACA,YAED,2DAEC,iBAED,qCAEC,YAED,iIAGC,YACLine truncated
|
||||
Reference in new issue
Block a user