Merge pull request #2732 from tchak/lint-old-code
Cleanup old javascript
This commit is contained in:
commit
93183aae64
45 changed files with 637 additions and 983 deletions
3
Gemfile
3
Gemfile
|
@ -64,9 +64,6 @@ gem 'rbnacl-libsodium'
|
||||||
gem 'bcrypt'
|
gem 'bcrypt'
|
||||||
|
|
||||||
gem 'rgeo-geojson'
|
gem 'rgeo-geojson'
|
||||||
gem 'leaflet-rails'
|
|
||||||
gem 'leaflet-markercluster-rails', '~> 0.7.0'
|
|
||||||
gem 'leaflet-draw-rails'
|
|
||||||
|
|
||||||
gem 'chartkick'
|
gem 'chartkick'
|
||||||
|
|
||||||
|
|
|
@ -455,10 +455,6 @@ GEM
|
||||||
kgio (2.11.2)
|
kgio (2.11.2)
|
||||||
launchy (2.4.3)
|
launchy (2.4.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
leaflet-draw-rails (0.1.0)
|
|
||||||
leaflet-markercluster-rails (0.7.0)
|
|
||||||
railties (>= 3.1)
|
|
||||||
leaflet-rails (0.7.7)
|
|
||||||
letter_opener (1.6.0)
|
letter_opener (1.6.0)
|
||||||
launchy (~> 2.2)
|
launchy (~> 2.2)
|
||||||
letter_opener_web (1.3.4)
|
letter_opener_web (1.3.4)
|
||||||
|
@ -858,9 +854,6 @@ DEPENDENCIES
|
||||||
jquery-rails
|
jquery-rails
|
||||||
kaminari
|
kaminari
|
||||||
launchy
|
launchy
|
||||||
leaflet-draw-rails
|
|
||||||
leaflet-markercluster-rails (~> 0.7.0)
|
|
||||||
leaflet-rails
|
|
||||||
letter_opener_web
|
letter_opener_web
|
||||||
lograge
|
lograge
|
||||||
logstash-event
|
logstash-event
|
||||||
|
|
|
@ -13,34 +13,21 @@
|
||||||
//= require_tree ./old_design
|
//= require_tree ./old_design
|
||||||
//= require bootstrap-sprockets
|
//= require bootstrap-sprockets
|
||||||
|
|
||||||
//= require leaflet.js
|
|
||||||
//= require d3.min
|
|
||||||
//= require clipper
|
|
||||||
//= require concavehull.min
|
|
||||||
//= require leaflet.freedraw
|
|
||||||
//= require smart_listing
|
//= require smart_listing
|
||||||
//= require turf-area
|
|
||||||
//= require franceconnect
|
|
||||||
//= require bootstrap-wysihtml5
|
//= require bootstrap-wysihtml5
|
||||||
//= require bootstrap-wysihtml5/locales/fr-FR
|
//= require bootstrap-wysihtml5/locales/fr-FR
|
||||||
|
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', application_init);
|
$(document).on('turbolinks:load', application_init);
|
||||||
|
|
||||||
function application_init() {
|
function application_init() {
|
||||||
tooltip_init();
|
tooltip_init();
|
||||||
scroll_to();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function tooltip_init() {
|
function tooltip_init() {
|
||||||
$('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }});
|
$('.action_button[data-toggle="tooltip"]').tooltip({
|
||||||
$('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }});
|
delay: { show: 100, hide: 100 }
|
||||||
}
|
|
||||||
|
|
||||||
function scroll_to() {
|
|
||||||
$('.js-scrollTo').on('click', function () { // Au clic sur un élément
|
|
||||||
var page = $(this).attr('cible'); // Page cible
|
|
||||||
var speed = 600; // Durée de l'animation (en ms)
|
|
||||||
$('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
|
$('[data-toggle="tooltip"]').tooltip({ delay: { show: 800, hide: 100 } });
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('click', '.delete', function() {
|
$(document).on('click', '.delete', function() {
|
||||||
$(this).hide();
|
$(this).hide();
|
||||||
$(this)
|
$(this)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', init_path_modal);
|
$(document).on('turbolinks:load', init_path_modal);
|
||||||
|
|
||||||
var PROCEDURE_PATH_SELECTOR = 'input[data-autocomplete=path]';
|
var PROCEDURE_PATH_SELECTOR = 'input[data-autocomplete=path]';
|
||||||
|
@ -11,22 +13,21 @@ function init_path_modal() {
|
||||||
|
|
||||||
function path_modal_action() {
|
function path_modal_action() {
|
||||||
$('#publish-modal').on('show.bs.modal', function(event) {
|
$('#publish-modal').on('show.bs.modal', function(event) {
|
||||||
$("#publish-modal .modal-body .table .tr-content").hide();
|
$('#publish-modal .modal-body .table .tr-content').hide();
|
||||||
|
|
||||||
var button = $(event.relatedTarget) // Button that triggered the modal
|
var button = $(event.relatedTarget); // Button that triggered the modal
|
||||||
var modal_title = button.data('modal_title'); // Extract info from data-* attributes
|
var modal_title = button.data('modal_title'); // Extract info from data-* attributes
|
||||||
var modal_index = button.data('modal_index'); // Extract info from data-* attributes
|
var modal_index = button.data('modal_index'); // Extract info from data-* attributes
|
||||||
|
|
||||||
var modal = $(this)
|
var modal = $(this);
|
||||||
modal.find('#publish-modal-title').html(modal_title);
|
modal.find('#publish-modal-title').html(modal_title);
|
||||||
$("#publish-modal .modal-body .table #"+modal_index).show();
|
$('#publish-modal .modal-body .table #' + modal_index).show();
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function path_validation_action() {
|
function path_validation_action() {
|
||||||
$(PROCEDURE_PATH_SELECTOR).keyup(function(key) {
|
$(PROCEDURE_PATH_SELECTOR).keyup(function(key) {
|
||||||
if (key.keyCode != 13)
|
if (key.keyCode != 13) path_validation(this);
|
||||||
path_validation(this);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,9 +43,8 @@ function togglePathMessage(valid, mine) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((valid && mine === null) || mine === true)
|
if ((valid && mine === null) || mine === true)
|
||||||
$('#publish-modal #publish').removeAttr('disabled')
|
$('#publish-modal #publish').removeAttr('disabled');
|
||||||
else
|
else $('#publish-modal #publish').attr('disabled', 'disabled');
|
||||||
$('#publish-modal #publish').attr('disabled', 'disabled')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function path_validation(el) {
|
function path_validation(el) {
|
||||||
|
@ -53,22 +53,21 @@ function path_validation(el) {
|
||||||
togglePathMessage(valid, null);
|
togglePathMessage(valid, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleErrorClass(node, boolean) {
|
||||||
|
if (boolean) $(node).removeClass('input-error');
|
||||||
|
else $(node).addClass('input-error');
|
||||||
|
}
|
||||||
|
|
||||||
function validatePath(path) {
|
function validatePath(path) {
|
||||||
var re = /^[a-z0-9_\-]{3,50}$/;
|
var re = /^[a-z0-9_-]{3,50}$/;
|
||||||
return re.test(path);
|
return re.test(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
function path_type_init() {
|
function path_type_init() {
|
||||||
$(PROCEDURE_PATH_SELECTOR).bind('autocomplete:select', function(ev, suggestion) {
|
$(PROCEDURE_PATH_SELECTOR).bind('autocomplete:select', function(
|
||||||
|
ev,
|
||||||
|
suggestion
|
||||||
|
) {
|
||||||
togglePathMessage(true, suggestion['mine']);
|
togglePathMessage(true, suggestion['mine']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function transfer_errors_message(show) {
|
|
||||||
if(show){
|
|
||||||
$("#not_found_admin").slideDown(100)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#not_found_admin").slideUp(100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('click', 'button#archive-procedure', function() {
|
$(document).on('click', 'button#archive-procedure', function() {
|
||||||
$('button#archive-procedure').hide();
|
$('button#archive-procedure').hide();
|
||||||
$('#confirm').show();
|
$('#confirm').show();
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', wysihtml5_active);
|
$(document).on('turbolinks:load', wysihtml5_active);
|
||||||
|
|
||||||
function wysihtml5_active() {
|
function wysihtml5_active() {
|
||||||
$('.wysihtml5').each(function(i, elem) {
|
$('.wysihtml5').each(function(i, elem) {
|
||||||
$(elem).wysihtml5({
|
$(elem).wysihtml5({
|
||||||
toolbar: {
|
toolbar: {
|
||||||
"fa": true,
|
fa: true,
|
||||||
"link": false,
|
link: false,
|
||||||
"color": false
|
color: false
|
||||||
},
|
},
|
||||||
parserRules: {
|
parserRules: {
|
||||||
tags: {
|
tags: {
|
||||||
|
@ -31,7 +33,7 @@ function wysihtml5_active (){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"locale": "fr-FR"
|
locale: 'fr-FR'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
function cadastre_active() {
|
|
||||||
return $("#map.cadastre").length > 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_cadastre(coordinates) {
|
|
||||||
if (!cadastre_active())
|
|
||||||
return;
|
|
||||||
|
|
||||||
var cadastre;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
method: 'post',
|
|
||||||
url: '/users/dossiers/' + dossier_id + '/carte/cadastre',
|
|
||||||
data: {coordinates: JSON.stringify(coordinates)},
|
|
||||||
dataType: 'json',
|
|
||||||
async: false
|
|
||||||
}).done(function (data) {
|
|
||||||
cadastre = data
|
|
||||||
});
|
|
||||||
|
|
||||||
return cadastre['cadastres'];
|
|
||||||
}
|
|
||||||
|
|
||||||
function display_cadastre(cadastre_array) {
|
|
||||||
if (!cadastre_active())
|
|
||||||
return;
|
|
||||||
|
|
||||||
$("#cadastre.list ul").html('');
|
|
||||||
new_cadastreLayer();
|
|
||||||
|
|
||||||
if (cadastre_array.length == 1 && cadastre_array[0]['zoom_error'])
|
|
||||||
$("#cadastre.list ul").html('<li><b>Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.</b></li>');
|
|
||||||
|
|
||||||
else if (cadastre_array.length > 0) {
|
|
||||||
cadastre_array.forEach(function (cadastre) {
|
|
||||||
$("#cadastre.list ul").append('<li> Parcelle nº ' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '</li>');
|
|
||||||
|
|
||||||
cadastreItems.addData(cadastre.geometry);
|
|
||||||
});
|
|
||||||
|
|
||||||
cadastreItems.setStyle({
|
|
||||||
fillColor: '#8a6d3b',
|
|
||||||
weight: 2,
|
|
||||||
opacity: 0.3,
|
|
||||||
color: 'white',
|
|
||||||
dashArray: '3',
|
|
||||||
fillOpacity: 0.7
|
|
||||||
})
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$("#cadastre.list ul").html('<li>AUCUN</li>');
|
|
||||||
}
|
|
||||||
|
|
||||||
function new_cadastreLayer() {
|
|
||||||
if (typeof cadastreItems != 'undefined')
|
|
||||||
map.removeLayer(cadastreItems);
|
|
||||||
|
|
||||||
cadastreItems = new L.GeoJSON();
|
|
||||||
cadastreItems.addTo(map);
|
|
||||||
}
|
|
|
@ -1,159 +0,0 @@
|
||||||
var LON = '2.428462';
|
|
||||||
var LAT = '46.538192';
|
|
||||||
|
|
||||||
function initCarto() {
|
|
||||||
OSM = L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
|
||||||
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
|
||||||
});
|
|
||||||
|
|
||||||
position = get_position() || default_gestionnaire_position();
|
|
||||||
|
|
||||||
map = L.map("map", {
|
|
||||||
center: new L.LatLng(position.lat, position.lon),
|
|
||||||
zoom: position.zoom,
|
|
||||||
layers: [OSM],
|
|
||||||
scrollWheelZoom: false
|
|
||||||
});
|
|
||||||
|
|
||||||
icon = L.icon({
|
|
||||||
iconUrl: '/assets/marker-icon.png',
|
|
||||||
//shadowUrl: 'leaf-shadow.png',
|
|
||||||
|
|
||||||
iconSize: [34.48, 40], // size of the icon
|
|
||||||
//shadowSize: [50, 64], // size of the shadow
|
|
||||||
iconAnchor: [20, 20] // point of the icon which will correspond to marker's location
|
|
||||||
//shadowAnchor: [4, 62], // the same for the shadow
|
|
||||||
//popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
|
|
||||||
});
|
|
||||||
|
|
||||||
if (qp_active())
|
|
||||||
display_qp(JSON.parse($("#quartier_prioritaires").val()));
|
|
||||||
|
|
||||||
if (cadastre_active())
|
|
||||||
display_cadastre(JSON.parse($("#cadastres").val()));
|
|
||||||
|
|
||||||
freeDraw = new L.FreeDraw();
|
|
||||||
freeDraw.options.setSmoothFactor(4);
|
|
||||||
freeDraw.options.simplifyPolygon = false;
|
|
||||||
|
|
||||||
map.addLayer(freeDraw);
|
|
||||||
|
|
||||||
if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') {
|
|
||||||
map.setZoom(18);
|
|
||||||
|
|
||||||
$.each($.parseJSON($("#json_latlngs").val()), function (i, val) {
|
|
||||||
freeDraw.createPolygon(val);
|
|
||||||
});
|
|
||||||
|
|
||||||
map.fitBounds(freeDraw.polygons[0].getBounds());
|
|
||||||
}
|
|
||||||
else if (position.lat == LAT && position.lon == LON)
|
|
||||||
map.setView(new L.LatLng(position.lat, position.lon), position.zoom);
|
|
||||||
|
|
||||||
add_event_freeDraw();
|
|
||||||
add_event_search_address();
|
|
||||||
}
|
|
||||||
|
|
||||||
function default_gestionnaire_position() {
|
|
||||||
return {lon: LON, lat: LAT, zoom: 5}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_external_data(latLngs) {
|
|
||||||
if (qp_active())
|
|
||||||
display_qp(get_qp(latLngs));
|
|
||||||
|
|
||||||
if (cadastre_active()) {
|
|
||||||
polygons = {"type": "FeatureCollection", "features": []};
|
|
||||||
|
|
||||||
for (i = 0; i < latLngs.length; i++)
|
|
||||||
polygons.features.push(feature_polygon_latLngs(latLngs[i]))
|
|
||||||
|
|
||||||
cadastre_list = [{zoom_error: true}];
|
|
||||||
|
|
||||||
if (turf_area(polygons) < 300000)
|
|
||||||
cadastre_list = get_cadastre(latLngs);
|
|
||||||
|
|
||||||
display_cadastre(cadastre_list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function feature_polygon_latLngs(coordinates) {
|
|
||||||
return ({
|
|
||||||
"type": "Feature",
|
|
||||||
"properties": {},
|
|
||||||
"geometry": {
|
|
||||||
"type": "Polygon",
|
|
||||||
"coordinates": [
|
|
||||||
JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs']
|
|
||||||
]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_event_freeDraw() {
|
|
||||||
freeDraw.on('markers', function (e) {
|
|
||||||
$("#json_latlngs").val(JSON.stringify(e.latLngs));
|
|
||||||
|
|
||||||
add_event_edit();
|
|
||||||
|
|
||||||
get_external_data(e.latLngs);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#map").on('click', function(){
|
|
||||||
freeDraw.setMode(L.FreeDraw.MODES.VIEW);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#new").on('click', function (e) {
|
|
||||||
freeDraw.setMode(L.FreeDraw.MODES.CREATE);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#delete").on('click', function (e) {
|
|
||||||
freeDraw.setMode(L.FreeDraw.MODES.DELETE);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_event_edit (){
|
|
||||||
$(".leaflet-container g path").on('click', function (e) {
|
|
||||||
setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_position() {
|
|
||||||
var position;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: '/users/dossiers/' + dossier_id + '/carte/position',
|
|
||||||
dataType: 'json',
|
|
||||||
async: false
|
|
||||||
}).done(function (data) {
|
|
||||||
position = data
|
|
||||||
});
|
|
||||||
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_address_point(request) {
|
|
||||||
$.get('/ban/address_point', { request: request })
|
|
||||||
.done(function (data) {
|
|
||||||
if (data.lat !== null) {
|
|
||||||
map.setView(new L.LatLng(data.lat, data.lon), data.zoom);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function jsObject_to_array(qp_list) {
|
|
||||||
return Object.keys(qp_list).map(function (v) {
|
|
||||||
return qp_list[v];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_event_search_address() {
|
|
||||||
$("#search-by-address input[type='address']").bind('autocomplete:select', function (ev, suggestion) {
|
|
||||||
get_address_point(suggestion['label']);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#search-by-address input[type='address']").keypress(function (e) {
|
|
||||||
if (e.keyCode == 13)
|
|
||||||
get_address_point($(this).val());
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
function qp_active() {
|
|
||||||
return $("#map.qp").length > 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_qp(coordinates) {
|
|
||||||
if (!qp_active())
|
|
||||||
return;
|
|
||||||
|
|
||||||
var qp;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
method: 'post',
|
|
||||||
url: '/users/dossiers/' + dossier_id + '/carte/qp',
|
|
||||||
data: {coordinates: JSON.stringify(coordinates)},
|
|
||||||
dataType: 'json',
|
|
||||||
async: false
|
|
||||||
}).done(function (data) {
|
|
||||||
qp = data
|
|
||||||
});
|
|
||||||
|
|
||||||
return qp['quartier_prioritaires'];
|
|
||||||
}
|
|
||||||
|
|
||||||
function display_qp(qp_list) {
|
|
||||||
if (!qp_active())
|
|
||||||
return;
|
|
||||||
|
|
||||||
qp_array = jsObject_to_array(qp_list);
|
|
||||||
|
|
||||||
$("#qp.list ul").html('');
|
|
||||||
|
|
||||||
new_qpLayer();
|
|
||||||
|
|
||||||
if (qp_array.length > 0) {
|
|
||||||
qp_array.forEach(function (qp) {
|
|
||||||
$("#qp.list ul").append('<li>' + qp.commune + ' : ' + qp.nom + '</li>');
|
|
||||||
|
|
||||||
qpItems.addData(qp.geometry);
|
|
||||||
});
|
|
||||||
|
|
||||||
qpItems.setStyle({
|
|
||||||
fillColor: '#31708f',
|
|
||||||
weight: 2,
|
|
||||||
opacity: 0.3,
|
|
||||||
color: 'white',
|
|
||||||
dashArray: '3',
|
|
||||||
fillOpacity: 0.7
|
|
||||||
})
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$("#qp.list ul").html('<li>AUCUN</li>');
|
|
||||||
}
|
|
||||||
|
|
||||||
function new_qpLayer() {
|
|
||||||
if (typeof qpItems != 'undefined')
|
|
||||||
map.removeLayer(qpItems);
|
|
||||||
|
|
||||||
qpItems = new L.GeoJSON();
|
|
||||||
qpItems.addTo(map);
|
|
||||||
}
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', init_default_data_block);
|
$(document).on('turbolinks:load', init_default_data_block);
|
||||||
|
|
||||||
function init_default_data_block() {
|
function init_default_data_block() {
|
||||||
|
@ -10,7 +12,10 @@ function init_default_data_block() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.new-action').click(function() {
|
$('.new-action').click(function() {
|
||||||
var messages_block = $(this).parents().closest('.default-data-block').find('.title')
|
var messages_block = $(this)
|
||||||
|
.parents()
|
||||||
|
.closest('.default-data-block')
|
||||||
|
.find('.title');
|
||||||
toggle_default_data_bloc(messages_block, 400);
|
toggle_default_data_bloc(messages_block, 400);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -22,7 +27,7 @@ function init_default_data_block() {
|
||||||
var block = $(element).parents('.show-block');
|
var block = $(element).parents('.show-block');
|
||||||
if (block.attr('id') == 'messages') {
|
if (block.attr('id') == 'messages') {
|
||||||
block.children('.last-commentaire').toggle();
|
block.children('.last-commentaire').toggle();
|
||||||
$(".commentaires").animate({ scrollTop: $(this).height() }, "slow");
|
$('.commentaires').animate({ scrollTop: $(this).height() }, 'slow');
|
||||||
}
|
}
|
||||||
|
|
||||||
block.children('.body').slideToggle(duration);
|
block.children('.body').slideToggle(duration);
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
$(document).on('turbolinks:load', init_modal_commentaire);
|
|
||||||
|
|
||||||
function init_modal_commentaire() {
|
|
||||||
var modal = $("#modalCommentairesDossierParChamp");
|
|
||||||
var body = modal.find(".modal-body");
|
|
||||||
var originalBody = body.html();
|
|
||||||
|
|
||||||
modal.on("show.bs.modal", function (e) {
|
|
||||||
body.load(e.relatedTarget.getAttribute("data-href"));
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) {
|
|
||||||
body.html(originalBody);
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
/* eslint no-unused-vars:0 */
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', handle_siret_form_errors);
|
$(document).on('turbolinks:load', handle_siret_form_errors);
|
||||||
|
|
||||||
function error_form_siret(invalid_siret) {
|
function error_form_siret(invalid_siret) {
|
||||||
|
@ -5,24 +8,33 @@ function error_form_siret(invalid_siret) {
|
||||||
$("input[type='submit']").val('Erreur SIRET');
|
$("input[type='submit']").val('Erreur SIRET');
|
||||||
}, 10);
|
}, 10);
|
||||||
|
|
||||||
$("input[type='submit']").removeClass('btn-success').addClass('btn-danger');
|
$("input[type='submit']")
|
||||||
|
.removeClass('btn-success')
|
||||||
$("#dossier-siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret);
|
.addClass('btn-danger');
|
||||||
|
|
||||||
|
$('#dossier-siret')
|
||||||
|
.addClass('input-error')
|
||||||
|
.val(invalid_siret)
|
||||||
|
.on('input', reset_form_siret);
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset_form_siret() {
|
function reset_form_siret() {
|
||||||
$("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider');
|
$("input[type='submit']")
|
||||||
$("#dossier-siret").removeClass('input-error');
|
.removeClass('btn-danger')
|
||||||
|
.addClass('btn-success')
|
||||||
|
.val('Valider');
|
||||||
|
$('#dossier-siret').removeClass('input-error');
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggle_etape_1() {
|
function toggle_etape_1() {
|
||||||
$('.row.etape.etape_1 .etapes-menu #logos').toggle(100);
|
$('.row.etape.etape_1 .etapes-menu #logos').toggle(100);
|
||||||
$('.row.etape.etape_1 .etapes-informations #description_procedure').toggle(100);
|
$('.row.etape.etape_1 .etapes-informations #description_procedure').toggle(
|
||||||
|
100
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_siret_form_errors() {
|
function handle_siret_form_errors() {
|
||||||
$(".form-inline[data-remote]").on("ajax:error", function(event) {
|
$('.form-inline[data-remote]').on('ajax:error', function(event) {
|
||||||
var input = $('#dossier-siret', event.target);
|
var input = $('#dossier-siret', event.target);
|
||||||
if (input.length) {
|
if (input.length) {
|
||||||
var invalid_siret = input.val();
|
var invalid_siret = input.val();
|
||||||
|
|
|
@ -1,44 +1,53 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', filters_init);
|
$(document).on('turbolinks:load', filters_init);
|
||||||
|
|
||||||
function filters_init() {
|
function filters_init() {
|
||||||
$('html').click(function(event) {
|
$('html').click(function(event) {
|
||||||
var visible_filter = $('.filter_framed:visible')
|
var visible_filter = $('.filter_framed:visible');
|
||||||
if (visible_filter.length) {
|
if (visible_filter.length) {
|
||||||
if (!$(event.target).closest('.filter_framed').is(":visible")) {
|
if (
|
||||||
|
!$(event.target)
|
||||||
|
.closest('.filter_framed')
|
||||||
|
.is(':visible')
|
||||||
|
) {
|
||||||
visible_filter.hide();
|
visible_filter.hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".filter").on('click', function (event) {
|
$('.filter').on('click', function(event) {
|
||||||
filter_framed_show(event);
|
filter_framed_show(event);
|
||||||
filter_framed_close_all_excepted(framed_id(event));
|
filter_framed_close_all_excepted(framed_id(event));
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".erase-filter").on('click', function (event) {
|
$('.erase-filter').on('click', function() {
|
||||||
$(this).parent().find(".filter_input").val("");
|
$(this)
|
||||||
|
.parent()
|
||||||
|
.find('.filter_input')
|
||||||
|
.val('');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter_framed_close_all_excepted(id) {
|
function filter_framed_close_all_excepted(id) {
|
||||||
$(".filter_framed:not("+id+")").hide();
|
$('.filter_framed:not(' + id + ')').hide();
|
||||||
|
|
||||||
$(id).toggle();
|
$(id).toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
function framed_id(event) {
|
function framed_id(event) {
|
||||||
return "#framed_" + event.target.id
|
return '#framed_' + event.target.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter_framed_show(event) {
|
function filter_framed_show(event) {
|
||||||
dom_object = $(framed_id(event));
|
var dom_object = $(framed_id(event));
|
||||||
|
|
||||||
var offset = $('#main-container').offset();
|
var offset = $('#main-container').offset();
|
||||||
|
|
||||||
var y = event.pageY - offset.top;
|
var y = event.pageY - offset.top;
|
||||||
var x = event.pageX - offset.left;
|
var x = event.pageX - offset.left;
|
||||||
|
|
||||||
dom_object.css('top', (y + 7) + 'px');
|
dom_object.css('top', y + 7 + 'px');
|
||||||
dom_object.css('left', (x + 7) + 'px');
|
dom_object.css('left', x + 7 + 'px');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('click', '#dossiers-list tr', function(event) {
|
$(document).on('click', '#dossiers-list tr', function(event) {
|
||||||
var href = $(this).data('href');
|
var href = $(this).data('href');
|
||||||
if (href && event.target.tagName !== 'A') {
|
if (href && event.target.tagName !== 'A') {
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
$(document).on('turbolinks:load', franceconnect_kit);
|
|
||||||
|
|
||||||
function franceconnect_kit() {
|
|
||||||
franceConnectKit.init()
|
|
||||||
}
|
|
|
@ -1,15 +1,17 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', modal_action);
|
$(document).on('turbolinks:load', modal_action);
|
||||||
|
|
||||||
function modal_action() {
|
function modal_action() {
|
||||||
$('#pj-modal').on('show.bs.modal', function(event) {
|
$('#pj-modal').on('show.bs.modal', function(event) {
|
||||||
$("#pj-modal .modal-body .table .tr-content").hide();
|
$('#pj-modal .modal-body .table .tr-content').hide();
|
||||||
|
|
||||||
var button = $(event.relatedTarget) // Button that triggered the modal
|
var button = $(event.relatedTarget); // Button that triggered the modal
|
||||||
var modal_title = button.data('modal_title'); // Extract info from data-* attributes
|
var modal_title = button.data('modal_title'); // Extract info from data-* attributes
|
||||||
var modal_index = button.data('modal_index'); // Extract info from data-* attributes
|
var modal_index = button.data('modal_index'); // Extract info from data-* attributes
|
||||||
|
|
||||||
var modal = $(this)
|
var modal = $(this);
|
||||||
modal.find('#pj-modal-title').html(modal_title);
|
modal.find('#pj-modal-title').html(modal_title);
|
||||||
$("#pj-modal .modal-body .table #"+modal_index).show();
|
$('#pj-modal .modal-body .table #' + modal_index).show();
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
$(document).on('turbolinks:load', action_type_de_champs);
|
/* globals $ */
|
||||||
|
|
||||||
|
$(document).on('turbolinks:load', action_type_de_champs);
|
||||||
|
|
||||||
function action_type_de_champs() {
|
function action_type_de_champs() {
|
||||||
$("input[type='email']").on('change', function() {
|
$("input[type='email']").on('change', function() {
|
||||||
|
@ -11,7 +12,7 @@ function action_type_de_champs() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$("input[type='phone']").on('change', function() {
|
$("input[type='phone']").on('change', function() {
|
||||||
val = $(this).val();
|
var val = $(this).val();
|
||||||
val = val.replace(/[ ]/g, '');
|
val = val.replace(/[ ]/g, '');
|
||||||
|
|
||||||
toggleErrorClass(this, validatePhone(val));
|
toggleErrorClass(this, validatePhone(val));
|
||||||
|
@ -19,25 +20,23 @@ function action_type_de_champs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleErrorClass(node, boolean) {
|
function toggleErrorClass(node, boolean) {
|
||||||
if (boolean)
|
if (boolean) $(node).removeClass('input-error');
|
||||||
$(node).removeClass('input-error');
|
else $(node).addClass('input-error');
|
||||||
else
|
|
||||||
$(node).addClass('input-error');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function validatePhone(phone) {
|
function validatePhone(phone) {
|
||||||
var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/;
|
var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/;
|
||||||
return validateInput(phone, re)
|
return validateInput(phone, re);
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateEmail(email) {
|
function validateEmail(email) {
|
||||||
var 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,}))$/;
|
var 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 validateInput(email, re)
|
return validateInput(email, re);
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateNumber(number) {
|
function validateNumber(number) {
|
||||||
var re = /^[0-9]+$/;
|
var re = /^[0-9]+$/;
|
||||||
return validateInput(number, re)
|
return validateInput(number, re);
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateInput(input, regex) {
|
function validateInput(input, regex) {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* globals $ */
|
||||||
|
|
||||||
$(document).on('turbolinks:load', button_edit_procedure_init);
|
$(document).on('turbolinks:load', button_edit_procedure_init);
|
||||||
|
|
||||||
function button_edit_procedure_init() {
|
function button_edit_procedure_init() {
|
||||||
|
@ -6,21 +8,19 @@ function button_edit_procedure_init(){
|
||||||
}
|
}
|
||||||
|
|
||||||
function buttons_api_carto() {
|
function buttons_api_carto() {
|
||||||
|
$('#procedure-module-api-carto-use-api-carto').on('change', function() {
|
||||||
$("#procedure-module-api-carto-use-api-carto").on('change', function() {
|
$('#modules-api-carto').toggle();
|
||||||
$("#modules-api-carto").toggle()
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($('#procedure-module-api-carto-use-api-carto').is(':checked'))
|
if ($('#procedure-module-api-carto-use-api-carto').is(':checked'))
|
||||||
$("#modules-api-carto").show();
|
$('#modules-api-carto').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
function button_individual() {
|
function button_individual() {
|
||||||
|
$('#procedure_for_individual').on('change', function() {
|
||||||
$("#procedure_for_individual").on('change', function() {
|
$('#individual-with-siret').toggle();
|
||||||
$("#individual-with-siret").toggle()
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($('#procedure_for_individual').is(':checked'))
|
if ($('#procedure_for_individual').is(':checked'))
|
||||||
$("#individual-with-siret").show();
|
$('#individual-with-siret').show();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// = depend_on_asset "layers.png"
|
|
||||||
// = depend_on_asset "layers-2x.png"
|
|
||||||
|
|
||||||
// This is a manifest file that'll be compiled into application.css, which will include all the files
|
// This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||||
// listed below.
|
// listed below.
|
||||||
//
|
//
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
|
|
||||||
#carte-page {
|
#carte-page {
|
||||||
#map {
|
#map {
|
||||||
margin-left: 15px;
|
|
||||||
width: 90%;
|
|
||||||
height: 600px;
|
height: 600px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,22 +37,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#map section.overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
box-shadow: inset -100px 0 100px -100px rgba(0, 0, 0, 0.25);
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 2001;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map.mode-create {
|
#map.mode-create {
|
||||||
cursor: url("/assets/pencil.png"), crosshair !important;
|
cursor: url("/assets/pencil.png"), crosshair !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#map g path.tracer {
|
#map g path.leaflet-polygon {
|
||||||
transition: all 0.25s;
|
transition: all 0.25s;
|
||||||
stroke-width: 4px;
|
stroke-width: 4px;
|
||||||
stroke-opacity: 1;
|
stroke-opacity: 1;
|
||||||
|
@ -73,7 +60,7 @@
|
||||||
fill: #4D4D4D !important;
|
fill: #4D4D4D !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#map div.polygon-elbow {
|
#map div.leaflet-edge {
|
||||||
box-shadow: 0 0 0 2px #FFFFFF, 0 0 10px rgba(0, 0, 0, 0.35);
|
box-shadow: 0 0 0 2px #FFFFFF, 0 0 10px rgba(0, 0, 0, 0.35);
|
||||||
border: 5px solid #D7217E;
|
border: 5px solid #D7217E;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
@ -86,27 +73,11 @@
|
||||||
height: 0 !important;
|
height: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#map div.polygon-elbow.non-polygon {
|
#map.mode-edit div.leaflet-edge {
|
||||||
opacity: 0 !important;
|
|
||||||
pointer-events: none !important;
|
|
||||||
border: 5px solid #A9A9A9;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map.mode-edit div.polygon-elbow {
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
}
|
}
|
||||||
|
|
||||||
#map svg.tracer {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 2001;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
font: 14px/16px Arial, Helvetica, sans-serif;
|
font: 14px/16px Arial, Helvetica, sans-serif;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
// = require ./common
|
// = require ./common
|
||||||
// = require ./utils
|
// = require ./utils
|
||||||
// = require ./fonts
|
// = require ./fonts
|
||||||
// = require leaflet.1.1.0
|
// = require leaflet
|
||||||
// = require select2
|
// = require select2
|
||||||
// = require autocomplete
|
// = require autocomplete
|
||||||
// = require_tree .
|
// = require_tree .
|
||||||
|
|
|
@ -2,6 +2,7 @@ import $ from 'jquery';
|
||||||
import L from 'leaflet';
|
import L from 'leaflet';
|
||||||
|
|
||||||
import { getData } from '../shared/data';
|
import { getData } from '../shared/data';
|
||||||
|
import { DEFAULT_POSITION } from '../shared/carto';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
drawCadastre,
|
drawCadastre,
|
||||||
|
@ -9,10 +10,6 @@ import {
|
||||||
drawUserSelection
|
drawUserSelection
|
||||||
} from './carto/draw';
|
} from './carto/draw';
|
||||||
|
|
||||||
const LON = '2.428462';
|
|
||||||
const LAT = '46.538192';
|
|
||||||
const DEFAULT_POSITION = { lon: LON, lat: LAT, zoom: 5 };
|
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
if ($('#map').length > 0) {
|
if ($('#map').length > 0) {
|
||||||
$.getJSON(getData('carto').getPositionUrl).then(
|
$.getJSON(getData('carto').getPositionUrl).then(
|
||||||
|
|
177
app/javascript/old_design/carto.js
Normal file
177
app/javascript/old_design/carto.js
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
import L from 'leaflet';
|
||||||
|
import area from '@turf/area';
|
||||||
|
import FreeDraw, { NONE, EDIT, CREATE, DELETE } from 'leaflet-freedraw';
|
||||||
|
import $ from 'jquery';
|
||||||
|
|
||||||
|
import { getData } from '../shared/data';
|
||||||
|
import { DEFAULT_POSITION, LAT, LON } from '../shared/carto';
|
||||||
|
import { qpActive, displayQP, getQP } from './carto/qp';
|
||||||
|
import { cadastreActive, displayCadastre, getCadastre } from './carto/cadastre';
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
if ($('#map').length > 0) {
|
||||||
|
getPosition(getData('carto').dossierId).then(
|
||||||
|
position => initializeWithPosition(position),
|
||||||
|
() => initializeWithPosition(DEFAULT_POSITION)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventListener('turbolinks:load', initialize);
|
||||||
|
|
||||||
|
function initializeWithPosition(position) {
|
||||||
|
const OSM = L.tileLayer(
|
||||||
|
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||||
|
{
|
||||||
|
attribution:
|
||||||
|
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const map = L.map('map', {
|
||||||
|
center: new L.LatLng(position.lat, position.lon),
|
||||||
|
zoom: position.zoom,
|
||||||
|
layers: [OSM],
|
||||||
|
scrollWheelZoom: false
|
||||||
|
});
|
||||||
|
|
||||||
|
if (qpActive()) {
|
||||||
|
displayQP(map, getJsonValue('#quartier_prioritaires'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cadastreActive()) {
|
||||||
|
displayCadastre(map, getJsonValue('#cadastres'));
|
||||||
|
}
|
||||||
|
|
||||||
|
const freeDraw = new FreeDraw({
|
||||||
|
mode: NONE,
|
||||||
|
smoothFactor: 4,
|
||||||
|
mergePolygons: false
|
||||||
|
});
|
||||||
|
|
||||||
|
map.addLayer(freeDraw);
|
||||||
|
|
||||||
|
const latLngs = getJsonValue('#json_latlngs');
|
||||||
|
|
||||||
|
if (latLngs.length) {
|
||||||
|
map.setZoom(18);
|
||||||
|
|
||||||
|
for (let polygon of latLngs) {
|
||||||
|
freeDraw.createPolygon(polygon);
|
||||||
|
}
|
||||||
|
|
||||||
|
map.fitBounds(freeDraw.polygons[0].getBounds());
|
||||||
|
} else if (position.lat == LAT && position.lon == LON) {
|
||||||
|
map.setView(new L.LatLng(position.lat, position.lon), position.zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventFreeDraw(map, freeDraw);
|
||||||
|
addEventSearchAddress(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getExternalData(map, latLngs) {
|
||||||
|
const { dossierId } = getData('carto');
|
||||||
|
|
||||||
|
if (qpActive()) {
|
||||||
|
getQP(dossierId, latLngs).then(qps => displayQP(map, qps));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cadastreActive()) {
|
||||||
|
const polygons = { type: 'FeatureCollection', features: [] };
|
||||||
|
|
||||||
|
for (let i = 0; i < latLngs.length; i++) {
|
||||||
|
polygons.features.push(featurePolygonLatLngs(latLngs[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (area(polygons) < 300000) {
|
||||||
|
getCadastre(dossierId, latLngs).then(cadastres =>
|
||||||
|
displayCadastre(map, cadastres)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
displayCadastre(map, [{ zoom_error: true }]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function featurePolygonLatLngs(coordinates) {
|
||||||
|
return {
|
||||||
|
type: 'Feature',
|
||||||
|
properties: {},
|
||||||
|
geometry: {
|
||||||
|
type: 'Polygon',
|
||||||
|
coordinates: [JSON.parse(getJsonPolygons([coordinates]))['latLngs']]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function addEventFreeDraw(map, freeDraw) {
|
||||||
|
freeDraw.on('markers', ({ latLngs }) => {
|
||||||
|
$('#json_latlngs').val(JSON.stringify(latLngs));
|
||||||
|
|
||||||
|
addEventEdit(freeDraw);
|
||||||
|
|
||||||
|
getExternalData(map, latLngs);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#map').on('click', () => {
|
||||||
|
freeDraw.mode(NONE);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#new').on('click', () => {
|
||||||
|
freeDraw.mode(CREATE);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function addEventEdit(freeDraw) {
|
||||||
|
$('.leaflet-container svg').removeAttr('pointer-events');
|
||||||
|
$('.leaflet-container g path').on('click', () => {
|
||||||
|
setTimeout(function() {
|
||||||
|
freeDraw.mode(EDIT | DELETE);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPosition(dossierId) {
|
||||||
|
return $.getJSON(`/users/dossiers/${dossierId}/carte/position`);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAddressPoint(map, request) {
|
||||||
|
$.get('/ban/address_point', { request }).then(data => {
|
||||||
|
if (data.lat !== null) {
|
||||||
|
map.setView(new L.LatLng(data.lat, data.lon), data.zoom);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function addEventSearchAddress(map) {
|
||||||
|
$("#search-by-address input[type='address']").on(
|
||||||
|
'autocomplete:select',
|
||||||
|
(_, seggestion) => {
|
||||||
|
getAddressPoint(map, seggestion['label']);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getJsonValue(selector) {
|
||||||
|
let data = document.querySelector(selector).value;
|
||||||
|
if (data && data !== '[]') {
|
||||||
|
return JSON.parse(data);
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getJsonPolygons(latLngGroups) {
|
||||||
|
var groups = [];
|
||||||
|
|
||||||
|
latLngGroups.forEach(function forEach(latLngs) {
|
||||||
|
var group = [];
|
||||||
|
|
||||||
|
latLngs.forEach(function forEach(latLng) {
|
||||||
|
group.push('[' + latLng.lng + ', ' + latLng.lat + ']');
|
||||||
|
});
|
||||||
|
|
||||||
|
groups.push('{ "latLngs": [' + group.join(', ') + '] }');
|
||||||
|
});
|
||||||
|
|
||||||
|
return groups;
|
||||||
|
}
|
66
app/javascript/old_design/carto/cadastre.js
Normal file
66
app/javascript/old_design/carto/cadastre.js
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import L from 'leaflet';
|
||||||
|
import $ from 'jquery';
|
||||||
|
|
||||||
|
export function cadastreActive() {
|
||||||
|
return $('#map.cadastre').length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCadastre(dossierId, coordinates) {
|
||||||
|
return $.ajax({
|
||||||
|
method: 'post',
|
||||||
|
url: `/users/dossiers/${dossierId}/carte/cadastre`,
|
||||||
|
data: { coordinates: JSON.stringify(coordinates) },
|
||||||
|
dataType: 'json'
|
||||||
|
}).then(({ cadastres }) => cadastres);
|
||||||
|
}
|
||||||
|
|
||||||
|
let cadastreItems;
|
||||||
|
|
||||||
|
export function displayCadastre(map, cadastres) {
|
||||||
|
if (!cadastreActive()) return;
|
||||||
|
|
||||||
|
$('#cadastre.list ul').html('');
|
||||||
|
newCadastreLayer(map);
|
||||||
|
|
||||||
|
if (cadastres.length == 1 && cadastres[0]['zoom_error']) {
|
||||||
|
$('#cadastre.list ul').html(
|
||||||
|
'<li><b>Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.</b></li>'
|
||||||
|
);
|
||||||
|
} else if (cadastres.length > 0) {
|
||||||
|
cadastres.forEach(function(cadastre) {
|
||||||
|
$('#cadastre.list ul').append(
|
||||||
|
'<li> Parcelle nº ' +
|
||||||
|
cadastre.numero +
|
||||||
|
' - Feuille ' +
|
||||||
|
cadastre.code_arr +
|
||||||
|
' ' +
|
||||||
|
cadastre.section +
|
||||||
|
' ' +
|
||||||
|
cadastre.feuille +
|
||||||
|
'</li>'
|
||||||
|
);
|
||||||
|
|
||||||
|
cadastreItems.addData(cadastre.geometry);
|
||||||
|
});
|
||||||
|
|
||||||
|
cadastreItems.setStyle({
|
||||||
|
fillColor: '#8a6d3b',
|
||||||
|
weight: 2,
|
||||||
|
opacity: 0.3,
|
||||||
|
color: 'white',
|
||||||
|
dashArray: '3',
|
||||||
|
fillOpacity: 0.7
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('#cadastre.list ul').html('<li>AUCUN</li>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function newCadastreLayer(map) {
|
||||||
|
if (cadastreItems) {
|
||||||
|
map.removeLayer(cadastreItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
cadastreItems = new L.GeoJSON();
|
||||||
|
cadastreItems.addTo(map);
|
||||||
|
}
|
56
app/javascript/old_design/carto/qp.js
Normal file
56
app/javascript/old_design/carto/qp.js
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
import L from 'leaflet';
|
||||||
|
import $ from 'jquery';
|
||||||
|
|
||||||
|
export function qpActive() {
|
||||||
|
return $('#map.qp').length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getQP(dossierId, coordinates) {
|
||||||
|
return $.ajax({
|
||||||
|
method: 'post',
|
||||||
|
url: `/users/dossiers/${dossierId}/carte/qp`,
|
||||||
|
data: { coordinates: JSON.stringify(coordinates) },
|
||||||
|
dataType: 'json'
|
||||||
|
}).done(({ quartier_prioritaires }) => values(quartier_prioritaires));
|
||||||
|
}
|
||||||
|
|
||||||
|
let qpItems;
|
||||||
|
|
||||||
|
export function displayQP(map, qps) {
|
||||||
|
if (!qpActive()) return;
|
||||||
|
|
||||||
|
$('#qp.list ul').html('');
|
||||||
|
newQPLayer(map);
|
||||||
|
|
||||||
|
if (qps.length > 0) {
|
||||||
|
qps.forEach(function(qp) {
|
||||||
|
$('#qp.list ul').append('<li>' + qp.commune + ' : ' + qp.nom + '</li>');
|
||||||
|
|
||||||
|
qpItems.addData(qp.geometry);
|
||||||
|
});
|
||||||
|
|
||||||
|
qpItems.setStyle({
|
||||||
|
fillColor: '#31708f',
|
||||||
|
weight: 2,
|
||||||
|
opacity: 0.3,
|
||||||
|
color: 'white',
|
||||||
|
dashArray: '3',
|
||||||
|
fillOpacity: 0.7
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('#qp.list ul').html('<li>AUCUN</li>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function newQPLayer(map) {
|
||||||
|
if (qpItems) {
|
||||||
|
map.removeLayer(qpItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
qpItems = new L.GeoJSON();
|
||||||
|
qpItems.addTo(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
function values(obj) {
|
||||||
|
return Object.keys(obj).map(v => obj[v]);
|
||||||
|
}
|
|
@ -9,6 +9,9 @@ import '../shared/rails-ujs-fix';
|
||||||
import '../shared/safari-11-file-xhr-workaround';
|
import '../shared/safari-11-file-xhr-workaround';
|
||||||
import '../shared/autocomplete';
|
import '../shared/autocomplete';
|
||||||
import '../shared/remote-input';
|
import '../shared/remote-input';
|
||||||
|
import '../shared/franceconnect';
|
||||||
|
|
||||||
|
import '../old_design/carto';
|
||||||
|
|
||||||
// Start Rails helpers
|
// Start Rails helpers
|
||||||
Rails.start();
|
Rails.start();
|
||||||
|
|
|
@ -11,6 +11,7 @@ import '../shared/rails-ujs-fix';
|
||||||
import '../shared/safari-11-file-xhr-workaround';
|
import '../shared/safari-11-file-xhr-workaround';
|
||||||
import '../shared/autocomplete';
|
import '../shared/autocomplete';
|
||||||
import '../shared/remote-input';
|
import '../shared/remote-input';
|
||||||
|
import '../shared/franceconnect';
|
||||||
|
|
||||||
import '../new_design/spinner';
|
import '../new_design/spinner';
|
||||||
import '../new_design/dropdown';
|
import '../new_design/dropdown';
|
||||||
|
|
5
app/javascript/shared/carto.js
Normal file
5
app/javascript/shared/carto.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
const LON = '2.428462';
|
||||||
|
const LAT = '46.538192';
|
||||||
|
const DEFAULT_POSITION = { lon: LON, lat: LAT, zoom: 5 };
|
||||||
|
|
||||||
|
export { DEFAULT_POSITION, LAT, LON };
|
124
app/javascript/shared/franceconnect.js
Normal file
124
app/javascript/shared/franceconnect.js
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
const fconnect = {
|
||||||
|
tracesUrl: '/traces',
|
||||||
|
aboutUrl: ''
|
||||||
|
};
|
||||||
|
const document = window.document;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
fconnect.currentHost = 'fcp.integ01.dev-franceconnect.fr';
|
||||||
|
|
||||||
|
if (window.location.hostname == 'www.demarches-simplifiees.fr')
|
||||||
|
fconnect.currentHost = 'app.franceconnect.gouv.fr';
|
||||||
|
|
||||||
|
var fconnectProfile = document.getElementById('fconnect-profile');
|
||||||
|
if (fconnectProfile) {
|
||||||
|
var linkAccess = document.querySelector('#fconnect-profile > a');
|
||||||
|
var fcLogoutUrl = fconnectProfile.getAttribute('data-fc-logout-url');
|
||||||
|
var access = createFCAccessElement(fcLogoutUrl);
|
||||||
|
fconnectProfile.appendChild(access);
|
||||||
|
linkAccess.onclick = toggleElement.bind(access);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventListener('DOMContentLoaded', init);
|
||||||
|
addEventListener('turbolinks:load', init);
|
||||||
|
|
||||||
|
function toggleElement(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
if (this.style.display === 'block') {
|
||||||
|
this.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
this.style.display = 'block';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeFCPopin(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
fconnect.popin.className = 'fade-out';
|
||||||
|
setTimeout(function() {
|
||||||
|
document.body.removeChild(fconnect.popin);
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
function openFCPopin() {
|
||||||
|
fconnect.popin = document.createElement('div');
|
||||||
|
fconnect.popin.id = 'fc-background';
|
||||||
|
|
||||||
|
var iframe = createFCIframe();
|
||||||
|
|
||||||
|
document.body.appendChild(fconnect.popin);
|
||||||
|
|
||||||
|
fconnect.popin.appendChild(iframe);
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
fconnect.popin.className = 'fade-in';
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
function createFCIframe() {
|
||||||
|
var iframe = document.createElement('iframe');
|
||||||
|
iframe.setAttribute('id', 'fconnect-iframe');
|
||||||
|
iframe.frameBorder = 0;
|
||||||
|
iframe.name = 'fconnect-iframe';
|
||||||
|
return iframe;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createFCAccessElement(logoutUrl) {
|
||||||
|
var access = document.createElement('div');
|
||||||
|
access.id = 'fconnect-access';
|
||||||
|
access.innerHTML = '<h5>Vous êtes identifié grâce à FranceConnect</h5>';
|
||||||
|
access.appendChild(createAboutLink());
|
||||||
|
access.appendChild(document.createElement('hr'));
|
||||||
|
access.appendChild(createHistoryLink());
|
||||||
|
access.appendChild(createLogoutElement(logoutUrl));
|
||||||
|
return access;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createHistoryLink() {
|
||||||
|
var historyLink = document.createElement('a');
|
||||||
|
historyLink.target = 'fconnect-iframe';
|
||||||
|
historyLink.href = '//' + fconnect.currentHost + fconnect.tracesUrl;
|
||||||
|
historyLink.onclick = openFCPopin;
|
||||||
|
historyLink.innerHTML = 'Historique des connexions/échanges de données';
|
||||||
|
|
||||||
|
return historyLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createAboutLink() {
|
||||||
|
var aboutLink = document.createElement('a');
|
||||||
|
aboutLink.href = fconnect.aboutUrl
|
||||||
|
? '//' + fconnect.currentHost + fconnect.aboutUrl
|
||||||
|
: '#';
|
||||||
|
if (fconnect.aboutUrl) {
|
||||||
|
aboutLink.target = 'fconnect-iframe';
|
||||||
|
aboutLink.onclick = openFCPopin;
|
||||||
|
}
|
||||||
|
aboutLink.innerHTML = "Qu'est-ce-que FranceConnect ?";
|
||||||
|
|
||||||
|
return aboutLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createLogoutElement(logoutUrl) {
|
||||||
|
var elm = document.createElement('div');
|
||||||
|
elm.className = 'logout';
|
||||||
|
elm.innerHTML =
|
||||||
|
'<a class="btn btn-default" href="' + logoutUrl + '">Se déconnecter</a>';
|
||||||
|
return elm;
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';
|
||||||
|
var eventer = window[eventMethod];
|
||||||
|
var messageEvent = eventMethod == 'attachEvent' ? 'onmessage' : 'message';
|
||||||
|
|
||||||
|
// Listen to message from child window
|
||||||
|
eventer(
|
||||||
|
messageEvent,
|
||||||
|
function(e) {
|
||||||
|
var key = e.message ? 'message' : 'data';
|
||||||
|
var data = e[key];
|
||||||
|
if (data === 'close_popup') {
|
||||||
|
closeFCPopin(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
|
@ -1,9 +1,9 @@
|
||||||
<%- if response.status == 404 %>
|
<%- if response.status == 404 %>
|
||||||
transfer_errors_message(true);
|
$('#not_found_admin').slideDown(100);
|
||||||
<%- else %>
|
<%- else %>
|
||||||
<%= render_flash %>
|
<%= render_flash %>
|
||||||
|
|
||||||
transfer_errors_message(false);
|
$('#not_found_admin').slideUp(100);
|
||||||
$("#email_admin").val('');
|
$("#email_admin").val('');
|
||||||
|
|
||||||
$('[role=dialog]').modal('hide');
|
$('[role=dialog]').modal('hide');
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
.row
|
|
||||||
.col-xs-12
|
|
||||||
#map.mini{ class: @facade.dossier.procedure.module_api_carto.classes }
|
|
||||||
|
|
||||||
%input#json_latlngs{ type: 'hidden', value: "#{@facade.dossier.json_latlngs}" }
|
|
||||||
%input#quartier_prioritaires{ type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}" }
|
|
||||||
%input#cadastres{ type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}" }
|
|
||||||
|
|
||||||
%script{ type: 'text/javascript' }
|
|
||||||
= "var dossier_id =#{@facade.dossier.id}"
|
|
||||||
initCarto();
|
|
|
@ -1,5 +1,6 @@
|
||||||
:javascript
|
:javascript
|
||||||
var dossier_id = #{dossier.id};
|
DATA.push({
|
||||||
addEventListener('turbolinks:load', function() {
|
carto: {
|
||||||
initCarto();
|
dossierId: #{dossier.id}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#carte-page.row
|
#carte-page.row
|
||||||
.col-md-12.col-lg-12#map{ class: dossier.procedure.module_api_carto.classes }
|
.col-md-12.col-lg-12
|
||||||
|
#map{ class: dossier.procedure.module_api_carto.classes }
|
||||||
|
|
||||||
- if dossier.procedure.module_api_carto.quartiers_prioritaires
|
- if dossier.procedure.module_api_carto.quartiers_prioritaires
|
||||||
.col-md-9.col-lg-9#qp.col-md-3.col-lg-3.list
|
.col-md-9.col-lg-9#qp.col-md-3.col-lg-3.list
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rails/webpacker": "4.0.0-pre.2",
|
"@rails/webpacker": "4.0.0-pre.2",
|
||||||
"@sentry/browser": "^4.0.4",
|
"@sentry/browser": "^4.0.4",
|
||||||
|
"@turf/area": "^6.0.1",
|
||||||
"activestorage": "^5.2.1",
|
"activestorage": "^5.2.1",
|
||||||
"autocomplete.js": "^0.31.0",
|
"autocomplete.js": "^0.31.0",
|
||||||
"chartkick": "^3.0.1",
|
"chartkick": "^3.0.1",
|
||||||
|
@ -10,7 +11,9 @@
|
||||||
"highcharts": "^6.1.2",
|
"highcharts": "^6.1.2",
|
||||||
"jquery": "^3.3.1",
|
"jquery": "^3.3.1",
|
||||||
"leaflet": "^1.3.4",
|
"leaflet": "^1.3.4",
|
||||||
|
"leaflet-freedraw": "^2.9.0",
|
||||||
"rails-ujs": "^5.2.1",
|
"rails-ujs": "^5.2.1",
|
||||||
|
"ramda": "^0.25.0",
|
||||||
"select2": "^4.0.6-rc.1",
|
"select2": "^4.0.6-rc.1",
|
||||||
"turbolinks": "^5.2.0"
|
"turbolinks": "^5.2.0"
|
||||||
},
|
},
|
||||||
|
@ -24,7 +27,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint:ec": "eclint check $({ git ls-files ; find vendor -type f ; echo 'db/schema.rb' ; } | sort | uniq -u)",
|
"lint:ec": "eclint check $({ git ls-files ; find vendor -type f ; echo 'db/schema.rb' ; } | sort | uniq -u)",
|
||||||
"lint:js": "eslint ./app/javascript ./config/webpack"
|
"lint:js": "eslint ./app/javascript ./app/assets/javascripts ./config/webpack"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "6.* || 8.* || >= 10.*"
|
"node": "6.* || 8.* || >= 10.*"
|
||||||
|
|
244
vendor/assets/javascripts/clipper.js
vendored
244
vendor/assets/javascripts/clipper.js
vendored
|
@ -1,244 +0,0 @@
|
||||||
// rev 452
|
|
||||||
/********************************************************************************
|
|
||||||
* *
|
|
||||||
* Author : Angus Johnson *
|
|
||||||
* Version : 6.1.3a *
|
|
||||||
* Date : 22 January 2014 *
|
|
||||||
* Website : http://www.angusj.com *
|
|
||||||
* Copyright : Angus Johnson 2010-2014 *
|
|
||||||
* *
|
|
||||||
* License: *
|
|
||||||
* Use, modification & distribution is subject to Boost Software License Ver 1. *
|
|
||||||
* http://www.boost.org/LICENSE_1_0.txt *
|
|
||||||
* *
|
|
||||||
* Attributions: *
|
|
||||||
* The code in this library is an extension of Bala Vatti's clipping algorithm: *
|
|
||||||
* "A generic solution to polygon clipping" *
|
|
||||||
* Communications of the ACM, Vol 35, Issue 7 (July 1992) pp 56-63. *
|
|
||||||
* http://portal.acm.org/citation.cfm?id=129906 *
|
|
||||||
* *
|
|
||||||
* Computer graphics and geometric modeling: implementation and algorithms *
|
|
||||||
* By Max K. Agoston *
|
|
||||||
* Springer; 1 edition (January 4, 2005) *
|
|
||||||
* http://books.google.com/books?q=vatti+clipping+agoston *
|
|
||||||
* *
|
|
||||||
* See also: *
|
|
||||||
* "Polygon Offsetting by Computing Winding Numbers" *
|
|
||||||
* Paper no. DETC2005-85513 pp. 565-575 *
|
|
||||||
* ASME 2005 International Design Engineering Technical Conferences *
|
|
||||||
* and Computers and Information in Engineering Conference (IDETC/CIE2005) *
|
|
||||||
* September 24-28, 2005 , Long Beach, California, USA *
|
|
||||||
* http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf *
|
|
||||||
* *
|
|
||||||
*******************************************************************************/
|
|
||||||
/*******************************************************************************
|
|
||||||
* *
|
|
||||||
* Author : Timo *
|
|
||||||
* Version : 6.1.3.2 *
|
|
||||||
* Date : 1 February 2014 *
|
|
||||||
* *
|
|
||||||
* This is a translation of the C# Clipper library to Javascript. *
|
|
||||||
* Int128 struct of C# is implemented using JSBN of Tom Wu. *
|
|
||||||
* Because Javascript lacks support for 64-bit integers, the space *
|
|
||||||
* is a little more restricted than in C# version. *
|
|
||||||
* *
|
|
||||||
* C# version has support for coordinate space: *
|
|
||||||
* +-4611686018427387903 ( sqrt(2^127 -1)/2 ) *
|
|
||||||
* while Javascript version has support for space: *
|
|
||||||
* +-4503599627370495 ( sqrt(2^106 -1)/2 ) *
|
|
||||||
* *
|
|
||||||
* Tom Wu's JSBN proved to be the fastest big integer library: *
|
|
||||||
* http://jsperf.com/big-integer-library-test *
|
|
||||||
* *
|
|
||||||
* This class can be made simpler when (if ever) 64-bit integer support comes. *
|
|
||||||
* *
|
|
||||||
*******************************************************************************/
|
|
||||||
/*******************************************************************************
|
|
||||||
* *
|
|
||||||
* Basic JavaScript BN library - subset useful for RSA encryption. *
|
|
||||||
* http://www-cs-students.stanford.edu/~tjw/jsbn/ *
|
|
||||||
* Copyright (c) 2005 Tom Wu *
|
|
||||||
* All Rights Reserved. *
|
|
||||||
* See "LICENSE" for details: *
|
|
||||||
* http://www-cs-students.stanford.edu/~tjw/jsbn/LICENSE *
|
|
||||||
* *
|
|
||||||
*******************************************************************************/
|
|
||||||
(function(){function k(a,b,c){d.biginteger_used=1;null!=a&&("number"==typeof a&&"undefined"==typeof b?this.fromInt(a):"number"==typeof a?this.fromNumber(a,b,c):null==b&&"string"!=typeof a?this.fromString(a,256):this.fromString(a,b))}function q(){return new k(null)}function Q(a,b,c,e,d,g){for(;0<=--g;){var h=b*this[a++]+c[e]+d;d=Math.floor(h/67108864);c[e++]=h&67108863}return d}function R(a,b,c,e,d,g){var h=b&32767;for(b>>=15;0<=--g;){var l=this[a]&32767,k=this[a++]>>15,n=b*l+k*h,l=h*l+((n&32767)<<
|
|
||||||
15)+c[e]+(d&1073741823);d=(l>>>30)+(n>>>15)+b*k+(d>>>30);c[e++]=l&1073741823}return d}function S(a,b,c,e,d,g){var h=b&16383;for(b>>=14;0<=--g;){var l=this[a]&16383,k=this[a++]>>14,n=b*l+k*h,l=h*l+((n&16383)<<14)+c[e]+d;d=(l>>28)+(n>>14)+b*k;c[e++]=l&268435455}return d}function L(a,b){var c=B[a.charCodeAt(b)];return null==c?-1:c}function v(a){var b=q();b.fromInt(a);return b}function C(a){var b=1,c;0!=(c=a>>>16)&&(a=c,b+=16);0!=(c=a>>8)&&(a=c,b+=8);0!=(c=a>>4)&&(a=c,b+=4);0!=(c=a>>2)&&(a=c,b+=2);0!=
|
|
||||||
a>>1&&(b+=1);return b}function x(a){this.m=a}function y(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<a.DB-15)-1;this.mt2=2*a.t}function T(a,b){return a&b}function I(a,b){return a|b}function M(a,b){return a^b}function N(a,b){return a&~b}function A(){}function O(a){return a}function w(a){this.r2=q();this.q3=q();k.ONE.dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}var d={},D=!1;"undefined"!==typeof module&&module.exports?(module.exports=d,D=!0):
|
|
||||||
"undefined"!==typeof document?window.ClipperLib=d:self.ClipperLib=d;var r;if(D)p="chrome",r="Netscape";else{var p=navigator.userAgent.toString().toLowerCase();r=navigator.appName}var E,J,F,G,H,P;E=-1!=p.indexOf("chrome")&&-1==p.indexOf("chromium")?1:0;D=-1!=p.indexOf("chromium")?1:0;J=-1!=p.indexOf("safari")&&-1==p.indexOf("chrome")&&-1==p.indexOf("chromium")?1:0;F=-1!=p.indexOf("firefox")?1:0;p.indexOf("firefox/17");p.indexOf("firefox/15");p.indexOf("firefox/3");G=-1!=p.indexOf("opera")?1:0;p.indexOf("msie 10");
|
|
||||||
p.indexOf("msie 9");H=-1!=p.indexOf("msie 8")?1:0;P=-1!=p.indexOf("msie 7")?1:0;p=-1!=p.indexOf("msie ")?1:0;d.biginteger_used=null;"Microsoft Internet Explorer"==r?(k.prototype.am=R,r=30):"Netscape"!=r?(k.prototype.am=Q,r=26):(k.prototype.am=S,r=28);k.prototype.DB=r;k.prototype.DM=(1<<r)-1;k.prototype.DV=1<<r;k.prototype.FV=Math.pow(2,52);k.prototype.F1=52-r;k.prototype.F2=2*r-52;var B=[],u;r=48;for(u=0;9>=u;++u)B[r++]=u;r=97;for(u=10;36>u;++u)B[r++]=u;r=65;for(u=10;36>u;++u)B[r++]=u;x.prototype.convert=
|
|
||||||
function(a){return 0>a.s||0<=a.compareTo(this.m)?a.mod(this.m):a};x.prototype.revert=function(a){return a};x.prototype.reduce=function(a){a.divRemTo(this.m,null,a)};x.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};x.prototype.sqrTo=function(a,b){a.squareTo(b);this.reduce(b)};y.prototype.convert=function(a){var b=q();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);0>a.s&&0<b.compareTo(k.ZERO)&&this.m.subTo(b,b);return b};y.prototype.revert=function(a){var b=q();a.copyTo(b);
|
|
||||||
this.reduce(b);return b};y.prototype.reduce=function(a){for(;a.t<=this.mt2;)a[a.t++]=0;for(var b=0;b<this.m.t;++b){var c=a[b]&32767,e=c*this.mpl+((c*this.mph+(a[b]>>15)*this.mpl&this.um)<<15)&a.DM,c=b+this.m.t;for(a[c]+=this.m.am(0,e,a,b,0,this.m.t);a[c]>=a.DV;)a[c]-=a.DV,a[++c]++}a.clamp();a.drShiftTo(this.m.t,a);0<=a.compareTo(this.m)&&a.subTo(this.m,a)};y.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};y.prototype.sqrTo=function(a,b){a.squareTo(b);this.reduce(b)};k.prototype.copyTo=
|
|
||||||
function(a){for(var b=this.t-1;0<=b;--b)a[b]=this[b];a.t=this.t;a.s=this.s};k.prototype.fromInt=function(a){this.t=1;this.s=0>a?-1:0;0<a?this[0]=a:-1>a?this[0]=a+this.DV:this.t=0};k.prototype.fromString=function(a,b){var c;if(16==b)c=4;else if(8==b)c=3;else if(256==b)c=8;else if(2==b)c=1;else if(32==b)c=5;else if(4==b)c=2;else{this.fromRadix(a,b);return}this.s=this.t=0;for(var e=a.length,d=!1,g=0;0<=--e;){var h=8==c?a[e]&255:L(a,e);0>h?"-"==a.charAt(e)&&(d=!0):(d=!1,0==g?this[this.t++]=h:g+c>this.DB?
|
|
||||||
(this[this.t-1]|=(h&(1<<this.DB-g)-1)<<g,this[this.t++]=h>>this.DB-g):this[this.t-1]|=h<<g,g+=c,g>=this.DB&&(g-=this.DB))}8==c&&0!=(a[0]&128)&&(this.s=-1,0<g&&(this[this.t-1]|=(1<<this.DB-g)-1<<g));this.clamp();d&&k.ZERO.subTo(this,this)};k.prototype.clamp=function(){for(var a=this.s&this.DM;0<this.t&&this[this.t-1]==a;)--this.t};k.prototype.dlShiftTo=function(a,b){var c;for(c=this.t-1;0<=c;--c)b[c+a]=this[c];for(c=a-1;0<=c;--c)b[c]=0;b.t=this.t+a;b.s=this.s};k.prototype.drShiftTo=function(a,b){for(var c=
|
|
||||||
a;c<this.t;++c)b[c-a]=this[c];b.t=Math.max(this.t-a,0);b.s=this.s};k.prototype.lShiftTo=function(a,b){var c=a%this.DB,e=this.DB-c,d=(1<<e)-1,g=Math.floor(a/this.DB),h=this.s<<c&this.DM,l;for(l=this.t-1;0<=l;--l)b[l+g+1]=this[l]>>e|h,h=(this[l]&d)<<c;for(l=g-1;0<=l;--l)b[l]=0;b[g]=h;b.t=this.t+g+1;b.s=this.s;b.clamp()};k.prototype.rShiftTo=function(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)b.t=0;else{var e=a%this.DB,d=this.DB-e,g=(1<<e)-1;b[0]=this[c]>>e;for(var h=c+1;h<this.t;++h)b[h-
|
|
||||||
c-1]|=(this[h]&g)<<d,b[h-c]=this[h]>>e;0<e&&(b[this.t-c-1]|=(this.s&g)<<d);b.t=this.t-c;b.clamp()}};k.prototype.subTo=function(a,b){for(var c=0,e=0,d=Math.min(a.t,this.t);c<d;)e+=this[c]-a[c],b[c++]=e&this.DM,e>>=this.DB;if(a.t<this.t){for(e-=a.s;c<this.t;)e+=this[c],b[c++]=e&this.DM,e>>=this.DB;e+=this.s}else{for(e+=this.s;c<a.t;)e-=a[c],b[c++]=e&this.DM,e>>=this.DB;e-=a.s}b.s=0>e?-1:0;-1>e?b[c++]=this.DV+e:0<e&&(b[c++]=e);b.t=c;b.clamp()};k.prototype.multiplyTo=function(a,b){var c=this.abs(),e=
|
|
||||||
a.abs(),d=c.t;for(b.t=d+e.t;0<=--d;)b[d]=0;for(d=0;d<e.t;++d)b[d+c.t]=c.am(0,e[d],b,d,0,c.t);b.s=0;b.clamp();this.s!=a.s&&k.ZERO.subTo(b,b)};k.prototype.squareTo=function(a){for(var b=this.abs(),c=a.t=2*b.t;0<=--c;)a[c]=0;for(c=0;c<b.t-1;++c){var e=b.am(c,b[c],a,2*c,0,1);(a[c+b.t]+=b.am(c+1,2*b[c],a,2*c+1,e,b.t-c-1))>=b.DV&&(a[c+b.t]-=b.DV,a[c+b.t+1]=1)}0<a.t&&(a[a.t-1]+=b.am(c,b[c],a,2*c,0,1));a.s=0;a.clamp()};k.prototype.divRemTo=function(a,b,c){var e=a.abs();if(!(0>=e.t)){var d=this.abs();if(d.t<
|
|
||||||
e.t)null!=b&&b.fromInt(0),null!=c&&this.copyTo(c);else{null==c&&(c=q());var g=q(),h=this.s;a=a.s;var l=this.DB-C(e[e.t-1]);0<l?(e.lShiftTo(l,g),d.lShiftTo(l,c)):(e.copyTo(g),d.copyTo(c));e=g.t;d=g[e-1];if(0!=d){var z=d*(1<<this.F1)+(1<e?g[e-2]>>this.F2:0),n=this.FV/z,z=(1<<this.F1)/z,U=1<<this.F2,m=c.t,p=m-e,s=null==b?q():b;g.dlShiftTo(p,s);0<=c.compareTo(s)&&(c[c.t++]=1,c.subTo(s,c));k.ONE.dlShiftTo(e,s);for(s.subTo(g,g);g.t<e;)g[g.t++]=0;for(;0<=--p;){var r=c[--m]==d?this.DM:Math.floor(c[m]*n+(c[m-
|
|
||||||
1]+U)*z);if((c[m]+=g.am(0,r,c,p,0,e))<r)for(g.dlShiftTo(p,s),c.subTo(s,c);c[m]<--r;)c.subTo(s,c)}null!=b&&(c.drShiftTo(e,b),h!=a&&k.ZERO.subTo(b,b));c.t=e;c.clamp();0<l&&c.rShiftTo(l,c);0>h&&k.ZERO.subTo(c,c)}}}};k.prototype.invDigit=function(){if(1>this.t)return 0;var a=this[0];if(0==(a&1))return 0;var b=a&3,b=b*(2-(a&15)*b)&15,b=b*(2-(a&255)*b)&255,b=b*(2-((a&65535)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV;return 0<b?this.DV-b:-b};k.prototype.isEven=function(){return 0==(0<this.t?this[0]&1:this.s)};
|
|
||||||
k.prototype.exp=function(a,b){if(4294967295<a||1>a)return k.ONE;var c=q(),e=q(),d=b.convert(this),g=C(a)-1;for(d.copyTo(c);0<=--g;)if(b.sqrTo(c,e),0<(a&1<<g))b.mulTo(e,d,c);else var h=c,c=e,e=h;return b.revert(c)};k.prototype.toString=function(a){if(0>this.s)return"-"+this.negate().toString(a);if(16==a)a=4;else if(8==a)a=3;else if(2==a)a=1;else if(32==a)a=5;else if(4==a)a=2;else return this.toRadix(a);var b=(1<<a)-1,c,e=!1,d="",g=this.t,h=this.DB-g*this.DB%a;if(0<g--)for(h<this.DB&&0<(c=this[g]>>
|
|
||||||
h)&&(e=!0,d="0123456789abcdefghijklmnopqrstuvwxyz".charAt(c));0<=g;)h<a?(c=(this[g]&(1<<h)-1)<<a-h,c|=this[--g]>>(h+=this.DB-a)):(c=this[g]>>(h-=a)&b,0>=h&&(h+=this.DB,--g)),0<c&&(e=!0),e&&(d+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(c));return e?d:"0"};k.prototype.negate=function(){var a=q();k.ZERO.subTo(this,a);return a};k.prototype.abs=function(){return 0>this.s?this.negate():this};k.prototype.compareTo=function(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t,b=c-a.t;if(0!=b)return 0>this.s?
|
|
||||||
-b:b;for(;0<=--c;)if(0!=(b=this[c]-a[c]))return b;return 0};k.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+C(this[this.t-1]^this.s&this.DM)};k.prototype.mod=function(a){var b=q();this.abs().divRemTo(a,null,b);0>this.s&&0<b.compareTo(k.ZERO)&&a.subTo(b,b);return b};k.prototype.modPowInt=function(a,b){var c;c=256>a||b.isEven()?new x(b):new y(b);return this.exp(a,c)};k.ZERO=v(0);k.ONE=v(1);A.prototype.convert=O;A.prototype.revert=O;A.prototype.mulTo=function(a,b,c){a.multiplyTo(b,
|
|
||||||
c)};A.prototype.sqrTo=function(a,b){a.squareTo(b)};w.prototype.convert=function(a){if(0>a.s||a.t>2*this.m.t)return a.mod(this.m);if(0>a.compareTo(this.m))return a;var b=q();a.copyTo(b);this.reduce(b);return b};w.prototype.revert=function(a){return a};w.prototype.reduce=function(a){a.drShiftTo(this.m.t-1,this.r2);a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>a.compareTo(this.r2);)a.dAddOffset(1,
|
|
||||||
this.m.t+1);for(a.subTo(this.r2,a);0<=a.compareTo(this.m);)a.subTo(this.m,a)};w.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};w.prototype.sqrTo=function(a,b){a.squareTo(b);this.reduce(b)};var t=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,
|
|
||||||
409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],V=67108864/t[t.length-1];k.prototype.chunkSize=function(a){return Math.floor(Math.LN2*this.DB/Math.log(a))};k.prototype.toRadix=function(a){null==
|
|
||||||
a&&(a=10);if(0==this.signum()||2>a||36<a)return"0";var b=this.chunkSize(a),b=Math.pow(a,b),c=v(b),e=q(),d=q(),g="";for(this.divRemTo(c,e,d);0<e.signum();)g=(b+d.intValue()).toString(a).substr(1)+g,e.divRemTo(c,e,d);return d.intValue().toString(a)+g};k.prototype.fromRadix=function(a,b){this.fromInt(0);null==b&&(b=10);for(var c=this.chunkSize(b),e=Math.pow(b,c),d=!1,g=0,h=0,l=0;l<a.length;++l){var z=L(a,l);0>z?"-"==a.charAt(l)&&0==this.signum()&&(d=!0):(h=b*h+z,++g>=c&&(this.dMultiply(e),this.dAddOffset(h,
|
|
||||||
0),h=g=0))}0<g&&(this.dMultiply(Math.pow(b,g)),this.dAddOffset(h,0));d&&k.ZERO.subTo(this,this)};k.prototype.fromNumber=function(a,b,c){if("number"==typeof b)if(2>a)this.fromInt(1);else for(this.fromNumber(a,c),this.testBit(a-1)||this.bitwiseTo(k.ONE.shiftLeft(a-1),I,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(b);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(k.ONE.shiftLeft(a-1),this);else{c=[];var e=a&7;c.length=(a>>3)+1;b.nextBytes(c);c[0]=0<e?c[0]&(1<<e)-1:0;this.fromString(c,
|
|
||||||
256)}};k.prototype.bitwiseTo=function(a,b,c){var e,d,g=Math.min(a.t,this.t);for(e=0;e<g;++e)c[e]=b(this[e],a[e]);if(a.t<this.t){d=a.s&this.DM;for(e=g;e<this.t;++e)c[e]=b(this[e],d);c.t=this.t}else{d=this.s&this.DM;for(e=g;e<a.t;++e)c[e]=b(d,a[e]);c.t=a.t}c.s=b(this.s,a.s);c.clamp()};k.prototype.changeBit=function(a,b){var c=k.ONE.shiftLeft(a);this.bitwiseTo(c,b,c);return c};k.prototype.addTo=function(a,b){for(var c=0,e=0,d=Math.min(a.t,this.t);c<d;)e+=this[c]+a[c],b[c++]=e&this.DM,e>>=this.DB;if(a.t<
|
|
||||||
this.t){for(e+=a.s;c<this.t;)e+=this[c],b[c++]=e&this.DM,e>>=this.DB;e+=this.s}else{for(e+=this.s;c<a.t;)e+=a[c],b[c++]=e&this.DM,e>>=this.DB;e+=a.s}b.s=0>e?-1:0;0<e?b[c++]=e:-1>e&&(b[c++]=this.DV+e);b.t=c;b.clamp()};k.prototype.dMultiply=function(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()};k.prototype.dAddOffset=function(a,b){if(0!=a){for(;this.t<=b;)this[this.t++]=0;for(this[b]+=a;this[b]>=this.DV;)this[b]-=this.DV,++b>=this.t&&(this[this.t++]=0),++this[b]}};k.prototype.multiplyLowerTo=
|
|
||||||
function(a,b,c){var e=Math.min(this.t+a.t,b);c.s=0;for(c.t=e;0<e;)c[--e]=0;var d;for(d=c.t-this.t;e<d;++e)c[e+this.t]=this.am(0,a[e],c,e,0,this.t);for(d=Math.min(a.t,b);e<d;++e)this.am(0,a[e],c,e,0,b-e);c.clamp()};k.prototype.multiplyUpperTo=function(a,b,c){--b;var e=c.t=this.t+a.t-b;for(c.s=0;0<=--e;)c[e]=0;for(e=Math.max(b-this.t,0);e<a.t;++e)c[this.t+e-b]=this.am(b-e,a[e],c,0,0,this.t+e-b);c.clamp();c.drShiftTo(1,c)};k.prototype.modInt=function(a){if(0>=a)return 0;var b=this.DV%a,c=0>this.s?a-
|
|
||||||
1:0;if(0<this.t)if(0==b)c=this[0]%a;else for(var e=this.t-1;0<=e;--e)c=(b*c+this[e])%a;return c};k.prototype.millerRabin=function(a){var b=this.subtract(k.ONE),c=b.getLowestSetBit();if(0>=c)return!1;var e=b.shiftRight(c);a=a+1>>1;a>t.length&&(a=t.length);for(var d=q(),g=0;g<a;++g){d.fromInt(t[Math.floor(Math.random()*t.length)]);var h=d.modPow(e,this);if(0!=h.compareTo(k.ONE)&&0!=h.compareTo(b)){for(var l=1;l++<c&&0!=h.compareTo(b);)if(h=h.modPowInt(2,this),0==h.compareTo(k.ONE))return!1;if(0!=h.compareTo(b))return!1}}return!0};
|
|
||||||
k.prototype.clone=function(){var a=q();this.copyTo(a);return a};k.prototype.intValue=function(){if(0>this.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]};k.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24};k.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16};k.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?
|
|
||||||
0:1};k.prototype.toByteArray=function(){var a=this.t,b=[];b[0]=this.s;var c=this.DB-a*this.DB%8,e,d=0;if(0<a--)for(c<this.DB&&(e=this[a]>>c)!=(this.s&this.DM)>>c&&(b[d++]=e|this.s<<this.DB-c);0<=a;)if(8>c?(e=(this[a]&(1<<c)-1)<<8-c,e|=this[--a]>>(c+=this.DB-8)):(e=this[a]>>(c-=8)&255,0>=c&&(c+=this.DB,--a)),0!=(e&128)&&(e|=-256),0==d&&(this.s&128)!=(e&128)&&++d,0<d||e!=this.s)b[d++]=e;return b};k.prototype.equals=function(a){return 0==this.compareTo(a)};k.prototype.min=function(a){return 0>this.compareTo(a)?
|
|
||||||
this:a};k.prototype.max=function(a){return 0<this.compareTo(a)?this:a};k.prototype.and=function(a){var b=q();this.bitwiseTo(a,T,b);return b};k.prototype.or=function(a){var b=q();this.bitwiseTo(a,I,b);return b};k.prototype.xor=function(a){var b=q();this.bitwiseTo(a,M,b);return b};k.prototype.andNot=function(a){var b=q();this.bitwiseTo(a,N,b);return b};k.prototype.not=function(){for(var a=q(),b=0;b<this.t;++b)a[b]=this.DM&~this[b];a.t=this.t;a.s=~this.s;return a};k.prototype.shiftLeft=function(a){var b=
|
|
||||||
q();0>a?this.rShiftTo(-a,b):this.lShiftTo(a,b);return b};k.prototype.shiftRight=function(a){var b=q();0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b);return b};k.prototype.getLowestSetBit=function(){for(var a=0;a<this.t;++a)if(0!=this[a]){var b=a*this.DB;a=this[a];if(0==a)a=-1;else{var c=0;0==(a&65535)&&(a>>=16,c+=16);0==(a&255)&&(a>>=8,c+=8);0==(a&15)&&(a>>=4,c+=4);0==(a&3)&&(a>>=2,c+=2);0==(a&1)&&++c;a=c}return b+a}return 0>this.s?this.t*this.DB:-1};k.prototype.bitCount=function(){for(var a=0,b=this.s&
|
|
||||||
this.DM,c=0;c<this.t;++c){for(var e=this[c]^b,d=0;0!=e;)e&=e-1,++d;a+=d}return a};k.prototype.testBit=function(a){var b=Math.floor(a/this.DB);return b>=this.t?0!=this.s:0!=(this[b]&1<<a%this.DB)};k.prototype.setBit=function(a){return this.changeBit(a,I)};k.prototype.clearBit=function(a){return this.changeBit(a,N)};k.prototype.flipBit=function(a){return this.changeBit(a,M)};k.prototype.add=function(a){var b=q();this.addTo(a,b);return b};k.prototype.subtract=function(a){var b=q();this.subTo(a,b);return b};
|
|
||||||
k.prototype.multiply=function(a){var b=q();this.multiplyTo(a,b);return b};k.prototype.divide=function(a){var b=q();this.divRemTo(a,b,null);return b};k.prototype.remainder=function(a){var b=q();this.divRemTo(a,null,b);return b};k.prototype.divideAndRemainder=function(a){var b=q(),c=q();this.divRemTo(a,b,c);return[b,c]};k.prototype.modPow=function(a,b){var c=a.bitLength(),e,d=v(1),g;if(0>=c)return d;e=18>c?1:48>c?3:144>c?4:768>c?5:6;g=8>c?new x(b):b.isEven()?new w(b):new y(b);var h=[],l=3,k=e-1,n=(1<<
|
|
||||||
e)-1;h[1]=g.convert(this);if(1<e)for(c=q(),g.sqrTo(h[1],c);l<=n;)h[l]=q(),g.mulTo(c,h[l-2],h[l]),l+=2;for(var m=a.t-1,p,r=!0,s=q(),c=C(a[m])-1;0<=m;){c>=k?p=a[m]>>c-k&n:(p=(a[m]&(1<<c+1)-1)<<k-c,0<m&&(p|=a[m-1]>>this.DB+c-k));for(l=e;0==(p&1);)p>>=1,--l;0>(c-=l)&&(c+=this.DB,--m);if(r)h[p].copyTo(d),r=!1;else{for(;1<l;)g.sqrTo(d,s),g.sqrTo(s,d),l-=2;0<l?g.sqrTo(d,s):(l=d,d=s,s=l);g.mulTo(s,h[p],d)}for(;0<=m&&0==(a[m]&1<<c);)g.sqrTo(d,s),l=d,d=s,s=l,0>--c&&(c=this.DB-1,--m)}return g.revert(d)};k.prototype.modInverse=
|
|
||||||
function(a){var b=a.isEven();if(this.isEven()&&b||0==a.signum())return k.ZERO;for(var c=a.clone(),e=this.clone(),d=v(1),g=v(0),h=v(0),l=v(1);0!=c.signum();){for(;c.isEven();)c.rShiftTo(1,c),b?(d.isEven()&&g.isEven()||(d.addTo(this,d),g.subTo(a,g)),d.rShiftTo(1,d)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),b?(h.isEven()&&l.isEven()||(h.addTo(this,h),l.subTo(a,l)),h.rShiftTo(1,h)):l.isEven()||l.subTo(a,l),l.rShiftTo(1,l);0<=c.compareTo(e)?(c.subTo(e,c),b&&d.subTo(h,d),
|
|
||||||
g.subTo(l,g)):(e.subTo(c,e),b&&h.subTo(d,h),l.subTo(g,l))}if(0!=e.compareTo(k.ONE))return k.ZERO;if(0<=l.compareTo(a))return l.subtract(a);if(0>l.signum())l.addTo(a,l);else return l;return 0>l.signum()?l.add(a):l};k.prototype.pow=function(a){return this.exp(a,new A)};k.prototype.gcd=function(a){var b=0>this.s?this.negate():this.clone();a=0>a.s?a.negate():a.clone();if(0>b.compareTo(a)){var c=b,b=a;a=c}var c=b.getLowestSetBit(),e=a.getLowestSetBit();if(0>e)return b;c<e&&(e=c);0<e&&(b.rShiftTo(e,b),
|
|
||||||
a.rShiftTo(e,a));for(;0<b.signum();)0<(c=b.getLowestSetBit())&&b.rShiftTo(c,b),0<(c=a.getLowestSetBit())&&a.rShiftTo(c,a),0<=b.compareTo(a)?(b.subTo(a,b),b.rShiftTo(1,b)):(a.subTo(b,a),a.rShiftTo(1,a));0<e&&a.lShiftTo(e,a);return a};k.prototype.isProbablePrime=function(a){var b,c=this.abs();if(1==c.t&&c[0]<=t[t.length-1]){for(b=0;b<t.length;++b)if(c[0]==t[b])return!0;return!1}if(c.isEven())return!1;for(b=1;b<t.length;){for(var e=t[b],d=b+1;d<t.length&&e<V;)e*=t[d++];for(e=c.modInt(e);b<d;)if(0==e%
|
|
||||||
t[b++])return!1}return c.millerRabin(a)};k.prototype.square=function(){var a=q();this.squareTo(a);return a};var m=k;m.prototype.IsNegative=function(){return-1==this.compareTo(m.ZERO)?!0:!1};m.op_Equality=function(a,b){return 0==a.compareTo(b)?!0:!1};m.op_Inequality=function(a,b){return 0!=a.compareTo(b)?!0:!1};m.op_GreaterThan=function(a,b){return 0<a.compareTo(b)?!0:!1};m.op_LessThan=function(a,b){return 0>a.compareTo(b)?!0:!1};m.op_Addition=function(a,b){return(new m(a)).add(new m(b))};m.op_Subtraction=
|
|
||||||
function(a,b){return(new m(a)).subtract(new m(b))};m.Int128Mul=function(a,b){return(new m(a)).multiply(new m(b))};m.op_Division=function(a,b){return a.divide(b)};m.prototype.ToDouble=function(){return parseFloat(this.toString())};if("undefined"==typeof K)var K=function(a,b){var c;if("undefined"==typeof Object.getOwnPropertyNames)for(c in b.prototype){if("undefined"==typeof a.prototype[c]||a.prototype[c]==Object.prototype[c])a.prototype[c]=b.prototype[c]}else for(var e=Object.getOwnPropertyNames(b.prototype),
|
|
||||||
d=0;d<e.length;d++)"undefined"==typeof Object.getOwnPropertyDescriptor(a.prototype,e[d])&&Object.defineProperty(a.prototype,e[d],Object.getOwnPropertyDescriptor(b.prototype,e[d]));for(c in b)"undefined"==typeof a[c]&&(a[c]=b[c]);a.$baseCtor=b};d.Path=function(){return[]};d.Paths=function(){return[]};d.DoublePoint=function(){var a=arguments;this.Y=this.X=0;1==a.length?(this.X=a[0].X,this.Y=a[0].Y):2==a.length&&(this.X=a[0],this.Y=a[1])};d.DoublePoint0=function(){this.Y=this.X=0};d.DoublePoint1=function(a){this.X=
|
|
||||||
a.X;this.Y=a.Y};d.DoublePoint2=function(a,b){this.X=a;this.Y=b};d.PolyNode=function(){this.m_Parent=null;this.m_polygon=new d.Path;this.m_endtype=this.m_jointype=this.m_Index=0;this.m_Childs=[];this.IsOpen=!1};d.PolyNode.prototype.IsHoleNode=function(){for(var a=!0,b=this.m_Parent;null!==b;)a=!a,b=b.m_Parent;return a};d.PolyNode.prototype.ChildCount=function(){return this.m_Childs.length};d.PolyNode.prototype.Contour=function(){return this.m_polygon};d.PolyNode.prototype.AddChild=function(a){var b=
|
|
||||||
this.m_Childs.length;this.m_Childs.push(a);a.m_Parent=this;a.m_Index=b};d.PolyNode.prototype.GetNext=function(){return 0<this.m_Childs.length?this.m_Childs[0]:this.GetNextSiblingUp()};d.PolyNode.prototype.GetNextSiblingUp=function(){return null===this.m_Parent?null:this.m_Index==this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]};d.PolyNode.prototype.Childs=function(){return this.m_Childs};d.PolyNode.prototype.Parent=function(){return this.m_Parent};
|
|
||||||
d.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()};d.PolyTree=function(){this.m_AllPolys=[];d.PolyNode.call(this)};d.PolyTree.prototype.Clear=function(){for(var a=0,b=this.m_AllPolys.length;a<b;a++)this.m_AllPolys[a]=null;this.m_AllPolys.length=0;this.m_Childs.length=0};d.PolyTree.prototype.GetFirst=function(){return 0<this.m_Childs.length?this.m_Childs[0]:null};d.PolyTree.prototype.Total=function(){return this.m_AllPolys.length};K(d.PolyTree,d.PolyNode);d.Math_Abs_Int64=d.Math_Abs_Int32=
|
|
||||||
d.Math_Abs_Double=function(a){return Math.abs(a)};d.Math_Max_Int32_Int32=function(a,b){return Math.max(a,b)};d.Cast_Int32=p||G||J?function(a){return a|0}:function(a){return~~a};d.Cast_Int64=E?function(a){return-2147483648>a||2147483647<a?0>a?Math.ceil(a):Math.floor(a):~~a}:F&&"function"==typeof Number.toInteger?function(a){return Number.toInteger(a)}:P||H?function(a){return parseInt(a,10)}:p?function(a){return-2147483648>a||2147483647<a?0>a?Math.ceil(a):Math.floor(a):a|0}:function(a){return 0>a?Math.ceil(a):
|
|
||||||
Math.floor(a)};d.Clear=function(a){a.length=0};d.PI=3.141592653589793;d.PI2=6.283185307179586;d.IntPoint=function(){var a;a=arguments;var b=a.length;this.Y=this.X=0;2==b?(this.X=a[0],this.Y=a[1]):1==b?a[0]instanceof d.DoublePoint?(a=a[0],this.X=d.Clipper.Round(a.X),this.Y=d.Clipper.Round(a.Y)):(a=a[0],this.X=a.X,this.Y=a.Y):this.Y=this.X=0};d.IntPoint.op_Equality=function(a,b){return a.X==b.X&&a.Y==b.Y};d.IntPoint.op_Inequality=function(a,b){return a.X!=b.X||a.Y!=b.Y};d.IntPoint0=function(){this.Y=
|
|
||||||
this.X=0};d.IntPoint1=function(a){this.X=a.X;this.Y=a.Y};d.IntPoint1dp=function(a){this.X=d.Clipper.Round(a.X);this.Y=d.Clipper.Round(a.Y)};d.IntPoint2=function(a,b){this.X=a;this.Y=b};d.IntRect=function(){var a=arguments,b=a.length;4==b?(this.left=a[0],this.top=a[1],this.right=a[2],this.bottom=a[3]):1==b?(this.left=ir.left,this.top=ir.top,this.right=ir.right,this.bottom=ir.bottom):this.bottom=this.right=this.top=this.left=0};d.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};d.IntRect1=
|
|
||||||
function(a){this.left=a.left;this.top=a.top;this.right=a.right;this.bottom=a.bottom};d.IntRect4=function(a,b,c,e){this.left=a;this.top=b;this.right=c;this.bottom=e};d.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3};d.PolyType={ptSubject:0,ptClip:1};d.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};d.JoinType={jtSquare:0,jtRound:1,jtMiter:2};d.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};d.EdgeSide={esLeft:0,esRight:1};d.Direction=
|
|
||||||
{dRightToLeft:0,dLeftToRight:1};d.TEdge=function(){this.Bot=new d.IntPoint;this.Curr=new d.IntPoint;this.Top=new d.IntPoint;this.Delta=new d.IntPoint;this.Dx=0;this.PolyTyp=d.PolyType.ptSubject;this.Side=d.EdgeSide.esLeft;this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null};d.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new d.IntPoint};d.MyIntersectNodeSort=function(){};d.MyIntersectNodeSort.Compare=
|
|
||||||
function(a,b){return b.Pt.Y-a.Pt.Y};d.LocalMinima=function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};d.Scanbeam=function(){this.Y=0;this.Next=null};d.OutRec=function(){this.Idx=0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};d.OutPt=function(){this.Idx=0;this.Pt=new d.IntPoint;this.Prev=this.Next=null};d.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new d.IntPoint};d.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null;this.m_edges=
|
|
||||||
[];this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1;this.m_CurrentLM=this.m_MinimaList=null;this.m_HasOpenPaths=this.m_UseFullRange=!1};d.ClipperBase.horizontal=-9007199254740992;d.ClipperBase.Skip=-2;d.ClipperBase.Unassigned=-1;d.ClipperBase.tolerance=1E-20;d.ClipperBase.loRange=47453132;d.ClipperBase.hiRange=0xfffffffffffff;d.ClipperBase.near_zero=function(a){return a>-d.ClipperBase.tolerance&&a<d.ClipperBase.tolerance};d.ClipperBase.IsHorizontal=function(a){return 0===a.Delta.Y};
|
|
||||||
d.ClipperBase.prototype.PointIsVertex=function(a,b){var c=b;do{if(d.IntPoint.op_Equality(c.Pt,a))return!0;c=c.Next}while(c!=b);return!1};d.ClipperBase.prototype.PointOnLineSegment=function(a,b,c,e){return e?a.X==b.X&&a.Y==b.Y||a.X==c.X&&a.Y==c.Y||a.X>b.X==a.X<c.X&&a.Y>b.Y==a.Y<c.Y&&m.op_Equality(m.Int128Mul(a.X-b.X,c.Y-b.Y),m.Int128Mul(c.X-b.X,a.Y-b.Y)):a.X==b.X&&a.Y==b.Y||a.X==c.X&&a.Y==c.Y||a.X>b.X==a.X<c.X&&a.Y>b.Y==a.Y<c.Y&&(a.X-b.X)*(c.Y-b.Y)==(c.X-b.X)*(a.Y-b.Y)};d.ClipperBase.prototype.PointOnPolygon=
|
|
||||||
function(a,b,c){for(var e=b;;){if(this.PointOnLineSegment(a,e.Pt,e.Next.Pt,c))return!0;e=e.Next;if(e==b)break}return!1};d.ClipperBase.prototype.SlopesEqual=d.ClipperBase.SlopesEqual=function(){var a=arguments,b=a.length,c,e,f;if(3==b)return b=a[0],c=a[1],(a=a[2])?m.op_Equality(m.Int128Mul(b.Delta.Y,c.Delta.X),m.Int128Mul(b.Delta.X,c.Delta.Y)):d.Cast_Int64(b.Delta.Y*c.Delta.X)==d.Cast_Int64(b.Delta.X*c.Delta.Y);if(4==b)return b=a[0],c=a[1],e=a[2],(a=a[3])?m.op_Equality(m.Int128Mul(b.Y-c.Y,c.X-e.X),
|
|
||||||
m.Int128Mul(b.X-c.X,c.Y-e.Y)):0===d.Cast_Int64((b.Y-c.Y)*(c.X-e.X))-d.Cast_Int64((b.X-c.X)*(c.Y-e.Y));b=a[0];c=a[1];e=a[2];f=a[3];return(a=a[4])?m.op_Equality(m.Int128Mul(b.Y-c.Y,e.X-f.X),m.Int128Mul(b.X-c.X,e.Y-f.Y)):0===d.Cast_Int64((b.Y-c.Y)*(e.X-f.X))-d.Cast_Int64((b.X-c.X)*(e.Y-f.Y))};d.ClipperBase.SlopesEqual3=function(a,b,c){return c?m.op_Equality(m.Int128Mul(a.Delta.Y,b.Delta.X),m.Int128Mul(a.Delta.X,b.Delta.Y)):d.Cast_Int64(a.Delta.Y*b.Delta.X)==d.Cast_Int64(a.Delta.X*b.Delta.Y)};d.ClipperBase.SlopesEqual4=
|
|
||||||
function(a,b,c,e){return e?m.op_Equality(m.Int128Mul(a.Y-b.Y,b.X-c.X),m.Int128Mul(a.X-b.X,b.Y-c.Y)):0===d.Cast_Int64((a.Y-b.Y)*(b.X-c.X))-d.Cast_Int64((a.X-b.X)*(b.Y-c.Y))};d.ClipperBase.SlopesEqual5=function(a,b,c,e,f){return f?m.op_Equality(m.Int128Mul(a.Y-b.Y,c.X-e.X),m.Int128Mul(a.X-b.X,c.Y-e.Y)):0===d.Cast_Int64((a.Y-b.Y)*(c.X-e.X))-d.Cast_Int64((a.X-b.X)*(c.Y-e.Y))};d.ClipperBase.prototype.Clear=function(){this.DisposeLocalMinimaList();for(var a=0,b=this.m_edges.length;a<b;++a){for(var c=0,
|
|
||||||
e=this.m_edges[a].length;c<e;++c)this.m_edges[a][c]=null;d.Clear(this.m_edges[a])}d.Clear(this.m_edges);this.m_HasOpenPaths=this.m_UseFullRange=!1};d.ClipperBase.prototype.DisposeLocalMinimaList=function(){for(;null!==this.m_MinimaList;){var a=this.m_MinimaList.Next;this.m_MinimaList=null;this.m_MinimaList=a}this.m_CurrentLM=null};d.ClipperBase.prototype.RangeTest=function(a,b){if(b.Value)(a.X>d.ClipperBase.hiRange||a.Y>d.ClipperBase.hiRange||-a.X>d.ClipperBase.hiRange||-a.Y>d.ClipperBase.hiRange)&&
|
|
||||||
d.Error("Coordinate outside allowed range in RangeTest().");else if(a.X>d.ClipperBase.loRange||a.Y>d.ClipperBase.loRange||-a.X>d.ClipperBase.loRange||-a.Y>d.ClipperBase.loRange)b.Value=!0,this.RangeTest(a,b)};d.ClipperBase.prototype.InitEdge=function(a,b,c,e){a.Next=b;a.Prev=c;a.Curr.X=e.X;a.Curr.Y=e.Y;a.OutIdx=-1};d.ClipperBase.prototype.InitEdge2=function(a,b){a.Curr.Y>=a.Next.Curr.Y?(a.Bot.X=a.Curr.X,a.Bot.Y=a.Curr.Y,a.Top.X=a.Next.Curr.X,a.Top.Y=a.Next.Curr.Y):(a.Top.X=a.Curr.X,a.Top.Y=a.Curr.Y,
|
|
||||||
a.Bot.X=a.Next.Curr.X,a.Bot.Y=a.Next.Curr.Y);this.SetDx(a);a.PolyTyp=b};d.ClipperBase.prototype.FindNextLocMin=function(a){for(var b;;){for(;d.IntPoint.op_Inequality(a.Bot,a.Prev.Bot)||d.IntPoint.op_Equality(a.Curr,a.Top);)a=a.Next;if(a.Dx!=d.ClipperBase.horizontal&&a.Prev.Dx!=d.ClipperBase.horizontal)break;for(;a.Prev.Dx==d.ClipperBase.horizontal;)a=a.Prev;for(b=a;a.Dx==d.ClipperBase.horizontal;)a=a.Next;if(a.Top.Y!=a.Prev.Bot.Y){b.Prev.Bot.X<a.Bot.X&&(a=b);break}}return a};d.ClipperBase.prototype.ProcessBound=
|
|
||||||
function(a,b){var c=a,e=a,f;a.Dx==d.ClipperBase.horizontal&&(f=b?a.Prev.Bot.X:a.Next.Bot.X,a.Bot.X!=f&&this.ReverseHorizontal(a));if(e.OutIdx!=d.ClipperBase.Skip)if(b){for(;e.Top.Y==e.Next.Bot.Y&&e.Next.OutIdx!=d.ClipperBase.Skip;)e=e.Next;if(e.Dx==d.ClipperBase.horizontal&&e.Next.OutIdx!=d.ClipperBase.Skip){for(f=e;f.Prev.Dx==d.ClipperBase.horizontal;)f=f.Prev;f.Prev.Top.X==e.Next.Top.X?b||(e=f.Prev):f.Prev.Top.X>e.Next.Top.X&&(e=f.Prev)}for(;a!=e;)a.NextInLML=a.Next,a.Dx==d.ClipperBase.horizontal&&
|
|
||||||
a!=c&&a.Bot.X!=a.Prev.Top.X&&this.ReverseHorizontal(a),a=a.Next;a.Dx==d.ClipperBase.horizontal&&a!=c&&a.Bot.X!=a.Prev.Top.X&&this.ReverseHorizontal(a);e=e.Next}else{for(;e.Top.Y==e.Prev.Bot.Y&&e.Prev.OutIdx!=d.ClipperBase.Skip;)e=e.Prev;if(e.Dx==d.ClipperBase.horizontal&&e.Prev.OutIdx!=d.ClipperBase.Skip){for(f=e;f.Next.Dx==d.ClipperBase.horizontal;)f=f.Next;f.Next.Top.X==e.Prev.Top.X?b||(e=f.Next):f.Next.Top.X>e.Prev.Top.X&&(e=f.Next)}for(;a!=e;)a.NextInLML=a.Prev,a.Dx==d.ClipperBase.horizontal&&
|
|
||||||
a!=c&&a.Bot.X!=a.Next.Top.X&&this.ReverseHorizontal(a),a=a.Prev;a.Dx==d.ClipperBase.horizontal&&a!=c&&a.Bot.X!=a.Next.Top.X&&this.ReverseHorizontal(a);e=e.Prev}if(e.OutIdx==d.ClipperBase.Skip){a=e;if(b){for(;a.Top.Y==a.Next.Bot.Y;)a=a.Next;for(;a!=e&&a.Dx==d.ClipperBase.horizontal;)a=a.Prev}else{for(;a.Top.Y==a.Prev.Bot.Y;)a=a.Prev;for(;a!=e&&a.Dx==d.ClipperBase.horizontal;)a=a.Next}a==e?e=b?a.Next:a.Prev:(a=b?e.Next:e.Prev,c=new d.LocalMinima,c.Next=null,c.Y=a.Bot.Y,c.LeftBound=null,c.RightBound=
|
|
||||||
a,c.RightBound.WindDelta=0,e=this.ProcessBound(c.RightBound,b),this.InsertLocalMinima(c))}return e};d.ClipperBase.prototype.AddPath=function(a,b,c){c||b!=d.PolyType.ptClip||d.Error("AddPath: Open paths must be subject.");var e=a.length-1;if(c)for(;0<e&&d.IntPoint.op_Equality(a[e],a[0]);)--e;for(;0<e&&d.IntPoint.op_Equality(a[e],a[e-1]);)--e;if(c&&2>e||!c&&1>e)return!1;for(var f=[],g=0;g<=e;g++)f.push(new d.TEdge);var h=!0;f[1].Curr.X=a[1].X;f[1].Curr.Y=a[1].Y;var l={Value:this.m_UseFullRange};this.RangeTest(a[0],
|
|
||||||
l);this.m_UseFullRange=l.Value;l.Value=this.m_UseFullRange;this.RangeTest(a[e],l);this.m_UseFullRange=l.Value;this.InitEdge(f[0],f[1],f[e],a[0]);this.InitEdge(f[e],f[0],f[e-1],a[e]);for(g=e-1;1<=g;--g)l.Value=this.m_UseFullRange,this.RangeTest(a[g],l),this.m_UseFullRange=l.Value,this.InitEdge(f[g],f[g+1],f[g-1],a[g]);for(g=a=e=f[0];;)if(d.IntPoint.op_Equality(a.Curr,a.Next.Curr)){if(a==a.Next)break;a==e&&(e=a.Next);g=a=this.RemoveEdge(a)}else{if(a.Prev==a.Next)break;else if(c&&d.ClipperBase.SlopesEqual(a.Prev.Curr,
|
|
||||||
a.Curr,a.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr,a.Curr,a.Next.Curr))){a==e&&(e=a.Next);a=this.RemoveEdge(a);g=a=a.Prev;continue}a=a.Next;if(a==g)break}if(!c&&a==a.Next||c&&a.Prev==a.Next)return!1;c||(this.m_HasOpenPaths=!0,e.Prev.OutIdx=d.ClipperBase.Skip);a=e;do this.InitEdge2(a,b),a=a.Next,h&&a.Curr.Y!=e.Curr.Y&&(h=!1);while(a!=e);if(h){if(c)return!1;a.Prev.OutIdx=d.ClipperBase.Skip;a.Prev.Bot.X<a.Prev.Top.X&&this.ReverseHorizontal(a.Prev);
|
|
||||||
b=new d.LocalMinima;b.Next=null;b.Y=a.Bot.Y;b.LeftBound=null;b.RightBound=a;b.RightBound.Side=d.EdgeSide.esRight;for(b.RightBound.WindDelta=0;a.Next.OutIdx!=d.ClipperBase.Skip;)a.NextInLML=a.Next,a.Bot.X!=a.Prev.Top.X&&this.ReverseHorizontal(a),a=a.Next;this.InsertLocalMinima(b);this.m_edges.push(f);return!0}this.m_edges.push(f);for(h=null;;){a=this.FindNextLocMin(a);if(a==h)break;else null==h&&(h=a);b=new d.LocalMinima;b.Next=null;b.Y=a.Bot.Y;a.Dx<a.Prev.Dx?(b.LeftBound=a.Prev,b.RightBound=a,f=!1):
|
|
||||||
(b.LeftBound=a,b.RightBound=a.Prev,f=!0);b.LeftBound.Side=d.EdgeSide.esLeft;b.RightBound.Side=d.EdgeSide.esRight;b.LeftBound.WindDelta=c?b.LeftBound.Next==b.RightBound?-1:1:0;b.RightBound.WindDelta=-b.LeftBound.WindDelta;a=this.ProcessBound(b.LeftBound,f);e=this.ProcessBound(b.RightBound,!f);b.LeftBound.OutIdx==d.ClipperBase.Skip?b.LeftBound=null:b.RightBound.OutIdx==d.ClipperBase.Skip&&(b.RightBound=null);this.InsertLocalMinima(b);f||(a=e)}return!0};d.ClipperBase.prototype.AddPaths=function(a,b,
|
|
||||||
c){for(var e=!1,d=0,g=a.length;d<g;++d)this.AddPath(a[d],b,c)&&(e=!0);return e};d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3=function(a,b,c){return d.IntPoint.op_Equality(a,c)||d.IntPoint.op_Equality(a,b)||d.IntPoint.op_Equality(c,b)?!1:a.X!=c.X?b.X>a.X==b.X<c.X:b.Y>a.Y==b.Y<c.Y};d.ClipperBase.prototype.RemoveEdge=function(a){a.Prev.Next=a.Next;a.Next.Prev=a.Prev;var b=a.Next;a.Prev=null;return b};d.ClipperBase.prototype.SetDx=function(a){a.Delta.X=a.Top.X-a.Bot.X;a.Delta.Y=a.Top.Y-a.Bot.Y;a.Dx=
|
|
||||||
0===a.Delta.Y?d.ClipperBase.horizontal:a.Delta.X/a.Delta.Y};d.ClipperBase.prototype.InsertLocalMinima=function(a){if(null===this.m_MinimaList)this.m_MinimaList=a;else if(a.Y>=this.m_MinimaList.Y)a.Next=this.m_MinimaList,this.m_MinimaList=a;else{for(var b=this.m_MinimaList;null!==b.Next&&a.Y<b.Next.Y;)b=b.Next;a.Next=b.Next;b.Next=a}};d.ClipperBase.prototype.PopLocalMinima=function(){null!==this.m_CurrentLM&&(this.m_CurrentLM=this.m_CurrentLM.Next)};d.ClipperBase.prototype.ReverseHorizontal=function(a){var b=
|
|
||||||
a.Top.X;a.Top.X=a.Bot.X;a.Bot.X=b};d.ClipperBase.prototype.Reset=function(){this.m_CurrentLM=this.m_MinimaList;if(null!=this.m_CurrentLM)for(var a=this.m_MinimaList;null!=a;){var b=a.LeftBound;null!=b&&(b.Curr.X=b.Bot.X,b.Curr.Y=b.Bot.Y,b.Side=d.EdgeSide.esLeft,b.OutIdx=d.ClipperBase.Unassigned);b=a.RightBound;null!=b&&(b.Curr.X=b.Bot.X,b.Curr.Y=b.Bot.Y,b.Side=d.EdgeSide.esRight,b.OutIdx=d.ClipperBase.Unassigned);a=a.Next}};d.Clipper=function(a){"undefined"==typeof a&&(a=0);this.m_PolyOuts=null;this.m_ClipType=
|
|
||||||
d.ClipType.ctIntersection;this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_ExecuteLocked=!1;this.m_SubjFillType=this.m_ClipFillType=d.PolyFillType.pftEvenOdd;this.m_GhostJoins=this.m_Joins=null;this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1;d.ClipperBase.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_IntersectList=[];this.m_IntersectNodeComparer=d.MyIntersectNodeSort.Compare;this.m_UsingPolyTree=
|
|
||||||
this.m_ExecuteLocked=!1;this.m_PolyOuts=[];this.m_Joins=[];this.m_GhostJoins=[];this.ReverseSolution=0!==(1&a);this.StrictlySimple=0!==(2&a);this.PreserveCollinear=0!==(4&a)};d.Clipper.ioReverseSolution=1;d.Clipper.ioStrictlySimple=2;d.Clipper.ioPreserveCollinear=4;d.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),d.ClipperBase.prototype.Clear.call(this))};d.Clipper.prototype.DisposeScanbeamList=function(){for(;null!==this.m_Scanbeam;){var a=this.m_Scanbeam.Next;
|
|
||||||
this.m_Scanbeam=null;this.m_Scanbeam=a}};d.Clipper.prototype.Reset=function(){d.ClipperBase.prototype.Reset.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;for(var a=this.m_MinimaList;null!==a;)this.InsertScanbeam(a.Y),a=a.Next};d.Clipper.prototype.InsertScanbeam=function(a){if(null===this.m_Scanbeam)this.m_Scanbeam=new d.Scanbeam,this.m_Scanbeam.Next=null,this.m_Scanbeam.Y=a;else if(a>this.m_Scanbeam.Y){var b=new d.Scanbeam;b.Y=a;b.Next=this.m_Scanbeam;this.m_Scanbeam=b}else{for(var c=
|
|
||||||
this.m_Scanbeam;null!==c.Next&&a<=c.Next.Y;)c=c.Next;a!=c.Y&&(b=new d.Scanbeam,b.Y=a,b.Next=c.Next,c.Next=b)}};d.Clipper.prototype.Execute=function(){var a=arguments,b=a.length,c=a[1]instanceof d.PolyTree;if(4!=b||c){if(4==b&&c){var b=a[0],e=a[1],c=a[2],a=a[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=c;this.m_ClipFillType=a;this.m_ClipType=b;this.m_UsingPolyTree=!0;try{(f=this.ExecuteInternal())&&this.BuildResult2(e)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=
|
|
||||||
!1}return f}if(2==b&&!c||2==b&&c)return b=a[0],e=a[1],this.Execute(b,e,d.PolyFillType.pftEvenOdd,d.PolyFillType.pftEvenOdd)}else{b=a[0];e=a[1];c=a[2];a=a[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&d.Error("Error: PolyTree struct is need for open path clipping.");this.m_ExecuteLocked=!0;d.Clear(e);this.m_SubjFillType=c;this.m_ClipFillType=a;this.m_ClipType=b;this.m_UsingPolyTree=!1;try{var f=this.ExecuteInternal();f&&this.BuildResult(e)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=
|
|
||||||
!1}return f}};d.Clipper.prototype.FixHoleLinkage=function(a){if(null!==a.FirstLeft&&(a.IsHole==a.FirstLeft.IsHole||null===a.FirstLeft.Pts)){for(var b=a.FirstLeft;null!==b&&(b.IsHole==a.IsHole||null===b.Pts);)b=b.FirstLeft;a.FirstLeft=b}};d.Clipper.prototype.ExecuteInternal=function(){try{this.Reset();if(null===this.m_CurrentLM)return!1;var a=this.PopScanbeam();do{this.InsertLocalMinimaIntoAEL(a);d.Clear(this.m_GhostJoins);this.ProcessHorizontals(!1);if(null===this.m_Scanbeam)break;var b=this.PopScanbeam();
|
|
||||||
if(!this.ProcessIntersections(a,b))return!1;this.ProcessEdgesAtTopOfScanbeam(b);a=b}while(null!==this.m_Scanbeam||null!==this.m_CurrentLM);for(var a=0,c=this.m_PolyOuts.length;a<c;a++){var e=this.m_PolyOuts[a];null===e.Pts||e.IsOpen||(e.IsHole^this.ReverseSolution)==0<this.Area(e)&&this.ReversePolyPtLinks(e.Pts)}this.JoinCommonEdges();a=0;for(c=this.m_PolyOuts.length;a<c;a++)e=this.m_PolyOuts[a],null===e.Pts||e.IsOpen||this.FixupOutPolygon(e);this.StrictlySimple&&this.DoSimplePolygons();return!0}finally{d.Clear(this.m_Joins),
|
|
||||||
d.Clear(this.m_GhostJoins)}};d.Clipper.prototype.PopScanbeam=function(){var a=this.m_Scanbeam.Y;this.m_Scanbeam=this.m_Scanbeam.Next;return a};d.Clipper.prototype.DisposeAllPolyPts=function(){for(var a=0,b=this.m_PolyOuts.length;a<b;++a)this.DisposeOutRec(a);d.Clear(this.m_PolyOuts)};d.Clipper.prototype.DisposeOutRec=function(a){var b=this.m_PolyOuts[a];null!==b.Pts&&this.DisposeOutPts(b.Pts);this.m_PolyOuts[a]=null};d.Clipper.prototype.DisposeOutPts=function(a){if(null!==a)for(a.Prev.Next=null;null!==
|
|
||||||
a;)a=a.Next};d.Clipper.prototype.AddJoin=function(a,b,c){var e=new d.Join;e.OutPt1=a;e.OutPt2=b;e.OffPt.X=c.X;e.OffPt.Y=c.Y;this.m_Joins.push(e)};d.Clipper.prototype.AddGhostJoin=function(a,b){var c=new d.Join;c.OutPt1=a;c.OffPt.X=b.X;c.OffPt.Y=b.Y;this.m_GhostJoins.push(c)};d.Clipper.prototype.InsertLocalMinimaIntoAEL=function(a){for(;null!==this.m_CurrentLM&&this.m_CurrentLM.Y==a;){var b=this.m_CurrentLM.LeftBound,c=this.m_CurrentLM.RightBound;this.PopLocalMinima();var e=null;null===b?(this.InsertEdgeIntoAEL(c,
|
|
||||||
null),this.SetWindingCount(c),this.IsContributing(c)&&(e=this.AddOutPt(c,c.Bot))):(null==c?(this.InsertEdgeIntoAEL(b,null),this.SetWindingCount(b),this.IsContributing(b)&&(e=this.AddOutPt(b,b.Bot))):(this.InsertEdgeIntoAEL(b,null),this.InsertEdgeIntoAEL(c,b),this.SetWindingCount(b),c.WindCnt=b.WindCnt,c.WindCnt2=b.WindCnt2,this.IsContributing(b)&&(e=this.AddLocalMinPoly(b,c,b.Bot))),this.InsertScanbeam(b.Top.Y));null!=c&&(d.ClipperBase.IsHorizontal(c)?this.AddEdgeToSEL(c):this.InsertScanbeam(c.Top.Y));
|
|
||||||
if(null!=b&&null!=c){if(null!==e&&d.ClipperBase.IsHorizontal(c)&&0<this.m_GhostJoins.length&&0!==c.WindDelta)for(var f=0,g=this.m_GhostJoins.length;f<g;f++){var h=this.m_GhostJoins[f];this.HorzSegmentsOverlap(h.OutPt1.Pt,h.OffPt,c.Bot,c.Top)&&this.AddJoin(h.OutPt1,e,h.OffPt)}0<=b.OutIdx&&null!==b.PrevInAEL&&b.PrevInAEL.Curr.X==b.Bot.X&&0<=b.PrevInAEL.OutIdx&&d.ClipperBase.SlopesEqual(b.PrevInAEL,b,this.m_UseFullRange)&&0!==b.WindDelta&&0!==b.PrevInAEL.WindDelta&&(f=this.AddOutPt(b.PrevInAEL,b.Bot),
|
|
||||||
this.AddJoin(e,f,b.Top));if(b.NextInAEL!=c&&(0<=c.OutIdx&&0<=c.PrevInAEL.OutIdx&&d.ClipperBase.SlopesEqual(c.PrevInAEL,c,this.m_UseFullRange)&&0!==c.WindDelta&&0!==c.PrevInAEL.WindDelta&&(f=this.AddOutPt(c.PrevInAEL,c.Bot),this.AddJoin(e,f,c.Top)),e=b.NextInAEL,null!==e))for(;e!=c;)this.IntersectEdges(c,e,b.Curr,!1),e=e.NextInAEL}}};d.Clipper.prototype.InsertEdgeIntoAEL=function(a,b){if(null===this.m_ActiveEdges)a.PrevInAEL=null,a.NextInAEL=null,this.m_ActiveEdges=a;else if(null===b&&this.E2InsertsBeforeE1(this.m_ActiveEdges,
|
|
||||||
a))a.PrevInAEL=null,a.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges=this.m_ActiveEdges.PrevInAEL=a;else{null===b&&(b=this.m_ActiveEdges);for(;null!==b.NextInAEL&&!this.E2InsertsBeforeE1(b.NextInAEL,a);)b=b.NextInAEL;a.NextInAEL=b.NextInAEL;null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=a);a.PrevInAEL=b;b.NextInAEL=a}};d.Clipper.prototype.E2InsertsBeforeE1=function(a,b){return b.Curr.X==a.Curr.X?b.Top.Y>a.Top.Y?b.Top.X<d.Clipper.TopX(a,b.Top.Y):a.Top.X>d.Clipper.TopX(b,a.Top.Y):b.Curr.X<a.Curr.X};d.Clipper.prototype.IsEvenOddFillType=
|
|
||||||
function(a){return a.PolyTyp==d.PolyType.ptSubject?this.m_SubjFillType==d.PolyFillType.pftEvenOdd:this.m_ClipFillType==d.PolyFillType.pftEvenOdd};d.Clipper.prototype.IsEvenOddAltFillType=function(a){return a.PolyTyp==d.PolyType.ptSubject?this.m_ClipFillType==d.PolyFillType.pftEvenOdd:this.m_SubjFillType==d.PolyFillType.pftEvenOdd};d.Clipper.prototype.IsContributing=function(a){var b,c;a.PolyTyp==d.PolyType.ptSubject?(b=this.m_SubjFillType,c=this.m_ClipFillType):(b=this.m_ClipFillType,c=this.m_SubjFillType);
|
|
||||||
switch(b){case d.PolyFillType.pftEvenOdd:if(0===a.WindDelta&&1!=a.WindCnt)return!1;break;case d.PolyFillType.pftNonZero:if(1!=Math.abs(a.WindCnt))return!1;break;case d.PolyFillType.pftPositive:if(1!=a.WindCnt)return!1;break;default:if(-1!=a.WindCnt)return!1}switch(this.m_ClipType){case d.ClipType.ctIntersection:switch(c){case d.PolyFillType.pftEvenOdd:case d.PolyFillType.pftNonZero:return 0!==a.WindCnt2;case d.PolyFillType.pftPositive:return 0<a.WindCnt2;default:return 0>a.WindCnt2}case d.ClipType.ctUnion:switch(c){case d.PolyFillType.pftEvenOdd:case d.PolyFillType.pftNonZero:return 0===
|
|
||||||
a.WindCnt2;case d.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}case d.ClipType.ctDifference:if(a.PolyTyp==d.PolyType.ptSubject)switch(c){case d.PolyFillType.pftEvenOdd:case d.PolyFillType.pftNonZero:return 0===a.WindCnt2;case d.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}else switch(c){case d.PolyFillType.pftEvenOdd:case d.PolyFillType.pftNonZero:return 0!==a.WindCnt2;case d.PolyFillType.pftPositive:return 0<a.WindCnt2;default:return 0>
|
|
||||||
a.WindCnt2}case d.ClipType.ctXor:if(0===a.WindDelta)switch(c){case d.PolyFillType.pftEvenOdd:case d.PolyFillType.pftNonZero:return 0===a.WindCnt2;case d.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}}return!0};d.Clipper.prototype.SetWindingCount=function(a){for(var b=a.PrevInAEL;null!==b&&(b.PolyTyp!=a.PolyTyp||0===b.WindDelta);)b=b.PrevInAEL;if(null===b)a.WindCnt=0===a.WindDelta?1:a.WindDelta,a.WindCnt2=0,b=this.m_ActiveEdges;else{if(0===a.WindDelta&&this.m_ClipType!=
|
|
||||||
d.ClipType.ctUnion)a.WindCnt=1;else if(this.IsEvenOddFillType(a))if(0===a.WindDelta){for(var c=!0,e=b.PrevInAEL;null!==e;)e.PolyTyp==b.PolyTyp&&0!==e.WindDelta&&(c=!c),e=e.PrevInAEL;a.WindCnt=c?0:1}else a.WindCnt=a.WindDelta;else 0>b.WindCnt*b.WindDelta?1<Math.abs(b.WindCnt)?a.WindCnt=0>b.WindDelta*a.WindDelta?b.WindCnt:b.WindCnt+a.WindDelta:a.WindCnt=0===a.WindDelta?1:a.WindDelta:a.WindCnt=0===a.WindDelta?0>b.WindCnt?b.WindCnt-1:b.WindCnt+1:0>b.WindDelta*a.WindDelta?b.WindCnt:b.WindCnt+a.WindDelta;
|
|
||||||
a.WindCnt2=b.WindCnt2;b=b.NextInAEL}if(this.IsEvenOddAltFillType(a))for(;b!=a;)0!==b.WindDelta&&(a.WindCnt2=0===a.WindCnt2?1:0),b=b.NextInAEL;else for(;b!=a;)a.WindCnt2+=b.WindDelta,b=b.NextInAEL};d.Clipper.prototype.AddEdgeToSEL=function(a){null===this.m_SortedEdges?(this.m_SortedEdges=a,a.PrevInSEL=null,a.NextInSEL=null):(a.NextInSEL=this.m_SortedEdges,a.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=a)};d.Clipper.prototype.CopyAELToSEL=function(){var a=this.m_ActiveEdges;for(this.m_SortedEdges=
|
|
||||||
a;null!==a;)a.PrevInSEL=a.PrevInAEL,a=a.NextInSEL=a.NextInAEL};d.Clipper.prototype.SwapPositionsInAEL=function(a,b){if(a.NextInAEL!=a.PrevInAEL&&b.NextInAEL!=b.PrevInAEL){if(a.NextInAEL==b){var c=b.NextInAEL;null!==c&&(c.PrevInAEL=a);var e=a.PrevInAEL;null!==e&&(e.NextInAEL=b);b.PrevInAEL=e;b.NextInAEL=a;a.PrevInAEL=b;a.NextInAEL=c}else b.NextInAEL==a?(c=a.NextInAEL,null!==c&&(c.PrevInAEL=b),e=b.PrevInAEL,null!==e&&(e.NextInAEL=a),a.PrevInAEL=e,a.NextInAEL=b,b.PrevInAEL=a,b.NextInAEL=c):(c=a.NextInAEL,
|
|
||||||
e=a.PrevInAEL,a.NextInAEL=b.NextInAEL,null!==a.NextInAEL&&(a.NextInAEL.PrevInAEL=a),a.PrevInAEL=b.PrevInAEL,null!==a.PrevInAEL&&(a.PrevInAEL.NextInAEL=a),b.NextInAEL=c,null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=b),b.PrevInAEL=e,null!==b.PrevInAEL&&(b.PrevInAEL.NextInAEL=b));null===a.PrevInAEL?this.m_ActiveEdges=a:null===b.PrevInAEL&&(this.m_ActiveEdges=b)}};d.Clipper.prototype.SwapPositionsInSEL=function(a,b){if(null!==a.NextInSEL||null!==a.PrevInSEL)if(null!==b.NextInSEL||null!==b.PrevInSEL){if(a.NextInSEL==
|
|
||||||
b){var c=b.NextInSEL;null!==c&&(c.PrevInSEL=a);var e=a.PrevInSEL;null!==e&&(e.NextInSEL=b);b.PrevInSEL=e;b.NextInSEL=a;a.PrevInSEL=b;a.NextInSEL=c}else b.NextInSEL==a?(c=a.NextInSEL,null!==c&&(c.PrevInSEL=b),e=b.PrevInSEL,null!==e&&(e.NextInSEL=a),a.PrevInSEL=e,a.NextInSEL=b,b.PrevInSEL=a,b.NextInSEL=c):(c=a.NextInSEL,e=a.PrevInSEL,a.NextInSEL=b.NextInSEL,null!==a.NextInSEL&&(a.NextInSEL.PrevInSEL=a),a.PrevInSEL=b.PrevInSEL,null!==a.PrevInSEL&&(a.PrevInSEL.NextInSEL=a),b.NextInSEL=c,null!==b.NextInSEL&&
|
|
||||||
(b.NextInSEL.PrevInSEL=b),b.PrevInSEL=e,null!==b.PrevInSEL&&(b.PrevInSEL.NextInSEL=b));null===a.PrevInSEL?this.m_SortedEdges=a:null===b.PrevInSEL&&(this.m_SortedEdges=b)}};d.Clipper.prototype.AddLocalMaxPoly=function(a,b,c){this.AddOutPt(a,c);0==b.WindDelta&&this.AddOutPt(b,c);a.OutIdx==b.OutIdx?(a.OutIdx=-1,b.OutIdx=-1):a.OutIdx<b.OutIdx?this.AppendPolygon(a,b):this.AppendPolygon(b,a)};d.Clipper.prototype.AddLocalMinPoly=function(a,b,c){var e,f;d.ClipperBase.IsHorizontal(b)||a.Dx>b.Dx?(e=this.AddOutPt(a,
|
|
||||||
c),b.OutIdx=a.OutIdx,a.Side=d.EdgeSide.esLeft,b.Side=d.EdgeSide.esRight,f=a,a=f.PrevInAEL==b?b.PrevInAEL:f.PrevInAEL):(e=this.AddOutPt(b,c),a.OutIdx=b.OutIdx,a.Side=d.EdgeSide.esRight,b.Side=d.EdgeSide.esLeft,f=b,a=f.PrevInAEL==a?a.PrevInAEL:f.PrevInAEL);null!==a&&0<=a.OutIdx&&d.Clipper.TopX(a,c.Y)==d.Clipper.TopX(f,c.Y)&&d.ClipperBase.SlopesEqual(f,a,this.m_UseFullRange)&&0!==f.WindDelta&&0!==a.WindDelta&&(c=this.AddOutPt(a,c),this.AddJoin(e,c,f.Top));return e};d.Clipper.prototype.CreateOutRec=function(){var a=
|
|
||||||
new d.OutRec;a.Idx=-1;a.IsHole=!1;a.IsOpen=!1;a.FirstLeft=null;a.Pts=null;a.BottomPt=null;a.PolyNode=null;this.m_PolyOuts.push(a);a.Idx=this.m_PolyOuts.length-1;return a};d.Clipper.prototype.AddOutPt=function(a,b){var c=a.Side==d.EdgeSide.esLeft;if(0>a.OutIdx){var e=this.CreateOutRec();e.IsOpen=0===a.WindDelta;var f=new d.OutPt;e.Pts=f;f.Idx=e.Idx;f.Pt.X=b.X;f.Pt.Y=b.Y;f.Next=f;f.Prev=f;e.IsOpen||this.SetHoleState(a,e);a.OutIdx=e.Idx}else{var e=this.m_PolyOuts[a.OutIdx],g=e.Pts;if(c&&d.IntPoint.op_Equality(b,
|
|
||||||
g.Pt))return g;if(!c&&d.IntPoint.op_Equality(b,g.Prev.Pt))return g.Prev;f=new d.OutPt;f.Idx=e.Idx;f.Pt.X=b.X;f.Pt.Y=b.Y;f.Next=g;f.Prev=g.Prev;f.Prev.Next=f;g.Prev=f;c&&(e.Pts=f)}return f};d.Clipper.prototype.SwapPoints=function(a,b){var c=new d.IntPoint(a.Value);a.Value.X=b.Value.X;a.Value.Y=b.Value.Y;b.Value.X=c.X;b.Value.Y=c.Y};d.Clipper.prototype.HorzSegmentsOverlap=function(a,b,c,e){return a.X>c.X==a.X<e.X?!0:b.X>c.X==b.X<e.X?!0:c.X>a.X==c.X<b.X?!0:e.X>a.X==e.X<b.X?!0:a.X==c.X&&b.X==e.X?!0:a.X==
|
|
||||||
e.X&&b.X==c.X?!0:!1};d.Clipper.prototype.InsertPolyPtBetween=function(a,b,c){var e=new d.OutPt;e.Pt.X=c.X;e.Pt.Y=c.Y;b==a.Next?(a.Next=e,b.Prev=e,e.Next=b,e.Prev=a):(b.Next=e,a.Prev=e,e.Next=a,e.Prev=b);return e};d.Clipper.prototype.SetHoleState=function(a,b){for(var c=!1,e=a.PrevInAEL;null!==e;)0<=e.OutIdx&&0!=e.WindDelta&&(c=!c,null===b.FirstLeft&&(b.FirstLeft=this.m_PolyOuts[e.OutIdx])),e=e.PrevInAEL;c&&(b.IsHole=!0)};d.Clipper.prototype.GetDx=function(a,b){return a.Y==b.Y?d.ClipperBase.horizontal:
|
|
||||||
(b.X-a.X)/(b.Y-a.Y)};d.Clipper.prototype.FirstIsBottomPt=function(a,b){for(var c=a.Prev;d.IntPoint.op_Equality(c.Pt,a.Pt)&&c!=a;)c=c.Prev;for(var e=Math.abs(this.GetDx(a.Pt,c.Pt)),c=a.Next;d.IntPoint.op_Equality(c.Pt,a.Pt)&&c!=a;)c=c.Next;for(var f=Math.abs(this.GetDx(a.Pt,c.Pt)),c=b.Prev;d.IntPoint.op_Equality(c.Pt,b.Pt)&&c!=b;)c=c.Prev;for(var g=Math.abs(this.GetDx(b.Pt,c.Pt)),c=b.Next;d.IntPoint.op_Equality(c.Pt,b.Pt)&&c!=b;)c=c.Next;c=Math.abs(this.GetDx(b.Pt,c.Pt));return e>=g&&e>=c||f>=g&&f>=
|
|
||||||
c};d.Clipper.prototype.GetBottomPt=function(a){for(var b=null,c=a.Next;c!=a;)c.Pt.Y>a.Pt.Y?(a=c,b=null):c.Pt.Y==a.Pt.Y&&c.Pt.X<=a.Pt.X&&(c.Pt.X<a.Pt.X?(b=null,a=c):c.Next!=a&&c.Prev!=a&&(b=c)),c=c.Next;if(null!==b)for(;b!=c;)for(this.FirstIsBottomPt(c,b)||(a=b),b=b.Next;d.IntPoint.op_Inequality(b.Pt,a.Pt);)b=b.Next;return a};d.Clipper.prototype.GetLowermostRec=function(a,b){null===a.BottomPt&&(a.BottomPt=this.GetBottomPt(a.Pts));null===b.BottomPt&&(b.BottomPt=this.GetBottomPt(b.Pts));var c=a.BottomPt,
|
|
||||||
e=b.BottomPt;return c.Pt.Y>e.Pt.Y?a:c.Pt.Y<e.Pt.Y?b:c.Pt.X<e.Pt.X?a:c.Pt.X>e.Pt.X?b:c.Next==c?b:e.Next==e?a:this.FirstIsBottomPt(c,e)?a:b};d.Clipper.prototype.Param1RightOfParam2=function(a,b){do if(a=a.FirstLeft,a==b)return!0;while(null!==a);return!1};d.Clipper.prototype.GetOutRec=function(a){for(a=this.m_PolyOuts[a];a!=this.m_PolyOuts[a.Idx];)a=this.m_PolyOuts[a.Idx];return a};d.Clipper.prototype.AppendPolygon=function(a,b){var c=this.m_PolyOuts[a.OutIdx],e=this.m_PolyOuts[b.OutIdx],f;f=this.Param1RightOfParam2(c,
|
|
||||||
e)?e:this.Param1RightOfParam2(e,c)?c:this.GetLowermostRec(c,e);var g=c.Pts,h=g.Prev,l=e.Pts,k=l.Prev;a.Side==d.EdgeSide.esLeft?(b.Side==d.EdgeSide.esLeft?(this.ReversePolyPtLinks(l),l.Next=g,g.Prev=l,h.Next=k,k.Prev=h,c.Pts=k):(k.Next=g,g.Prev=k,l.Prev=h,h.Next=l,c.Pts=l),g=d.EdgeSide.esLeft):(b.Side==d.EdgeSide.esRight?(this.ReversePolyPtLinks(l),h.Next=k,k.Prev=h,l.Next=g,g.Prev=l):(h.Next=l,l.Prev=h,g.Prev=k,k.Next=g),g=d.EdgeSide.esRight);c.BottomPt=null;f==e&&(e.FirstLeft!=c&&(c.FirstLeft=e.FirstLeft),
|
|
||||||
c.IsHole=e.IsHole);e.Pts=null;e.BottomPt=null;e.FirstLeft=c;f=a.OutIdx;h=b.OutIdx;a.OutIdx=-1;b.OutIdx=-1;for(l=this.m_ActiveEdges;null!==l;){if(l.OutIdx==h){l.OutIdx=f;l.Side=g;break}l=l.NextInAEL}e.Idx=c.Idx};d.Clipper.prototype.ReversePolyPtLinks=function(a){if(null!==a){var b,c;b=a;do c=b.Next,b.Next=b.Prev,b=b.Prev=c;while(b!=a)}};d.Clipper.SwapSides=function(a,b){var c=a.Side;a.Side=b.Side;b.Side=c};d.Clipper.SwapPolyIndexes=function(a,b){var c=a.OutIdx;a.OutIdx=b.OutIdx;b.OutIdx=c};d.Clipper.prototype.IntersectEdges=
|
|
||||||
function(a,b,c,e){var f=!e&&null===a.NextInLML&&a.Top.X==c.X&&a.Top.Y==c.Y;e=!e&&null===b.NextInLML&&b.Top.X==c.X&&b.Top.Y==c.Y;var g=0<=a.OutIdx,h=0<=b.OutIdx;if(0===a.WindDelta||0===b.WindDelta)0===a.WindDelta&&0===b.WindDelta?(f||e)&&g&&h&&this.AddLocalMaxPoly(a,b,c):a.PolyTyp==b.PolyTyp&&a.WindDelta!=b.WindDelta&&this.m_ClipType==d.ClipType.ctUnion?0===a.WindDelta?h&&(this.AddOutPt(a,c),g&&(a.OutIdx=-1)):g&&(this.AddOutPt(b,c),h&&(b.OutIdx=-1)):a.PolyTyp!=b.PolyTyp&&(0!==a.WindDelta||1!=Math.abs(b.WindCnt)||
|
|
||||||
this.m_ClipType==d.ClipType.ctUnion&&0!==b.WindCnt2?0!==b.WindDelta||1!=Math.abs(a.WindCnt)||this.m_ClipType==d.ClipType.ctUnion&&0!==a.WindCnt2||(this.AddOutPt(b,c),h&&(b.OutIdx=-1)):(this.AddOutPt(a,c),g&&(a.OutIdx=-1))),f&&(0>a.OutIdx?this.DeleteFromAEL(a):d.Error("Error intersecting polylines")),e&&(0>b.OutIdx?this.DeleteFromAEL(b):d.Error("Error intersecting polylines"));else{if(a.PolyTyp==b.PolyTyp)if(this.IsEvenOddFillType(a)){var l=a.WindCnt;a.WindCnt=b.WindCnt;b.WindCnt=l}else a.WindCnt=
|
|
||||||
0===a.WindCnt+b.WindDelta?-a.WindCnt:a.WindCnt+b.WindDelta,b.WindCnt=0===b.WindCnt-a.WindDelta?-b.WindCnt:b.WindCnt-a.WindDelta;else this.IsEvenOddFillType(b)?a.WindCnt2=0===a.WindCnt2?1:0:a.WindCnt2+=b.WindDelta,this.IsEvenOddFillType(a)?b.WindCnt2=0===b.WindCnt2?1:0:b.WindCnt2-=a.WindDelta;var k,n,m;a.PolyTyp==d.PolyType.ptSubject?(k=this.m_SubjFillType,m=this.m_ClipFillType):(k=this.m_ClipFillType,m=this.m_SubjFillType);b.PolyTyp==d.PolyType.ptSubject?(n=this.m_SubjFillType,l=this.m_ClipFillType):
|
|
||||||
(n=this.m_ClipFillType,l=this.m_SubjFillType);switch(k){case d.PolyFillType.pftPositive:k=a.WindCnt;break;case d.PolyFillType.pftNegative:k=-a.WindCnt;break;default:k=Math.abs(a.WindCnt)}switch(n){case d.PolyFillType.pftPositive:n=b.WindCnt;break;case d.PolyFillType.pftNegative:n=-b.WindCnt;break;default:n=Math.abs(b.WindCnt)}if(g&&h)f||e||0!==k&&1!=k||0!==n&&1!=n||a.PolyTyp!=b.PolyTyp&&this.m_ClipType!=d.ClipType.ctXor?this.AddLocalMaxPoly(a,b,c):(this.AddOutPt(a,c),this.AddOutPt(b,c),d.Clipper.SwapSides(a,
|
|
||||||
b),d.Clipper.SwapPolyIndexes(a,b));else if(g){if(0===n||1==n)this.AddOutPt(a,c),d.Clipper.SwapSides(a,b),d.Clipper.SwapPolyIndexes(a,b)}else if(h){if(0===k||1==k)this.AddOutPt(b,c),d.Clipper.SwapSides(a,b),d.Clipper.SwapPolyIndexes(a,b)}else if(!(0!==k&&1!=k||0!==n&&1!=n||f||e)){switch(m){case d.PolyFillType.pftPositive:g=a.WindCnt2;break;case d.PolyFillType.pftNegative:g=-a.WindCnt2;break;default:g=Math.abs(a.WindCnt2)}switch(l){case d.PolyFillType.pftPositive:h=b.WindCnt2;break;case d.PolyFillType.pftNegative:h=
|
|
||||||
-b.WindCnt2;break;default:h=Math.abs(b.WindCnt2)}if(a.PolyTyp!=b.PolyTyp)this.AddLocalMinPoly(a,b,c);else if(1==k&&1==n)switch(this.m_ClipType){case d.ClipType.ctIntersection:0<g&&0<h&&this.AddLocalMinPoly(a,b,c);break;case d.ClipType.ctUnion:0>=g&&0>=h&&this.AddLocalMinPoly(a,b,c);break;case d.ClipType.ctDifference:(a.PolyTyp==d.PolyType.ptClip&&0<g&&0<h||a.PolyTyp==d.PolyType.ptSubject&&0>=g&&0>=h)&&this.AddLocalMinPoly(a,b,c);break;case d.ClipType.ctXor:this.AddLocalMinPoly(a,b,c)}else d.Clipper.SwapSides(a,
|
|
||||||
b)}f!=e&&(f&&0<=a.OutIdx||e&&0<=b.OutIdx)&&(d.Clipper.SwapSides(a,b),d.Clipper.SwapPolyIndexes(a,b));f&&this.DeleteFromAEL(a);e&&this.DeleteFromAEL(b)}};d.Clipper.prototype.DeleteFromAEL=function(a){var b=a.PrevInAEL,c=a.NextInAEL;if(null!==b||null!==c||a==this.m_ActiveEdges)null!==b?b.NextInAEL=c:this.m_ActiveEdges=c,null!==c&&(c.PrevInAEL=b),a.NextInAEL=null,a.PrevInAEL=null};d.Clipper.prototype.DeleteFromSEL=function(a){var b=a.PrevInSEL,c=a.NextInSEL;if(null!==b||null!==c||a==this.m_SortedEdges)null!==
|
|
||||||
b?b.NextInSEL=c:this.m_SortedEdges=c,null!==c&&(c.PrevInSEL=b),a.NextInSEL=null,a.PrevInSEL=null};d.Clipper.prototype.UpdateEdgeIntoAEL=function(a){null===a.NextInLML&&d.Error("UpdateEdgeIntoAEL: invalid call");var b=a.PrevInAEL,c=a.NextInAEL;a.NextInLML.OutIdx=a.OutIdx;null!==b?b.NextInAEL=a.NextInLML:this.m_ActiveEdges=a.NextInLML;null!==c&&(c.PrevInAEL=a.NextInLML);a.NextInLML.Side=a.Side;a.NextInLML.WindDelta=a.WindDelta;a.NextInLML.WindCnt=a.WindCnt;a.NextInLML.WindCnt2=a.WindCnt2;a=a.NextInLML;
|
|
||||||
a.Curr.X=a.Bot.X;a.Curr.Y=a.Bot.Y;a.PrevInAEL=b;a.NextInAEL=c;d.ClipperBase.IsHorizontal(a)||this.InsertScanbeam(a.Top.Y);return a};d.Clipper.prototype.ProcessHorizontals=function(a){for(var b=this.m_SortedEdges;null!==b;)this.DeleteFromSEL(b),this.ProcessHorizontal(b,a),b=this.m_SortedEdges};d.Clipper.prototype.GetHorzDirection=function(a,b){a.Bot.X<a.Top.X?(b.Left=a.Bot.X,b.Right=a.Top.X,b.Dir=d.Direction.dLeftToRight):(b.Left=a.Top.X,b.Right=a.Bot.X,b.Dir=d.Direction.dRightToLeft)};d.Clipper.prototype.PrepareHorzJoins=
|
|
||||||
function(a,b){var c=this.m_PolyOuts[a.OutIdx].Pts;a.Side!=d.EdgeSide.esLeft&&(c=c.Prev);b&&(d.IntPoint.op_Equality(c.Pt,a.Top)?this.AddGhostJoin(c,a.Bot):this.AddGhostJoin(c,a.Top))};d.Clipper.prototype.ProcessHorizontal=function(a,b){var c={Dir:null,Left:null,Right:null};this.GetHorzDirection(a,c);for(var e=c.Dir,f=c.Left,g=c.Right,h=a,l=null;null!==h.NextInLML&&d.ClipperBase.IsHorizontal(h.NextInLML);)h=h.NextInLML;for(null===h.NextInLML&&(l=this.GetMaximaPair(h));;){for(var k=a==h,n=this.GetNextInAEL(a,
|
|
||||||
e);null!==n&&!(n.Curr.X==a.Top.X&&null!==a.NextInLML&&n.Dx<a.NextInLML.Dx);){c=this.GetNextInAEL(n,e);if(e==d.Direction.dLeftToRight&&n.Curr.X<=g||e==d.Direction.dRightToLeft&&n.Curr.X>=f){0<=a.OutIdx&&0!=a.WindDelta&&this.PrepareHorzJoins(a,b);if(n==l&&k){e==d.Direction.dLeftToRight?this.IntersectEdges(a,n,n.Top,!1):this.IntersectEdges(n,a,n.Top,!1);0<=l.OutIdx&&d.Error("ProcessHorizontal error");return}if(e==d.Direction.dLeftToRight){var m=new d.IntPoint(n.Curr.X,a.Curr.Y);this.IntersectEdges(a,
|
|
||||||
n,m,!0)}else m=new d.IntPoint(n.Curr.X,a.Curr.Y),this.IntersectEdges(n,a,m,!0);this.SwapPositionsInAEL(a,n)}else if(e==d.Direction.dLeftToRight&&n.Curr.X>=g||e==d.Direction.dRightToLeft&&n.Curr.X<=f)break;n=c}0<=a.OutIdx&&0!==a.WindDelta&&this.PrepareHorzJoins(a,b);if(null!==a.NextInLML&&d.ClipperBase.IsHorizontal(a.NextInLML))a=this.UpdateEdgeIntoAEL(a),0<=a.OutIdx&&this.AddOutPt(a,a.Bot),c={Dir:e,Left:f,Right:g},this.GetHorzDirection(a,c),e=c.Dir,f=c.Left,g=c.Right;else break}null!==a.NextInLML?
|
|
||||||
0<=a.OutIdx?(e=this.AddOutPt(a,a.Top),a=this.UpdateEdgeIntoAEL(a),0!==a.WindDelta&&(f=a.PrevInAEL,c=a.NextInAEL,null!==f&&f.Curr.X==a.Bot.X&&f.Curr.Y==a.Bot.Y&&0!==f.WindDelta&&0<=f.OutIdx&&f.Curr.Y>f.Top.Y&&d.ClipperBase.SlopesEqual(a,f,this.m_UseFullRange)?(c=this.AddOutPt(f,a.Bot),this.AddJoin(e,c,a.Top)):null!==c&&c.Curr.X==a.Bot.X&&c.Curr.Y==a.Bot.Y&&0!==c.WindDelta&&0<=c.OutIdx&&c.Curr.Y>c.Top.Y&&d.ClipperBase.SlopesEqual(a,c,this.m_UseFullRange)&&(c=this.AddOutPt(c,a.Bot),this.AddJoin(e,c,
|
|
||||||
a.Top)))):this.UpdateEdgeIntoAEL(a):null!==l?0<=l.OutIdx?(e==d.Direction.dLeftToRight?this.IntersectEdges(a,l,a.Top,!1):this.IntersectEdges(l,a,a.Top,!1),0<=l.OutIdx&&d.Error("ProcessHorizontal error")):(this.DeleteFromAEL(a),this.DeleteFromAEL(l)):(0<=a.OutIdx&&this.AddOutPt(a,a.Top),this.DeleteFromAEL(a))};d.Clipper.prototype.GetNextInAEL=function(a,b){return b==d.Direction.dLeftToRight?a.NextInAEL:a.PrevInAEL};d.Clipper.prototype.IsMinima=function(a){return null!==a&&a.Prev.NextInLML!=a&&a.Next.NextInLML!=
|
|
||||||
a};d.Clipper.prototype.IsMaxima=function(a,b){return null!==a&&a.Top.Y==b&&null===a.NextInLML};d.Clipper.prototype.IsIntermediate=function(a,b){return a.Top.Y==b&&null!==a.NextInLML};d.Clipper.prototype.GetMaximaPair=function(a){var b=null;d.IntPoint.op_Equality(a.Next.Top,a.Top)&&null===a.Next.NextInLML?b=a.Next:d.IntPoint.op_Equality(a.Prev.Top,a.Top)&&null===a.Prev.NextInLML&&(b=a.Prev);return null===b||-2!=b.OutIdx&&(b.NextInAEL!=b.PrevInAEL||d.ClipperBase.IsHorizontal(b))?b:null};d.Clipper.prototype.ProcessIntersections=
|
|
||||||
function(a,b){if(null==this.m_ActiveEdges)return!0;try{this.BuildIntersectList(a,b);if(0==this.m_IntersectList.length)return!0;if(1==this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch(c){this.m_SortedEdges=null,this.m_IntersectList.length=0,d.Error("ProcessIntersections error")}this.m_SortedEdges=null;return!0};d.Clipper.prototype.BuildIntersectList=function(a,b){if(null!==this.m_ActiveEdges){var c=this.m_ActiveEdges;for(this.m_SortedEdges=c;null!==
|
|
||||||
c;)c.PrevInSEL=c.PrevInAEL,c.NextInSEL=c.NextInAEL,c.Curr.X=d.Clipper.TopX(c,b),c=c.NextInAEL;for(var e=!0;e&&null!==this.m_SortedEdges;){e=!1;for(c=this.m_SortedEdges;null!==c.NextInSEL;){var f=c.NextInSEL,g=new d.IntPoint;c.Curr.X>f.Curr.X?(!this.IntersectPoint(c,f,g)&&c.Curr.X>f.Curr.X+1&&d.Error("Intersection error"),g.Y>a&&(g.Y=a,Math.abs(c.Dx)>Math.abs(f.Dx)?g.X=d.Clipper.TopX(f,a):g.X=d.Clipper.TopX(c,a)),e=new d.IntersectNode,e.Edge1=c,e.Edge2=f,e.Pt.X=g.X,e.Pt.Y=g.Y,this.m_IntersectList.push(e),
|
|
||||||
this.SwapPositionsInSEL(c,f),e=!0):c=f}if(null!==c.PrevInSEL)c.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}};d.Clipper.prototype.EdgesAdjacent=function(a){return a.Edge1.NextInSEL==a.Edge2||a.Edge1.PrevInSEL==a.Edge2};d.Clipper.IntersectNodeSort=function(a,b){return b.Pt.Y-a.Pt.Y};d.Clipper.prototype.FixupIntersectionOrder=function(){this.m_IntersectList.sort(this.m_IntersectNodeComparer);this.CopyAELToSEL();for(var a=this.m_IntersectList.length,b=0;b<a;b++){if(!this.EdgesAdjacent(this.m_IntersectList[b])){for(var c=
|
|
||||||
b+1;c<a&&!this.EdgesAdjacent(this.m_IntersectList[c]);)c++;if(c==a)return!1;var e=this.m_IntersectList[b];this.m_IntersectList[b]=this.m_IntersectList[c];this.m_IntersectList[c]=e}this.SwapPositionsInSEL(this.m_IntersectList[b].Edge1,this.m_IntersectList[b].Edge2)}return!0};d.Clipper.prototype.ProcessIntersectList=function(){for(var a=0,b=this.m_IntersectList.length;a<b;a++){var c=this.m_IntersectList[a];this.IntersectEdges(c.Edge1,c.Edge2,c.Pt,!0);this.SwapPositionsInAEL(c.Edge1,c.Edge2)}this.m_IntersectList.length=
|
|
||||||
0};E=function(a){return 0>a?Math.ceil(a-0.5):Math.round(a)};F=function(a){return 0>a?Math.ceil(a-0.5):Math.floor(a+0.5)};G=function(a){return 0>a?-Math.round(Math.abs(a)):Math.round(a)};H=function(a){if(0>a)return a-=0.5,-2147483648>a?Math.ceil(a):a|0;a+=0.5;return 2147483647<a?Math.floor(a):a|0};d.Clipper.Round=p?E:D?G:J?H:F;d.Clipper.TopX=function(a,b){return b==a.Top.Y?a.Top.X:a.Bot.X+d.Clipper.Round(a.Dx*(b-a.Bot.Y))};d.Clipper.prototype.IntersectPoint=function(a,b,c){c.X=0;c.Y=0;var e,f;if(d.ClipperBase.SlopesEqual(a,
|
|
||||||
b,this.m_UseFullRange)||a.Dx==b.Dx)return b.Bot.Y>a.Bot.Y?(c.X=b.Bot.X,c.Y=b.Bot.Y):(c.X=a.Bot.X,c.Y=a.Bot.Y),!1;if(0===a.Delta.X)c.X=a.Bot.X,d.ClipperBase.IsHorizontal(b)?c.Y=b.Bot.Y:(f=b.Bot.Y-b.Bot.X/b.Dx,c.Y=d.Clipper.Round(c.X/b.Dx+f));else if(0===b.Delta.X)c.X=b.Bot.X,d.ClipperBase.IsHorizontal(a)?c.Y=a.Bot.Y:(e=a.Bot.Y-a.Bot.X/a.Dx,c.Y=d.Clipper.Round(c.X/a.Dx+e));else{e=a.Bot.X-a.Bot.Y*a.Dx;f=b.Bot.X-b.Bot.Y*b.Dx;var g=(f-e)/(a.Dx-b.Dx);c.Y=d.Clipper.Round(g);Math.abs(a.Dx)<Math.abs(b.Dx)?
|
|
||||||
c.X=d.Clipper.Round(a.Dx*g+e):c.X=d.Clipper.Round(b.Dx*g+f)}if(c.Y<a.Top.Y||c.Y<b.Top.Y){if(a.Top.Y>b.Top.Y)return c.Y=a.Top.Y,c.X=d.Clipper.TopX(b,a.Top.Y),c.X<a.Top.X;c.Y=b.Top.Y;Math.abs(a.Dx)<Math.abs(b.Dx)?c.X=d.Clipper.TopX(a,c.Y):c.X=d.Clipper.TopX(b,c.Y)}return!0};d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(a){for(var b=this.m_ActiveEdges;null!==b;){var c=this.IsMaxima(b,a);c&&(c=this.GetMaximaPair(b),c=null===c||!d.ClipperBase.IsHorizontal(c));if(c){var e=b.PrevInAEL;this.DoMaxima(b);
|
|
||||||
b=null===e?this.m_ActiveEdges:e.NextInAEL}else this.IsIntermediate(b,a)&&d.ClipperBase.IsHorizontal(b.NextInLML)?(b=this.UpdateEdgeIntoAEL(b),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),this.AddEdgeToSEL(b)):(b.Curr.X=d.Clipper.TopX(b,a),b.Curr.Y=a),this.StrictlySimple&&(e=b.PrevInAEL,0<=b.OutIdx&&0!==b.WindDelta&&null!==e&&0<=e.OutIdx&&e.Curr.X==b.Curr.X&&0!==e.WindDelta&&(c=this.AddOutPt(e,b.Curr),e=this.AddOutPt(b,b.Curr),this.AddJoin(c,e,b.Curr))),b=b.NextInAEL}this.ProcessHorizontals(!0);for(b=this.m_ActiveEdges;null!==
|
|
||||||
b;){if(this.IsIntermediate(b,a)){c=null;0<=b.OutIdx&&(c=this.AddOutPt(b,b.Top));var b=this.UpdateEdgeIntoAEL(b),e=b.PrevInAEL,f=b.NextInAEL;null!==e&&e.Curr.X==b.Bot.X&&e.Curr.Y==b.Bot.Y&&null!==c&&0<=e.OutIdx&&e.Curr.Y>e.Top.Y&&d.ClipperBase.SlopesEqual(b,e,this.m_UseFullRange)&&0!==b.WindDelta&&0!==e.WindDelta?(e=this.AddOutPt(e,b.Bot),this.AddJoin(c,e,b.Top)):null!==f&&f.Curr.X==b.Bot.X&&f.Curr.Y==b.Bot.Y&&null!==c&&0<=f.OutIdx&&f.Curr.Y>f.Top.Y&&d.ClipperBase.SlopesEqual(b,f,this.m_UseFullRange)&&
|
|
||||||
0!==b.WindDelta&&0!==f.WindDelta&&(e=this.AddOutPt(f,b.Bot),this.AddJoin(c,e,b.Top))}b=b.NextInAEL}};d.Clipper.prototype.DoMaxima=function(a){var b=this.GetMaximaPair(a);if(null===b)0<=a.OutIdx&&this.AddOutPt(a,a.Top),this.DeleteFromAEL(a);else{for(var c=a.NextInAEL;null!==c&&c!=b;)this.IntersectEdges(a,c,a.Top,!0),this.SwapPositionsInAEL(a,c),c=a.NextInAEL;-1==a.OutIdx&&-1==b.OutIdx?(this.DeleteFromAEL(a),this.DeleteFromAEL(b)):0<=a.OutIdx&&0<=b.OutIdx?this.IntersectEdges(a,b,a.Top,!1):0===a.WindDelta?
|
|
||||||
(0<=a.OutIdx&&(this.AddOutPt(a,a.Top),a.OutIdx=-1),this.DeleteFromAEL(a),0<=b.OutIdx&&(this.AddOutPt(b,a.Top),b.OutIdx=-1),this.DeleteFromAEL(b)):d.Error("DoMaxima error")}};d.Clipper.ReversePaths=function(a){for(var b=0,c=a.length;b<c;b++)a[b].reverse()};d.Clipper.Orientation=function(a){return 0<=d.Clipper.Area(a)};d.Clipper.prototype.PointCount=function(a){if(null===a)return 0;var b=0,c=a;do b++,c=c.Next;while(c!=a);return b};d.Clipper.prototype.BuildResult=function(a){d.Clear(a);for(var b=0,c=
|
|
||||||
this.m_PolyOuts.length;b<c;b++){var e=this.m_PolyOuts[b];if(null!==e.Pts){var e=e.Pts.Prev,f=this.PointCount(e);if(!(2>f)){for(var g=Array(f),h=0;h<f;h++)g[h]=e.Pt,e=e.Prev;a.push(g)}}}};d.Clipper.prototype.BuildResult2=function(a){a.Clear();for(var b=0,c=this.m_PolyOuts.length;b<c;b++){var e=this.m_PolyOuts[b],f=this.PointCount(e.Pts);if(!(e.IsOpen&&2>f||!e.IsOpen&&3>f)){this.FixHoleLinkage(e);var g=new d.PolyNode;a.m_AllPolys.push(g);e.PolyNode=g;g.m_polygon.length=f;for(var e=e.Pts.Prev,h=0;h<
|
|
||||||
f;h++)g.m_polygon[h]=e.Pt,e=e.Prev}}b=0;for(c=this.m_PolyOuts.length;b<c;b++)e=this.m_PolyOuts[b],null!==e.PolyNode&&(e.IsOpen?(e.PolyNode.IsOpen=!0,a.AddChild(e.PolyNode)):null!==e.FirstLeft&&null!=e.FirstLeft.PolyNode?e.FirstLeft.PolyNode.AddChild(e.PolyNode):a.AddChild(e.PolyNode))};d.Clipper.prototype.FixupOutPolygon=function(a){var b=null;a.BottomPt=null;for(var c=a.Pts;;){if(c.Prev==c||c.Prev==c.Next){this.DisposeOutPts(c);a.Pts=null;return}if(d.IntPoint.op_Equality(c.Pt,c.Next.Pt)||d.IntPoint.op_Equality(c.Pt,
|
|
||||||
c.Prev.Pt)||d.ClipperBase.SlopesEqual(c.Prev.Pt,c.Pt,c.Next.Pt,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(c.Prev.Pt,c.Pt,c.Next.Pt)))b=null,c.Prev.Next=c.Next,c=c.Next.Prev=c.Prev;else if(c==b)break;else null===b&&(b=c),c=c.Next}a.Pts=c};d.Clipper.prototype.DupOutPt=function(a,b){var c=new d.OutPt;c.Pt.X=a.Pt.X;c.Pt.Y=a.Pt.Y;c.Idx=a.Idx;b?(c.Next=a.Next,c.Prev=a,a.Next.Prev=c,a.Next=c):(c.Prev=a.Prev,c.Next=a,a.Prev.Next=c,a.Prev=c);return c};d.Clipper.prototype.GetOverlap=
|
|
||||||
function(a,b,c,e,d){a<b?c<e?(d.Left=Math.max(a,c),d.Right=Math.min(b,e)):(d.Left=Math.max(a,e),d.Right=Math.min(b,c)):c<e?(d.Left=Math.max(b,c),d.Right=Math.min(a,e)):(d.Left=Math.max(b,e),d.Right=Math.min(a,c));return d.Left<d.Right};d.Clipper.prototype.JoinHorz=function(a,b,c,e,f,g){var h=a.Pt.X>b.Pt.X?d.Direction.dRightToLeft:d.Direction.dLeftToRight;e=c.Pt.X>e.Pt.X?d.Direction.dRightToLeft:d.Direction.dLeftToRight;if(h==e)return!1;if(h==d.Direction.dLeftToRight){for(;a.Next.Pt.X<=f.X&&a.Next.Pt.X>=
|
|
||||||
a.Pt.X&&a.Next.Pt.Y==f.Y;)a=a.Next;g&&a.Pt.X!=f.X&&(a=a.Next);b=this.DupOutPt(a,!g);d.IntPoint.op_Inequality(b.Pt,f)&&(a=b,a.Pt.X=f.X,a.Pt.Y=f.Y,b=this.DupOutPt(a,!g))}else{for(;a.Next.Pt.X>=f.X&&a.Next.Pt.X<=a.Pt.X&&a.Next.Pt.Y==f.Y;)a=a.Next;g||a.Pt.X==f.X||(a=a.Next);b=this.DupOutPt(a,g);d.IntPoint.op_Inequality(b.Pt,f)&&(a=b,a.Pt.X=f.X,a.Pt.Y=f.Y,b=this.DupOutPt(a,g))}if(e==d.Direction.dLeftToRight){for(;c.Next.Pt.X<=f.X&&c.Next.Pt.X>=c.Pt.X&&c.Next.Pt.Y==f.Y;)c=c.Next;g&&c.Pt.X!=f.X&&(c=c.Next);
|
|
||||||
e=this.DupOutPt(c,!g);d.IntPoint.op_Inequality(e.Pt,f)&&(c=e,c.Pt.X=f.X,c.Pt.Y=f.Y,e=this.DupOutPt(c,!g))}else{for(;c.Next.Pt.X>=f.X&&c.Next.Pt.X<=c.Pt.X&&c.Next.Pt.Y==f.Y;)c=c.Next;g||c.Pt.X==f.X||(c=c.Next);e=this.DupOutPt(c,g);d.IntPoint.op_Inequality(e.Pt,f)&&(c=e,c.Pt.X=f.X,c.Pt.Y=f.Y,e=this.DupOutPt(c,g))}h==d.Direction.dLeftToRight==g?(a.Prev=c,c.Next=a,b.Next=e,e.Prev=b):(a.Next=c,c.Prev=a,b.Prev=e,e.Next=b);return!0};d.Clipper.prototype.JoinPoints=function(a,b,c){var e=a.OutPt1,f=new d.OutPt,
|
|
||||||
g=a.OutPt2,h=new d.OutPt;if((h=a.OutPt1.Pt.Y==a.OffPt.Y)&&d.IntPoint.op_Equality(a.OffPt,a.OutPt1.Pt)&&d.IntPoint.op_Equality(a.OffPt,a.OutPt2.Pt)){for(f=a.OutPt1.Next;f!=e&&d.IntPoint.op_Equality(f.Pt,a.OffPt);)f=f.Next;f=f.Pt.Y>a.OffPt.Y;for(h=a.OutPt2.Next;h!=g&&d.IntPoint.op_Equality(h.Pt,a.OffPt);)h=h.Next;if(f==h.Pt.Y>a.OffPt.Y)return!1;f?(f=this.DupOutPt(e,!1),h=this.DupOutPt(g,!0),e.Prev=g,g.Next=e,f.Next=h,h.Prev=f):(f=this.DupOutPt(e,!0),h=this.DupOutPt(g,!1),e.Next=g,g.Prev=e,f.Prev=h,
|
|
||||||
h.Next=f);a.OutPt1=e;a.OutPt2=f;return!0}if(h){for(f=e;e.Prev.Pt.Y==e.Pt.Y&&e.Prev!=f&&e.Prev!=g;)e=e.Prev;for(;f.Next.Pt.Y==f.Pt.Y&&f.Next!=e&&f.Next!=g;)f=f.Next;if(f.Next==e||f.Next==g)return!1;for(h=g;g.Prev.Pt.Y==g.Pt.Y&&g.Prev!=h&&g.Prev!=f;)g=g.Prev;for(;h.Next.Pt.Y==h.Pt.Y&&h.Next!=g&&h.Next!=e;)h=h.Next;if(h.Next==g||h.Next==e)return!1;c={Left:null,Right:null};if(!this.GetOverlap(e.Pt.X,f.Pt.X,g.Pt.X,h.Pt.X,c))return!1;b=c.Left;var l=c.Right;c=new d.IntPoint;e.Pt.X>=b&&e.Pt.X<=l?(c.X=e.Pt.X,
|
|
||||||
c.Y=e.Pt.Y,b=e.Pt.X>f.Pt.X):g.Pt.X>=b&&g.Pt.X<=l?(c.X=g.Pt.X,c.Y=g.Pt.Y,b=g.Pt.X>h.Pt.X):f.Pt.X>=b&&f.Pt.X<=l?(c.X=f.Pt.X,c.Y=f.Pt.Y,b=f.Pt.X>e.Pt.X):(c.X=h.Pt.X,c.Y=h.Pt.Y,b=h.Pt.X>g.Pt.X);a.OutPt1=e;a.OutPt2=g;return this.JoinHorz(e,f,g,h,c,b)}for(f=e.Next;d.IntPoint.op_Equality(f.Pt,e.Pt)&&f!=e;)f=f.Next;if(l=f.Pt.Y>e.Pt.Y||!d.ClipperBase.SlopesEqual(e.Pt,f.Pt,a.OffPt,this.m_UseFullRange)){for(f=e.Prev;d.IntPoint.op_Equality(f.Pt,e.Pt)&&f!=e;)f=f.Prev;if(f.Pt.Y>e.Pt.Y||!d.ClipperBase.SlopesEqual(e.Pt,
|
|
||||||
f.Pt,a.OffPt,this.m_UseFullRange))return!1}for(h=g.Next;d.IntPoint.op_Equality(h.Pt,g.Pt)&&h!=g;)h=h.Next;var k=h.Pt.Y>g.Pt.Y||!d.ClipperBase.SlopesEqual(g.Pt,h.Pt,a.OffPt,this.m_UseFullRange);if(k){for(h=g.Prev;d.IntPoint.op_Equality(h.Pt,g.Pt)&&h!=g;)h=h.Prev;if(h.Pt.Y>g.Pt.Y||!d.ClipperBase.SlopesEqual(g.Pt,h.Pt,a.OffPt,this.m_UseFullRange))return!1}if(f==e||h==g||f==h||b==c&&l==k)return!1;l?(f=this.DupOutPt(e,!1),h=this.DupOutPt(g,!0),e.Prev=g,g.Next=e,f.Next=h,h.Prev=f):(f=this.DupOutPt(e,!0),
|
|
||||||
h=this.DupOutPt(g,!1),e.Next=g,g.Prev=e,f.Prev=h,h.Next=f);a.OutPt1=e;a.OutPt2=f;return!0};d.Clipper.GetBounds=function(a){for(var b=0,c=a.length;b<c&&0==a[b].length;)b++;if(b==c)return new d.IntRect(0,0,0,0);var e=new d.IntRect;e.left=a[b][0].X;e.right=e.left;e.top=a[b][0].Y;for(e.bottom=e.top;b<c;b++)for(var f=0,g=a[b].length;f<g;f++)a[b][f].X<e.left?e.left=a[b][f].X:a[b][f].X>e.right&&(e.right=a[b][f].X),a[b][f].Y<e.top?e.top=a[b][f].Y:a[b][f].Y>e.bottom&&(e.bottom=a[b][f].Y);return e};d.Clipper.prototype.GetBounds2=
|
|
||||||
function(a){var b=a,c=new d.IntRect;c.left=a.Pt.X;c.right=a.Pt.X;c.top=a.Pt.Y;c.bottom=a.Pt.Y;for(a=a.Next;a!=b;)a.Pt.X<c.left&&(c.left=a.Pt.X),a.Pt.X>c.right&&(c.right=a.Pt.X),a.Pt.Y<c.top&&(c.top=a.Pt.Y),a.Pt.Y>c.bottom&&(c.bottom=a.Pt.Y),a=a.Next;return c};d.Clipper.PointInPolygon=function(a,b){var c=0,e=b.length;if(3>e)return 0;for(var d=b[0],g=1;g<=e;++g){var h=g==e?b[0]:b[g];if(h.Y==a.Y&&(h.X==a.X||d.Y==a.Y&&h.X>a.X==d.X<a.X))return-1;if(d.Y<a.Y!=h.Y<a.Y)if(d.X>=a.X)if(h.X>a.X)c=1-c;else{var l=
|
|
||||||
(d.X-a.X)*(h.Y-a.Y)-(h.X-a.X)*(d.Y-a.Y);if(0==l)return-1;0<l==h.Y>d.Y&&(c=1-c)}else if(h.X>a.X){l=(d.X-a.X)*(h.Y-a.Y)-(h.X-a.X)*(d.Y-a.Y);if(0==l)return-1;0<l==h.Y>d.Y&&(c=1-c)}d=h}return c};d.Clipper.prototype.PointInPolygon=function(a,b){for(var c=0,e=b;;){var d=b.Pt.X,g=b.Pt.Y,h=b.Next.Pt.X,l=b.Next.Pt.Y;if(l==a.Y&&(h==a.X||g==a.Y&&h>a.X==d<a.X))return-1;if(g<a.Y!=l<a.Y)if(d>=a.X)if(h>a.X)c=1-c;else{d=(d-a.X)*(l-a.Y)-(h-a.X)*(g-a.Y);if(0==d)return-1;0<d==l>g&&(c=1-c)}else if(h>a.X){d=(d-a.X)*(l-
|
|
||||||
a.Y)-(h-a.X)*(g-a.Y);if(0==d)return-1;0<d==l>g&&(c=1-c)}b=b.Next;if(e==b)break}return c};d.Clipper.prototype.Poly2ContainsPoly1=function(a,b){var c=a;do{var e=this.PointInPolygon(c.Pt,b);if(0<=e)return 0!=e;c=c.Next}while(c!=a);return!0};d.Clipper.prototype.FixupFirstLefts1=function(a,b){for(var c=0,e=this.m_PolyOuts.length;c<e;c++){var d=this.m_PolyOuts[c];null!==d.Pts&&d.FirstLeft==a&&this.Poly2ContainsPoly1(d.Pts,b.Pts)&&(d.FirstLeft=b)}};d.Clipper.prototype.FixupFirstLefts2=function(a,b){for(var c=
|
|
||||||
0,e=this.m_PolyOuts,d=e.length,g=e[c];c<d;c++,g=e[c])g.FirstLeft==a&&(g.FirstLeft=b)};d.Clipper.ParseFirstLeft=function(a){for(;null!=a&&null==a.Pts;)a=a.FirstLeft;return a};d.Clipper.prototype.JoinCommonEdges=function(){for(var a=0,b=this.m_Joins.length;a<b;a++){var c=this.m_Joins[a],e=this.GetOutRec(c.OutPt1.Idx),f=this.GetOutRec(c.OutPt2.Idx);if(null!=e.Pts&&null!=f.Pts){var g;g=e==f?e:this.Param1RightOfParam2(e,f)?f:this.Param1RightOfParam2(f,e)?e:this.GetLowermostRec(e,f);if(this.JoinPoints(c,
|
|
||||||
e,f))if(e==f){e.Pts=c.OutPt1;e.BottomPt=null;f=this.CreateOutRec();f.Pts=c.OutPt2;this.UpdateOutPtIdxs(f);if(this.m_UsingPolyTree){g=0;for(var h=this.m_PolyOuts.length;g<h-1;g++){var l=this.m_PolyOuts[g];null!=l.Pts&&d.Clipper.ParseFirstLeft(l.FirstLeft)==e&&l.IsHole!=e.IsHole&&this.Poly2ContainsPoly1(l.Pts,c.OutPt2)&&(l.FirstLeft=f)}}this.Poly2ContainsPoly1(f.Pts,e.Pts)?(f.IsHole=!e.IsHole,f.FirstLeft=e,this.m_UsingPolyTree&&this.FixupFirstLefts2(f,e),(f.IsHole^this.ReverseSolution)==0<this.Area(f)&&
|
|
||||||
this.ReversePolyPtLinks(f.Pts)):this.Poly2ContainsPoly1(e.Pts,f.Pts)?(f.IsHole=e.IsHole,e.IsHole=!f.IsHole,f.FirstLeft=e.FirstLeft,e.FirstLeft=f,this.m_UsingPolyTree&&this.FixupFirstLefts2(e,f),(e.IsHole^this.ReverseSolution)==0<this.Area(e)&&this.ReversePolyPtLinks(e.Pts)):(f.IsHole=e.IsHole,f.FirstLeft=e.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(e,f))}else f.Pts=null,f.BottomPt=null,f.Idx=e.Idx,e.IsHole=g.IsHole,g==f&&(e.FirstLeft=f.FirstLeft),f.FirstLeft=e,this.m_UsingPolyTree&&this.FixupFirstLefts2(f,
|
|
||||||
e)}}};d.Clipper.prototype.UpdateOutPtIdxs=function(a){var b=a.Pts;do b.Idx=a.Idx,b=b.Prev;while(b!=a.Pts)};d.Clipper.prototype.DoSimplePolygons=function(){for(var a=0;a<this.m_PolyOuts.length;){var b=this.m_PolyOuts[a++],c=b.Pts;if(null!==c){do{for(var e=c.Next;e!=b.Pts;){if(d.IntPoint.op_Equality(c.Pt,e.Pt)&&e.Next!=c&&e.Prev!=c){var f=c.Prev,g=e.Prev;c.Prev=g;g.Next=c;e.Prev=f;f.Next=e;b.Pts=c;f=this.CreateOutRec();f.Pts=e;this.UpdateOutPtIdxs(f);this.Poly2ContainsPoly1(f.Pts,b.Pts)?(f.IsHole=!b.IsHole,
|
|
||||||
f.FirstLeft=b):this.Poly2ContainsPoly1(b.Pts,f.Pts)?(f.IsHole=b.IsHole,b.IsHole=!f.IsHole,f.FirstLeft=b.FirstLeft,b.FirstLeft=f):(f.IsHole=b.IsHole,f.FirstLeft=b.FirstLeft);e=c}e=e.Next}c=c.Next}while(c!=b.Pts)}}};d.Clipper.Area=function(a){var b=a.length;if(3>b)return 0;for(var c=0,e=0,d=b-1;e<b;++e)c+=(a[d].X+a[e].X)*(a[d].Y-a[e].Y),d=e;return 0.5*-c};d.Clipper.prototype.Area=function(a){var b=a.Pts;if(null==b)return 0;var c=0;do c+=(b.Prev.Pt.X+b.Pt.X)*(b.Prev.Pt.Y-b.Pt.Y),b=b.Next;while(b!=a.Pts);
|
|
||||||
return 0.5*c};d.Clipper.SimplifyPolygon=function(a,b){var c=[],e=new d.Clipper(0);e.StrictlySimple=!0;e.AddPath(a,d.PolyType.ptSubject,!0);e.Execute(d.ClipType.ctUnion,c,b,b);return c};d.Clipper.SimplifyPolygons=function(a,b){"undefined"==typeof b&&(b=d.PolyFillType.pftEvenOdd);var c=[],e=new d.Clipper(0);e.StrictlySimple=!0;e.AddPaths(a,d.PolyType.ptSubject,!0);e.Execute(d.ClipType.ctUnion,c,b,b);return c};d.Clipper.DistanceSqrd=function(a,b){var c=a.X-b.X,e=a.Y-b.Y;return c*c+e*e};d.Clipper.DistanceFromLineSqrd=
|
|
||||||
function(a,b,c){var e=b.Y-c.Y;c=c.X-b.X;b=e*b.X+c*b.Y;b=e*a.X+c*a.Y-b;return b*b/(e*e+c*c)};d.Clipper.SlopesNearCollinear=function(a,b,c,e){return d.Clipper.DistanceFromLineSqrd(b,a,c)<e};d.Clipper.PointsAreClose=function(a,b,c){var e=a.X-b.X;a=a.Y-b.Y;return e*e+a*a<=c};d.Clipper.ExcludeOp=function(a){var b=a.Prev;b.Next=a.Next;a.Next.Prev=b;b.Idx=0;return b};d.Clipper.CleanPolygon=function(a,b){"undefined"==typeof b&&(b=1.415);var c=a.length;if(0==c)return[];for(var e=Array(c),f=0;f<c;++f)e[f]=
|
|
||||||
new d.OutPt;for(f=0;f<c;++f)e[f].Pt=a[f],e[f].Next=e[(f+1)%c],e[f].Next.Prev=e[f],e[f].Idx=0;f=b*b;for(e=e[0];0==e.Idx&&e.Next!=e.Prev;)d.Clipper.PointsAreClose(e.Pt,e.Prev.Pt,f)?(e=d.Clipper.ExcludeOp(e),c--):d.Clipper.PointsAreClose(e.Prev.Pt,e.Next.Pt,f)?(d.Clipper.ExcludeOp(e.Next),e=d.Clipper.ExcludeOp(e),c-=2):d.Clipper.SlopesNearCollinear(e.Prev.Pt,e.Pt,e.Next.Pt,f)?(e=d.Clipper.ExcludeOp(e),c--):(e.Idx=1,e=e.Next);3>c&&(c=0);for(var g=Array(c),f=0;f<c;++f)g[f]=new d.IntPoint(e.Pt),e=e.Next;
|
|
||||||
return g};d.Clipper.CleanPolygons=function(a,b){for(var c=Array(a.length),e=0,f=a.length;e<f;e++)c[e]=d.Clipper.CleanPolygon(a[e],b);return c};d.Clipper.Minkowski=function(a,b,c,e){var f=e?1:0,g=a.length,h=b.length;e=[];if(c)for(c=0;c<h;c++){for(var l=Array(g),k=0,n=a.length,m=a[k];k<n;k++,m=a[k])l[k]=new d.IntPoint(b[c].X+m.X,b[c].Y+m.Y);e.push(l)}else for(c=0;c<h;c++){l=Array(g);k=0;n=a.length;for(m=a[k];k<n;k++,m=a[k])l[k]=new d.IntPoint(b[c].X-m.X,b[c].Y-m.Y);e.push(l)}a=[];for(c=0;c<h-1+f;c++)for(k=
|
|
||||||
0;k<g;k++)b=[],b.push(e[c%h][k%g]),b.push(e[(c+1)%h][k%g]),b.push(e[(c+1)%h][(k+1)%g]),b.push(e[c%h][(k+1)%g]),d.Clipper.Orientation(b)||b.reverse(),a.push(b);f=new d.Clipper(0);f.AddPaths(a,d.PolyType.ptSubject,!0);f.Execute(d.ClipType.ctUnion,e,d.PolyFillType.pftNonZero,d.PolyFillType.pftNonZero);return e};d.Clipper.MinkowskiSum=function(){var a=arguments,b=a.length;if(3==b){var c=a[0],e=a[2];return d.Clipper.Minkowski(c,a[1],!0,e)}if(4==b){for(var c=a[0],f=a[1],b=a[2],e=a[3],a=new d.Clipper,g,
|
|
||||||
h=0,l=f.length;h<l;++h)g=d.Clipper.Minkowski(c,f[h],!0,e),a.AddPaths(g,d.PolyType.ptSubject,!0);e&&a.AddPaths(f,d.PolyType.ptClip,!0);c=new d.Paths;a.Execute(d.ClipType.ctUnion,c,b,b);return c}};d.Clipper.MinkowskiDiff=function(a,b,c){return d.Clipper.Minkowski(a,b,!1,c)};d.Clipper.PolyTreeToPaths=function(a){var b=[];d.Clipper.AddPolyNodeToPaths(a,d.Clipper.NodeType.ntAny,b);return b};d.Clipper.AddPolyNodeToPaths=function(a,b,c){var e=!0;switch(b){case d.Clipper.NodeType.ntOpen:return;case d.Clipper.NodeType.ntClosed:e=
|
|
||||||
!a.IsOpen}0<a.m_polygon.length&&e&&c.push(a.m_polygon);e=0;a=a.Childs();for(var f=a.length,g=a[e];e<f;e++,g=a[e])d.Clipper.AddPolyNodeToPaths(g,b,c)};d.Clipper.OpenPathsFromPolyTree=function(a){for(var b=new d.Paths,c=0,e=a.ChildCount();c<e;c++)a.Childs()[c].IsOpen&&b.push(a.Childs()[c].m_polygon);return b};d.Clipper.ClosedPathsFromPolyTree=function(a){var b=new d.Paths;d.Clipper.AddPolyNodeToPaths(a,d.Clipper.NodeType.ntClosed,b);return b};K(d.Clipper,d.ClipperBase);d.Clipper.NodeType={ntAny:0,ntOpen:1,
|
|
||||||
ntClosed:2};d.ClipperOffset=function(a,b){"undefined"==typeof a&&(a=2);"undefined"==typeof b&&(b=d.ClipperOffset.def_arc_tolerance);this.m_destPolys=new d.Paths;this.m_srcPoly=new d.Path;this.m_destPoly=new d.Path;this.m_normals=[];this.m_StepsPerRad=this.m_miterLim=this.m_cos=this.m_sin=this.m_sinA=this.m_delta=0;this.m_lowest=new d.IntPoint;this.m_polyNodes=new d.PolyNode;this.MiterLimit=a;this.ArcTolerance=b;this.m_lowest.X=-1};d.ClipperOffset.two_pi=6.28318530717959;d.ClipperOffset.def_arc_tolerance=
|
|
||||||
0.25;d.ClipperOffset.prototype.Clear=function(){d.Clear(this.m_polyNodes.Childs());this.m_lowest.X=-1};d.ClipperOffset.Round=d.Clipper.Round;d.ClipperOffset.prototype.AddPath=function(a,b,c){var e=a.length-1;if(!(0>e)){var f=new d.PolyNode;f.m_jointype=b;f.m_endtype=c;if(c==d.EndType.etClosedLine||c==d.EndType.etClosedPolygon)for(;0<e&&d.IntPoint.op_Equality(a[0],a[e]);)e--;f.m_polygon.push(a[0]);var g=0;b=0;for(var h=1;h<=e;h++)d.IntPoint.op_Inequality(f.m_polygon[g],a[h])&&(g++,f.m_polygon.push(a[h]),
|
|
||||||
a[h].Y>f.m_polygon[b].Y||a[h].Y==f.m_polygon[b].Y&&a[h].X<f.m_polygon[b].X)&&(b=g);if(!(c==d.EndType.etClosedPolygon&&2>g||c!=d.EndType.etClosedPolygon&&0>g)&&(this.m_polyNodes.AddChild(f),c==d.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest=new d.IntPoint(0,b);else if(a=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],f.m_polygon[b].Y>a.Y||f.m_polygon[b].Y==a.Y&&f.m_polygon[b].X<a.X)this.m_lowest=new d.IntPoint(this.m_polyNodes.ChildCount()-1,b)}};d.ClipperOffset.prototype.AddPaths=
|
|
||||||
function(a,b,c){for(var e=0,d=a.length;e<d;e++)this.AddPath(a[e],b,c)};d.ClipperOffset.prototype.FixOrientations=function(){if(0<=this.m_lowest.X&&!d.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var a=0;a<this.m_polyNodes.ChildCount();a++){var b=this.m_polyNodes.Childs()[a];(b.m_endtype==d.EndType.etClosedPolygon||b.m_endtype==d.EndType.etClosedLine&&d.Clipper.Orientation(b.m_polygon))&&b.m_polygon.reverse()}else for(a=0;a<this.m_polyNodes.ChildCount();a++)b=this.m_polyNodes.Childs()[a],
|
|
||||||
b.m_endtype!=d.EndType.etClosedLine||d.Clipper.Orientation(b.m_polygon)||b.m_polygon.reverse()};d.ClipperOffset.GetUnitNormal=function(a,b){var c=b.X-a.X,e=b.Y-a.Y;if(0==c&&0==e)return new d.DoublePoint(0,0);var f=1/Math.sqrt(c*c+e*e);return new d.DoublePoint(e*f,-(c*f))};d.ClipperOffset.prototype.DoOffset=function(a){this.m_destPolys=[];this.m_delta=a;if(d.ClipperBase.near_zero(a))for(var b=0;b<this.m_polyNodes.ChildCount();b++){var c=this.m_polyNodes.Childs()[b];c.m_endtype==d.EndType.etClosedPolygon&&
|
|
||||||
this.m_destPolys.push(c.m_polygon)}else{this.m_miterLim=2<this.MiterLimit?2/(this.MiterLimit*this.MiterLimit):0.5;var b=0>=this.ArcTolerance?d.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(a)*d.ClipperOffset.def_arc_tolerance?Math.abs(a)*d.ClipperOffset.def_arc_tolerance:this.ArcTolerance,e=3.14159265358979/Math.acos(1-b/Math.abs(a));this.m_sin=Math.sin(d.ClipperOffset.two_pi/e);this.m_cos=Math.cos(d.ClipperOffset.two_pi/e);this.m_StepsPerRad=e/d.ClipperOffset.two_pi;0>a&&(this.m_sin=
|
|
||||||
-this.m_sin);for(b=0;b<this.m_polyNodes.ChildCount();b++){c=this.m_polyNodes.Childs()[b];this.m_srcPoly=c.m_polygon;var f=this.m_srcPoly.length;if(!(0==f||0>=a&&(3>f||c.m_endtype!=d.EndType.etClosedPolygon))){this.m_destPoly=[];if(1==f)if(c.m_jointype==d.JoinType.jtRound)for(var c=1,f=0,g=1;g<=e;g++){this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[0].X+c*a),d.ClipperOffset.Round(this.m_srcPoly[0].Y+f*a)));var h=c,c=c*this.m_cos-this.m_sin*f,f=h*this.m_sin+f*this.m_cos}else for(f=
|
|
||||||
c=-1,g=0;4>g;++g)this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[0].X+c*a),d.ClipperOffset.Round(this.m_srcPoly[0].Y+f*a))),0>c?c=1:0>f?f=1:c=-1;else{for(g=this.m_normals.length=0;g<f-1;g++)this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[g],this.m_srcPoly[g+1]));c.m_endtype==d.EndType.etClosedLine||c.m_endtype==d.EndType.etClosedPolygon?this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[f-1],this.m_srcPoly[0])):this.m_normals.push(new d.DoublePoint(this.m_normals[f-
|
|
||||||
2]));if(c.m_endtype==d.EndType.etClosedPolygon)for(h=f-1,g=0;g<f;g++)h=this.OffsetPoint(g,h,c.m_jointype);else if(c.m_endtype==d.EndType.etClosedLine){h=f-1;for(g=0;g<f;g++)h=this.OffsetPoint(g,h,c.m_jointype);this.m_destPolys.push(this.m_destPoly);this.m_destPoly=[];h=this.m_normals[f-1];for(g=f-1;0<g;g--)this.m_normals[g]=new d.DoublePoint(-this.m_normals[g-1].X,-this.m_normals[g-1].Y);this.m_normals[0]=new d.DoublePoint(-h.X,-h.Y);h=0;for(g=f-1;0<=g;g--)h=this.OffsetPoint(g,h,c.m_jointype)}else{h=
|
|
||||||
0;for(g=1;g<f-1;++g)h=this.OffsetPoint(g,h,c.m_jointype);c.m_endtype==d.EndType.etOpenButt?(g=f-1,h=new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[g].X+this.m_normals[g].X*a),d.ClipperOffset.Round(this.m_srcPoly[g].Y+this.m_normals[g].Y*a)),this.m_destPoly.push(h),h=new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[g].X-this.m_normals[g].X*a),d.ClipperOffset.Round(this.m_srcPoly[g].Y-this.m_normals[g].Y*a)),this.m_destPoly.push(h)):(g=f-1,h=f-2,this.m_sinA=0,this.m_normals[g]=new d.DoublePoint(-this.m_normals[g].X,
|
|
||||||
-this.m_normals[g].Y),c.m_endtype==d.EndType.etOpenSquare?this.DoSquare(g,h):this.DoRound(g,h));for(g=f-1;0<g;g--)this.m_normals[g]=new d.DoublePoint(-this.m_normals[g-1].X,-this.m_normals[g-1].Y);this.m_normals[0]=new d.DoublePoint(-this.m_normals[1].X,-this.m_normals[1].Y);h=f-1;for(g=h-1;0<g;--g)h=this.OffsetPoint(g,h,c.m_jointype);c.m_endtype==d.EndType.etOpenButt?(h=new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[0].X-this.m_normals[0].X*a),d.ClipperOffset.Round(this.m_srcPoly[0].Y-this.m_normals[0].Y*
|
|
||||||
a)),this.m_destPoly.push(h),h=new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[0].X+this.m_normals[0].X*a),d.ClipperOffset.Round(this.m_srcPoly[0].Y+this.m_normals[0].Y*a)),this.m_destPoly.push(h)):(this.m_sinA=0,c.m_endtype==d.EndType.etOpenSquare?this.DoSquare(0,1):this.DoRound(0,1))}}this.m_destPolys.push(this.m_destPoly)}}}};d.ClipperOffset.prototype.Execute=function(){var a=arguments;if(a[0]instanceof d.PolyTree)if(b=a[0],c=a[1],b.Clear(),this.FixOrientations(),this.DoOffset(c),a=new d.Clipper(0),
|
|
||||||
a.AddPaths(this.m_destPolys,d.PolyType.ptSubject,!0),0<c)a.Execute(d.ClipType.ctUnion,b,d.PolyFillType.pftPositive,d.PolyFillType.pftPositive);else if(c=d.Clipper.GetBounds(this.m_destPolys),e=new d.Path,e.push(new d.IntPoint(c.left-10,c.bottom+10)),e.push(new d.IntPoint(c.right+10,c.bottom+10)),e.push(new d.IntPoint(c.right+10,c.top-10)),e.push(new d.IntPoint(c.left-10,c.top-10)),a.AddPath(e,d.PolyType.ptSubject,!0),a.ReverseSolution=!0,a.Execute(d.ClipType.ctUnion,b,d.PolyFillType.pftNegative,d.PolyFillType.pftNegative),
|
|
||||||
1==b.ChildCount()&&0<b.Childs()[0].ChildCount())for(a=b.Childs()[0],b.Childs()[0]=a.Childs()[0],c=1;c<a.ChildCount();c++)b.AddChild(a.Childs()[c]);else b.Clear();else{var b=a[0],c=a[1];d.Clear(b);this.FixOrientations();this.DoOffset(c);a=new d.Clipper(0);a.AddPaths(this.m_destPolys,d.PolyType.ptSubject,!0);if(0<c)a.Execute(d.ClipType.ctUnion,b,d.PolyFillType.pftPositive,d.PolyFillType.pftPositive);else{var c=d.Clipper.GetBounds(this.m_destPolys),e=new d.Path;e.push(new d.IntPoint(c.left-10,c.bottom+
|
|
||||||
10));e.push(new d.IntPoint(c.right+10,c.bottom+10));e.push(new d.IntPoint(c.right+10,c.top-10));e.push(new d.IntPoint(c.left-10,c.top-10));a.AddPath(e,d.PolyType.ptSubject,!0);a.ReverseSolution=!0;a.Execute(d.ClipType.ctUnion,b,d.PolyFillType.pftNegative,d.PolyFillType.pftNegative);0<b.length&&b.splice(0,1)}}};d.ClipperOffset.prototype.OffsetPoint=function(a,b,c){this.m_sinA=this.m_normals[b].X*this.m_normals[a].Y-this.m_normals[a].X*this.m_normals[b].Y;if(5E-5>this.m_sinA&&-5E-5<this.m_sinA)return b;
|
|
||||||
1<this.m_sinA?this.m_sinA=1:-1>this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_normals[b].X*this.m_delta),d.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_normals[b].Y*this.m_delta))),this.m_destPoly.push(new d.IntPoint(this.m_srcPoly[a])),this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_normals[a].X*this.m_delta),d.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_normals[a].Y*
|
|
||||||
this.m_delta)));else switch(c){case d.JoinType.jtMiter:c=1+(this.m_normals[a].X*this.m_normals[b].X+this.m_normals[a].Y*this.m_normals[b].Y);c>=this.m_miterLim?this.DoMiter(a,b,c):this.DoSquare(a,b);break;case d.JoinType.jtSquare:this.DoSquare(a,b);break;case d.JoinType.jtRound:this.DoRound(a,b)}return a};d.ClipperOffset.prototype.DoSquare=function(a,b){var c=Math.tan(Math.atan2(this.m_sinA,this.m_normals[b].X*this.m_normals[a].X+this.m_normals[b].Y*this.m_normals[a].Y)/4);this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+
|
|
||||||
this.m_delta*(this.m_normals[b].X-this.m_normals[b].Y*c)),d.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_delta*(this.m_normals[b].Y+this.m_normals[b].X*c))));this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_delta*(this.m_normals[a].X+this.m_normals[a].Y*c)),d.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_delta*(this.m_normals[a].Y-this.m_normals[a].X*c))))};d.ClipperOffset.prototype.DoMiter=function(a,b,c){c=this.m_delta/c;this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+
|
|
||||||
(this.m_normals[b].X+this.m_normals[a].X)*c),d.ClipperOffset.Round(this.m_srcPoly[a].Y+(this.m_normals[b].Y+this.m_normals[a].Y)*c)))};d.ClipperOffset.prototype.DoRound=function(a,b){for(var c=Math.atan2(this.m_sinA,this.m_normals[b].X*this.m_normals[a].X+this.m_normals[b].Y*this.m_normals[a].Y),c=d.Cast_Int32(d.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(c))),e=this.m_normals[b].X,f=this.m_normals[b].Y,g,h=0;h<c;++h)this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+
|
|
||||||
e*this.m_delta),d.ClipperOffset.Round(this.m_srcPoly[a].Y+f*this.m_delta))),g=e,e=e*this.m_cos-this.m_sin*f,f=g*this.m_sin+f*this.m_cos;this.m_destPoly.push(new d.IntPoint(d.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_normals[a].X*this.m_delta),d.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_normals[a].Y*this.m_delta)))};d.Error=function(a){try{throw Error(a);}catch(b){alert(b.message)}};d.JS={};d.JS.AreaOfPolygon=function(a,b){b||(b=1);return d.Clipper.Area(a)/(b*b)};d.JS.AreaOfPolygons=function(a,
|
|
||||||
b){b||(b=1);for(var c=0,e=0;e<a.length;e++)c+=d.Clipper.Area(a[e]);return c/(b*b)};d.JS.BoundsOfPath=function(a,b){return d.JS.BoundsOfPaths([a],b)};d.JS.BoundsOfPaths=function(a,b){b||(b=1);var c=d.Clipper.GetBounds(a);c.left/=b;c.bottom/=b;c.right/=b;c.top/=b;return c};d.JS.Clean=function(a,b){if(!(a instanceof Array))return[];var c=a[0]instanceof Array;a=d.JS.Clone(a);if("number"!=typeof b||null===b)return d.Error("Delta is not a number in Clean()."),a;if(0===a.length||1==a.length&&0===a[0].length||
|
|
||||||
0>b)return a;c||(a=[a]);for(var e=a.length,f,g,h,l,k,n,m,p=[],q=0;q<e;q++)if(g=a[q],f=g.length,0!==f)if(3>f)h=g,p.push(h);else{h=g;l=b*b;k=g[0];for(m=n=1;m<f;m++)(g[m].X-k.X)*(g[m].X-k.X)+(g[m].Y-k.Y)*(g[m].Y-k.Y)<=l||(h[n]=g[m],k=g[m],n++);k=g[n-1];(g[0].X-k.X)*(g[0].X-k.X)+(g[0].Y-k.Y)*(g[0].Y-k.Y)<=l&&n--;n<f&&h.splice(n,f-n);h.length&&p.push(h)}!c&&p.length?p=p[0]:c||0!==p.length?c&&0===p.length&&(p=[[]]):p=[];return p};d.JS.Clone=function(a){if(!(a instanceof Array)||0===a.length)return[];if(1==
|
|
||||||
a.length&&0===a[0].length)return[[]];var b=a[0]instanceof Array;b||(a=[a]);var c=a.length,e,d,g,h,l=Array(c);for(d=0;d<c;d++){e=a[d].length;h=Array(e);for(g=0;g<e;g++)h[g]={X:a[d][g].X,Y:a[d][g].Y};l[d]=h}b||(l=l[0]);return l};d.JS.Lighten=function(a,b){if(!(a instanceof Array))return[];if("number"!=typeof b||null===b)return d.Error("Tolerance is not a number in Lighten()."),d.JS.Clone(a);if(0===a.length||1==a.length&&0===a[0].length||0>b)return d.JS.Clone(a);a[0]instanceof Array||(a=[a]);var c,e,
|
|
||||||
f,g,h,l,k,m,p,q,r,s,t,u,v,x=a.length,y=b*b,w=[];for(c=0;c<x;c++)if(f=a[c],l=f.length,0!=l){for(g=0;1E6>g;g++){h=[];l=f.length;f[l-1].X!=f[0].X||f[l-1].Y!=f[0].Y?(r=1,f.push({X:f[0].X,Y:f[0].Y}),l=f.length):r=0;q=[];for(e=0;e<l-2;e++){k=f[e];p=f[e+1];m=f[e+2];u=k.X;v=k.Y;k=m.X-u;s=m.Y-v;if(0!==k||0!==s)t=((p.X-u)*k+(p.Y-v)*s)/(k*k+s*s),1<t?(u=m.X,v=m.Y):0<t&&(u+=k*t,v+=s*t);k=p.X-u;s=p.Y-v;m=k*k+s*s;m<=y&&(q[e+1]=1,e++)}h.push({X:f[0].X,Y:f[0].Y});for(e=1;e<l-1;e++)q[e]||h.push({X:f[e].X,Y:f[e].Y});
|
|
||||||
h.push({X:f[l-1].X,Y:f[l-1].Y});r&&f.pop();if(q.length)f=h;else break}l=h.length;h[l-1].X==h[0].X&&h[l-1].Y==h[0].Y&&h.pop();2<h.length&&w.push(h)}!a[0]instanceof Array&&(w=w[0]);"undefined"==typeof w&&(w=[[]]);return w};d.JS.PerimeterOfPath=function(a,b,c){if("undefined"==typeof a)return 0;var e=Math.sqrt,d=0,g,h,k=0,m=g=0;h=0;var n=a.length;if(2>n)return 0;b&&(a[n]=a[0],n++);for(;--n;)g=a[n],k=g.X,g=g.Y,h=a[n-1],m=h.X,h=h.Y,d+=e((k-m)*(k-m)+(g-h)*(g-h));b&&a.pop();return d/c};d.JS.PerimeterOfPaths=
|
|
||||||
function(a,b,c){c||(c=1);for(var e=0,f=0;f<a.length;f++)e+=d.JS.PerimeterOfPath(a[f],b,c);return e};d.JS.ScaleDownPath=function(a,b){var c,d;b||(b=1);for(c=a.length;c--;)d=a[c],d.X/=b,d.Y/=b};d.JS.ScaleDownPaths=function(a,b){var c,d,f;b||(b=1);for(c=a.length;c--;)for(d=a[c].length;d--;)f=a[c][d],f.X/=b,f.Y/=b};d.JS.ScaleUpPath=function(a,b){var c,d,f=Math.round;b||(b=1);for(c=a.length;c--;)d=a[c],d.X=f(d.X*b),d.Y=f(d.Y*b)};d.JS.ScaleUpPaths=function(a,b){var c,d,f,g=Math.round;b||(b=1);for(c=a.length;c--;)for(d=
|
|
||||||
a[c].length;d--;)f=a[c][d],f.X=g(f.X*b),f.Y=g(f.Y*b)};d.ExPolygons=function(){return[]};d.ExPolygon=function(){this.holes=this.outer=null};d.JS.AddOuterPolyNodeToExPolygons=function(a,b){var c=new d.ExPolygon;c.outer=a.Contour();var e=a.Childs(),f=e.length;c.holes=Array(f);var g,h,k,m,n;for(h=0;h<f;h++)for(g=e[h],c.holes[h]=g.Contour(),k=0,m=g.Childs(),n=m.length;k<n;k++)g=m[k],d.JS.AddOuterPolyNodeToExPolygons(g,b);b.push(c)};d.JS.ExPolygonsToPaths=function(a){var b,c,e,f,g=new d.Paths;b=0;for(e=
|
|
||||||
a.length;b<e;b++)for(g.push(a[b].outer),c=0,f=a[b].holes.length;c<f;c++)g.push(a[b].holes[c]);return g};d.JS.PolyTreeToExPolygons=function(a){var b=new d.ExPolygons,c,e,f;c=0;e=a.Childs();for(f=e.length;c<f;c++)a=e[c],d.JS.AddOuterPolyNodeToExPolygons(a,b);return b}})();
|
|
2
vendor/assets/javascripts/concavehull.min.js
vendored
2
vendor/assets/javascripts/concavehull.min.js
vendored
|
@ -1,2 +0,0 @@
|
||||||
/*! concavehull by Adam Timberlake <adam.timberlake@gmail.com> created on 2015-01-23 */
|
|
||||||
!function(a){"use strict";var b=function(a,b){var c=this.convertLatLngs(a);this.points=c.points,this.maxDistance=isFinite(b)?b:c.maxDistance+1};b.prototype={points:[],maxDistance:0,convertLatLngs:function(a){var b=0,c=a.map(function(c,d){if(c.x=c.lng,c.y=this.lat2y(c),a[d-1]){var e=this.distanceTo(c,a[d-1]);e>b&&(b=e)}return c}.bind(this));return{points:c,maxDistance:b}},distanceTo:function(b,c){var d=6378137,e=a.PI/180,f=(c.lat-b.lat)*e,g=(c.lng-b.lng)*e,h=b.lat*e,i=c.lat*e,j=a.sin(f/2),k=a.sin(g/2),l=j*j+k*k*a.cos(h)*a.cos(i);return 2*d*a.atan2(a.sqrt(l),a.sqrt(1-l))},getLatLngs:function(){if(this.length<=3)return this.points;var a=this.points.slice().sort(function(a,b){return a.y-b.y}),b=[],c=a[0],d=c,e={x:d.x,y:d.y-1};b.push(c);for(var f,g=0,h=function(a,b){return this.getAngle(d,e,b)-this.getAngle(d,e,a)}.bind(this);;){g++;for(var i=this.points.slice().sort(h),j=0,k=i.length;k>j;j++)if(this.distanceTo(d,i[j])<this.maxDistance&&!this.isIntersecting(b,i[j])){f=i[j];break}if(!f)return this.points;if(f===d)return this.points;if(b.push(f),f===c)return b;if(e=d,d=f,f=void 0,g>1e3)return this.points}},isIntersecting:function(a,b){for(var c=1,d=a.length-1;d>c;c++)if(this.intersect(a[c-1],a[c],a[d],b))return!0;return!1},intersect:function(a,b,c,d){return a.x===c.x&&a.y===c.y||b.x===d.x&&b.y===d.y||a.x===d.x&&a.y===d.y||b.x===c.x&&b.y===c.y?!1:this.ccw(a,b,c)*this.ccw(a,b,d)<=0&&this.ccw(c,d,a)*this.ccw(c,d,b)<=0},lat2y:function(b){return 180/a.PI*a.log(a.tan(a.PI/4+b.lat*(a.PI/180)/2))},ccw:function(a,b,c){var d=1e-13,e=b.x-a.x,f=b.y-a.y,g=c.x-a.x,h=c.y-a.y,i=e*h-f*g;return i>d?1:-d>i?-1:-d>e*g||-d>f*h?-1:g*g+h*h+d>e*e+f*f?1:0},getAngle:function(b,c,d){if(d.x===b.x&&d.y===b.y)return-9e3;if(d.x===c.x&&d.y===c.y)return-360;var e,f={x:b.x-c.x,y:b.y-c.y},g={x:d.x-b.x,y:d.y-b.y},h=f.x*g.y-g.x*f.y,i=f.x*g.x+f.y*g.y;return 0===i?(h>0&&(e=90),0>h&&(e=-90)):(e=180*a.atan(h/i)/a.PI,0>i&&(h>=0&&(e+=180),0>h&&(e-=180))),360===e&&(e=0),180-e}},function(){return"undefined"!=typeof module&&module.exports?void(module.exports=b):"function"==typeof define&&define.amd?void define(function(){return b}):void(window.ConcaveHull=b)}()}(Math);
|
|
5
vendor/assets/javascripts/d3.min.js
vendored
5
vendor/assets/javascripts/d3.min.js
vendored
File diff suppressed because one or more lines are too long
149
vendor/assets/javascripts/franceconnect.js
vendored
149
vendor/assets/javascripts/franceconnect.js
vendored
|
@ -1,149 +0,0 @@
|
||||||
var franceConnectKit = {};
|
|
||||||
|
|
||||||
(function (window) {
|
|
||||||
var fconnect = {
|
|
||||||
tracesUrl: '/traces',
|
|
||||||
aboutUrl: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
franceConnectKit.init = function () {
|
|
||||||
//initCurrentHostnameSource();
|
|
||||||
//includeFCCss();
|
|
||||||
|
|
||||||
fconnect.currentHost = 'fcp.integ01.dev-franceconnect.fr';
|
|
||||||
|
|
||||||
if (window.location.hostname == 'www.demarches-simplifiees.fr')
|
|
||||||
fconnect.currentHost = 'app.franceconnect.gouv.fr';
|
|
||||||
|
|
||||||
var fconnectProfile = document.getElementById('fconnect-profile');
|
|
||||||
if (fconnectProfile) {
|
|
||||||
var linkAccess = document.querySelector('#fconnect-profile > a');
|
|
||||||
var fcLogoutUrl = fconnectProfile.getAttribute('data-fc-logout-url');
|
|
||||||
var access = createFCAccessElement(fcLogoutUrl);
|
|
||||||
fconnectProfile.appendChild(access);
|
|
||||||
linkAccess.onclick = toggleElement.bind(access);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var document = window.document;
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function () {
|
|
||||||
franceConnectKit.init();
|
|
||||||
});
|
|
||||||
|
|
||||||
function initCurrentHostnameSource() {
|
|
||||||
var currentScript = document.querySelector('script[src^="/assets/franceconnect"]').getAttribute('src');
|
|
||||||
var parseUrl = currentScript.split('/');
|
|
||||||
fconnect.currentHost = parseUrl[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
function includeFCCss() {
|
|
||||||
var ss = document.styleSheets;
|
|
||||||
for (var i = 0, max = ss.length; i < max; i++) {
|
|
||||||
if (ss[i].href == 'http://' + fconnect.currentHost + '/stylesheets/franceconnect.css' || ss[i].href == 'https://' + fconnect.currentHost + '/stylesheets/franceconnect.css')
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var linkCss = document.createElement('link');
|
|
||||||
linkCss.rel = 'stylesheet';
|
|
||||||
linkCss.href = '//' + fconnect.currentHost + '/stylesheets/franceconnect.css';
|
|
||||||
linkCss.type = 'text/css';
|
|
||||||
linkCss.media = 'screen';
|
|
||||||
|
|
||||||
document.getElementsByTagName('head')[0].appendChild(linkCss);
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleElement(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
if (this.style.display === "block") {
|
|
||||||
this.style.display = "none";
|
|
||||||
} else {
|
|
||||||
this.style.display = "block";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeFCPopin(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
fconnect.popin.className = 'fade-out';
|
|
||||||
setTimeout(function () {
|
|
||||||
document.body.removeChild(fconnect.popin);
|
|
||||||
}, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openFCPopin() {
|
|
||||||
fconnect.popin = document.createElement('div');
|
|
||||||
fconnect.popin.id = 'fc-background';
|
|
||||||
|
|
||||||
var iframe = createFCIframe();
|
|
||||||
|
|
||||||
document.body.appendChild(fconnect.popin);
|
|
||||||
|
|
||||||
fconnect.popin.appendChild(iframe);
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
fconnect.popin.className = 'fade-in';
|
|
||||||
}, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
function createFCIframe() {
|
|
||||||
var iframe = document.createElement("iframe");
|
|
||||||
iframe.setAttribute('id', 'fconnect-iframe');
|
|
||||||
iframe.frameBorder = 0;
|
|
||||||
iframe.name = 'fconnect-iframe';
|
|
||||||
return iframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createFCAccessElement(logoutUrl) {
|
|
||||||
var access = document.createElement('div');
|
|
||||||
access.id = 'fconnect-access';
|
|
||||||
access.innerHTML = '<h5>Vous êtes identifié grâce à FranceConnect</h5>';
|
|
||||||
access.appendChild(createAboutLink());
|
|
||||||
access.appendChild(document.createElement('hr'));
|
|
||||||
access.appendChild(createHistoryLink());
|
|
||||||
access.appendChild(createLogoutElement(logoutUrl));
|
|
||||||
return access;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createHistoryLink() {
|
|
||||||
|
|
||||||
var historyLink = document.createElement('a');
|
|
||||||
historyLink.target = 'fconnect-iframe';
|
|
||||||
historyLink.href = '//' + fconnect.currentHost + fconnect.tracesUrl;
|
|
||||||
historyLink.onclick = openFCPopin;
|
|
||||||
historyLink.innerHTML = 'Historique des connexions/échanges de données';
|
|
||||||
|
|
||||||
return historyLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createAboutLink() {
|
|
||||||
var aboutLink = document.createElement('a');
|
|
||||||
aboutLink.href = fconnect.aboutUrl ? '//' + fconnect.currentHost + fconnect.aboutUrl : '#';
|
|
||||||
if (fconnect.aboutUrl) {
|
|
||||||
aboutLink.target = 'fconnect-iframe';
|
|
||||||
aboutLink.onclick = openFCPopin;
|
|
||||||
}
|
|
||||||
aboutLink.innerHTML = 'Qu\'est-ce-que FranceConnect ?';
|
|
||||||
|
|
||||||
return aboutLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createLogoutElement(logoutUrl) {
|
|
||||||
var elm = document.createElement('div');
|
|
||||||
elm.className = 'logout';
|
|
||||||
elm.innerHTML = '<a class="btn btn-default" href="' + logoutUrl + '">Se déconnecter</a>';
|
|
||||||
return elm;
|
|
||||||
}
|
|
||||||
|
|
||||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
|
||||||
var eventer = window[eventMethod];
|
|
||||||
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
|
|
||||||
|
|
||||||
// Listen to message from child window
|
|
||||||
eventer(messageEvent, function (e) {
|
|
||||||
var key = e.message ? "message" : "data";
|
|
||||||
var data = e[key];
|
|
||||||
if (data === 'close_popup') {
|
|
||||||
closeFCPopin(e);
|
|
||||||
}
|
|
||||||
}, false);
|
|
||||||
})(this);
|
|
6
vendor/assets/javascripts/leaflet.1.1.0.js
vendored
6
vendor/assets/javascripts/leaflet.1.1.0.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
9
vendor/assets/javascripts/leaflet.js
vendored
9
vendor/assets/javascripts/leaflet.js
vendored
File diff suppressed because one or more lines are too long
92
vendor/assets/javascripts/turf-area.js
vendored
92
vendor/assets/javascripts/turf-area.js
vendored
|
@ -1,92 +0,0 @@
|
||||||
var geometryArea = geometry;
|
|
||||||
|
|
||||||
turf_area = function(_) {
|
|
||||||
if (_.type === 'FeatureCollection') {
|
|
||||||
for (var i = 0, sum = 0; i < _.features.length; i++) {
|
|
||||||
if (_.features[i].geometry) {
|
|
||||||
sum += geometryArea(_.features[i].geometry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sum;
|
|
||||||
} else if (_.type === 'Feature') {
|
|
||||||
return geometryArea(_.geometry);
|
|
||||||
} else {
|
|
||||||
return geometryArea(_);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
RADIUS = 6378137;
|
|
||||||
FLATTENING = 1/298.257223563;
|
|
||||||
POLAR_RADIUS = 6356752.3142;
|
|
||||||
|
|
||||||
ring = ringArea;
|
|
||||||
|
|
||||||
function geometry(_) {
|
|
||||||
var area = 0, i;
|
|
||||||
switch (_.type) {
|
|
||||||
case 'Polygon':
|
|
||||||
return polygonArea(_.coordinates);
|
|
||||||
case 'MultiPolygon':
|
|
||||||
for (i = 0; i < _.coordinates.length; i++) {
|
|
||||||
area += polygonArea(_.coordinates[i]);
|
|
||||||
}
|
|
||||||
return area;
|
|
||||||
case 'Point':
|
|
||||||
case 'MultiPoint':
|
|
||||||
case 'LineString':
|
|
||||||
case 'MultiLineString':
|
|
||||||
return 0;
|
|
||||||
case 'GeometryCollection':
|
|
||||||
for (i = 0; i < _.geometries.length; i++) {
|
|
||||||
area += geometry(_.geometries[i]);
|
|
||||||
}
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function polygonArea(coords) {
|
|
||||||
var area = 0;
|
|
||||||
if (coords && coords.length > 0) {
|
|
||||||
area += Math.abs(ringArea(coords[0]));
|
|
||||||
for (var i = 1; i < coords.length; i++) {
|
|
||||||
area -= Math.abs(ringArea(coords[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ringArea(coords) {
|
|
||||||
var p1, p2, p3, lowerIndex, middleIndex, upperIndex,
|
|
||||||
area = 0,
|
|
||||||
coordsLength = coords.length;
|
|
||||||
|
|
||||||
if (coordsLength > 2) {
|
|
||||||
for (i = 0; i < coordsLength; i++) {
|
|
||||||
if (i === coordsLength - 2) {// i = N-2
|
|
||||||
lowerIndex = coordsLength - 2;
|
|
||||||
middleIndex = coordsLength -1;
|
|
||||||
upperIndex = 0;
|
|
||||||
} else if (i === coordsLength - 1) {// i = N-1
|
|
||||||
lowerIndex = coordsLength - 1;
|
|
||||||
middleIndex = 0;
|
|
||||||
upperIndex = 1;
|
|
||||||
} else { // i = 0 to N-3
|
|
||||||
lowerIndex = i;
|
|
||||||
middleIndex = i+1;
|
|
||||||
upperIndex = i+2;
|
|
||||||
}
|
|
||||||
p1 = coords[lowerIndex];
|
|
||||||
p2 = coords[middleIndex];
|
|
||||||
p3 = coords[upperIndex];
|
|
||||||
area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));
|
|
||||||
}
|
|
||||||
|
|
||||||
area = area * RADIUS * RADIUS / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
return area;
|
|
||||||
}
|
|
||||||
|
|
||||||
function rad(_) {
|
|
||||||
return _ * Math.PI / 180;
|
|
||||||
}
|
|
|
@ -45,8 +45,10 @@
|
||||||
.leaflet-container .leaflet-marker-pane img,
|
.leaflet-container .leaflet-marker-pane img,
|
||||||
.leaflet-container .leaflet-shadow-pane img,
|
.leaflet-container .leaflet-shadow-pane img,
|
||||||
.leaflet-container .leaflet-tile-pane img,
|
.leaflet-container .leaflet-tile-pane img,
|
||||||
.leaflet-container img.leaflet-image-layer {
|
.leaflet-container img.leaflet-image-layer,
|
||||||
|
.leaflet-container .leaflet-tile {
|
||||||
max-width: none !important;
|
max-width: none !important;
|
||||||
|
max-height: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.leaflet-container.leaflet-touch-zoom {
|
.leaflet-container.leaflet-touch-zoom {
|
||||||
|
@ -55,6 +57,9 @@
|
||||||
}
|
}
|
||||||
.leaflet-container.leaflet-touch-drag {
|
.leaflet-container.leaflet-touch-drag {
|
||||||
-ms-touch-action: pinch-zoom;
|
-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 {
|
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||||
-ms-touch-action: none;
|
-ms-touch-action: none;
|
||||||
|
@ -164,7 +169,6 @@
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
-webkit-transition: opacity 0.2s linear;
|
-webkit-transition: opacity 0.2s linear;
|
||||||
-moz-transition: opacity 0.2s linear;
|
-moz-transition: opacity 0.2s linear;
|
||||||
-o-transition: opacity 0.2s linear;
|
|
||||||
transition: opacity 0.2s linear;
|
transition: opacity 0.2s linear;
|
||||||
}
|
}
|
||||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||||
|
@ -181,14 +185,12 @@
|
||||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
-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);
|
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
|
||||||
transition: 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-zoom-anim .leaflet-tile,
|
||||||
.leaflet-pan-anim .leaflet-tile {
|
.leaflet-pan-anim .leaflet-tile {
|
||||||
-webkit-transition: none;
|
-webkit-transition: none;
|
||||||
-moz-transition: none;
|
-moz-transition: none;
|
||||||
-o-transition: none;
|
|
||||||
transition: none;
|
transition: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,6 +207,7 @@
|
||||||
.leaflet-grab {
|
.leaflet-grab {
|
||||||
cursor: -webkit-grab;
|
cursor: -webkit-grab;
|
||||||
cursor: -moz-grab;
|
cursor: -moz-grab;
|
||||||
|
cursor: grab;
|
||||||
}
|
}
|
||||||
.leaflet-crosshair,
|
.leaflet-crosshair,
|
||||||
.leaflet-crosshair .leaflet-interactive {
|
.leaflet-crosshair .leaflet-interactive {
|
||||||
|
@ -220,6 +223,7 @@
|
||||||
cursor: move;
|
cursor: move;
|
||||||
cursor: -webkit-grabbing;
|
cursor: -webkit-grabbing;
|
||||||
cursor: -moz-grabbing;
|
cursor: -moz-grabbing;
|
||||||
|
cursor: grabbing;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* marker & overlays interactivity */
|
/* marker & overlays interactivity */
|
||||||
|
@ -366,6 +370,7 @@
|
||||||
}
|
}
|
||||||
.leaflet-control-layers-scrollbar {
|
.leaflet-control-layers-scrollbar {
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
}
|
}
|
||||||
.leaflet-control-layers-selector {
|
.leaflet-control-layers-selector {
|
||||||
|
@ -489,7 +494,6 @@
|
||||||
-webkit-transform: rotate(45deg);
|
-webkit-transform: rotate(45deg);
|
||||||
-moz-transform: rotate(45deg);
|
-moz-transform: rotate(45deg);
|
||||||
-ms-transform: rotate(45deg);
|
-ms-transform: rotate(45deg);
|
||||||
-o-transform: rotate(45deg);
|
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
}
|
}
|
||||||
.leaflet-popup-content-wrapper,
|
.leaflet-popup-content-wrapper,
|
56
yarn.lock
56
yarn.lock
|
@ -127,6 +127,26 @@
|
||||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
||||||
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
|
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
|
||||||
|
|
||||||
|
"@turf/area@^6.0.1":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/area/-/area-6.0.1.tgz#50ed63c70ef2bdb72952384f1594319d94f3b051"
|
||||||
|
integrity sha512-Zv+3N1ep9P5JvR0YOYagLANyapGWQBh8atdeR3bKpWcigVXFsEKNUw03U/5xnh+cKzm7yozHD6MFJkqQv55y0g==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
|
"@turf/helpers@6.x":
|
||||||
|
version "6.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.1.4.tgz#d6fd7ebe6782dd9c87dca5559bda5c48ae4c3836"
|
||||||
|
integrity sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==
|
||||||
|
|
||||||
|
"@turf/meta@6.x":
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf"
|
||||||
|
integrity sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
|
||||||
"@types/commander@^2.11.0":
|
"@types/commander@^2.11.0":
|
||||||
version "2.12.2"
|
version "2.12.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae"
|
resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae"
|
||||||
|
@ -2052,6 +2072,11 @@ cli-width@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||||
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
|
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
|
||||||
|
|
||||||
|
clipper-lib@~6.2.1:
|
||||||
|
version "6.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/clipper-lib/-/clipper-lib-6.2.1.tgz#266d8ec7575c589f05f23e9cd003de50e23117b6"
|
||||||
|
integrity sha1-Jm2Ox1dcWJ8F8j6c0APeUOIxF7Y=
|
||||||
|
|
||||||
cliui@^3.2.0:
|
cliui@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
|
||||||
|
@ -5226,6 +5251,11 @@ jsprim@^1.2.2:
|
||||||
json-schema "0.2.3"
|
json-schema "0.2.3"
|
||||||
verror "1.10.0"
|
verror "1.10.0"
|
||||||
|
|
||||||
|
jsts@1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/jsts/-/jsts-1.1.2.tgz#d205d2cc8393081d9e484ae36282110695edc230"
|
||||||
|
integrity sha1-0gXSzIOTCB2eSErjYoIRBpXtwjA=
|
||||||
|
|
||||||
junit-report-builder@^1.3.1:
|
junit-report-builder@^1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/junit-report-builder/-/junit-report-builder-1.3.1.tgz#65923e2587a54762e8fb91505ea5604dba519d55"
|
resolved "https://registry.yarnpkg.com/junit-report-builder/-/junit-report-builder-1.3.1.tgz#65923e2587a54762e8fb91505ea5604dba519d55"
|
||||||
|
@ -5305,6 +5335,15 @@ lead@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
flush-write-stream "^1.0.2"
|
flush-write-stream "^1.0.2"
|
||||||
|
|
||||||
|
leaflet-freedraw@^2.9.0:
|
||||||
|
version "2.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/leaflet-freedraw/-/leaflet-freedraw-2.9.0.tgz#b1e84f5907da379e892e96b7130d719c929a0c4b"
|
||||||
|
integrity sha512-i7/cBkG+mbpC0LBM4i4yIoBdsDfdvEpeSjWhLrzkJNH5IMCJuJTs8vTybFRvCNLeYbymMS8figeWpMALLH+kYQ==
|
||||||
|
dependencies:
|
||||||
|
clipper-lib "~6.2.1"
|
||||||
|
turf-intersect "~3.0.12"
|
||||||
|
turf-polygon "~1.0.3"
|
||||||
|
|
||||||
leaflet@^1.3.4:
|
leaflet@^1.3.4:
|
||||||
version "1.3.4"
|
version "1.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.3.4.tgz#7f006ea5832603b53d7269ef5c595fd773060a40"
|
resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.3.4.tgz#7f006ea5832603b53d7269ef5c595fd773060a40"
|
||||||
|
@ -7509,6 +7548,11 @@ rails-ujs@^5.2.1:
|
||||||
resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.1.tgz#2869c6d54fdfefac3aaa257f4efe211d8f5a7169"
|
resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.1.tgz#2869c6d54fdfefac3aaa257f4efe211d8f5a7169"
|
||||||
integrity sha512-kOsSdmBATcilfMzBCYgbefQ+5eUG6BAr9rDy+GC09Cvqx0017XBVp1Xu/Ksvwr6r7fHzgNkEUpKnQoOflpNz+A==
|
integrity sha512-kOsSdmBATcilfMzBCYgbefQ+5eUG6BAr9rDy+GC09Cvqx0017XBVp1Xu/Ksvwr6r7fHzgNkEUpKnQoOflpNz+A==
|
||||||
|
|
||||||
|
ramda@^0.25.0:
|
||||||
|
version "0.25.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9"
|
||||||
|
integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==
|
||||||
|
|
||||||
randomatic@^3.0.0:
|
randomatic@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
|
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
|
||||||
|
@ -8940,6 +8984,18 @@ turbolinks@^5.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c"
|
resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c"
|
||||||
integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw==
|
integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw==
|
||||||
|
|
||||||
|
turf-intersect@~3.0.12:
|
||||||
|
version "3.0.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/turf-intersect/-/turf-intersect-3.0.12.tgz#c0d7fb305843a19275670057a39d268b17830d83"
|
||||||
|
integrity sha1-wNf7MFhDoZJ1ZwBXo50mixeDDYM=
|
||||||
|
dependencies:
|
||||||
|
jsts "1.1.2"
|
||||||
|
|
||||||
|
turf-polygon@~1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/turf-polygon/-/turf-polygon-1.0.3.tgz#671dd34849864509281af18e236f67a7448c6363"
|
||||||
|
integrity sha1-Zx3TSEmGRQkoGvGOI29np0SMY2M=
|
||||||
|
|
||||||
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
||||||
version "0.14.5"
|
version "0.14.5"
|
||||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||||
|
|
Loading…
Reference in a new issue