fix: synchro repository with production

This commit is contained in:
mberard committed 2021-10-21 00:07:26 +02:00
1 parent febc76934b
commit 4ea4011a18
74 files changed
+17935 -735

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcfLine truncated
/*# sourceMappingURL=bootstrap.min.css.map */
+7
View File
@@ -0,0 +1,7 @@
/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var o,a,l,h,c,u,f,d,_,g,p,m,v,E,T,y,C,I,A,b,D,S,w,N,O,k,P=function(t){var e=!1;function n(e){var n=this,s=!1;return t(this).one(i.TRANSITION_END,function(){s=!0}),setTimeout(function(){s||i.triggerTransitionEnd(n)},e),this}var i={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n,i=e.getAttribute("data-target");i&&"#"!==i||(i=e.getAttribute("href")||""),"#"===i.charAt(0)&&(n=i,i=n="function"==typeof t.escapeSelector?t.escapeSelector(n).substr(1):n.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1"));try{return t(document).find(i).length>0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).Line truncated
//# sourceMappingURL=bootstrap.min.js.map
+584
View File
@@ -0,0 +1,584 @@
/* =============================================================
* bootstrap3-typeahead.js v4.0.2
* https://github.com/bassjobsen/Bootstrap-3-Typeahead
* =============================================================
* Original written by @mdo and @fat
* =============================================================
* Copyright 2014 Bass Jobsen @bassjobsen
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
(function (root, factory) {
'use strict';
// CommonJS module is defined
if (typeof module !== 'undefined' && module.exports) {
module.exports = factory(require('jquery'));
}
// AMD module is defined
else if (typeof define === 'function' && define.amd) {
define(['jquery'], function ($) {
return factory ($);
});
} else {
factory(root.jQuery);
}
}(this, function ($) {
'use strict';
// jshint laxcomma: true
/* TYPEAHEAD PUBLIC CLASS DEFINITION
* ================================= */
var Typeahead = function (element, options) {
this.$element = $(element);
this.options = $.extend({}, $.fn.typeahead.defaults, options);
this.matcher = this.options.matcher || this.matcher;
this.sorter = this.options.sorter || this.sorter;
this.select = this.options.select || this.select;
this.autoSelect = typeof this.options.autoSelect == 'boolean' ? this.options.autoSelect : true;
this.highlighter = this.options.highlighter || this.highlighter;
this.render = this.options.render || this.render;
this.updater = this.options.updater || this.updater;
this.displayText = this.options.displayText || this.displayText;
this.source = this.options.source;
this.delay = this.options.delay;
this.$menu = $(this.options.menu);
this.$appendTo = this.options.appendTo ? $(this.options.appendTo) : null;
this.fitToElement = typeof this.options.fitToElement == 'boolean' ? this.options.fitToElement : false;
this.shown = false;
this.listen();
this.showHintOnFocus = typeof this.options.showHintOnFocus == 'boolean' || this.options.showHintOnFocus === "all" ? this.options.showHintOnFocus : false;
this.afterSelect = this.options.afterSelect;
this.addItem = false;
this.value = this.$element.val() || this.$element.text();
};
Typeahead.prototype = {
constructor: Typeahead,
select: function () {
var val = this.$menu.find('.active').data('value');
this.$element.data('active', val);
if (this.autoSelect || val) {
var newVal = this.updater(val);
// Updater can be set to any random functions via "options" parameter in constructor above.
// Add null check for cases when updater returns void or undefined.
if (!newVal) {
newVal = '';
}
this.$element
.val(this.displayText(newVal) || newVal)
.text(this.displayText(newVal) || newVal)
.change();
this.afterSelect(newVal);
}
return this.hide();
},
updater: function (item) {
return item;
},
setSource: function (source) {
this.source = source;
},
show: function () {
var pos = $.extend({}, this.$element.position(), {
height: this.$element[0].offsetHeight
});
var scrollHeight = typeof this.options.scrollHeight == 'function' ?
this.options.scrollHeight.call() :
this.options.scrollHeight;
var element;
if (this.shown) {
element = this.$menu;
} else if (this.$appendTo) {
element = this.$menu.appendTo(this.$appendTo);
this.hasSameParent = this.$appendTo.is(this.$element.parent());
} else {
element = this.$menu.insertAfter(this.$element);
this.hasSameParent = true;
}
if (!this.hasSameParent) {
// We cannot rely on the element position, need to position relative to the window
element.css("position", "fixed");
var offset = this.$element.offset();
pos.top = offset.top;
pos.left = offset.left;
}
// The rules for bootstrap are: 'dropup' in the parent and 'dropdown-menu-right' in the element.
// Note that to get right alignment, you'll need to specify `menu` in the options to be:
// '<ul class="typeahead dropdown-menu" role="listbox"></ul>'
var dropup = $(element).parent().hasClass('dropup');
var newTop = dropup ? 'auto' : (pos.top + pos.height + scrollHeight);
var right = $(element).hasClass('dropdown-menu-right');
var newLeft = right ? 'auto' : pos.left;
// it seems like setting the css is a bad idea (just let Bootstrap do it), but I'll keep the old
// logic in place except for the dropup/right-align cases.
element.css({ top: newTop, left: newLeft }).show();
if (this.options.fitToElement === true) {
element.css("width", this.$element.outerWidth() + "px");
}
this.shown = true;
return this;
},
hide: function () {
this.$menu.hide();
this.shown = false;
return this;
},
lookup: function (query) {
var items;
if (typeof(query) != 'undefined' && query !== null) {
this.query = query;
} else {
this.query = this.$element.val() || this.$element.text() || '';
}
if (this.query.length < this.options.minLength && !this.options.showHintOnFocus) {
return this.shown ? this.hide() : this;
}
var worker = $.proxy(function () {
if ($.isFunction(this.source)) {
this.source(this.query, $.proxy(this.process, this));
} else if (this.source) {
this.process(this.source);
}
}, this);
clearTimeout(this.lookupWorker);
this.lookupWorker = setTimeout(worker, this.delay);
},
process: function (items) {
var that = this;
items = $.grep(items, function (item) {
return that.matcher(item);
});
items = this.sorter(items);
if (!items.length && !this.options.addItem) {
return this.shown ? this.hide() : this;
}
if (items.length > 0) {
this.$element.data('active', items[0]);
} else {
this.$element.data('active', null);
}
// Add item
if (this.options.addItem){
items.push(this.options.addItem);
}
if (this.options.items == 'all') {
return this.render(items).show();
} else {
return this.render(items.slice(0, this.options.items)).show();
}
},
matcher: function (item) {
var it = this.displayText(item);
return ~it.toLowerCase().indexOf(this.query.toLowerCase());
},
sorter: function (items) {
var beginswith = [];
var caseSensitive = [];
var caseInsensitive = [];
var item;
while ((item = items.shift())) {
var it = this.displayText(item);
if (!it.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item);
else if (~it.indexOf(this.query)) caseSensitive.push(item);
else caseInsensitive.push(item);
}
return beginswith.concat(caseSensitive, caseInsensitive);
},
highlighter: function (item) {
var html = $('<div></div>');
var query = this.query;
var i = item.toLowerCase().indexOf(query.toLowerCase());
var len = query.length;
var leftPart;
var middlePart;
var rightPart;
var strong;
if (len === 0) {
return html.text(item).html();
}
while (i > -1) {
leftPart = item.substr(0, i);
middlePart = item.substr(i, len);
rightPart = item.substr(i + len);
strong = $('<strong></strong>').text(middlePart);
html
.append(document.createTextNode(leftPart))
.append(strong);
item = rightPart;
i = item.toLowerCase().indexOf(query.toLowerCase());
}
return html.append(document.createTextNode(item)).html();
},
render: function (items) {
var that = this;
var self = this;
var activeFound = false;
var data = [];
var _category = that.options.separator;
$.each(items, function (key,value) {
// inject separator
if (key > 0 && value[_category] !== items[key - 1][_category]){
data.push({
__type: 'divider'
});
}
// inject category header
if (value[_category] && (key === 0 || value[_category] !== items[key - 1][_category])){
data.push({
__type: 'category',
name: value[_category]
});
}
data.push(value);
});
items = $(data).map(function (i, item) {
if ((item.__type || false) == 'category'){
return $(that.options.headerHtml).text(item.name)[0];
}
if ((item.__type || false) == 'divider'){
return $(that.options.headerDivider)[0];
}
var text = self.displayText(item);
i = $(that.options.item).data('value', item);
i.find('a').html(that.highlighter(text, item));
if (text == self.$element.val()) {
i.addClass('active');
self.$element.data('active', item);
activeFound = true;
}
return i[0];
});
if (this.autoSelect && !activeFound) {
items.filter(':not(.dropdown-header)').first().addClass('active');
this.$element.data('active', items.first().data('value'));
}
this.$menu.html(items);
return this;
},
displayText: function (item) {
return typeof item !== 'undefined' && typeof item.name != 'undefined' && item.name || item;
},
next: function (event) {
var active = this.$menu.find('.active').removeClass('active');
var next = active.next();
if (!next.length) {
next = $(this.$menu.find('li')[0]);
}
next.addClass('active');
},
prev: function (event) {
var active = this.$menu.find('.active').removeClass('active');
var prev = active.prev();
if (!prev.length) {
prev = this.$menu.find('li').last();
}
prev.addClass('active');
},
listen: function () {
this.$element
.on('focus', $.proxy(this.focus, this))
.on('blur', $.proxy(this.blur, this))
.on('keypress', $.proxy(this.keypress, this))
.on('input', $.proxy(this.input, this))
.on('keyup', $.proxy(this.keyup, this));
if (this.eventSupported('keydown')) {
this.$element.on('keydown', $.proxy(this.keydown, this));
}
this.$menu
.on('click', $.proxy(this.click, this))
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
.on('mousedown', $.proxy(this.mousedown,this));
},
destroy : function () {
this.$element.data('typeahead',null);
this.$element.data('active',null);
this.$element
.off('focus')
.off('blur')
.off('keypress')
.off('input')
.off('keyup');
if (this.eventSupported('keydown')) {
this.$element.off('keydown');
}
this.$menu.remove();
this.destroyed = true;
},
eventSupported: function (eventName) {
var isSupported = eventName in this.$element;
if (!isSupported) {
this.$element.setAttribute(eventName, 'return;');
isSupported = typeof this.$element[eventName] === 'function';
}
return isSupported;
},
move: function (e) {
if (!this.shown) return;
switch (e.keyCode) {
case 9: // tab
case 13: // enter
case 27: // escape
e.preventDefault();
break;
case 38: // up arrow
// with the shiftKey (this is actually the left parenthesis)
if (e.shiftKey) return;
e.preventDefault();
this.prev();
break;
case 40: // down arrow
// with the shiftKey (this is actually the right parenthesis)
if (e.shiftKey) return;
e.preventDefault();
this.next();
break;
}
},
keydown: function (e) {
this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]);
if (!this.shown && e.keyCode == 40) {
this.lookup();
} else {
this.move(e);
}
},
keypress: function (e) {
if (this.suppressKeyPressRepeat) return;
this.move(e);
},
input: function (e) {
// This is a fixed for IE10/11 that fires the input event when a placehoder is changed
// (https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus)
var currentValue = this.$element.val() || this.$element.text();
if (this.value !== currentValue) {
this.value = currentValue;
this.lookup();
}
},
keyup: function (e) {
if (this.destroyed) {
return;
}
switch (e.keyCode) {
case 40: // down arrow
case 38: // up arrow
case 16: // shift
case 17: // ctrl
case 18: // alt
break;
case 9: // tab
case 13: // enter
if (!this.shown) return;
this.select();
break;
case 27: // escape
if (!this.shown) return;
this.hide();
break;
}
},
focus: function (e) {
if (!this.focused) {
this.focused = true;
if (this.options.showHintOnFocus && this.skipShowHintOnFocus !== true) {
if(this.options.showHintOnFocus === "all") {
this.lookup("");
} else {
this.lookup();
}
}
}
if (this.skipShowHintOnFocus) {
this.skipShowHintOnFocus = false;
}
},
blur: function (e) {
if (!this.mousedover && !this.mouseddown && this.shown) {
this.hide();
this.focused = false;
} else if (this.mouseddown) {
// This is for IE that blurs the input when user clicks on scroll.
// We set the focus back on the input and prevent the lookup to occur again
this.skipShowHintOnFocus = true;
this.$element.focus();
this.mouseddown = false;
}
},
click: function (e) {
e.preventDefault();
this.skipShowHintOnFocus = true;
this.select();
this.$element.focus();
this.hide();
},
mouseenter: function (e) {
this.mousedover = true;
this.$menu.find('.active').removeClass('active');
$(e.currentTarget).addClass('active');
},
mouseleave: function (e) {
this.mousedover = false;
if (!this.focused && this.shown) this.hide();
},
/**
* We track the mousedown for IE. When clicking on the menu scrollbar, IE makes the input blur thus hiding the menu.
*/
mousedown: function (e) {
this.mouseddown = true;
this.$menu.one("mouseup", function(e){
// IE won't fire this, but FF and Chrome will so we reset our flag for them here
this.mouseddown = false;
}.bind(this));
},
};
/* TYPEAHEAD PLUGIN DEFINITION
* =========================== */
var old = $.fn.typeahead;
$.fn.typeahead = function (option) {
var arg = arguments;
if (typeof option == 'string' && option == 'getActive') {
return this.data('active');
}
return this.each(function () {
var $this = $(this);
var data = $this.data('typeahead');
var options = typeof option == 'object' && option;
if (!data) $this.data('typeahead', (data = new Typeahead(this, options)));
if (typeof option == 'string' && data[option]) {
if (arg.length > 1) {
data[option].apply(data, Array.prototype.slice.call(arg, 1));
} else {
data[option]();
}
}
});
};
$.fn.typeahead.defaults = {
source: [],
items: 8,
menu: '<ul class="typeahead dropdown-menu" role="listbox"></ul>',
item: '<li><a class="dropdown-item" href="#" role="option"></a></li>',
minLength: 1,
scrollHeight: 0,
autoSelect: true,
afterSelect: $.noop,
addItem: false,
delay: 0,
separator: 'category',
headerHtml: '<li class="dropdown-header"></li>',
headerDivider: '<li class="divider" role="separator"></li>'
};
$.fn.typeahead.Constructor = Typeahead;
/* TYPEAHEAD NO CONFLICT
* =================== */
$.fn.typeahead.noConflict = function () {
$.fn.typeahead = old;
return this;
};
/* TYPEAHEAD DATA-API
* ================== */
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
var $this = $(this);
if ($this.data('typeahead')) return;
$this.typeahead($this.data());
});
}));
+228
View File
@@ -0,0 +1,228 @@
parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"eMRn":[function(require,module,exports) {
"use strict";function r(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function e(r,e){for(var t=0;t<e.length;t++){var a=e[t];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(r,a.key,a)}}function t(r,t,a){return t&&e(r.prototype,t),a&&e(r,a),r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.MapMatrix=void 0;var a=function(){function e(){r(this,e),this.array=new Float32Array(16)}return t(e,[{key:"setSize",value:function(r,e,t){return this.array.set([2/r,0,0,0,0,-2/e,0,0,0,0,0,0,-1,1,0,1]),this}},{key:"translateMatrix",value:function(r,e){var t=this.array;return t[12]+=t[0]*r+t[4]*e,t[13]+=t[1]*r+t[5]*e,t[14]+=t[2]*r+t[6]*e,t[15]+=t[3]*r+t[7]*e,this}},{key:"scaleMatrix",value:function(r){var e=this.array;return e[0]*=r,e[1]*=r,e[2]*=r,e[3]*=r,e[4]*=r,e[5]*=r,e[6]*=r,e[7]*=r,this}}]),e}();exports.MapMatrix=a;
},{}],"f3z0":[function(require,module,exports) {
var define;
var global = arguments[3];
var t,i=arguments[3];!function(i,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof t&&t.amd?t(["exports"],e):e(i.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++)for(i in o=arguments[e])t[i]=o[i];return t}var e=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}();function n(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}var o=0;function s(t){return t._leaflet_id=t._leaflet_id||++o,t._leaflet_id}function r(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function a(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function h(){return!1}function u(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function l(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function c(t){return l(t).split(/\s+/)}function _(t,i){for(var n in Object.prototype.hasOwnProperty.call(t,"options")||(t.options=t.options?e(t.options):{}),i)t.options[n]=i[n];return t.options}function d(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}var p=/\{ *([\w_-]+) *\}/g;function m(t,i){return t.replace(p,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}var f=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function g(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}var v="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function y(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var x=0;function w(t){var i=+new Date,e=Math.max(0,16-(i-x));return x=i+e,window.setTimeout(t,e)}var P=window.requestAnimationFrame||y("RequestAnimationFrame")||w,b=window.cancelAnimationFrame||y("CancelAnimationFrame")||y("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function T(t,i,e){if(!e||P!==w)return P.call(window,n(t,i));t.call(i)}function M(t){t&&b.call(window,t)}var z={extend:i,create:e,bind:n,lastId:o,stamp:s,throttle:r,wrapNum:a,falseFn:h,formatNum:u,trim:l,splitWords:c,setOptions:_,getParamString:d,template:m,isArray:f,indexOf:g,emptyImageUrl:v,requestFn:P,cancelFn:b,requestAnimFrame:T,cancelAnimFrame:M};function C(){}C.extend=function(t){var n=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},o=n.__super__=this.prototype,s=e(o);for(var r in s.constructor=n,n.prototype=s,this)Object.prototype.hasOwnProperty.call(this,r)&&"prototype"!==r&&"__super__"!==r&&(n[r]=this[r]);return t.statics&&(i(n,t.statics),delete t.statics),t.includes&&(!function(t){if("undefined"==typeof L||!L||!L.Mixin)return;t=f(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}(t.includes),i.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=i(e(s.options),t.options)),i(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){o.callInitHooks&&o.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=s._initHooks.length;t<i;t++)s._initHooks[t].call(this)}},n},C.include=function(t){return i(this.prototype,t),this},C.mergeOptions=function(t){return i(this.prototype.options,t),this},C.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var S={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=c(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=c(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===e&&r.fn===i)return r.fn=h,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=h;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||Line truncated
},{}],"OTlA":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CanvasOverlay=void 0;var t=require("leaflet");function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function r(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function s(t){return function(){var e,n=h(t);if(l()){var o=h(this).constructor;e=Reflect.construct(n,arguments,o)}else e=n.apply(this,arguments);return u(this,e)}}function u(t,n){return!n||"object"!==e(n)&&"function"!=typeof n?c(t):n}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var f=function(e){a(i,t.Layer);var o=s(i);function i(t,e){var r;return n(this,i),(r=o.call(this))._userDrawFunc=t,r._frame=null,r._redrawCallbacks=[],r._pane=e,r}return r(i,[{key:"drawing",value:function(t){return this._userDrawFunc=t,this}},{key:"params",value:function(e){return t.Util.setOptions(this,e),this}},{key:"redraw",value:function(e){return"function"==typeof e&&this._redrawCallbacks.push(e),null===this._frame&&(this._frame=t.Util.requestAnimFrame(this._redraw,this)),this}},{key:"onAdd",value:function(e){this._map=e,this.canvas=this.canvas||document.createElement("canvas");var n=e.getSize(),o=e.options.zoomAnimation&&t.Browser.any3d;return this.canvas.width=n.x,this.canvas.height=n.y,this.canvas.className="leaflet-zoom-"+(o?"animated":"hide"),e._panes[this._pane].appendChild(this.canvas),e.on("moveend",this._reset,this),e.on("resize",this._resize,this),o&&e.on("zoomanim",t.Layer?this._animateZoom:this._animateZoomNoLayer,this),this._reset(),this}},{key:"onRemove",value:function(e){return e.getPanes()[this._pane].removeChild(this.canvas),e.off("moveend",this._reset,this),e.off("resize",this._resize,this),e.options.zoomAnimation&&t.Browser.any3d&&e.off("zoomanim",t.Layer?this._animateZoom:this._animateZoomNoLayer,this),this}},{key:"addTo",value:function(t){return t.addLayer(this),this}},{key:"_resize",value:function(t){this.canvas.width=t.newSize.x,this.canvas.height=t.newSize.y}},{key:"_reset",value:function(){var e=this._map.containerPointToLayerPoint([0,0]);t.DomUtil.setPosition(this.canvas,e),this._redraw()}},{key:"_redraw",value:function(){var e=this._map,n=this.canvas,o=e.getSize(),r=e.getBounds(),a=180*o.x/(20037508.34*(r.getEast()-r.getWest())),i=e.getZoom(),s=new t.LatLng(r.getNorth(),r.getWest()),u=this._unclampedProject(s,0);for(this._userDrawFunc&&this._userDrawFunc({bounds:r,canvas:n,offset:u,scale:Math.pow(2,i),size:o,zoomScale:a,zoom:i});this._redrawCallbacks.length>0;)this._redrawCallbacks.shift()(this);this._frame=null}},{key:"_animateZoom",value:function(e){var n=this._map,o=n.getZoomScale(e.zoom,n.getZoom()),r=this._unclampedLatLngBoundsToNewLayerBounds(n.getBounds(),e.zoom,e.center).min;t.DomUtil.setTransform(this.canvas,r,o)}},{key:"_animateZoomNoLayer",value:function(e){var n=this._map,o=n.getZoomScale(e.zoom,n.getZoom()),r=n._getCenterOffset(e.center)._multiplyBy(-o).subtract(n._getMapPanePos());t.DomUtil.setTransform(this.canvas,r,o)}},{key:"_unclampedProject",value:function(e,n){var o=this._map.options.crs,r=o.projection.R,a=Math.PI/180,i=e.lat,s=Math.sin(i*a),u=new t.Point(r*e.lng*a,r*Math.log((1+s)/(1-s))/2),c=o.scale(n);return o.transformation._transform(u,c)}},{key:"_unclampedLatLngBoundsToNewLayerBounds",value:function(e,n,o){var r=this._map._getNewPixelOrigin(o,n);return new t.Bounds([this._unclampedProject(e.getSouthWest(),n).subtract(r),this._unclampedProject(e.getNorthWest(),n).subtract(r),this._unclampedProject(e.getSouthEast(),n).subtract(r),this._unclampedProject(e.getNorthEast(),n).subtract(r)])}}]),i}();exports.CanvasOverlay=f;
},{"leaflet":"f3z0"}],"pR9a":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Base=void 0;var e=require("./map-matrix"),t=require("./canvas-overlay");function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function i(e,t,r){return t&&a(e.prototype,t),r&&a(e,r),e}var s=function(){function a(i){var s=this;r(this,a),this.buffers={},this.attributeLocations={},this.uniformLocations={},i.pane||(i.pane="overlayPane"),this.mapMatrix=new e.MapMatrix,this.active=!0,this.vertexShader=null,this.fragmentShader=null,this.program=null,this.matrix=null,this.vertices=null,this.vertexLines=null;var n=Boolean(i.preserveDrawingBuffer),o=this.layer=new t.CanvasOverlay(function(e){return s.drawOnCanvas(e)},i.pane).addTo(i.map),h=this.canvas=o.canvas;h.width=h.clientWidth,h.height=h.clientHeight,h.style.position="absolute",i.className&&(h.className+=" "+i.className),this.gl=h.getContext("webgl2",{preserveDrawingBuffer:n})||h.getContext("webgl",{preserveDrawingBuffer:n})||h.getContext("experimental-webgl",{preserveDrawingBuffer:n})}return i(a,[{key:"attachShaderVariables",value:function(e){if(0===this.getShaderVariableCount())return this;var t=this.gl,r=this.settings.shaderVariables,a=0;for(var i in r)if(r.hasOwnProperty(i)){var s=r[i],n=this.getAttributeLocation(i);if(n<0)throw new Error("shader variable "+i+" not found");t.vertexAttribPointer(n,s.size,t[s.type],!!s.normalize,this.bytes*e,a*e),a+=s.size,t.enableVertexAttribArray(n)}return this}},{key:"getShaderVariableCount",value:function(){return Object.keys(this.settings.shaderVariables).length}},{key:"setData",value:function(e){return this.settings.data=e,this}},{key:"setup",value:function(){var e=this.settings;return e.click&&e.setupClick(e.map),e.hover&&e.setupHover(e.map,e.hoverWait),this.setupVertexShader().setupFragmentShader().setupProgram()}},{key:"setupVertexShader",value:function(){var e=this.gl,t=this.settings,r="function"==typeof t.vertexShaderSource?t.vertexShaderSource():t.vertexShaderSource,a=e.createShader(e.VERTEX_SHADER);return e.shaderSource(a,r),e.compileShader(a),this.vertexShader=a,this}},{key:"setupFragmentShader",value:function(){var e=this.gl,t=this.settings,r="function"==typeof t.fragmentShaderSource?t.fragmentShaderSource():t.fragmentShaderSource,a=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(a,r),e.compileShader(a),this.fragmentShader=a,this}},{key:"setupProgram",value:function(){var e=this.gl,t=e.createProgram();return e.attachShader(t,this.vertexShader),e.attachShader(t,this.fragmentShader),e.linkProgram(t),e.useProgram(t),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),e.enable(e.BLEND),this.program=t,this}},{key:"addTo",value:function(e){return this.layer.addTo(e||this.settings.map),this.active=!0,this.render()}},{key:"remove",value:function(e){if(void 0===e)this.settings.map.removeLayer(this.layer),this.active=!1;else{var t=this.settings.data.features||this.settings.data;"number"==typeof(e=e instanceof Array?e:[e])&&(e=[e]),e.sort().reverse(),e.forEach(function(e){t.splice(e,1)}),this.render()}return this}},{key:"update",value:function(e,t){return(this.settings.data.features||this.settings.data)[t]=e,this.render(),this}},{key:"getBuffer",value:function(e){return this.buffers[e]||(this.buffers[e]=this.gl.createBuffer()),this.buffers[e]}},{key:"getAttributeLocation",value:function(e){return void 0!==this.attributeLocations[e]?this.attributeLocations[e]:this.attributeLocations[e]=this.gl.getAttribLocation(this.program,e)}},{key:"getUniformLocation",value:function(e){return void 0!==this.uniformLocations[e]?this.uniformLocations[e]:this.uniformLocations[e]=this.gl.getUniformLocation(this.program,e)}}]),a}();exports.Base=s;
},{"./map-matrix":"eMRn","./canvas-overlay":"OTlA"}],"lpyx":[function(require,module,exports) {
"use strict";function r(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function e(r,e){for(var n=0;n<e.length;n++){var t=e[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(r,t.key,t)}}function n(r,n,t){return n&&e(r.prototype,n),t&&e(r,t),r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Color=void 0;var t={r:0,g:1,b:0,a:1},a={r:1,g:0,b:0,a:1},o={r:0,g:0,b:1,a:1},u={r:0,g:1,b:1,a:1},l={r:1,g:1,b:0,a:1},c={r:1,g:1,b:1,a:1},s={r:0,g:0,b:0,a:1},i={r:.5,g:.5,b:.5,a:1},b=function(){function e(){r(this,e)}return n(e,null,[{key:"fromHex",value:function(r){return r.length<6?null:("#"===(r=r.toLowerCase())[0]&&(r=r.substring(1,r.length)),{r:parseInt(r[0]+r[1],16)/255,g:parseInt(r[2]+r[3],16)/255,b:parseInt(r[4]+r[5],16)/255,a:1})}},{key:"random",value:function(){return{r:Math.random(),g:Math.random(),b:Math.random(),a:Math.random()}}},{key:"pallet",value:function(){switch(Math.round(4*Math.random())){case 0:return t;case 1:return a;case 2:return o;case 3:return u;case 4:return l}}},{key:"grey",get:function(){return i}}]),e}();exports.Color=b;
},{}],"GtdH":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LineFeatureVertices=void 0;var e=require("leaflet");function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}var i=function(){function r(e){t(this,r),this.settings=e,this.vertexCount=0,this.array=[],this.length=0}return n(r,[{key:"fillFromCoordinates",value:function(t){for(var r=this.settings,n=r.color,i=r.opacity,a=r.project,o=r.latitudeKey,s=r.longitudeKey,u=0;u<t.length;u++)if(Array.isArray(t[u][0]))this.fillFromCoordinates(t[u]);else{var l=a(new e.LatLng(t[u][o],t[u][s]),0);this.push(l.x,l.y,n.r,n.g,n.b,n.a||i),0!==u&&u!==t.length-1&&(this.vertexCount+=1),this.vertexCount+=1}}},{key:"push",value:function(){var e;(e=this.array).push.apply(e,arguments),this.length=this.array.length}}]),r}();exports.LineFeatureVertices=i;
},{"leaflet":"f3z0"}],"UnXq":[function(require,module,exports) {
"use strict";function t(t,n){var o={};for(var e in n)n.hasOwnProperty(e)&&(o[e]=t.hasOwnProperty(e)?t[e]:n[e]);return o}function n(t,n){var o=Math.PI/180,e=4*Math.PI,r=Math.sin(t*o);return{x:(n+180)/360*256,y:256*(.5-Math.log((1+r)/(1-r))/e)}}function o(t,n,o){return(t.x-n.x)*(t.x-n.x)+(t.y-n.y)*(t.y-n.y)<=o*o}function e(t,n,o,e,r,a){var i,u,s=r-o,l=a-e,p=s*s+l*l,c=-1;0!==p&&(c=((t-o)*s+(n-e)*l)/p),c<0?(i=o,u=e):c>1?(i=r,u=a):(i=o+c*s,u=e+c*l);var x=t-i,h=n-u;return Math.sqrt(x*x+h*h)}function r(t,n){return Math.sqrt(t*t+n*n)}function a(t,n,o){var e=o.latLngToLayerPoint(t),a=o.latLngToLayerPoint(n);return r(e.x-a.x,e.y-a.y)}function i(t){var n=document.createElement("div"),o=n.style,e=t.x,r=t.y;o.left=e+"px",o.top=r+"px",o.width="10px",o.height="10px",o.position="absolute",o.backgroundColor="#"+(16777215*Math.random()<<0).toString(16),document.body.appendChild(n)}function u(t,n,o){var e;return function(){var r=this,a=arguments,i=o&&!e;clearTimeout(e),e=setTimeout(function(){e=null,o||t.apply(r,a)},n),i&&t.apply(r,a)}}function s(t,n){return n._northEast.lat>t.lat&&t.lat>n._southWest.lat&&n._northEast.lng>t.lng&&t.lng>n._southWest.lng}Object.defineProperty(exports,"__esModule",{value:!0}),exports.defaults=t,exports.latLonToPixel=n,exports.pointInCircle=o,exports.pDistance=e,exports.vectorDistance=r,exports.locationDistance=a,exports.debugPoint=i,exports.debounce=u,exports.inBounds=s;
},{}],"ogHp":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Lines=void 0;var t=require("./base"),e=require("./color"),r=require("leaflet"),i=require("./line-feature-vertices"),n=require("./utils");function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e,r){return e&&s(t.prototype,e),r&&s(t,r),t}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){return function(){var e,r=v(t);if(p()){var i=v(this).constructor;e=Reflect.construct(r,arguments,i)}else e=r.apply(this,arguments);return h(this,e)}}function h(t,e){return!e||"object"!==o(e)&&"function"!=typeof e?y(t):e}function y(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var g={map:null,data:[],longitudeKey:null,latitudeKey:null,setupClick:null,setupHover:null,vertexShaderSource:null,fragmentShaderSource:null,click:null,hover:null,color:e.Color.random,className:"",opacity:.5,weight:2,sensitivity:.1,sensitivityHover:.03,shaderVariables:{color:{type:"FLOAT",start:2,size:4}}},d=function(e){l(s,t.Base);var o=f(s);function s(t){var e;if(a(this,s),(e=o.call(this,t)).bytes=6,s.instances.push(y(e)),e.settings=Object.assign(Object.assign({},s.defaults),t),!t.data)throw new Error('no "data" array setting defined');if(!t.map)throw new Error('no leaflet "map" object setting defined');return e.active=!0,e.allVertices=[],e.setup().render(),e}return c(s,[{key:"render",value:function(){this.resetVertices();var t=this.canvas,e=this.gl,r=this.layer,i=this.vertices,n=this.settings,o=this.mapMatrix,a=this.getBuffer("vertex"),s=this.getAttributeLocation("vertex"),c=this.getUniformLocation("opacity");e.uniform1f(c,n.opacity),e.bindBuffer(e.ARRAY_BUFFER,a);for(var l=i.length,u=[],f=0;f<l;f++)for(var h=i[f].array,y=h.length/this.bytes,p=0;p<y;p++){var v=p*this.bytes;0!==p&&p!==y-1&&u.push(h[v],h[v+1],h[v+2],h[v+3],h[v+4],h[v+5]),u.push(h[v],h[v+1],h[v+2],h[v+3],h[v+4],h[v+5])}this.allVertices=u;var g=new Float32Array(u);return l=g.BYTES_PER_ELEMENT,e.bufferData(e.ARRAY_BUFFER,g,e.STATIC_DRAW),e.vertexAttribPointer(s,2,e.FLOAT,!1,l*this.bytes,0),e.enableVertexAttribArray(s),this.matrix=this.getUniformLocation("matrix"),this.aPointSize=this.getAttributeLocation("pointSize"),o.setSize(t.width,t.height),e.viewport(0,0,t.width,t.height),e.uniformMatrix4fv(this.matrix,!1,o.array),this.attachShaderVariables(l),r.redraw(),this}},{key:"resetVertices",value:function(){this.allVertices=[],this.vertices=[];var t,e,r,n=this.vertices,o=this.settings,a=o.data.features,s=o.map,c=o.latitudeKey,l=o.longitudeKey,u=a.length,f=o.color,h=o.opacity,y=0;if(!f)throw new Error("color is not properly defined");for("function"==typeof f&&(e=f);y<u;y++){t=a[y],r=e?e(y,t):f;var p=new i.LineFeatureVertices({project:s.project.bind(s),latitudeKey:c,longitudeKey:l,color:r,opacity:h});p.fillFromCoordinates(t.geometry.coordinates),n.push(p)}return this}},{key:"drawOnCanvas",value:function(t){if(!this.gl)return this;var e=this.gl,r=this.settings,i=this.canvas,n=this.mapMatrix,o=this.matrix,a=this.allVertices,s=this.vertices,c=r.weight,l=t.scale,u=t.offset,f=t.zoom,h=Math.max(f-4,4);if(e.clear(e.COLOR_BUFFER_BIT),e.viewport(0,0,i.width,i.height),e.viewport(0,0,i.width,i.height),e.vertexAttrib1f(this.aPointSize,h),n.setSize(i.width,i.height).scaleMatrix(l),f>18)n.translateMatrix(-u.x,-u.y),e.uniformMatrix4fv(o,!1,n.array),e.drawArrays(e.LINES,0,a.length/this.bytes);else if("number"==typeof c)for(var y=-c;y<c;y+=.5)for(var p=-c;p<c;p+=.5)n.translateMatrix(-u.x+p/l,-u.y+y/l),e.uniformMatrix4fv(o,!1,n.array),e.drawArrays(e.LINES,0,a.length/this.bytes);else if("function"==typeof c)for(var v=0,g=r.data.features,d=0;d<s.length;d++){for(var m=s[d].vertexCount,b=c(d,g[d]),w=-b;w<b;w+=.5)for(var x=-b;x<b;x+=.5)n.translateMatrix(-u.x+x/l,-u.y+w/l),e.uniformMatrix4fv(this.matrix,!1,n.array),e.drawArrays(e.LINES,v,m);v+=m}return this}}],[{key:"tryClick",value:function(tLine truncated
},{"./base":"pR9a","./color":"lpyx","leaflet":"f3z0","./line-feature-vertices":"GtdH","./utils":"UnXq"}],"IieH":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Points=void 0;var t=require("./base"),e=require("./color"),r=require("leaflet"),n=require("./utils");function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function s(t,e,r){return e&&a(t.prototype,e),r&&a(t,r),t}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function c(t){return function(){var e,r=y(t);if(p()){var n=y(this).constructor;e=Reflect.construct(r,arguments,n)}else e=r.apply(this,arguments);return f(this,e)}}function f(t,e){return!e||"object"!==o(e)&&"function"!=typeof e?h(t):e}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function y(t){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var g={map:null,data:[],longitudeKey:null,latitudeKey:null,setupClick:null,setupHover:null,vertexShaderSource:null,fragmentShaderSource:null,eachVertex:null,click:null,hover:null,color:e.Color.random,opacity:.8,size:null,className:"",sensitivity:2,sensitivityHover:.03,shaderVariables:{vertex:{type:"FLOAT",start:0,size:2},color:{type:"FLOAT",start:2,size:4},pointSize:{type:"FLOAT",start:6,size:1}}},d=function(e){l(a,t.Base);var o=c(a);function a(t){var e;if(i(this,a),(e=o.call(this,t)).bytes=7,a.instances.push(h(e)),e.settings=Object.assign(Object.assign({},a.defaults),t),!t.data)throw new Error('no "data" array setting defined');if(!t.map)throw new Error('no leaflet "map" object setting defined');e.active=!0;var n=e.settings.data;if(Array.isArray(n))e.dataFormat="Array";else{if("FeatureCollection"!==n.type)throw new Error("unhandled data type. Supported types are Array and GeoJson.FeatureCollection");e.dataFormat="GeoJson.FeatureCollection"}return e.settings.map.options.crs.projection.project!==r.Projection.SphericalMercator.project&&console.warn("layer designed for SphericalMercator, alternate detected"),e.setup().render(),e}return s(a,[{key:"render",value:function(){this.resetVertices();var t=this.gl,e=this.canvas,r=this.layer,n=this.vertices,o=this.mapMatrix,i=this.matrix=this.getUniformLocation("matrix"),a=this.getBuffer("vertices"),s=this.typedVertices=new Float32Array(n),l=s.BYTES_PER_ELEMENT;return o.setSize(e.width,e.height),t.viewport(0,0,e.width,e.height),t.uniformMatrix4fv(i,!1,o.array),t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,s,t.STATIC_DRAW),this.attachShaderVariables(l),r.redraw(),this}},{key:"getPointLookup",value:function(t){return this.latLngLookup[t]||(this.latLngLookup[t]=[])}},{key:"addLookup",value:function(t){return this.getPointLookup(t.key).push(t),this.allLatLngLookup.push(t),this}},{key:"resetVertices",value:function(){this.latLngLookup={},this.allLatLngLookup=[],this.vertices=[];var t,e,n,o,i,a,s,l=this.vertices,u=this.settings,c=u.latitudeKey,f=u.longitudeKey,h=u.data,p=u.map,y=u.eachVertex,g=u.color,d=u.size,v=u.opacity;if(!g)throw new Error("color is not properly defined");if("function"==typeof g&&(t=g),!d)throw new Error("size is not properly defined");if("function"==typeof d&&(o=d),"Array"===this.dataFormat)for(var L=h.length,m=0;m<L;m++)s=(i=h[m])[c].toFixed(2)+"x"+i[f].toFixed(2),a=p.project(new r.LatLng(i[c],i[f]),0),e=t?t(m,i):g,e=Object.assign(Object.assign({},e),{a:e.a||v}),n=o?o(m,i):d,l.push(a.x,a.y,e.r,e.g,e.b,e.a,n),this.addLookup({latLng:i,key:s,pixel:a,chosenColor:e,chosenSize:n}),y&&y.call(this,i,a,n);else if("GeoJson.FeatureCollection"===this.dataFormat)for(var b=h.features.length,k=0;k<b;k++){var w=h.features[k];s=(i=w.geometry.coordinates)[c].toFixed(2)+"x"+i[f].toFixed(2),a=p.project(new r.LatLng(i[c],i[f]),0),e=t?t(k,w):g,e=Object.assign(Object.assign({},e),{a:e.a||v}),n=o?o(k,i):d,l.push(a.x,a.y,e.r,e.g,e.b,e.a,n),this.addLookup({latLng:i,key:s,pixel:a,chosenColor:e,chosenSize:n,feature:w}),y&&y.call(this,i,a,n)}return this}},{key:"pointSize",value:function(t){var e=this.settings,r=e.map,n=e.size,o="function"==typeof n?n(t,null):n,i=r.getZoom();return null===o?Math.max(i-4,1):o}},{key:"drawOnCanvLine truncated
},{"./base":"pR9a","./color":"lpyx","leaflet":"f3z0","./utils":"UnXq"}],"vwhv":[function(require,module,exports) {
"use strict";function e(e,t,x){x=x||2;var i,u,v,y,o,p,l,a=t&&t.length,h=a?t[0]*x:e.length,s=n(e,0,h,x,!0),c=[];if(!s||s.next===s.prev)return c;if(a&&(s=f(e,t,s,x)),e.length>80*x){i=v=e[0],u=y=e[1];for(var Z=x;Z<h;Z+=x)(o=e[Z])<i&&(i=o),(p=e[Z+1])<u&&(u=p),o>v&&(v=o),p>y&&(y=p);l=0!==(l=Math.max(v-i,y-u))?1/l:0}return r(s,c,x,i,u,l),c}function n(e,n,t,r,x){var i,u;if(x===A(e,n,t,r)>0)for(i=n;i<t;i+=r)u=k(i,e[i],e[i+1],u);else for(i=t-r;i>=n;i-=r)u=k(i,e[i],e[i+1],u);return u&&g(u,u.next)&&(j(u),u=u.next),u}function t(e,n){if(!e)return e;n||(n=e);var t,r=e;do{if(t=!1,r.steiner||!g(r,r.next)&&0!==d(r.prev,r,r.next))r=r.next;else{if(j(r),(r=n=r.prev)===r.next)break;t=!0}}while(t||r!==n);return n}function r(e,n,f,y,o,p,a){if(e){!a&&p&&l(e,y,o,p);for(var h,s,c=e;e.prev!==e.next;)if(h=e.prev,s=e.next,p?i(e,y,o,p):x(e))n.push(h.i/f),n.push(e.i/f),n.push(s.i/f),j(e),e=s.next,c=s.next;else if((e=s)===c){a?1===a?r(e=u(e,n,f),n,f,y,o,p,2):2===a&&v(e,n,f,y,o,p):r(t(e),n,f,y,o,p,1);break}}}function x(e){var n=e.prev,t=e,r=e.next;if(d(n,t,r)>=0)return!1;for(var x=e.next.next;x!==e.prev;){if(c(n.x,n.y,t.x,t.y,r.x,r.y,x.x,x.y)&&d(x.prev,x,x.next)>=0)return!1;x=x.next}return!0}function i(e,n,t,r){var x=e.prev,i=e,u=e.next;if(d(x,i,u)>=0)return!1;for(var v=x.x<i.x?x.x<u.x?x.x:u.x:i.x<u.x?i.x:u.x,f=x.y<i.y?x.y<u.y?x.y:u.y:i.y<u.y?i.y:u.y,y=x.x>i.x?x.x>u.x?x.x:u.x:i.x>u.x?i.x:u.x,o=x.y>i.y?x.y>u.y?x.y:u.y:i.y>u.y?i.y:u.y,p=h(v,f,n,t,r),l=h(y,o,n,t,r),a=e.prevZ,s=e.nextZ;a&&a.z>=p&&s&&s.z<=l;){if(a!==e.prev&&a!==e.next&&c(x.x,x.y,i.x,i.y,u.x,u.y,a.x,a.y)&&d(a.prev,a,a.next)>=0)return!1;if(a=a.prevZ,s!==e.prev&&s!==e.next&&c(x.x,x.y,i.x,i.y,u.x,u.y,s.x,s.y)&&d(s.prev,s,s.next)>=0)return!1;s=s.nextZ}for(;a&&a.z>=p;){if(a!==e.prev&&a!==e.next&&c(x.x,x.y,i.x,i.y,u.x,u.y,a.x,a.y)&&d(a.prev,a,a.next)>=0)return!1;a=a.prevZ}for(;s&&s.z<=l;){if(s!==e.prev&&s!==e.next&&c(x.x,x.y,i.x,i.y,u.x,u.y,s.x,s.y)&&d(s.prev,s,s.next)>=0)return!1;s=s.nextZ}return!0}function u(e,n,t){var r=e;do{var x=r.prev,i=r.next.next;!g(x,i)&&w(x,r,r.next,i)&&b(x,i)&&b(i,x)&&(n.push(x.i/t),n.push(r.i/t),n.push(i.i/t),j(r),j(r.next),r=e=i),r=r.next}while(r!==e);return r}function v(e,n,x,i,u,v){var f=e;do{for(var y=f.next.next;y!==f.prev;){if(f.i!==y.i&&Z(f,y)){var o=m(f,y);return f=t(f,f.next),o=t(o,o.next),r(f,n,x,i,u,v),void r(o,n,x,i,u,v)}y=y.next}f=f.next}while(f!==e)}function f(e,r,x,i){var u,v,f,p=[];for(u=0,v=r.length;u<v;u++)(f=n(e,r[u]*i,u<v-1?r[u+1]*i:e.length,i,!1))===f.next&&(f.steiner=!0),p.push(s(f));for(p.sort(y),u=0;u<p.length;u++)o(p[u],x),x=t(x,x.next);return x}function y(e,n){return e.x-n.x}function o(e,n){if(n=p(e,n)){var r=m(n,e);t(r,r.next)}}function p(e,n){var t,r=n,x=e.x,i=e.y,u=-1/0;do{if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){var v=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(v<=x&&v>u){if(u=v,v===x){if(i===r.y)return r;if(i===r.next.y)return r.next}t=r.x<r.next.x?r:r.next}}r=r.next}while(r!==n);if(!t)return null;if(x===u)return t.prev;var f,y=t,o=t.x,p=t.y,l=1/0;for(r=t.next;r!==y;)x>=r.x&&r.x>=o&&x!==r.x&&c(i<p?x:u,i,o,p,i<p?u:x,i,r.x,r.y)&&((f=Math.abs(i-r.y)/(x-r.x))<l||f===l&&r.x>t.x)&&b(r,e)&&(t=r,l=f),r=r.next;return t}function l(e,n,t,r){var x=e;do{null===x.z&&(x.z=h(x.x,x.y,n,t,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==e);x.prevZ.nextZ=null,x.prevZ=null,a(x)}function a(e){var n,t,r,x,i,u,v,f,y=1;do{for(t=e,e=null,i=null,u=0;t;){for(u++,r=t,v=0,n=0;n<y&&(v++,r=r.nextZ);n++);for(f=y;v>0||f>0&&r;)0!==v&&(0===f||!r||t.z<=r.z)?(x=t,t=t.nextZ,v--):(x=r,r=r.nextZ,f--),i?i.nextZ=x:e=x,x.prevZ=i,i=x;t=r}i.nextZ=null,y*=2}while(u>1);return e}function h(e,n,t,r,x){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-t)*x)|e<<8))|e<<4))|e<<2))|e<<1))|(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=32767*(n-r)*x)|n<<8))|n<<4))|n<<2))|n<<1))<<1}function s(e){var n=e,t=e;do{(n.x<t.x||n.x===t.x&&n.y<t.y)&&(t=n),n=n.next}while(n!==e);return t}function c(e,n,t,r,x,i,u,v){return(x-u)*(n-v)-(e-u)*(i-v)>=0&&(e-u)*(r-v)-(t-u)*(n-v)>=0&&(t-u)*(i-v)-(x-u)*(r-v)>=0}function Z(e,n){return e.next.i!==n.i&&e.prev.i!==n.i&&!z(e,n)&&b(e,n)&&b(n,e)&&M(e,n)}function d(e,n,t){return(n.y-e.y)*(t.x-n.x)-(n.x-e.x)*(t.y-n.y)}function g(e,n){return e.x===n.x&&e.y===n.y}function w(e,n,t,r){return!!(g(e,n)&&g(t,r)||g(e,r)&&g(t,n))||d(e,n,t)>0!=d(e,n,r)>0&&d(t,r,e)>0!=d(t,r,n)>0}function z(e,n){var t=e;do{if(t.i!==e.i&&t.next.i!==e.i&&t.i!==n.i&&t.next.i!==n.i&&w(t,t.next,e,n))return!0;t=t.next}while(t!==e);return!1}function b(e,n){return d(e.prev,e,e.next)<0?d(e,n,e.next)>=0&&d(e,e.prev,n)>=0:d(e,n,e.prev)<0||d(e,e.next,n)<0}function M(e,n){var t=e,r=!1,x=(e.x+n.x)/2,i=(e.y+n.y)/2;do{t.y>i!=t.next.y>i&&t.next.y!==t.y&&x<(t.next.x-t.x)*(i-t.y)/(t.next.y-t.y)+t.x&&(r=!r),t=t.next}while(t!==e);return r}function m(e,n){var t=new q(e.i,e.x,e.y),r=new q(n.i,n.x,n.y),x=e.next,i=n.prev;return e.next=n,n.prev=e,t.next=x,x.prev=t,r.next=t,t.prev=r,i.next=r,r.prev=i,r}function k(e,n,t,r){var x=new q(e,n,t);return r?(x.next=r.next,x.prev=r,Line truncated
},{}],"nhDx":[function(require,module,exports) {
"use strict";function e(t){switch(t&&t.type||null){case"FeatureCollection":return t.features=t.features.reduce(function(t,r){return t.concat(e(r))},[]),t;case"Feature":return t.geometry?e(t.geometry).map(function(e){var r={type:"Feature",properties:JSON.parse(JSON.stringify(t.properties)),geometry:e};return void 0!==t.id&&(r.id=t.id),r}):[t];case"MultiPoint":return t.coordinates.map(function(e){return{type:"Point",coordinates:e}});case"MultiPolygon":return t.coordinates.map(function(e){return{type:"Polygon",coordinates:e}});case"MultiLineString":return t.coordinates.map(function(e){return{type:"LineString",coordinates:e}});case"GeometryCollection":return t.geometries.map(e).reduce(function(e,t){return e.concat(t)},[]);case"Point":case"Polygon":case"LineString":return[t]}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e;
},{}],"AuwV":[function(require,module,exports) {
var define;
var global = arguments[3];
var t,o=arguments[3];!function(o,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof t&&t.amd?t(n):o.quickselect=n()}(this,function(){"use strict";function t(t,o,n){var r=t[o];t[o]=t[n],t[n]=r}function o(t,o){return t<o?-1:t>o?1:0}return function(n,r,e,f,u){!function o(n,r,e,f,u){for(;f>e;){if(f-e>600){var a=f-e+1,i=r-e+1,c=Math.log(a),h=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*h*(a-h)/a)*(i-a/2<0?-1:1),l=Math.max(e,Math.floor(r-i*h/a+s)),M=Math.min(f,Math.floor(r+(a-i)*h/a+s));o(n,r,l,M,u)}var m=n[r],p=e,d=f;for(t(n,e,r),u(n[f],m)>0&&t(n,e,f);p<d;){for(t(n,p,d),p++,d--;u(n[p],m)<0;)p++;for(;u(n[d],m)>0;)d--}0===u(n[e],m)?t(n,e,d):t(n,++d,f),d<=r&&(e=d+1),r<=d&&(f=d-1)}}(n,r,e||0,f||n.length-1,u||o)}});
},{}],"O1rd":[function(require,module,exports) {
"use strict";module.exports=i,module.exports.default=i;var t=require("quickselect");function i(t,n){if(!(this instanceof i))return new i(t,n);this._maxEntries=Math.max(4,t||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),n&&this._initFormat(n),this.clear()}function n(t,i,n){if(!n)return i.indexOf(t);for(var a=0;a<i.length;a++)if(n(t,i[a]))return a;return-1}function a(t,i){h(t,0,t.children.length,i,t)}function h(t,i,n,a,h){h||(h=x(null)),h.minX=1/0,h.minY=1/0,h.maxX=-1/0,h.maxY=-1/0;for(var r,o=i;o<n;o++)r=t.children[o],e(h,t.leaf?a(r):r);return h}function e(t,i){return t.minX=Math.min(t.minX,i.minX),t.minY=Math.min(t.minY,i.minY),t.maxX=Math.max(t.maxX,i.maxX),t.maxY=Math.max(t.maxY,i.maxY),t}function r(t,i){return t.minX-i.minX}function o(t,i){return t.minY-i.minY}function s(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function l(t){return t.maxX-t.minX+(t.maxY-t.minY)}function u(t,i){return(Math.max(i.maxX,t.maxX)-Math.min(i.minX,t.minX))*(Math.max(i.maxY,t.maxY)-Math.min(i.minY,t.minY))}function m(t,i){var n=Math.max(t.minX,i.minX),a=Math.max(t.minY,i.minY),h=Math.min(t.maxX,i.maxX),e=Math.min(t.maxY,i.maxY);return Math.max(0,h-n)*Math.max(0,e-a)}function c(t,i){return t.minX<=i.minX&&t.minY<=i.minY&&i.maxX<=t.maxX&&i.maxY<=t.maxY}function f(t,i){return i.minX<=t.maxX&&i.minY<=t.maxY&&i.maxX>=t.minX&&i.maxY>=t.minY}function x(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,a,h,e){for(var r,o=[n,a];o.length;)(a=o.pop())-(n=o.pop())<=h||(r=n+Math.ceil((a-n)/h/2)*h,t(i,r,n,a,e),o.push(n,r,r,a))}i.prototype={all:function(){return this._all(this.data,[])},search:function(t){var i=this.data,n=[],a=this.toBBox;if(!f(t,i))return n;for(var h,e,r,o,s=[];i;){for(h=0,e=i.children.length;h<e;h++)r=i.children[h],f(t,o=i.leaf?a(r):r)&&(i.leaf?n.push(r):c(t,o)?this._all(r,n):s.push(r));i=s.pop()}return n},collides:function(t){var i=this.data,n=this.toBBox;if(!f(t,i))return!1;for(var a,h,e,r,o=[];i;){for(a=0,h=i.children.length;a<h;a++)if(e=i.children[a],f(t,r=i.leaf?n(e):e)){if(i.leaf||c(t,r))return!0;o.push(e)}i=o.pop()}return!1},load:function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var i=0,n=t.length;i<n;i++)this.insert(t[i]);return this}var a=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===a.height)this._splitRoot(this.data,a);else{if(this.data.height<a.height){var h=this.data;this.data=a,a=h}this._insert(a,this.data.height-a.height-1,!0)}else this.data=a;return this},insert:function(t){return t&&this._insert(t,this.data.height-1),this},clear:function(){return this.data=x([]),this},remove:function(t,i){if(!t)return this;for(var a,h,e,r,o=this.data,s=this.toBBox(t),l=[],u=[];o||l.length;){if(o||(o=l.pop(),h=l[l.length-1],a=u.pop(),r=!0),o.leaf&&-1!==(e=n(t,o.children,i)))return o.children.splice(e,1),l.push(o),this._condense(l),this;r||o.leaf||!c(o,s)?h?(a++,o=h.children[a],r=!1):o=null:(l.push(o),u.push(a),a=0,h=o,o=o.children[0])}return this},toBBox:function(t){return t},compareMinX:r,compareMinY:o,toJSON:function(){return this.data},fromJSON:function(t){return this.data=t,this},_all:function(t,i){for(var n=[];t;)t.leaf?i.push.apply(i,t.children):n.push.apply(n,t.children),t=n.pop();return i},_build:function(t,i,n,h){var e,r=n-i+1,o=this._maxEntries;if(r<=o)return a(e=x(t.slice(i,n+1)),this.toBBox),e;h||(h=Math.ceil(Math.log(r)/Math.log(o)),o=Math.ceil(r/Math.pow(o,h-1))),(e=x([])).leaf=!1,e.height=h;var s,l,u,m,c=Math.ceil(r/o),f=c*Math.ceil(Math.sqrt(o));for(d(t,i,n,f,this.compareMinX),s=i;s<=n;s+=f)for(d(t,s,u=Math.min(s+f-1,n),c,this.compareMinY),l=s;l<=u;l+=c)m=Math.min(l+c-1,u),e.children.push(this._build(t,l,m,h-1));return a(e,this.toBBox),e},_chooseSubtree:function(t,i,n,a){for(var h,e,r,o,l,m,c,f;a.push(i),!i.leaf&&a.length-1!==n;){for(c=f=1/0,h=0,e=i.children.length;h<e;h++)l=s(r=i.children[h]),(m=u(t,r)-l)<f?(f=m,c=l<c?l:c,o=r):m===f&&l<c&&(c=l,o=r);i=o||i.children[0]}return i},_insert:function(t,i,n){var a=this.toBBox,h=n?t:a(t),r=[],o=this._chooseSubtree(h,this.data,i,r);for(o.children.push(t),e(o,h);i>=0&&r[i].children.length>this._maxEntries;)this._split(r,i),i--;this._adjustParentBBoxes(h,r,i)},_split:function(t,i){var n=t[i],h=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,h);var r=this._chooseSplitIndex(n,e,h),o=x(n.children.splice(r,n.children.length-r));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},_splitRoot:function(t,i){this.data=x([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},_chooseSplitIndex:function(t,i,n){var a,e,r,o,l,u,c,f;for(u=c=1/0,a=i;a<=n-i;a++)o=m(e=h(t,0,a,this.toBBox),r=h(t,a,n,this.toBBox)),l=s(e)+s(r),o<u?(u=o,f=a,c=l<c?l:c):o===u&&l<c&&(c=l,f=a);return f},_chooseSplitAxis:function(t,i,n){var a=t.leaf?this.compareMinX:r,h=t.leaf?this.compareMinY:o;this._allDistMargin(t,i,n,a)<this._allDistMargin(t,i,n,h)&&t.children.sort(a)},_allDistMargin:fLine truncated
},{"quickselect":"AuwV"}],"UTeA":[function(require,module,exports) {
module.exports=function(r,e){for(var n=r[0],t=r[1],o=!1,l=0,u=e.length-1;l<e.length;u=l++){var a=e[l][0],f=e[l][1],g=e[u][0],h=e[u][1];f>t!=h>t&&n<(g-a)*(t-f)/(h-f)+a&&(o=!o)}return o};
},{}],"cxFR":[function(require,module,exports) {
"use strict";function m(m){for(var n=m[0],a={minX:n[0],minY:n[1],maxX:n[0],maxY:n[1]},i=1;i<m.length;i++){var r=m[i],x=r[0];x<a.minX?a.minX=x:x>a.maxX&&(a.maxX=x);var t=r[1];t<a.minY?a.minY=t:t>a.maxY&&(a.maxY=t)}return a}module.exports={getBoundingBox:m};
},{}],"yh9p":[function(require,module,exports) {
"use strict";exports.byteLength=u,exports.toByteArray=i,exports.fromByteArray=d;for(var r=[],t=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o<a;++o)r[o]=n[o],t[n.charCodeAt(o)]=o;function h(r){var t=r.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function u(r){var t=h(r),e=t[0],n=t[1];return 3*(e+n)/4-n}function c(r,t,e){return 3*(t+e)/4-e}function i(r){for(var n,o=h(r),a=o[0],u=o[1],i=new e(c(r,a,u)),f=0,A=u>0?a-4:a,d=0;d<A;d+=4)n=t[r.charCodeAt(d)]<<18|t[r.charCodeAt(d+1)]<<12|t[r.charCodeAt(d+2)]<<6|t[r.charCodeAt(d+3)],i[f++]=n>>16&255,i[f++]=n>>8&255,i[f++]=255&n;return 2===u&&(n=t[r.charCodeAt(d)]<<2|t[r.charCodeAt(d+1)]>>4,i[f++]=255&n),1===u&&(n=t[r.charCodeAt(d)]<<10|t[r.charCodeAt(d+1)]<<4|t[r.charCodeAt(d+2)]>>2,i[f++]=n>>8&255,i[f++]=255&n),i}function f(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function A(r,t,e){for(var n,o=[],a=t;a<e;a+=3)n=(r[a]<<16&16711680)+(r[a+1]<<8&65280)+(255&r[a+2]),o.push(f(n));return o.join("")}function d(t){for(var e,n=t.length,o=n%3,a=[],h=0,u=n-o;h<u;h+=16383)a.push(A(t,h,h+16383>u?u:h+16383));return 1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63;
},{}],"JgNJ":[function(require,module,exports) {
exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),(o+=p+N>=1?n/f:n*Math.pow(2,1-N))*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};
},{}],"REa7":[function(require,module,exports) {
var r={}.toString;module.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)};
},{}],"peL6":[function(require,module,exports) {
var global = arguments[3];
var t=arguments[3],r=require("base64-js"),e=require("ieee754"),n=require("isarray");function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}function o(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(o()<r)throw new RangeError("Invalid typed array length");return f.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(r)).__proto__=f.prototype:(null===t&&(t=new f(r)),t.length=r),t}function f(t,r,e){if(!(f.TYPED_ARRAY_SUPPORT||this instanceof f))return new f(t,r,e);if("number"==typeof t){if("string"==typeof r)throw new Error("If encoding is specified then the first argument must be a string");return c(this,t)}return s(this,t,r,e)}function s(t,r,e,n){if("number"==typeof r)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&r instanceof ArrayBuffer?g(t,r,e,n):"string"==typeof r?l(t,r,e):y(t,r)}function h(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function a(t,r,e,n){return h(r),r<=0?u(t,r):void 0!==e?"string"==typeof n?u(t,r).fill(e,n):u(t,r).fill(e):u(t,r)}function c(t,r){if(h(r),t=u(t,r<0?0:0|w(r)),!f.TYPED_ARRAY_SUPPORT)for(var e=0;e<r;++e)t[e]=0;return t}function l(t,r,e){if("string"==typeof e&&""!==e||(e="utf8"),!f.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var n=0|v(r,e),i=(t=u(t,n)).write(r,e);return i!==n&&(t=t.slice(0,i)),t}function p(t,r){var e=r.length<0?0:0|w(r.length);t=u(t,e);for(var n=0;n<e;n+=1)t[n]=255&r[n];return t}function g(t,r,e,n){if(r.byteLength,e<0||r.byteLength<e)throw new RangeError("'offset' is out of bounds");if(r.byteLength<e+(n||0))throw new RangeError("'length' is out of bounds");return r=void 0===e&&void 0===n?new Uint8Array(r):void 0===n?new Uint8Array(r,e):new Uint8Array(r,e,n),f.TYPED_ARRAY_SUPPORT?(t=r).__proto__=f.prototype:t=p(t,r),t}function y(t,r){if(f.isBuffer(r)){var e=0|w(r.length);return 0===(t=u(t,e)).length?t:(r.copy(t,0,0,e),t)}if(r){if("undefined"!=typeof ArrayBuffer&&r.buffer instanceof ArrayBuffer||"length"in r)return"number"!=typeof r.length||W(r.length)?u(t,0):p(t,r);if("Buffer"===r.type&&n(r.data))return p(t,r.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function w(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function d(t){return+t!=t&&(t=0),f.alloc(+t)}function v(t,r){if(f.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return $(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return K(t).length;default:if(n)return $(t).length;r=(""+r).toLowerCase(),n=!0}}function E(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,r,e);case"utf8":case"utf-8":return Y(this,r,e);case"ascii":return L(this,r,e);case"latin1":case"binary":return D(this,r,e);case"base64":return S(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function R(t,r,e,n,i){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return-1;e=t.length-1}else if(e<0){if(!i)return-1;e=0}if("string"==typeof r&&(r=f.from(r,n)),f.isBuffer(r))return 0===r.length?-1:_(t,r,e,n,i);if("number"==typeof r)return r&=255,f.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):_(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,r,e,n,i){var o,u=1,f=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,f/=2,s/=2,e/=2}function h(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(i){var a=-1;for(o=e;o<f;o++)if(h(t,o)===h(r,-1===a?0:o-a)){if(-1===a&&(a=o),o-a+1===s)return a*u}else-1!==a&&(o-=o-a),a=-1}else for(e+s>f&&(e=f-s),o=e;o>=0;o--){for(var c=!0,l=0;l<s;l++)if(h(t,o+l)!==h(r,l)){c=!1;break}if(c)return o}return-1}function A(t,r,e,n){e=Number(e)||0;var i=t.length-e;n?(n=Number(n))>i&&(n=i):n=iLine truncated
},{"base64-js":"yh9p","ieee754":"JgNJ","isarray":"REa7","buffer":"peL6"}],"B1iE":[function(require,module,exports) {
var global = arguments[3];
var Buffer = require("buffer").Buffer;
var define;
var n,t=arguments[3],r=require("buffer").Buffer;(function(){var r,e=200,u="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",i="Expected a function",o="__lodash_hash_undefined__",f=500,a="__lodash_placeholder__",c=1,l=2,s=4,h=1,p=2,v=1,_=2,g=4,y=8,d=16,b=32,w=64,m=128,x=256,j=512,A=30,k="...",O=800,I=16,R=1,E=2,z=1/0,S=9007199254740991,L=1.7976931348623157e308,W=NaN,C=4294967295,B=C-1,U=C>>>1,T=[["ary",m],["bind",v],["bindKey",_],["curry",y],["curryRight",d],["flip",j],["partial",b],["partialRight",w],["rearg",x]],$="[object Arguments]",D="[object Array]",M="[object AsyncFunction]",F="[object Boolean]",N="[object Date]",P="[object DOMException]",q="[object Error]",Z="[object Function]",K="[object GeneratorFunction]",V="[object Map]",G="[object Number]",H="[object Null]",J="[object Object]",Y="[object Proxy]",Q="[object RegExp]",X="[object Set]",nn="[object String]",tn="[object Symbol]",rn="[object Undefined]",en="[object WeakMap]",un="[object WeakSet]",on="[object ArrayBuffer]",fn="[object DataView]",an="[object Float32Array]",cn="[object Float64Array]",ln="[object Int8Array]",sn="[object Int16Array]",hn="[object Int32Array]",pn="[object Uint8Array]",vn="[object Uint8ClampedArray]",_n="[object Uint16Array]",gn="[object Uint32Array]",yn=/\b__p \+= '';/g,dn=/\b(__p \+=) '' \+/g,bn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wn=/&(?:amp|lt|gt|quot|#39);/g,mn=/[&<>"']/g,xn=RegExp(wn.source),jn=RegExp(mn.source),An=/<%-([\s\S]+?)%>/g,kn=/<%([\s\S]+?)%>/g,On=/<%=([\s\S]+?)%>/g,In=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rn=/^\w*$/,En=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zn=/[\\^$.*+?()[\]{}|]/g,Sn=RegExp(zn.source),Ln=/^\s+|\s+$/g,Wn=/^\s+/,Cn=/\s+$/,Bn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Un=/\{\n\/\* \[wrapped with (.+)\] \*/,Tn=/,? & /,$n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Dn=/\\(\\)?/g,Mn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Fn=/\w*$/,Nn=/^[-+]0x[0-9a-f]+$/i,Pn=/^0b[01]+$/i,qn=/^\[object .+?Constructor\]$/,Zn=/^0o[0-7]+$/i,Kn=/^(?:0|[1-9]\d*)$/,Vn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Gn=/($^)/,Hn=/['\n\r\u2028\u2029\\]/g,Jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Yn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Qn="[\\ud800-\\udfff]",Xn="["+Yn+"]",nt="["+Jn+"]",tt="\\d+",rt="[\\u2700-\\u27bf]",et="[a-z\\xdf-\\xf6\\xf8-\\xff]",ut="[^\\ud800-\\udfff"+Yn+tt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",it="\\ud83c[\\udffb-\\udfff]",ot="[^\\ud800-\\udfff]",ft="(?:\\ud83c[\\udde6-\\uddff]){2}",at="[\\ud800-\\udbff][\\udc00-\\udfff]",ct="[A-Z\\xc0-\\xd6\\xd8-\\xde]",lt="(?:"+et+"|"+ut+")",st="(?:"+ct+"|"+ut+")",ht="(?:"+nt+"|"+it+")"+"?",pt="[\\ufe0e\\ufe0f]?"+ht+("(?:\\u200d(?:"+[ot,ft,at].join("|")+")[\\ufe0e\\ufe0f]?"+ht+")*"),vt="(?:"+[rt,ft,at].join("|")+")"+pt,_t="(?:"+[ot+nt+"?",nt,ft,at,Qn].join("|")+")",gt=RegExp("['’]","g"),yt=RegExp(nt,"g"),dt=RegExp(it+"(?="+it+")|"+_t+pt,"g"),bt=RegExp([ct+"?"+et+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Xn,ct,"$"].join("|")+")",st+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Xn,ct+lt,"$"].join("|")+")",ct+"?"+lt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ct+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",tt,vt].join("|"),"g"),wt=RegExp("[\\u200d\\ud800-\\udfff"+Jn+"\\ufe0e\\ufe0f]"),mt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],jt=-1,At={};At[an]=At[cn]=At[ln]=At[sn]=At[hn]=At[pn]=At[vn]=At[_n]=At[gn]=!0,At[$]=At[D]=At[on]=At[F]=At[fn]=At[N]=At[q]=At[Z]=At[V]=At[G]=At[J]=At[Q]=At[X]=At[nn]=At[en]=!1;var kt={};kt[$]=kt[D]=kt[on]=kt[fn]=kt[F]=kt[N]=kt[an]=kt[cn]=kt[ln]=kt[sn]=kt[hn]=kt[V]=kt[G]=kt[J]=kt[Q]=kt[X]=kt[nn]=kt[tn]=kt[pn]=kt[vn]=kt[_n]=kt[gn]=!0,kt[q]=kt[Z]=kt[en]=!1;var Ot={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},It=parseFloat,Rt=parseInt,Et="object"==typeof t&&t&&t.Object===Object&&t,zt="object"==typeof self&&self&&self.Object===Object&&self,St=Et||zt||Function("return this")(),Lt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wt=Lt&&"object"==typeof module&&module&&!module.nodeType&&module,Ct=Wt&&Wt.exports===Lt,Bt=Ct&&Et.process,Ut=function(){try{var n=Wt&&Wt.require&&Wt.require("util").types;return n||Bt&&Bt.binding&&Bt.binding("util")}catch(t){}}(),Tt=Ut&&Ut.isArrayBuffer,$t=Ut&&Ut.isDate,Dt=Ut&&Ut.isMap,Mt=Ut&&Ut.isRegExp,Ft=Ut&&Ut.isSet,Nt=Ut&&Ut.isTypedArray;function PtLine truncated
},{"buffer":"peL6"}],"PG4O":[function(require,module,exports) {
"use strict";var e=require("rbush"),o=require("point-in-polygon"),r=require("./lib/polygon_utils"),t=require("lodash");function n(e){void 0!==e&&this.loadFeatureCollection(e)}function i(e,r){var t=r.geometry.coordinates[0];if(o(e,t)){for(var n=1;n<r.geometry.coordinates.length;n++)if(o(e,r.geometry.coordinates[n]))return!1;return!0}return!1}n.prototype.searchForOnePolygon=function(e,o){var r=this.rtree.search({minX:e,minY:o,maxX:e,maxY:o}),n=[e,o],s=r.map(function(e,o){return this.polygons[r[o].polyId]},this);return t.find(s,function(e){return i(n,e)})},n.prototype.searchForMultiplePolygons=function(e,o,r){-1===r&&(r=Number.MAX_SAFE_INTEGER);var t=[e,o],n=this.rtree.search({minX:e,minY:o,maxX:e,maxY:o}),s=n.map(function(e,o){return this.polygons[n[o].polyId]},this),a=0;return{type:"FeatureCollection",features:s=s.filter(function(e){return!(a>=r)&&(!!i(t,e)&&(a++,!0))})}},n.prototype.search=function(e,o,r){return void 0===r?this.searchForOnePolygon(e,o):this.searchForMultiplePolygons(e,o,r)},n.prototype.loadFeatureCollection=function(o){var t=[],n=[],i=0;function s(e){n.push(e);var o=r.getBoundingBox(e.geometry.coordinates[0]);o.polyId=i++,t.push(o)}o.features.forEach(function(e){if(e.geometry&&void 0!==e.geometry.coordinates[0]&&e.geometry.coordinates[0].length>0)switch(e.geometry.type){case"Polygon":s(e);break;case"MultiPolygon":for(var o=e.geometry.coordinates,r=0;r<o.length;r++)s({type:"Feature",properties:e.properties,geometry:{type:"Polygon",coordinates:o[r]}})}}),this.rtree=(new e).load(t),this.polygons=n},module.exports=n;
},{"rbush":"O1rd","point-in-polygon":"UTeA","./lib/polygon_utils":"cxFR","lodash":"B1iE"}],"j8I8":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Shapes=exports.defaults=void 0;var e=s(require("earcut")),t=s(require("geojson-flatten")),r=s(require("polygon-lookup")),n=require("./base"),i=require("./color"),o=require("leaflet"),a=require("./utils");function s(e){return e&&e.__esModule?e:{default:e}}function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function f(e,t,r){return t&&c(e.prototype,t),r&&c(e,r),e}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){return function(){var t,r=g(e);if(b()){var n=g(this).constructor;t=Reflect.construct(r,arguments,n)}else t=r.apply(this,arguments);return d(this,t)}}function d(e,t){return!t||"object"!==l(t)&&"function"!=typeof t?v(e):t}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function g(e){return(g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var A={map:null,data:[],longitudeKey:null,latitudeKey:null,setupClick:null,setupHover:null,vertexShaderSource:null,fragmentShaderSource:null,click:null,hover:null,color:i.Color.random,className:"",opacity:.5,shaderVariables:{color:{type:"FLOAT",start:2,size:4}},border:!1};exports.defaults=A;var R=function(i){h(l,n.Base);var s=y(l);function l(e){var t;if(u(this,l),(t=s.call(this,e)).bytes=6,l.instances.push(v(t)),t.settings=Object.assign(Object.assign({},l.defaults),e),!e.data)throw new Error('no "data" array setting defined');if(!e.map)throw new Error('no leaflet "map" object setting defined');return t.polygonLookup=null,t.setup().render(),t}return f(l,[{key:"render",value:function(){this.resetVertices();var e=this.canvas,t=this.gl,r=this.layer,n=this.vertices,i=this.mapMatrix,o=this.getBuffer("vertex"),a=new Float32Array(n),s=a.BYTES_PER_ELEMENT,l=this.getAttributeLocation("vertex");return t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,a,t.STATIC_DRAW),t.vertexAttribPointer(l,2,t.FLOAT,!1,s*this.bytes,0),t.enableVertexAttribArray(l),this.matrix=this.getUniformLocation("matrix"),t.viewport(0,0,e.width,e.height),i.setSize(e.width,e.height),t.uniformMatrix4fv(this.matrix,!1,i.array),this.attachShaderVariables(s),r.redraw(),this}},{key:"resetVertices",value:function(){this.vertices=[],this.vertexLines=[],this.polygonLookup=new r.default;var n,i,s,l,u,c,f,h,p,y,d,v,b=this.vertices,g=this.vertexLines,A=this.polygonLookup,R=this.settings,w=R.data,x=R.color,E=R.opacity,m=0;switch(w.type){case"Feature":A.loadFeatureCollection({type:"FeatureCollection",features:[w]}),s=(0,t.default)(w);break;case"MultiPolygon":A.loadFeatureCollection({type:"FeatureCollection",features:[{type:"Feature",properties:{id:"bar"},geometry:{coordinates:w.coordinates}}]}),s=(0,t.default)(w);break;default:A.loadFeatureCollection(w),s=w.features}if(h=s.length,!x)throw new Error("color is not properly defined");for("function"==typeof x&&(u=x);m<h;m++){l=s[m],p=[],c=u?u(m,l):x,f=(l.geometry||l).coordinates,d=e.default.flatten(f),y=(0,e.default)(d.vertices,d.holes,d.dimensions),v=f[0][0].length;for(var F=0,_=y.length;F<_;F++){if(i=y[F],"number"!=typeof d.vertices[0])throw new Error("unhandled polygon");p.push(d.vertices[i*v+R.longitudeKey],d.vertices[i*v+R.latitudeKey])}for(var S=0,T=p.length;S<T;S)n=R.map.project(new o.LatLng(p[S++],p[S++]),0),b.push(n.x,n.y,c.r,c.g,c.b,c.a||E);if(R.border){for(var L=[],B=1,O=d.vertices.length;B<O;B+=2)L.push(d.vertices[B],d.vertices[B-1]),L.push(d.vertices[B+2],d.vertices[B+1]);for(var k=0,P=L.length;k<P;k)n=(0,a.latLonToPixel)(L[k++],L[k++]),g.push(n.x,n.y,c.r,c.g,c.b,c.a||E)}}return this}},{key:"drawOnCanvas",value:function(e){if(!this.gl)return this;var t=e.scale,r=e.offset,n=e.canvas,i=this.mapMatrix,o=this.gl,a=this.vertices,s=this.settings,l=this.vertexLines;if(i.setSize(n.width,n.height).scaleMatrix(t).translateMatrix(-r.x,-r.y),o.clear(o.COLOR_BUFFER_BIT),o.viewport(0,0,n.width,n.height),o.uniformMatrix4fv(this.matrix,!1,i.array),s.border){var u=this.getBuffer("vertexLines"),c=new Float32Array(l),Line truncated
},{"earcut":"vwhv","geojson-flatten":"nhDx","polygon-lookup":"PG4O","./base":"pR9a","./color":"lpyx","leaflet":"f3z0","./utils":"UnXq"}],"LmkB":[function(require,module,exports) {
module.exports = `uniform mat4 matrix;
attribute vec4 vertex;
attribute vec4 color;
attribute float pointSize;
varying vec4 _color;
void main() {
//set the size of the point
gl_PointSize = pointSize;
//multiply each vertex by a matrix.
gl_Position = matrix * vertex;
//pass the color to the fragment shader
_color = color;
}
`
},{}],"hNM2":[function(require,module,exports) {
module.exports = `precision mediump float;
uniform vec4 color;
void main() {
float border = 0.05;
float radius = 0.5;
vec2 center = vec2(0.5);
vec4 color0 = vec4(0.0);
vec4 color1 = vec4(color[0], color[1], color[2], color[3]);
vec2 m = gl_PointCoord.xy - center;
float dist = radius - sqrt(m.x * m.x + m.y * m.y);
float t = 0.0;
if (dist > border) {
t = 1.0;
} else if (dist > 0.0) {
t = dist / border;
}
//works for overlapping circles if blending is enabled
gl_FragColor = mix(color0, color1, t);
}
`
},{}],"XGkG":[function(require,module,exports) {
module.exports = `precision mediump float;
varying vec4 _color;
void main() {
float border = 0.1;
float radius = 0.5;
vec2 center = vec2(0.5, 0.5);
vec4 pointColor = vec4(
_color[0],
_color[1],
_color[2],
_color[3]
);
vec2 m = gl_PointCoord.xy - center;
float dist1 = radius - sqrt(m.x * m.x + m.y * m.y);
float t1 = 0.0;
if (dist1 > border) {
t1 = 1.0;
} else if (dist1 > 0.0) {
t1 = dist1 / border;
}
//works for overlapping circles if blending is enabled
//gl_FragColor = mix(color0, color1, t);
//border
float outerBorder = 0.05;
float innerBorder = 0.8;
vec4 borderColor = vec4(0, 0, 0, 0.4);
vec2 uv = gl_PointCoord.xy;
vec4 clearColor = vec4(0, 0, 0, 0);
// Offset uv with the center of the circle.
uv -= center;
float dist2 = sqrt(dot(uv, uv));
float t2 = 1.0 + smoothstep(radius, radius + outerBorder, dist2)
- smoothstep(radius - innerBorder, radius, dist2);
gl_FragColor = mix(mix(borderColor, clearColor, t2), pointColor, t1);
}
`
},{}],"AY9x":[function(require,module,exports) {
module.exports = `precision mediump float;
varying vec4 _color;
void main() {
vec2 center = vec2(0.5);
vec2 uv = gl_PointCoord.xy - center;
float smoothing = 0.005;
vec4 _color1 = vec4(_color[0], _color[1], _color[2], _color[3]);
float radius1 = 0.3;
vec4 _color2 = vec4(_color[0], _color[1], _color[2], _color[3]);
float radius2 = 0.5;
float dist = length(uv);
//SMOOTH
float gamma = 2.2;
color1.rgb = pow(_color1.rgb, vec3(gamma));
color2.rgb = pow(_color2.rgb, vec3(gamma));
vec4 puck = mix(
mix(
_color1,
_color2,
smoothstep(
radius1 - smoothing,
radius1 + smoothing,
dist
)
),
vec4(0,0,0,0),
smoothstep(
radius2 - smoothing,
radius2 + smoothing,
dist
)
);
//Gamma correction (prevents color fringes)
puck.rgb = pow(puck.rgb, vec3(1.0 / gamma));
gl_FragColor = puck;
}
`
},{}],"R6F0":[function(require,module,exports) {
module.exports = `precision mediump float;
varying vec4 _color;
void main() {
vec4 color1 = vec4(_color[0], _color[1], _color[2], _color[3]);
//simple circles
float d = distance (gl_PointCoord, vec2(0.5, 0.5));
if (d < 0.5 ){
gl_FragColor = color1;
} else {
discard;
}
}
`
},{}],"sqgp":[function(require,module,exports) {
module.exports = `precision mediump float;
varying vec4 _color;
void main() {
//squares
gl_FragColor = vec4(_color[0], _color[1], _color[2], _color[3]);
}
`
},{}],"JKQp":[function(require,module,exports) {
module.exports = `precision mediump float;
varying vec4 _color;
void main() {
gl_FragColor = vec4(
_color[0],
_color[1],
_color[2],
_color[3]
);
}
`
},{}],"QCba":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.glify=void 0;var e=require("./lines"),t=require("./points"),r=require("./shapes"),n=require("./utils"),i=c(require("./shader/vertex/default.glsl")),s=c(require("./shader/fragment/dot.glsl")),u=c(require("./shader/fragment/point.glsl")),o=c(require("./shader/fragment/puck.glsl")),a=c(require("./shader/fragment/simple-circle.glsl")),l=c(require("./shader/fragment/square.glsl")),d=c(require("./shader/fragment/polygon.glsl"));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){return v(e)||y(e)||p(e)||h()}function h(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){if(e){if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(e,t):void 0}}function y(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function v(e){if(Array.isArray(e))return g(e)}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function b(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function S(e,t,r){return t&&b(e.prototype,t),r&&b(e,r),e}var k={vertex:i.default,fragment:{dot:s.default,point:u.default,puck:o.default,simpleCircle:a.default,square:l.default,polygon:d.default}},w=function(){function i(){m(this,i),this.longitudeKey=1,this.latitudeKey=0,this.maps=[],this.shader=k,this.Points=t.Points,this.Shapes=r.Shapes,this.Lines=e.Lines}return S(i,[{key:"longitudeFirst",value:function(){return this.longitudeKey=0,this.latitudeKey=1,this}},{key:"latitudeFirst",value:function(){return this.latitudeKey=0,this.longitudeKey=1,this}},{key:"points",value:function(e){var t=this;return new this.Points(Object.assign({setupClick:K.setupClick.bind(this),setupHover:this.setupHover.bind(this),latitudeKey:K.latitudeKey,longitudeKey:K.longitudeKey,vertexShaderSource:function(){return t.shader.vertex},fragmentShaderSource:function(){return t.shader.fragment.point}},e))}},{key:"shapes",value:function(e){var t=this;return new this.Shapes(Object.assign({setupClick:this.setupClick.bind(this),setupHover:this.setupHover.bind(this),latitudeKey:this.latitudeKey,longitudeKey:this.longitudeKey,vertexShaderSource:function(){return t.shader.vertex},fragmentShaderSource:function(){return t.shader.fragment.polygon}},e))}},{key:"lines",value:function(e){var t=this;return new this.Lines(Object.assign({setupClick:this.setupClick.bind(this),setupHover:this.setupHover.bind(this),latitudeKey:this.latitudeKey,longitudeKey:this.longitudeKey,vertexShaderSource:function(){return t.shader.vertex},fragmentShaderSource:function(){return t.shader.fragment.polygon}},e))}},{key:"setupClick",value:function(n){this.maps.indexOf(n)<0&&(this.maps.push(n),n.on("click",function(i){var s;return void 0!==(s=t.Points.tryClick(i,n))?s:void 0!==(s=e.Lines.tryClick(i,n))?s:void 0!==(s=r.Shapes.tryClick(i,n))?s:void 0}))}},{key:"setupHover",value:function(i,s,u){this.maps.push(i),i.on("mousemove",(0,n.debounce)(function(n){var s;return void 0!==(s=t.Points.tryHover(n,i))?s:void 0!==(s=e.Lines.tryHover(n,i))?s:void 0!==(s=r.Shapes.tryHover(n,i))?s:void 0},s,u))}},{key:"instances",get:function(){return[].concat(f(t.Points.instances),f(e.Lines.instances),f(r.Shapes.instances))}}]),i}(),K=new w;exports.glify=K;var x=K;exports.default=x,"undefined"!=typeof window&&window.L&&(window.L.glify=K,window.L.Glify=w);
},{"./lines":"ogHp","./points":"IieH","./shapes":"j8I8","./utils":"UnXq","./shader/vertex/default.glsl":"LmkB","./shader/fragment/dot.glsl":"hNM2","./shader/fragment/point.glsl":"XGkG","./shader/fragment/puck.glsl":"AY9x","./shader/fragment/simple-circle.glsl":"R6F0","./shader/fragment/square.glsl":"sqgp","./shader/fragment/polygon.glsl":"JKQp"}]},{},["QCba"], null)
//# sourceMappingURL=/glify-browser.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"sources":["map-matrix.ts","../src/map/index.js","../src/core/Util.js","../src/core/Class.js","../src/core/Events.js","../src/geometry/Point.js","../src/geometry/Bounds.js","../src/geo/LatLngBounds.js","../src/geo/LatLng.js","../src/geo/crs/CRS.js","../src/geo/projection/Projection.SphericalMercator.js","../src/geo/crs/CRS.Earth.js","../src/geometry/Transformation.js","../src/geo/crs/CRS.EPSG3857.js","../src/layer/vector/SVG.Util.js","../src/core/Browser.js","../src/dom/DomEvent.Pointer.js","../src/dom/DomEvent.DoubleTap.js","../src/dom/DomUtil.js","../src/dom/DomEvent.js","../src/dom/PosAnimation.js","../src/map/Map.js","../src/control/Control.js","../src/control/Control.Layers.js","../src/control/Control.Zoom.js","../src/control/Control.Scale.js","../src/control/Control.Attribution.js","../src/control/index.js","../src/core/Handler.js","../src/core/index.js","../src/geometry/LineUtil.js","../src/dom/Draggable.js","../src/geometry/PolyUtil.js","../src/geo/projection/Projection.LonLat.js","../src/geo/projection/Projection.Mercator.js","../src/geo/crs/CRS.EPSG3395.js","../src/geo/crs/CRS.EPSG4326.js","../src/geo/crs/CRS.Simple.js","../src/geo/crs/index.js","../src/layer/Layer.js","../src/layer/LayerGroup.js","../src/layer/FeatureGroup.js","../src/layer/marker/Icon.js","../src/layer/marker/Icon.Default.js","../src/layer/marker/Marker.Drag.js","../src/layer/marker/Marker.js","../src/layer/vector/Path.js","../src/layer/vector/CircleMarker.js","../src/layer/vector/Circle.js","../src/layer/vector/Polyline.js","../src/layer/vector/Polygon.js","../src/layer/GeoJSON.js","../src/layer/ImageOverlay.js","../src/layer/VideoOverlay.js","../src/layer/SVGOverlay.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/DivIcon.js","../src/layer/marker/index.js","../src/layer/tile/GridLayer.js","../src/layer/tile/TileLayer.js","../src/layer/tile/TileLayer.WMS.js","../src/layer/tile/index.js","../src/layer/vector/Renderer.js","../src/layer/vector/Canvas.js","../src/layer/vector/SVG.VML.js","../src/layer/vector/SVG.js","../src/layer/vector/Renderer.getRenderer.js","../src/layer/vector/Rectangle.js","../src/layer/vector/index.js","../src/layer/index.js","../src/map/handler/Map.BoxZoom.js","../src/map/handler/Map.DoubleClickZoom.js","../src/map/handler/Map.Drag.js","../src/map/handler/Map.Keyboard.js","../src/map/handler/Map.ScrollWheelZoom.js","../src/map/handler/Map.Tap.js","../src/map/handler/Map.TouchZoom.js","canvas-overlay.ts","base.ts","color.ts","line-feature-vertices.ts","utils.ts","lines.ts","points.ts","../node_modules/earcut/src/earcut.js","../index.js","../node_modules/quickselect/quickselect.js","../node_modules/rbush/index.js","../node_modules/point-in-polygon/index.js","../node_modules/polygon-lookup/lib/polygon_utils.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/node-libs-browser/node_modules/buffer/index.js","../node_modules/lodash/lodash.js","../node_modules/polygon-lookup/index.js","shapes.ts","index.ts"],"names":["Util.create","Util.extend","Util.isArray","Util.splitWords","Util.falseFn","Util.bind","Util.stamp","Util.formatNum","Util.wrapNum","Browser.svg","style","Browser.msPointer","DomEvent.preventDefault","Browser.pointer","create","Util.trim","Browser.ie3d","Browser.any3d","DomEvent.on","DomEvent.off","Browser.edge","Browser.safari","Browser.touch","touch","Browser.passiveEvents","Browser.win","Browser.chrome","Browser.gecko","DomUtil.getPosition","Util.requestAnimFrame","DomUtil.setPosition","Util.cancelAnimFrame","Util.setOptions","DomUtil.TRANSITION","Browser.mobileOpera","DomUtil.TRANSITION_END","DomUtil.addClass","DomUtil.remove","DomUtil.create","DomEvent.getMousePosition","DomUtil.get","Browser.retina","Browser.ielt9","DomUtil.getStyle","remove","DomEvent.isExternalTarget","DomEvent.skipped","DomUtil.preventOutline","Util.indexOf","DomUtil.removeClass","DomUtil.TRANSFORM","DomUtil.setTransform","DomEvent.disableClickPropagation","DomEvent.disableScrollPropagation","Browser.android","DomEvent.stop","DomUtil.empty","preventOutline","DomUtil.hasClass","DomUtil.disableImageDrag","DomUtil.disableTextSelection","DomUtil.getSizedParentNode","DomUtil.getScale","DomUtil.enableImageDrag","DomUtil.enableTextSelection","LineUtil._getBitCode","LineUtil._getEdgeIntersection","point","latLng","DomUtil.setOpacity","LineUtil._sqClosestPointOnSegment","LineUtil.isFlat","LineUtil.clipSegment","LineUtil.simplify","LineUtil.pointToSegmentDistance","LineUtil._flat","PolyUtil.clipPolygon","DomUtil.toFront","DomUtil.toBack","DomEvent.stopPropagation","Browser.mobile","Util.throttle","latLngBounds","Browser.android23","Util.template","Util.emptyImageUrl","Browser.androidStock","DomEvent.fakeStop","canvas","Browser.canvas","Browser.vml","svg","DomEvent.getWheelDelta","gj","flatten","type","features","reduce","mem","feature","concat","geometry","map","geom","data","properties","JSOLine truncated
+2
View File
@@ -0,0 +1,2 @@
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^Line truncated
+1
View File
@@ -0,0 +1 @@
L.Control.Fullscreen=L.Control.extend({options:{position:"topleft",title:{"false":"View Fullscreen","true":"Exit Fullscreen"}},onAdd:function(map){var container=L.DomUtil.create("div","leaflet-control-fullscreen leaflet-bar leaflet-control");this.link=L.DomUtil.create("a","leaflet-control-fullscreen-button leaflet-bar-part",container);this.link.href="#";this._map=map;this._map.on("fullscreenchange",this._toggleTitle,this);this._toggleTitle();L.DomEvent.on(this.link,"click",this._click,this);return container},_click:function(e){L.DomEvent.stopPropagation(e);L.DomEvent.preventDefault(e);this._map.toggleFullscreen(this.options)},_toggleTitle:function(){this.link.title=this.options.title[this._map.isFullscreen()]}});L.Map.include({isFullscreen:function(){return this._isFullscreen||false},toggleFullscreen:function(options){var container=this.getContainer();if(this.isFullscreen()){if(options&&options.pseudoFullscreen){this._disablePseudoFullscreen(container)}else if(document.exitFullscreen){document.exitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else{this._disablePseudoFullscreen(container)}}else{if(options&&options.pseudoFullscreen){this._enablePseudoFullscreen(container)}else if(container.requestFullscreen){container.requestFullscreen()}else if(container.mozRequestFullScreen){container.mozRequestFullScreen()}else if(container.webkitRequestFullscreen){container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else if(container.msRequestFullscreen){container.msRequestFullscreen()}else{this._enablePseudoFullscreen(container)}}},_enablePseudoFullscreen:function(container){L.DomUtil.addClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(true);this.invalidateSize();this.fire("fullscreenchange")},_disablePseudoFullscreen:function(container){L.DomUtil.removeClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(false);this.invalidateSize();this.fire("fullscreenchange")},_setFullscreen:function(fullscreen){this._isFullscreen=fullscreen;var container=this.getContainer();if(fullscreen){L.DomUtil.addClass(container,"leaflet-fullscreen-on")}else{L.DomUtil.removeClass(container,"leaflet-fullscreen-on")}},_onFullscreenChange:function(e){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(fullscreenElement===this.getContainer()&&!this._isFullscreen){this._setFullscreen(true);this.fire("fullscreenchange")}else if(fullscreenElement!==this.getContainer()&&this._isFullscreen){this._setFullscreen(false);this.fire("fullscreenchange")}}});L.Map.mergeOptions({fullscreenControl:false});L.Map.addInitHook(function(){if(this.options.fullscreenControl){this.fullscreenControl=new L.Control.Fullscreen(this.options.fullscreenControl);this.addControl(this.fullscreenControl)}var fullscreenchange;if("onfullscreenchange"in document){fullscreenchange="fullscreenchange"}else if("onmozfullscreenchange"in document){fullscreenchange="mozfullscreenchange"}else if("onwebkitfullscreenchange"in document){fullscreenchange="webkitfullscreenchange"}else if("onmsfullscreenchange"in document){fullscreenchange="MSFullscreenChange"}if(fullscreenchange){var onFullscreenChange=L.bind(this._onFullscreenChange,this);this.whenReady(function(){L.DomEvent.on(document,fullscreenchange,onFullscreenChange)});this.on("unload",function(){L.DomEvent.off(document,fullscreenchange,onFullscreenChange)})}});L.control.fullscreen=function(options){return new L.Control.Fullscreen(options)};
Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

+40
View File
@@ -0,0 +1,40 @@
.leaflet-control-fullscreen a {
background:#fff url(fullscreen.png) no-repeat 0 0;
background-size:26px 52px;
}
.leaflet-touch .leaflet-control-fullscreen a {
background-position: 2px 2px;
}
.leaflet-fullscreen-on .leaflet-control-fullscreen a {
background-position:0 -26px;
}
.leaflet-touch.leaflet-fullscreen-on .leaflet-control-fullscreen a {
background-position: 2px -24px;
}
/* Do not combine these two rules; IE will break. */
.leaflet-container:-webkit-full-screen {
width:100%!important;
height:100%!important;
}
.leaflet-container.leaflet-fullscreen-on {
width:100%!important;
height:100%!important;
}
.leaflet-pseudo-fullscreen {
position:fixed!important;
width:100%!important;
height:100%!important;
top:0!important;
left:0!important;
z-index:99999;
}
@media
(-webkit-min-device-pixel-ratio:2),
(min-resolution:192dpi) {
.leaflet-control-fullscreen a {
background-image:url(fullscreen@2x.png);
}
}
+2
View File
@@ -0,0 +1,2 @@
.leaflet-control-locate a{font-size:1.4em;color:#444;cursor:pointer}.leaflet-control-locate.active a{color:#2074b6}.leaflet-control-locate.active.following a{color:#fc8428}.leaflet-control-locate-location circle{animation:leaflet-control-locate-throb 4s ease infinite}@keyframes leaflet-control-locate-throb{0%{stroke-width:1}50%{stroke-width:3;transform:scale(0.8, 0.8)}100%{stroke-width:1}}
/*# sourceMappingURL=L.Control.Locate.min.css.map */
+5
View File
@@ -0,0 +1,5 @@
/*! Version: 0.73.0
Copyright (c) 2016 Dominik Moritz */
!function(t,i){"function"==typeof define&&define.amd?define(["leaflet"],t):"object"==typeof exports&&(void 0!==i&&i.L?module.exports=t(L):module.exports=t(require("leaflet"))),void 0!==i&&i.L&&(i.L.Control.Locate=t(L))}(function(r){function o(i,o,t){(t=t.split(" ")).forEach(function(t){r.DomUtil[i].call(this,o,t)})}function i(t,i){o("addClass",t,i)}function s(t,i){o("removeClass",t,i)}var t=r.Marker.extend({initialize:function(t,i){r.Util.setOptions(this,i),this._latlng=t,this.createIcon()},createIcon:function(){var t=this.options,i="";void 0!==t.color&&(i+="stroke:"+t.color+";"),void 0!==t.weight&&(i+="stroke-width:"+t.weight+";"),void 0!==t.fillColor&&(i+="fill:"+t.fillColor+";"),void 0!==t.fillOpacity&&(i+="fill-opacity:"+t.fillOpacity+";"),void 0!==t.opacity&&(i+="opacity:"+t.opacity+";");var o=this._getIconSVG(t,i);this._locationIcon=r.divIcon({className:o.className,html:o.svg,iconSize:[o.w,o.h]}),this.setIcon(this._locationIcon)},_getIconSVG:function(t,i){var o=t.radius,s=o+t.weight,e=2*s;return{className:"leaflet-control-locate-location",svg:'<svg xmlns="http://www.w3.org/2000/svg" width="'+e+'" height="'+e+'" version="1.1" viewBox="-'+s+" -"+s+" "+e+" "+e+'"><circle r="'+o+'" style="'+i+'" /></svg>',w:e,h:e}},setStyle:function(t){r.Util.setOptions(this,t),this.createIcon()}}),e=t.extend({initialize:function(t,i,o){r.Util.setOptions(this,o),this._latlng=t,this._heading=i,this.createIcon()},setHeading:function(t){this._heading=t},_getIconSVG:function(t,i){var o=t.radius,s=t.width+t.weight,e=2*(o+t.depth+t.weight),n="M0,0 l"+t.width/2+","+t.depth+" l-"+s+",0 z";return{className:"leaflet-control-locate-heading",svg:'<svg xmlns="http://www.w3.org/2000/svg" width="'+s+'" height="'+e+'" version="1.1" viewBox="-'+s/2+" 0 "+s+" "+e+'" style="'+("transform: rotate("+this._heading+"deg)")+'"><path d="'+n+'" style="'+i+'" /></svg>',w:s,h:e}}}),n=r.Control.extend({options:{position:"topleft",layer:void 0,setView:"untilPanOrZoom",keepCurrentZoomLevel:!1,initialZoomLevel:!1,getLocationBounds:function(t){return t.bounds},flyTo:!1,clickBehavior:{inView:"stop",outOfView:"setView",inViewNotFollowing:"inView"},returnToPrevBounds:!1,cacheLocation:!0,drawCircle:!0,drawMarker:!0,showCompass:!0,markerClass:t,compassClass:e,circleStyle:{className:"leaflet-control-locate-circle",color:"#136AEC",fillColor:"#136AEC",fillOpacity:.15,weight:0},markerStyle:{className:"leaflet-control-locate-marker",color:"#fff",fillColor:"#2A93EE",fillOpacity:1,weight:3,opacity:1,radius:9},compassStyle:{fillColor:"#2A93EE",fillOpacity:1,weight:0,color:"#fff",opacity:1,radius:9,width:9,depth:6},followCircleStyle:{},followMarkerStyle:{},followCompassStyle:{},icon:"fa fa-map-marker",iconLoading:"fa fa-spinner fa-spin",iconElementTag:"span",circlePadding:[0,0],metric:!0,createButtonCallback:function(t,i){var o=r.DomUtil.create("a","leaflet-bar-part leaflet-bar-part-single",t);return o.title=i.strings.title,o.role="button",o.href="#",{link:o,icon:r.DomUtil.create(i.iconElementTag,i.icon,o)}},onLocationError:function(t,i){alert(t.message)},onLocationOutsideMapBounds:function(t){t.stop(),alert(t.options.strings.outsideMapBoundsMsg)},showPopup:!0,strings:{title:"Show me where I am",metersUnit:"meters",feetUnit:"feet",popup:"You are within {distance} {unit} from this point",outsideMapBoundsMsg:"You seem located outside the boundaries of the map"},locateOptions:{maxZoom:1/0,watch:!0,setView:!1}},initialize:function(t){for(var i in t)"object"==typeof this.options[i]?r.extend(this.options[i],t[i]):this.options[i]=t[i];this.options.followMarkerStyle=r.extend({},this.options.markerStyle,this.options.followMarkerStyle),this.options.followCircleStyle=r.extend({},this.options.circleStyle,this.options.followCircleStyle),this.options.followCompassStyle=r.extend({},this.options.compassStyle,this.options.followCompassStyle)},onAdd:function(t){var i=r.DomUtil.create("div","leaflet-control-locate leaflet-bar leaflet-control");this._container=i,this._map=t,this._layer=this.options.layer||new r.LayerGroup,this._layer.addTo(t),this._event=void 0,this._compassHeading=null,this._prevBounds=null;var o=this.options.createButtonCallback(i,this.options);return this._link=o.link,this._icon=o.icon,r.DomEvent.on(this._link,"click",function(t){r.DomEvent.stopPropagation(t),r.DomEvent.preventDefault(t),this._onClick()},this).on(this._link,"dblclick",r.DomEvent.stopPropagation),this._resetVariables(),this._map.on("unload",this._unload,this),i},_onClick:function(){this._justClicked=!0;var t=this._isFollowing();if(this._userPanned=!1,this._userZoomed=!1,this._active&&!this._event)this.stop();else if(this._active){var i=this.options.clickBehavior,o=i.outOfView;switch(this._map.getBounds().contains(this._event.latlng)&&(o=t?i.inView:i.inViewNotFollowing),i[o]&&(o=i[o]),o){case"setView":this.setView();break;case"stop":this.stop(),this.options.returnToPrevBounds&&(this.options.flyTo?this._map.flyToBounds:this._map.fitBounds).bind(this._map)(this._prevBounds)}}else this.options.returnToPreLine truncated
//# sourceMappingURL=L.Control.Locate.min.js.map
+1
View File
@@ -0,0 +1 @@
!function(e){if("function"==typeof define&&define.amd)define(["leaflet","pixi.js"],e);else if("undefined"!=typeof module)module.exports=e(require("leaflet"),require("pixi.js"));else{if(void 0===window.L)throw new Error("Leaflet must be loaded first");if(void 0===window.PIXI)throw new Error("Pixi.js must be loaded first");e(window.L,window.PIXI)}}(function(_,r){function e(){return this}var t=_.Point.prototype._round;function i(e,t,i){t?e.destroy():i||(e.autoPreventDefault=!1)}var n={options:{padding:.1,forceCanvas:!1,doubleBuffering:!1,resolution:_.Browser.retina?2:1,projectionZoom:function(e){return(e.getMaxZoom()+e.getMinZoom())/2},destroyInteractionManager:!1,autoPreventDefault:!0,preserveDrawingBuffer:!1,clearBeforeRender:!0,shouldRedrawOnMove:function(){return!1}},initialize:function(e,t,i){_.setOptions(this,i),_.stamp(this),this._drawCallback=e,this._pixiContainer=t,this._rendererOptions={transparent:!0,resolution:this.options.resolution,antialias:!0,forceCanvas:this.options.forceCanvas,preserveDrawingBuffer:this.options.preserveDrawingBuffer,clearBeforeRender:this.options.clearBeforeRender},this._doubleBuffering=r.utils.isWebGLSupported()&&!this.options.forceCanvas&&this.options.doubleBuffering},_setMap:function(){},_setContainerStyle:function(){},_addContainer:function(){this.getPane().appendChild(this._container)},_setEvents:function(){},onAdd:function(e){if(this._setMap(e),!this._container){var t=this._container=_.DomUtil.create("div","leaflet-pixi-overlay");t.style.position="absolute",this._renderer=r.autoDetectRenderer(this._rendererOptions),i(this._renderer.plugins.interaction,this.options.destroyInteractionManager,this.options.autoPreventDefault),t.appendChild(this._renderer.view),this._zoomAnimated&&(_.DomUtil.addClass(t,"leaflet-zoom-animated"),this._setContainerStyle()),this._doubleBuffering&&(this._auxRenderer=r.autoDetectRenderer(this._rendererOptions),i(this._auxRenderer.plugins.interaction,this.options.destroyInteractionManager,this.options.autoPreventDefault),t.appendChild(this._auxRenderer.view),this._renderer.view.style.position="absolute",this._auxRenderer.view.style.position="absolute")}this._addContainer(),this._setEvents();var n=this._map;this._initialZoom=this.options.projectionZoom(n),this._wgsOrigin=_.latLng([0,0]),this._wgsInitialShift=n.project(this._wgsOrigin,this._initialZoom),this._mapInitialZoom=n.getZoom();var o=this;this.utils={latLngToLayerPoint:function(e,t){return t=void 0===t?o._initialZoom:t,n.project(_.latLng(e),t)},layerPointToLatLng:function(e,t){t=void 0===t?o._initialZoom:t;var i=_.point(e);return n.unproject(i,t)},getScale:function(e){return void 0===e?n.getZoomScale(n.getZoom(),o._initialZoom):n.getZoomScale(e,o._initialZoom)},getRenderer:function(){return o._renderer},getContainer:function(){return o._pixiContainer},getMap:function(){return o._map}},this._update({type:"add"})},onRemove:function(){_.DomUtil.remove(this._container)},getEvents:function(){var e={zoom:this._onZoom,move:this._onMove,moveend:this._update};return this._zoomAnimated&&(e.zoomanim=this._onAnimZoom),e},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_onAnimZoom:function(e){this._updateTransform(e.center,e.zoom)},_onMove:function(e){this.options.shouldRedrawOnMove(e)&&this._update(e)},_updateTransform:function(e,t){var i=this._map.getZoomScale(t,this._zoom),n=this._map.getSize().multiplyBy(.5+this.options.padding),o=this._map.project(this._center,t),r=n.multiplyBy(-i).add(o).subtract(this._map._getNewPixelOrigin(e,t));_.Browser.any3d?_.DomUtil.setTransform(this._container,r,i):_.DomUtil.setPosition(this._container,r)},_redraw:function(e,t){this._disableLeafletRounding();var i=this._map.getZoomScale(this._zoom,this._initialZoom),n=this._map.latLngToLayerPoint(this._wgsOrigin)._subtract(this._wgsInitialShift.multiplyBy(i))._subtract(e);this._pixiContainer.scale.set(i),this._pixiContainer.position.set(n.x,n.y),this._drawCallback(this.utils,t),this._enableLeafletRounding()},_update:function(e){if(!this._map._animatingZoom||!this._bounds){var t=this.options.padding,i=this._map.getSize(),n=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();if(this._bounds=new _.Bounds(n,n.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom(),this._doubleBuffering){var o=this._renderer;this._renderer=this._auxRenderer,this._auxRenderer=o}var r=this._renderer.view,s=this._bounds,a=this._container,d=s.getSize();if(!this._renderer.size||this._renderer.size.x!==d.x||this._renderer.size.y!==d.y){if(this._renderer.gl&&(this._renderer.resolution=this.options.resolution,this._renderer.rootRenderTarget&&(this._renderer.rootRenderTarget.resolution=this.options.resolution)),this._renderer.resize(d.x,d.y),r.style.width=d.x+"px",r.style.height=d.y+"px",this._renderer.gl){var h=this._renderer.gl;if(h.drawingBufferWidth!==this._renderer.width){var l=this.options.resolution*h.drawingBufferWidth/this._renderer.width;this._renderer.rLine truncated
+148
View File
@@ -0,0 +1,148 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('leaflet')) :
typeof define === 'function' && define.amd ? define(['leaflet'], factory) :
(global.L = global.L || {}, global.L.terminator = factory(global.L));
}(this, (function (L) { 'use strict';
L = L && L.hasOwnProperty('default') ? L['default'] : L;
/* Terminator.js -- Overlay day/night region on a Leaflet map */
function julian(date) {
/* Calculate the present UTC Julian Date. Function is valid after
* the beginning of the UNIX epoch 1970-01-01 and ignores leap
* seconds. */
return (date / 86400000) + 2440587.5;
}
function GMST(julianDay) {
/* Calculate Greenwich Mean Sidereal Time according to
http://aa.usno.navy.mil/faq/docs/GAST.php */
var d = julianDay - 2451545.0;
// Low precision equation is good enough for our purposes.
return (18.697374558 + 24.06570982441908 * d) % 24;
}
var Terminator = L.Polygon.extend({
options: {
color: '#00',
opacity: 0.5,
fillColor: '#00',
fillOpacity: 0.5,
resolution: 2
},
initialize: function (options) {
this.version = '0.1.0';
this._R2D = 180 / Math.PI;
this._D2R = Math.PI / 180;
L.Util.setOptions(this, options);
var latLng = this._compute(this.options.time);
this.setLatLngs(latLng);
},
setTime: function (date) {
this.options.time = date;
var latLng = this._compute(date);
this.setLatLngs(latLng);
},
_sunEclipticPosition: function (julianDay) {
/* Compute the position of the Sun in ecliptic coordinates at
julianDay. Following
http://en.wikipedia.org/wiki/Position_of_the_Sun */
// Days since start of J2000.0
var n = julianDay - 2451545.0;
// mean longitude of the Sun
var L$$1 = 280.460 + 0.9856474 * n;
L$$1 %= 360;
// mean anomaly of the Sun
var g = 357.528 + 0.9856003 * n;
g %= 360;
// ecliptic longitude of Sun
var lambda = L$$1 + 1.915 * Math.sin(g * this._D2R) +
0.02 * Math.sin(2 * g * this._D2R);
// distance from Sun in AU
var R = 1.00014 - 0.01671 * Math.cos(g * this._D2R) -
0.0014 * Math.cos(2 * g * this._D2R);
return {lambda: lambda, R: R};
},
_eclipticObliquity: function (julianDay) {
// Following the short term expression in
// http://en.wikipedia.org/wiki/Axial_tilt#Obliquity_of_the_ecliptic_.28Earth.27s_axial_tilt.29
var n = julianDay - 2451545.0;
// Julian centuries since J2000.0
var T = n / 36525;
var epsilon = 23.43929111 -
T * (46.836769 / 3600
- T * (0.0001831 / 3600
+ T * (0.00200340 / 3600
- T * (0.576e-6 / 3600
- T * 4.34e-8 / 3600))));
return epsilon;
},
_sunEquatorialPosition: function (sunEclLng, eclObliq) {
/* Compute the Sun's equatorial position from its ecliptic
* position. Inputs are expected in degrees. Outputs are in
* degrees as well. */
var alpha = Math.atan(Math.cos(eclObliq * this._D2R)
* Math.tan(sunEclLng * this._D2R)) * this._R2D;
var delta = Math.asin(Math.sin(eclObliq * this._D2R)
* Math.sin(sunEclLng * this._D2R)) * this._R2D;
var lQuadrant = Math.floor(sunEclLng / 90) * 90;
var raQuadrant = Math.floor(alpha / 90) * 90;
alpha = alpha + (lQuadrant - raQuadrant);
return {alpha: alpha, delta: delta};
},
_hourAngle: function (lng, sunPos, gst) {
/* Compute the hour angle of the sun for a longitude on
* Earth. Return the hour angle in degrees. */
var lst = gst + lng / 15;
return lst * 15 - sunPos.alpha;
},
_latitude: function (ha, sunPos) {
/* For a given hour angle and sun position, compute the
* latitude of the terminator in degrees. */
var lat = Math.atan(-Math.cos(ha * this._D2R) /
Math.tan(sunPos.delta * this._D2R)) * this._R2D;
return lat;
},
_compute: function (time) {
var today = time ? new Date(time) : new Date();
var julianDay = julian(today);
var gst = GMST(julianDay);
var latLng = [];
var sunEclPos = this._sunEclipticPosition(julianDay);
var eclObliq = this._eclipticObliquity(julianDay);
var sunEqPos = this._sunEquatorialPosition(sunEclPos.lambda, eclObliq);
for (var i = 0; i <= 720 * this.options.resolution; i++) {
var lng = -360 + i / this.options.resolution;
var ha = this._hourAngle(lng, sunEqPos, gst);
latLng[i + 1] = [this._latitude(ha, sunEqPos), lng];
}
if (sunEqPos.delta < 0) {
latLng[0] = [90, -360];
latLng[latLng.length] = [90, 360];
} else {
latLng[0] = [-90, -360];
latLng[latLng.length] = [-90, 360];
}
return latLng;
}
});
function terminator(options) {
return new Terminator(options);
}
return terminator;
})));
+640
View File
@@ -0,0 +1,640 @@
/* required styles */
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
image-rendering: -webkit-optimize-contrast;
}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
width: 1600px;
height: 1600px;
-webkit-transform-origin: 0 0;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg,
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
max-width: none !important;
max-height: none !important;
}
.leaflet-container.leaflet-touch-zoom {
-ms-touch-action: pan-x pan-y;
touch-action: pan-x pan-y;
}
.leaflet-container.leaflet-touch-drag {
-ms-touch-action: pinch-zoom;
/* Fallback for FF which doesn't support pinch-zoom */
touch-action: none;
touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-container {
-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 800;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-pane { z-index: 400; }
.leaflet-tile-pane { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane { z-index: 500; }
.leaflet-marker-pane { z-index: 600; }
.leaflet-tooltip-pane { z-index: 650; }
.leaflet-popup-pane { z-index: 700; }
.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg { z-index: 200; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile {
will-change: opacity;
}
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-animated {
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
will-change: transform;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
pointer-events: none;
}
.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */
.leaflet-container {
background: #ddd;
outline: 0;
}
.leaflet-container a {
color: #0078A8;
}
.leaflet-container a.leaflet-active {
outline: 2px solid orange;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a,
.leaflet-bar a:hover {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
.leaflet-touch .leaflet-bar a:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.leaflet-touch .leaflet-bar a:last-child {
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
overflow-x: hidden;
padding-right: 5px;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* Default icon URLs */
.leaflet-default-icon-path {
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.7);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover {
text-decoration: underline;
}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
font-size: 11px;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #fff;
background: rgba(255, 255, 255, 0.5);
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 19px;
line-height: 1.4;
}
.leaflet-popup-content p {
margin: 18px 0;
}
.leaflet-popup-tip-container {
width: 40px;
height: 20px;
position: absolute;
left: 50%;
margin-left: -20px;
overflow: hidden;
pointer-events: none;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
padding: 4px 4px 0 0;
border: none;
text-align: center;
width: 18px;
height: 14px;
font: 16px/14px Tahoma, Verdana, sans-serif;
color: #c3c3c3;
text-decoration: none;
font-weight: bold;
background: transparent;
}
.leaflet-container a.leaflet-popup-close-button:hover {
color: #999;
}
.leaflet-popup-scrolled {
overflow: auto;
border-bottom: 1px solid #ddd;
border-top: 1px solid #ddd;
}
.leaflet-oldie .leaflet-popup-content-wrapper {
-ms-zoom: 1;
}
.leaflet-oldie .leaflet-popup-tip {
width: 24px;
margin: 0 auto;
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
}
.leaflet-oldie .leaflet-popup-tip-container {
margin-top: -1px;
}
.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
border: 1px solid #999;
}
/* div icon */
.leaflet-div-icon {
background: #fff;
border: 1px solid #666;
}
/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
position: absolute;
padding: 6px;
background-color: #fff;
border: 1px solid #fff;
border-radius: 3px;
color: #222;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.leaflet-tooltip.leaflet-clickable {
cursor: pointer;
pointer-events: auto;
}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
position: absolute;
pointer-events: none;
border: 6px solid transparent;
background: transparent;
content: "";
}
/* Directions */
.leaflet-tooltip-bottom {
margin-top: 6px;
}
.leaflet-tooltip-top {
margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
left: 50%;
margin-left: -6px;
}
.leaflet-tooltip-top:before {
bottom: 0;
margin-bottom: -12px;
border-top-color: #fff;
}
.leaflet-tooltip-bottom:before {
top: 0;
margin-top: -12px;
margin-left: -6px;
border-bottom-color: #fff;
}
.leaflet-tooltip-left {
margin-left: -6px;
}
.leaflet-tooltip-right {
margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
top: 50%;
margin-top: -6px;
}
.leaflet-tooltip-left:before {
right: 0;
margin-right: -12px;
border-left-color: #fff;
}
.leaflet-tooltip-right:before {
left: 0;
margin-left: -12px;
border-right-color: #fff;
}
+6
View File
@@ -0,0 +1,6 @@
/* @preserve
* Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
* (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function h(t){for(var i,e,n=1,o=arguments.length;n<o;n++)for(i in e=arguments[n])t[i]=e[i];return t}var s=Object.create||function(t){return i.prototype=t,new i};function i(){}function p(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}var e=0;function m(t){return t._leaflet_id=t._leaflet_id||++e,t._leaflet_id}function n(t,i,e){var n,o,s=function(){n=!1,o&&(r.apply(e,o),o=!1)},r=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(s,i),n=!0)};return r}function o(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function a(){return!1}function r(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function u(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function l(t){return u(t).split(/\s+/)}function c(t,i){for(var e in Object.prototype.hasOwnProperty.call(t,"options")||(t.options=t.options?s(t.options):{}),i)t.options[e]=i[e];return t.options}function _(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}var d=/\{ *([\w_-]+) *\}/g;function f(t,n){return t.replace(d,function(t,i){var e=n[i];if(void 0===e)throw new Error("No value provided for variable "+t);return"function"==typeof e&&(e=e(n)),e})}var g=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function v(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}var y="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function x(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var w=0;function P(t){var i=+new Date,e=Math.max(0,16-(i-w));return w=i+e,window.setTimeout(t,e)}var b=window.requestAnimationFrame||x("RequestAnimationFrame")||P,T=window.cancelAnimationFrame||x("CancelAnimationFrame")||x("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function M(t,i,e){if(!e||b!==P)return b.call(window,p(t,i));t.call(i)}function z(t){t&&T.call(window,t)}var C={extend:h,create:s,bind:p,lastId:e,stamp:m,throttle:n,wrapNum:o,falseFn:a,formatNum:r,trim:u,splitWords:l,setOptions:c,getParamString:_,template:f,isArray:g,indexOf:v,emptyImageUrl:y,requestFn:b,cancelFn:T,requestAnimFrame:M,cancelAnimFrame:z};function S(){}S.extend=function(t){function i(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()}var e=i.__super__=this.prototype,n=s(e);for(var o in(n.constructor=i).prototype=n,this)Object.prototype.hasOwnProperty.call(this,o)&&"prototype"!==o&&"__super__"!==o&&(i[o]=this[o]);return t.statics&&(h(i,t.statics),delete t.statics),t.includes&&(function(t){if("undefined"==typeof L||!L||!L.Mixin)return;t=g(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}(t.includes),h.apply(null,[n].concat(t.includes)),delete t.includes),n.options&&(t.options=h(s(n.options),t.options)),h(n,t),n._initHooks=[],n.callInitHooks=function(){if(!this._initHooksCalled){e.callInitHooks&&e.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=n._initHooks.length;t<i;t++)n._initHooks[t].call(this)}},i},S.include=function(t){return h(this.prototype,t),this},S.mergeOptions=function(t){return h(this.prototype.options,t),this},S.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var Z={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=l(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=l(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===e&&r.fn===i)return r.fn=a,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=a;delete this._events[t]}},fire:function(t,i,e){if(!this.listens(t,e))return this;var n=h({},i,{type:t,target:this,sourceTarget:i&&i.sourceTarget||this});if(this._events){var o=this._events[t];if(o){this._firingCount=this._firingCount+1||1;for(var s=0,r=o.length;s<r;s++){vaLine truncated
//# sourceMappingURL=leaflet.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"dist/leaflet.js.map","sources":["../src/core/Util.js","../src/core/Class.js","../src/core/Events.js","../src/geometry/Point.js","../src/geometry/Bounds.js","../src/geo/LatLngBounds.js","../src/geo/LatLng.js","../src/geo/crs/CRS.js","../src/geo/projection/Projection.SphericalMercator.js","../src/geo/crs/CRS.Earth.js","../src/geometry/Transformation.js","../src/geo/crs/CRS.EPSG3857.js","../src/layer/vector/SVG.Util.js","../src/core/Browser.js","../src/dom/DomEvent.Pointer.js","../src/dom/DomEvent.DoubleTap.js","../src/dom/DomUtil.js","../src/dom/DomEvent.js","../src/dom/PosAnimation.js","../src/map/Map.js","../src/control/Control.js","../src/control/Control.Layers.js","../src/control/Control.Zoom.js","../src/control/Control.Scale.js","../src/control/Control.Attribution.js","../src/control/index.js","../src/core/Handler.js","../src/core/index.js","../src/geometry/LineUtil.js","../src/dom/Draggable.js","../src/geometry/PolyUtil.js","../src/geo/crs/CRS.EPSG3395.js","../src/geo/projection/Projection.LonLat.js","../src/geo/projection/Projection.Mercator.js","../src/geo/crs/CRS.EPSG4326.js","../src/geo/crs/CRS.Simple.js","../src/geo/crs/index.js","../src/layer/Layer.js","../src/layer/LayerGroup.js","../src/layer/FeatureGroup.js","../src/layer/marker/Icon.js","../src/layer/marker/Icon.Default.js","../src/layer/marker/Marker.Drag.js","../src/layer/marker/Marker.js","../src/layer/vector/Path.js","../src/layer/vector/CircleMarker.js","../src/layer/vector/Circle.js","../src/layer/vector/Polyline.js","../src/layer/vector/Polygon.js","../src/layer/GeoJSON.js","../src/layer/ImageOverlay.js","../src/layer/VideoOverlay.js","../src/layer/SVGOverlay.js","../src/layer/DivOverlay.js","../src/layer/Popup.js","../src/layer/Tooltip.js","../src/layer/marker/DivIcon.js","../src/layer/marker/index.js","../src/layer/tile/GridLayer.js","../src/layer/tile/TileLayer.js","../src/layer/tile/TileLayer.WMS.js","../src/layer/tile/index.js","../src/layer/vector/Renderer.js","../src/layer/vector/Canvas.js","../src/layer/vector/SVG.VML.js","../src/layer/vector/SVG.js","../src/layer/vector/Renderer.getRenderer.js","../src/layer/vector/Rectangle.js","../src/layer/vector/index.js","../src/layer/index.js","../src/map/handler/Map.BoxZoom.js","../src/map/handler/Map.DoubleClickZoom.js","../src/map/handler/Map.Drag.js","../src/map/handler/Map.Keyboard.js","../src/map/handler/Map.ScrollWheelZoom.js","../src/map/handler/Map.Tap.js","../src/map/handler/Map.TouchZoom.js","../src/map/index.js"],"names":["extend","dest","i","src","j","len","arguments","length","create","Object","proto","F","prototype","bind","fn","obj","slice","Array","apply","call","args","concat","lastId","stamp","_leaflet_id","throttle","time","context","lock","later","wrapperFn","setTimeout","wrapNum","x","range","includeMax","max","min","d","falseFn","formatNum","num","digits","pow","Math","undefined","round","trim","str","replace","splitWords","split","setOptions","options","hasOwnProperty","getParamString","existingUrl","uppercase","params","push","encodeURIComponent","toUpperCase","indexOf","join","templateRe","template","data","key","value","Error","isArray","toString","array","el","emptyImageUrl","getPrefixed","name","window","lastTime","timeoutDefer","Date","timeToCall","requestFn","requestAnimationFrame","cancelFn","cancelAnimationFrame","id","clearTimeout","requestAnimFrame","immediate","cancelAnimFrame","Class","props","NewClass","this","initialize","callInitHooks","parentProto","__super__","Util.create","constructor","statics","Util.extend","includes","L","Mixin","Util.isArray","Events","console","warn","stack","checkDeprecatedMixinEvents","_initHooks","_initHooksCalled","include","mergeOptions","addInitHook","init","on","types","type","_on","Util.splitWords","off","_off","_events","typeListeners","newListener","ctx","listeners","l","Util.falseFn","_firingCount","splice","fire","propagate","listens","event","target","sourceTarget","_propagateEvent","_eventParents","once","handler","Util.bind","addEventParent","Util.stamp","removeEventParent","e","layer","propagatedFrom","addEventListener","removeEventListener","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","Point","y","trunc","v","floor","ceil","toPoint","Bounds","a","b","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","isNaN","toLatLng","c","lon","clone","add","point","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","sqrt","equals","contains","abs","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","bounds","min2","max2","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","sw2","ne2","sw","_southWest","ne","_northEast","pad","bufferRatio","heightBuffer","widthBuffer","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSoLine truncated
+55
View File
@@ -0,0 +1,55 @@
// FIX for mobile https://github.com/Leaflet/Leaflet/issues/1542
L.Map.mergeOptions({
touchExtend: true
});
L.Map.TouchExtend = L.Handler.extend({
initialize: function (map) {
this._map = map;
this._container = map._container;
this._pane = map._panes.overlayPane;
},
addHooks: function () {
L.DomEvent.on(this._container, 'touchstart', this._onTouchStart, this);
L.DomEvent.on(this._container, 'touchend', this._onTouchEnd, this);
},
removeHooks: function () {
L.DomEvent.off(this._container, 'touchstart', this._onTouchStart);
L.DomEvent.off(this._container, 'touchend', this._onTouchEnd);
},
_onTouchStart: function (e) {
if (!this._map._loaded) { return; }
var type = 'touchstart';
var containerPoint = this._map.mouseEventToContainerPoint(e),
layerPoint = this._map.containerPointToLayerPoint(containerPoint),
latlng = this._map.layerPointToLatLng(layerPoint);
this._map.fire(type, {
latlng: latlng,
layerPoint: layerPoint,
containerPoint: containerPoint,
originalEvent: e
});
},
_onTouchEnd: function (e) {
if (!this._map._loaded) { return; }
var type = 'touchend';
this._map.fire(type, {
originalEvent: e
});
}
});
L.Map.addInitHook('addHandler', 'touchExtend', L.Map.TouchExtend);
//
File diff suppressed because it is too large. Load diff
+2
View File
@@ -0,0 +1,2 @@
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function M(){return e.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function _(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function o(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(h(e,a))return;return 1}function r(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,a){for(var t=[],s=0;s<e.length;++s)t.push(a(e[s],s));return t}function l(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return Sa(e,a,t,s,!0).utc()}function L(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function Y(e){if(null==e._isValid){var a=L(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function y(e){var a=c(NaN);return null!=e?l(L(a),e):L(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var f=M.momentProperties=[],a=!1;function p(e,a){var t,s,n;if(r(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),r(a._i)||(e._i=a._i),r(a._f)||(e._f=a._f),r(a._l)||(e._l=a._l),r(a._strict)||(e._strict=a._strict),r(a._tzm)||(e._tzm=a._tzm),r(a._isUTC)||(e._isUTC=a._isUTC),r(a._offset)||(e._offset=a._offset),r(a._pf)||(e._pf=L(a)),r(a._locale)||(e._locale=a._locale),0<f.length)for(t=0;t<f.length;t++)r(n=a[s=f[t]])||(e[s]=n);return e}function k(e){p(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,M.updateOffset(this),a=!1)}function D(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function T(e){!1===M.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,r){var d=!0;return l(function(){if(null!=M.deprecationHandler&&M.deprecationHandler(null,n),d){for(var e,a,t=[],s=0;s<arguments.length;s++){if(e="","object"==typeof arguments[s]){for(a in e+="\n["+s+"] ",arguments[0])h(arguments[0],a)&&(e+=a+": "+arguments[0][a]+", ");e=e.slice(0,-2)}else e=arguments[s];t.push(e)}T(n+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),d=!1}return r.apply(this,arguments)},r)}var s,g={};function w(e,a){null!=M.deprecationHandler&&M.deprecationHandler(e,a),g[e]||(T(a),g[e]=!0)}function v(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=l({},e);for(t in a)h(a,t)&&(_(e[t])&&_(a[t])?(s[t]={},l(s[t],e[t]),l(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&_(e[t])&&(s[t]=l({},s[t]));return s}function S(e){null!=e&&this.set(e)}M.suppressDeprecationWarnings=!1,M.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};function H(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,x=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,P={},O={};function W(e,a,t,s){var n="string"==typeof s?function(){return this[s]()}:s;e&&(O[e]=n),a&&(O[a[0]]=function(){return H(n.apply(this,arguments),a[1],a[2])}),t&&(O[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function A(e,a){return e.isValid()?(a=E(a,e.localeData()),P[a]=P[a]||function(s){for(var e,n=s.match(j),a=0,r=n.length;a<r;a++)O[n[a]]?n[a]=O[n[a]]:n[a]=(e=n[a]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var a="",t=0;t<r;t++)a+=v(n[t])?n[t].call(e,s):n[t];return a}}(a),P[a](e)):e.localeData().invalidDate()}function E(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}fLine truncated
//# sourceMappingURL=moment-with-locales.min.js.map
+9
View File
@@ -0,0 +1,9 @@
/*!
* pixi.js - v6.0.0
* Compiled Tue, 02 Mar 2021 21:45:03 UTC
*
* pixi.js is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/
var PIXI=function(t){"use strict";var e=setTimeout;function r(t){return Boolean(t&&void 0!==t.length)}function i(){}function n(t){if(!(this instanceof n))throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(t,this)}function o(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,n._immediateFn(function(){var r=1===t._state?e.onFulfilled:e.onRejected;if(null!==r){var i;try{i=r(t._value)}catch(t){return void a(e.promise,t)}s(e.promise,i)}else(1===t._state?s:a)(e.promise,t._value)})):t._deferreds.push(e)}function s(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var r=e.then;if(e instanceof n)return t._state=3,t._value=e,void h(t);if("function"==typeof r)return void l((i=r,o=e,function(){i.apply(o,arguments)}),t)}t._state=1,t._value=e,h(t)}catch(e){a(t,e)}var i,o}function a(t,e){t._state=2,t._value=e,h(t)}function h(t){2===t._state&&0===t._deferreds.length&&n._immediateFn(function(){t._handled||n._unhandledRejectionFn(t._value)});for(var e=0,r=t._deferreds.length;e<r;e++)o(t,t._deferreds[e]);t._deferreds=null}function u(t,e,r){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=r}function l(t,e){var r=!1;try{t(function(t){r||(r=!0,s(e,t))},function(t){r||(r=!0,a(e,t))})}catch(t){if(r)return;r=!0,a(e,t)}}n.prototype.catch=function(t){return this.then(null,t)},n.prototype.then=function(t,e){var r=new this.constructor(i);return o(this,new u(t,e,r)),r},n.prototype.finally=function(t){var e=this.constructor;return this.then(function(r){return e.resolve(t()).then(function(){return r})},function(r){return e.resolve(t()).then(function(){return e.reject(r)})})},n.all=function(t){return new n(function(e,i){if(!r(t))return i(new TypeError("Promise.all accepts an array"));var n=Array.prototype.slice.call(t);if(0===n.length)return e([]);var o=n.length;function s(t,r){try{if(r&&("object"==typeof r||"function"==typeof r)){var a=r.then;if("function"==typeof a)return void a.call(r,function(e){s(t,e)},i)}n[t]=r,0==--o&&e(n)}catch(t){i(t)}}for(var a=0;a<n.length;a++)s(a,n[a])})},n.allSettled=function(t){return new this(function(e,r){if(!t||void 0===t.length)return r(new TypeError(typeof t+" "+t+" is not iterable(cannot read property Symbol(Symbol.iterator))"));var i=Array.prototype.slice.call(t);if(0===i.length)return e([]);var n=i.length;function o(t,r){if(r&&("object"==typeof r||"function"==typeof r)){var s=r.then;if("function"==typeof s)return void s.call(r,function(e){o(t,e)},function(r){i[t]={status:"rejected",reason:r},0==--n&&e(i)})}i[t]={status:"fulfilled",value:r},0==--n&&e(i)}for(var s=0;s<i.length;s++)o(s,i[s])})},n.resolve=function(t){return t&&"object"==typeof t&&t.constructor===n?t:new n(function(e){e(t)})},n.reject=function(t){return new n(function(e,r){r(t)})},n.race=function(t){return new n(function(e,i){if(!r(t))return i(new TypeError("Promise.race accepts an array"));for(var o=0,s=t.length;o<s;o++)n.resolve(t[o]).then(e,i)})},n._immediateFn="function"==typeof setImmediate&&function(t){setImmediate(t)}||function(t){e(t,0)},n._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)};var c=Object.getOwnPropertySymbols,d=Object.prototype.hasOwnProperty,f=Object.prototype.propertyIsEnumerable;var p=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(t){i[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,i,n=arguments,o=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),s=1;s<arguments.length;s++){for(var a in r=Object(n[s]))d.call(r,a)&&(o[a]=r[a]);if(c){i=c(r);for(var h=0;h<i.length;h++)f.call(r,i[h])&&(o[i[h]]=r[i[h]])}}return o};if(self.Promise||(self.Promise=n),Object.assign||(Object.assign=p),Date.now&&Date.prototype.getTime||(Date.now=function(){return(new Date).getTime()}),!self.performance||!self.performance.now){var _=Date.now();self.performance||(self.performance={}),self.performance.now=function(){return Date.now()-_}}for(var m=Date.now(),v=["ms","moz","webkit","o"],y=0;y<v.length&&!self.requestAnimationFrame;++y){var g=v[y];self.requestAnimationFrame=self[g+"RequestAnimationFrame"],self.cancelAnimationFrame=self[g+"CancelAnimationFrame"]||self[g+"CancelRequestAnimationFrame"]}self.requestAnimationFrame||(self.requestAnimationFrame=function(t){if("function"!=typeof t)throw new TypeError(t+"is not a function");var e=Line truncated
//# sourceMappingURL=pixi.min.js.map
+5
View File
@@ -0,0 +1,5 @@
/*
Copyright (C) Federico Zivolo 2017
Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
*/(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',i=e.nodeName;if('BODY'===i||'HTML'===i){var n=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||n;return r[o]}return e[o]}function l(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=a(t,'top'),n=a(t,'left'),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function f(e,t){var o='x'===t?'Left':'Top',i='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+i+'Width'],10)}function m(e,t,o,i){return J(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],ie()?o['offset'+e]+i['margin'+('Height'===e?'Top':'Left')]+i['margin'+('Height'===e?'Bottom':'Right')]:0)}function h(){var e=document.body,t=document.documentElement,o=ie()&&getComputedStyle(t);return{height:m('Height',e,t,o),width:m('Width',e,t,o)}}function c(e){return se({},e,{right:e.left+e.width,bottom:e.top+e.height})}function g(e){var o={};if(ie())try{o=e.getBoundingClientRect();var i=a(e,'top'),n=a(e,'left');o.top+=i,o.left+=n,o.bottom+=i,o.right+=n}catch(e){}else o=e.getBoundingClientRect();var r={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},p='HTML'===e.nodeName?h():{},s=p.width||e.clientWidth||r.right-r.left,d=p.height||e.clientHeight||r.bottom-r.top,l=e.offsetWidth-s,m=e.offsetHeight-d;if(l||m){var g=t(e);l-=f(g,'x'),m-=f(g,'y'),r.width-=l,r.height-=m}return c(r)}function u(e,o){var i=ie(),r='HTML'===o.nodeName,p=g(e),s=g(o),d=n(e),a=t(o),f=parseFloat(a.borderTopWidth,10),m=parseFloat(a.borderLeftWidth,10),h=c({top:p.top-s.top-f,left:p.left-s.left-m,width:p.width,height:p.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var u=parseFloat(a.marginTop,10),b=parseFloat(a.marginLeft,10);h.top-=f-u,h.bottom-=f-u,h.left-=m-b,h.right-=m-b,h.marginTop=u,h.marginLeft=b}return(i?o.contains(d):o===d&&'BODY'!==d.nodeName)&&(h=l(h,o)),h}function b(e){var t=e.ownerDocument.documentElement,o=u(e,t),i=J(t.clientWidth,window.innerWidth||0),n=J(t.clientHeight,window.innerHeight||0),r=a(t),p=a(t,'left'),s={top:r-o.top+o.marginTop,left:p-o.left+o.marginLeft,width:i,height:n};return c(s)}function w(e){var i=e.nodeName;return'BODY'===i||'HTML'===i?!1:'fixed'===t(e,'position')||w(o(e))}function y(e,t,i,r){var p={top:0,left:0},s=d(e,t);if('viewport'===r)p=b(s);else{var a;'scrollParent'===r?(a=n(o(t)),'BODY'===a.nodeName&&(a=e.ownerDocument.documentElement)):'window'===r?a=e.ownerDocument.documentElement:a=r;var l=u(a,s);if('HTML'===a.nodeName&&!w(s)){var f=h(),m=f.height,c=f.width;p.top+=l.top-l.marginTop,p.bottom=m+l.top,p.left+=l.left-l.marginLeft,p.right=c+l.left}else p=l}return p.left+=i,p.top+=i,p.right-=i,p.bottom-=i,p}function E(e){var t=e.width,o=e.height;return t*o}function v(e,t,o,i,n){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=y(o,i,r,n),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return se({key:e},s[e],{area:E(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function O(e,t,o){var i=d(t,o);return u(o,i)}function L(e){var t=getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),n={width:e.offsetWidth+i,height:e.offsetHeighLine truncated
//# sourceMappingURL=popper.min.js.map
+10576
View File
File diff suppressed because it is too large. Load diff
+899
View File
@@ -0,0 +1,899 @@
/*!
* Quill Editor v1.1.9
* https://quilljs.com/
* Copyright (c) 2014, Jason Chen
* Copyright (c) 2013, salesforce.com
*/
.ql-container {
box-sizing: border-box;
font-family: Helvetica, Arial, sans-serif;
font-size: 13px;
height: 100%;
margin: 0px;
position: relative;
}
.ql-container.ql-disabled .ql-tooltip {
visibility: hidden;
}
.ql-clipboard {
left: -100000px;
height: 1px;
overflow-y: hidden;
position: absolute;
top: 50%;
}
.ql-clipboard p {
margin: 0;
padding: 0;
}
.ql-editor {
box-sizing: border-box;
cursor: text;
line-height: 1.42;
height: 100%;
outline: none;
overflow-y: auto;
padding: 12px 15px;
tab-size: 4;
-moz-tab-size: 4;
text-align: left;
white-space: pre-wrap;
word-wrap: break-word;
}
.ql-editor p,
.ql-editor ol,
.ql-editor ul,
.ql-editor pre,
.ql-editor blockquote,
.ql-editor h1,
.ql-editor h2,
.ql-editor h3,
.ql-editor h4,
.ql-editor h5,
.ql-editor h6 {
margin: 0;
padding: 0;
counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol,
.ql-editor ul {
padding-left: 1.5em;
}
.ql-editor ol > li,
.ql-editor ul > li {
list-style-type: none;
}
.ql-editor ul > li::before {
content: '\25CF';
}
.ql-editor ul[data-checked=true] > li::before,
.ql-editor ul[data-checked=false] > li::before {
color: #777;
cursor: pointer;
}
.ql-editor ul[data-checked=true] > li::before {
content: '\2611';
}
.ql-editor ul[data-checked=false] > li::before {
content: '\2610';
}
.ql-editor li::before {
display: inline-block;
margin-right: 0.3em;
text-align: right;
white-space: nowrap;
width: 1.2em;
}
.ql-editor li:not(.ql-direction-rtl)::before {
margin-left: -1.5em;
}
.ql-editor ol li,
.ql-editor ul li {
padding-left: 1.5em;
}
.ql-editor ol li {
counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
counter-increment: list-num;
}
.ql-editor ol li:before {
content: counter(list-num, decimal) '. ';
}
.ql-editor ol li.ql-indent-1 {
counter-increment: list-1;
}
.ql-editor ol li.ql-indent-1:before {
content: counter(list-1, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-1 {
counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-2 {
counter-increment: list-2;
}
.ql-editor ol li.ql-indent-2:before {
content: counter(list-2, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-2 {
counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-3 {
counter-increment: list-3;
}
.ql-editor ol li.ql-indent-3:before {
content: counter(list-3, decimal) '. ';
}
.ql-editor ol li.ql-indent-3 {
counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-4 {
counter-increment: list-4;
}
.ql-editor ol li.ql-indent-4:before {
content: counter(list-4, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-4 {
counter-reset: list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-5 {
counter-increment: list-5;
}
.ql-editor ol li.ql-indent-5:before {
content: counter(list-5, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-5 {
counter-reset: list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-6 {
counter-increment: list-6;
}
.ql-editor ol li.ql-indent-6:before {
content: counter(list-6, decimal) '. ';
}
.ql-editor ol li.ql-indent-6 {
counter-reset: list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-7 {
counter-increment: list-7;
}
.ql-editor ol li.ql-indent-7:before {
content: counter(list-7, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-7 {
counter-reset: list-8 list-9;
}
.ql-editor ol li.ql-indent-8 {
counter-increment: list-8;
}
.ql-editor ol li.ql-indent-8:before {
content: counter(list-8, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-8 {
counter-reset: list-9;
}
.ql-editor ol li.ql-indent-9 {
counter-increment: list-9;
}
.ql-editor ol li.ql-indent-9:before {
content: counter(list-9, decimal) '. ';
}
.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
padding-left: 3em;
}
.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
padding-left: 4.5em;
}
.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
padding-right: 3em;
}
.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
padding-right: 4.5em;
}
.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
padding-left: 6em;
}
.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
padding-left: 7.5em;
}
.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
padding-right: 6em;
}
.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
padding-right: 7.5em;
}
.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
padding-left: 9em;
}
.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
padding-left: 10.5em;
}
.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
padding-right: 9em;
}
.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
padding-right: 10.5em;
}
.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
padding-left: 12em;
}
.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
padding-left: 13.5em;
}
.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
padding-right: 12em;
}
.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
padding-right: 13.5em;
}
.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
padding-left: 15em;
}
.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
padding-left: 16.5em;
}
.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
padding-right: 15em;
}
.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
padding-right: 16.5em;
}
.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
padding-left: 18em;
}
.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
padding-left: 19.5em;
}
.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
padding-right: 18em;
}
.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
padding-right: 19.5em;
}
.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
padding-left: 21em;
}
.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
padding-left: 22.5em;
}
.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
padding-right: 21em;
}
.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
padding-right: 22.5em;
}
.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
padding-left: 24em;
}
.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
padding-left: 25.5em;
}
.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
padding-right: 24em;
}
.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
padding-right: 25.5em;
}
.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
padding-left: 27em;
}
.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
padding-left: 28.5em;
}
.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
padding-right: 27em;
}
.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
padding-right: 28.5em;
}
.ql-editor .ql-video {
display: block;
max-width: 100%;
}
.ql-editor .ql-video.ql-align-center {
margin: 0 auto;
}
.ql-editor .ql-video.ql-align-right {
margin: 0 0 0 auto;
}
.ql-editor .ql-bg-black {
background-color: #000;
}
.ql-editor .ql-bg-red {
background-color: #e60000;
}
.ql-editor .ql-bg-orange {
background-color: #f90;
}
.ql-editor .ql-bg-yellow {
background-color: #ff0;
}
.ql-editor .ql-bg-green {
background-color: #008a00;
}
.ql-editor .ql-bg-blue {
background-color: #06c;
}
.ql-editor .ql-bg-purple {
background-color: #93f;
}
.ql-editor .ql-color-white {
color: #fff;
}
.ql-editor .ql-color-red {
color: #e60000;
}
.ql-editor .ql-color-orange {
color: #f90;
}
.ql-editor .ql-color-yellow {
color: #ff0;
}
.ql-editor .ql-color-green {
color: #008a00;
}
.ql-editor .ql-color-blue {
color: #06c;
}
.ql-editor .ql-color-purple {
color: #93f;
}
.ql-editor .ql-font-serif {
font-family: Georgia, Times New Roman, serif;
}
.ql-editor .ql-font-monospace {
font-family: Monaco, Courier New, monospace;
}
.ql-editor .ql-size-small {
font-size: 0.75em;
}
.ql-editor .ql-size-large {
font-size: 1.5em;
}
.ql-editor .ql-size-huge {
font-size: 2.5em;
}
.ql-editor .ql-direction-rtl {
direction: rtl;
text-align: inherit;
}
.ql-editor .ql-align-center {
text-align: center;
}
.ql-editor .ql-align-justify {
text-align: justify;
}
.ql-editor .ql-align-right {
text-align: right;
}
.ql-editor.ql-blank::before {
color: rgba(0,0,0,0.6);
content: attr(data-placeholder);
font-style: italic;
pointer-events: none;
position: absolute;
}
.ql-snow.ql-toolbar:after,
.ql-snow .ql-toolbar:after {
clear: both;
content: '';
display: table;
}
.ql-snow.ql-toolbar button,
.ql-snow .ql-toolbar button {
background: none;
border: none;
cursor: pointer;
display: inline-block;
float: left;
height: 24px;
padding: 3px 5px;
width: 28px;
}
.ql-snow.ql-toolbar button svg,
.ql-snow .ql-toolbar button svg {
float: left;
height: 100%;
}
.ql-snow.ql-toolbar button:active:hover,
.ql-snow .ql-toolbar button:active:hover {
outline: none;
}
.ql-snow.ql-toolbar input.ql-image[type=file],
.ql-snow .ql-toolbar input.ql-image[type=file] {
display: none;
}
.ql-snow.ql-toolbar button:hover,
.ql-snow .ql-toolbar button:hover,
.ql-snow.ql-toolbar button.ql-active,
.ql-snow .ql-toolbar button.ql-active,
.ql-snow.ql-toolbar .ql-picker-label:hover,
.ql-snow .ql-toolbar .ql-picker-label:hover,
.ql-snow.ql-toolbar .ql-picker-label.ql-active,
.ql-snow .ql-toolbar .ql-picker-label.ql-active,
.ql-snow.ql-toolbar .ql-picker-item:hover,
.ql-snow .ql-toolbar .ql-picker-item:hover,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
color: #06c;
}
.ql-snow.ql-toolbar button:hover .ql-fill,
.ql-snow .ql-toolbar button:hover .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,
.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,
.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
fill: #06c;
}
.ql-snow.ql-toolbar button:hover .ql-stroke,
.ql-snow .ql-toolbar button:hover .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke,
.ql-snow .ql-toolbar button.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow.ql-toolbar button:hover .ql-stroke-miter,
.ql-snow .ql-toolbar button:hover .ql-stroke-miter,
.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
stroke: #06c;
}
.ql-snow {
box-sizing: border-box;
}
.ql-snow * {
box-sizing: border-box;
}
.ql-snow .ql-hidden {
display: none;
}
.ql-snow .ql-out-bottom,
.ql-snow .ql-out-top {
visibility: hidden;
}
.ql-snow .ql-tooltip {
position: absolute;
transform: translateY(10px);
}
.ql-snow .ql-tooltip a {
cursor: pointer;
text-decoration: none;
}
.ql-snow .ql-tooltip.ql-flip {
transform: translateY(-10px);
}
.ql-snow .ql-formats {
display: inline-block;
vertical-align: middle;
}
.ql-snow .ql-formats:after {
clear: both;
content: '';
display: table;
}
.ql-snow .ql-stroke {
fill: none;
stroke: #444;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 2;
}
.ql-snow .ql-stroke-miter {
fill: none;
stroke: #444;
stroke-miterlimit: 10;
stroke-width: 2;
}
.ql-snow .ql-fill,
.ql-snow .ql-stroke.ql-fill {
fill: #444;
}
.ql-snow .ql-empty {
fill: none;
}
.ql-snow .ql-even {
fill-rule: evenodd;
}
.ql-snow .ql-thin,
.ql-snow .ql-stroke.ql-thin {
stroke-width: 1;
}
.ql-snow .ql-transparent {
opacity: 0.4;
}
.ql-snow .ql-direction svg:last-child {
display: none;
}
.ql-snow .ql-direction.ql-active svg:last-child {
display: inline;
}
.ql-snow .ql-direction.ql-active svg:first-child {
display: none;
}
.ql-snow .ql-editor h1 {
font-size: 2em;
}
.ql-snow .ql-editor h2 {
font-size: 1.5em;
}
.ql-snow .ql-editor h3 {
font-size: 1.17em;
}
.ql-snow .ql-editor h4 {
font-size: 1em;
}
.ql-snow .ql-editor h5 {
font-size: 0.83em;
}
.ql-snow .ql-editor h6 {
font-size: 0.67em;
}
.ql-snow .ql-editor a {
text-decoration: underline;
}
.ql-snow .ql-editor blockquote {
border-left: 4px solid #ccc;
margin-bottom: 5px;
margin-top: 5px;
padding-left: 16px;
}
.ql-snow .ql-editor code,
.ql-snow .ql-editor pre {
background-color: #f0f0f0;
border-radius: 3px;
}
.ql-snow .ql-editor pre {
white-space: pre-wrap;
margin-bottom: 5px;
margin-top: 5px;
padding: 5px 10px;
}
.ql-snow .ql-editor code {
font-size: 85%;
padding-bottom: 2px;
padding-top: 2px;
}
.ql-snow .ql-editor code:before,
.ql-snow .ql-editor code:after {
content: "\A0";
letter-spacing: -2px;
}
.ql-snow .ql-editor pre.ql-syntax {
background-color: #23241f;
color: #f8f8f2;
overflow: visible;
}
.ql-snow .ql-editor img {
max-width: 100%;
}
.ql-snow .ql-picker {
color: #444;
display: inline-block;
float: left;
font-size: 14px;
font-weight: 500;
height: 24px;
position: relative;
vertical-align: middle;
}
.ql-snow .ql-picker-label {
cursor: pointer;
display: inline-block;
height: 100%;
padding-left: 8px;
padding-right: 2px;
position: relative;
width: 100%;
}
.ql-snow .ql-picker-label::before {
display: inline-block;
line-height: 22px;
}
.ql-snow .ql-picker-options {
background-color: #fff;
display: none;
min-width: 100%;
padding: 4px 8px;
position: absolute;
white-space: nowrap;
}
.ql-snow .ql-picker-options .ql-picker-item {
cursor: pointer;
display: block;
padding-bottom: 5px;
padding-top: 5px;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label {
color: #ccc;
z-index: 2;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
fill: #ccc;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
stroke: #ccc;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-options {
display: block;
margin-top: -1px;
top: 100%;
z-index: 1;
}
.ql-snow .ql-color-picker,
.ql-snow .ql-icon-picker {
width: 28px;
}
.ql-snow .ql-color-picker .ql-picker-label,
.ql-snow .ql-icon-picker .ql-picker-label {
padding: 2px 4px;
}
.ql-snow .ql-color-picker .ql-picker-label svg,
.ql-snow .ql-icon-picker .ql-picker-label svg {
right: 4px;
}
.ql-snow .ql-icon-picker .ql-picker-options {
padding: 4px 0px;
}
.ql-snow .ql-icon-picker .ql-picker-item {
height: 24px;
width: 24px;
padding: 2px 4px;
}
.ql-snow .ql-color-picker .ql-picker-options {
padding: 3px 5px;
width: 152px;
}
.ql-snow .ql-color-picker .ql-picker-item {
border: 1px solid transparent;
float: left;
height: 16px;
margin: 2px;
padding: 0px;
width: 16px;
}
.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
position: absolute;
margin-top: -9px;
right: 0;
top: 50%;
width: 18px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
content: attr(data-label);
}
.ql-snow .ql-picker.ql-header {
width: 98px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: 'Normal';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: 'Heading 1';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: 'Heading 2';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: 'Heading 3';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
content: 'Heading 4';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
content: 'Heading 5';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
content: 'Heading 6';
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
font-size: 2em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
font-size: 1.5em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
font-size: 1.17em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
font-size: 1em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
font-size: 0.83em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
font-size: 0.67em;
}
.ql-snow .ql-picker.ql-font {
width: 108px;
}
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
content: 'Sans Serif';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
content: 'Serif';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
content: 'Monospace';
}
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
font-family: Georgia, Times New Roman, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
font-family: Monaco, Courier New, monospace;
}
.ql-snow .ql-picker.ql-size {
width: 98px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: 'Normal';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
content: 'Small';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
content: 'Large';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
content: 'Huge';
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
font-size: 10px;
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
font-size: 18px;
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
font-size: 32px;
}
.ql-snow .ql-color-picker.ql-background .ql-picker-item {
background-color: #fff;
}
.ql-snow .ql-color-picker.ql-color .ql-picker-item {
background-color: #000;
}
.ql-toolbar.ql-snow {
border: 1px solid #ccc;
box-sizing: border-box;
font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
padding: 8px;
}
.ql-toolbar.ql-snow .ql-formats {
margin-right: 15px;
}
.ql-toolbar.ql-snow .ql-picker-label {
border: 1px solid transparent;
}
.ql-toolbar.ql-snow .ql-picker-options {
border: 1px solid transparent;
box-shadow: rgba(0,0,0,0.2) 0 2px 8px;
}
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
border-color: #ccc;
}
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
border-color: #ccc;
}
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
border-color: #000;
}
.ql-toolbar.ql-snow + .ql-container.ql-snow {
border-top: 0px;
}
.ql-snow .ql-tooltip {
background-color: #fff;
border: 1px solid #ccc;
box-shadow: 0px 0px 5px #ddd;
color: #444;
padding: 5px 12px;
white-space: nowrap;
}
.ql-snow .ql-tooltip::before {
content: "Visit URL:";
line-height: 26px;
margin-right: 8px;
}
.ql-snow .ql-tooltip input[type=text] {
display: none;
border: 1px solid #ccc;
font-size: 13px;
height: 26px;
margin: 0px;
padding: 3px 5px;
width: 170px;
}
.ql-snow .ql-tooltip a.ql-preview {
display: inline-block;
max-width: 200px;
overflow-x: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.ql-snow .ql-tooltip a.ql-action::after {
border-right: 1px solid #ccc;
content: 'Edit';
margin-left: 16px;
padding-right: 8px;
}
.ql-snow .ql-tooltip a.ql-remove::before {
content: 'Remove';
margin-left: 8px;
}
.ql-snow .ql-tooltip a {
line-height: 26px;
}
.ql-snow .ql-tooltip.ql-editing a.ql-preview,
.ql-snow .ql-tooltip.ql-editing a.ql-remove {
display: none;
}
.ql-snow .ql-tooltip.ql-editing input[type=text] {
display: inline-block;
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: 'Save';
padding-right: 0px;
}
.ql-snow .ql-tooltip[data-mode=link]::before {
content: "Enter link:";
}
.ql-snow .ql-tooltip[data-mode=formula]::before {
content: "Enter formula:";
}
.ql-snow .ql-tooltip[data-mode=video]::before {
content: "Enter video:";
}
.ql-snow a {
color: #06c;
}
.ql-container.ql-snow {
border: 1px solid #ccc;
}
+13
View File
@@ -0,0 +1,13 @@
/*! rasterizeHTML.js - v1.0.0 - 2015-03-01
* http://www.github.com/cburgmer/rasterizeHTML.js
* Copyright (c) 2015 Christoph Burgmer; Licensed MIT */
/* Integrated dependencies:
* url (MIT License),
* CSSOM.js (MIT License),
* ayepromise (BSD License & WTFPL),
* xmlserializer (MIT License),
* css-font-face-src (BSD License),
* inlineresources (MIT License) */
!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define&&define.amd)define(a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.rasterizeHTML=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};a[g][0].call(j.exports,function(b){var c=a[g][1][b];return e(c?c:b)},j,j.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(b,c,d){!function(e,f){"function"==typeof a&&a.amd?a(["url","xmlserializer","ayepromise","inlineresources"],function(a,b,c,d){return e.rasterizeHTML=f(a,b,c,d)}):"object"==typeof d?c.exports=f(b("url"),b("xmlserializer"),b("ayepromise"),b("inlineresources")):e.rasterizeHTML=f(url,xmlserializer,ayepromise,inlineresources)}(this,function(a,b,c,d){var e=function(a){"use strict";var b={},c=[];b.joinUrl=function(b,c){return b?a.resolve(b,c):c},b.getConstantUniqueIdFor=function(a){return c.indexOf(a)<0&&c.push(a),c.indexOf(a)},b.clone=function(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&(c[b]=a[b]);return c};var d=function(a){return"object"==typeof a&&null!==a},e=function(a){return d(a)&&Object.prototype.toString.apply(a).match(/\[object (Canvas|HTMLCanvasElement)\]/i)};return b.parseOptionalParameters=function(a){var c={canvas:null,options:{}};return null==a[0]||e(a[0])?(c.canvas=a[0]||null,c.options=b.clone(a[1])):c.options=b.clone(a[0]),c},b}(a),f=function(a,b){"use strict";var c={},d=function(a,b,c){var d=a[b];return a[b]=function(){var a=Array.prototype.slice.call(arguments);return c.apply(this,[a,d])},d};return c.baseUrlRespectingXhr=function(b,c){var e=function(){var e=new b;return d(e,"open",function(b,d){var e=b.shift(),f=b.shift(),g=a.joinUrl(c,f);return d.apply(this,[e,g].concat(b))}),e};return e},c.finishNotifyingXhr=function(a){var c=0,e=0,f=!1,g=b.defer(),h=function(){var a=c-e;0>=a&&f&&g.resolve({totalCount:c})},i=function(){var b=new a;return d(b,"send",function(a,b){return c+=1,b.apply(this,arguments)}),b.addEventListener("load",function(){e+=1,h()}),b};return i.waitForRequestsToFinish=function(){return f=!0,h(),g.promise},i},c}(e,c),g=function(){"use strict";var a={},b=function(a){return Array.prototype.slice.call(a)};a.addClassNameRecursively=function(b,c){b.className+=" "+c,b.parentNode!==b.ownerDocument&&a.addClassNameRecursively(b.parentNode,c)};var c=function(a,c){var d=a.parentStyleSheet,e=b(d.cssRules).indexOf(a);d.insertRule(c,e+1),d.deleteRule(e)},d=function(a,b){var d=a.cssText.replace(/^[^\{]+/,""),e=b+" "+d;c(a,e)},e=function(a){return b(a).reduce(function(a,b){return a+b.cssText},"")},f=function(a){a.textContent=e(a.sheet.cssRules)},g=function(a){return"((?:^|[^.#:\\w])|(?=\\W))("+a.join("|")+")(?=\\W|$)"},h=function(a,c,e){var h=g(c);b(a.querySelectorAll("style")).forEach(function(a){var c=b(a.sheet.cssRules).filter(function(a){return a.selectorText&&new RegExp(h,"i").test(a.selectorText)});c.length&&(c.forEach(function(a){var b=a.selectorText.replace(new RegExp(h,"gi"),function(a,b,c){return b+e(c)});b!==a.selectorText&&d(a,b)}),f(a))})};return a.rewriteCssSelectorWith=function(a,b,c){h(a,[b],function(){return c})},a.lowercaseCssTypeSelectors=function(a,b){h(a,b,function(a){return a.toLowerCase()})},a.findHtmlOnlyNodeNames=function(a){for(var b,c=a.createTreeWalker(a,NodeFilter.SHOW_ELEMENT),d={},e={};c.nextNode();)b=c.currentNode.tagName.toLowerCase(),"http://www.w3.org/1999/xhtml"===c.currentNode.namespaceURI?d[b]=!0:e[b]=!0;return Object.keys(d).filter(function(a){return!e[a]})},a}(),h=function(a){"use strict";var b={},c=function(a){return Array.prototype.slice.call(a)};return b.fakeHover=function(b,c){var d=b.querySelector(c),e="rasterizehtmlhover";d&&(a.addClassNameRecursively(d,e),a.rewriteCssSelectorWith(b,":hover","."+e))},b.fakeActive=function(b,c){var d=b.querySelector(c),e="rasterizehtmlactive";d&&(a.addClassNameRecursively(d,e),a.rewriteCssSelectorWith(b,":active","."+e))},b.fakeFocus=function(b,c){var d=b.querySelector(c),e="rasterizehtmlfocus";d&&(a.addClassNameRecursively(d,e),a.rewriteCssSelectorWith(b,":focus","."+e))},b.persistInputValues=function(a){var b=a.querySelectorAll("input"),d=a.querySelectorAll("textarea"),e=function(a){return"checkbox"===a.type||"radio"===a.type};c(b).filter(e).forEach(function(a){a.checked?a.setAttribute("checked",""):a.removeAttribute("checked")}),c(b).filter(function(a){return!e(a)}).forEach(function(a){a.setAttribute("value",a.value)}),c(d).forEach(function(a){a.textContent=a.value})},b.rewriteTagNameSelectorsToLowerCase=function(b){a.lowercaseCssTypeSelectors(b,a.findHtmlOnlyNodeNames(b))},b}(g),i=function(a,b,c,d){"use strict";var e={},f=function(a,b,c,d){var e=a.createElement(b);return e.style.visibility="hidden",e.style.width=c+"px",e.style.heLine truncated
d.CSSStyleSheet=function(){d.StyleSheet.call(this),this.cssRules=[]},d.CSSStyleSheet.prototype=new d.StyleSheet,d.CSSStyleSheet.prototype.constructor=d.CSSStyleSheet,d.CSSStyleSheet.prototype.insertRule=function(a,b){if(0>b||b>this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");var c=d.parse(a).cssRules[0];return c.parentStyleSheet=this,this.cssRules.splice(b,0,c),b},d.CSSStyleSheet.prototype.deleteRule=function(a){if(0>a||a>=this.cssRules.length)throw new RangeError("INDEX_SIZE_ERR");this.cssRules.splice(a,1)},d.CSSStyleSheet.prototype.toString=function(){for(var a="",b=this.cssRules,c=0;c<b.length;c++)a+=b[c].cssText+"\n";return a},c.CSSStyleSheet=d.CSSStyleSheet,d.parse=a("./parse").parse},{"./CSSStyleRule":18,"./StyleSheet":24,"./parse":27}],20:[function(a,b,c){var d={};d.CSSValue=function(){},d.CSSValue.prototype={constructor:d.CSSValue,set cssText(a){var b=this._getConstructorName();throw new Exception('DOMException: property "cssText" of "'+b+'" is readonly!')},get cssText(){var a=this._getConstructorName();throw new Exception('getter "cssText" of "'+a+'" is not implemented!')},_getConstructorName:function(){var a=this.constructor.toString(),b=a.match(/function\s([^\(]+)/),c=b[1];return c}},c.CSSValue=d.CSSValue},{}],21:[function(a,b,c){var d={CSSValue:a("./CSSValue").CSSValue};d.CSSValueExpression=function(a,b){this._token=a,this._idx=b},d.CSSValueExpression.prototype=new d.CSSValue,d.CSSValueExpression.prototype.constructor=d.CSSValueExpression,d.CSSValueExpression.prototype.parse=function(){for(var a,b=this._token,c=this._idx,d="",e="",f="",g=[];;++c){if(d=b.charAt(c),""==d){f="css expression error: unfinished expression!";break}switch(d){case"(":g.push(d),e+=d;break;case")":g.pop(d),e+=d;break;case"/":(a=this._parseJSComment(b,c))?a.error?f="css expression error: unfinished comment in expression!":c=a.idx:(a=this._parseJSRexExp(b,c))?(c=a.idx,e+=a.text):e+=d;break;case"'":case'"':a=this._parseJSString(b,c,d),a?(c=a.idx,e+=a.text):e+=d;break;default:e+=d}if(f)break;if(0==g.length)break}var h;return h=f?{error:f}:{idx:c,expression:e}},d.CSSValueExpression.prototype._parseJSComment=function(a,b){var c,d=a.charAt(b+1);if("/"==d||"*"==d){var e,f,g=b;return"/"==d?f="\n":"*"==d&&(f="*/"),e=a.indexOf(f,g+1+1),-1!==e?(e=e+f.length-1,c=a.substring(b,e+1),{idx:e,text:c}):(error="css expression error: unfinished comment in expression!",{error:error})}return!1},d.CSSValueExpression.prototype._parseJSString=function(a,b,c){var d,e=this._findMatchedIdx(a,b,c);return-1===e?!1:(d=a.substring(b,e+c.length),{idx:e,text:d})},d.CSSValueExpression.prototype._parseJSRexExp=function(a,b){var c=a.substring(0,b).replace(/\s+$/,""),d=[/^$/,/\($/,/\[$/,/\!$/,/\+$/,/\-$/,/\*$/,/\/\s+/,/\%$/,/\=$/,/\>$/,/\<$/,/\&$/,/\|$/,/\^$/,/\~$/,/\?$/,/\,$/,/delete$/,/in$/,/instanceof$/,/new$/,/typeof$/,/void$/],e=d.some(function(a){return a.test(c)});if(e){var f="/";return this._parseJSString(a,b,f)}return!1},d.CSSValueExpression.prototype._findMatchedIdx=function(a,b,c){for(var d,e=b,f=-1;;){if(d=a.indexOf(c,e+1),-1===d){d=f;break}var g=a.substring(b+1,d),h=g.match(/\\+$/);if(!h||h[0]%2==0)break;e=d}var i=a.indexOf("\n",b+1);return d>i&&(d=f),d},c.CSSValueExpression=d.CSSValueExpression},{"./CSSValue":20}],22:[function(a,b,c){var d={};d.MatcherList=function(){this.length=0},d.MatcherList.prototype={constructor:d.MatcherList,get matcherText(){return Array.prototype.join.call(this,", ")},set matcherText(a){for(var b=a.split(","),c=this.length=b.length,d=0;c>d;d++)this[d]=b[d].trim()},appendMatcher:function(a){-1===Array.prototype.indexOf.call(this,a)&&(this[this.length]=a,this.length++)},deleteMatcher:function(a){var b=Array.prototype.indexOf.call(this,a);-1!==b&&Array.prototype.splice.call(this,b,1)}},c.MatcherList=d.MatcherList},{}],23:[function(a,b,c){var d={};d.MediaList=function(){this.length=0},d.MediaList.prototype={constructor:d.MediaList,get mediaText(){return Array.prototype.join.call(this,", ")},set mediaText(a){for(var b=a.split(","),c=this.length=b.length,d=0;c>d;d++)this[d]=b[d].trim()},appendMedium:function(a){-1===Array.prototype.indexOf.call(this,a)&&(this[this.length]=a,this.length++)},deleteMedium:function(a){var b=Array.prototype.indexOf.call(this,a);-1!==b&&Array.prototype.splice.call(this,b,1)}},c.MediaList=d.MediaList},{}],24:[function(a,b,c){var d={};d.StyleSheet=function(){this.parentStyleSheet=null},c.StyleSheet=d.StyleSheet},{}],25:[function(a,b,c){var d={CSSStyleSheet:a("./CSSStyleSheet").CSSStyleSheet,CSSStyleRule:a("./CSSStyleRule").CSSStyleRule,CSSMediaRule:a("./CSSMediaRule").CSSMediaRule,CSSStyleDeclaration:a("./CSSStyleDeclaration").CSSStyleDeclaration,CSSKeyframeRule:a("./CSSKeyframeRule").CSSKeyframeRule,CSSKeyframesRule:a("./CSSKeyframesRule").CSSKeyframesRule};d.clone=function e(a){var b=new d.CSSStyleSheet,c=a.cssRules;if(!c)return b;for(var f={1:d.CSSStyleRule,4:d.CSSMediaRule,8:d.CSSKeyframesRule,9:d.CSSKeyframeRule},g=0,h=c.length;h>g;g++){var i=c[g],j=b.cssRules[g]=new f[i.type],k=i.stylLine truncated
},e=function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")},f=function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},g=function(a){var b=a.value;return" "+a.name+'="'+e(b)+'"'},h=function(a){var b=a.tagName;return"http://www.w3.org/1999/xhtml"===a.namespaceURI&&(b=b.toLowerCase()),b},i=function(a){var b=Array.prototype.map.call(a.attributes||a.attrs,function(a){return a.name}).indexOf("xmlns")>=0;return b||a.parentNode&&a.namespaceURI===a.parentNode.namespaceURI&&"html"!==h(a)?"":' xmlns="'+a.namespaceURI+'"'},j=function(a){return Array.prototype.map.call(a.childNodes,function(a){return o(a)}).join("")},k=function(a){var b="<"+h(a);return b+=i(a),Array.prototype.forEach.call(a.attributes||a.attrs,function(a){b+=g(a)}),a.childNodes.length>0?(b+=">",b+=j(a),b+="</"+h(a)+">"):b+="/>",b},l=function(a){var b=a.nodeValue||a.value||"";return f(b)},m=function(a){return"<!--"+a.data.replace(/-/g,"&#45;")+"-->"},n=function(a){return"<![CDATA["+a.nodeValue+"]]>"},o=function(a){return"#document"===a.nodeName||"#document-fragment"===a.nodeName?j(a):a.tagName?k(a):"#text"===a.nodeName?l(a):"#comment"===a.nodeName?m(a):"#cdata-section"===a.nodeName?n(a):void 0};c.serializeToString=function(a){return d(o(a))}},{}]},{},[1])(1)});
+1369
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function s(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}function u(){return(u=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}function c(t){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function i(t,e,n){return(i=d()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);o=new(Function.bind.apply(t,o));return n&&l(o,n.prototype),o}).apply(null,arguments)}function p(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function f(t,e,n){return(f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=c(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function m(t){return t.charAt(0).toUpperCase()+t.slice(1)}function h(e){return Object.keys(e).map(function(t){return e[t]})}function g(t){return Array.prototype.slice.call(t)}function v(t,e){e='"'.concat(t,'" is deprecated and will be removed in the next major release. Please use "').concat(e,'" instead.'),-1===Y.indexOf(e)&&(Y.push(e),W(e))}function b(t){return t&&"function"==typeof t.toPromise}function y(t){return b(t)?t.toPromise():Promise.resolve(t)}function w(t){return t&&Promise.resolve(t)===t}function C(t){return t instanceof Element||"object"===r(t=t)&&t.jquery}function k(){return document.body.querySelector(".".concat($.container))}function e(t){var e=k();return e?e.querySelector(t):null}function t(t){return e(".".concat(t))}function A(){return t($.popup)}function x(){return t($.icon)}function B(){return t($.title)}function P(){return t($.content)}function E(){return t($["html-container"])}function O(){return t($.image)}function n(){return t($["progress-steps"])}function S(){return t($["validation-message"])}function T(){return e(".".concat($.actions," .").concat($.confirm))}function L(){return e(".".concat($.actions," .").concat($.deny))}function D(){return e(".".concat($.loader))}function q(){return e(".".concat($.actions," .").concat($.cancel))}function j(){return t($.actions)}function M(){return t($.header)}function I(){return t($.footer)}function H(){return t($["timer-progress-bar"])}function V(){return t($.close)}function R(){var t=g(A().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(t,e){return t=parseInt(t.getAttribute("tabindex")),(e=parseInt(e.getAttribute("tabindex")))<t?1:t<e?-1:0}),e=g(A().querySelectorAll('\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex="0"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n')).filter(function(t){return"-1"!==t.getAttribute("tabindex")});return function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(t.concat(e)).filter(function(t){return wt(t)})}function N(){return!G()&&!document.body.classList.contains($["no-backdrop"])}function U(e,t){e.textContent="",t&&(t=(new DOMParser).parseFromString(t,"text/html"),g(t.querySelector("head").childNodes).forEach(function(t){e.appendChild(t)}),g(t.querySelector("body").childNodes).forEach(function(t){e.appendChild(t)}))}function _(t,e){if(e){for(var n=e.split(/\s+/),o=0;o<n.length;o++)if(!t.classList.contains(n[o]))return;return 1}}function F(t,e,n){var o,i;if(i=e,g((o=t).classList).forEach(function(t){-1===h($).indexOf(t)&&-1===h(X).indexOf(t)&&-1===h(i.showClass).indexOf(t)&&o.classList.remove(t)}),e.customClass&&e.customClass[n]){if("string"!=typeof e.customClass[n]&&!e.customClass[n].forEach)return W("Invalid type of customClass.".concat(n,'! ExpeLine truncated
+96
View File
@@ -0,0 +1,96 @@
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).turf={})}(this,(function(t){"use strict";var e=6371008.8,n={centimeters:637100880,centimetres:637100880,degrees:57.22891354143274,feet:20902260.511392,inches:39.37*e,kilometers:6371.0088,kilometres:6371.0088,meters:e,metres:e,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:e/1852,radians:1,yards:5825721.287490856},r={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:.001,kilometres:.001,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/e,yards:1/1.0936},i={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046};function o(t,e,n){void 0===n&&(n={});var r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function s(t,e,n){switch(t){case"Point":return a(e).geometry;case"LineString":return h(e).geometry;case"Polygon":return l(e).geometry;case"MultiPoint":return d(e).geometry;case"MultiLineString":return g(e).geometry;case"MultiPolygon":return y(e).geometry;default:throw new Error(t+" is invalid")}}function a(t,e,n){if(void 0===n&&(n={}),!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!C(t[0])||!C(t[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:t},e,n)}function u(t,e,n){return void 0===n&&(n={}),f(t.map((function(t){return a(t,e)})),n)}function l(t,e,n){void 0===n&&(n={});for(var r=0,i=t;r<i.length;r++){var s=i[r];if(s.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var a=0;a<s[s.length-1].length;a++)if(s[s.length-1][a]!==s[0][a])throw new Error("First and last Position are not equivalent.")}return o({type:"Polygon",coordinates:t},e,n)}function c(t,e,n){return void 0===n&&(n={}),f(t.map((function(t){return l(t,e)})),n)}function h(t,e,n){if(void 0===n&&(n={}),t.length<2)throw new Error("coordinates must be an array of two or more positions");return o({type:"LineString",coordinates:t},e,n)}function p(t,e,n){return void 0===n&&(n={}),f(t.map((function(t){return h(t,e)})),n)}function f(t,e){void 0===e&&(e={});var n={type:"FeatureCollection"};return e.id&&(n.id=e.id),e.bbox&&(n.bbox=e.bbox),n.features=t,n}function g(t,e,n){return void 0===n&&(n={}),o({type:"MultiLineString",coordinates:t},e,n)}function d(t,e,n){return void 0===n&&(n={}),o({type:"MultiPoint",coordinates:t},e,n)}function y(t,e,n){return void 0===n&&(n={}),o({type:"MultiPolygon",coordinates:t},e,n)}function v(t,e,n){return void 0===n&&(n={}),o({type:"GeometryCollection",geometries:t},e,n)}function _(t,e){if(void 0===e&&(e=0),e&&!(e>=0))throw new Error("precision must be a positive number");var n=Math.pow(10,e||0);return Math.round(t*n)/n}function m(t,e){void 0===e&&(e="kilometers");var r=n[e];if(!r)throw new Error(e+" units is invalid");return t*r}function x(t,e){void 0===e&&(e="kilometers");var r=n[e];if(!r)throw new Error(e+" units is invalid");return t/r}function E(t,e){return w(x(t,e))}function b(t){var e=t%360;return e<0&&(e+=360),e}function w(t){return 180*(t%(2*Math.PI))/Math.PI}function I(t){return t%360*Math.PI/180}function N(t,e,n){if(void 0===e&&(e="kilometers"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("length must be a positive number");return m(x(t,e),n)}function S(t,e,n){if(void 0===e&&(e="meters"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("area must be a positive number");var r=i[e];if(!r)throw new Error("invalid original units");var o=i[n];if(!o)throw new Error("invalid final units");return t/r*o}function C(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function P(t){return!!t&&t.constructor===Object}function L(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach((function(t){if(!C(t))throw new Error("bbox must only contain numbers")}))}function M(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof t))throw new Error("id must be a number or a string")}var O=Object.freeze({__proto__:null,earthRadius:e,factors:n,unitsFactors:r,areaFactors:i,feature:o,geometry:s,point:a,points:u,polygon:l,polygons:c,lineString:h,lineStrings:p,featureCollection:f,multiLineString:g,multiPoint:d,multiPolygon:y,geometryCollection:v,round:_,radiansToLength:m,lengthToRadians:x,lengthToDegrees:E,bearingToAzimuth:b,radiansToDegrees:w,degreesToRadians:I,convertLength:N,convertArea:S,isNumber:C,isObjecLine truncated
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
var st=Object.getOwnPropertySymbols,at=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;function lt(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}var ct=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,r,i=lt(t),o=1;o<arguments.length;o++){for(var s in n=Object(arguments[o]))at.call(n,s)&&(i[s]=n[s]);if(st){r=st(n);for(var a=0;a<r.length;a++)ut.call(n,r[a])&&(i[r[a]]=n[r[a]])}}return i},ht={successCallback:null,verbose:!1},pt={};
/**
* @license GNU Affero General Public License.
* Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
* v. 1.2.0
* https://github.com/RaumZeit/MarchingSquares.js
*
* MarchingSquaresJS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MarchingSquaresJS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* As additional permission under GNU Affero General Public License version 3
* section 7, third-party projects (personal or commercial) may distribute,
* include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
* requirement that said third-party project for that reason alone becomes
* subject to any requirement of the GNU Affero General Public License version 3.
* Any modifications to MarchingSquaresJS, however, must be shared with the public
* and made available.
*
* In summary this:
* - allows you to use MarchingSquaresJS at no cost
* - allows you to use MarchingSquaresJS for both personal and commercial purposes
* - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
* license as long as this license notice is included
* - enables you to keep the source code of your program that uses MarchingSquaresJS
* undisclosed
* - forces you to share any modifications you have made to MarchingSquaresJS,
* e.g. bug-fixes
*
* You should have received a copy of the GNU Affero General Public License
* along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
*/function ft(t,e,n){n=n||{};for(var r=Object.keys(ht),i=0;i<r.length;i++){var o=r[i],s=n[o];s=null!=s?s:ht[o],pt[o]=s}pt.verbose&&console.log("MarchingSquaresJS-isoContours: computing isocontour for "+e);var a=function(t){var e=[],n=0,r=1e-7;return t.cells.forEach((function(i,o){i.forEach((function(i,s){if(void 0!==i&&(5!==(f=i).cval&&10!==f.cval)&&!dt(i)){var a=function(t,e,n){var r,i,o=t.length,s=[],a=[0,0,1,1,0,0,0,0,-1,0,1,1,-1,0,-1,0],u=[0,-1,0,0,1,1,1,1,0,-1,0,0,0,-1,0,0],l=["none","left","bottom","left","right","none","bottom","left","top","top","none","top","right","right","bottom","none"],c=["none","bottom","right","right","top","top","top","top","left","bottom","right","right","left","bottom","left","none"],h=t[e][n],p=h.cval,f=l[p],g=vt(h,f);s.push([n+g[0],e+g[1]]),f=c[p],g=vt(h,f),s.push([n+g[0],e+g[1]]),yt(h);var d=n+a[p],y=e+u[p],v=p;for(;d>=0&&y>=0&&y<o&&(d!=n||y!=e)&&void 0!==(h=t[y][d]);){if(0===(p=h.cval)||15===p)return{path:s,info:"mergeable"};f=c[p],r=a[p],i=u[p],5!==p&&10!==p||(5===p?h.flipped?-1===u[v]?(f="left",r=-1,i=0):(f="right",r=1,i=0):-1===a[v]&&(f="bottom",r=0,i=-1):10===p&&(h.flipped?-1===a[v]?(f="top",r=0,i=1):(f="bottom",r=0,i=-1):1===u[v]&&(f="left",r=-1,i=0))),g=vt(h,f),s.push([d+g[0],y+g[1]]),yt(h),d+=r,y+=i,v=p}return{path:s,info:"closed"}}(t.cells,o,s),u=!1;if("mergeable"===a.info)for(var l=a.path[a.path.length-1][0],c=a.path[a.path.length-1][1],h=n-1;h>=0;h--)if(Math.abs(e[h][0][0]-l)<=r&&Math.abs(e[h][0][1]-c)<=r){for(var p=a.path.length-2;p>=0;--p)e[h].unshift(a.path[p]);u=!0;break}u||(e[n++]=a.path)}var f}))})),e}(function(t,e){for(var n=t.length-1,r=t[0].length-1,i={rows:n,cols:r,cells:[]},o=0;o<n;++o){i.cells[o]=[];for(var s=0;s<r;++s){var a=0,u=t[o+1][s],l=t[o+1][s+1],c=t[o][s+1],h=t[o][s];if(!(isNaN(u)||isNaN(l)||isNaN(c)||isNaN(h))){a|=u>=e?8:0,a|=l>=e?4:0,a|=c>=e?2:0;var p,f,g,d,y=!1;if(5===(a|=h>=e?1:0)||10===a){var v=(u+l+c+h)/4;5===a&&v<e?(a=10,y=!0):10===a&&v<e&&(a=5,y=!0)}if(0!==a&&15!==a)p=f=g=d=.5,1===a?(g=1-gt(e,u,h),f=1-gt(e,c,h)):2===a?(f=gt(e,h,c),d=1-gt(e,l,c)):3===a?(g=1-gt(e,u,h),d=1-gt(e,l,c)):4===a?(p=gt(e,u,l),d=gt(e,c,l)):5===a?(p=gt(e,u,l),d=gt(e,c,l),f=1-gt(e,c,h),g=1-gt(e,u,h)):6===a?(f=gt(e,h,c),p=gt(e,u,l)):7===a?(g=1-gt(e,u,h),p=gt(e,u,l)):8===a?(g=gt(e,h,u),p=1-gt(e,l,u)):9===a?(f=1-gt(e,c,h),p=1-gt(e,l,u)):10===a?(p=1-gt(e,l,u),d=1-gt(e,l,c),f=gt(e,h,c),g=gt(e,h,u)):11===a?(p=1-gt(e,l,u),d=1-gt(e,l,c)):12===a?(g=gt(e,h,u),d=gt(e,c,l)):13===a?(f=1-gt(e,c,h),d=gt(e,c,l)):14===a?(g=gt(e,h,u),f=gt(e,h,c)):console.log("MarchingSquaresJS-isoContours: Illegal cval detected: "+a),i.cells[o][s]={cval:a,flipped:y,top:p,right:d,bottom:f,left:g}}}}return i}(t,e));return"function"==typeof pt.successCallback&&pt.successCallback(a),a}function gt(t,e,n){return(t-e)/(n-e)}function dt(t){return 0===t.cval||15===t.cval}function yt(t){dt(t)||5===t.cval||10===t.cval||(t.cval=15)}function vt(t,e){return"top"===e?[t.top,1]:"bottom"===e?[t.bottom,0]:"right"===e?[1,t.right]:"left"===e?[0,t.left]:void 0}function _t(t,e){if(!P(e=e||{}))throw new Error("options is invalid");var n=e.zProperty||"elevation",r=e.flip,i=e.flags;k(t,"Point","input must contain Points");for(var o=function(t,e){var n={};return X(t,(function(t){var e=T(t)[1];n[e]||(n[e]=[]),n[e].push(t)})),Object.keys(n).map((function(t){return n[t].sort((function(t,e){return T(t)[0]-T(e)[0]}))})).sort((function(t,n){return e?T(t[0])[1]-T(n[0])[1]:T(n[0])[1]-T(t[0])[1]}))}(t,r),s=[],a=0;a<o.length;a++){for(var u=o[a],l=[],c=0;c<u.length;c++){var h=u[c];h.properties[n]?l.push(h.properties[n]):l.push(0),!0===i&&(h.properties.matrixPosition=[a,c])}s.push(l)}return s}var mt=Et,xt=Et;function Et(t,e,n,r,i){bt(t,e,n||0,r||t.length-1,i||It)}function bt(t,e,n,r,i){for(;r>n;){if(r-n>600){var o=r-n+1,s=e-n+1,a=Math.log(o),u=.5*Math.exp(2*a/3),l=.5*Math.sqrt(a*u*(o-u)/o)*(s-o/2<0?-1:1);bt(t,e,Math.max(n,Math.floor(e-s*u/o+l)),Math.min(r,Math.floor(e+(o-s)*u/o+l)),i)}var c=t[e],h=n,p=r;for(wt(t,n,e),i(t[r],c)>0&&wt(t,n,r);h<p;){for(wt(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--}0===i(t[n],c)?wt(t,n,p):wt(t,++p,r),p<=e&&(n=p+1),e<=p&&(r=p-1)}}function wt(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function It(t,e){return t<e?-1:t>e?1:0}mt.default=xt;var Nt=Ct,St=Ct;function Ct(t,e){if(!(this instanceof Ct))return new Ct(t,e);this._maxEntries=Math.max(4,t||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),e&&this._initFormat(e),this.clear()}function Pt(t,e,n){if(!n)return e.indexOf(t);for(var r=0;r<e.length;r++)if(n(t,e[r]))return r;return-1}function Lt(t,e){Mt(t,0,t.children.length,e,t)}function Mt(t,e,n,r,i){i||(i=Gt(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var o,s=e;s<n;s++)o=t.children[s],Ot(i,t.leaf?r(o):o);return i}function Ot(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function Rt(t,e){return t.minX-e.minX}function Tt(t,e){return t.minY-e.minY}function At(t){return(t.maxX-t.minX)*(tLine truncated
/*!
* @license GNU Affero General Public License.
* Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
* v. 1.2.0
* https://github.com/RaumZeit/MarchingSquares.js
*
* MarchingSquaresJS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MarchingSquaresJS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* As additional permission under GNU Affero General Public License version 3
* section 7, third-party projects (personal or commercial) may distribute,
* include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
* requirement that said third-party project for that reason alone becomes
* subject to any requirement of the GNU Affero General Public License version 3.
* Any modifications to MarchingSquaresJS, however, must be shared with the public
* and made available.
*
* In summary this:
* - allows you to use MarchingSquaresJS at no cost
* - allows you to use MarchingSquaresJS for both personal and commercial purposes
* - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
* license as long as this license notice is included
* - enables you to keep the source code of your program that uses MarchingSquaresJS
* undisclosed
* - forces you to share any modifications you have made to MarchingSquaresJS,
* e.g. bug-fixes
*
* You should have received a copy of the GNU Affero General Public License
* along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
*/(t,r),s=[],a=0;a<o.length;a++){for(var u=o[a],l=[],c=0;c<u.length;c++){var h=u[c];h.properties[n]?l.push(h.properties[n]):l.push(0),!0===i&&(h.properties.matrixPosition=[a,c])}s.push(l)}return s}var Wi={successCallback:null,verbose:!1,polygons:!1},Ji={};function Zi(t,e,n,r){r=r||{};for(var i=Object.keys(Wi),o=0;o<i.length;o++){var s=i[o],a=r[s];a=null!=a?a:Wi[s],Ji[s]=a}Ji.verbose&&console.log("MarchingSquaresJS-isoBands: computing isobands for ["+e+":"+(e+n)+"]");var u,l=function(t,e,n){for(var r=t.length-1,i=t[0].length-1,o={rows:r,cols:i,cells:[]},s=e+Math.abs(n),a=0;a<r;++a){o.cells[a]=[];for(var u=0;u<i;++u){var l=0,c=t[a+1][u],h=t[a+1][u+1],p=t[a][u+1],f=t[a][u];if(!(isNaN(c)||isNaN(h)||isNaN(p)||isNaN(f))){l|=c<e?0:c>s?128:64,l|=h<e?0:h>s?32:16,l|=p<e?0:p>s?8:4;var g=+(l|=f<e?0:f>s?2:1),d=0;if(17===l||18===l||33===l||34===l||38===l||68===l||72===l||98===l||102===l||132===l||136===l||137===l||152===l||153===l){var y=(c+h+p+f)/4;d=y>s?2:y<e?0:1,34===l?1===d?l=35:0===d&&(l=136):136===l?1===d?(l=35,d=4):0===d&&(l=34):17===l?1===d?(l=155,d=4):0===d&&(l=153):68===l?1===d?(l=103,d=4):0===d&&(l=102):153===l?1===d&&(l=155):102===l?1===d&&(l=103):152===l?d<2&&(l=156,d=1):137===l?d<2&&(l=139,d=1):98===l?d<2&&(l=99,d=1):38===l?d<2&&(l=39,d=1):18===l?d>0?(l=156,d=4):l=152:33===l?d>0?(l=139,d=4):l=137:72===l?d>0?(l=99,d=4):l=98:132===l&&(d>0?(l=39,d=4):l=38)}if(0!=l&&170!=l){var v,_,m,x,E,b,w,I;v=_=m=x=E=b=w=I=.5;var N=[];1===l?(m=1-zo(e,p,f),I=1-zo(e,c,f),N.push(Do[l])):169===l?(m=zo(s,f,p),I=zo(s,f,c),N.push(Do[l])):4===l?(b=1-zo(e,h,p),x=zo(e,f,p),N.push(To[l])):166===l?(b=zo(s,p,h),x=1-zo(s,p,f),N.push(To[l])):16===l?(E=zo(e,p,h),_=zo(e,c,h),N.push(Ro[l])):154===l?(E=1-zo(s,h,p),_=1-zo(s,h,c),N.push(Ro[l])):64===l?(w=zo(e,f,c),v=1-zo(e,h,c),N.push(ko[l])):106===l?(w=1-zo(s,c,f),v=zo(s,c,h),N.push(ko[l])):168===l?(x=zo(s,f,p),m=zo(e,f,p),I=zo(e,f,c),w=zo(s,f,c),N.push(Ao[l]),N.push(Do[l])):2===l?(x=1-zo(e,p,f),m=1-zo(s,p,f),I=1-zo(s,c,f),w=1-zo(e,c,f),N.push(Ao[l]),N.push(Do[l])):162===l?(E=zo(s,p,h),b=zo(e,p,h),x=1-zo(e,p,f),m=1-zo(s,p,f),N.push(Ao[l]),N.push(Do[l])):8===l?(E=1-zo(e,h,p),b=1-zo(s,h,p),x=zo(s,f,p),m=zo(e,f,p),N.push(Ro[l]),N.push(To[l])):138===l?(E=1-zo(e,h,p),b=1-zo(s,h,p),v=1-zo(s,h,c),_=1-zo(e,h,c),N.push(Ro[l]),N.push(To[l])):32===l?(E=zo(s,p,h),b=zo(e,p,h),v=zo(e,c,h),_=zo(s,c,h),N.push(Ro[l]),N.push(To[l])):42===l?(I=1-zo(s,c,f),w=1-zo(e,c,f),v=zo(e,c,h),_=zo(s,c,h),N.push(Fo[l]),N.push(ko[l])):128===l&&(I=zo(e,f,c),w=zo(s,f,c),v=1-zo(s,h,c),_=1-zo(e,h,c),N.push(Fo[l]),N.push(ko[l])),5===l?(b=1-zo(e,h,p),I=1-zo(e,c,f),N.push(To[l])):165===l?(b=zo(s,p,h),I=zo(s,f,c),N.push(To[l])):20===l?(x=zo(e,f,p),_=zo(e,c,h),N.push(Ao[l])):150===l?(x=1-zo(s,p,f),_=1-zo(s,h,c),N.push(Ao[l])):80===l?(E=zo(e,p,h),w=zo(e,f,c),N.push(Ro[l])):90===l?(E=1-zo(s,h,p),w=1-zo(s,c,f),N.push(Ro[l])):65===l?(m=1-zo(e,p,f),v=1-zo(e,h,c),N.push(Do[l])):105===l?(m=zo(s,f,p),v=zo(s,c,h),N.push(Do[l])):160===l?(E=zo(s,p,h),b=zo(e,p,h),I=zo(e,f,c),w=zo(s,f,c),N.push(Ro[l]),N.push(To[l])):10===l?(E=1-zo(e,h,p),b=1-zo(s,h,p),I=1-zo(s,c,f),w=1-zo(e,c,f),N.push(Ro[l]),N.push(To[l])):130===l?(x=1-zo(e,p,f),m=1-zo(s,p,f),v=1-zo(s,h,c),_=1-zo(e,h,c),N.push(Ao[l]),N.push(Do[l])):40===l?(x=zo(s,f,p),m=zo(e,f,p),v=zo(e,c,h),_=zo(s,c,h),N.push(Ao[l]),N.push(Do[l])):101===l?(b=zo(s,p,h),v=zo(s,c,h),N.push(To[l])):69===l?(b=1-zo(e,h,p),v=1-zo(e,h,c),N.push(To[l])):149===l?(I=zo(s,f,c),_=1-zo(s,h,c),N.push(Fo[l])):21===l?(I=1-zo(e,c,f),_=zo(e,c,h),N.push(Fo[l])):86===l?(x=1-zo(s,p,f),w=1-zo(s,c,f),N.push(Ao[l])):84===l?(x=zo(e,f,p),w=zo(e,f,c),N.push(Ao[l])):89===l?(E=1-zo(s,h,p),m=zo(s,f,p),N.push(Do[l])):81===l?(E=zo(e,p,h),m=1-zo(e,p,f),N.push(Do[l])):96===l?(E=zo(s,p,h),b=zo(e,p,h),w=zo(e,f,c),v=zo(s,c,h),N.push(Ro[l]),N.push(To[l])):74===l?(E=1-zo(e,h,p),b=1-zo(s,h,p),w=1-zo(s,c,f),v=1-zo(e,h,c),N.push(Ro[l]),N.push(To[l])):24===l?(E=1-zo(s,h,p),x=zo(s,f,p),m=zo(e,f,p),_=zo(e,c,h),N.push(Ro[l]),N.push(Do[l])):146===l?(E=zo(e,p,h),x=1-zo(e,p,f),m=1-zo(s,p,f),_=1-zo(s,h,c),N.push(Ro[l]),N.push(Do[l])):6===l?(b=1-zo(e,h,p),x=1-zo(s,p,f),I=1-zo(s,c,f),w=1-zo(e,c,f),N.push(To[l]),N.push(Ao[l])):164===l?(b=zo(s,p,h),x=zo(e,f,p),I=zo(e,f,c),w=zo(s,f,c),N.push(To[l]),N.push(Ao[l])):129===l?(m=1-zo(e,p,f),I=zo(s,f,c),v=1-zo(s,h,c),_=1-zo(e,h,c),N.push(Do[l]),N.push(Fo[l])):41===l?(m=zo(s,f,p),I=1-zo(e,c,f),v=zo(e,c,h),_=zo(s,c,h),N.push(Do[l]),N.push(Fo[l])):66===l?(x=1-zo(e,p,f),m=1-zo(s,p,f),w=1-zo(s,c,f),v=1-zo(e,h,c),N.push(Ao[l]),N.push(Do[l])):104===l?(x=zo(s,f,p),m=zo(e,f,p),w=zo(e,f,c),v=zo(s,c,h),N.push(Do[l]),N.push(Go[l])):144===l?(E=zo(e,p,h),I=zo(e,f,c),w=zo(s,f,c),_=1-zo(s,h,c),N.push(Ro[l]),N.push(ko[l])):26===l?(E=1-zo(s,h,p),I=1-zo(s,c,f),w=1-zo(e,c,f),_=zo(e,c,h),N.push(Ro[l]),N.push(ko[l])):36===l?(b=zo(s,p,h),x=zo(e,f,p),v=zo(e,c,h),_=zo(s,c,h),N.push(To[l]),N.push(Ao[l])):134===l?(b=1-zo(e,h,p),x=1-zo(s,p,f),v=1-zo(s,h,c),_=1-zo(e,h,c),N.push(To[l]),N.push(Ao[l])):9===l?(E=1-zo(e,h,p),b=1-zo(s,h,p),m=zo(s,f,p),Line truncated
/**
* splaytree v3.1.0
* Fast Splay tree for Node and browser
*
* @author Alexander Milevski <info@w8r.name>
* @license MIT
* @preserve
*/function cu(t,e){return t>e?1:t<e?-1:0}function hu(t,e,n){for(var r=new lu(null,null),i=r,o=r;;){var s=n(t,e.key);if(s<0){if(null===e.left)break;if(n(t,e.left.key)<0){var a=e.left;if(e.left=a.right,a.right=e,null===(e=a).left)break}o.left=e,o=e,e=e.left}else{if(!(s>0))break;if(null===e.right)break;if(n(t,e.right.key)>0){a=e.right;if(e.right=a.left,a.left=e,null===(e=a).right)break}i.right=e,i=e,e=e.right}}return i.right=e.left,o.left=e.right,e.left=r.right,e.right=r.left,e}function pu(t,e,n,r){var i=new lu(t,e);if(null===n)return i.left=i.right=null,i;var o=r(t,(n=hu(t,n,r)).key);return o<0?(i.left=n.left,i.right=n,n.left=null):o>=0&&(i.right=n.right,i.left=n,n.right=null),i}function fu(t,e,n){var r=null,i=null;if(e){var o=n((e=hu(t,e,n)).key,t);0===o?(r=e.left,i=e.right):o<0?(i=e.right,e.right=null,r=e):(r=e.left,e.left=null,i=e)}return{left:r,right:i}}function gu(t,e,n,r,i){if(t){r(e+(n?"└── ":"├── ")+i(t)+"\n");var o=e+(n?" ":"│ ");t.left&&gu(t.left,o,!1,r,i),t.right&&gu(t.right,o,!0,r,i)}}var du=function(){function t(t){void 0===t&&(t=cu),this._root=null,this._size=0,this._comparator=t}return t.prototype.insert=function(t,e){return this._size++,this._root=pu(t,e,this._root,this._comparator)},t.prototype.add=function(t,e){var n=new lu(t,e);null===this._root&&(n.left=n.right=null,this._size++,this._root=n);var r=this._comparator,i=hu(t,this._root,r),o=r(t,i.key);return 0===o?this._root=i:(o<0?(n.left=i.left,n.right=i,i.left=null):o>0&&(n.right=i.right,n.left=i,i.right=null),this._size++,this._root=n),this._root},t.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator)},t.prototype._remove=function(t,e,n){var r;return null===e?null:0===n(t,(e=hu(t,e,n)).key)?(null===e.left?r=e.right:(r=hu(t,e.left,n)).right=e.right,this._size--,r):e},t.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=hu(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data}}return null},t.prototype.findStatic=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return e;e=r<0?e.left:e.right}return null},t.prototype.find=function(t){return this._root&&(this._root=hu(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root},t.prototype.contains=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return!0;e=r<0?e.left:e.right}return!1},t.prototype.forEach=function(t,e){for(var n=this._root,r=[],i=!1;!i;)null!==n?(r.push(n),n=n.left):0!==r.length?(n=r.pop(),t.call(e,n),n=n.right):i=!0;return this},t.prototype.range=function(t,e,n,r){for(var i=[],o=this._comparator,s=this._root;0!==i.length||s;)if(s)i.push(s),s=s.left;else{if(o((s=i.pop()).key,e)>0)break;if(o(s.key,t)>=0&&n.call(r,s))return this;s=s.right}return this},t.prototype.keys=function(){var t=[];return this.forEach((function(e){var n=e.key;return t.push(n)})),t},t.prototype.values=function(){var t=[];return this.forEach((function(e){var n=e.data;return t.push(n)})),t},t.prototype.min=function(){return this._root?this.minNode(this._root).key:null},t.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},t.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t},t.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t},t.prototype.at=function(t){for(var e=this._root,n=!1,r=0,i=[];!n;)if(e)i.push(e),e=e.left;else if(i.length>0){if(e=i.pop(),r===t)return e;r++,e=e.right}else n=!0;return null},t.prototype.next=function(t){var e=this._root,n=null;if(t.right){for(n=t.right;n.left;)n=n.left;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?(n=e,e=e.left):e=e.right}return n},t.prototype.prev=function(t){var e=this._root,n=null;if(null!==t.left){for(n=t.left;n.right;)n=n.right;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?e=e.left:(n=e,e=e.right)}return n},t.prototype.clear=function(){return this._root=null,this._size=0,this},t.prototype.toList=function(){return function(t){var e=t,n=[],r=!1,i=new lu(null,null),o=i;for(;!r;)e?(n.push(e),e=e.left):n.length>0?e=(e=o=o.next=n.pop()).right:r=!0;return o.next=null,i.next}(this._root)},t.prototype.load=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=!1);var r=t.length,i=this._comparator;if(n&&_u(t,e,0,r-1,i),null===this._root)this._root=yu(t,e,0,r),this._size=r;else{var o=function(t,e,n){var r=new lu(null,null),i=r,o=t,s=e;for(;null!==o&&null!==s;)n(o.key,s.key)<0?(i.next=o,o=o.next):(i.next=s,s=s.next),i=i.next;null!==o?i.next=o:null!==s&&(i.next=s);return r.next}(this.toList(),function(t,e){for(var n=new lu(null,null),r=n,i=0;i<t.length;i++)r=r.next=new lu(t[i],e[i]);return r.next=null,n.next}(t,e),i);r=this._size+r,this._root=vu({head:o},0,r)}return this},t.prototype.isEmpty=function(){return null===this._root},Object.defineProperty(t.prototypLine truncated
/**
* @license get-closest https://github.com/cosmosio/get-closest
*
* The MIT License (MIT)
*
* Copyright (c) 2014-2017 Olivier Scherrer <pode.fr@gmail.com>
*/function ay(t,e){return function(t,e,n){var r,i;if(!Array.isArray(e))throw new Error("Get closest expects an array as second argument");return e.forEach((function(e,o){var s=n(e,t);s>=0&&(void 0===i||s<i)&&(i=s,r=o)})),r}(t,e,(function(t,e){return t-e}))}function uy(t,e){return Mr(h(H(t)),h(H(e))).features.length>0}function ly(t,e,n){void 0===n&&(n={});var r=JSON.stringify(n.properties||{}),i=t[0],o=t[1],s=t[2],a=t[3],u=(o+a)/2,l=(i+s)/2,c=2*e/me([i,u],[s,u],n)*(s-i),h=2*e/me([l,o],[l,a],n)*(a-o),p=c/2,g=2*p,d=Math.sqrt(3)/2*h,y=s-i,v=a-o,_=3/4*g,m=d,x=(y-g)/(g-p/2),E=Math.floor(x),b=(E*_-p/2-y)/2-p/2+_/2,w=Math.floor((v-d)/d),I=(v-w*d)/2,N=w*d-v>d/2;N&&(I-=d/4);for(var S=[],C=[],P=0;P<6;P++){var L=2*Math.PI/6*P;S.push(Math.cos(L)),C.push(Math.sin(L))}for(var M=[],O=0;O<=E;O++)for(var R=0;R<=w;R++){var T=O%2==1;if((0!==R||!T)&&(0!==R||!N)){var A=O*_+i-b,D=R*m+o+I;if(T&&(D-=d/2),!0===n.triangles)hy([A,D],c/2,h/2,JSON.parse(r),S,C).forEach((function(t){n.mask?sy(n.mask,t)&&M.push(t):M.push(t)}));else{var F=cy([A,D],c/2,h/2,JSON.parse(r),S,C);n.mask?sy(n.mask,F)&&M.push(F):M.push(F)}}}return f(M)}function cy(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=t[0]+e*i[a],c=t[1]+n*o[a];s.push([u,c])}return s.push(s[0].slice()),l([s],r)}function hy(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=[];u.push(t),u.push([t[0]+e*i[a],t[1]+n*o[a]]),u.push([t[0]+e*i[(a+1)%6],t[1]+n*o[(a+1)%6]]),u.push(t),s.push(l([u],r))}return s}function py(t){if(t.features.length<=1)return t;var e=function(t){var e=Nt(),n=[];return Z(t,(function(t,e){var r=ot(t);n.push({minX:r[0],minY:r[1],maxX:r[2],maxY:r[3],geojson:t,index:e})})),e.load(n),e}(t),n=[],r={};return Z(t,(function(t,i){if(r[i])return!0;for(e.remove({index:i},fy),r[i]=!0;;){var o=ot(t),s=e.search({minX:o[0],minY:o[1],maxX:o[2],maxY:o[3]});if(s.length>0)for(var a=s.map((function(t){return r[t.index]=!0,e.remove({index:t.index},fy),t.geojson})),u=0,l=a.length;u<l;u++)t=oy(t,a[u]);if(0===s.length)break}n.push(t)})),f(n)}function fy(t,e){return t.index===e.index}function gy(t,e,n){return void 0===n&&(n={}),function(t,e,n,r){void 0===r&&(r={});for(var i=[],o=t[0],s=t[1],a=t[2],u=t[3],c=e/me([o,s],[a,s],r)*(a-o),h=n/me([o,s],[o,u],r)*(u-s),p=a-o,g=u-s,d=Math.floor(p/c),y=Math.floor(g/h),v=(g-y*h)/2,_=o+(p-d*c)/2,m=0;m<d;m++){for(var x=s+v,E=0;E<y;E++){var b=l([[[_,x],[_,x+h],[_+c,x+h],[_+c,x],[_,x]]],r.properties);r.mask?Ss(r.mask,b)&&i.push(b):i.push(b),x+=h}_+=c}return f(i)}(t,e,e,n)}function dy(t,e,n){void 0===n&&(n={});for(var r=[],i=e/me([t[0],t[1]],[t[2],t[1]],n)*(t[2]-t[0]),o=e/me([t[0],t[1]],[t[0],t[3]],n)*(t[3]-t[1]),s=0,a=t[0];a<=t[2];){for(var u=0,c=t[1];c<=t[3];){var h=null,p=null;s%2==0&&u%2==0?(h=l([[[a,c],[a,c+o],[a+i,c],[a,c]]],n.properties),p=l([[[a,c+o],[a+i,c+o],[a+i,c],[a,c+o]]],n.properties)):s%2==0&&u%2==1?(h=l([[[a,c],[a+i,c+o],[a+i,c],[a,c]]],n.properties),p=l([[[a,c],[a,c+o],[a+i,c+o],[a,c]]],n.properties)):u%2==0&&s%2==1?(h=l([[[a,c],[a,c+o],[a+i,c+o],[a,c]]],n.properties),p=l([[[a,c],[a+i,c+o],[a+i,c],[a,c]]],n.properties)):u%2==1&&s%2==1&&(h=l([[[a,c],[a,c+o],[a+i,c],[a,c]]],n.properties),p=l([[[a,c+o],[a+i,c+o],[a+i,c],[a,c+o]]],n.properties)),n.mask?(sy(n.mask,h)&&r.push(h),sy(n.mask,p)&&r.push(p)):(r.push(h),r.push(p)),c+=o,u++}s++,a+=i}return f(r)}$d.invert=function(t){return function(e,n){var r=td(e*e+n*n),i=t(r),o=$g(i),s=Qg(i);return[Kg(e*o,r*s),nd(r&&n*o/r)]}}((function(t){return t})),t.along=function(t,e,n){void 0===n&&(n={});for(var r=G(t).coordinates,i=0,o=0;o<r.length&&!(e>=i&&o===r.length-1);o++){if(i>=e){var s=e-i;if(s){var u=_n(r[o],r[o-1])-180;return yn(r[o],s,u,n)}return a(r[o])}i+=me(r[o],r[o+1],n)}return a(r[r.length-1])},t.angle=function(t,e,n,r){if(void 0===r&&(r={}),!P(r))throw new Error("options is invalid");if(!t)throw new Error("startPoint is required");if(!e)throw new Error("midPoint is required");if(!n)throw new Error("endPoint is required");var i=t,o=e,s=n,a=b(!0!==r.mercator?_n(i,o):ki(i,o)),u=b(!0!==r.mercator?_n(s,o):ki(s,o)),l=Math.abs(a-u);return!0===r.explementary?360-l:l},t.applyFilter=ou,t.area=zr,t.areaFactors=i,t.bbox=ot,t.bboxClip=function(t,e){var n=G(t),r=n.type,i="Feature"===t.type?t.properties:{},o=n.coordinates;switch(r){case"LineString":case"MultiLineString":var s=[];return"LineString"===r&&(o=[o]),o.forEach((function(t){!function(t,e,n){var r,i,o,s,a,u=t.length,l=Li(t[0],e),c=[];for(n||(n=[]),r=1;r<u;r++){for(i=t[r-1],s=a=Li(o=t[r],e);;){if(!(l|s)){c.push(i),s!==a?(c.push(o),r<u-1&&(n.push(c),c=[])):r===u-1&&c.push(o);break}if(l&s)break;l?l=Li(i=Pi(i,o,l,e),e):s=Li(o=Pi(i,o,s,e),e)}l=a}c.length&&n.push(c)}(t,e,s)})),1===s.length?h(s[0],i):g(s,i);case"Polygon":return l(Mi(o,e),i);case"MultiPolygon":return y(o.map((function(t){return Mi(t,e)})),i);default:throw new Error("geometry "+r+" not supported")}},t.bboxPolygon=fn,t.bearing=_n,t.bearingToAngle=b,t.bearingToAzimuth=b,t.bezier=pn,t.bezierSpline=pn,t.booleanClockwise=Ui,t.booleanContains=function(t,e){var n=G(t),r=G(e),i=n.type,o=r.type,s=n.coordinates,a=Line truncated
+115 -167
View File
@@ -2,113 +2,64 @@
<html>
<head>
<meta charset="utf-8">
<title>app</title>
<title>Avion-poème</title>
<link rel="icon" href="src/img/icon.png">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<!-- CSS -->
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<!-- leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""/>
<!-- SWAL -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/10.15.5/sweetalert2.css" integrity="sha512-WfDqlW1EF2lMNxzzSID+Tp1TTEHeZ2DK+IHFzbbCHqLJGf2RyIjNFgQCRNuIa8tzHka19sUJYBO+qyvX8YBYEg==" crossorigin="anonymous" />
<!-- quill -->
<link href="https://cdn.quilljs.com/1.1.9/quill.snow.css" rel="stylesheet">
<!-- font awesome -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css">
<!-- leaflet locate user -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-locatecontrol/0.73.0/L.Control.Locate.min.css" integrity="sha512-61KpOy3DnpOq3pZlp54eyUdvq9ub53e2ETbksuRlQCMNiAkqyB2Iz8a6ggg61e9zlvPImPz+7A0tgvNGaoVLZg==" crossorigin="anonymous" />
<!-- leaflet fullscreen -->
<link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css' rel='stylesheet' />
<!-- leaflet pulse -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet-pulse-icon@0.1.0/src/L.Icon.Pulse.css">
<!-- google fonts -->
<!-- CSS -->
<link rel="stylesheet" href="dist/bootstrap/bootstrap.min.css">
<link rel="stylesheet" href="dist/leaflet/leaflet.css"/>
<link rel="stylesheet" href="dist/quill/quill.snow.css">
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css">
<link rel="stylesheet" href="dist/leaflet-locatecontrol/L.Control.Locate.min.css"/>
<link rel='stylesheet' href="dist/leaflet-fullscreen/leaflet.fullscreen.css"/>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=PT+Mono&family=Special+Elite&display=swap" rel="stylesheet">
<!-- App -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=PT+Mono&family=Special+Elite&display=swap">
<link href="src/app.css" rel="stylesheet">
<!-- JS -->
<!-- jquery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<!-- leaflet -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
crossorigin=""></script>
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> -->
<!-- bootstrap -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<!-- typehead -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.js"></script>
<!-- turf -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Turf.js/6.3.0/turf.min.js" integrity="sha512-UNb2hkE/KkMe2ZBw0CWxpenoO0uudaEkJ0PT4cfGxCdL3sRSwaW7XyveNc9ZO0PQEq28FduAv8VvHaAjPbboBw==" crossorigin="anonymous"></script>
<!-- moment -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js" integrity="sha512-LGXaggshOkD/at6PFNcp2V2unf9LzFq6LE+sChH7ceMTDP0g2kn6Vxwgg7wkPP7AAtX+lmPqPdxB47A0Nz0cMQ==" crossorigin="anonymous"></script>
<!-- moment TZ -->
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js" crossorigin="anonymous"></script>
<!-- swal -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/10.15.5/sweetalert2.min.js" integrity="sha512-+uGHdpCaEymD6EqvUR4H/PBuwqm3JTZmRh3gT0Lq52VGDAlywdXPBEiLiZUg6D1ViLonuNSUFdbL2tH9djAP8g==" crossorigin="anonymous"></script>
<!-- quill -->
<script src="https://cdn.quilljs.com/1.1.9/quill.js"></script>
<!-- pixy -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.0.0/browser/pixi.min.js" integrity="sha512-shL+cXMf3XmoQtrHnCoyS7X/H/k5qKir6pQWj7Q12Lqj9SfuU6i13agrBxbKzDBg7qIEm6C17LVoFPzFSgyQ7Q==" crossorigin="anonymous"></script>
<!-- leaflet pixy overlay -->
<script src="https://cdn.jsdelivr.net/npm/leaflet-pixi-overlay@1.8.1/L.PixiOverlay.min.js"></script>
<!-- leaflet terminator -->
<script src="https://unpkg.com/@joergdietrich/leaflet.terminator"></script>
<!-- rasterize html -->
<script src="http://cburgmer.github.io/rasterizeHTML.js/rasterizeHTML.allinone.js"></script>
<!-- leaflet locate user -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-locatecontrol/0.73.0/L.Control.Locate.min.js" integrity="sha512-taGzWgtN8FsSonl7SSrfPQBvTm/omZEf9p0s64IomW39xQZx8bSmP+aUyzeqig61ojVlMUwW5Moyo87HNQxliw==" crossorigin="anonymous"></script>
<!-- leaflet fullscreen -->
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js'></script>
<!-- leaflet pulse -->
<script src="https://cdn.jsdelivr.net/npm/leaflet-pulse-icon@0.1.0/src/L.Icon.Pulse.js"></script>
<!-- JS -->
<script src="dist/jquery/jquery-3.6.0.min.js"></script>
<script src="dist/leaflet/leaflet.js"></script>
<script src="dist/leaflet/touch-fix.js"></script>
<script src="dist/popper/popper.min.js"></script>
<script src="dist/bootstrap/bootstrap.min.js"></script>
<script src="dist/bootstrap/bootstrap3-typeahead.js"></script>
<script src="dist/turf/turf.min.js"></script>
<script src="dist/moment/moment-with-locales.min.js"></script>
<script src="dist/moment/moment-timezone-with-data.js"></script>
<script src="dist/quill/quill.js"></script>
<script src="dist/pixi/pixi.min.js"></script>
<script src="dist/leaflet-pixi-overlay/L.PixiOverlay.min.js"></script>
<script src="dist/leaflet-terminator/L.Terminator.js"></script>
<script src="dist/rasterizeHTML/rasterizeHTML.allinone.js"></script>
<script src="dist/leaflet-locatecontrol/L.Control.Locate.min.js"></script>
<script src='dist/leaflet-fullscreen/Leaflet.fullscreen.min.js'></script>
</head>
<body>
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/8.2.10/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use -->
<script src="https://www.gstatic.com/firebasejs/8.2.10/firebase-firestore.js"></script>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyD82Nx-gXXaPZq2Pl_JqvE0tQjABFNqdZA",
authDomain: "avions-poemes.firebaseapp.com",
databaseURL: "https://avions-poemes-default-rtdb.europe-west1.firebasedatabase.app",
projectId: "avions-poemes",
storageBucket: "avions-poemes.appspot.com",
messagingSenderId: "355611894383",
appId: "1:355611894383:web:c258c73f76581fac7fa39a"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
var db = firebase.firestore();
</script>
<!-- navbar -->
<nav class="navbar navbar-expand-md fixed-top navbar-light bg-light">
<a class="navbar-brand" href="#">Avions-Poèmes</a>
<a id="navTitle" class="navbar-brand" href="#">Avion-Poème</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="fa fa-paper-plane"></span>
<span class="fas fa-bars"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="#" data-toggle="modal" data-target="#langModal" >Français</a>
<ul class="nav-menus navbar-nav mr-auto">
<li class="nav-item">
<a id="buttonAnthology" class="nav-link" href="#">Anthologie</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Anthologie</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-toggle="modal" data-target="#aboutModal" >À propos</a>
<a id="buttonAbout" class="nav-link" href="#">À propos</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownLang" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img id="langIcon" src="src/img/lang.png" height="18px">
</a>
<div id="langChoices" class="dropdown-menu" aria-labelledby="navbarDropdownLang">
</div>
</li>
</ul>
<form class="form-inline mt-2 mt-md-0">
<input type="button" class="btn btn-warning my-2 my-sm-0" data-toggle="modal" data-target="#newPlaneModal" value='Envoyer un avion'>
</input>
<form class="nav-button form-inline mt-2 mt-md-0">
<input id="buttonNewPlane" type="button" class="btn btn-warning my-2 my-sm-0" data-toggle="modal" data-target="#newPlaneModal" value='Envoyer un avion'>
</input>&nbsp;
<i id="planeLimitTooltip" class="fas fa-question-circle" data-toggle="tooltip" data-placement="auto" title="coucou"></i>
</form>
</div>
</nav>
@@ -119,8 +70,8 @@
<canvas id="blankCanvas1" width="400" height="400" style="border:1px solid #d3d3d3; display:none"></canvas>
<canvas id="blankCanvas2" width="400" height="400" style="border:1px solid #d3d3d3; display:none"></canvas>
<img style="display:none;" id="front" src="src/img/front.jpg"/>
<img style="display:none;" id="back" src="src/img/back.jpg"/>
<script id="planeFoldScript.txt" type="not-javascript">
<img style="display:none;" id="back" src="src/img/back-FF5555.jpg"/>
<script id="planeFoldScript.txt" type="not-javascript"> <!-- From https://github.com/RemiKoutcherawy/OriSim3D-JS was fun to code -->
d -200 200 -200 -200 200 -200 200 200
c 0 1 c 0 3 c 0 2 c 1 3
c 0 8 c 8 3 c 0 4 c 4 1
@@ -133,14 +84,39 @@
t 500 r 23 -80 0 21 4 24 1 a 0)
t 1000 tx -35 z 0 0 0 il 100 100)
</script>
<!-- Anthology -->
<div id="anthology">
<h3 id="anthologyTitle" style="text-align:center">Anthologie</h3>
<br><br>
<small><em id="anthologyDisclaimer" >Si vous souhaitez supprimer un message/poème public, merci de le faire savoir à <a href="mailto:contact@avion-poe.me">contact@avion-poe.me</a></em></small>
<br><br><br><br>
<div id="anthologyItems">
</div>
</div>
<!-- About -->
<div id="about">
<h3 id="aboutTitle" style="text-align:center">A propos</h3><br><br>
<p id="aboutText">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p><b id="librairies">Librairies utilisées</b></p>
<p><small><a href="https://getbootstrap.com/">Bootstrap</a> | <a href="https://jquery.com/">jQuery</a> | <a href="https://leafletjs.com/">Leaflet</a> | <a href="https://github.com/Leaflet/Leaflet.fullscreen">Leaflet.fullscreen</a> | <a href="https://github.com/domoritz/leaflet-locatecontrol">Leaflet-locatecontrol</a> | <a href="https://github.com/manubb/Leaflet.PixiOverlay">Leaflet.PixiOverlay</a> | <a href="https://github.com/joergdietrich/Leaflet.Terminator">Leaflet.Terminator</a> | <a href="https://momentjs.com/">Moment.js</a> | <a href="https://www.pixijs.com/">PixiJS</a> | <a href="https://popper.js.org/">Popper</a> | <a href="https://quilljs.com/">Quill</a> | <a href="https://cburgmer.github.io/rasterizeHTML.js/">RasterizeHTML.js</a> | <a href="https://turfjs.org/">Turf.js</a> | <a href="https://github.com/RemiKoutcherawy/OriSim3D-JS">OriSim3D-JS</a> | <a href="https://www.geonames.org/export/web-services.html">Geonames</a></small></p>
<p><b id="mapSources">Sources de la carte</b></p>
<ul>
<li><span id="mapBackground">Fond de carte </span>:<small> <a href="https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9">World Imagery</a> Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community.</small></li>
<li><span id="clouds">Nuages </span>:<small> Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.</small></li>
</ul>
<br>
<br>
</div>
<div id="backToMap">
<p style="text-align:center"><a id="closeAnthologyAbout" href="#" >Retour à la carte</a></p>
</div>
<!-- Modal new plane-->
<div class="modal fade" id="newPlaneModal" tabindex="-1" role="dialog" aria-labelledby="newPlaneModal" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Envoyer un avion</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<h5 class="modal-title" id="newPlaneModalTitle">Lancer un avion-poème</h5>
<button type="button" id="closeModal" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@@ -148,100 +124,72 @@
<form>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="bold" for="selectTime">Temps de vol</label>
<select class="form-control" id="selectTime">
<option value="random">Aléatoire</option>
<option value="3days">3,14 jours</option>
<option value="7days">7 jours</option>
<option value="30days">30 jours</option>
<option value="365days">365 jours</option>
</select>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="publicMessage">
<label class="form-check-label" for="publicMessage">Message public</label>
</div>
<br>
<div class="form-group">
<label class="bold" for="messageTextArea">Message</label>
<div class="form-control rounded-0" id="messageTextArea"></div>
</div>
<div class="form-group">
<b class="bold" id="newPlaneModalMessage">Message</b>&nbsp;&nbsp;
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="prive" value="prive" checked>
<label class="form-check-label" for="prive" id="newPlaneModalPrive">privé</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="public" value="public">
<label class="form-check-label" for="public" id="newPlaneModalPublic">public</label>&nbsp;&nbsp;<i id="publicTooltip" class="fas fa-question-circle" data-toggle="tooltip" data-placement="auto" title="Message publié dans l’Anthologie une fois l’avion-poème arrivé"></i>
</div>
<br>
<br>
<div class="form-control rounded-0" id="messageTextArea"></div>
</div>
<div class="form-group">
<label class="bold" for="selectTime" id="flightTime" >Temps de vol</label>
<select class="form-control" id="selectTime">
<option id="newPlaneModalRandom" value="random">Aléatoire</option>
<option id="newPlaneModal3j" value="3days">3,14 jours</option>
<option id="newPlaneModal7j" value="7days">7 jours</option>
<option id="newPlaneModal30j" value="30days">30 jours</option>
<option id="newPlaneModal365j" value="365days">365 jours</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<b class="bold">Expediteur</b>&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" class="form-check-input" id="expeKnown">
<label class="form-check-label" for="expeKnown">Envoi anonyme</label>
<b class="bold" id="newPlaneModalExpediteur" >Expediteur</b>&nbsp;&nbsp;
<input type="checkbox" class="form-check-input" id="expeKnown">
<label class="form-check-label" for="expeKnown" id="newPlaneModalAnonyme">envoi anonyme</label>&nbsp;&nbsp;<i id="anonymeTooltip" class="fas fa-question-circle" data-toggle="tooltip" data-placement="auto" title="Votre adresse électronique ne sera communiquée au destinataire qu’à l’arrivée de l’avion-poème"></i>
</div>
<div class="form-group">
<input type="email" autocomplete="off" class="form-control" id="expeMail" aria-describedby="emailHelp" placeholder="Addresse mail">
<!-- <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> -->
<input type="email" autocomplete="off" class="form-control" id="expeMail" aria-describedby="emailHelp" placeholder="Insérer votre adresse électronique">
</div>
<input type="text" autocomplete="off" class="form-control typeahead" id="expeGeocoderPhoton" placeholder="Localisation" data-provide="typeahead">
<input type="text" autocomplete="off" class="form-control typeahead" id="expeGeocoderPhoton" placeholder="Choisissez un point de départ" data-provide="typeahead">
<br>
<div class="form-group">
<label class="bold" for="destMail">Destinataire</label>
<input type="email" autocomplete="off" class="form-control" id="destMail" aria-describedby="emailHelp" placeholder="Addresse mail">
<!-- <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> -->
<label class="bold" id="newPlaneModalDestinataire" for="destMail">Destinataire</label>
<input type="email" autocomplete="off" class="form-control" id="destMail" aria-describedby="emailHelp" placeholder="Insérer l'adresse électronique du destinataire">
</div>
<div class="form-group">
<input type="text" autocomplete="off" class="form-control typeahead" id="destGeocoderPhoton" placeholder="Localisation" data-provide="typeahead">
<input type="text" autocomplete="off" class="form-control typeahead" id="destGeocoderPhoton" placeholder="Choisissez une destination" data-provide="typeahead">
</div>
<div class="form-group form-inline">
<label for="selectDestLang">Langue parlée par le destinataire:&nbsp;</label>
<select class="form-control form-control-sm" id="selectDestLang">
<option value="fr">Français</option>
<option value="en">English</option>
<option value="de">Deutsch</option>
<option value="it">Italiano</option>
</select>
<label for="selectDestLang" id="destLang">Langue parlée par le destinataire:</label>&nbsp;
<select class="form-control form-control-sm" id="selectDestLang">
</select>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-warning" id="sendNewPlane" disabled>Envoyer</button>
<button type="button" class="btn btn-light" id="newPlaneModalCancel" data-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-warning" id="sendNewPlane" disabled>Lancer</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal About -->
<div class="modal fade" id="aboutModal" tabindex="-1" role="dialog" aria-labelledby="aboutModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">À propos</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">Retour</button>
</div>
</div>
</div>
</div>
<!-- Footer -->
<!-- <footer class="footer"> -->
<!-- <div class="container-fluid"> -->
<!-- Site open source dédié à l'envoi d'avions-poèmes. -->
<!-- </div> -->
<!-- </footer> -->
<script src="src/translation.js"></script>
<script src="src/about.js"></script>
<script src="src/map.js"></script>
<script src="src/geocoder.js"></script>
<script src="src/paperPlaneAnimation.js"></script>
<script src="src/formValidation.js"></script>
<script src="src/newPlane.js"></script>
<script src="src/newPlane.js"></script>
<script src="src/translation.js"></script>
<script src="src/anthology.js"></script>
</body>
</html>
+52 -50
View File
@@ -1,74 +1,76 @@
|fr/Français|en/English|de/Deutsch|bg/български|zh/中文|ja/日本語|es/español|pt/português|ar/اللغة العربية
avionpoeme|Avion-poème|Flight-poem|Poesie-Flieger|Самолет-поема|詩作紙飞机|飛行機の詩|Avión-poema|Avião-poema|طائرة-قصيدة
lancer_avion|Lancer un avion-poème|Launch a flight-poem|Schicke einen Poesie-Flieger los !|Xвърлям cамолета-поема|发射詩作紙飞机|詩の飛行機を起動します|Lanzar un avión-poema|Lançar um avião-poema| أطلق طائرة-قصيدة
anthologie|Anthologie|Anthology|Anthologie|Aнтология|选集|アンソロジー|Antología|Antologia|مقتطفات
apropos|À propos|About|Über|За нас|关于我们|私たちに関しては|Más información|Mais Informações|من نحن
lancer|Lancer|Launch |Schicken|Xвърлям|发送射|送信する|Lanzar|Lançar|إطلاق
annuler|Annuler|Cancel|Abbrechen|Отмени|取消|キャンセルします|Anular|Cancelar|الغاء
lancer_avion|Lancer un avion-poème|Launch a flight-poem|Schicke einen Poesie-Flieger los !|Изпращам cамолет-поема|发射詩作紙飞机|飛行機の詩を飛ばす|Lanzar un avión-poema|Lançar um avião-poema| أطلق طائرة-قصيدة
anthologie|Anthologie|Anthology|Anthologie|Aнтология|选集|作品集|Antología|Antologia|مختارات
apropos|À propos|About|Über|За нас|关于我们|私たちについて|Más información|Mais Informações|من نحن
lancer|Lancer|Launch |Schicken|Изпращам|发送射|送信する|Lanzar|Lançar|إطلاق
annuler|Annuler|Cancel|Abbrechen|Отмени|取消|キャンセルする|Anular|Cancelar|الغاء
origine|Origine|Departure|Abflug|Произход|出发送地|出発地|Partida|Descolagem| المغادرة
destination|Destination|Arrival|Ankunft|Дестинация|目的地|先|Llegada|Chegada|الوصول
destination|Destination|Arrival|Ankunft|Дестинация|目的地|到着地|Llegada|Chegada|القدوم
expediteur|Expéditeur|Sender|Absender|Подател|发件人|送信者|Remitente|Remetente|مرسل
email|Adresse éléctronique|email address|E-Mail-Addresse|имейл адрес|电子邮件|電子メールアドレス|dirección de correo electrónico|endereço de email|عنوان بريد الكتروني
anonyme|anonyme (à l’envoi)|send anonymously|anonym (wenn gesendet)|анонимен (при изпращане)|匿名 寄送|匿名(送信時)| anónima (cuando se envía)|anônimo (quando enviado)|مجهول (عند الإرسال)
email|Adresse éléctronique|email address|E-Mail-Addresse|имейл адрес|电子邮件|Eメールアドレス|dirección de correo electrónico|endereço de email|عنوان بريد الكتروني
anonyme|anonyme (à l’envoi)|send anonymously|anonym (wenn gesendet)|анонимен (при изпращане)|匿名 寄送|匿名(送信時)| anónima (cuando se envía)|anônimo (quando enviado)|أرسل بدون اسم
destinataire|Destinataire|Recipient|Empfänger|Получател|收件者|受信者|Beneficiario|Destinatário|متلقي
message|Message|Message|Botschaft|Cъобщение|信息|メッセージ|Mensaje|Mensagem|رسالة
public|public|public|öffentlich|публично|公开|公衆|público|público|عامة
anthologie_visible|Visible dans l’Anthologie une fois le message arrivé|Visible in the Anthology after the arrival of the message|Sichtbar in der Anthologie nach dem Eintreffen der Botschaft|Видимо в Антологията след пристигането на съобщението|信息送达后即現於选集中|メッセージの到着後、アンソロジーで表示されます|Visible en la Antología tras la llegada del mensaje|Visível na Antologia após a chegada da mensagem|مرئي في المقتطفات بعد وصول الرسالة
prive|privé|private|privat|лично|私人的|民間|privado|privada|خاصة
public|public|public|öffentlich|публично|公开|公開|público|público|عامة
anthologie_visible|Visible dans l’Anthologie une fois le message arrivé|Visible in the Anthology after the arrival of the message|Sichtbar in der Anthologie nach dem Eintreffen der Botschaft|Видимо в Антологията след пристигането на съобщението|信息送达后即現於选集中|メッセージが到着した後、作品集に掲載されます|Visible en la Antología tras la llegada del mensaje|Visível na Antologia após a chegada da mensagem|مرئي في المُختارات بعد وصول الرسالة
prive|privé|private|privat|лично|私人的|非公開|privado|privada|خاصة
vitesse|Vitesse|Speed|Geschwindigkeit|Cкорост|速度|速度|Velocidad|Velocidad|سرعة
aléatoire|aléatoire|random|zufällige|произволна|随机的|ランダム|aleatoria|aleatória|عشوائية
choisie|choisie|chosen|gewählte|избрана|选定的|選ばれた|elegida|escolhida|مختارة
trois_jours|3.14 jours|3.14 days|3,14 Tage|3,14 дни|3.14天|3.14 日々|3.14 días|3.14 dias| أيام
sept_jours|7 jours|7 days|7 Tage|7 дни|7天|7 日々|7 días|7 dias| أيام
trente_jours|30 jours|30 days|30 Tage|30 дни|30天|30 日々|30 días|30 dias| يوم
unan_jours|365 jours|365 days|365 Tage|365 дни|365天|365 日々|365 días|365 dias| يوم
choisie|choisie|chosen|gewählte|избрана|选定的|選択速度|elegida|escolhida|مختارة
trois_jours|3.14 jours|3.14 days|3,14 Tage|3,14 дни|3.14天|3,14日|3.14 días|3.14 dias| 3,14 أيام
sept_jours|7 jours|7 days|7 Tage|7 дни|7天|7日|7 días|7 dias| 7 أيام
trente_jours|30 jours|30 days|30 Tage|30 дни|30天|30日|30 días|30 dias| 30 يوم
unan_jours|365 jours|365 days|365 Tage|365 дни|365天|365日|365 días|365 dias| 365 يوم
jour|jour|day|Tag|ден|天|日|día|dia|يوم
jours|jours|days|Tage|дни|天|日々|dias|dias|أيام
jours|jours|days|Tage|дни|天|日|dias|dias|أيام
mois|mois|month|Monat|месец|月|月|mes|mes|شهر
mois_pluriel|mois|months|Monate|месеци|月|月|meses|meses|شهور
an|an|year|Jahr|година|年|年|año|ano|سنة
ans|ans|years|Jahre|години|年|年|años|anos|سنوات
retour_carte|Retour à la carte|Back to map|zurück zur Karte|Обратно към картата|回到地图|地図に戻る|Volver al mapa|Voltar para o mapa|العودة إلى الخريطة
precedent|Précédent|Previous|vorherig|Предишен|先前的|前|Anterior|Anterior|سابق
suivant|Suivant|Next|nächstes|Cледващи|下列的|以下|Próximo|Próximo|التالي
precedent|Précédent|Previous|vorherig|Предишен|先前的|前へ|Anterior|Anterior|سابق
suivant|Suivant|Next|nächstes|Cледващ|下列的|次へ|Próximo|Próximo|التالي
temps_de_vol|Temps de vol|Flight time|Flugdauer|Продължителност на полета|飞行时间|飛行時間|Duracion del vuelo|Duração do voo|مدة الرحلة
date_arrivee|Date d'arrivée|Arrival date|Ankunftsdatum|дата на пристигане|到达日期|到着日|Fecha de llegada|Data de chegada|تاريخ الوصول
langue_destinataire|Langue parlée par le destinataire|Language spoken by the recipient|Vom Empfänger gesprochene Sprache|Език, говорен от получателя|收件人使用之语言|受信者が話す言語|Idioma que habla el destinatario|Idioma falado pelo destinatário|اللغة التي يتحدث بها المتلقي
suppr_message_public|Si vous souhaitez supprimer un message/poème public, merci de le faire savoir à <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a>|If you want to delete a public message / poem, please let us know at <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> |Wenn Sie eine öffentliche Nachricht / ein Gedicht löschen möchten, teilen Sie uns dies bitte unter <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> mit |Ако искате да изтриете публично съобщение / стихотворение, моля, уведомете ни на <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> |如果您想删除公开信息/诗歌,请发送电子邮件至 <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> |公開メッセージ/詩を削除したい場合は、<a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> までご連絡ください。|Si desea eliminar un mensaje / poema público, háganoslo saber en <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> |Se você deseja excluir uma mensagem / poema público, entre em contato conosco pelo e-mail <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> |إذا كنت تريد حذف رسالة / قصيدة عامة ، فيرجى إخبارنا على <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a>
rechercher|Rechercher|Search|Suchen|Търсене|搜索|探す|Buscar|Procurar|بحث
public_tooltip|Message publié dans l’Anthologie une fois l’avion-poème arrivé|Message published in the Anthology once the flight-poem has arrived|Botschaft in der Anthologie veröffentlicht, sobald der Poesie-Flieger angekommen ist|Съобщение, публикувано в Антологията след пристигането на самолетната-поема|詩作紙飞机一到达, 消息即在選集中发布|飛行機の詩が到着すると、アンソロジーに掲載されたメッセージ|Mensaje publicado en la Antología una vez llegado el avión-poema|Mensagem publicada na Antologia assim que chegar o avião-poema|نُشرت الرسالة في المقتطفات بمجرد وصول الطائرة-القصيدة
anonyme_tooltip|Votre adresse électronique ne sera communiquée au destinataire qu’à l’arrivée de l’avion-poème|Your email address will not be communicated to the recipient until the arrival of the flight-poem|Ihre E-Mail-Adresse wird dem Empfänger erst bei Ankunft des Poesie-Fliegers mitgeteilt|Вашият имейл адрес няма да бъде съобщен на получателя до пристигането на самолетната-поема|诗作紙飞机到达前,您的电子邮件地址不会发送给收件人|あなたのメールアドレスは、詩の飛行機が到着するまで受信者に通知されません|Su dirección de correo electrónico no se comunicará al destinatario hasta la llegada del avión-poema.|Seu endereço de e-mail não será comunicado ao destinatário até a chegada do avião-poema|لن يتم إرسال عنوان بريدك الإلكتروني إلى المتلقي حتى وصول الطائرة-القصيدة
suppr_message_public|Si vous souhaitez supprimer un message/poème public, merci de le faire savoir à <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>|If you want to delete a public message / poem, please let us know at <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> |Wenn Sie eine öffentliche Nachricht / ein Gedicht löschen möchten, teilen Sie uns dies bitte unter <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> mit |Ако искате да изтриете публично съобщение / поема, моля, уведомете ни на <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> |如果您想删除公开信息/诗歌,请发送电子邮件至<a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> |公開メッセージ/詩を削除したい場合は、<a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> までご連絡ください。|Si desea eliminar un mensaje / poema público, háganoslo saber en <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> |Se você deseja excluir uma mensagem / poema público, entre em contato conosco pelo e-mail <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> |إذا كنت تريد حذف رسالة / قصيدة عامة ، فيرجى إخبارنا على <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>
rechercher|Rechercher|Search|Suchen|Търсене|搜索|検索する|Buscar|Procurar|بحث
public_tooltip|Message publié dans l’Anthologie une fois l’avion-poème arrivé|Message published in the Anthology once the flight-poem has arrived|Botschaft in der Anthologie veröffentlicht, sobald der Poesie-Flieger angekommen ist|Съобщение, публикувано в Антологията след пристигането на самолет-поемата|詩作紙飞机一到达, 消息即在選集中发布|飛行機の詩が到着した後に、作品集に掲載されるメッセージ|Mensaje publicado en la Antología una vez llegado el avión-poema|Mensagem publicada na Antologia assim que chegar o avião-poema|نُشرت الرسالة في المختارات بمجرد وصول الطائرة-القصيدة
anonyme_tooltip|Votre adresse électronique ne sera communiquée au destinataire qu’à l’arrivée de l’avion-poème|Your email address will not be communicated to the recipient until the arrival of the flight-poem|Ihre E-Mail-Adresse wird dem Empfänger erst bei Ankunft des Poesie-Fliegers mitgeteilt|Вашият имейл адрес ще бъде съобщен на получателя само след пристигането на самолет–поемата|诗作紙飞机到达前,您的电子邮件地址不会发送给收件人|メールアドレスは、飛行機の詩が受信者に届いた後に通知されます|Su dirección de correo electrónico no se comunicará al destinatario hasta la llegada del avión-poema.|Seu endereço de e-mail não será comunicado ao destinatário até a chegada do avião-poema|لن يتم إرسال عنوان بريدك الإلكتروني إلى المتلقي حتى وصول الطائرة-القصيدة
expeMail_placeholder|Insérer votre adresse électronique|Enter your email address|Geben Sie Ihre E-Mailadresse ein|Напишете своя емайл адрес|输入您的电子邮件地址|メールアドレスを入力してください|Ingrese su dirección de correo electrónico|Insira o seu endereço de email|أدخل عنوان بريدك الالكتروني
expeLoc_placeholder|Choisir un point de départ|Choose a place of departure|Wählen Sie einen Abflugort|Изберете място на тръгване|选择一个起点|出発点を選択してください|Elige un punto de partida|Escolha um ponto de partida|اختر مكان المغادرة
expeLoc_placeholder|Choisir un point de départ|Choose a place of departure|Wählen Sie einen Abflugort|Изберете място на тръгване|选择一个起点|出発地を選択してください|Elige un punto de partida|Escolha um ponto de partida|اختر مكان المغادرة
destMail_placeholder|Insérer l'adresse électronique du destinataire|Enter recipient's email address|Geben Sie die E-Mail-Adresse des Empfängers ein|Въведете имейл адреса на получателя|输入收件人的电子邮件地址|受信者のメールアドレスを入力してください|Ingrese la dirección de correo electrónico del destinatario|Insira o endereço de e-mail do destinatário|أدخل عنوان البريد الإلكتروني للمتلقي
destLoc_placeholder|Choisir une destination|Choose a destination|Wählen Sie eine Destination|Изберете дестинация|选择目的地|目的地を選択してください|Elige un destino|Escolha um destino|اختر وجهة
librairies|Librairies utilisées|Libraries used|Verwendete Bibliotheken|Използвани библиотеки|使用的图书馆|使用されるライブラリ|Bibliotecas utilizadas|Bibliotecas usadas|المكتبات المستخدمة
source_carte|Sources de la carte|Map sources|Kartenquellen|Източници на карти|地图來源|マップソース|Fuentes de mapas|Fontes de mapas|مصادر الخريطة
map_background|Fond de carte|Background|Kartenhintergrund|Фон на картата|地图背景|地図の背景|Fondo del mapa|Fundo do mapa|خلفية الخريطة
librairies|Librairies utilisées|Libraries used|Verwendete Bibliotheken|Използвани библиотеки|使用的图书馆|使用するライブラリ|Bibliotecas utilizadas|Bibliotecas usadas|المكتبات المستخدمة
source_carte|Sources de la carte|Map sources|Kartenquellen|Източници на картата|地图來源|マップソース|Fuentes de mapas|Fontes de mapas|مصادر الخريطة
map_background|Fond de carte|Background|Kartenhintergrund|Фон на картата|地图背景|ベースマップ|Fondo del mapa|Fundo do mapa|خلفية الخريطة
clouds|Nuages|Clouds|Wolken|Облаци|云影|雲|Nubes|Nuvens|غيوم
Notification_denvoi_Expediteur|Bonjour,\n\n Vous venez de lancer un avion-poème à destination de $destinataire le $date_depart. Votre message:\n\n $message \n\n Nous lui avons notifié cet envoi. Vous pouvez suivre votre avion-poème ici sur la carte : \n $url_avion \n Date estimée d’arrivée : $date_arrivee \n\n Merci de prendre votre temps ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine)|Hello, You have just launched a flight-poem to $destinataire on $date_depart. Your message: $message . She/he has been notified. You can follow your flight-poem here on the map: $url_avion . Estimated date of arrival: $date_arrivee Thank you for taking your time! \"Rushing is useless; one has to leave on time.\"  (Jean de la Fontaine)|Guten Tag, Sie haben gerade einen Poesie-Flieger nach $destinataire am $date_depart losgeschickt. Ihre Nachricht: $message . Wir haben den Empfänger/die Empfängerin über diese Sendung informiert. Sie können Ihren Poesie-Flieger hier auf der Karte verfolgen: $url_avion . Voraussichtliches Ankunftsdatum: $date_arrivee Vielen Dank, dass Sie sich die Zeit genommen haben! \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine)|Здравейте, токущо стартирахте самолетът–поема за $destinataire на $date_depart. Вашето съобщение: $message. Ние го/я уведомихме за тази пратка. Можете да проследите самолетната- поема си тук на картата: $ url_avion . Приблизителна дата на пристигане: $date_arrivee. Благодарим ви, че отделихте време! „Няма смисъл да бягате, трябва да започнете навреме“|您好,您刚刚在 $date_depart 上向 $destinataire 发送了一架詩作紙飞机。 您的信息:$message。 他/他已收到通知。 您可以在地图上追蹤詩作紙飞机:$url_avion 。 预计到达日期:$date_arrivee 感谢您抽出宝贵的时间! “跑是没有用的;關鍵是必须及时出發。” (让.德.拉封丹)|こんにちは、$date_depart の $destinataire に飛行機の詩を送信しました。 あなたのメッセージ:$message 。 彼女/彼は通知されました。 あなたはここの地図であなたの飛行機の詩をたどることができます: $url_avion 。 到着予定日:$date_arrivee お時間をいただき、誠にありがとうございます! 「急ぐことは役に立たない。時間通りに出発しなければならない。」 (ジャン・ド・ラ・フォンテーヌ)|Hola, Acabas de lanzar un avión-poema a $destinataire en $ date_depart. Su mensaje: $message. Le notificamos de este envío. Puedes seguir tu avión-poema aquí en el mapa: $url_avion . Fecha estimada de llegada: $date_arrivee. ¡Gracias por tomarte tu tiempo! \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine)|Olá, Você acabou de lançar um plano-poema a $destinataire em $date_depart. Sua mensagem: $message. Nós o notificamos sobre esta remessa. Você pode seguir seu avião-poema aqui no mapa: $url_avion . Data estimada de chegada: $date_arrivee. Obrigado por dedicar seu tempo! “Não adianta correr, tem que começar na hora” (Jean de la Fontaine)|مرحبًا ، لقد أطلقت للتو طائرة قصيدة منضمة لـ $destinataire في $date_depart. رسالتك: $message. لقد أبلغناه بهذه الشحنة. يمكنك متابعة الطائرة-القصيدة الخاصة بك هنا على الخريطة: $url_avion . تاريخ الوصول المقدر: $ date_arrivee شكرًا لك على وقتك! لا فائدة من الجري ، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين)
Objet_Notification_denvoi_Expediteur|Notification d'envoi: Avion-poème en vol vers $destinataire|Dispatch notification: Flight-poem in flight to $destinataire|Versandbenachrichtigung: Poesie-Flieger auf dem Flug nach $destinataire|(Жан дьо ла Фонтен)|派送通知:詩作紙飞机飞往 $destinataire|派遣のお知らせ:飛行機の詩 $destinataire|Notificación de envío: avión-poema en vuelo a $destinataire|Notificação de envio: Avião-poema em vôo para $destinataire|إخطار بالإرسال: طائرة-قصيدة في رحلة إلى $destinataire
Notification_denvoi_Destinataire_ExpediteurConnu|Bonjour,\n\n $expediteur vient de faire décoller un avion-poème à votre destination. \n Date estimée d’arrivée: $date_arrivee. \n Vous pouvez le suivre ici sur la carte : \n $url_avion . \n\n Merci de prendre votre temps et à bientôt sur www.avion-poe.me ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine)|Hello, $expediteur just launched a flight-poem at your destination. Estimated date of arrival: $date_arrivee. You can follow it here on the map: $url_avion . Thank you for taking your time and see you soon at www.avion-poe.me ! \"Rushing is useless; one has to leave on time.\"  (Jean de la Fontaine)|Guten Tag, $expediteur hat gerade einen Poesie-Flieger an Ihren Zielort gesendet. Voraussichtliches Ankunftsdatum: $date_arrivee. Sie können ihn hier auf der Karte verfolgen: $url_avion . Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf www.avion-poe.me ! \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine)|Здравейте, $expediteur току-що излетя самолетът–поема до вашата цел. Очаквана дата на пристигане: $date_arrivee. Можете да го следвате тук на картата: $url_avion . Благодарим ви, че отделихте време и ще се видим скоро на www.avion-poe.me ! „Няма смисъл да бягате, трябва да започнете навреме“ (Жан дьо ла Фонтен)|您好,$expediteur 刚刚向您指定的目的地發送了一架诗作紙飞机。 预计到达日期:$date_arrivee 。 您可以在地图上追蹤它:$url_avion。 感谢您抽出宝贵的时间,并很快在 www.avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)|こんにちは、$expediteur は目的地で詩の飛行機を離陸しました。 到着予定日:$date_arrivee 。 あなたはここの地図でそれに従うことができます: $url_avion 。 お時間を割いていただきありがとうございます。www.avion-poe.me でお会いしましょう。 「走る意味はありません。時間通りに始めなければなりません」(ジャン・ド・ラ・フォンテーヌ)|Hola, $expediteur acaba de despegar un avión-poema en su destino. Fecha estimada de llegada: $date_arrivee. Puedes seguirlo aquí en el mapa: $url_avion . ¡Gracias por tomarse su tiempo y nos vemos pronto en www.avion-poe.me ! \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine)|Olá, $expediteur acabou de decolar um avião-poema no seu destino. Data estimada de chegada: $date_arrivee. Você pode acompanhar aqui no mapa: $url_avion . Obrigado por dedicar seu tempo e nos vemos em breve em www.avion-poe.me ! “Não adianta correr, tem que começar na hora” (Jean de la Fontaine)|مرحبا ، أقلعت لتوها من $expediteur قصيدة-طائرة في وجهتك. التاريخ المقدر للوصول: $date_arrivee. يمكنك متابعتها هنا على الخريطة: $url_avion . شكرًا لك على وقتك ونراكم قريبًا على www.avion-poe.me لا فائدة من الجري ، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين)
Objet_Notification_denvoi_Destinataire_ExpediteurConnu|Notification: $expediteur vous a envoyé un avion-poème|Notification: $expediteur sent you a flight-poem|Benachrichtigung: $expediteur hat Ihnen einen Poesie-Flieger geschickt|Известие: $expediteur ви изпрати самолетa–поема|通知:$expediteur 发送给您一架诗作紙飞机|通知:$expediteur があなたに詩の飛行機を送りました|Notificación: $expediteur te envió un avión-poema|Notificação: $expediteur enviou-lhe um avião-poema|إشعار: أرسل لك $expediteur طائرة-قصيدة
Notification_denvoi_Destinataire_ExpediteurAnonyme|Bonjour, Quelqu'un vient de faire décoller un avion-poème à votre destination. Date estimée d’arrivée : $date_arrivee . Vous pouvez le suivre ici sur la carte : $url_avion . Merci de prendre votre temps et à bientôt sur www.avion-poe.me ! \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine)|Hello, Someone just launched a flight-poem at your destination. Estimated date of arrival: $date_arrivee . You can follow it here on the map: $url_avion . Thank you for taking your time and see you soon at www.avion-poe.me ! \"Rushing is useless; one has to leave on time\"  (Jean de la Fontaine)|Guten Tag, jemand hat gerade einen Poesie-Flieger an Ihren Ziel gesendet. Voraussichtliches Ankunftsdatum: $date_arrivee. Sie können ihn hier auf der Karte verfolgen: $url_avion. Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf www.avion-poe.me ! \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine)|Здравейте, Някой току-що е излетял самолетът–поема на вашата дестинация. Очаквана дата на пристигане: $date_arrivee . Можете да го следвате тук на картата: $url_avion . Благодарим ви, че отделихте време и ще се видим скоро на www.avion-poe.me ! „Няма смисъл да бягате, трябва да започнете навреме“ (Жан дьо ла Фонтен)|您好,某人刚向您的所在地發送一架诗作紙飞机。 预计到达日期:$date_arrivee 。 您可以在地图上追蹤它:$url_avion 。 感谢您抽出宝贵的时间,并很快在 www.avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)|こんにちは、誰かがあなたの目的地で詩の飛行機を離陸しました。 到着予定日:$date_arrivee。 あなたはここの地図でそれに従うことができます: $url_avion 。 お時間を割いていただきありがとうございます。www.avion-poe.me でお会いしましょう。 「走る意味はありません。時間通りに始めなければなりません」(ジャン・ド・ラ・フォンテーヌ|Hola, Alguien acaba de despegar un avión-poema en tu destino. Fecha estimada de llegada: $date_arrivee. Puedes seguirlo aquí en el mapa: $url_avion . ¡Gracias por tomarse su tiempo y nos vemos pronto en www.avion-poe.me ! \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine)|Olá, Alguém acabou de decolar um avião-poesia no seu destino. Data estimada de chegada: $date_arrivee. Você pode acompanhar aqui no mapa: $url_avion. Obrigado por dedicar seu tempo e nos vemos em breve em www.avion-poe.me ! “Não adianta correr, tem que começar na hora” (Jean de la Fontaine)|مرحبًا ، لقد أقلع شخص ما للتو قصيدة-طائرة في وجهتك. التاريخ المقدر للوصول: $date_arrivee. يمكنك متابعتها هنا على الخريطة: $url_avion. شكرًا لك على وقتك ونراكم قريبًا على www.avion-poe.me لا فائدة من الجري ، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين)
Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme|Notification: un.e ami.e vous a envoyé un avion-poème|Notification: a friend sent you a flight-poem|Benachrichtigung: Ein Freund hat Ihnen einen Poesie-Flieger geschickt|Известие: приятел ви изпрати самолет–поема|通知:一位朋友寄给您一架诗作紙飞机|通知:友人があなたに詩の飛行機を送った|Notificación: un amigo te envió un avión-poema|Notificação: um amigo enviou um avião-poema para você|إشعار: أرسل لك صديق قصيدة-طائرة
Notification_Arrivee_Expediteur|Bonjour, Votre avion-poème est parvenu à destination aujourd'hui et votre message-poème a été délivré à $destinataire . Si votre message était public, il est dorénéavant visible dans l'onglet Anthologie Merci d'avoir pris votre temps et à bientôt sur www.avion-poe.me !|Hello, Your flight-poem has reached its destination today and your message has been delivered to $destinataire. If your message was public, it is now visible in the Anthology tab. Thank you for taking your time and see you soon on www.avion-poe.me !|Guten Tag, Ihr Poesie-Flieger hat soeben sein Ziel erreicht und Ihre Nachricht wurde an $destinataire übermittelt. Wenn Ihre Nachricht für die Öffentlichkeit bestimmt ist, wird sie auf der in der Anthologie angezeigt. Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf www.avion-poe.me !|Здравейте, Самолетът-поема ви е достигнал дестинацията си днес и съобщението ви е доставено на $destinataire . Ако съобщението ви беше публично, то вече се вижда в раздела Антология. Благодарим ви, че отделихте време и ще се видим скоро на www.avion-poe.me !|您好,您的诗作紙飞机今天已经到达目的地,您的詩作信息也已经传递给 $destinataire 。 如果您的信息是公开的,今後可在选集插頁标签中看到该信息。 感谢您抽出宝贵的时间,并很快在 www.avion-poe.me 见!|こんにちは、あなたの詩の飛行機は今日目的地に到着し、あなたのメッセージは $destinataire に配信されました。 メッセージが公開されていた場合は、[アンソロジー]タブに表示されます。お時間を割いていただきありがとうございます。www.avion-poe.me でお会いしましょう。|Hola, Tu avión de poemas ha llegado a su destino hoy y tu mensaje ha sido entregado a $destinataire . Si su mensaje era público, ahora está visible en la pestaña Antología. ¡Gracias por tomarse su tiempo y nos vemos pronto en www.avion-poe.me !|Olá, Seu avião-poema chegou ao destino hoje e sua mensagem foi entregue a $destinataire . Se sua mensagem era pública, agora está visível na aba Antologia. Obrigado por dedicar seu tempo e nos vemos em breve no www.avion-poe.me !|مرحبًا ، وصلت طائرة-قصيدة الخاصة بك إلى وجهتها اليوم وتم تسليم رسالتك إلى $destinataire . إذا كانت رسالتك عامة ، فستظهر الآن في علامة تبويب المقتنعات شكرًا لك على وقتك ورؤيتك قريبًا على www.avion-poe.me !
Objet_Notification_Arrivee_Expediteur|Notification: Avion-poème arrivé à destination|Notification: Flight-poem has arrived at destination|Benachrichtigung: Poesie-Flieger am Ziel angekommen|Известие: Самолетът-поема пристигна в дестинацията|通知:诗作紙飞机已到达目的地|通知:詩の飛行機が目的地に到着しました|Notificación: el avión-poema llegó a destino|Notificação: o avião-poema chegou ao destino|إشعار: وصلت الطائرة-القصيدة إلى وجهتها
Notification_Arrivee_Destinataire|Bonjour, Voici l'avion-poème que $expediteur vous a envoyé: $message Vous souhaiteriez lui répondre? Devenez à votre tour lanceur.se d'avion-poème. Merci d'avoir pris votre temps et à bientôt sur www.avion-poe.me !|Hello, Here is the flight-poem that $expediteur sent you: $message . Would you like to reply to him/her? You too can become a flight-poem launcher. Thank you for taking your time and see you soon at www.avion-poe.me !|Guten Tag, hier ist der Poesie-Flieger, den $expediteur Ihnen gesendet hat: $message. Möchten Sie ihm/ihr antworten? Dann geben Sie selbst einen Poesie-Flieger in Auftrag! Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf www.avion-poe.me !|Здравейте, ето самолетът-поема , което $expediteur ви изпрати: $message. Бихте ли искали да му/я отговорите? От своя страна станете стартер за самолети–поеми. Благодарим ви, че отделихте време и ще се видим скоро на www.avion-poe.me !|您好,这是 $expediteur 发送给您的诗作紙飞机: $message . 您想回复他吗? 成为诗作紙飞机發送者。 感谢您抽出宝贵的时间,并很快在 www.avion-poe.me 见!|こんにちは、 $expediteur があなたに送った詩の飛行機です: $message . 彼に返信しますか? 次に、詩の飛行機のランチャーになります。 お時間を割いていただきありがとうございます。www.avion-poe.me でお会いしましょう。|Hola, aquí está el avión-poema que te envió $expediteur : $message ¿Quieres responderle? A su vez, conviértete en un lanzador de aviones-poemas. ¡Gracias por tomarse su tiempo y nos vemos pronto en www.avion-poe.me !|Olá, aqui está o avión-poema que $expediteur lhe enviou: $message . Gostaria de responder a ele? Por sua vez, torne-se um lançador de avião-poema. Obrigado por dedicar seu tempo e nos vemos em breve em www.avion-poe.me !|مرحبًا ، ها هي الطائرة القصيدة التي أرسلها لك $expediteur : $message . هل تود الرد عليها؟ بدورك ، أصبح قاذف طائرة -قصيدة. شكرًا لك على وقتك ونراكم قريبًا على www.avion-poe.me !
Objet_Notification_Arrivee_Destinataire|Notification: L'avion-poème envoyé par $expediteur est arrivé à destination !|Notification: The flight-poem sent by $expediteur has arrived at destination!|Benachrichtigung: Der von $expediteur gesendete Poesie-Flieger ist am Ziel angekommen!|Известие: Самолетът-поема изпратен от $expediteur е пристигнал по дестинацията си!|通知:$expediteur 寄送的诗作紙飞机已经到达目的地!|通知: $expediteur から送信された詩の飛行機が目的地に到着しました!|Notificación: ¡El avión-poema enviado por $expediteur ha llegado a su destino!|Notificação: O avião-poema enviado por $expediteur chegou ao seu destino!|إشعار: الطائرة-القصيدة التي أرسلها $expediteur وصلت إلى وجهتها!
Peripetie_Perturbation|Bonjour, Votre avion-poème est pris dans une perturbation et peine à maintenir son cap. Sa nouvelle date estimée d'arrivée est maintenant le: $new_date_arrivee . L'expéditeur et le destinataire ont été informé.e.s de la situation. Pour suivre votre avion-poème: $url_avion. \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine)|Hello, Your flight-poem is caught in turbulence and is struggling to stay on course. Its new estimated date of arrival is now: $new_date_arrivee. The sender and the recipient have been informed of the situation. To follow your flight-poem: $url_avion . \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine)|Guten Tag, Ihr Poesie-Flieger ist in Turbulenzen geraten und hat Mühe, auf Kurs zu bleiben. Sein neues voraussichtliches Ankunftsdatum lautet jetzt: $new_date_arrivee. Der Absender und der Empfänger wurden über die aktuelle Flugsituation informiert. Hier können Sie Ihren Poesie-Flieger verfolgen: $url_avion . \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine)|Здравейте, самолетът-поема ви е затруднен и се бори да остане в курса. Новата му прогнозна дата на пристигане е сега: $new_date_arrivee. Подателят и получателят са информирани за ситуацията. За да следвате самолетната си поема: $url_avion . „Няма смисъл да бягате, трябва да започнете навреме“ (Жан дьо ла Фонтен)|您好,您的诗作紙飞机陷入乱流,正在努力保持前进的航道。 新的预计到达日期是:$new_date_arrivee 。 发送者和接收者已被告知情况。 追蹤您的詩作紙飞机:$url_avion 。 “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)|こんにちは、あなたの詩の飛行機は騒ぎに巻き込まれ、コースにとどまるのに苦労しています。 彼の新しい到着予定日は現在 $new_date_arrivee です。 送信者と受信者に状況が通知されています。 飛行機の詩に従うには: $url_avion 。 「走る意味はありません。時間通りに始めなければなりません」(ジャン・ド・ラ・フォンテーヌ)|Hola, Tu avión-poema está atrapado en un disturbio y está luchando por mantener el rumbo. Su nueva fecha estimada de llegada es ahora: $new_date_arrivee. El remitente y el destinatario han sido informados de la situación. Para seguir tu avión-poema: $url_avion . \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine)|Olá, o avião- poema do seu foi pego em um distúrbio e está lutando para se manter no curso. Sua nova data estimada de chegada é agora: $new_date_arrivee. O remetente e o destinatário foram informados da situação. Para seguir seu avião-poema: $url_avion . “Não adianta correr, tem que começar na hora” (Jean de la Fontaine)|مرحبًا ، لقد علقت طائرة-القصيدة الخاصة بك في حالة اضطراب وتكافح من أجل البقاء في مسارها. تاريخ وصولها المقدر الجديد هو الآن: $new_date_arrivee. تم إبلاغ المرسل والمتلقي بالموقف. لمتابعة قصيدة الطائرة الخاصة بك: $url_avion . لا فائدة من الجري ، عليك أن تبدأ في الوقت المحدد(جان دي لا فونتين)
Objet_Peripetie_Perturbation|Notification de vol: Votre avion-poème est ralenti|Flight notification: Your flight-poem has been slowed down!|Flugbenachrichtigung: Die Ankunft Ihres Poesie-Fliegers verzögert sich!|Известие за полет: Самолетът-поема ви е забавен|航班通知:您的诗作紙飞机減速了|フライト通知:あなたの詩の飛行機は遅くなります|Notificación de vuelo: su avión-poema está ralentizado|Notificação de voo: seu avião-poema está lento|إشعار الرحلة: تم إبطاء طائرة-القصيدة الخاصة بك
Peripetie_Vents_porteurs|Bonjour, votre avion-poème bénéficie actuellement de vents favorables. Sa nouvelle date estimée d'arrivée est maintenant le: $new_date_arrivee . L'expéditeur et le destinataire ont été informé.e.s de la situation. Pour suivre votre avion-poème: $url_avion. \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine)|Hello, your flight-poem is currently enjoying favorable winds. Its new estimated date of arrival is now: $new_date_arrivee. The sender and the recipient have been informed of the situation. To follow your flight-poem: $url_avion . \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine)|Guten Tag ! Ihr Poesie-Flieger profitiert derzeit von günstigen Winden. Sein neues voraussichtliches Ankunftsdatum lautet jetzt: $new_date_arrivee. Der Absender und der Empfänger wurden über die aktuelle Flugsituation informiert. Hier können Sie Ihren Poesie-Flieger verfolgen: $url_avion . \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine)|Здравейте, вашата самолетна поема в момента се радва на благоприятни ветрове. Новата му прогнозна дата на пристигане е сега: $new_date_arrivee. Подателят и получателят са информирани за ситуацията. За да следвате самолетната- поема си: $url_avion . „Няма смисъл да бягате, трябва да започнете навреме“ (Жан дьо ла Фонтен)|您好,您的詩作紙飞机诗目前正顺风航行。 新的预计到达日期是:$new_date_arrivee 。 发送者和接收者已被告知情况。 追蹤您的诗作紙飞机 : $url-plane 。 “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)|こんにちは、あなたの飛行機の詩は現在好風を楽しんでいます。 彼の新しい到着予定日は現在 $new_date_arrivee です。 送信者と受信者に状況が通知されています。 あなたの飛行機の詩に従うには:$url_avion 。 「走る意味はありません。時間通りに始めなければなりません」(ジャン・ド・ラ・フォンテーヌ)|Hola, tu avión-poema disfruta actualmente de vientos favorables. Su nueva fecha estimada de llegada es ahora: $new_date_arrivee. El remitente y el destinatario han sido informados de la situación. Para seguir tu avión-poema: $url_avion . \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine)|Olá, seu avião-poema está desfrutando de ventos favoráveis. Sua nova data estimada de chegada é agora: $new_date_arrivee. O remetente e o destinatário foram informados da situação. Para seguir seu avião-poema: $url_avion . “Não adianta correr, tem que começar na hora” (Jean de la Fontaine)|مرحبًا ، تتمتع الطائرة القصيدة الخلصة بك حاليًا بالرياح المواتية. تاريخ وصولها المقدر الجديد هو الآن: $new_date_arrivee. تم إبلاغ المرسل والمتلقي بالموقف. لمتابعة الطائرة-القصيدة الخاصة بك: $url_avion . لا فائدة من الجري ، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين)
Objet_Peripetie_Vents_porteurs|Notification de vol: Vents favorables|Flight notification: Favorable winds !|Flugbenachrichtigung: Günstige Winde !|Известие за полет: Благоприятни ветрове|航班通知:顺风|フライト通知:好ましい風|Notificación de vuelo: Vientos favorables|Notificação de voo: ventos favoráveis|إشعار الرحلة: رياح مواتية
Peripetie_Collision_Oiseau|Bonjour, Nous avons le regret de vous informer que votre avion-poème est entrée en collision avec un banc d'oiseaux migrateurs. Événement tragique et rarissime! Ce dernier a disparu de nos radars, peu après nous avoir lancé un signal de détresse. L'expéditeur et le destinataire on été informé.e.s de la situation. Nous vous invitons à lancer un nouvel avion-poème sur www.avion-poe.me. Acceptez toute notre sympathie.|Hello, We regret to inform you of a tragic and extremely rare event! Your flight-poem collided with a flock of migratory birds and disappeared from radar shortly after emitting a distress signal. The sender and the recipient have been informed of the situation. We invite you to launch a new flight-poem on www.avion-poe.me . Please accept our regrets.|Guten Tag! Wir bedauern, Ihnen mitteilen zu müssen, dass Ihr Poesie-Flieger mit einem Vogelschwarm kollidiert ist. Ein äußerst seltenes, aber tragisches Ereignis! Das Flugzeug ist vom Radar verschwunden, kurz nachdem es ein Notsignal abgegeben hatte. Der Absender und der Empfänger wurden über die aktuelle Situation informiert. Wir laden Sie ein, einen neuen Poesie-Flieger auf www.avion-poe.me zu starten. Wir bedauern diese Umstände! |Здравейте, съжаляваме да ви информираме, че самолетът поема ви се е сблъскал с мигриращи птици. Трагично и изключително рядко събитие! Последният изчезна от радарите ни, малко след като ни подаде сигнал за бедствие. Подателят и получателят са информирани за ситуацията. Каним ви да пуснете нов самолет-поема на www.avion-poe.me . Приемете нашето съчувствие.|您好,很遗憾地通知您,您的诗作紙飞机撞上一群候鸟。 這是极为罕见而令人悲痛的事件! 它在向我们发出求救信号后不久,即从我们的雷达中消失。 发送者和接收者已被告知情况。 我们懇请您在 www.avion-poe.me 上发送一架新的诗作紙飞机。 請接受我们的同情|こんにちは、残念ながらあなたの詩の飛行機が渡り鳥の群れと衝突したことをお知らせします。 悲劇的で非常にまれなイベント! 後者は、遭難信号を送った直後にレーダーから消えました。 送信者と受信者に状況が通知されています。 www.avion-poe.me で新しい飛行機の詩を発表することをお勧めします。 お見舞い申し上げます。|Hola, Lamentamos informarte que tu avión-poema ha chocado con un banco de aves migratorias. ¡Suceso trágico y extremadamente raro! Este último desapareció de nuestros radares, poco después de darnos una señal de socorro. El remitente y el destinatario han sido informados de la situación. Te invitamos a lanzar un nuevo avión-poema en www.avion-poe.me . Acepta nuestra simpatía.|Olá, Lamentamos informar que seu avião-poema colidiu com um cardume de aves migratórias. Evento trágico e extremamente raro! Este último desapareceu de nossos radares, logo após nos dar um sinal de socorro. O remetente e o destinatário foram informados da situação. Convidamos você a lançar um novo avião-poema em www.avion-poe.me . Aceite nossa simpatia.|مرحباً ، نأسف لإبلاغك أن طائرة-قصيدتك اصطدمت بالطيور المهاجرة. حدث مأساوي ونادر للغاية! اختفىت الأخيرة من راداراتنا ، بعد فترة وجيزة من إعطائنا إشارة استغاثة. تم إبلاغ المرسل والمتلقي بالموقف. ندعوك لإطلاق طائرة قصيدة جديدة على www.avion-poe.me . اقبل تعاطفنا.
Notification_denvoi_Expediteur|Bonjour, \n\n Vous venez de lancer un avion-poème à destination de $destinataire le $date_depart. \n Votre message:\n\n $message \n Nous lui avons notifié cet envoi. Vous pouvez suivre votre avion-poème ici sur la carte : \n $url_avion \n Date estimée d’arrivée : $date_arrivee \n\n Merci de prendre votre temps ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >nous soutenir ici</a> \n|Hello, \n\n You have just launched a flight-poem to $destinataire on $date_depart. Your message: \n\n $message \n\n She/he has been notified. You can follow your flight-poem here on the map: \n $url_avion \n Estimated date of arrival: $date_arrivee \n\n Thank you for taking your time! \n \"Rushing is useless; one has to leave on time.\"  (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >support us here</a> \n|Guten Tag,\n\n Sie haben gerade einen Poesie-Flieger nach $destinataire am $date_depart losgeschickt. \n Ihre Nachricht:\n\n $message \n Wir haben den Empfänger/die Empfängerin über diese Sendung informiert. Sie können Ihren Poesie-Flieger hier auf der Karte verfolgen:\n $url_avion \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Vielen Dank, dass Sie sich die Zeit genommen haben! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >willkommen</a> \n|Здравейте, \n\n токущо стартирахте самолет–поема за $destinataire на $date_depart. Вашето съобщение: \n\n $message \n\n Ние го-я уведомихме за тази пратка. Можете да проследите самолет- поемата си тук на картата: \n $url_avion \n Приблизителна дата на пристигане: $date_arrivee \n\n Благодарим ви и ви каним да се насладите на минаващото време! \n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >добре дошла</a> \n|您好,您刚刚在 $date_depart 上向 $destinataire 发送了一架詩作紙飞机。 您的信息: \n\n $message \n\n 他/他已收到通知。 您可以在地图上追蹤詩作紙飞机: \n $url_avion \n 预计到达日期:$date_arrivee \n\n 感谢您抽出宝贵的时间!\n “跑是没有用的;關鍵是必须及时出發。” (让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n |こんにちは、 $date_depart 発 $destinataire 行きの飛行機の詩が飛び立ちました。あなたのメッセージ:\n\n $message \n\n 受信者にこのフライトを通知しました。次の地図から飛行状況を追跡していただけます:\n $url_avion \n 到着予定日: $date_arrivee \n\n お時間をいただき、ありがとうございます! 「急ぐことに意味はない。時間通りに出発しなければならない。」 (ジャン・ドゥ・ラ・フォンテーヌ)\n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n |Hola, \n\n Acabas de lanzar un avión-poema a $destinataire en $date_depart. Su mensaje: \n\n $message \n\n Le notificamos de este envío. Puedes seguir tu avión-poema aquí en el mapa: \n $url_avion \n Fecha estimada de llegada: $date_arrivee \n\n ¡Gracias por tomarte tu tiempo! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >puede apoyarnos aquí</a> \n|Olá, \n\n Você acabou de lançar um plano-poema a $destinataire em $date_depart. Sua mensagem: \n\n $message \n\n Nós o notificamos sobre esta remessa. Você pode seguir seu avião-poema aqui no mapa: \n $url_avion \n Data estimada de chegada: $date_arrivee \n\n Obrigado por dedicar seu Line truncated
Objet_Notification_denvoi_Expediteur|Notification d'envoi: Avion-poème en vol vers $destinataire|Dispatch notification: Flight-poem in flight to $destinataire|Versandbenachrichtigung: Poesie-Flieger auf dem Flug nach $destinataire|Известие за изпращане: Самолет–поема в посока към $destinataire|派送通知:詩作紙飞机飞往 $destinataire|離陸の通知:$destinataire 行きの飛行機の詩|Notificación de envío: avión-poema en vuelo a $destinataire|Notificação de envio: Avião-poema em vôo para $destinataire|إخطار بالإرسال: طائرة-قصيدة في رحلة إلى صديقك
Notification_denvoi_Destinataire_ExpediteurConnu|Bonjour,\n\n $expediteur vient de faire décoller un avion-poème à votre destination. \n Date estimée d’arrivée: $date_arrivee \n Vous pouvez le suivre ici sur la carte : \n $url_avion \n\n Merci de prendre votre temps et à bientôt sur http://avion-poe.me ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hello,\n\n $expediteur just launched a flight-poem at your destination. \n Estimated date of arrival: $date_arrivee \n You can follow it here on the map: \n $url_avion \n\n Thank you for taking your time and see you soon at http://avion-poe.me ! \n \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag, \n\n $expediteur hat gerade einen Poesie-Flieger an Ihren Zielort gesendet. \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Sie können ihn hier auf der Karte verfolgen: \n $url_avion \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf http://avion-poe.me ! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n $expediteur току-що изпрати самолет–поема в посока към вас. \n Очаквана дата на пристигане: $date_arrivee \n\n Можете да я проследите тук на картата: \n $url_avion \n\n Благодарим ви и ви каним да се насладите на минаващото време! Ще се видим скоро на www.avion-poe.me ! \n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,$expediteur 刚刚向您指定的目的地發送了一架诗作紙飞机。 预计到达日期:$date_arrivee 。 您可以在地图上追蹤它:\n $url_avion \n\n 感谢您抽出宝贵的时间,并很快在 http://avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、 $expediteur があなた宛ての飛行機の詩を飛ばしました \n 到着予定日: $date_arrivee \n 次の地図から飛行状況を追跡していただけます:\n $url_avion \n\n お時間をいただき、ありがとうございます \n ぜひ http://avion-poe.me もご覧ください。「急ぐことに意味はない。時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n $expediteur acaba de despegar un avión-poema en su destino. \n Fecha estimada de llegada: $date_arrivee \n Puedes seguirlo aquí en el mapa: \n $url_avion \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en http://avion-poe.me ! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Olá, \n\n $expediteur acabou de decolar um avião-poema no seu destino. \n Data estimada de chegada: $date_arrivee \n Você pode acompanhar aqui no mapa: \n $url_avion \n\n Obrigado por dedicar seu tempo e nos vemos em breve em http://avion-poe.me ! \n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبا \n أقلعت لتوها من \n $expediteur \n قصيدة-طائرة للوجهة التي حددتها \n التاريخ المحتمل للوصول \n $date_arrivee \n يمكنك متابعتها هنا على الخريطة \n $url_avion \n شكرًا لك على وقتك ونراكم قريبًا على \n http://avion-poe.me \n لا تستعجل، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين) \n\n موقعLine truncated
Objet_Notification_denvoi_Destinataire_ExpediteurConnu|Notification: $expediteur vous a envoyé un avion-poème|Notification: $expediteur sent you a flight-poem|Benachrichtigung: $expediteur hat Ihnen einen Poesie-Flieger geschickt|Известие: $expediteur ви изпрати самолет–поема|通知:$expediteur 发送给您一架诗作紙飞机|通知: $expediteur があなた宛ての飛行機の詩を飛ばしました|Notificación: $expediteur te envió un avión-poema|Notificação: $expediteur enviou-lhe um avião-poema|إشعار: أرسل لك صديق قصيدة-طائرة
Notification_denvoi_Destinataire_ExpediteurAnonyme|Bonjour, \n\n Quelqu'un vient de faire décoller un avion-poème à votre destination. \n Date estimée d’arrivée : $date_arrivee \n Vous pouvez le suivre ici sur la carte : \n $url_avion \n\n Merci de prendre votre temps et à bientôt sur http://avion-poe.me ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n Someone just launched a flight-poem at your destination. \n Estimated date of arrival: $date_arrivee \n\n You can follow it here on the map: \n $url_avion \n\n Thank you for taking your time and see you soon at http://avion-poe.me ! \n \"Rushing is useless; one has to leave on time\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag, \n\n Jemand hat gerade einen Poesie-Flieger an Ihren Ziel gesendet. \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Sie können ihn hier auf der Karte verfolgen: \n $url_avion \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf http://avion-poe.me ! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Някой току-що е изпратил самолет–поема в посока към вас. \n Очаквана дата на пристигане: $date_arrivee \n\n Можете да я проследите тук на картата: \n $url_avion \n\n Благодарим ви и ви каним да се насладите на минаващото време! Ще се видим скоро на www.avion-poe.me ! \n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,某人刚向您的所在地發送一架诗作紙飞机。 预计到达日期:$date_arrivee 。\n 您可以在地图上追蹤它:\n $url_avion \n\n 感谢您抽出宝贵的时间,并很快在 http://avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、誰かがあなた宛ての飛行機の詩を飛ばしました。 到着予定日:$date_arrivee \n 次の地図から追跡していただけます:\n $url_avion \n\n お時間をいただき、ありがとうございます。ぜひhttp://avion-poe.meもご覧ください。「急ぐことに意味はない。時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Alguien acaba de despegar un avión-poema en tu destino. \n Fecha estimada de llegada: $date_arrivee \n\n Puedes seguirlo aquí en el mapa: \n $url_avion \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en http://avion-poe.me ! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Olá, \n\n Alguém acabou de decolar um avião-poema no seu destino. \n Data estimada de chegada: $date_arrivee \n Você pode acompanhar aqui no mapa: \n $url_avion \n\n Obrigado por dedicar seu tempo e nos vemos em breve em http://avion-poe.me ! \n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبًا \n لقد أقلع شخص ما للتو قصيدة-طائرة بإتجاهك \n التاريخ المحتمل للوصول \n $date_arrivee. \n يمكنك متابعتها هنا على الخريطة: \n $url_avion \n\n شكرًا لك على وقتك ونراكم قريبًا على \n http://avion-poe.me \n لا تستعجل، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين) \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n hLine truncated
Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme|Notification: un.e ami.e vous a envoyé un avion-poème|Notification: a friend sent you a flight-poem|Benachrichtigung: Ein Freund hat Ihnen einen Poesie-Flieger geschickt|Известие: приятел-ка ви изпрати самолет–поема|通知:一位朋友寄给您一架诗作紙飞机|通知:ご友人があなたに飛行機の詩を飛ばしました|Notificación: un amigo te envió un avión-poema|Notificação: um amigo enviou-lhe um avião-poema |إشعار: أرسل لك صديق قصيدة-طائرة
Notification_Arrivee_Expediteur|Bonjour, \n\n Votre avion-poème est parvenu à destination aujourd'hui et votre message-poème a été délivré à $destinataire . \n Si votre message était public, il est dorénéavant visible dans l'onglet Anthologie. \n\n Merci d'avoir pris votre temps et à bientôt sur http://avion-poe.me ! \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n Your flight-poem has reached its destination today and your message has been delivered to $destinataire . \n If your message was public, it is now visible in the Anthology tab. \n\n Thank you for taking your time and see you soon on http://avion-poe.me ! \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag, \n\n Ihr Poesie-Flieger hat soeben sein Ziel erreicht und Ihre Nachricht wurde an $destinataire übermittelt. \n Wenn Ihre Nachricht für die Öffentlichkeit bestimmt ist, wird sie auf der in der Anthologie angezeigt. \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf http://avion-poe.me ! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Самолет–поемата ви е достигнала дестинацията си днес и съобщението ви е доставено на $destinataire . \n Ако съобщението ви е публично, то вече се вижда в раздела Антология. \n\n Благодарим ви, че отделихте време и ще се видим скоро на http://avion-poe.me ! \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,您的诗作紙飞机今天已经到达目的地,您的詩作信息也已经传递给 $destinataire 。\n 如果您的信息是公开的,今後可在选集插頁标签中看到该信息。 感谢您抽出宝贵的时间,并很快在 http://avion-poe.me 见!\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、詩の飛行機は今日目的地に到着し、あなたのメッセージは $destinataire に届けられました。 \n メッセージを公開にしている場合は、[作品集]タブに表示されます。お時間をいただき、ありがとうございます。ぜひ http://avion-poe.me もご覧ください。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Tu avión de poemas ha llegado a su destino hoy y tu mensaje ha sido entregado a $destinataire . \n Si su mensaje era público, ahora está visible en la pestaña Antología. \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en http://avion-poe.me ! \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Olá, \n\n Seu avião-poema chegou ao destino hoje e sua mensagem foi entregue a $destinataire . \n Se sua mensagem era pública, agora está visível na aba Antologia. \n\n Obrigado por dedicar seu tempo e nos vemos em breve no http://avion-poe.me ! \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبًا \n وصلت طائرة-قصيدة الخاصة بك إلى وجهتها اليوم وتم تسليم رسالتك إلى \n $destinataire \n إذا كانت رسالتك عامة، فستظهر الآن في علامة تبويب المقتنعات \n شكرًا لك على وقتك، نراك قريبًا على \n http://avion-poe.me ! \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr
Objet_Notification_Arrivee_Expediteur|Notification: Avion-poème arrivé à destination|Notification: Flight-poem has arrived at destination|Benachrichtigung: Poesie-Flieger am Ziel angekommen|Известие: Самолет–поемата пристигна по дестинация|通知:诗作紙飞机已到达目的地|通知:飛行機の詩が目的地に到着しました|Notificación: el avión-poema llegó a destino|Notificação: o avião-poema chegou ao destino|إشعار: وصلت الطائرة-القصيدة إلى وجهتها
Notification_Arrivee_Destinataire|Bonjour, \n\n Voici l'avion-poème que $expediteur vous a envoyé: \n\n $message \n\n Vous souhaiteriez lui répondre? Devenez à votre tour lanceur.se d'avion-poème. \n\n Merci d'avoir pris votre temps et à bientôt sur http://avion-poe.me ! \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >nous soutenir ici</a> \n|Hello, \n\n Here is the flight-poem that $expediteur sent you: \n\n $message \n\n Would you like to reply to him/her? You too can become a flight-poem launcher. \n\n Thank you for taking your time and see you soon at http://avion-poe.me ! \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >support us here</a> \n|Guten Tag, \n\n hier ist der Poesie-Flieger, den $expediteur Ihnen gesendet hat: \n\n $message \n\n Möchten Sie ihm/ihr antworten? Dann geben Sie selbst einen Poesie-Flieger in Auftrag! \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf http://avion-poe.me ! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >willkommen</a> \n|Здравейте, \n\n Ето самолет–поемата, която $expediteur ви изпрати: \n\n $message \n\n Бихте ли искали да му-й отговорите? На ваш ред, станете изпращач на самолет–поема. \n\n Благодарим ви, че отделихте време и ще се видим скоро на http://avion-poe.me ! \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >добре дошла</a> \n|您好,这是 $expediteur 发送给您的诗作紙飞机 : \n\n $message \n\n 您想回复他吗? 成为诗作紙飞机發送者。 感谢您抽出宝贵的时间,并很快在 http://avion-poe.me 见!\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n |こんにちは、こちらが $expediteur があなたに宛てた飛行機の詩です: \n\n $message \n\n 返信しますか? 飛行機の詩の送信者になることができます。お時間をいただきありがとうございます。ぜひ http://avion-poe.me もご覧ください。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます: \n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n |Hola, \n\n aquí está el avión-poema que te envió $expediteur : \n\n $message \n\n ¿Quieres responderle? A su vez, conviértete en un lanzador de aviones-poemas. \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en http://avion-poe.me ! \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >puede apoyarnos aquí</a> \n|Olá, \n\n aqui está o avión-poema que $expediteur lhe enviou: \n\n $message \n\n Gostaria de responder a ele? Por sua vez, torne-se um lançador de avião-poema. \n\n Obrigado por dedicar seu tempo e nos vemos em breve em http://avion-poe.me ! \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >você pode nos apoiar aqui</a> \n|مرحبًا \n ها هي الطائرة القصيدة التي أرسلها \n $expediteur \n لك \n\n $message \n\n هل تود الرد عليها؟يمكنك أنت أيضا ان تصبح مرسلاً لـطائرة-قصيدة \n شكرًا لك على وقتك ونراكم قريبًا على \n http://avion-poe.me ! \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n
Objet_Notification_Arrivee_Destinataire|Notification: L'avion-poème envoyé par $expediteur est arrivé à destination !|Notification: The flight-poem sent by $expediteur has arrived at destination!|Benachrichtigung: Der von $expediteur gesendete Poesie-Flieger ist am Ziel angekommen!|Известие: Самолет–поемата изпратена от $expediteur е пристигнала по дестинация!|通知:$expediteur 寄送的诗作紙飞机已经到达目的地!|通知: $expediteur が送った飛行機の詩が目的地に到着しました!|Notificación: ¡El avión-poema enviado por $expediteur ha llegado a su destino!|Notificação: O avião-poema enviado por $expediteur chegou ao seu destino!|إشعار: الطائرة-القصيدة التي أرسلها صديق وصلت إلى وجهتها!
Peripetie_Perturbation|Bonjour, \n\n Votre avion-poème est pris dans une perturbation et peine à maintenir son cap. \n Sa nouvelle date estimée d'arrivée est maintenant le: $new_date_arrivee \n L'expéditeur et le destinataire ( $destinataire ) ont été informé.e.s de la situation. \n Pour suivre votre avion-poème: \n $url_avion \n\n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n Your flight-poem is caught in turbulence and is struggling to stay on course. \n Its new estimated date of arrival is now: $new_date_arrivee. \n The sender and the recipient ( $destinataire ) have been informed of the situation. \n To follow your flight-poem: \n $url_avion \n\n \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag, \n\n Ihr Poesie-Flieger ist in Turbulenzen geraten und hat Mühe, auf Kurs zu bleiben. \n Sein neues voraussichtliches Ankunftsdatum lautet jetzt: $new_date_arrivee \n Der Absender und der Empfänger ( $destinataire ) wurden über die aktuelle Flugsituation informiert. \n Hier können Sie Ihren Poesie-Flieger verfolgen: \n $url_avion \n\n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Самолет–поемата изпитва премеждие и се бори да остане по курса си. \n Новата й приблизителна дата на пристигане е : $new_date_arrivee \n Подателят и получателят са информирани за ситуацията. Отидете тук, за да следвате самолет–поемата си: \n $url_avion \n\n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,\n\n 您的诗作紙飞机陷入乱流,正在努力保持前进的航道。 新的预计到达日期是:$new_date_arrivee \n 发送者和接收者已被告知情况。 \n 追蹤您的詩作紙飞机: \n $url_avion \n\n “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、\n\n あなたの飛行機の詩は乱気流に巻き込まれ、非常に不安定な状態になっています。 現在の新しい到着予定日は $new_date_arrivee です \n 送信者と受信者にはすでに状況が通知されています。 \n 飛行機の詩を追跡するには: \n $url_avion \n\n 「急ぐことに意味はない。時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Tu avión-poema está atrapado en un disturbio y está luchando por mantener el rumbo. \n Su nueva fecha estimada de llegada es ahora: $new_date_arrivee \n El remitente y el destinatario ( $destinataire ) han sido informados de la situación. \n Para seguir tu avión-poema: \n $url_avion \n\n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Olá, \n\n O avião- poema do seu foi pego em um distúrbio e está lutando para se manter no curso. \n Sua nova data estimada de chegada é agora: $new_date_arrivee \n O remetente e o destinatário ( $destinataire ) foram informados da situação. \n Para seguir seu avião-poema: \n $url_avion \n\n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبًا \n لقد علقت الطائرة-القصيدة الخاصة بك في مطبات جوية وتصارع من أجل الثبات في مسارها \n تاريخ وصولها المحتمل الجديد هو الآن \n $new_dLine truncated
Objet_Peripetie_Perturbation|Notification de vol: Votre avion-poème est ralenti|Flight notification: Your flight-poem has been slowed down!|Flugbenachrichtigung: Die Ankunft Ihres Poesie-Fliegers verzögert sich!|Известие за полет: Самолет–поемата ви е забавена|航班通知:您的诗作紙飞机減速了|フライト通知:飛行機の詩の速度が低下しています|Notificación de vuelo: su avión-poema está ralentizado|Notificação de voo: seu avião-poema está lento|إشعار الرحلة: تباطأت الطائرة-القصيدة الخاصة بك
Peripetie_Vents_porteurs|Bonjour, \n\n Votre avion-poème bénéficie actuellement de vents favorables. \n Sa nouvelle date estimée d'arrivée est maintenant le: \n $new_date_arrivee \n L'expéditeur et le destinataire ( $destinataire ) ont été informé.e.s de la situation. \n\n Pour suivre votre avion-poème sur la carte: \n $url_avion \n\n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n Your flight-poem is currently enjoying favorable winds. \n Its new estimated date of arrival is now: $new_date_arrivee. \n The sender and the recipient ( $destinataire ) have been informed of the situation. \n To follow your flight-poem: \n $url_avion \n\n \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag ! \n\n Ihr Poesie-Flieger profitiert derzeit von günstigen Winden. \n Sein neues voraussichtliches Ankunftsdatum lautet jetzt: $new_date_arrivee \n Der Absender und der Empfänger ( $destinataire ) wurden über die aktuelle Flugsituation informiert. \n Hier können Sie Ihren Poesie-Flieger verfolgen: \n $url_avion . \n\n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n В момента вашата самолет–поема се радва на благоприятни ветрове. \n Новата й приблизителна дата на пристигане е : $new_date_arrivee \n Подателят и получателят са информирани за ситуацията. \n Отидете тук, за да следвате самолет–поемата си: \n $url_avion \n\n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好, \n\n 您的詩作紙飞机诗目前正顺风航行。 新的预计到达日期是: $new_date_arrivee 。 发送者和接收者已被告知情况。 \n 追蹤您的诗作紙飞机 : \n $url_plane \n\n “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹) \n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、あなたの飛行機の詩は現在好風に乗り、順調に進んでいます \n 現在の新しい到着予定日は \n $new_date_arrivee \n です 送信者と受信者にはすでに状況が通知されています 飛行機の詩を追跡するには \n $url_avion \n\n 「急ぐことに意味はない \n 時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています \n ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Tu avión-poema disfruta actualmente de vientos favorables. \n Su nueva fecha estimada de llegada es ahora: $new_date_arrivee \n El remitente y el destinatario ( $destinataire ) han sido informados de la situación. \n Para seguir tu avión-poema: \n $url_avion \n\n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Olá, \n\n Seu avião-poema está desfrutando de ventos favoráveis. \n Sua nova data estimada de chegada é agora: $new_date_arrivee \n O remetente e o destinatário ( $destinataire ) foram informados da situação. \n Para seguir seu avião-poema: \n $url_avion \n\n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبًا \n تتمتع الطائرة القصيدة الخلصة بك حاليًا بالرياح المواتية \n تاريخ وصولها المحتمل الجديد هو الآن \n $new_date_arrivee \n\n تم إبلاغ المرسل والمتلقي بالموقف \n لمتابعة الطائرة-القصيدة الخاصة بك \n $url_avion \n\n لا تستعجل، عليك Line truncated
Objet_Peripetie_Vents_porteurs|Notification de vol: Vents favorables|Flight notification: Favorable winds !|Flugbenachrichtigung: Günstige Winde !|Известие за полет: Благоприятни ветрове|航班通知:顺风|フライト通知:好風|Notificación de vuelo: Vientos favorables|Notificação de voo: ventos favoráveis|إشعار الرحلة: رياح مواتية
Peripetie_Collision_Oiseau|Bonjour, \n\n Nous avons le regret de vous informer que votre avion-poème est entrée en collision avec un banc d'oiseaux migrateurs. Événement tragique et rarissime! \n Ce dernier a disparu de nos radars, peu après nous avoir lancé un signal de détresse. \n L'expéditeur et le destinataire ( $destinataire ) on été informé.e.s de la situation. \n Nous vous invitons à lancer un nouvel avion-poème sur http://avion-poe.me . \n Acceptez toute notre sympathie.|Hello, \n\n We regret to inform you of a tragic and extremely rare event! Your flight-poem collided with a flock of migratory birds and disappeared from radar shortly after emitting a distress signal. The sender and the recipient ( $destinataire ) have been informed of the situation. We invite you to launch a new flight-poem on http://avion-poe.me . \n Please accept our regrets. \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag! \n\n Wir bedauern, Ihnen mitteilen zu müssen, dass Ihr Poesie-Flieger mit einem Vogelschwarm kollidiert ist. Ein äußerst seltenes, aber tragisches Ereignis! Das Flugzeug ist vom Radar verschwunden, kurz nachdem es ein Notsignal abgegeben hatte. Der Absender und der Empfänger ( $destinataire ) wurden über die aktuelle Situation informiert. Wir laden Sie ein, einen neuen Poesie-Flieger auf http://avion-poe.me zu starten. \n Wir bedauern diese Umstände! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Със съжаление ви съобщаваме, че самолет–поемата ви се е сблъскала с мигриращи птици. Трагично и изключително рядко събитие! Тя изчезна от радарите ни, малко след като ни подаде сигнал за бедствие. Подателят и получателят са информирани за ситуацията. Каним ви да пуснете нова самолет-поема на http://avion-poe.me . \n Приемете нашето съчувствие. \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,很遗憾地通知您,您的诗作紙飞机撞上一群候鸟。 這是极为罕见而令人悲痛的事件! 它在向我们发出求救信号后不久,即从我们的雷达中消失。 发送者和接收者已被告知情况。 我们懇请您在 http://avion-poe.me 上发送一架新的诗作紙飞机。 請接受我们的同情 \n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、非常に残念ながら、送信された飛行機の詩が渡り鳥の群れと衝突したことをお知らせします。痛ましく、非常に稀なアクシデントです!飛行機は遭難信号を送信した直後にレーダーから消えました。送信者と受信者にはすでに状況が通知されています。 http://avion-poe.me から新しい飛行機の詩を飛ばすことをお勧めします。お見舞い申し上げます。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Lamentamos informarte que tu avión-poema ha chocado con un banco de aves migratorias. ¡Suceso trágico y extremadamente raro! Este último desapareció de nuestros radares, poco después de darnos una señal de socorro. El remitente y el destinatario ( $destinataire ) han sido informados de la situación. Te invitamos a lanzar un nuevo avión-poema en http://avion-poe.me . \n Acepta nuestra simpatía. \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Olá, \n\n Lamentamos informar que seu avião-poema colidiu com um cardume de aves migratórias. Evento trágico e extremamente raro! Este último desapareceu de nossos radares, logo após nos dar um sinal de socorro. O remetente e o destinatário ( $destinataire ) foram informados da situação. Convidamos você a lançar um novo avião-poema em http://avion-poe.me . \n Aceite nossa simpatia. \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحباً \n نأسف لإبلاغك أن طائرة-قصيدتك اصطدمت بالطيور المهاجرة. حدث مأساوي ونادر للغLine truncated
Objet_Peripetie_Collision_Oiseau|Notification d'interruption de vol|Notification: flight interruption !|Benachrichtigung: Flugunterbrechung !|Известие: прекъсване на полета|通知:航班中断|通知:フライトの中断|Notificación: interrupción del vuelo|Notificação: interrupção do voo|إشعار: توقف الرحلة
Peripetie_OVNI|Bonjour, Nous avons le regret de vous informer que votre avion-poème est entrée en collision avec un OVNI. Événement tragique et rarissime! L'expéditeur et le destinataire on été informé.e.s de la situation Nous vous invitons à ne pas désespérer et à lancer un nouvel avion-poème sur www.avion-poe.me . Acceptez toute notre sympathie.|Hello, We regret to inform you of a tragic and extremely rare event! Your flight-poem collided with a UFO. The sender and the recipient have been informed of the situation. We invite you not to despair and to launch a new flight-poem on www.avion-poe.me . Please accept our regrets.|Guten Tag! Wir müssen Ihnen leider mitteilen, dass Ihr Poesie-Flieger mit einem UFO kollidiert ist. Ein äußerst seltenes, aber tragisches Ereignis! Der Absender und der Empfänger wurden über die aktuelle Situation informiert. Wir laden Sie ein, deswegen nicht zu verzweifeln und einen neuen Poesie-Flieger auf www.avion-poe.me zu starten. Wir bedauern diese Umstände! |Здравейте, със съжаление ви съобщаваме, че самолетът поема ви се е сблъскал с НЛО. Трагично и изключително рядко събитие! Подателят и получателят са информирани за ситуацията. Каним ви да не се отчайвате и да пуснете нова самолетна-поема на www.avion-poe.me . Приемете нашето съчувствие.|您好,很遗憾地通知您,您的诗作紙飞机撞上不明飞行物。 這是极为罕见而令人悲痛的事件! 发送者和接收者已被告知情况,请您不要失望,并在 www.avion-poe.me 上发送一架新的诗作紙飛機。 請接受我们的同情。|こんにちは、あなたの詩の飛行機がUFOと衝突したことをお知らせすることを残念に思います。 悲劇的で非常にまれなイベント! 送信者と受信者に状況が通知されました。絶望しないで、 www.avion-poe.me で新しい飛行機の詩を発表することをお勧めします。 お見舞い申し上げます。|Hola, Lamentamos informarte que tu avión-poema ha chocado con un OVNI. ¡Suceso trágico y extremadamente raro! El remitente y el destinatario han sido informados de la situación, los invitamos a no desesperarse y lanzar un nuevo avión-poema en www.avion-poe.me . Acepta nuestra simpatía.|Olá, lamentamos informar que seu avião-poema colidiu com um OVNI. Evento trágico e extremamente raro! O remetente e o destinatário foram informados da situação, convidamo-lo a não se desesperar e a lançar um novo avião-poema em www.avion-poe.me . Aceite nossa simpatia.|مرحبًا ، نأسف لإبلاغك أن الطائرة القصيدة الخاصة بك قد اصطدمت بجسم طائر غير معروف . حدث مأساوي ونادر للغاية! تم إبلاغ المرسل والمتلقي بالموقف ، ونحن ندعوكم إلى عدم اليأس وإطلاق طائرة-قصيدة جديدة على www.avion-poe.me . اقبل تعاطفنا.
Peripetie_OVNI|Bonjour, \n\n Nous avons le regret de vous informer que votre avion-poème est entrée en collision avec un OVNI. Événement tragique et rarissime! \n L'expéditeur et le destinataire ( $destinataire ) on été informé.e.s de la situation. \n Nous vous invitons à ne pas désespérer et à lancer un nouvel avion-poème sur http://avion-poe.me . \n Acceptez toute notre sympathie. \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n We regret to inform you of a tragic and extremely rare event! Your flight-poem collided with a UFO. \n The sender and the recipient ( $destinataire ) have been informed of the situation. \n We invite you not to despair and to launch a new flight-poem on http://avion-poe.me . \n Please accept our regrets. \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag! \n\n Wir müssen Ihnen leider mitteilen, dass Ihr Poesie-Flieger mit einem UFO kollidiert ist. Ein äußerst seltenes, aber tragisches Ereignis! Der Absender und der Empfänger ( $destinataire ) wurden über die aktuelle Situation informiert. \n Wir laden Sie ein, deswegen nicht zu verzweifeln und einen neuen Poesie-Flieger auf http://avion-poe.me zu starten. \n Wir bedauern diese Umstände! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Със съжаление ви съобщаваме, че самолетът поема ви се е сблъскал с НЛО. Трагично и изключително рядко събитие! Подателят и получателят ( $destinataire ) са информирани за ситуацията. \n Каним ви да не се отчайвате и да пуснете нова самолетна-поема на http://avion-poe.me .\n Приемете нашето съчувствие. \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,很遗憾地通知您,您的诗作紙飞机撞上不明飞行物。 這是极为罕见而令人悲痛的事件! 发送者和接收者已被告知情况,请您不要失望,并在 http://avion-poe.me 上发送一架新的诗作紙飛機。 請接受我们的同情。 \n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、非常に残念ながら、あなたの詩の飛行機がUFOと衝突したことをお知らせします。痛ましく、非常に稀なアクシデントです!送信者と受信者にはすでに状況が通知されています。落ち込まず、 http://avion-poe.me から新しい飛行機の詩を飛ばすことをお勧めします。 お見舞い申し上げます。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Lamentamos informarte que tu avión-poema ha chocado con un OVNI. ¡Suceso trágico y extremadamente raro! \n El remitente y el destinatario ( $destinataire ) han sido informados de la situación, \n Los invitamos a no desesperarse y lanzar un nuevo avión-poema en http://avion-poe.me . \n Acepta nuestra simpatía. \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Olá, \n\n Lamentamos informar que seu avião-poema colidiu com um OVNI. Evento trágico e extremamente raro! \n O remetente e o destinatário ( $destinataire ) foram informados da situação. \n Convidamo-lo a não se desesperar e a lançar um novo avião-poema em http://avion-poe.me . \n Aceite nossa simpatia. \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|مرحبًا \n نأسف لإبلاغك أن الطائرة-القصيدة الخاصة بك قد اصطدمت بجسم طائر غير معروف. حدث مأساوي ونادر للغاية \n تم إبلاغ المرسل والمتلقي بالموقف، ونحن ندعوكم إلى عدم اليأس وإطلاق طائرة-قصيدة جديدة على \n http://avion-poe.me \n تقبلوا أسفنا \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr
Objet_Peripetie_OVNI|Notification d'interruption de vol|Notification: flight interruption!|Benachrichtigung: Flugunterbrechung !|Известие: прекъсване на полета|通知:航班中断|通知:フライトの中断|Notificación: interrupción del vuelo|Notificação: interrupção do voo|إشعار: توقف الرحلة
Peripetie_Drone|Bonjour, Nous avons le regret de vous informer que votre avion-poème vient d'être intercepté par un drone appartenant à un acteur non-identifié. Événement tragique et rarissime! Vous n'êtes pas sans savoir que les avions-poèmes sont une espèce rare et menacée. Notre combat pacifique pour le droit à la liberté de mouvement et d'expression, ainsi qu'à la poésie sans frontières, ne doit pas s'arrêter là. Nous vous invitons à ne pas désespérer et à lancer un nouvel avion-poème sur https://www.avion-poe.me . Acceptez toute notre sympathie.|Hello, We regret to inform you of a tragic and extremely rare event! Your flight-poem has just been intercepted by a drone controlled by unidentified persons. As you know, flight-poems are a rare and endangered species. Our peaceful fight for the right to freedom of movement and expression, as well as to poetry without borders, must not stop here. We invite you not to despair and to launch a new flight-poem on www.avion-poe.me . Please accept our regrets.|Guten Tag! Wir müssen Ihnen leider mitteilen, dass Ihr Poesie-Flieger soeben von einer Drohne eines unbekannten Akteurs abgefangen wurde. Ein äußerst tragisches Ereignis! Wie Sie wissen, sind Poesie-Flieger eine sehr seltene und gefährdete Spezies. Unser friedlicher Kampf für das Recht auf Freiheit und unzensurierte Meinungsäußerung sowie auf grenzenlose Poesie darf hier nicht enden! Wir laden Sie ein, deswegen nicht zu verzweifeln und einen neuen Poesie-Flieger auf www.avion-poe.me zu starten. Wir bedauern diese Umstände!|Здравейте, със съжаление ви съобщаваме, че самолетът поема ви токущо е прихванат от дрон, принадлежащ на неидентифициран актьор. Трагично и изключително рядко събитие! Както знаете, самолетите поеми са рядък и застрашен вид. Нашата мирна борба за правото на свобода на движение и изразяване, както и на поезия без граници, не трябва да спира дотук. Каним ви да не се отчайвате и да пуснете нов самолет-поема на www.avion-poe.me . Приемете нашето съчувствие.|您好,很遗憾地通知您,您的诗作紙飞机刚刚被一架属于不明人士的无人机所拦截。 這是极为罕见而令人悲痛的事件! 如您所知,诗作紙飞机是一种稀有且濒临灭绝的物种。 我们为争取行动言论自由权以及诗歌无国界而进行的和平抗争,绝不能就此止步。 我们邀请您不要失望,并在 www.avion-poe.me 上发布新的詩作紙飞机。 請接受我们的同情。|こんにちは、残念ながら、あなたの詩の飛行機が身元不明の俳優のドローンによって傍受されたところです。 悲劇的で非常にまれなイベント! ご存知のように、詩の飛行機は希少で絶滅の危機に瀕している種です。 移動と表現の自由、そして国境のない詩に対する権利のための私たちの平和的な戦いは、そこで止まってはなりません。 絶望しないで、 www.avion-poe.me で新しい飛行機の詩を発表することをお勧めします。 お見舞い申し上げます。|Hola, Lamentamos informarte que tu avión-poema acaba de ser interceptado por un dron perteneciente a un actor no identificado. ¡Suceso trágico y extremadamente raro! Como saben, los aviones-poemas son una especie rara y en peligro de extinción. Nuestra lucha pacífica por el derecho a la libertad de movimiento y expresión, así como a la poesía sin fronteras, no debe detenerse allí. Te invitamos a no desesperarte y a lanzar un nuevo avión-poema en www.avion-poe.me . Acepta nuestra simpatía.|Olá, lamentamos informar que seu avião-poema acaba de ser interceptado por um drone pertencente a um ator não identificado. Evento trágico e extremamente raro! Como você sabe, os aviões-poemas são uma espécie rara e ameaçada de extinção. Nossa luta pacífica pelo direito à liberdade de movimento e expressão, bem como à poesia sem fronteiras, não deve parar por aí. Convidamos você a não se desesperar e a lançar um novo avião-poema em www.avion-poe.me . Aceite nossa simpatia.|مرحبًا ، نأسف لإبلاغك أن طائرة بدون طيار تابعة لممثل مجهول قد اعترضت للتو الطائرةالقصيدت الخاصة بك. حدث مأساوي ونادر للغاية! كما تعلم ، تعتبر الطائرات القصيدات من الأنواع النادرة والمهددة بالانقراض. إن نضالنا السلمي من أجل الحق في حرية الحركة والتعبير ، وكذلك الشعر بلا حدود ، يجب ألا يتوقف عند هذLine truncated
Peripetie_Drone|Bonjour, \n\n Nous avons le regret de vous informer que votre avion-poème vient d'être intercepté par un drone appartenant à un acteur non-identifié. Événement tragique et rarissime! \n L'expéditeur et le destinataire ( $destinataire ) ont été informé.e.s de la situation. \n Vous n'êtes pas sans savoir que les avions-poèmes sont une espèce rare et menacée. Notre combat pacifique pour le droit à la liberté de mouvement et d'expression, ainsi qu'à la poésie sans frontières, ne doit pas s'arrêter là. \n Nous vous invitons à ne pas désespérer et à lancer un nouvel avion-poème sur http://avion-poe.me \n Acceptez toute notre sympathie. \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n We regret to inform you of a tragic and extremely rare event! Your flight-poem has just been intercepted by a drone controlled by unidentified persons. \n The sender and the recipient ( $destinataire ) have been informed of the situation. \n As you know, flight-poems are a rare and endangered species. Our peaceful fight for the right to freedom of movement and expression, as well as to poetry without borders, must not stop here. \n We invite you not to despair and to launch a new flight-poem on http://avion-poe.me \n Please accept our regrets. \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag! \n\n Wir müssen Ihnen leider mitteilen, dass Ihr Poesie-Flieger soeben von einer Drohne eines unbekannten Akteurs abgefangen wurde. Ein äußerst tragisches Ereignis! \n Der Absender und der Empfänger ( $destinataire ) wurden über die aktuelle Situation informiert. \n Wie Sie wissen, sind Poesie-Flieger eine sehr seltene und gefährdete Spezies. Unser friedlicher Kampf für das Recht auf Freiheit und unzensurierte Meinungsäußerung sowie auf grenzenlose Poesie darf hier nicht enden! \n Wir laden Sie ein, deswegen nicht zu verzweifeln und einen neuen Poesie-Flieger auf http://avion-poe.me zu starten. \n Wir bedauern diese Umstände! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Със съжаление ви съобщаваме, че самолет–поемата ви току-що е прихваната от дрон, принадлежащ на неидентифициран агент. Трагично и изключително рядко събитие! \n Както знаете, самолет–поемите са рядък и застрашен вид. Нашата мирна борба за правото на свобода на движение и изразяване, както и на поезия без граници, не трябва да спира дотук. \n Каним ви да не се отчайвате и да пуснете нова самолет-поема на http://avion-poe.me \n Приемете нашето съчувствие. \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |您好,很遗憾地通知您,您的诗作紙飞机刚刚被一架属于不明人士的无人机所拦截。 這是极为罕见而令人悲痛的事件! 如您所知,诗作紙飞机是一种稀有且濒临灭绝的物种。 我们为争取行动言论自由权以及诗歌无国界而进行的和平抗争,绝不能就此止步。 我们邀请您不要失望,并在 http://avion-poe.me 上发布新的詩作紙飞机。 請接受我们的同情。 \n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、非常に残念ながら、あなたの詩の飛行機が身元不明のドローンによって妨害されたことをお知らせします。痛ましく、非常に稀なアクシデントです!ご存知のように、飛行機の詩は希少な絶滅危機種です。移動と表現の自由、そして国境なき詩に対する権利のための私たちの平和的な戦いを、ここで諦めるわけにはいきません。落ち込むことなく、 http://avion-poe.me から新しい飛行機の詩を飛ばすことをお勧めします。お見舞い申し上げます。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, \n\n Lamentamos informarte que tu avión-poema acaba de ser interceptado por un dron perteneciente a un actor Line truncated
Objet_Peripetie_Drone|Notification d'interruption de vol|Notification: flight interruption !|Benachrichtigung: Flugunterbrechung !|Известие: прекъсване на полета|通知:航班中断|通知:フライトの中断|Notificación: interrupción del vuelo|Notificação: interrupção do voo|إشعار: توقف الرحلة
Peripetie_LogicielLibre|Bonjour, Aujourd'hui nous célébrons la journée mondiale du logiciel libre (https://www.fsf.org/about/) . Utiliser les logiciels libres, c'est faire un choix politique et éthique affirmant le droit d'apprendre et de partager. Le logiciel libre est devenu le fondement d'une société apprenante où nous partageons nos connaissances d'une manière que d'autres peuvent exploiter et apprécier. Vive GNU/Linux et tous ses acolytes! Si vous souhaitez nous soutenir, vous pouvez le faire à $onglet_apropos . Passez une bonne journée!|Hello, Today is the Software Freedom Day (https://www.fsf.org/about/). Using free software means making a political and ethical choice in favour of the right to learn and to share. Free software has become the foundation of a society based on learning, where we share our knowledge in ways that others can use and enjoy. Long live GNU / Linux and all their kin! If you want to support us, you can do so at $onglet_apropos . Have a nice day!|Guten Tag! Heute feiern wir den Software Freedom Day (https://www.fsf.org/about/). Freie, kostenlose Software zu verwenden bedeutet, eine politische und ethische Entscheidung zu treffen, die das Recht auf gemeinsames Lernen und Partizipieren einfordert. Freie Software ist zum Fundament einer offenen, lernenden Gesellschaft geworden, in der wir unser Wissen auf eine Weise teilen, damit auch andere es nutzen und davon profitieren können. Es lebe GNU / Linux und all seine Freunde! Wenn Sie uns unterstützen möchten, können Sie dies unter $onglet_apropos tun. Wir wünschen Ihnen noch einen schönen Tag!|Здравейте, днес празнуваме Деня на свободата на софтуера (https://www.fsf.org/about/). Използването на свободен софтуер означава да се направи политически и етичен избор, утвърждаващ правото да се учиш и да споделяш. Свободният софтуер се превърна в основата на учещото се общество, където споделяме знанията си по начини, които другите могат да използват и да им се радват. Да живее GNU / Linux и всички негови приятели! Ако искате да ни подкрепите, можете да го направите на $onglet_apropos . Приятен ден!|您好,今天我们要庆祝软件自由日(https://www.fsf.org/about/)。 使用自由软件意味着做出政治和道德选择,以确立学习和分享的权利。 自由软件已成为学习型社会的基础,在此我们以他人可以使用和享受的方式共享我们的知识。 GNU / Linux及其所有支持者万岁! 如果您想支持我们,可以在 $onglet_apropos 处进行。 祝你今天过得愉快!|こんにちは、今日はソフトウェアの自由の日(https://www.fsf.org/about/)を祝っています。 自由ソフトウェアを使用するということは、学び、共有する権利を確認する政治的および倫理的な選択を行うことを意味します。 無料のソフトウェアは、他の人が使用して楽しむことができる方法で知識を共有する学習社会の基盤になっています。 長生きするGNU / Linuxとそのすべてのクローン! 私たちをサポートしたい場合は、 $onglet_apropos でサポートできます。 良い一日を!|Hola, hoy celebramos el Día de la libertad del software (https://www.fsf.org/about/). Usar software libre significa tomar una decisión política y ética afirmando el derecho a aprender y compartir. El software libre se ha convertido en la base de una sociedad del aprendizaje en la que compartimos nuestro conocimiento de formas que otros puedan usar y disfrutar. ¡Viva GNU / Linux y todos sus compinches! Si quieres apoyarnos, puedes hacerlo en $onglet_apropos. ¡Que pase un buen día!|Olá, hoje estamos celebrando o Software Freedom Day (https://www.fsf.org/about/). Usar software livre significa fazer uma escolha política e ética afirmando o direito de aprender e compartilhar. O software livre se tornou a base de uma sociedade de aprendizado, onde compartilhamos nosso conhecimento de maneiras que outros podem usar e desfrutar. Viva o GNU / Linux e todos os seus comparsas! Se você quiser nos apoiar, você pode fazê-lo em $onglet_apropos. Tenha um bom dia!|مرحباً ، نحتفل اليوم بيوم حرية البرمجيات (https://www.fsf.org/about/). استخدام البرمجيات الحرة يعني اتخاذ خيار سياسي وأخلاقي يؤكد الحق في التعلم والمشاركة. أصبحت البرمجيات الحرة أساس مجتمع التعلم حيث نشارك معرفتنا بطرق يمكن للآخرين استخدامها والاستمتاع بها. يعيش جنو / لينكLine truncated
Objet_Peripetie_LogicielLibre|Notification: les avions-poèmes en fête!|Notification: flight-poem party!|Benachrichtigung: die Poesie-Flieger zur Feier!|Известие: самолетите-поеми в чест!|通知:庆祝詩作紙飞机!|通知:飛行機-お祝いの詩!|Notificación: ¡los planos-poemas en celebración!|Notificação: os aviões-poemas em festa!|إشعار: الطائرات-القصائد في الاحتفال!
Peripetie_Poesie|Bonjour, Aujourd'hui nous célébrons la journée mondiale de la poésie. C'est un jour de fête pour nous tous qui croyons dans le pouvoir d’exaltation de la poésie. Si vous souhaitez soutenir www.avion-poe.me , c'est par ici: $onglet_apropos . Passez une bonne journée!|Hello, Today we are celebrating World Poetry Day. It is a day of celebration for all of us who believe in the uplifting power of poetry. If you want to support www.avion-poe.me , you can do it here : $onglet_apropos . Have a nice day!|Guten Tag! Heute feiern wir den Welttag der Poesie. Es ist ein Festtag für alle, die an die erhebende Kraft der Poesie glauben. Wenn Sie www.avion-poe.me unterstützen möchten, können Sie es hier tun: $onglet_apropos . Wir wünschen Ihnen noch einen schönen Tag!|Здравейте, днес отбелязваме Световния ден на поезията. Това е ден на празнуване за всички нас, които вярваме в приповдигащата сила на поезията. Ако искате да поддържате www.avion-poe.me , можете да го направите тук: $onglet_apropos . Приятен ден!|你好,今天我们庆祝世界诗歌日。 对于相信诗歌的提升力量的所有人来说,这是一个值得庆祝的日子。 如果您想支持 www.avion-poe.me ,請由此入 : $onglet_apropos 。 祝你今天过得愉快!|こんにちは、今日は世界詩歌記念日を祝っています。 詩の高揚力を信じる私たち全員にとって、お祝いの日です。 www.avion-poe.me をサポートしたい場合は、 $onglet_apropos でサポートできます。 良い一日を!|Hola, hoy estamos celebrando el Día Mundial de la Poesía. Es un día de celebración para todos los que creemos en el poder edificante de la poesía. Si desea apoyar www.avion-poe.me , puede hacerlo aquí: $onglet_apropos . ¡Que pase un buen día!|Olá, hoje estamos celebrando o Dia Mundial da Poesia. É um dia de celebração para todos nós que acreditamos no poder edificante da poesia. Se você deseja oferecer suporte a www.avion-poe.me , pode fazê-lo aqui: $onglet_apropos . Tenha um bom dia!| مرحباً ، نحتفل اليوم بيوم الشعر العالمي. إنه يوم احتفال لنا جميعًا ، نحن الذين نؤمن بالقوة النافعة للشعر. إذا كنت تريد دعم www.avion-poe.me ، فهو هنا: $onglet_apropos . نتمنى لك نهارا سعيدا!
Objet_Peripetie_Poesie|Notification: les avions-poèmes en fête!|Notification: the flight-poems in celebration!|Benachrichtigung: Heute ist ein besonderer Festtag: der Welttag der Poesie!|Известие: самолетите-поеми в чест!|通知:庆祝詩作飞机!|通知:飛行機-お祝いの詩!|Notificación: ¡los planos-poemas en celebración!|Notificação: os aviões-poemas em festa!|إشعار: الطائرات-القصائد في الاحتفال!
AvionPoeme_epuise|100 avions-poèmes ont déjà été lancés aujourd'hui, veuillez patienter jusqu'à 12:00 UTC+1 pour lancer le vôtre! D'ici là, bonne écriture!|100 flight-poems have already been launched today, please wait until 12:00 UTC + 1 to launch yours! Until then, good writing!|100 Gedicht-Flieger wurden heute bereits gestartet. Bitte warten Sie bis 12:00 UTC + 1, um Ihre zu starten! Bis dahin gutes Schreiben!|Днес вече са пуснати 100 самолети-поеми, моля, изчакайте до 12:00 UTC + 1, за да стартирате своя! Дотогава хубаво писане!|今天已经發送出了100架诗歌飞机,请等到UTC 12:00 + 1来發送您的! 在那之前,享受寫作吧!|本日、すでに100機の詩機が打ち上げられました。12:00UTC + 1までお待ちください! それまでは、良い文章を書いてください! |Hoy ya se han lanzado 100 aviones-poemas, ¡espere hasta las 12:00 UTC + 1 para lanzar el suyo! Hasta entonces, ¡buena escritura!|100 aviões-poemas já foram lançados hoje, por favor, espere até 12:00 UTC + 1 para lançar o seu! Até então, boa redação!|تم إطلاق 100 قصيدة-طائرة اليوم ، يرجى الانتظار حتى 12:00 بالتوقيت العالمي المنسق +1 لإطلاق قصيدة لك! حتى ذلك الحين ، كتابة جيدة!
NB_AvionPoeme_restant|$NB_avion_poeme avions-poèmes peuvent encore être lancés aujourd'hui! A votre plume!|$NB_avion_poeme flight-poems can still be launched today! Get out your pens!|$NB_avion_poeme Gedichte-Flieger können noch heute losgeschickt werden! An Ihrem Stift!|$NB_avion_poeme самолети-поеми могат да стартират и днес! На вашата писалка!|$NB_avion_poeme 詩作紙飞机今天仍然可发送 。拿起笔來吧!|$NB_avion_poeme 飛行機-詩は今日でも発売できます! あなたのペンで!|$NB_avion_poeme aviones-poemas todavía se pueden lanzar hoy. ¡En tu pluma!|$NB_avion_poeme aviões-poemas ainda podem ser lançados hoje! Na sua caneta!|لا يزال من الممكن إطلاق $NB_avion_poeme الطائرات-القصائد اليوم! على قلمك!
Peripetie_LogicielLibre|Bonjour, \n\n Aujourd'hui nous célébrons la journée mondiale du logiciel libre (https://www.fsf.org/about/) . \n Utiliser les logiciels libres, c'est faire un choix politique et éthique affirmant le droit d'apprendre et de partager. Le logiciel libre est devenu le fondement d'une société apprenante où nous partageons nos connaissances d'une manière que d'autres peuvent exploiter et apprécier. \n Vive GNU/Linux et tous ses acolytes! \n Passez une bonne journée! \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Hello, \n\n Today is the Software Freedom Day (https://www.fsf.org/about/). \n Using free software means making a political and ethical choice in favour of the right to learn and to share. Free software has become the foundation of a society based on learning, where we share our knowledge in ways that others can use and enjoy. \n Long live GNU / Linux and all their kin! \n Have a nice day! \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Guten Tag! \n\n Heute feiern wir den Software Freedom Day (https://www.fsf.org/about/). \n Freie, kostenlose Software zu verwenden bedeutet, eine politische und ethische Entscheidung zu treffen, die das Recht auf gemeinsames Lernen und Partizipieren einfordert. Freie Software ist zum Fundament einer offenen, lernenden Gesellschaft geworden, in der wir unser Wissen auf eine Weise teilen, damit auch andere es nutzen und davon profitieren können. \n Es lebe GNU / Linux und all seine Freunde! \n Wir wünschen Ihnen noch einen schönen Tag! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Здравейте, \n\n Днес празнуваме Деня на свободния софтуер (https://www.fsf.org/about/). Използването на свободен софтуер означава да се направи политически и етичен избор, утвърждаващ правото на учене и на споделяне. Свободният софтуер се превърна в основата на едно учещото се общество, в което споделяме знанията си по такъв начин, че други да могат да ги използват и да се радват. \n Да живее GNU / Linux и всички негови приятели! \n\n Ако искате да ни подкрепите, можете да го направите на \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Приятен ден!|您好,今天我们要庆祝软件自由日(https://www.fsf.org/about/)。 使用自由软件意味着做出政治和道德选择,以确立学习和分享的权利。 自由软件已成为学习型社会的基础,在此我们以他人可以使用和享受的方式共享我们的知识。 GNU / Linux及其所有支持者万岁! \n 祝你今天过得愉快! \n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |こんにちは、今日はソフトウェアの自由の日(https://www.fsf.org/about/)です。自由にソフトウェアを使用するということは、学んだり共有したりする権利を確認し、政治的および倫理的な選択を行うことを意味します。 ソフトウェアの自由は、誰もが使用しながら、そして、楽しみながら知識を共有できる学習社会の基盤になっています。 GNU / Linux やその種のシステム万歳!\n 良い一日を! \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr |Hola, hoy celebramos el Día de la libertad del software (https://www.fsf.org/about/). Usar software libre significa tomar una decisión política y ética afirmando el derecho a aprender y compartir. El software libre se ha convertido en la base de una sociedad del aprendizaje en la que compartimos nuestro conocimiento de formas que otros puedan usar y disfrutar. ¡Viva GNU / Linux y todos sus compinches! \n ¡Que pase un buen día! \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr|Olá, hoje estamos celebrando o Software Freedom Day (https://www.fsf.org/about/). Usar software livre significa fazer uma escolha política e ética afirmando o direito de aprender e compartilhar. O software livre se tornou a base de uma sociedade de aprendizaLine truncated
Objet_Peripetie_LogicielLibre|Notification: les avions-poèmes en fête!|Notification: flight-poem party!|Benachrichtigung: die Poesie-Flieger zur Feier!|Известие: празник на самолет-поемите!|通知:庆祝詩作紙飞机!|通知:祝-飛行機の詩!|Notificación: ¡los planos-poemas en celebración!|Notificação: os aviões-poemas em festa!|إشعار: الطائرات-القصائد تحتفل!
Peripetie_Poesie|Bonjour,\n\n Aujourd'hui nous célébrons la journée mondiale de la poésie. \n C'est un jour de fête pour nous tous qui croyons dans le pouvoir d’exaltation de la poésie. \n Si vous souhaitez soutenir http://avion-poe.me , c'est par ici: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Passez une bonne journée!|Hello, \n\n Today we are celebrating World Poetry Day. \n It is a day of celebration for all of us who believe in the uplifting power of poetry. \n If you want to support http://avion-poe.me , you can do it here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Have a nice day!|Guten Tag! \n\n Heute feiern wir den Welttag der Poesie. \n Es ist ein Festtag für alle, die an die erhebende Kraft der Poesie glauben. \n Wenn Sie http://avion-poe.me unterstützen möchten, können Sie es hier tun: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Wir wünschen Ihnen noch einen schönen Tag!|Здравейте, \n\n Днес отбелязваме Световния ден на поезията. Това е ден на празнуване за всички нас, които вярваме в приповдигащата сила на поезията. \n Ако искате да подкрепите http://avion-poe.me , можете да го направите тук: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Приятен ден|你好,今天我们庆祝世界诗歌日。 对于相信诗歌的提升力量的所有人来说,这是一个值得庆祝的日子。 如果您想支持 http://avion-poe.me ,請由此入 : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n 祝你今天过得愉快!|こんにちは、今日は世界詩歌記念日です。詩の持つ高揚力を信じる私たちすべてにとってのお祝いの日です。ご希望であれば \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n から http://avion-poe.me をサポートしていただけます。良い一日を!|Hola, \n Hoy estamos celebrando el Día Mundial de la Poesía. Es un día de celebración para todos los que creemos en el poder edificante de la poesía. \n Si desea apoyar http://avion-poe.me , puede hacerlo aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n ¡Que pase un buen día!|Olá, \n Hoje estamos celebrando o Dia Mundial da Poesia. É um dia de celebração para todos nós que acreditamos no poder edificante da poesia. \n Se você deseja oferecer suporte a http://avion-poe.me , pode fazê-lo aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n Tenha um bom dia!| مرحباً \n نحتفل اليوم بيوم الشعر العالمي. إنه يوم احتفال لنا جميعًا، نحن الذين نؤمن بالقوة النافعة للشعر \n إذا كنت تريد دعم \n http://avion-poe.me \n فيمكنك ذلك هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr \n\n أطيب التمنيات
Objet_Peripetie_Poesie|Notification: les avions-poèmes en fête!|Notification: the flight-poems in celebration!|Benachrichtigung: Heute ist ein besonderer Festtag: der Welttag der Poesie!|Известие: празник на самолет-поемите!|通知:庆祝詩作飞机!|通知:祝-飛行機の詩!|Notificación: ¡los planos-poemas en celebración!|Notificação: os aviões-poemas em festa!|إشعار: الطائرات-القصائد في وضع إحتفال!
AvionPoeme_epuise|100 avions-poèmes ont déjà été lancés aujourd'hui, veuillez patienter jusqu'à 12:00 UTC+1 pour lancer le vôtre! D'ici là, bonne écriture!|100 flight-poems have already been launched today, please wait until 12:00 UTC + 1 to launch yours! Until then, good writing!|100 Gedicht-Flieger wurden heute bereits gestartet. Bitte warten Sie bis 12:00 UTC + 1, um Ihre zu starten! Bis dahin gutes Schreiben!|Днес вече са пуснати 100 самолет-поеми, моля, изчакайте до 12:00 UTC + 1, за да изпратите своята! Дотогава приятно писане!|今天已经發送出了100架诗歌飞机,请等到UTC 12:00 + 1来發送您的! 在那之前,享受寫作吧!|今日は、100機の飛行機の詩がすでに飛ばされました。飛行機の詩を飛ばすには12:00UTC + 1までお待ちください! それまで、素敵な文章を考えましょう! |Hoy ya se han lanzado 100 aviones-poemas, ¡espere hasta las 12:00 UTC + 1 para lanzar el suyo! Hasta entonces, ¡buena escritura!|100 aviões-poemas já foram lançados hoje, por favor, espere até 12:00 UTC + 1 para lançar o seu! Até então, boa redação!|تم إطلاق 100 قصيدة-طائرة اليوم، يرجى الانتظار حتى 12:00 بالتوقيت العالمي المنسق +1 لإطلاق قصيدة لك! حتى ذلك الحين، إستمتع بالكتابة
NB_AvionPoeme_restant|$NB_avion_poeme avions-poèmes peuvent encore être lancés aujourd'hui! A votre plume!|$NB_avion_poeme flight-poems can still be launched today! Get out your pens!|$NB_avion_poeme Gedichte-Flieger können noch heute losgeschickt werden! An Ihrem Stift!|$NB_avion_poeme самолет–поеми могат да стартират днес! Хващайте писалката!|$NB_avion_poeme 詩作紙飞机今天仍然可发送 。拿起笔來吧!|$NB_avion_poeme 今日も飛行機の詩を飛ばしていただくことができます!あなたが書いたものを!|$NB_avion_poeme aviones-poemas todavía se pueden lanzar hoy. ¡En tu pluma!|$NB_avion_poeme aviões-poemas ainda podem ser lançados hoje! Na sua caneta!|لا يزال من الممكن إطلاق $NB_avion_poeme الطائرات-القصائد اليوم! أحضروا أقلامكم
Soutenez_avionpoeme|Offrez-nous un verre de vin  |Offer us a beer |Schenken Sie uns ein Bier!|Почерпете ни с ракия!|请给我们倒茶|お酒をください|¡Ofrécenos una cerveza! |Ofereça-nos uma cerveja|من فضلك اعطنا الشاي
AvionPoeme_free_independent|Avion-poe.me est gratuit, libre (open source) et indépendant|Avion-poe.me is free (as in freedom), free (as in free beer) and independent|Avion-poe.me ist kostenlos, frei (open source) und unabhängig |Avion-poe.me е безплатен, свободен (с отворен код) и независим |Avion-poe.me 是免费、开源和独立的 |Avion-poe.me は無料で、オープンソースで独立しています |Avion-poe.me es gratuito, libre (de código abierto) e independiente |Avion-poe.me é gratuito, libre (de código aberto) e independente |عملنا مجاني وحر (مفتوح المصدر) ومستقل
+7
View File
@@ -0,0 +1,7 @@
[
{
"fr": "<p align=\"center\" style=\"border: 1px solid black; padding-top:50px; padding-bottom:50px; border-radius: 10px;\"><em>Cher·e·s semblables<br><br>Nous ne sommes pas comme vos milles et un prétendants<br><br>Si d’autres que nous vous offrent l’instantané,<br>Nous vous offrirons le temps et l’attente<br><br>S’ils vous offrent une lettre<br>Nous vous offrirons un poème<br><br>S’ils vous offrent une certitude<br>Nous vous offrirons les aléas et l’inconnu<br><br>S’ils vous offrent l’abondance<br>Nous vous offrirons le partage<br><br>Et s’ils vous offrent un message<br>Nous vous offrirons le voyage<br><br>Librement,<br><br>L’équipe d’avion-poe.me</em></p><br><br><p><b>En quelques mots</b><br><ul><li>Cette œuvre a été conçue par Maxime Sténuit (créateur), <a href=\"https://github.com/martinedoesgis\">martinedoesgis</a> (développeur front-end), et Daniel Tartavel (développeur back-end).</li><li>L’œuvre est sous licence <a href=\"https://creativecommons.org/licenses/by-nc-sa/2.0/fr/\">Creative Commons BY-NC-SA 2.0 FR</a> et le code source sous licence <a href=\"http://www.gnu.org/licenses/gpl-3.0.en.html\">GPLv3</a>.</li><li>Nous souhaitons que cette application mise librement à votre disposition soit utilisée à des fins excluant tous types de violences, qu’elles soient verbales ou physiques.</li><li>Les messages privés sont supprimés physiquement de notre serveur une fois arrivés, ainsi que l’ensemble des adresses électroniques. Ce site ne contient pas de traceurs.</li><li>Pour en savoir davantage sur <a href=\"https://lalis69.ddns.net:10443/laliscloud/index.php/s/Jf7BkZCWFpEF9tJ\">l’origine des avions-poèmes</a>.</li></ul><br>N’hésitez pas à nous faire part de vos commentaires et vos idées à <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a>.<br><br>",
"en": "<p align=\"center\" style=\"border: 1px solid black; padding-top:50px; padding-bottom:50px; border-radius: 10px;\"><em>Dear fellow,<br><br>We do not resemble your sycophants and suitors<br><br>Should others offer you the instant,<br>We shall offer you the time and the wait<br><br>Should they offer you a letter<br>We shall offer you a poem<br><br>Should they offer you certainty<br>We shall offer you the vagaries and the unknown<br><br>Should they offer you abundance<br>We shall offer you sharing<br><br>And should they offer you a valley<br>We shall offer you the journey<br><br>Freely,<br><br>The team of avion-poe.me</em></p><br><br><p><b>In a few words :</b><br><ul><li>Avion-poe.me was created by Maxime Sténuit, <a href=\"https://github.com/martinedoesgis\">martinedoesgis</a> (front-end developer), and Daniel Tartavel (back-end developer).</li><li>The work is under the <a href=\"https://creativecommons.org/licenses/by-nc-sa/2.0/fr/\">Creative Commons BY-NC-SA 2.0 FR</a> license and the source code under the <a href=\"http://www.gnu.org/licenses/gpl-3.0.en.html\">GPLv3</a> licence.</li><li>We wish this application, made freely available to you, to be used for purposes that exclude all types of violence, whether verbal or physical.</li><li>Private messages are physically deleted from our server when they arrive. This site does not contain cookies.</li><li>To learn more about <a href=\"https://lalis69.ddns.net:10443/laliscloud/index.php/s/Jf7BkZCWFpEF9tJ\">the origin of the flight-poem</a>.</li></ul><br>Please feel free to share your comments and ideas with us at <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a>.<br><br>",
"de": "<p align=\"center\" style=\"border: 1px solid black; padding-top:50px; padding-bottom:50px; border-radius: 10px;\"><em>Liebe Freunde<br><br>Wir gleichen euren Liebhabern nicht.<br><br>Bieten sie euch das Unmittelbare an<br>Schenken wir euch Zeit und Warten<br><br>Schreiben sie euch einen Brief<br>Überreichen wir euch ein Gedicht<br><br>Geben sie euch Gewissheit<br>bieten wir euch Launen und das Unbekannte<br><br>Überhäufen sie euch mit Überfluss<br>Lehren wir euch das Teilen<br><br>Und schicken sie euch eine Nachricht,<br>Dann schenken wir euch eine Reise.<br><br>Frei,<br><br>Das Team von avion-poe.me</em></p><br><br><p><b>In wenigen Worten:</b><br><ul><li>Diese Arbeit wurde von Maxime Sténuit (Schöpfer), <a href=\"https://github.com/martinedoesgis\">martinedoesgis</a> (Front-End-Entwickler) und Daniel Tartavel (Back-End-Entwickler) entworfen.</li><li>Die Arbeit ist unter der <a href=\"https://creativecommons.org/licenses/by-nc-sa/2.0/fr/\">Creative Commons BY-NC-SA 2.0 FR</a>-Lizenz und der Quellcode unter der <a href=\"http://www.gnu.org/licenses/gpl-3.0.en.html\">GPLv3</a>-Lizenz.</li><li>Wir möchten, dass diese Anwendung, die Ihnen frei zur Verfügung gestellt wird, für Zwecke verwendet wird, die alle Arten von verbaler oder physischer Gewalt ausschließen.</li><li>Private Nachrichten werden bei ihrem Eintreffen zusammen mit allen E-Mail-Adressen physisch von unserem Server gelöscht. Diese Seite enthält keine Cookies.</li><li>Um mehr <a href=\"https://lalis69.ddns.net:10443/laliscloud/index.php/s/Jf7BkZCWFpEF9tJ\">über den Ursprung von Gedicht-Flieger</a> zu erfahren.</li></ul><br>Bitte zögern Sie nicht, uns Ihre Kommentare und Ideen an <a href=\"mailto:contact@avion-poe.me\">contact@avion-poe.me</a> zu senden.<br><br>"
}
]
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"طائرة-قصيدة", "lancer_avion":"أطلق طائرة-قصيدة", "anthologie":"مختارات", "apropos":"من نحن", "lancer":"إطلاق", "annuler":"الغاء", "origine":"المغادرة", "destination":"القدوم", "expediteur":"مرسل", "email":"عنوان بريد الكتروني", "anonyme":"أرسل بدون اسم", "destinataire":"متلقي", "message":"رسالة", "public":"عامة", "anthologie_visible":"مرئي في المُختارات بعد وصول الرسالة", "prive":"خاصة", "vitesse":"سرعة", "aléatoire":"عشوائية", "choisie":"مختارة", "trois_jours":"3,14 أيام", "sept_jours":"7 أيام", "trente_jours":"30 يوم", "unan_jours":"365 يوم", "jour":"يوم", "jours":"أيام", "mois":"شهر", "mois_pluriel":"شهور", "an":"سنة", "ans":"سنوات", "retour_carte":"العودة إلى الخريطة", "precedent":"سابق", "suivant":"التالي", "temps_de_vol":"مدة الرحلة", "date_arrivee":"تاريخ الوصول", "langue_destinataire":"اللغة التي يتحدث بها المتلقي", "suppr_message_public":"إذا كنت تريد حذف رسالة / قصيدة عامة ، فيرجى إخبارنا على <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"بحث", "public_tooltip":"نُشرت الرسالة في المختارات بمجرد وصول الطائرة-القصيدة", "anonyme_tooltip":"لن يتم إرسال عنوان بريدك الإلكتروني إلى المتلقي حتى وصول الطائرة-القصيدة", "expeMail_placeholder":"أدخل عنوان بريدك الالكتروني", "expeLoc_placeholder":"اختر مكان المغادرة", "destMail_placeholder":"أدخل عنوان البريد الإلكتروني للمتلقي", "destLoc_placeholder":"اختر وجهة", "librairies":"المكتبات المستخدمة", "source_carte":"مصادر الخريطة", "map_background":"خلفية الخريطة", "clouds":"غيوم", "Notification_denvoi_Expediteur":"مرحبًا \n لقد أطلقت للتو طائرة-قصيدة منضمة لـ \n $destinataire \n في \n $date_depart \n رسالتك \n\n $message \n\n تم إشعار المتلقي بالرسالة \n يمكنك متابعة الطائرة-القصيدة الخاصة بك هنا على الخريطة \n $url_avion \n تاريخ الوصول المحتمل \n $date_arrivee \n\n شكرًا لك على وقتك \n لا تستعجل، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين) \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n", "Objet_Notification_denvoi_Expediteur":"إخطار بالإرسال: طائرة-قصيدة في رحلة إلى صديقك", "Notification_denvoi_Destinataire_ExpediteurConnu":"مرحبا \n أقلعت لتوها من \n $expediteur \n قصيدة-طائرة للوجهة التي حددتها \n التاريخ المحتمل للوصول \n $date_arrivee \n يمكنك متابعتها هنا على الخريطة \n $url_avion \n شكرًا لك على وقتك ونراكم قريبًا على \n https://avion-poe.me \n لا تستعجل، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين) \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"إشعار: أرسل لك صديق قصيدة-طائرة", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"مرحبًا \n لقد أقلع شخص ما للتو قصيدة-طائرة بإتجاهك \n التاريخ المحتمل للوصول \n $date_arrivee. \n يمكنك متابعتها هنا على الخريطة: \n $url_avion \n\n شكرًا لك على وقتك ونراكم قريبًا على \n https://avion-poe.me \n لا تستعجل، عليك أن تبدأ في الوقت المحدد (جان دي لا فونتين) \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"إشعار: أرسل لك صديق قصيدة-طائرة", "Notification_Arrivee_Expediteur":"مرحبًا \n وصلت طائرة-قصيدة الخاصة بك إلى وجهتها اليوم وتم تسليم رسالتك إلى \n $destinataire \n إذا كانت رسالتك عامة، فستظهر الآن في علامة تبويب المقتنعات \n شكرًا لك على وقتك، نراك قريبًا على \n https://avion-poe.me ! \n\n موقعنا مجاني وحر ومستقل. يمكنك دعمنا هنا \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr"Line truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Самолет-поема", "lancer_avion":"Изпращам cамолет-поема", "anthologie":"Aнтология", "apropos":"За нас", "lancer":"Изпращам", "annuler":"Отмени", "origine":"Произход", "destination":"Дестинация", "expediteur":"Подател", "email":"имейл адрес", "anonyme":"анонимен (при изпращане)", "destinataire":"Получател", "message":"Cъобщение", "public":"публично", "anthologie_visible":"Видимо в Антологията след пристигането на съобщението", "prive":"лично", "vitesse":"Cкорост", "aléatoire":"произволна", "choisie":"избрана", "trois_jours":"3,14 дни", "sept_jours":"7 дни", "trente_jours":"30 дни", "unan_jours":"365 дни", "jour":"ден", "jours":"дни", "mois":"месец", "mois_pluriel":"месеци", "an":"година", "ans":"години", "retour_carte":"Обратно към картата", "precedent":"Предишен", "suivant":"Cледващ", "temps_de_vol":"Продължителност на полета", "date_arrivee":"дата на пристигане", "langue_destinataire":"Език, говорен от получателя", "suppr_message_public":"Ако искате да изтриете публично съобщение / поема, моля, уведомете ни на <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"Търсене", "public_tooltip":"Съобщение, публикувано в Антологията след пристигането на самолет-поемата", "anonyme_tooltip":"Вашият имейл адрес ще бъде съобщен на получателя само след пристигането на самолет–поемата", "expeMail_placeholder":"Напишете своя емайл адрес", "expeLoc_placeholder":"Изберете място на тръгване", "destMail_placeholder":"Въведете имейл адреса на получателя", "destLoc_placeholder":"Изберете дестинация", "librairies":"Използвани библиотеки", "source_carte":"Източници на картата", "map_background":"Фон на картата", "clouds":"Облаци", "Notification_denvoi_Expediteur":"Здравейте, \n\n токущо стартирахте самолет–поема за $destinataire на $date_depart. Вашето съобщение: \n\n $message \n\n Ние го-я уведомихме за тази пратка. Можете да проследите самолет- поемата си тук на картата: \n $url_avion \n Приблизителна дата на пристигане: $date_arrivee \n\n Благодарим ви и ви каним да се насладите на минаващото време! \n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >добре дошла</a> \n", "Objet_Notification_denvoi_Expediteur":"Известие за изпращане: Самолет–поема в посока към $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Здравейте, \n\n $expediteur току-що изпрати самолет–поема в посока към вас. \n Очаквана дата на пристигане: $date_arrivee \n\n Можете да я проследите тук на картата: \n $url_avion \n\n Благодарим ви и ви каним да се насладите на минаващото време! Ще се видим скоро на www.avion-poe.me ! \n „Безсмислено е да се бяга, важното е да се тръгне навреме“ (Жан дьо ла Фонтен) \n\n Avion-poe.me е безплатен, свободен и независим, вашата подкрепа е добре дошла: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Известие: $expediteur ви изпрати самолет–поема", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Здравейте, \n\n Някой току-що е изпратил самолет–поема в посока към вас. \n Очаквана дата на пристигане: $date_arrivee \n\n Можете да я проследите тук на картата: \n $url_avion \n\n Благодарим ви и ви каним да се насладите на минаващото време! Ще се видим скоро на www.avion-poe.me ! \Line truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Poesie-Flieger", "lancer_avion":"Schicke einen Poesie-Flieger los !", "anthologie":"Anthologie", "apropos":"Über", "lancer":"Schicken", "annuler":"Abbrechen", "origine":"Abflug", "destination":"Ankunft", "expediteur":"Absender", "email":"E-Mail-Addresse", "anonyme":"anonym (wenn gesendet)", "destinataire":"Empfänger", "message":"Botschaft", "public":"öffentlich", "anthologie_visible":"Sichtbar in der Anthologie nach dem Eintreffen der Botschaft", "prive":"privat", "vitesse":"Geschwindigkeit", "aléatoire":"zufällige", "choisie":"gewählte", "trois_jours":"3,14 Tage", "sept_jours":"7 Tage", "trente_jours":"30 Tage", "unan_jours":"365 Tage", "jour":"Tag", "jours":"Tage", "mois":"Monat", "mois_pluriel":"Monate", "an":"Jahr", "ans":"Jahre", "retour_carte":"zurück zur Karte", "precedent":"vorherig", "suivant":"nächstes", "temps_de_vol":"Flugdauer", "date_arrivee":"Ankunftsdatum", "langue_destinataire":"Vom Empfänger gesprochene Sprache", "suppr_message_public":"Wenn Sie eine öffentliche Nachricht / ein Gedicht löschen möchten, teilen Sie uns dies bitte unter <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> mit", "rechercher":"Suchen", "public_tooltip":"Botschaft in der Anthologie veröffentlicht, sobald der Poesie-Flieger angekommen ist", "anonyme_tooltip":"Ihre E-Mail-Adresse wird dem Empfänger erst bei Ankunft des Poesie-Fliegers mitgeteilt", "expeMail_placeholder":"Geben Sie Ihre E-Mailadresse ein", "expeLoc_placeholder":"Wählen Sie einen Abflugort", "destMail_placeholder":"Geben Sie die E-Mail-Adresse des Empfängers ein", "destLoc_placeholder":"Wählen Sie eine Destination", "librairies":"Verwendete Bibliotheken", "source_carte":"Kartenquellen", "map_background":"Kartenhintergrund", "clouds":"Wolken", "Notification_denvoi_Expediteur":"Guten Tag,\n\n Sie haben gerade einen Poesie-Flieger nach $destinataire am $date_depart losgeschickt. \n Ihre Nachricht:\n\n $message \n Wir haben den Empfänger/die Empfängerin über diese Sendung informiert. Sie können Ihren Poesie-Flieger hier auf der Karte verfolgen:\n $url_avion \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Vielen Dank, dass Sie sich die Zeit genommen haben! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >willkommen</a> \n", "Objet_Notification_denvoi_Expediteur":"Versandbenachrichtigung: Poesie-Flieger auf dem Flug nach $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Guten Tag, \n\n $expediteur hat gerade einen Poesie-Flieger an Ihren Zielort gesendet. \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Sie können ihn hier auf der Karte verfolgen: \n $url_avion \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf https://avion-poe.me ! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Benachrichtigung: $expediteur hat Ihnen einen Poesie-Flieger geschickt", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Guten Tag, \n\n Jemand hat gerade einen Poesie-Flieger an Ihren Ziel gesendet. \n Voraussichtliches Ankunftsdatum: $date_arrivee \n\n Sie können ihn hier auf der Karte verfolgen: \n $url_avion \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf https://avion-poe.me ! \n \"Rennen hat keinen Sinn, wenn man zu spät abmarschiert.\" (Jean de la Fontaine) \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"Benachrichtigung: Ein Freund hat Ihnen einen Poesie-Flieger geschickt", "Notification_Arrivee_Expediteur":"Guten Tag, \n\n Ihr Poesie-Flieger hat soeben sein Ziel erreicht und Ihre Nachricht wurde an $destinataire übermittelt. \n Wenn Ihre Nachricht für die Öffentlichkeit bestimmt ist, wird sie auf der in der Anthologie angezeigt. \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf https://avion-poe.me ! \n\n Avion-poe.me ist kostenlos, frei und unabhängig, Ihre Unterstützung ist willkommen : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"Benachrichtigung: Poesie-Flieger am Ziel angekommen", "Notification_Arrivee_Destinataire":"Guten Tag, \n\n hier ist der Poesie-Flieger, den $expediteur Ihnen gesendet hat: \n\n $message \n\n Möchten Sie ihm/ihr antworten? Dann geben Sie selbst einen Poesie-Flieger in Auftrag! \n\n Vielen Dank, dass Sie sich die Zeit genommen haben und bis bald auf https://avion-poe.me ! \n\n Avion-poe.me ist kostenlos, frei und unabhängiLine truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Flight-poem", "lancer_avion":"Launch a flight-poem", "anthologie":"Anthology", "apropos":"About", "lancer":"Launch", "annuler":"Cancel", "origine":"Departure", "destination":"Arrival", "expediteur":"Sender", "email":"email address", "anonyme":"send anonymously", "destinataire":"Recipient", "message":"Message", "public":"public", "anthologie_visible":"Visible in the Anthology after the arrival of the message", "prive":"private", "vitesse":"Speed", "aléatoire":"random", "choisie":"chosen", "trois_jours":"3.14 days", "sept_jours":"7 days", "trente_jours":"30 days", "unan_jours":"365 days", "jour":"day", "jours":"days", "mois":"month", "mois_pluriel":"months", "an":"year", "ans":"years", "retour_carte":"Back to map", "precedent":"Previous", "suivant":"Next", "temps_de_vol":"Flight time", "date_arrivee":"Arrival date", "langue_destinataire":"Language spoken by the recipient", "suppr_message_public":"If you want to delete a public message / poem, please let us know at <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"Search", "public_tooltip":"Message published in the Anthology once the flight-poem has arrived", "anonyme_tooltip":"Your email address will not be communicated to the recipient until the arrival of the flight-poem", "expeMail_placeholder":"Enter your email address", "expeLoc_placeholder":"Choose a place of departure", "destMail_placeholder":"Enter recipient's email address", "destLoc_placeholder":"Choose a destination", "librairies":"Libraries used", "source_carte":"Map sources", "map_background":"Background", "clouds":"Clouds", "Notification_denvoi_Expediteur":"Hello, \n\n You have just launched a flight-poem to $destinataire on $date_depart. Your message: \n\n $message \n\n She/he has been notified. You can follow your flight-poem here on the map: \n $url_avion \n Estimated date of arrival: $date_arrivee \n\n Thank you for taking your time! \n \"Rushing is useless; one has to leave on time.\"  (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >support us here</a> \n", "Objet_Notification_denvoi_Expediteur":"Dispatch notification: Flight-poem in flight to $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Hello,\n\n $expediteur just launched a flight-poem at your destination. \n Estimated date of arrival: $date_arrivee \n You can follow it here on the map: \n $url_avion \n\n Thank you for taking your time and see you soon at https://avion-poe.me ! \n \"Rushing is useless; one has to leave on time.\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Notification: $expediteur sent you a flight-poem", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Hello, \n\n Someone just launched a flight-poem at your destination. \n Estimated date of arrival: $date_arrivee \n\n You can follow it here on the map: \n $url_avion \n\n Thank you for taking your time and see you soon at https://avion-poe.me ! \n \"Rushing is useless; one has to leave on time\" (Jean de la Fontaine) \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"Notification: a friend sent you a flight-poem", "Notification_Arrivee_Expediteur":"Hello, \n\n Your flight-poem has reached its destination today and your message has been delivered to $destinataire . \n If your message was public, it is now visible in the Anthology tab. \n\n Thank you for taking your time and see you soon on https://avion-poe.me ! \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to support us here : \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"Notification: Flight-poem has arrived at destination", "Notification_Arrivee_Destinataire":"Hello, \n\n Here is the flight-poem that $expediteur sent you: \n\n $message \n\n Would you like to reply to him/her? You too can become a flight-poem launcher. \n\n Thank you for taking your time and see you soon at https://avion-poe.me ! \n\n Avion-poe.me is free (in every sense) and independent, don’t hesitate to <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >support us here</a> \n", "Objet_Notification_Arrivee_Destinataire":"Notification: The flight-poem sent by $expediteur has arrived at destination!", "Peripetie_Perturbation":"Hello, \n\n Your flight-poem is caught in turbulence and is struggling to stay on course. \n Its new estimated date of arrival is now: $new_date_arrivee. \n The sender and the recipient ( $destinataire ) have been informed of the situation. \n TLine truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Avión-poema", "lancer_avion":"Lanzar un avión-poema", "anthologie":"Antología", "apropos":"Más información", "lancer":"Lanzar", "annuler":"Anular", "origine":"Partida", "destination":"Llegada", "expediteur":"Remitente", "email":"dirección de correo electrónico", "anonyme":"anónima (cuando se envía)", "destinataire":"Beneficiario", "message":"Mensaje", "public":"público", "anthologie_visible":"Visible en la Antología tras la llegada del mensaje", "prive":"privado", "vitesse":"Velocidad", "aléatoire":"aleatoria", "choisie":"elegida", "trois_jours":"3.14 días", "sept_jours":"7 días", "trente_jours":"30 días", "unan_jours":"365 días", "jour":"día", "jours":"dias", "mois":"mes", "mois_pluriel":"meses", "an":"año", "ans":"años", "retour_carte":"Volver al mapa", "precedent":"Anterior", "suivant":"Próximo", "temps_de_vol":"Duracion del vuelo", "date_arrivee":"Fecha de llegada", "langue_destinataire":"Idioma que habla el destinatario", "suppr_message_public":"Si desea eliminar un mensaje / poema público, háganoslo saber en <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"Buscar", "public_tooltip":"Mensaje publicado en la Antología una vez llegado el avión-poema", "anonyme_tooltip":"Su dirección de correo electrónico no se comunicará al destinatario hasta la llegada del avión-poema.", "expeMail_placeholder":"Ingrese su dirección de correo electrónico", "expeLoc_placeholder":"Elige un punto de partida", "destMail_placeholder":"Ingrese la dirección de correo electrónico del destinatario", "destLoc_placeholder":"Elige un destino", "librairies":"Bibliotecas utilizadas", "source_carte":"Fuentes de mapas", "map_background":"Fondo del mapa", "clouds":"Nubes", "Notification_denvoi_Expediteur":"Hola, \n\n Acabas de lanzar un avión-poema a $destinataire en $date_depart. Su mensaje: \n\n $message \n\n Le notificamos de este envío. Puedes seguir tu avión-poema aquí en el mapa: \n $url_avion \n Fecha estimada de llegada: $date_arrivee \n\n ¡Gracias por tomarte tu tiempo! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >puede apoyarnos aquí</a> \n", "Objet_Notification_denvoi_Expediteur":"Notificación de envío: avión-poema en vuelo a $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Hola, \n\n $expediteur acaba de despegar un avión-poema en su destino. \n Fecha estimada de llegada: $date_arrivee \n Puedes seguirlo aquí en el mapa: \n $url_avion \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en https://avion-poe.me ! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Notificación: $expediteur te envió un avión-poema", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Hola, \n\n Alguien acaba de despegar un avión-poema en tu destino. \n Fecha estimada de llegada: $date_arrivee \n\n Puedes seguirlo aquí en el mapa: \n $url_avion \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en https://avion-poe.me ! \n \"No tiene sentido correr, hay que empezar a tiempo\" (Jean de la Fontaine) \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"Notificación: un amigo te envió un avión-poema", "Notification_Arrivee_Expediteur":"Hola, \n\n Tu avión de poemas ha llegado a su destino hoy y tu mensaje ha sido entregado a $destinataire . \n Si su mensaje era público, ahora está visible en la pestaña Antología. \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en https://avion-poe.me ! \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, puede apoyarnos aquí: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"Notificación: el avión-poema llegó a destino", "Notification_Arrivee_Destinataire":"Hola, \n\n aquí está el avión-poema que te envió $expediteur : \n\n $message \n\n ¿Quieres responderle? A su vez, conviértete en un lanzador de aviones-poemas. \n\n ¡Gracias por tomarse su tiempo y nos vemos pronto en https://avion-poe.me ! \n\n Avion-poe.me es gratuito, libre e independiente. Si lo desea, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >puede apoyarnos aquí</a> \n", "Objet_Notification_Arrivee_Destinataire":"Notificación: ¡El avión-poema enviado por $expediteur ha llegado a su destino!", "Peripetie_Perturbation":"Hola, \n\n Tu avión-poema está atrapado en un disturbio y está luchando por mantener el rumbo. \n Su nueva fecha estimadaLine truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Avion-poème", "lancer_avion":"Lancer un avion-poème", "anthologie":"Anthologie", "apropos":"À propos", "lancer":"Lancer", "annuler":"Annuler", "origine":"Origine", "destination":"Destination", "expediteur":"Expéditeur", "email":"Adresse éléctronique", "anonyme":"anonyme (à l’envoi)", "destinataire":"Destinataire", "message":"Message", "public":"public", "anthologie_visible":"Visible dans l’Anthologie une fois le message arrivé", "prive":"privé", "vitesse":"Vitesse", "aléatoire":"aléatoire", "choisie":"choisie", "trois_jours":"3.14 jours", "sept_jours":"7 jours", "trente_jours":"30 jours", "unan_jours":"365 jours", "jour":"jour", "jours":"jours", "mois":"mois", "mois_pluriel":"mois", "an":"an", "ans":"ans", "retour_carte":"Retour à la carte", "precedent":"Précédent", "suivant":"Suivant", "temps_de_vol":"Temps de vol", "date_arrivee":"Date d'arrivée", "langue_destinataire":"Langue parlée par le destinataire", "suppr_message_public":"Si vous souhaitez supprimer un message/poème public, merci de le faire savoir à <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"Rechercher", "public_tooltip":"Message publié dans l’Anthologie une fois l’avion-poème arrivé", "anonyme_tooltip":"Votre adresse électronique ne sera communiquée au destinataire qu’à l’arrivée de l’avion-poème", "expeMail_placeholder":"Insérer votre adresse électronique", "expeLoc_placeholder":"Choisir un point de départ", "destMail_placeholder":"Insérer l'adresse électronique du destinataire", "destLoc_placeholder":"Choisir une destination", "librairies":"Librairies utilisées", "source_carte":"Sources de la carte", "map_background":"Fond de carte", "clouds":"Nuages", "Notification_denvoi_Expediteur":"Bonjour, \n\n Vous venez de lancer un avion-poème à destination de $destinataire le $date_depart. \n Votre message:\n\n $message \n Nous lui avons notifié cet envoi. Vous pouvez suivre votre avion-poème ici sur la carte : \n $url_avion \n Date estimée d’arrivée : $date_arrivee \n\n Merci de prendre votre temps ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >nous soutenir ici</a> \n", "Objet_Notification_denvoi_Expediteur":"Notification d'envoi: Avion-poème en vol vers $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Bonjour,\n\n $expediteur vient de faire décoller un avion-poème à votre destination. \n Date estimée d’arrivée: $date_arrivee \n Vous pouvez le suivre ici sur la carte : \n $url_avion \n\n Merci de prendre votre temps et à bientôt sur https://avion-poe.me ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Notification: $expediteur vous a envoyé un avion-poème", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Bonjour, \n\n Quelqu'un vient de faire décoller un avion-poème à votre destination. \n Date estimée d’arrivée : $date_arrivee \n Vous pouvez le suivre ici sur la carte : \n $url_avion \n\n Merci de prendre votre temps et à bientôt sur https://avion-poe.me ! \n \"Rien ne sert de courir, il faut partir à point\" (Jean de la Fontaine) \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"Notification: un.e ami.e vous a envoyé un avion-poème", "Notification_Arrivee_Expediteur":"Bonjour, \n\n Votre avion-poème est parvenu à destination aujourd'hui et votre message-poème a été délivré à $destinataire . \n Si votre message était public, il est dorénéavant visible dans l'onglet Anthologie. \n\n Merci d'avoir pris votre temps et à bientôt sur https://avion-poe.me ! \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez nous soutenir ici :\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"Notification: Avion-poème arrivé à destination", "Notification_Arrivee_Destinataire":"Bonjour, \n\n Voici l'avion-poème que $expediteur vous a envoyé: \n\n $message \n\n Vous souhaiteriez lui répondre? Devenez à votre tour lanceur.se d'avion-poème. \n\n Merci d'avoir pris votre temps et à bientôt sur https://avion-poe.me ! \n\n Notre œuvre est gratuite, libre et indépendante. Si vous le désirez, vous pouvez <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >nous soutenir ici</a> \n", "Objet_Notification_Arrivee_Destinataire":"Notification: L'avion-poème envLine truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"飛行機の詩", "lancer_avion":"飛行機の詩を飛ばす", "anthologie":"作品集", "apropos":"私たちについて", "lancer":"送信する", "annuler":"キャンセルする", "origine":"出発地", "destination":"到着地", "expediteur":"送信者", "email":"Eメールアドレス", "anonyme":"匿名(送信時)", "destinataire":"受信者", "message":"メッセージ", "public":"公開", "anthologie_visible":"メッセージが到着した後、作品集に掲載されます", "prive":"非公開", "vitesse":"速度", "aléatoire":"ランダム", "choisie":"選択速度", "trois_jours":"3,14日", "sept_jours":"7日", "trente_jours":"30日", "unan_jours":"365日", "jour":"日", "jours":"日", "mois":"月", "mois_pluriel":"月", "an":"年", "ans":"年", "retour_carte":"地図に戻る", "precedent":"前へ", "suivant":"次へ", "temps_de_vol":"飛行時間", "date_arrivee":"到着日", "langue_destinataire":"受信者が話す言語", "suppr_message_public":"公開メッセージ/詩を削除したい場合は、<a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a> までご連絡ください。", "rechercher":"検索する", "public_tooltip":"飛行機の詩が到着した後に、作品集に掲載されるメッセージ", "anonyme_tooltip":"メールアドレスは、飛行機の詩が受信者に届いた後に通知されます", "expeMail_placeholder":"メールアドレスを入力してください", "expeLoc_placeholder":"出発地を選択してください", "destMail_placeholder":"受信者のメールアドレスを入力してください", "destLoc_placeholder":"目的地を選択してください", "librairies":"使用するライブラリ", "source_carte":"マップソース", "map_background":"ベースマップ", "clouds":"雲", "Notification_denvoi_Expediteur":"こんにちは、 $date_depart 発 $destinataire 行きの飛行機の詩が飛び立ちました。あなたのメッセージ:\n\n $message \n\n 受信者にこのフライトを通知しました。次の地図から飛行状況を追跡していただけます:\n $url_avion \n 到着予定日: $date_arrivee \n\n お時間をいただき、ありがとうございます! 「急ぐことに意味はない。時間通りに出発しなければならない。」 (ジャン・ドゥ・ラ・フォンテーヌ)\n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n", "Objet_Notification_denvoi_Expediteur":"離陸の通知:$destinataire 行きの飛行機の詩", "Notification_denvoi_Destinataire_ExpediteurConnu":"こんにちは、 $expediteur があなた宛ての飛行機の詩を飛ばしました \n 到着予定日: $date_arrivee \n 次の地図から飛行状況を追跡していただけます:\n $url_avion \n\n お時間をいただき、ありがとうございます \n ぜひ https://avion-poe.me もご覧ください。「急ぐことに意味はない。時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"通知: $expediteur があなた宛ての飛行機の詩を飛ばしました", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"こんにちは、誰かがあなた宛ての飛行機の詩を飛ばしました。 到着予定日:$date_arrivee \n 次の地図から追跡していただけます:\n $url_avion \n\n お時間をいただき、ありがとうございます。ぜひhttps://avion-poe.meもご覧ください。「急ぐことに意味はない。時間通りに出発しなければならない。」(ジャン・ドゥ・ラ・フォンテーヌ) \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートできます:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"通知:ご友人があなたに飛行機の詩を飛ばしました", "Notification_Arrivee_Expediteur":"こんにちは、詩の飛行機は今日目的地に到着し、あなたのメッセージは $destinataire に届けられました。 \n メッセージを公開にしている場合は、[作品集]タブに表示されます。お時間をいただき、ありがとうございます。ぜひ https://avion-poe.me もご覧ください。 \n\n Avion-poe.me は無料で、オープンソースで独立しています。 ご希望の場合は、こちらでサポートでLine truncated
+1
View File
@@ -0,0 +1 @@
{"fr":"Français","en":"English","de":"Deutsch","bg":"български","zh":"中文","ja":"日本語","es":"español","pt":"português","ar":"اللغة العربية"}
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"Avião-poema", "lancer_avion":"Lançar um avião-poema", "anthologie":"Antologia", "apropos":"Mais Informações", "lancer":"Lançar", "annuler":"Cancelar", "origine":"Descolagem", "destination":"Chegada", "expediteur":"Remetente", "email":"endereço de email", "anonyme":"anônimo (quando enviado)", "destinataire":"Destinatário", "message":"Mensagem", "public":"público", "anthologie_visible":"Visível na Antologia após a chegada da mensagem", "prive":"privada", "vitesse":"Velocidad", "aléatoire":"aleatória", "choisie":"escolhida", "trois_jours":"3.14 dias", "sept_jours":"7 dias", "trente_jours":"30 dias", "unan_jours":"365 dias", "jour":"dia", "jours":"dias", "mois":"mes", "mois_pluriel":"meses", "an":"ano", "ans":"anos", "retour_carte":"Voltar para o mapa", "precedent":"Anterior", "suivant":"Próximo", "temps_de_vol":"Duração do voo", "date_arrivee":"Data de chegada", "langue_destinataire":"Idioma falado pelo destinatário", "suppr_message_public":"Se você deseja excluir uma mensagem / poema público, entre em contato conosco pelo e-mail <a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"Procurar", "public_tooltip":"Mensagem publicada na Antologia assim que chegar o avião-poema", "anonyme_tooltip":"Seu endereço de e-mail não será comunicado ao destinatário até a chegada do avião-poema", "expeMail_placeholder":"Insira o seu endereço de email", "expeLoc_placeholder":"Escolha um ponto de partida", "destMail_placeholder":"Insira o endereço de e-mail do destinatário", "destLoc_placeholder":"Escolha um destino", "librairies":"Bibliotecas usadas", "source_carte":"Fontes de mapas", "map_background":"Fundo do mapa", "clouds":"Nuvens", "Notification_denvoi_Expediteur":"Olá, \n\n Você acabou de lançar um plano-poema a $destinataire em $date_depart. Sua mensagem: \n\n $message \n\n Nós o notificamos sobre esta remessa. Você pode seguir seu avião-poema aqui no mapa: \n $url_avion \n Data estimada de chegada: $date_arrivee \n\n Obrigado por dedicar seu tempo! \n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >você pode nos apoiar aqui</a> \n", "Objet_Notification_denvoi_Expediteur":"Notificação de envio: Avião-poema em vôo para $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"Olá, \n\n $expediteur acabou de decolar um avião-poema no seu destino. \n Data estimada de chegada: $date_arrivee \n Você pode acompanhar aqui no mapa: \n $url_avion \n\n Obrigado por dedicar seu tempo e nos vemos em breve em https://avion-poe.me ! \n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"Notificação: $expediteur enviou-lhe um avião-poema", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"Olá, \n\n Alguém acabou de decolar um avião-poema no seu destino. \n Data estimada de chegada: $date_arrivee \n Você pode acompanhar aqui no mapa: \n $url_avion \n\n Obrigado por dedicar seu tempo e nos vemos em breve em https://avion-poe.me ! \n “Não adianta correr, tem que começar na hora” (Jean de la Fontaine) \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"Notificação: um amigo enviou-lhe um avião-poema", "Notification_Arrivee_Expediteur":"Olá, \n\n Seu avião-poema chegou ao destino hoje e sua mensagem foi entregue a $destinataire . \n Se sua mensagem era pública, agora está visível na aba Antologia. \n\n Obrigado por dedicar seu tempo e nos vemos em breve no https://avion-poe.me ! \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, você pode nos apoiar aqui: \n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"Notificação: o avião-poema chegou ao destino", "Notification_Arrivee_Destinataire":"Olá, \n\n aqui está o avión-poema que $expediteur lhe enviou: \n\n $message \n\n Gostaria de responder a ele? Por sua vez, torne-se um lançador de avião-poema. \n\n Obrigado por dedicar seu tempo e nos vemos em breve em https://avion-poe.me ! \n\n Avion-poe.me é gratuito, libre e independente. Se desejar, <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >você pode nos apoiar aqui</a> \n", "Objet_Notification_Arrivee_Destinataire":"Notificação: O avião-poema enviado por $expediteur chegou ao seu destino!", "Peripetie_Perturbation":"Olá, \n\n O avião- poema do seu foi pego em um distúrbio e está lutando para se manter no curso. \n Sua nova data estimada de chegada é agLine truncated
+1
View File
@@ -0,0 +1 @@
{"avionpoeme":"詩作紙飞机", "lancer_avion":"发射詩作紙飞机", "anthologie":"选集", "apropos":"关于我们", "lancer":"发送射", "annuler":"取消", "origine":"出发送地", "destination":"目的地", "expediteur":"发件人", "email":"电子邮件", "anonyme":"匿名 寄送", "destinataire":"收件者", "message":"信息", "public":"公开", "anthologie_visible":"信息送达后即現於选集中", "prive":"私人的", "vitesse":"速度", "aléatoire":"随机的", "choisie":"选定的", "trois_jours":"3.14天", "sept_jours":"7天", "trente_jours":"30天", "unan_jours":"365天", "jour":"天", "jours":"天", "mois":"月", "mois_pluriel":"月", "an":"年", "ans":"年", "retour_carte":"回到地图", "precedent":"先前的", "suivant":"下列的", "temps_de_vol":"飞行时间", "date_arrivee":"到达日期", "langue_destinataire":"收件人使用之语言", "suppr_message_public":"如果您想删除公开信息/诗歌,请发送电子邮件至<a href=\"mailto:maxime@avion-poe.me\">maxime@avion-poe.me</a>", "rechercher":"搜索", "public_tooltip":"詩作紙飞机一到达, 消息即在選集中发布", "anonyme_tooltip":"诗作紙飞机到达前,您的电子邮件地址不会发送给收件人", "expeMail_placeholder":"输入您的电子邮件地址", "expeLoc_placeholder":"选择一个起点", "destMail_placeholder":"输入收件人的电子邮件地址", "destLoc_placeholder":"选择目的地", "librairies":"使用的图书馆", "source_carte":"地图來源", "map_background":"地图背景", "clouds":"云影", "Notification_denvoi_Expediteur":"您好,您刚刚在 $date_depart 上向 $destinataire 发送了一架詩作紙飞机。 您的信息: \n\n $message \n\n 他/他已收到通知。 您可以在地图上追蹤詩作紙飞机: \n $url_avion \n 预计到达日期:$date_arrivee \n\n 感谢您抽出宝贵的时间!\n “跑是没有用的;關鍵是必须及时出發。” (让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n", "Objet_Notification_denvoi_Expediteur":"派送通知:詩作紙飞机飞往 $destinataire", "Notification_denvoi_Destinataire_ExpediteurConnu":"您好,$expediteur 刚刚向您指定的目的地發送了一架诗作紙飞机。 预计到达日期:$date_arrivee 。 您可以在地图上追蹤它:\n $url_avion \n\n 感谢您抽出宝贵的时间,并很快在 https://avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurConnu":"通知:$expediteur 发送给您一架诗作紙飞机", "Notification_denvoi_Destinataire_ExpediteurAnonyme":"您好,某人刚向您的所在地發送一架诗作紙飞机。 预计到达日期:$date_arrivee 。\n 您可以在地图上追蹤它:\n $url_avion \n\n 感谢您抽出宝贵的时间,并很快在 https://avion-poe.me 见! “跑是沒有用的,關鍵是必须及時出發”(让.德.拉封丹)\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_denvoi_Destinataire_ExpediteurAnonyme":"通知:一位朋友寄给您一架诗作紙飞机", "Notification_Arrivee_Expediteur":"您好,您的诗作紙飞机今天已经到达目的地,您的詩作信息也已经传递给 $destinataire 。\n 如果您的信息是公开的,今後可在选集插頁标签中看到该信息。 感谢您抽出宝贵的时间,并很快在 https://avion-poe.me 见!\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n https://lydia-app.com/collect/98550-support-avion-poe-me/fr", "Objet_Notification_Arrivee_Expediteur":"通知:诗作紙飞机已到达目的地", "Notification_Arrivee_Destinataire":"您好,这是 $expediteur 发送给您的诗作紙飞机 : \n\n $message \n\n 您想回复他吗? 成为诗作紙飞机發送者。 感谢您抽出宝贵的时间,并很快在 https://avion-poe.me 见!\n\n Avion-poe.me 是免费、开源和独立的。 如果你愿意,你可以在这里支持我们:\n <a href=\"https://lydia-app.com/collect/98550-support-avion-poe-me/fr\" >https://lydia-app.com/collect/98550-support-avion-poe-me/fr</a> \n", "Objet_Notification_Arrivee_Destinataire":"通知:$expediteur 寄送的诗作紙飞机已经到达目的地!", "Peripetie_Perturbation":"您好,\n\n 您的诗作紙飞机陷入乱流,正在努力保持前进的航道。 新的预计到达日期是:$new_date_arrivee \n 发送者和接收者已被Line truncated
+33
View File
@@ -0,0 +1,33 @@
//open / close
var aboutOpen = 0
$('#buttonAbout').on('click',function(){
//hiding navbar
$('.navbar-collapse').collapse('hide');
if (aboutOpen > 0){
$('#about').css('visibility','hidden');
$('#about').css('opacity','0')
$('#backToMap').css('visibility','hidden');
$('#backToMap').css('opacity','0')
aboutOpen = 0
}
else{
$('#about').css('visibility','visible')
$('#about').css('opacity','1')
$('#backToMap').css('visibility','visible');
$('#backToMap').css('opacity','1')
aboutOpen = 1
}
//closing anthology
$('#anthology').css('opacity','0')
$('#anthology').css('visibility','hidden')
anthologyOpen = 0
})
$('#closeAnthologyAbout').on('click',function(){
$('#about').css('opacity','0')
$('#about').css('visibility','hidden')
$('#backToMap').css('opacity','0')
$('#backToMap').css('visibility','hidden')
aboutOpen = 0
})
+130
View File
@@ -0,0 +1,130 @@
//open / close
var anthologyOpen = 0
$('#buttonAnthology').on('click',function(){
//hiding navbar
$('.navbar-collapse').collapse('hide');
if (anthologyOpen > 0){
$('#anthology').css('visibility','hidden');
$('#anthology').css('opacity','0')
$('#backToMap').css('visibility','hidden');
$('#backToMap').css('opacity','0')
anthologyOpen = 0
}
else{
$('#anthology').css('visibility','visible')
$('#anthology').css('opacity','1')
$('#backToMap').css('visibility','visible');
$('#backToMap').css('opacity','1')
anthologyOpen = 1
displayAnthology()
}
//closing about
$('#about').css('visibility','hidden');
$('#about').css('opacity','0')
aboutOpen = 0
})
$('#closeAnthologyAbout').on('click',function(){
$('#anthology').css('opacity','0')
$('#anthology').css('visibility','hidden')
$('#backToMap').css('opacity','0')
$('#backToMap').css('visibility','hidden')
anthologyOpen = 0
})
$('#navTitle').on('click',function(){
$('#anthology').css('opacity','0')
$('#anthology').css('visibility','hidden')
$('#backToMap').css('opacity','0')
$('#backToMap').css('visibility','hidden')
$('#about').css('opacity','0')
$('#about').css('visibility','hidden')
aboutOpen = 0
anthologyOpen = 0
})
function flightTime(a,b){
var days = Math.round((b-a)/86400 * 100) / 100
var months = Math.round(days/30)
var years = Math.round(months/12)
if (days < 30){
return ""+days+" "+dictionnary.jours
}
else if (days >= 30 && days < 365){
if(months>1){
return ""+months+" "+dictionnary.mois_pluriel
}
else{
return ""+months+" "+dictionnary.mois
}
}
else if (days >= 365){
if(years>1){
return ""+years+" "+dictionnary.ans
}
else{
return ""+years+" "+dictionnary.an
}
}
}
//load
var nPages;
var nPagesLoaded = 1
$.post( "getAnthology.php", function(pages) {
pages = $.parseJSON(pages)
nPages = Number(pages.nPages)
})
function displayAnthology(){ // clean and display first page
$("#anthologyItems").html('')
nPagesLoaded = 1
$.post( "getAnthology.php?page=1", function(result) {
results = $.parseJSON(result)
var momentLocale = lang;
if (momentLocale == 'zh'){momentLocale = 'zh-cn'} //troubleshot for chinese
moment.locale(momentLocale)
for (var i in results){
addAnthologyLine(results[i])
}
})
}
$( "#anthology" ).scroll(function() {
if($("#anthology").scrollTop() + 700 > $("#anthologyItems").height()){
if (nPagesLoaded < nPages){
nPagesLoaded++
console.log('Loading anthology page '+nPagesLoaded+'/'+nPages)
$.post( "getAnthology.php?page="+nPagesLoaded+"", function(result) {
results = $.parseJSON(result)
var momentLocale = lang;
if (momentLocale == 'zh'){momentLocale = 'zh-cn'} //troubleshot for chinese
moment.locale(momentLocale)
for (var i in results){
addAnthologyLine(results[i])
}
})
}
}
});
function addAnthologyLine(results){
if (lang == 'ar'){ // arabic : rtl + add <br>
$("#anthologyItems").append(
'<small style="float:right">'+dictionnary.origine+': <b>'+results.startName+'</b> &bull; '+dictionnary.destination+': <b>'+results.destName+'</b> &bull; '+dictionnary.date_arrivee+': <b>'+moment(Number(results.deliveryTime)*1000).format('LL')+'</b> &bull; '+dictionnary.temps_de_vol+': <b>'+flightTime(Number(results.startTime),Number(results.deliveryTime))+'</b></small><br><br>'+results.message+'<br><hr><br>'
)
}
else{
$("#anthologyItems").append(
'<small>'+dictionnary.origine+': <b>'+results.startName+'</b> &bull; '+dictionnary.destination+': <b>'+results.destName+'</b> &bull; '+dictionnary.date_arrivee+': <b>'+moment(Number(results.deliveryTime)*1000).format('LL')+'</b> &bull; '+dictionnary.temps_de_vol+': <b>'+flightTime(Number(results.startTime),Number(results.deliveryTime))+'</b></small><br><br>'+results.message+'<br><hr><br>'
)
}
}
+264 -73
View File
@@ -1,73 +1,264 @@
body {
margin: 0;
padding: 0;
font-family: 'PT Mono', monospace;
/* font-family: 'Special Elite', cursive !important */
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 30px;
line-height: 30px; /* Vertically center the text there */
background-color: #f5f5f5;
font-size: 12px
}
/* removing footer on mobile */
@media screen and (max-width: 400px) {
.footer {
display:none
}
}
/* big modal */
.modal-lg {
max-width:1140px !important;
}
.mapboxgl-map{
font-family: 'PT Mono', monospace;
/* font-family: 'Special Elite', cursive !important */
}
.mapboxgl-ctrl-logo{
display: none !important;
}
/* paper plane animation */
#canvas3d{
display:none;
transition: all .3s;
position:fixed;
height:100vh;
width:100vw;
background-color: rgba(0,0,0,0);
z-index:9999;
margin-top: 50vh; /* poussé de la moitié de hauteur de viewport */
transform: translateY(-50%) translateX(-50%); /* tiré de la moitié de sa propre hauteur */
margin-left: 50vw; /* poussé de la moitié de hauteur de viewport */
}
/* qill text editor */
#messageTextArea {
min-height: 200px;
border-radius: 0px 0px .25em .25em !important;
border-color: #ced4da !important
}
.ql-toolbar{
border-radius: .25em .25em 0px 0px !important;
border-color: #ced4da !important
}
html,
body {
overflow-x: hidden;
height: 100%;
}
body {
position: relative;
margin: 0;
padding: 0;
font-family: 'PT Mono', monospace;
}
#map {
position: fixed;
top: 0;
bottom: 0;
height:100%;
width: 100%;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 30px;
line-height: 30px; /* Vertically center the text there */
background-color: #f5f5f5;
font-size: 12px
}
/* big modal */
.modal-lg {
max-width:1140px !important;
}
/* paper plane animation */
#canvas3d{
display:none;
transition: all .3s;
position:fixed;
height:100vh;
width:100vw;
background-color: rgba(0,0,0,0);
z-index:9999;
margin-top: 50vh; /* poussé de la moitié de hauteur de viewport */
transform: translateY(-50%) translateX(-50%); /* tiré de la moitié de sa propre hauteur */
margin-left: 50vw; /* poussé de la moitié de hauteur de viewport */
}
/* qill text editor */
#messageTextArea {
min-height: 200px;
border-radius: 0px 0px .25em .25em !important;
border-color: #ced4da !important
}
.ql-toolbar{
border-radius: .25em .25em 0px 0px !important;
border-color: #ced4da !important
}
/* make the pixi overlay on top of the arc lines */
.leaflet-pixi-overlay {
position: absolute !important;
z-index: 201 !important;
}
.bold{
font-weight:bold !important
}
/* Anthology */
#anthology{
visibility:hidden;
opacity:0;
transition:visibility 0.2s linear,opacity 0.2s linear;
position:absolute;
z-index:1029;
padding-top:66px;
padding-bottom:35px;
padding-left:30%;
padding-right:30%;
overflow-x:hidden;
height:100vh;
width:100vw;
background-color:rgba(255,255,255,0.9)
}
/* About */
#about{
visibility:hidden;
opacity:0;
transition:visibility 0.2s linear,opacity 0.2s linear;
position:absolute;
z-index:1029;
padding-top:66px;
padding-bottom:35px;
padding-left:30%;
padding-right:30%;
overflow-x:hidden;
height:100vh;
width:100vw;
background-color:rgba(255,255,255,0.9)
}
#backToMap{
visibility:hidden;
opacity:0;
transition:visibility 0.2s linear,opacity 0.2s linear;
position:fixed;
z-index:1035;
padding-left:10%;
padding-right:10%;
overflow-x:hidden;
width:100vw;
bottom:0px;
background-color:rgba(255,255,255,1);
border-top: 1px solid #ddd;
}
#backToMap a{
color:#070707
}
#backToMap p{
margin-bottom:5px;
padding-top:3px;
}
#backToMap a:hover{
color:black
}
.leaflet-popup-content-wrapper{
font-family: 'PT Mono', monospace;
border-radius: 1px;
/* font-family: 'Special Elite', cursive !important */
}
.leaflet-popup-content{
/* min-width:280px; */
margin-left: 10px;
margin-right: 21px;
margin-top: 10px;
margin-bottom: 10px;
}
.leaflet-popup-content hr{
width: 267px;
margin-top: 10px;
margin-bottom: 10px;
}
.leaflet-control-scale-line:not(:first-child) {
border-top: none;
border-bottom: 1px solid;
margin-top: 0px;
}
.leaflet-control-scale-line {
FONT-WEIGHT: 100;
font-family: 'PT Mono', monospace;
border: 1px solid #fff;
border-right: none;
border-top: none;
border-left: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
color: white;
-moz-box-sizing: border-box;
box-sizing: border-box;
/* background: #fff; */
background: rgba(255, 255, 255, 0);
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 1px !important;
border-bottom-right-radius: 1px !important;
}
.leaflet-bar a:first-child {
border-top-left-radius: 1px !important;
border-top-right-radius: 1px !important;
}
/* pulsating marker */
.pulse-icon-anim {
margin-top:2px;
margin-left:2px;
border: 3px solid;
-webkit-border-radius: 30px;
height: 18px;
width: 18px;
-webkit-animation: pulsate 1s ease-out;
-webkit-animation-iteration-count: infinite;
/*opacity: 0.0*/
}
@-webkit-keyframes pulsate {
0% {-webkit-transform: scale(0.1, 0.1); opacity: 0.0;}
50% {opacity: 1.0;}
100% {-webkit-transform: scale(1.2, 1.2); opacity: 0.0;}
}
a#navbarDropdownLang.nav-link.dropdown-toggle::after{
margin-left:0px !important
}
.nav-item{
margin-right:10px
}
.dropdown-menu{
font-size:0.9em !important;
padding: 0px !important
}
.ql-editor {
min-height:170px !important;
width: 100% !important
}
.ql-editor p {
font-size:1.25em !important;
}
.ql-editor .ql-size-small {
font-size: 0.9em !important;
}
@media screen and (max-width: 600px) {
.modal-body {
font-size:0.9rem
}
.modal-body .form-control{
font-size:0.8rem
}
.leaflet-popup-content {
margin: 10px 10px;
line-height: 1.4;
}
#anthologyItems{
font-size:0.8rem
}
#about{
padding-left:5% !important;
padding-right:5% !important;
}
#anthology{
padding-left:5% !important;
padding-right:5% !important;
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
var config = {
mapboxKey: 'pk.eyJ1IjoibGVvLWlnYSIsImEiOiJjazY2bGV3MTYxMjV3M25sMmdtNWluM2wzIn0.2THSqD6nz9OhE0Xsjnbw1g',
owmKey: "39d5c3be709ba4f5b6230cdffdedd2ac",
var config = {
mapboxKey: 'pk.eyJ1IjoiYXZpb25wb2VtZSIsImEiOiJja20yY28xaWQyNnRiMnBvNm1kdjF4M3A5In0.gbs_ozL4rwh7KNsLmph-yQ',
owmKey: "39d5c3be709ba4f5b6230cdffdedd2ac",
}
+25
View File
@@ -0,0 +1,25 @@
var validExpeMail = false
var validExpeLoc = false //turned to true in geocoder.js
var validDestMail = false
var validDestLoc = false //turned to true in geocoder.js
function validateEmail(email) { //from https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
$("#expeMail").change(function() {
validExpeMail = validateEmail($("#expeMail").val())
checkFormValid()
})
$("#destMail").change(function() {
validDestMail = validateEmail($("#destMail").val())
checkFormValid()
})
function checkFormValid(){
if(validExpeMail && validExpeLoc && validDestMail && validDestLoc){
$('#sendNewPlane').prop("disabled", false)
}
}
+128 -66
View File
@@ -1,67 +1,129 @@
let langGeocoder = "fr"
// Expediteur
var expeLocList = []
var expeLoc;
$('#expeGeocoderPhoton').typeahead({
source: function (query, process) {
expeLocList = []
var url = "https://photon.komoot.io/api?q="+query+"&lang="+langGeocoder+"&limit=4&osm_tag=place:city&osm_tag=place:town&osm_tag=place:village&osm_tag=place:municipality";
var res = []
return $.getJSON(url,function(data){
for (var i in data.features){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")")
expeLocList.push({
name: data.features[i].properties.name,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")"
})
}
return process(res)
})
},
matcher: function(item){ //needed when spelling not exact
return true
},
afterSelect: function (obj) {
for (var i in expeLocList){
if (expeLocList[i].fullname == obj){
expeLoc = expeLocList[i]
}
}
}
})
//Destinataire
var destLocList = []
var destLoc;
$('#destGeocoderPhoton').typeahead({
source: function (query, process) {
destLocList = []
var url = "https://photon.komoot.io/api?q="+query+"&lang="+langGeocoder+"&limit=4&osm_tag=place:city&osm_tag=place:town&osm_tag=place:village&osm_tag=place:municipality";
var res = []
return $.getJSON(url,function(data){
for (var i in data.features){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")")
destLocList.push({
name: data.features[i].properties.name,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")"
})
}
return process(res)
})
},
matcher: function(item){ //needed when spelling not exact
return true
},
afterSelect: function (obj) {
for (var i in destLocList){
if (destLocList[i].fullname == obj){
destLoc = destLocList[i]
}
}
}
function langGeocoder(lang){
if (lang == 'fr' || lang == 'en' || lang == 'de' || lang == 'it'){ //photon only supports fr en de it, the rest will be en by default
return lang
}
else return "en"
}
// Expediteur
var expeLocList = []
var expeLoc;
$('#expeGeocoderPhoton').typeahead({
source: function (query, process) {
var timer;
clearTimeout(timer);
timer = setTimeout(function() { // using a timer of 400 ms to troubleshot people typing super fast
expeLocList = []
var l = langGeocoder(lang)
var url = "https://photon.komoot.io/api?q="+query+"&lang="+l+"&limit=4&osm_tag=place:city&osm_tag=place:town&osm_tag=place:village&osm_tag=place:municipality&osm_tag=place:suburb&osm_tag=place:neighbourhood&osm_tag=place:hamlet&osm_tag=highway";
//var url = "https://photon.komoot.io/api?q="+query+"&lang="+l+"&limit=4";
var res = []
return $.getJSON(url,function(data){
for (var i in data.features){
if(data.features[i].properties.type == "street"){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")")
expeLocList.push({
name: data.features[i].properties.city,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")"
})
}
else if(data.features[i].properties.osm_value == "suburb" || data.features[i].properties.osm_value == "neighbourhood"){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")")
expeLocList.push({
name: data.features[i].properties.city,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")"
})
}
else{
res.push(data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")")
expeLocList.push({
name: data.features[i].properties.name,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")"
})
}
}
return process(res)
})
},
400
)
},
matcher: function(item){ //needed when spelling not exact
return true
},
afterSelect: function (obj) {
for (var i in expeLocList){
if (expeLocList[i].fullname == obj){
expeLoc = expeLocList[i]
validExpeLoc = true
checkFormValid()
}
}
}
})
//Destinataire
var destLocList = []
var destLoc;
$('#destGeocoderPhoton').typeahead({
source: function (query, process) {
var timer;
clearTimeout(timer);
timer = setTimeout(function() { // using a timer of 400 ms to troubleshot people typing super fast
destLocList = []
var l = langGeocoder(lang)
var url = "https://photon.komoot.io/api?q="+query+"&lang="+l+"&limit=4&osm_tag=place:city&osm_tag=place:town&osm_tag=place:village&osm_tag=place:municipality&osm_tag=place:suburb&osm_tag=place:neighbourhood&osm_tag=place:hamlet&osm_tag=highway";
var res = []
return $.getJSON(url,function(data){
for (var i in data.features){
if(data.features[i].properties.type == "street"){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")")
destLocList.push({
name: data.features[i].properties.city,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")"
})
}
else if(data.features[i].properties.osm_value == "suburb" || data.features[i].properties.osm_value == "neighbourhood"){
res.push(data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")")
destLocList.push({
name: data.features[i].properties.city,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.city+", "+data.features[i].properties.country+")"
})
}
else{
res.push(data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")")
destLocList.push({
name: data.features[i].properties.name,
center: data.features[i].geometry.coordinates,
fullname: data.features[i].properties.name+" ("+data.features[i].properties.state+", "+data.features[i].properties.country+")"
})
}
}
return process(res)
})
},
400
)
},
matcher: function(item){ //needed when spelling not exact
return true
},
afterSelect: function (obj) {
for (var i in destLocList){
if (destLocList[i].fullname == obj){
destLoc = destLocList[i]
validDestLoc = true
checkFormValid()
}
}
}
})
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

+71
View File
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="350.69684mm"
height="81.957626mm"
viewBox="0 0 350.69684 81.957626"
version="1.1"
id="svg841"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="licence.svg">
<defs
id="defs835" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="662.59146"
inkscape:cy="222.28966"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1001"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1" />
<metadata
id="metadata838">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(196.8553,-125.68985)">
<path
style="fill:#000000;stroke-width:0.26458332"
d=""
id="path1397"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:0.85096157;stroke-width:0.26458332"
d="m -163.81489,207.46334 c -0.29104,-0.12831 -0.96862,-0.24166 -1.50573,-0.25188 -0.53712,-0.0102 -1.05016,-0.13766 -1.1401,-0.28318 -0.0899,-0.14553 -0.50007,-0.26459 -0.91141,-0.26459 -0.41134,0 -1.08892,-0.17786 -1.50574,-0.39524 -0.41682,-0.21739 -0.96621,-0.39598 -1.22087,-0.39688 -0.25466,-8.9e-4 -0.46302,-0.12069 -0.46302,-0.26621 0,-0.14552 -0.22848,-0.26458 -0.50773,-0.26458 -0.57484,0 -1.55541,-0.45874 -4.91623,-2.29996 -0.87312,-0.47834 -1.79586,-0.94432 -2.05052,-1.03552 -0.25466,-0.0912 -0.46302,-0.271 -0.46302,-0.39955 0,-0.12855 -0.17859,-0.23372 -0.39688,-0.23372 -0.21828,0 -0.39687,-0.0999 -0.39687,-0.22212 0,-0.12216 -0.26789,-0.34447 -0.59531,-0.49402 -0.89219,-0.4075 -2.12054,-1.49132 -5.34743,-4.71821 -3.22689,-3.22688 -4.3107,-4.45524 -4.71821,-5.34742 -0.14955,-0.32743 -0.37186,-0.59532 -0.49402,-0.59532 -0.12216,0 -0.22211,-0.17859 -0.22211,-0.39687 0,-0.21828 -0.10518,-0.39688 -0.23373,-0.39688 -0.12855,0 -0.30526,-0.20836 -0.3927,-0.46302 -0.0874,-0.25466 -0.4597,-0.93927 -0.82723,-1.52135 -0.61955,-0.98121 -1.13558,-2.02101 -2.16656,-4.36563 -0.22396,-0.50932 -0.49792,-1.10854 -0.60881,-1.3316 -0.11088,-0.22306 -0.28544,-0.78724 -0.38789,-1.25374 -0.10247,-0.46649 -0.2962,-0.91609 -0.43052,-0.99911 -0.13433,-0.083 -0.24423,-0.55361 -0.24423,-1.04576 0,-0.49214 -0.10327,-0.95863 -0.22949,-1.03664 -0.49444,-0.30558 -0.66405,-2.98043 -0.66405,-10.47273 0,-7.4923 0.16961,-10.16715 0.66405,-10.47273 0.12622,-0.078 0.22949,-0.53695 0.22949,-1.01986 0,-0.48292 0.17859,-1.02625 0.39687,-1.20741 0.21829,-0.18116 0.39688,-0.61407 0.39688,-0.96203 0,-0.34796 0.10586,-0.83939 0.23525,-1.09208 0.12939,-0.25269 0.41394,-0.87615 0.63234,-1.38547 1.49389,-3.48387 4.15562,-8.04357 5.32856,-9.12813 0.15738,-0.14552 0.64202,-0.74083 1.07698,-1.32291 1.02016,-1.36524 4.7231,-5.06817 6.08833,-6.08833 0.58208,-0.43496 1.35477,-1.05873 1.71709,-1.38615 0.36231,-0.32742 0.8088,-0.59532 0.99218,-0.59532 0.18339,0 0.33344,-0.092 0.33344,-0.20441 0,-0.11243 0.44648,-0.43871 0.99218,-0.72507 0.54571,-0.28636 1.05172,-0.5903 1.12448,-0.67541 0.60038,-0.70231 7.73199,-3.68677 8.80983,-3.68677 0.25178,0 0.66451,-0.10919 0.9172,-0.24265 1.25373,-0.66215 4.40528,-0.85658 11.83651,-0.73025 7.55993,0.12853 9.92188,0.29714 9.92188,0.70831 0,0.11496 0.44648,0.26498 0.99219,0.3334 0.5457,0.0684 1.4089,0.27732 1.91822,0.46423 0.50933,0.18691 1.16417,0.4257 1.45521,0.53063 0.60123,0.21677 3.27562,1.42923 4.56407,2.06916 0.47294,0.2349 0.85989,0.51907 0.85989,0.6315 0,0.11243 0.20958,0.20442 0.46573,0.20442 0.25614,0 0.78673,0.29765 1.17907,0.66146 0.39235,0.3638 0.78442,0.66145 0.87128,0.66145 0.44762,0 4.26055,3.1154 6.3571,5.19415 2.39246,2.37214 6.47265,7.68818 6.47265,8.43316 0,0.21759 0.1168,0.39561 0.25955,0.39561 0.14274,0 0.33424,0.29766 0.42556,0.66146 0.0913,0.3638 0.27216,0.66146 0.40191,0.66146 0.12974,0 0.2359,0.2311 0.2359,0.51355 0,0.28245 0.11906,0.58714 0.26458,0.67707 0.14552,0.0899 0.26459,0.38004 0.26459,0.64468 0,0.26463 0.17859,0.62937 0.39687,0.81053 0.21828,0.18116 0.39688,0.60543 0.39688,0.94282 0,0.3374 0.11906,0.68704 0.26458,0.77697 0.14552,0.0899 0.26837,0.42439 0.273,0.74322 0.005,0.31884 0.18322,0.81082 0.39687,1.09329 0.21366,0.28247 0.38846,0.90052 0.38846,1.37345 0,0.47292 0.10327,0.92368 0.22949,1.00168 0.49759,0.30753 0.66431,3.00226 0.66431,10.73732 0,7.73506 -0.16672,10.42979 -0.66431,10.73732 -0.12622,0.078 -0.22949,0.52876 -0.22949,1.00168 0,0.47293 -0.1748,1.09098 -0.38846,1.37345 -0.21365,0.28248 -0.39224,0.7831 -0.39687,1.11249 -0.005,0.3294 -0.11688,0.80565 -0.24945,1.05834 -0.13257,0.25269 -0.56327,1.1738 -0.95711,2.04693 -0.67818,1.50348 -1.18185,2.52218 -1.82508,3.69132 -0.50696,0.92146 -3.63334,5.23204 -4.4837,6.18202 -1.49669,1.67204 -3.18586,3.25576 -4.66391,4.37276 -0.80036,0.60485 -1.57427,1.22559 -1.71979,1.37941 -0.5102,0.53931 -2.21647,1.7047 -2.49589,1.7047 -0.15523,0 -0.28224,0.0986 -0.28224,0.21911 0,0.29287 -6.89495,3.74964 -7.47913,3.74964 -0.2521,0 -0.45837,0.11906 -0.45837,0.26458 0,0.14552 -0.32742,0.26837 -0.7276,0.273 -0.40018,0.005 -0.95872,0.18322 -1.24119,0.39687 -0.28248,0.21365 -0.90053,0.38846 -1.37345,0.38846 -0.47292,0 -0.92567,0.10649 -1.00611,0.23664 -0.0804,0.13015 -0.65301,0.32142 -1.27238,0.42505 -1.70759,0.2857 -16.13173,0.4046 -16.73656,0.13796 z m 12.96459,-8.20798 c 0.0899,-0.14552 0.66251,-0.2688 1.27238,-0.27396 0.60988,-0.005 1.40652,-0.17953 1.77032,-0.3875 0.36381,-0.20797 0.93097,-0.38234 1.26037,-0.3875 0.59962,-0.009 0.7572,-0.0679 2.3991,-0.89065 0.48473,-0.2429 1.10981,-0.44164 1.38906,-0.44164 0.27925,0 0.50772,-0.11906 0.50772,-0.26458 0,-0.14552 0.22355,-0.26459 0.49678,-0.26459 0.27322,0 0.64498,-0.17859 0.82614,-0.39687 0.18116,-0.21828 0.55292,-0.39688 0.82615,-0.39688 0.27322,0 0.49677,-0.092 0.49677,-0.20441 0,-0.11243 0.44648,-0.43957 0.99219,-0.72697 0.5457,-0.2874 1.13688,-0.6419 1.31373,-0.78777 0.17685,-0.14587 0.49925,-0.41405 0.71644,-0.59595 0.21719,-0.1819 0.50905,-0.33073 0.64859,-0.33073 0.13953,0 0.29Line truncated
id="path1412"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

+484 -266
View File
@@ -1,266 +1,484 @@
mapboxgl.accessToken = config.mapboxKey;
const owmKey = config.owmKey
var map = new mapboxgl.Map({
container: 'map',
style: {
"glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
"light": {
"anchor": "viewport",
"color": "white",
"intensity": 0.1
},
'version': 8,
'sources': {
'default-background': {
'type': 'raster',
'tiles': [
//'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/VIIRS_CityLights_2012/default//GoogleMapsCompatible_Level8/{z}/{y}/{x}.jpg'
//'https://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/{z}/{y}/{x}'
//'https://stamen-tiles-b.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg'
'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
],
'tileSize': 256
}
},
'layers': [{
id: 'background',
type: 'background',
paint: {
'background-color': '#ffffff'
}
},
{
'id': 'default-background',
'type': 'raster',
'source': 'default-background',
'minzoom': 0,
'maxzoom': 18
}
]
},
center: [0, 20],
zoom: 2,
attributionControl: false
});
//prevent world duplication
map.setRenderWorldCopies(status === 'false')
map.on('load', function () {
//displaying clouds from OpenWeatherMap free API not enough
// map.addSource('clouds', {
// 'type': 'raster',
// 'tiles': [
// 'https://tile.openweathermap.org/map/clouds_new/{z}/{x}/{y}.png?appid='+owmKey+''
// ],
// 'tileSize': 256
// });
// map.addLayer({
// 'id': 'clouds',
// 'type': 'raster',
// 'source': 'clouds',
// 'minzoom': 0,
// 'maxzoom': 10,
// 'paint':{
// 'raster-opacity':0.5
// }
// });
//loading icons and colors, too lazy to make a loop, to change.
map.loadImage('src/img/plane-FFE419.png',
function (error, image) {
if (error) throw error;
map.addImage('plane-FFE419', image);
})
map.loadImage('src/img/plane-66FF00.png',
function (error, image) {
if (error) throw error;
map.addImage('plane-66FF00', image);
})
map.loadImage('src/img/plane-FF5555.png',
function (error, image) {
if (error) throw error;
map.addImage('plane-FF5555', image);
})
var colors = ["FFE419","66FF00","FF5555"]
//get now in GMT+0
var nowGMTSeconds = moment.tz(new Date(), "Europe/London").unix()
//get the planes from firestore
db.collection("planes").where("deliverySecondsServer", ">", nowGMTSeconds).get().then((querySnapshot) => { //change query to get only the ones who are still flying
querySnapshot.forEach((doc) => {
var id = doc.id
var data = doc.data()
//creating arcs
var line = turf.lineString([data.startCoordo,data.destCoordo])
var lineDistance = turf.length(line);
var arc = [];
var steps = 500;
for (var i = 0; i < lineDistance; i += lineDistance / steps) {
var segment = turf.along(line, i);
arc.push(segment.geometry.coordinates);
}
line.geometry.coordinates = arc;
//random color
var randomColor = colors[Math.floor(Math.random() * colors.length)];
map.addSource('route-'+id+'', {
'type': 'geojson',
'data': line
});
map.addLayer({
'id': 'route-'+id+'',
'source': 'route-'+id+'',
'type': 'line',
'paint': {
'line-width': 2,
'line-color': '#'+randomColor
}
});
map.setLayoutProperty('route-'+id+'', 'visibility', 'none');
//creating and animating planes
// calculating area already travelled
var dateStart = moment(data.sentDate[0])
var dateEnd = moment(data.deliveryDate[0])
var dateNow = moment(new Date())
var totalSeconds = dateEnd.diff(dateStart,'seconds');
var travelledSeconds = dateNow.diff(dateStart,'seconds')
var travelRatio = travelledSeconds/totalSeconds
var lineDistance = turf.length(line);
var currentPosition = turf.along(line, lineDistance*travelRatio,{units: 'kilometers'})
var plane = turf.point(currentPosition.geometry.coordinates,data)
//calculating bearing based on two points, one just before and one just after
var positionBefore = turf.along(line, (lineDistance*travelRatio)-0.00001,{units: 'kilometers'})
var positionAfter = turf.along(line, (lineDistance*travelRatio)+0.00001,{units: 'kilometers'})
plane.properties.bearing = turf.bearing(
positionBefore,
positionAfter
);
map.addSource('plane-'+id+'', {
'type': 'geojson',
'data': plane
});
map.addLayer({
'id': 'plane-'+id+'',
'source': 'plane-'+id+'',
'type': 'symbol',
'layout': {
'icon-image': 'plane-'+randomColor+'',
'icon-rotate': ['get', 'bearing'],
'icon-size':0.05,
'icon-rotation-alignment': 'map',
'icon-allow-overlap': true,
'icon-ignore-placement': true
}
});
//animating
function animate(){
var dateStart = moment(data.sentDate[0])
var dateEnd = moment(data.deliveryDate[0])
var dateNow = moment(new Date())
var totalSeconds = dateEnd.diff(dateStart,'seconds');
var travelledSeconds = dateNow.diff(dateStart,'seconds')
var travelRatio = travelledSeconds/totalSeconds
var lineDistance = turf.length(line);
var currentPosition = turf.along(line, lineDistance*travelRatio,{units: 'kilometers'})
var plane = turf.point(currentPosition.geometry.coordinates,data)
//calculating bearing based on two points, one just before and one just after
var positionBefore = turf.along(line, (lineDistance*travelRatio)-0.00001,{units: 'kilometers'})
var positionAfter = turf.along(line, (lineDistance*travelRatio)+0.00001,{units: 'kilometers'})
plane.properties.bearing = turf.bearing(
positionBefore,
positionAfter
);
map.getSource('plane-'+id+'').setData(plane);
var nowGMTSeconds = moment.tz(new Date(), "Europe/London").unix()
//removing the plane from map if arrived
if (data.deliverySecondsServer < nowGMTSeconds){
map.setLayoutProperty('plane-'+id+'', 'visibility', 'none');
}
requestAnimationFrame(animate)
}
// uncomment to animate below, still some clipping issues
//animate()
//on click on a plane: get popup + display route
map.on('click', 'plane-'+id+'', function (e) {
var coordinates = e.features[0].geometry.coordinates.slice();
var prop = e.features[0].properties;
var sentDate = JSON.parse(prop.sentDate)[0]
var deliveryDate = JSON.parse(prop.deliveryDate)[0]
while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
}
//displying route
map.setLayoutProperty('route-'+id+'', 'visibility', 'visible');
var popup = new mapboxgl.Popup()
.setLngLat(coordinates)
.setHTML("<b>Origine:</b> "+prop.startName+"<br><em>"+sentDate+"</em><br><b>Destination:</b> "+prop.destName+"<br><em>"+deliveryDate+"</em>")
.addTo(map);
//removing route
popup.on('close', function(){
map.setLayoutProperty('route-'+id+'', 'visibility', 'none');
});
});
// Change the cursor to a pointer when the mouse is over the places layer.
map.on('mouseenter', 'plane-'+id+'', function () {
map.getCanvas().style.cursor = 'pointer';
});
// Change it back to a pointer when it leaves.
map.on('mouseleave', 'plane-'+id+'', function () {
map.getCanvas().style.cursor = '';
});
//adapt icon size to zoom level
map.on('zoom', function() {
map.setLayoutProperty('plane-'+id+'', 'icon-size', (map.getZoom())*0.025);
});
//URL Parameter : zooming to ID and opening popup when url in format avion-poe.me?plane=id
var queryString = window.location.search;
queryString = queryString.substring(7)
if(id == queryString){
map.setLayoutProperty('route-'+id+'', 'visibility', 'visible');
var bboxTravel = turf.bbox(line);
var bounds = [[bboxTravel[0],bboxTravel[1]],[bboxTravel[2],bboxTravel[3]]]
map.fitBounds(bounds, {
padding: 65,
speed: 0.5, // make the flying slow
curve: 0.8, // change the speed at which it zooms out
// This can be any easing function: it takes a number between
// 0 and 1 and returns another number between 0 and 1.
easing: function(
t) {
return t;
},
});
var sentDate = plane.properties.sentDate[0]
var deliveryDate = plane.properties.deliveryDate[0]
var popup = new mapboxgl.Popup()
.setLngLat(currentPosition.geometry.coordinates)
.setHTML("<b>Origine:</b> "+plane.properties.startName+"<br><em>"+sentDate+"</em><br><b>Destination:</b> "+plane.properties.destName+"<br><em>"+deliveryDate+"</em>")
.addTo(map);
//removing route
popup.on('close', function(){
map.setLayoutProperty('route-'+id+'', 'visibility', 'none');
});
}
});
});
})
var loader = new PIXI.Loader();
var colors = ['66FF00','FF5555','FFE419','2A7FFF','BC5FD3','C8AB37','ECECEC','FF6600'];
for (var i in colors){
loader.add('marker'+colors[i]+'', 'src/img/plane-'+colors[i]+'.png');
}
//global variable
var nbPlane = 0
loader.add('shadow', 'src/img/shadow.png');
loader.load(function(loader, resources) {
var pixiContainer = new PIXI.Container();
var map = L.map('map',{
zoomControl: false,
minZoom:2,
maxZoom: 16,
maxBounds: [
[-Infinity, -360],
[Infinity, 360]
],
//worldCopyJump: true,
attributionControl: false
})
//zoom controls
L.control.zoom({position: 'bottomright'}).addTo(map);
//Locate user
L.control.locate({position: 'bottomright'}).addTo(map);
//fullscreen
map.addControl(new L.Control.Fullscreen({position: 'bottomright'}));
// Licence Icon
L.Control.Watermark = L.Control.extend({
onAdd: function(map) {
var img = L.DomUtil.create('img');
img.src = 'src/img/licence.svg';
img.style.width = '100px';
return img;
}
});
L.control.watermark = function(opts) {
return new L.Control.Watermark(opts);
}
L.control.watermark({ position: 'bottomleft' }).addTo(map);
//scale
L.control.scale().addTo(map);
//disabling send plane button if alreada 100 planes sent the current day
$.post("avionJournalier.php", function(result) {
result = result.replace(/'/g, '"');
result = $.parseJSON(result)
nbPlane = Number(result.nAvion)
$("#buttonNewPlane").val("Lancer un avion-poème "+Number(result.nAvion)+"/100")
if (nbPlane > 99){
$("#buttonNewPlane").prop("disabled",true);
}
else{
}
translateUI(lang)
})
//background
L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
attribution: '',
//minZoom:8,
maxZoom: 16,
}).addTo(map);
//adding terminator
var terminator = L.terminator()
.addTo(map);
setInterval(function() {
terminator.setTime();
}, 1000);
//center map on sun by default
function centerOnSun(){
var equator = turf.lineString([[-1000, 0], [1000, 0]])
var intersects = turf.lineIntersect(equator, terminator.toGeoJSON());
//console.log(intersects)
var lonCenter = ((intersects.features[1].geometry.coordinates[0])+(intersects.features[2].geometry.coordinates[0]))/2
//console.log(lonCenter)
return lonCenter
}
map.setView([30,0], 2);
//could layer from GBIS NASA - always 1 day of delay
var twoDaysAgo = moment(new Date()).subtract(2, "days").format('YYYY-MM-DD')
L.tileLayer('https://map1.vis.earthdata.nasa.gov/wmts-webmerc/VIIRS_SNPP_CorrectedReflectance_TrueColor/default/'+twoDaysAgo+'/GoogleMapsCompatible_Level9/{z}/{y}/{x}.jpg', {
attribution: '',
maxZoom: 8,
opacity:0.4
})
.addTo(map);
//Bluring the terminator | Source: https://stackoverflow.com/questions/28235792/leaflet-polygon-with-fuzzy-outline
var svg = map.getPanes().overlayPane.firstChild,
svgFilter = document.createElementNS('http://www.w3.org/2000/svg', 'filter'),
svgBlur = document.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
svgFilter.setAttribute('id', 'blur');
svgFilter.setAttribute('x', '-100%');
svgFilter.setAttribute('y', '-100%');
svgFilter.setAttribute('width', '500%');
svgFilter.setAttribute('height', '500%');
svgBlur.setAttribute('stdDeviation', 15);
svgFilter.appendChild(svgBlur);
svg.appendChild(svgFilter);
terminator._path.setAttribute('filter', 'url(#blur)');
//geojson for arclines
//travel
var arcTravelStyle = {
"color": "#00ff00",
"weight": 2.5,
"dashArray": "10 5",
"opacity": 0.65
};
var arcTravel = L.geoJSON([],{style: arcTravelStyle}).addTo(map);
//travelled
var arcTravelledStyle = {
"color": "#00ff00",
"weight": 2.5,
"opacity": 0.65
};
var arcTravelled = L.geoJSON([],{style: arcTravelledStyle}).addTo(map);
var pulsatingMarker = L.layerGroup([]).addTo(map)
var originMarker = L.layerGroup([]).addTo(map)
var firstDraw = true;
var prevZoom;
var pixiOverlay = L.pixiOverlay(function(utils, event) {
var zoom = utils.getMap().getZoom();
var container = utils.getContainer();
var renderer = utils.getRenderer();
var project = utils.latLngToLayerPoint;
var scale = utils.getScale();
if (firstDraw) {
//get planes
$.post( "getCurrentPlanes.php", function(result) {
// console.log(result)
var planes = $.parseJSON(result)
console.log(planes)
function formatResults(data){
data.deliveryTime = Number(data.deliveryTime)*1000
data.startTime = Number(data.startTime)*1000
return data
}
function displayPlane(data){
var line = turf.greatCircle(turf.point([Number(data.startLon),Number(data.startLat)]), turf.point([Number(data.destLon),Number(data.destLat)]),{offset:20})
var lineDistance = turf.length(line);
var dateStart = moment(data.startTime)
var dateEnd = moment(data.deliveryTime)
var dateNow = moment(new Date())
var totalSeconds = dateEnd.diff(dateStart,'seconds');
var travelledSeconds = dateNow.diff(dateStart,'seconds')
var travelRatio = travelledSeconds/totalSeconds
var travelledDistance = lineDistance*travelRatio // getting the travelled distance
var segment;
if(line.geometry.type == "MultiLineString"){ // if the arc is cutting the dateline, well it's a mess.
var l1 = turf.lineString(line.geometry.coordinates[0]) // creating a line from first segment
var l2 = turf.lineString(line.geometry.coordinates[1]) // creating a line from second segment
var l1Length = turf.length(l1) // calculating length of first segment
if (travelledDistance < l1Length){ // if the travelled distance is inferior to segment 1 line, the point is somewhere in it
segment = l1
data.position = 1
}
else{
segment = l2 // otherwise on segment 2
data.position = 2
travelledDistance = Number(travelledDistance)-Number(l1Length) // we remove the travel distance done in s1
}
}
else{
segment = line
data.position = 0
}
var currentPosition = turf.along(segment, travelledDistance,{units: 'kilometers'})
if(currentPosition.geometry.coordinates[0] < -180){currentPosition.geometry.coordinates[0] = currentPosition.geometry.coordinates[0]+360}
if(currentPosition.geometry.coordinates[0] > 180){currentPosition.geometry.coordinates[0] = currentPosition.geometry.coordinates[0]-Number(360)}
//calculating bearing based on two points, one just before and one just after
var positionBefore = turf.along(segment, (travelledDistance)-0.00001,{units: 'kilometers'})
var positionAfter = turf.along(segment, (travelledDistance)+0.00001,{units: 'kilometers'})
var rotation = turf.bearing(
positionBefore,
positionAfter
);
//plane
var iconColor = 'marker'+data.color
var markerTexture = resources[iconColor].texture;
var marker = new PIXI.Sprite(markerTexture);
marker.anchor.set(0.5, 0.5);
var markerCoords = project([currentPosition.geometry.coordinates[1],currentPosition.geometry.coordinates[0]]);
marker.x = markerCoords.x;
marker.y = markerCoords.y;
marker.angle = rotation;
marker.scale.set(5);
marker.interactive = true;
marker.cursor = 'pointer'
marker.data = data
marker.data.line = line
marker.data.currentPosition = currentPosition
//shadow
var shadowTexture = resources.shadow.texture;
var shadow = new PIXI.Sprite(shadowTexture);
shadow.anchor.set(0.5, 0.5);
shadow.x = markerCoords.x;
shadow.y = markerCoords.y + 0.5;
shadow.angle = rotation;
shadow.scale.set(0.00025);
shadow.alpha = 0.3
shadow.visible = false
//popup
marker.popup = L.popup({className: 'pixi-popup'})
pixiContainer.addChild(shadow);
pixiContainer.addChild(marker);
renderer.render(container)
//adapting scale based on zoom level. Max zoom = writting visible
map.on('zoomend', function() {
marker.scale.set((1/(utils.getScale(map.getZoom())*20))+(Math.pow(map.getZoom(),2)/100*2*(1/(utils.getScale(map.getZoom())*20))))
if(map.getZoom() == 16){
shadow.visible = true
}
else{
shadow.visible = false
}
});
//animating moving plane
setInterval(function() {
animate();
}, 1000)
function animate() {
if (map.getZoom() > 12){ // we animate only starting zoom 12
var bounds = map.getBounds()
var bbox = [bounds._southWest.lng, bounds._southWest.lat, bounds._northEast.lng, bounds._northEast.lat];
var extentPoly = turf.bboxPolygon(bbox);
var planeInExtent = turf.booleanWithin(marker.data.currentPosition, extentPoly);
if(planeInExtent == true){ // we animate only the planes in map extent
var dateNow = moment(new Date())
var totalSeconds = dateEnd.diff(dateStart,'seconds');
var travelledSeconds = dateNow.diff(dateStart,'seconds')
var travelRatio = travelledSeconds/totalSeconds
var lineDistance = turf.length(line);
var segment;
var travelledDistance = lineDistance*travelRatio // getting the travelled distance
if(line.geometry.type == "MultiLineString"){ // if the arc is cutting the dateline
var l1 = turf.lineString(line.geometry.coordinates[0]) // creating a line from first segment
var l2 = turf.lineString(line.geometry.coordinates[1]) // creating a line from second segment
var l1Length = turf.length(l1) // calculating length of first segment
if (travelledDistance < l1Length){ // if the travelled distance is inferior to segment 1 line, the point is somewhere in it
segment = l1
marker.data.position = 1 // we store it, usefull for popup event
}
else{
segment = l2 // otherwise on segment 2
marker.data.position = 2
travelledDistance = Number(travelledDistance)-Number(l1Length) // we remove the travel distance done in s1
}
}
else{
segment = line
}
var currentPosition = turf.along(segment, travelledDistance,{units: 'kilometers'})
//troubleshooting extreme lons
if(currentPosition.geometry.coordinates[0] < -180){currentPosition.geometry.coordinates[0] = currentPosition.geometry.coordinates[0]+360}
if(currentPosition.geometry.coordinates[0] > 180){currentPosition.geometry.coordinates[0] = currentPosition.geometry.coordinates[0]-Number(360)}
marker.data.currentPosition = currentPosition
var markerCoords = project([currentPosition.geometry.coordinates[1],currentPosition.geometry.coordinates[0]]);
marker.x = markerCoords.x;
marker.y = markerCoords.y;
shadow.x = markerCoords.x;
shadow.y = markerCoords.y + 0.5;
renderer.render(container);
}
}
}
//if parameter in URL, zoom on it
var queryString = window.location.search;
queryString = queryString.split('=')[1]
if(Number(queryString)==data.uid){
setTimeout(
function()
{
map.setView([data.currentPosition.geometry.coordinates[1],data.currentPosition.geometry.coordinates[0]], 15);
openPopup(marker)
}, 100);
}
}
for (var i in planes){
displayPlane(formatResults(planes[i]),0)
}
});
function openPopup(target){
//drawing arcs
arcTravel.clearLayers()
arcTravelled.clearLayers()
arcTravelStyle.color = '#'+target.data.color
arcTravelledStyle.color = '#'+target.data.color
var travel = target.data.line
var start = turf.point([Number(target.data.startLon),Number(target.data.startLat)])
var current = target.data.currentPosition
var end = turf.point([Number(target.data.destLon),Number(target.data.destLat)])
// for linestrings
if(travel.geometry.type == "LineString"){
var sliced1 = turf.lineSlice(start, current, travel);
var sliced2 = turf.lineSlice(current, end, travel);
arcTravelled.addData(sliced1);
arcTravel.addData(sliced2);
}
// we create a copy of lines crossing the datetime
function createCopy(c){
for (var i in c.geometry.coordinates){
if (c.geometry.coordinates[i][0] > 0){
c.geometry.coordinates[i][0] = c.geometry.coordinates[i][0] - Number(360)
}
else{
c.geometry.coordinates[i][0] = c.geometry.coordinates[i][0] + Number(360)
}
}
return c
}
//for multilinetrings
if(travel.geometry.type == "MultiLineString"){
var l1 = turf.lineString(travel.geometry.coordinates[0]) // creating a line from first segment
var l2 = turf.lineString(travel.geometry.coordinates[1]) // creating a line from second segment
if(target.data.position == 1){
var sliced1 = turf.lineSlice(start, current, l1);
var sliced2 = turf.lineSlice(current, turf.point(l1.geometry.coordinates[l1.geometry.coordinates.length-1]), l1);
arcTravelled.addData(sliced1);
arcTravel.addData(sliced2);
arcTravel.addData(l2);
}
else if(target.data.position == 2){
var sliced1 = turf.lineSlice(turf.point(l2.geometry.coordinates[0]), current, l2);
var sliced2 = turf.lineSlice(current, end, l2);
arcTravelled.addData(l1);
arcTravelled.addData(sliced1);
arcTravel.addData(sliced2);
}
var travelledGeoJSON = arcTravelled.toGeoJSON()
for (var i in travelledGeoJSON.features){
arcTravelled.addData(createCopy(travelledGeoJSON.features[i]))
}
var travelGeoJSON = arcTravel.toGeoJSON()
for (var i in travelGeoJSON.features){
arcTravel.addData(createCopy(travelGeoJSON.features[i]))
}
}
//add pulsating marker on destination;
pulsatingMarker.clearLayers()
var pulseIcon = L.divIcon({
className: 'pulse-icon', //empty class to overwrite leaflet defaults
html: '<div class="pulse-icon-anim" style="border-color:#'+target.data.color+'"></div>',
iconSize: [22,22]
});
var endCoordo = [Number(target.data.destLat),Number(target.data.destLon)]
pulsatingMarker.addLayer(new L.marker(endCoordo, {icon: pulseIcon}));
if(travel.geometry.type == "MultiLineString"){ //if arc cross dateline, we multiply the marker
pulsatingMarker.addLayer(new L.marker([endCoordo[0],endCoordo[1]-Number(360)], {icon: pulseIcon}));
pulsatingMarker.addLayer(new L.marker([endCoordo[0],endCoordo[1]+Number(360)], {icon: pulseIcon}));
}
//adding static marker on origin
originMarker.clearLayers()
var startCoordo = [Number(target.data.startLat),Number(target.data.startLon)]
originMarker.addLayer(new L.circleMarker(startCoordo, {radius: 6,opacity:0.7, weight:2,color:'#'+target.data.color}));
if(travel.geometry.type == "MultiLineString"){ //if arc cross dateline, we multiply the marker
originMarker.addLayer(new L.circleMarker([startCoordo[0],startCoordo[1]-Number(360)], {radius: 6,opacity:0.7,weight:2,color:'#'+target.data.color}));
originMarker.addLayer(new L.circleMarker([startCoordo[0],startCoordo[1]+Number(360)], {radius: 6,opacity:0.7,color:'#'+target.data.color}));
}
//popup
var momentLocale = lang;
if (momentLocale == 'zh'){momentLocale = 'zh-cn'} //troubleshot for chinese
moment.locale(momentLocale)
target.popup.setLatLng([target.data.currentPosition.geometry.coordinates[1],target.data.currentPosition.geometry.coordinates[0]])
//arabic popup
if(lang=="ar"){
target.popup.setContent('<table><tbody><tr><th style="text-align:center">'+target.data.startName+'</th><th>&nbsp;<i class="fas fa-plane"></i>&nbsp;</th><th style="text-align:center">'+target.data.destName+'</th></tr><tr><th style="text-align:center"><small>'+moment(target.data.startTime).fromNow()+'</small></th><th></th><th style="text-align:center"><small>'+moment(target.data.deliveryTime).fromNow()+'</small></th></tr></tbody></table>')
}
//other languages
else{
target.popup.setContent('<table><tbody><tr><th style="text-align:center">'+target.data.startName+'</th><th>&nbsp;<i class="fas fa-plane"></i>&nbsp;</th><th style="text-align:center">'+target.data.destName+'</th></tr><tr><th style="text-align:center"><small>'+moment(target.data.startTime).fromNow()+'</small></th><th></th><th style="text-align:center"><small>'+moment(target.data.deliveryTime).fromNow()+'</small></th></tr></tbody></table>')
}
target.popup.openOn(map);
target.popup.on('remove', function() {
arcTravel.clearLayers()
arcTravelled.clearLayers()
pulsatingMarker.clearLayers()
originMarker.clearLayers()
});
target.popup.on('popupclose', function() {
arcTravel.clearLayers()
arcTravelled.clearLayers()
pulsatingMarker.clearLayers()
originMarker.clearLayers()
});
}
//utils for popup
utils.getMap().on('click', function(e) {
var interaction = utils.getRenderer().plugins.interaction;
var pointerEvent = e.originalEvent;
var pixiPoint = new PIXI.Point();
interaction.mapPositionToPoint(pixiPoint, pointerEvent.clientX, pointerEvent.clientY);
var target = interaction.hitTest(pixiPoint, container);
if (target && target.popup) {
openPopup(target)
}
});
utils.getMap().on('touchend', function(e) {
var interaction = utils.getRenderer().plugins.interaction;
var pointerEvent = e.originalEvent;
var pixiPoint = new PIXI.Point();
interaction.mapPositionToPoint(pixiPoint, pointerEvent.clientX, pointerEvent.clientY);
var target = interaction.hitTest(pixiPoint, container);
if (target && target.popup) {
openPopup(target)
}
});
}
firstDraw = false;
prevZoom = zoom;
renderer.render(container);
}, pixiContainer);
pixiOverlay.addTo(map);
});
//hack to make white lines between lines disapear on non-retina screens (from: https://github.com/Leaflet/Leaflet/issues/3575 )
(function(){
var originalInitTile = L.GridLayer.prototype._initTile
L.GridLayer.include({
_initTile: function (tile) {
originalInitTile.call(this, tile);
var tileSize = this.getTileSize();
tile.style.width = tileSize.x + 1 + 'px';
tile.style.height = tileSize.y + 1 + 'px';
}
});
})()
+206 -110
View File
@@ -1,111 +1,207 @@
// init text editor in modal
var quill = new Quill('#messageTextArea', {
modules: {
toolbar: [
[{ 'size': ['small', false, 'large'] }],
[{ 'font': [] }],
['bold', 'italic', 'underline','strike'],
[{ 'color': [] }],
]
},
placeholder: '',
theme: 'snow' // or 'bubble',
});
$("#sendNewPlane").on('click',function(){
//hiding navbar
$('.navbar-collapse').collapse('hide');
//hiding modal
$("#newPlaneModal").modal('hide')
var line = turf.lineString([expeLoc.center,destLoc.center]) //create line between start and end
var length = turf.length(line) //get length in Km
var speed = 30 //speed in km/h
var time = length/speed //time to delivery in hours
//get the local time with TZ for starting point
$.getJSON('https://api.mapbox.com/v4/examples.4ze9z6tv/tilequery/'+expeLoc.center[0]+','+expeLoc.center[1]+'.json?access_token='+mapboxgl.accessToken+'',function(startTime){
var expeTimezone = startTime.features[0].properties.TZID;
var sentDate = moment.tz(new Date(), expeTimezone);
sentDate = [sentDate.format(),expeTimezone]
//get the local time with TZ for end point
$.getJSON('https://api.mapbox.com/v4/examples.4ze9z6tv/tilequery/'+destLoc.center[0]+','+destLoc.center[1]+'.json?access_token='+mapboxgl.accessToken+'',function(endTime){
var destTimezone = endTime.features[0].properties.TZID;
var endDate = moment.tz(new Date(), destTimezone);
var deliveryDate = endDate.add(time, 'hours') // adding hours
deliveryDate = [endDate.format(),destTimezone]
//storing the endDate in GMT+0 in seconds for the query
var deliverySecondsServer = moment.tz(new Date(), "Europe/London").add(time, 'hours').unix()
var publicMessage = $("#publicMessage").prop("checked")
var message = $("#messageTextArea").val()
var data = {
'message':message,
'public':publicMessage,
'expeMail':$("#expeMail").val(),
'destMail':$("#destMail").val(),
'expeName':expeLoc.name,
'destName':destLoc.name,
'expeCoordo':expeLoc.center,
'destCoordo':destLoc.center,
'sentDate': sentDate,
'deliveryDate':deliveryDate,
'deliverySecondsServer':deliverySecondsServer,
}
//sending confirm mail
//sending notif mail
//scheduling mail
//adding the plane
var planes = db.collection('planes')
if (!publicMessage){ //removing message from DB if not public
data.message = ''
}
planes.add({
public: data.public,
message:data.message,
destName: data.destName,
destCoordo: data.destCoordo,
startName: data.expeName,
startCoordo: data.expeCoordo,
sentDate: data.sentDate,
deliveryDate: data.deliveryDate,
deliverySecondsServer: data.deliverySecondsServer
});
// creating image for plane, need to link it to the inputs tog et entered values.
var canvas = document.getElementById("blankCanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "rgb(255,255,255)";
ctx.fillRect(0,0,400,400);
ctx.fillStyle = "rgb(0,0,0)";
ctx.font = "9px Courier";
ctx.fillText("Message: .- / -- --- -. / ... . -. ... --..-- /",10,60);
ctx.fillText("Expediteur: leo.martine@yahoo.fr - Annemasse",10,300);
ctx.fillText("Destinataire: leo.martine@yahoo.fr - Lyon",10,320);
$("#front").attr('src',document.getElementById("blankCanvas").toDataURL())
//display and animate plane
$("#canvas3d").css('display','block')
animePlane()
//moving plane at the end
setInterval(function(){
$("#canvas3d").css('transition','transform 2500ms ease-in-out')
$("#canvas3d").css('transform','translate(50vw, -150vh)')
},4400);
//reloading page (to change)
setInterval(function(){
window.location.href = "http://127.0.0.1:8887/?plane=1FTMbm9V9eindbwoJ9uW";
},5500);
})
});
// init text editor in modal
var quill = new Quill('#messageTextArea', {
modules: {
toolbar: [
[{ 'size': ['small', false, 'large'] }],
[{ 'font': [] }],
['bold', 'italic', 'underline','strike'],
[{ 'color': [] }],
]
},
placeholder: '',
theme: 'snow' // or 'bubble',
});
// get random number between interval
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
// get random color
function getRandomColor() {
var colors = ['66FF00','FF5555','FFE419','2A7FFF','BC5FD3','FF6600','ECECEC']
var color = colors[Math.floor(Math.random() * colors.length)];
return color
}
//init tooltips in form
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
//closing navbar antholoy about on open
$('#newPlaneModal').on('shown.bs.modal', function (e) {
$('.navbar-collapse').collapse('hide');
$('#anthology').css('opacity','0')
$('#anthology').css('visibility','hidden')
$('#backToMap').css('opacity','0')
$('#backToMap').css('visibility','hidden')
$('#about').css('visibility','hidden');
$('#about').css('opacity','0')
anthologyOpen = 0
aboutOpen = 0
})
$("#sendNewPlane").on('click',function(){
//hiding modal
$("#newPlaneModal").modal('hide')
var deliveryMethod = $("#selectTime").val()
var time; //time to delivery in hours
if(deliveryMethod == '3days'){
time = 24*3.14
}
else if(deliveryMethod == '7days'){
time = 24*7
}
else if(deliveryMethod == '30days'){
time = 24*30
}
else if(deliveryMethod == '365days'){
time = 24*365
}
else if(deliveryMethod == 'random'){
var speed = randomIntFromInterval(5.05, 25.82)
var line = turf.lineString([expeLoc.center,destLoc.center]) //create line between start and end
var length = turf.length(line) //get length in Km
var additionalTime = length/speed;
time = 37.68 + additionalTime //minimum 37.68 hours + additional time based on random speed
}
//get the local time with TZ for starting point
$.getJSON('https://secure.geonames.org/timezoneJSON?lat='+expeLoc.center[1]+'&lng='+expeLoc.center[0]+'&username=avionpoeme',function(startTime){
var expeTimezone = startTime.timezoneId;
var sentDate = moment.tz(new Date(), expeTimezone).unix();
//get the local time with TZ for end point
$.getJSON('https://secure.geonames.org/timezoneJSON?lat='+destLoc.center[1]+'&lng='+destLoc.center[0]+'&username=avionpoeme',function(endTime){
var destTimezone = endTime.timezoneId;
var endDate = moment.tz(new Date(), destTimezone)
var deliveryDate = endDate.add(time, 'hours').unix(); // adding hours
//storing the endDate in GMT+0 in seconds for the query
var deliverySecondsServer = moment.tz(new Date(), "Europe/Berlin").add(time, 'hours').unix()
var publicMessage = $("#public").prop("checked")
var expeKnown = $("#expeKnown").prop("checked")
if(expeKnown == true){
expeKnown = false
}
else{
expeKnown = true
}
var message = quill.root.innerHTML
var randomColor = getRandomColor()
console.log(message)
var data = {
'message':encodeURIComponent(message),
'expeMail':$("#expeMail").val(),
'expeKnown':expeKnown,
'expeLang':lang,
'destLang':$("#selectDestLang").val(),
'startLat':expeLoc.center[1],
'startLon':expeLoc.center[0],
'startName':expeLoc.name,
'startTime':sentDate,
'startTZ':expeTimezone,
'destMail':$("#destMail").val(),
'destLat':destLoc.center[1],
'destLon':destLoc.center[0],
'destName':destLoc.name,
'public':publicMessage,
'color':randomColor,
'deliveryTime':deliveryDate,
'deliveryTZ':destTimezone,
'deliveryTimeServer':deliverySecondsServer,
'deliveryMethod':$("#selectTime").val()
}
var query = 'avionpoeme.php?'+
'message='+data.message+'&'+
'expeMail='+data.expeMail+'&'+
'expeKnown='+data.expeKnown+'&'+
'expeLang='+data.expeLang+'&'+
'destLang='+data.destLang+'&'+
'startLat='+data.startLat+'&'+
'startLon='+data.startLon+'&'+
'startName='+data.startName+'&'+
'startTime='+data.startTime+'&'+
'startTZ='+data.startTZ+'&'+
'destMail='+data.destMail+'&'+
'destLat='+data.destLat+'&'+
'destLon='+data.destLon+'&'+
'destName='+data.destName+'&'+
'public='+data.public+'&'+
'color='+data.color+'&'+
'deliveryTime='+data.deliveryTime+'&'+
'deliveryTZ='+data.deliveryTZ+'&'+
'deliveryTimeServer='+data.deliveryTimeServer+'&'+
'deliveryMethod='+data.deliveryMethod+'';
$.post(query, function(result) {
result = result.replace(/'/g, '"');
console.log(result)
result = $.parseJSON(result)
var planeId = Number(result.uid);
//selecting proper color for back
$("#back").attr("src","src/img/back-"+data.color+".jpg");
// creating image for plane, need to link it to the inputs tog et entered values.
var message = quill.root.innerHTML
var canvas1 = document.getElementById("blankCanvas1"),
html = quill.root.innerHTML;
rasterizeHTML.drawHTML(html, canvas1,{zoom:0.7}).then(function success(renderResult) {
var canvas2 = document.getElementById("blankCanvas2");
var ctx = canvas2.getContext("2d");
ctx.fillStyle = "#"+data.color;
ctx.fillRect(0,0,400,400);
ctx.drawImage(canvas1, 0, 0,400,400)
ctx.fillStyle = "rgb(0,0,0)";
ctx.font = "9px Courier";
$("#front").attr('src',document.getElementById("blankCanvas2").toDataURL())
//display and animate plane
$("#canvas3d").css('display','block')
animePlane()
//moving plane at the end
setInterval(function(){
$("#canvas3d").css('transition','transform 2500ms ease-in-out')
$("#canvas3d").css('transform','translate(50vw, -150vh)')
},4400);
//reloading page (to change)
setInterval(function(){
window.location.href ='https://avion-poe.me?avion='+planeId+'';
},5500);
})
})
})
});
})
+164
View File
@@ -0,0 +1,164 @@
var lang = 'en'
var userLang = navigator.userLanguage || navigator.language;
if (userLang){
lang = userLang.substring(0,2)
}
//loading the lang.json file
$(document).ready(function(){
translateUI(lang)
$.getJSON("lang/lang.json", function(data){
//creating dropdown list of languages in navbar
for (var key in data){
$("#langChoices").append( '<a class="dropdown-item langSelect" value="'+key+'" href="#">'+data[key]+'</a>' )
$("#selectDestLang").append( '<option value="'+key+'" href="#">'+data[key]+'</option>' )
}
//setting the user lang
if(data[lang]){
//$("#navbarDropdownLang").html(data[lang])
translateUI(lang)
}
//or english if not in list
else{
//$("#navbarDropdownLang").html("English")
translateUI('en')
}
$(".langSelect").on('click',function(e){
lang = e.currentTarget.attributes[1].value
translateUI(lang)
//$("#navbarDropdownLang").html($(this).html())
})
}).fail(function(error){
console.log(error);
});
});
var dictionnary = []
function translateUI(l){
$.getJSON("lang/"+l+"", function(s){
//console.log(s)
dictionnary = s
//if arabic : display left to right (ltr) + troubleshooting a lot of individual elements
if (lang == "ar"){
//navbar
$("nav").css('direction','rtl')
$(".nav-menus").removeClass('mr-auto')
$(".nav-button").addClass('mr-auto')
//form
// $(".ql-container").css('direction','rtl')
// $(".ql-container").css('float','right')
// $(".ql-editor").css('float','right')
// $(".ql-editor p").css('float','right')
$(".modal-content").css('direction','rtl')
$(".bold").css('float','right')
$("#public").css('margin-left','5px')
$("#prive").css('margin-left','5px')
$("#newPlaneModalAnonyme").css('margin-right','25px')
$("#newPlaneModalCancel").css('margin-left','8px')
$("#closeModal").css('margin-left','0px')
$("#closeModal").css('padding-left','0px')
//anthology
$("#anthology").css('direction','rtl')
$("#anthologyDisclaimer").css('float','right')
}
else{
//navbar
$("nav").css('direction','ltr')
$(".nav-menus").addClass('mr-auto')
$(".nav-button").removeClass('mr-auto')
//form
// $(".ql-container").css('direction','ltr')
// $(".ql-container").css('float','left')
// $(".ql-editor").css('float','left')
// $(".ql-editor p").css('float','none')
$(".modal-content").css('direction','ltr')
$(".bold").css('float','left')
$("#public").css('margin-left','0px')
$("#prive").css('margin-left','0px')
$("#newPlaneModalAnonyme").css('margin-right','0px')
$("#newPlaneModalCancel").css('margin-left','0px')
//anthology
$("#anthology").css('direction','ltr')
$("#anthologyDisclaimer").css('float','left')
}
//changing all strings
//main page
$('head title', window.parent.document).text(s.avionpoeme);
$("#navTitle").html(s.avionpoeme)
$("#buttonAnthology").html(s.anthologie)
$("#buttonAbout").html(s.apropos)
$("#buttonNewPlane").val(s.lancer_avion+" "+nbPlane+"/100")
//new plane form
$("#newPlaneModalTitle").html(s.lancer_avion)
$("#newPlaneModalMessage").html(s.message)
$("#newPlaneModalPrive").html(s.prive)
$("#newPlaneModalPublic").html(s.public)
$("#flightTime").html(s.temps_de_vol)
$("#newPlaneModalRandom").html(s.aléatoire)
$("#newPlaneModal3j").html(s.trois_jours)
$("#newPlaneModal7j").html(s.sept_jours)
$("#newPlaneModal30j").html(s.trente_jours)
$("#newPlaneModal365j").html(s.unan_jours)
$("#newPlaneModalExpediteur").html(s.expediteur)
$("#newPlaneModalDestinataire").html(s.destinataire)
$("#newPlaneModalAnonyme").html(s.anonyme)
$("#newPlaneModalCancel").html(s.annuler)
$("#sendNewPlane").html(s.lancer)
$("#destLang").html(s.langue_destinataire)
$("#expeMail").attr("placeholder", s.expeMail_placeholder)
$("#expeGeocoderPhoton").attr("placeholder", s.expeLoc_placeholder)
$("#destMail").attr("placeholder", s.destMail_placeholder)
$("#destGeocoderPhoton").attr("placeholder", s.destLoc_placeholder)
$('#anonymeTooltip').attr("title", s.anonyme_tooltip).tooltip("_fixTitle");
$('#publicTooltip').attr("title", s.public_tooltip).tooltip("_fixTitle");
$('#selectDestLang option[value="'+lang+'"]').prop('selected', true); //selecting by default recipient language same as interface
//Anthology
displayAnthology()
$("#anthologyTitle").html(s.anthologie)
$("#anthologyDisclaimer").html(s.suppr_message_public)
$("#closeAnthologyAbout").html(s.retour_carte)
//About
$("#aboutTitle").html(s.apropos)
$("#librairies").html(s.librairies)
$("#mapSources").html(s.source_carte)
$("#mapBackground").html(s.map_background)
$("#clouds").html(s.clouds)
$.getJSON("lang/about.json", function(e){
if(lang !== 'en' && lang !== 'fr' && lang !== 'de'){
$("#aboutText").html(e[0].en)
}
else{
$("#aboutText").html(e[0][lang])
}
})
//plane limit tooltip
if (nbPlane > 99){
$("#planeLimitTooltip").attr("title", s.AvionPoeme_epuise).tooltip("_fixTitle");
}
else{
var remainingPlanes = 100 - nbPlane;
s.NB_AvionPoeme_restant = s.NB_AvionPoeme_restant.replace('$NB_avion_poeme',remainingPlanes)
$("#planeLimitTooltip").attr("title", s.NB_AvionPoeme_restant).tooltip("_fixTitle");
}
})
.always(function(callback) {
//console.log( callback );
});
}
//hovering lang icon
$( "#navbarDropdownLang" ).mouseenter(function() {
$("#langIcon").attr("src","src/img/lang-hover.png");
});
$( "#navbarDropdownLang" ).mouseleave(function() {
$("#langIcon").attr("src","src/img/lang.png");
});