From a8008dee88cf144915be8c794feeb69667464170 Mon Sep 17 00:00:00 2001 From: a-ill Date: Thu, 20 Jul 2023 00:15:12 +0300 Subject: [PATCH] Added a data entry system at /groups-add --- Server/app/resources/basic/BasicController.jl | 23 +- .../resources/basic/views/groups_add.jl.html | 1 + Server/app/svelte/public/css/common.css | 2 +- Server/app/svelte/public/js/communes.js | 11 +- Server/app/svelte/public/js/coops.js | 14 +- Server/app/svelte/public/js/groups.js | 54 +- .../svelte/public/js/libraries/serverTools.js | 15 +- Server/app/svelte/public/js/parties.js | 10 +- .../svelte/public/locales/en/countries.json | 28 +- .../svelte/public/locales/ru/countries.json | 2 +- Server/app/svelte/rollup.config.js | 1 - .../app/svelte/src/communes-component.svelte | 16 +- .../svelte/src/cooperatives-component.svelte | 18 +- .../svelte/src/groups-add-component.svelte | 248 +++ Server/app/svelte/src/groups-component.svelte | 24 +- .../app/svelte/src/join-us-component.svelte | 12 +- .../app/svelte/src/landing-component.svelte | 12 +- .../app/svelte/src/parties-component.svelte | 20 +- .../app/svelte/src/partners-component.svelte | 14 +- .../2022026611846565_create_table_groups.jl | 24 + Server/lib/DatabaseSupport.jl | 4 +- Server/public/css/common.css | 2 +- Server/public/favicon.png | Bin 3881 -> 2163 bytes Server/public/favicon4.png | Bin 0 -> 3881 bytes Server/public/img/common/flag.png | Bin 61444 -> 56172 bytes Server/public/img/common/flag3.png | Bin 0 -> 61444 bytes .../img/common/markers/marker-black.png | Bin 0 -> 3183 bytes Server/public/js/communes.js | 11 +- .../js/components/communes-component.js | 599 ++++++- .../public/js/components/compass-component.js | 715 +++++++- Server/public/js/components/cookies-dialog.js | 100 +- .../js/components/cooperatives-component.js | 738 +++++++- .../public/js/components/footer-component.js | 348 +++- .../js/components/groups-add-component.js | 476 ++++++ .../public/js/components/groups-component.js | 577 ++++++- .../public/js/components/join-us-component.js | 597 ++++++- .../public/js/components/landing-component.js | 589 ++++++- .../public/js/components/legend-component.js | 363 +++- .../js/components/loadscreen-component.js | 116 +- .../js/components/manifesto-component.js | 1491 ++++++++++++++++- Server/public/js/components/map-component.js | 176 +- .../public/js/components/navbar-component.js | 639 ++++++- Server/public/js/components/pane-aligner.js | 305 +++- .../public/js/components/parties-component.js | 638 ++++++- .../js/components/partners-component.js | 612 ++++++- .../public/js/components/select-component.js | 594 ++++++- .../public/js/components/switch-component.js | 210 ++- Server/public/js/coops.js | 14 +- Server/public/js/groups.js | 54 +- Server/public/js/libraries/serverTools.js | 15 +- Server/public/js/parties.js | 10 +- Server/public/locales/countries.csv | 0 Server/public/locales/en/countries.json | 28 +- Server/public/locales/ru/countries.json | 2 +- Server/routes.jl | 4 + 55 files changed, 10348 insertions(+), 228 deletions(-) create mode 100644 Server/app/resources/basic/views/groups_add.jl.html create mode 100644 Server/app/svelte/src/groups-add-component.svelte create mode 100644 Server/db/migrations/2022026611846565_create_table_groups.jl create mode 100644 Server/public/favicon4.png create mode 100644 Server/public/img/common/flag3.png create mode 100644 Server/public/img/common/markers/marker-black.png create mode 100644 Server/public/js/components/groups-add-component.js create mode 100644 Server/public/locales/countries.csv diff --git a/Server/app/resources/basic/BasicController.jl b/Server/app/resources/basic/BasicController.jl index 9670be4..8028641 100644 --- a/Server/app/resources/basic/BasicController.jl +++ b/Server/app/resources/basic/BasicController.jl @@ -11,6 +11,7 @@ dict_layouts = Dict( :manifesto => generate_layout_html("main",controller,"manifesto"), :join_us => generate_layout_html("main",controller,"join_us",libraries=["Leaflet"]), :groups => generate_layout_html("main",controller,"groups",libraries=["Leaflet"]), + :groups_add => generate_layout_html("main",controller,"groups_add",libraries=["Leaflet"]), :cooperatives => generate_layout_html("main",controller,"cooperatives",libraries=["Leaflet"]), :communes => generate_layout_html("main",controller,"communes",libraries=["Leaflet"]), :parties => generate_layout_html("main",controller,"parties",libraries=["Leaflet"]), @@ -162,6 +163,14 @@ function groups() ) end +function groups_add() + locale = get_locale() + html(:basic,:groups_add, layout = dict_layouts[:groups_add], context = @__MODULE__, + title = groups_info[locale][:title], + description = groups_info[locale][:description] + ) +end + function cooperatives() locale = get_locale() html(:basic,:cooperatives, layout = dict_layouts[:cooperatives], context = @__MODULE__, @@ -202,4 +211,16 @@ function political_compass() ) end -end \ No newline at end of file +function groups_add_post() + data = collect(JSON3.read(rawpayload())) + push!(data,1) + dict = Dict(zip(["country","state","town","latitude","longitude","contact","members"],data)) + insert_into_table("groups",dict) +end + +end + +#= +json_string = """["United States","California",null,38.24508142880928,-120.58593750000001,""]""" +data = JSON3.read(json_string)´ +=# \ No newline at end of file diff --git a/Server/app/resources/basic/views/groups_add.jl.html b/Server/app/resources/basic/views/groups_add.jl.html new file mode 100644 index 0000000..5a45a39 --- /dev/null +++ b/Server/app/resources/basic/views/groups_add.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/svelte/public/css/common.css b/Server/app/svelte/public/css/common.css index 7e695db..4920c69 100644 --- a/Server/app/svelte/public/css/common.css +++ b/Server/app/svelte/public/css/common.css @@ -310,7 +310,7 @@ input[type="text"],input[type="email"],input[type="password"],input[type="number border-color: black; border: black solid 0.063rem; padding-left: 0.5rem; - font: 1.3rem var(--serif, serif); + font: 1.15rem var(--serif, serif); } input[type="text"] { diff --git a/Server/app/svelte/public/js/communes.js b/Server/app/svelte/public/js/communes.js index c7a748e..b3165fa 100644 --- a/Server/app/svelte/public/js/communes.js +++ b/Server/app/svelte/public/js/communes.js @@ -39,7 +39,7 @@ for (let c of communes) { export let communesMarkersLayer = L.layerGroup() -export function addMarkersCommunes(map,content) { +export function addMarkersCommunes(map,content,locale) { for (let g of communes) { let coordinates let text = ""+content["Commune"]+"
" @@ -50,7 +50,14 @@ export function addMarkersCommunes(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } + text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/app/svelte/public/js/coops.js b/Server/app/svelte/public/js/coops.js index 1b6038b..8338fcc 100644 --- a/Server/app/svelte/public/js/coops.js +++ b/Server/app/svelte/public/js/coops.js @@ -2,7 +2,7 @@ export let coops = [ { logo: "chiron_logo", name: "Chiron Health", - location: [["Estonia","KohtlaJarve"],[59.41038769769602, 27.287802936242034]], + location: [["Estonia","Kohtla-Järve"],[59.41038769769602, 27.287802936242034]], market: "wellnessAndHealth", workers: 2, status: "inDevelopment", @@ -13,7 +13,7 @@ export let coops = [ { logo: "kuusk_logo", name: "Kuusk", - location: [["Estonia","KohtlaJarve"],[59.399947051803004, 27.277159931677055]], + location: [["Estonia","Kohtla-Järve"],[59.399947051803004, 27.277159931677055]], market: "herbalTeas", workers: 1, status: "inDevelopment", @@ -36,7 +36,7 @@ for (let g of coops) { export let coopsMarkersLayer = L.layerGroup() -export function addMarkersCoops(map,content) { +export function addMarkersCoops(map,content,locale) { for (let g of coops) { let coordinates let text = ""+content["Cooperative"]+"
" @@ -56,7 +56,13 @@ export function addMarkersCoops(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/app/svelte/public/js/groups.js b/Server/app/svelte/public/js/groups.js index 3aef913..95b2c52 100644 --- a/Server/app/svelte/public/js/groups.js +++ b/Server/app/svelte/public/js/groups.js @@ -25,7 +25,7 @@ export let groups = [ contact: ["https://discord.gg/Qk8KUk787z","DiscordInviteLink"] }, { - location: [["Estonia","KohtlaJarve"], [59.40629447076191, 27.280605339416322]], + location: [["Estonia","Kohtla-Järve"], [59.40629447076191, 27.280605339416322]], members: 3, contact: ["https://discord.gg/Qk8KUk787z","DiscordInviteLink"] }, @@ -93,7 +93,7 @@ let groupsMarkersLayerIn = L.layerGroup() let contactGeneral =["https://discord.gg/4BUau4AZre","DiscordInviteLink"] -function addMarkersToLayer(g,layer,content) { +function addMarkersToLayer(g,layer,content,locale) { let coordinates let text = ""+content["Group"]+"
" for (let field in g) { @@ -103,7 +103,13 @@ function addMarkersToLayer(g,layer,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } text += fieldText + locationString + "
" coordinates = g[field][1] } @@ -123,15 +129,15 @@ function addMarkersToLayer(g,layer,content) { marker.addTo(layer).bindPopup(text) } -export function addMarkersGroups(map,content) { +export function addMarkersGroups(map,content,locale) { for (let g of groups) { - addMarkersToLayer(g,groupsMarkersLayerIn,content) + addMarkersToLayer(g,groupsMarkersLayerIn,content,locale) } for (let gs of Object.values(groupsByCountry)) { if (gs.length==1) { let g = {...gs[0]} g.location[0] = [g.location[0][0]] - addMarkersToLayer(g,groupsMarkersLayerOut,content) + addMarkersToLayer(g,groupsMarkersLayerOut,content,locale) } else { let locationName = [gs[0].location[0][0]] @@ -153,7 +159,7 @@ export function addMarkersGroups(map,content) { members: members, contact: contact } - addMarkersToLayer(gNew,groupsMarkersLayerOut,content) + addMarkersToLayer(gNew,groupsMarkersLayerOut,content,locale) } } groupsMarkersLayerOut.addTo(groupsMarkersLayer) @@ -172,37 +178,5 @@ function onZoomEnd(map) { groupsMarkersLayerIn.addTo(groupsMarkersLayer) } } -/* -function reverseGeocode(latitude, longitude) { - let url = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${latitude}&lon=${longitude}`; - - // Create a new XMLHttpRequest object - let xhr = new XMLHttpRequest(); - - // Set up the AJAX request - xhr.open('GET', url, true); - - // Define the onload function - xhr.onload = function() { - if (xhr.status === 200) { - // Parse the response JSON - let response = JSON.parse(xhr.responseText); - - // Extract the address information from the response - let address = response.address; - let city = address.city || address.town || address.village || address.hamlet; - let country = address.country; - let fullAddress = city + ', ' + country; - - // Do something with the address - console.log(fullAddress); - } - }; - - // Send the AJAX request - xhr.send(); - } + -let latitude = 123.456; // Replace with your latitude -let longitude = 78.901; // Replace with your longitude -reverseGeocode(latitude, longitude);*/ \ No newline at end of file diff --git a/Server/app/svelte/public/js/libraries/serverTools.js b/Server/app/svelte/public/js/libraries/serverTools.js index 76df3ab..6e85d01 100644 --- a/Server/app/svelte/public/js/libraries/serverTools.js +++ b/Server/app/svelte/public/js/libraries/serverTools.js @@ -1,17 +1,17 @@ // Get data from server export function getData(path,callback) { - var xhr = new XMLHttpRequest(); - xhr.overrideMimeType("application/json"); - xhr.open('GET', path, true); + let xhr = new XMLHttpRequest(); + xhr.overrideMimeType("application/json") + xhr.open('GET', path, true) xhr.onreadystatechange = function () { - if (xhr.readyState == 4 && xhr.status == "200") { + if (xhr.readyState == 4 && xhr.status == "200") { if (callback !== undefined) { - callback(xhr.responseText); + callback(xhr.responseText) } - } + } }; - xhr.send(null); + xhr.send() } // Parse JSON from given path into a given variable under a given key @@ -35,6 +35,7 @@ export function sendData(route,data,callback) { callback(xhr.responseText) } } else { + console.log("Request gave an error") // Oh no! There has been an error with the request! } } diff --git a/Server/app/svelte/public/js/parties.js b/Server/app/svelte/public/js/parties.js index 22a775b..5921eb9 100644 --- a/Server/app/svelte/public/js/parties.js +++ b/Server/app/svelte/public/js/parties.js @@ -22,7 +22,7 @@ for (let g of parties) { export let partiesMarkersLayer = L.layerGroup() -export function addMarkersParties(map,content) { +export function addMarkersParties(map,content,locale) { for (let g of parties) { let coordinates let text = ""+content["Party"]+"
" @@ -42,7 +42,13 @@ export function addMarkersParties(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location + let locationString + if (locale=="en") { + locationString = location + } + else { + locationString = content[location] + } text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/app/svelte/public/locales/en/countries.json b/Server/app/svelte/public/locales/en/countries.json index 3680dc3..8919b1b 100644 --- a/Server/app/svelte/public/locales/en/countries.json +++ b/Server/app/svelte/public/locales/en/countries.json @@ -1,29 +1,3 @@ { - "map-prompt": "Want to appear on our map? Contact us!", - "Online": "Online", - "Denmark": "Denmark", - "Estonia": "Estonia", - "Greece": "Greece", - "Latvia": "Latvia", - "Canada": "Canada", - "Germany": "Germany", - "Copenhagen": "Copenhagen", - "Ireland": "Ireland", - "USA": "USA", - "Bulgaria": "Bulgaria", - "Colorado": "Colorado", - "Georgia": "Georgia", - "Ohio": "Ohio", - "Montreal": "Montreal", - "Kolding": "Kolding", - "KohtlaJarve": "Kohtla-Järve", - "Athens": "Athens", - "Riga": "Riga", - "Halifax": "Halifax", - "Wiesbaden": "Wiesbaden", - "Florida": "Florida", - "Tallinn": "Tallinn", - "Varna": "Varna", - "Louisville": "Louisville", - "Toronto": "Toronto" + "map-prompt": "Want to appear on our map? Contact us!" } \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/countries.json b/Server/app/svelte/public/locales/ru/countries.json index 5cf1964..08eec1d 100644 --- a/Server/app/svelte/public/locales/ru/countries.json +++ b/Server/app/svelte/public/locales/ru/countries.json @@ -15,7 +15,7 @@ "Ohio": "Огайо", "Copenhagen": "Копенгаген", "Kolding": "Колдинг", - "KohtlaJarve": "Кохтла-Ярве", + "Kohtla-Järve": "Кохтла-Ярве", "Athens": "Афины", "Riga": "Рига", "Halifax": "Галифакс", diff --git a/Server/app/svelte/rollup.config.js b/Server/app/svelte/rollup.config.js index 8e3d30e..bade40b 100644 --- a/Server/app/svelte/rollup.config.js +++ b/Server/app/svelte/rollup.config.js @@ -31,7 +31,6 @@ function serve() { } }; } - const walkSync = require("walk-sync"); const paths = walkSync("./src", {globs: ["**/*.svelte"]}).map(x => "src/"+x) diff --git a/Server/app/svelte/src/communes-component.svelte b/Server/app/svelte/src/communes-component.svelte index 340e8b7..e710735 100644 --- a/Server/app/svelte/src/communes-component.svelte +++ b/Server/app/svelte/src/communes-component.svelte @@ -17,9 +17,17 @@ loadLocaleContent(content,"countries",loaded) let locale = loadLocaleContent(content,"communes-component",loaded) - function mapCallbackCommunes(createMap,content) { + function mapCallbackCommunes(createMap,content,locale) { let map = createMap([22, 0],2) - addMarkersCommunes(map,content) + addMarkersCommunes(map,content,locale) + } + + function getCountry(name) { + return locale=="en" ? name : $content[name] + } + + function getAddress(group) { + return group.location[0].map(x => locale=="en" ? x : $content[x]).join(", ") } onMount(() => { @@ -39,11 +47,11 @@ mapCallbackCommunes(createMap,$content,locale)}>

{$content["map-prompt"]}

{#each Object.entries(communesByCountry) as [name,communes]} -

{$content[name]}

+

{getCountry(name)}

{#each communes as commune}
-

{$content.location}: {commune.location[0].map(x => $content[x]).join(", ")}

+

{$content.location}: {getAddress(commune)}

{$content.status}: {$content[commune.status]}

{$content.members}: {commune.members}

{$content.contact}: {$content[commune.contact[1]]}

diff --git a/Server/app/svelte/src/cooperatives-component.svelte b/Server/app/svelte/src/cooperatives-component.svelte index 0647983..1e255d5 100644 --- a/Server/app/svelte/src/cooperatives-component.svelte +++ b/Server/app/svelte/src/cooperatives-component.svelte @@ -14,12 +14,20 @@ let loaded = writable(0) let content = writable({}) - loadLocaleContent(content,"countries",loaded) - let locale = loadLocaleContent(content,"cooperatives-component",loaded) + let locale = loadLocaleContent(content,"countries",loaded) + loadLocaleContent(content,"cooperatives-component",loaded) function mapCallbackCoops(createMap,content) { let map = createMap([22, 0],2) - addMarkersCoops(map,content) + addMarkersCoops(map,content,locale) + } + + function getCountry(name) { + return locale=="en" ? name : $content[name] + } + + function getAddress(group) { + return group.location[0].map(x => locale=="en" ? x : $content[x]).join(", ") } onMount(() => { @@ -38,14 +46,14 @@ mapCallbackCoops(createMap,$content,locale)}>

{$content["map-prompt"]}

{#each Object.entries(coopsByCountry) as [name,coops]} -

{$content[name]}

+

{getCountry(name)}

{#each coops as coop}

{$content.name}: {coop.name}

-

{$content.location}: {coop.location[0].map(x => $content[x]).join(", ")}

+

{$content.location}: {getAddress(coop)}

{$content.market}: {$content[coop.market]}

{$content.workers}: {coop.workers}

{$content.status}: {$content[coop.status]}

diff --git a/Server/app/svelte/src/groups-add-component.svelte b/Server/app/svelte/src/groups-add-component.svelte new file mode 100644 index 0000000..abc1844 --- /dev/null +++ b/Server/app/svelte/src/groups-add-component.svelte @@ -0,0 +1,248 @@ + + + + +{#key $loaded} + {#if $loaded==2} +
+ +
+

Add a Group

+ groups +

If there are no groups in your town with whom you can organize then

+
    +
  1. click on the map to show us where you are located,
  2. +
  3. add a way to contact you or leave blank for a pin to point to our discord and
  4. +
  5. press "Submit" to add yourself to our map
  6. +
+
+ + + mapCallbackGroups(createMap,$content)}> +
+
+ {/if} +{/key} + + \ No newline at end of file diff --git a/Server/app/svelte/src/groups-component.svelte b/Server/app/svelte/src/groups-component.svelte index b0de63b..d4b272e 100644 --- a/Server/app/svelte/src/groups-component.svelte +++ b/Server/app/svelte/src/groups-component.svelte @@ -5,7 +5,7 @@ import { onMount } from 'svelte' import { writable } from 'svelte/store'; import { groupsByCountry, addMarkersGroups } from '/js/groups.js' - import { loadLocaleContent} from "/js/libraries/serverTools.js" + import { loadLocaleContent, getData, sendData } from "/js/libraries/serverTools.js" // Import components import "/js/components/map-component.js" @@ -14,16 +14,24 @@ let loaded = writable(0) let content = writable({}) - loadLocaleContent(content,"groups-component",loaded) + let locale = loadLocaleContent(content,"groups-component",loaded) loadLocaleContent(content,"countries",loaded) - function mapCallbackGroups(createMap,content) { + function mapCallbackGroups(createMap,content,locale) { let map = createMap([22, 0],2) - addMarkersGroups(map,content) + addMarkersGroups(map,content,locale) + } + + function getCountry(name) { + return locale=="en" ? name : $content[name] + } + + function getAddress(group) { + return group.location[0].map(x => locale=="en" ? x : $content[x]).join(", ") } onMount(() => { - // {console.log(loaded)} + }) @@ -36,14 +44,14 @@ groups

{$content.p1}

{$content.subheading1}

- mapCallbackGroups(createMap,$content)}> + mapCallbackGroups(createMap,$content,locale)}>

{$content["map-prompt"]}

{#each Object.entries(groupsByCountry) as [name,groups]} -

{$content[name]}

+

{getCountry(name)}

{#each groups as group}
-

{$content.location}: {group.location[0].map(x => $content[x]).join(", ")}

+

{$content.location}: {getAddress(group)}

{$content.members}: {group.members}

{$content.contact}: {$content[group.contact[1]]}

diff --git a/Server/app/svelte/src/join-us-component.svelte b/Server/app/svelte/src/join-us-component.svelte index 268cd2c..2c1ad23 100644 --- a/Server/app/svelte/src/join-us-component.svelte +++ b/Server/app/svelte/src/join-us-component.svelte @@ -24,12 +24,12 @@ loadLocaleContent(content,"countries",loaded) let locale = loadLocaleContent(content,"join-us-component",loaded) - function mapCallback(createMap,content) { + function mapCallback(createMap,content,locale) { let map = createMap([22, 0],2) - addMarkersGroups(map,content) - addMarkersCommunes(map,content) - addMarkersCoops(map,content) - addMarkersParties(map,content) + addMarkersGroups(map,content,locale) + addMarkersCommunes(map,content,locale) + addMarkersCoops(map,content,locale) + addMarkersParties(map,content,locale) let overlayMaps = { "Groups": groupsMarkersLayer, @@ -77,7 +77,7 @@

{$content.nearYou}

{$content.noneNear} {$content.WhatsAppGroup} {$content.or} {$content.DiscordServer}{$content.helpStart}

- mapCallback(createMap,$content)}> + mapCallback(createMap,$content,locale)}>
{/if} diff --git a/Server/app/svelte/src/landing-component.svelte b/Server/app/svelte/src/landing-component.svelte index 1a071af..94c37a0 100644 --- a/Server/app/svelte/src/landing-component.svelte +++ b/Server/app/svelte/src/landing-component.svelte @@ -36,12 +36,12 @@ let locale = loadLocaleContent(content,"landing-component",loaded,changeWidth) changeWidth(locale) - function mapCallback(createMap,content) { + function mapCallback(createMap,content,locale) { let map = createMap([22, 0],2) - addMarkersGroups(map,content) - addMarkersCommunes(map,content) - addMarkersCoops(map,content) - addMarkersParties(map,content) + addMarkersGroups(map,content,locale) + addMarkersCommunes(map,content,locale) + addMarkersCoops(map,content,locale) + addMarkersParties(map,content,locale) let overlayMaps = {} overlayMaps[content.groups] = groupsMarkersLayer @@ -107,7 +107,7 @@
-->

{$content.findUs}

- mapCallback(createMap,$content)} colors={["#23AC20","#CA2437","#217BC9","#FFD326"]}> + mapCallback(createMap,$content,locale)} colors={["#23AC20","#CA2437","#217BC9","#FFD326"]}>

{$content.whatNow}

{$content.joinUs} diff --git a/Server/app/svelte/src/parties-component.svelte b/Server/app/svelte/src/parties-component.svelte index d8d53dd..d091526 100644 --- a/Server/app/svelte/src/parties-component.svelte +++ b/Server/app/svelte/src/parties-component.svelte @@ -15,11 +15,19 @@ let content = writable({}) loadLocaleContent(content,"countries",loaded) - loadLocaleContent(content,"parties-component",loaded) + let locale = loadLocaleContent(content,"parties-component",loaded) - function mapCallbackParties(createMap,content) { + function mapCallbackParties(createMap,content,locale) { let map = createMap([22, 0],2) - addMarkersParties(map,content) + addMarkersParties(map,content,locale) + } + + function getCountry(name) { + return locale=="en" ? name : $content[name] + } + + function getAddress(group) { + return locale=="en" ? group.location : $content[group.location] } onMount(() => { @@ -36,10 +44,10 @@ party

{$content.p1}

{$content.subheading1}

- mapCallbackParties(createMap,$content)}> + mapCallbackParties(createMap,$content,locale)}>

{$content["map-prompt"]}

{#each Object.entries(partiesByCountry) as [name,parties]} -

{$content[name]}

+

{getCountry(name)}

{#each parties as party}
@@ -51,7 +59,7 @@

{$content.name}: {party.name}

-

{$content.location}: {$content[party.location[0]]}

+

{$content.location}: {getAddress(party)}

{$content.link}: {party.link}

diff --git a/Server/app/svelte/src/partners-component.svelte b/Server/app/svelte/src/partners-component.svelte index 432ad41..01483a9 100644 --- a/Server/app/svelte/src/partners-component.svelte +++ b/Server/app/svelte/src/partners-component.svelte @@ -15,7 +15,15 @@ let content = writable({}) loadLocaleContent(content,"countries",loaded) - loadLocaleContent(content,"partners-component",loaded) + let locale = loadLocaleContent(content,"partners-component",loaded) + + function getCountry(name) { + return locale=="en" ? name : $content[name] + } + + function getAddress(group) { + return group.location[0].map(x => locale=="en" ? x : $content[x]).join(", ") + } onMount(() => { @@ -32,7 +40,7 @@

{$content.p1}

{$content.subheading1}

{#each Object.entries(partnersByCountry) as [name,partners]} -

{$content[name]}

+

{getCountry(name)}

{#each partners as partner}
@@ -45,7 +53,7 @@

{$content.name}: {partner.name}

{$content.type}: {$content[partner.type]}

-

{$content.location}: {$content[partner.location[0][0]] + (partner.location[0][1]=="" ? "" : ", " + $content[partner.location[0][1]])}

+

{$content.location}: {getAddress(partner)}

{$content.link}: {partner.link}

diff --git a/Server/db/migrations/2022026611846565_create_table_groups.jl b/Server/db/migrations/2022026611846565_create_table_groups.jl new file mode 100644 index 0000000..47989f2 --- /dev/null +++ b/Server/db/migrations/2022026611846565_create_table_groups.jl @@ -0,0 +1,24 @@ +module CreateTableGroups + +import SearchLight.Migrations: create_table, column, primary_key, add_index, drop_table + +function up() + create_table(:groups) do + [ + primary_key() + column(:country, :string) + column(:state, :string) + column(:town, :string) + column(:contact, :string) + column(:latitude, :float) + column(:longitude, :float) + column(:members, :int) + ] + end +end + +function down() + drop_table(:groups) +end + +end \ No newline at end of file diff --git a/Server/lib/DatabaseSupport.jl b/Server/lib/DatabaseSupport.jl index 43fda0d..2149389 100644 --- a/Server/lib/DatabaseSupport.jl +++ b/Server/lib/DatabaseSupport.jl @@ -1,6 +1,6 @@ module DatabaseSupport -#= + using SearchLight, SearchLightPostgreSQL, LibPQ using DataFrames @@ -133,5 +133,5 @@ function add_foreign_key(table,name,table2,name2) ADD CONSTRAINT fk_$(table)_$(table2)_$(name) FOREIGN KEY ($name) REFERENCES $table2 ($name2);""" SearchLight.query(query) end -=# + end diff --git a/Server/public/css/common.css b/Server/public/css/common.css index 7e695db..4920c69 100644 --- a/Server/public/css/common.css +++ b/Server/public/css/common.css @@ -310,7 +310,7 @@ input[type="text"],input[type="email"],input[type="password"],input[type="number border-color: black; border: black solid 0.063rem; padding-left: 0.5rem; - font: 1.3rem var(--serif, serif); + font: 1.15rem var(--serif, serif); } input[type="text"] { diff --git a/Server/public/favicon.png b/Server/public/favicon.png index d3f5d2b6010d579e4ab606500c6160a670b1280e..82aa656dc40feb11165f7a3c967d21a808356514 100644 GIT binary patch delta 2114 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 Hu0mjfXu5!j diff --git a/Server/public/favicon4.png b/Server/public/favicon4.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f5d2b6010d579e4ab606500c6160a670b1280e GIT binary patch literal 3881 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 literal 0 HcmV?d00001 diff --git a/Server/public/img/common/flag.png b/Server/public/img/common/flag.png index 433035f1ac7c1e11e506e24fad5f50236b54a798..70ede6870cf1d4e490dfd2daf67d3b3ae0095e20 100644 GIT binary patch literal 56172 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

v;D}m*Yfl8ThiUu&Zpx#^Zah(6SK85 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 literal 61444 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 C&if$% diff --git a/Server/public/img/common/flag3.png b/Server/public/img/common/flag3.png new file mode 100644 index 0000000000000000000000000000000000000000..433035f1ac7c1e11e506e24fad5f50236b54a798 GIT binary patch literal 61444 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 C&if$% literal 0 HcmV?d00001 diff --git a/Server/public/img/common/markers/marker-black.png b/Server/public/img/common/markers/marker-black.png new file mode 100644 index 0000000000000000000000000000000000000000..23c94cfed50fb9b7adc5f0b99c5d5e8f4eeb58bc GIT binary patch literal 3183 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
" @@ -50,7 +50,14 @@ export function addMarkersCommunes(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } + text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/public/js/components/communes-component.js b/Server/public/js/components/communes-component.js index ba86335..ab25152 100644 --- a/Server/public/js/components/communes-component.js +++ b/Server/public/js/components/communes-component.js @@ -1 +1,598 @@ -import{S as t,i as o,a as n,b as e,s as m,e as r,n as a,d as i,c,o as s,f as l,t as p,g as u,h as g,j as d,k as h,l as f,m as b,p as j}from"./index-4348483d.js";import{w as x}from"./index-71440b21.js";import{addMarkersCommunes as v,communesByCountry as w}from"../../../../../../../../../js/communes.js";import{loadLocaleContent as y}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function k(t,o,n){const e=t.slice();return e[8]=o[n][0],e[9]=o[n][1],e}function z(t,o,n){const e=t.slice();return e[12]=o[n],e}function D(t){let o,n,m,r,a,c,s,x,v,y,z,D,E,O,R,T,A,C,H,L,M=t[1].communes+"",S=t[1].p1+"",_=t[1].subheading1+"",q=t[1]["map-prompt"]+"",B=Object.entries(w),F=[];for(let o=0;on(0,e=t)));let a=x({});c(t,a,(t=>n(1,m=t))),y(a,"countries",r);let i=y(a,"communes-component",r);function l(t,o){let n=t([22,0],2);v(n,o)}s((()=>{}));return[e,m,r,a,i,l,t=>l(t,m),t=>m[t]]}class A extends t{constructor(t){super(),this.shadowRoot.innerHTML="",o(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},T,R,m,{},null),t&&t.target&&e(t.target,this,t.anchor)}}customElements.define("communes-component",A);export{A as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, j as validate_each_argument, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, r as set_custom_element_data, u as append_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { communesByCountry, addMarkersCommunes } from '../../../../../../../../../js/communes.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\communes-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; + +const file = "src\\communes-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i][0]; + child_ctx[10] = list[i][1]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; +} + +// (39:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[0].communes + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let p0; + let t3_value = /*$content*/ ctx[0].p1 + ""; + let t3; + let t4; + let h3; + let t5_value = /*$content*/ ctx[0].subheading1 + ""; + let t5; + let t6; + let map_component; + let map_component_callback_value; + let t7; + let p1; + let t8_value = /*$content*/ ctx[0]["map-prompt"] + ""; + let t8; + let t9; + let each_value = Object.entries(communesByCountry); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + p0 = element("p"); + t3 = text(t3_value); + t4 = space(); + h3 = element("h3"); + t5 = text(t5_value); + t6 = space(); + map_component = element("map-component"); + t7 = space(); + p1 = element("p"); + t8 = text(t8_value); + t9 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + add_location(h1, file, 42, 16, 1223); + attr_dev(img, "id", "commune-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/commune.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "commune"); + add_location(img, file, 43, 16, 1269); + attr_dev(p0, "class", "description"); + add_location(p0, file, 44, 16, 1353); + add_location(h3, file, 45, 16, 1411); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[8]); + add_location(map_component, file, 46, 16, 1460); + attr_dev(p1, "id", "add-prompt"); + add_location(p1, file, 47, 16, 1591); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 41, 12, 1180); + attr_dev(div1, "id", "container"); + add_location(div1, file, 39, 8, 1077); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p0); + append_dev(p0, t3); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(h3, t5); + append_dev(div0, t6); + append_dev(div0, map_component); + append_dev(div0, t7); + append_dev(div0, p1); + append_dev(p1, t8); + append_dev(div0, t9); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].communes + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].p1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t5_value !== (t5_value = /*$content*/ ctx[0].subheading1 + "")) set_data_dev(t5, t5_value); + + if (dirty & /*$content*/ 1 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[8])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0]["map-prompt"] + "")) set_data_dev(t8, t8_value); + + if (dirty & /*Object, communesByCountry, $content, getAddress, getCountry*/ 193) { + each_value = Object.entries(communesByCountry); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(39:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (52:24) {#each communes as commune} +function create_each_block_1(ctx) { + let div; + let p0; + let b0; + let t0_value = /*$content*/ ctx[0].location + ""; + let t0; + let t1; + let t2_value = /*getAddress*/ ctx[7](/*commune*/ ctx[13]) + ""; + let t2; + let t3; + let p1; + let b1; + let t4_value = /*$content*/ ctx[0].status + ""; + let t4; + let t5; + let t6_value = /*$content*/ ctx[0][/*commune*/ ctx[13].status] + ""; + let t6; + let t7; + let p2; + let b2; + let t8_value = /*$content*/ ctx[0].members + ""; + let t8; + let t9; + let t10_value = /*commune*/ ctx[13].members + ""; + let t10; + let t11; + let p3; + let b3; + let t12_value = /*$content*/ ctx[0].contact + ""; + let t12; + let t13; + let a; + let t14_value = /*$content*/ ctx[0][/*commune*/ ctx[13].contact[1]] + ""; + let t14; + + const block = { + c: function create() { + div = element("div"); + p0 = element("p"); + b0 = element("b"); + t0 = text(t0_value); + t1 = text(": "); + t2 = text(t2_value); + t3 = space(); + p1 = element("p"); + b1 = element("b"); + t4 = text(t4_value); + t5 = text(": "); + t6 = text(t6_value); + t7 = space(); + p2 = element("p"); + b2 = element("b"); + t8 = text(t8_value); + t9 = text(": "); + t10 = text(t10_value); + t11 = space(); + p3 = element("p"); + b3 = element("b"); + t12 = text(t12_value); + t13 = text(": "); + a = element("a"); + t14 = text(t14_value); + add_location(b0, file, 53, 35, 1982); + add_location(p0, file, 53, 32, 1979); + add_location(b1, file, 54, 35, 2072); + add_location(p1, file, 54, 32, 2069); + add_location(b2, file, 55, 35, 2165); + add_location(p2, file, 55, 32, 2162); + add_location(b3, file, 56, 35, 2250); + attr_dev(a, "href", /*commune*/ ctx[13].contact[0]); + attr_dev(a, "target", ";_blank;"); + attr_dev(a, "rel", "noreferrer"); + add_location(a, file, 56, 62, 2277); + add_location(p3, file, 56, 32, 2247); + attr_dev(div, "class", "location-info"); + add_location(div, file, 52, 28, 1918); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, p0); + append_dev(p0, b0); + append_dev(b0, t0); + append_dev(b0, t1); + append_dev(p0, t2); + append_dev(div, t3); + append_dev(div, p1); + append_dev(p1, b1); + append_dev(b1, t4); + append_dev(b1, t5); + append_dev(p1, t6); + append_dev(div, t7); + append_dev(div, p2); + append_dev(p2, b2); + append_dev(b2, t8); + append_dev(b2, t9); + append_dev(p2, t10); + append_dev(div, t11); + append_dev(div, p3); + append_dev(p3, b3); + append_dev(b3, t12); + append_dev(b3, t13); + append_dev(p3, a); + append_dev(a, t14); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].location + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t4_value !== (t4_value = /*$content*/ ctx[0].status + "")) set_data_dev(t4, t4_value); + if (dirty & /*$content*/ 1 && t6_value !== (t6_value = /*$content*/ ctx[0][/*commune*/ ctx[13].status] + "")) set_data_dev(t6, t6_value); + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0].members + "")) set_data_dev(t8, t8_value); + if (dirty & /*$content*/ 1 && t12_value !== (t12_value = /*$content*/ ctx[0].contact + "")) set_data_dev(t12, t12_value); + if (dirty & /*$content*/ 1 && t14_value !== (t14_value = /*$content*/ ctx[0][/*commune*/ ctx[13].contact[1]] + "")) set_data_dev(t14, t14_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(52:24) {#each communes as commune}", + ctx + }); + + return block; +} + +// (49:16) {#each Object.entries(communesByCountry) as [name,communes]} +function create_each_block(ctx) { + let h4; + let t0_value = /*getCountry*/ ctx[6](/*name*/ ctx[9]) + ""; + let t0; + let t1; + let div; + let t2; + let each_value_1 = /*communes*/ ctx[10]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + h4 = element("h4"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + attr_dev(h4, "class", "country-name"); + add_location(h4, file, 49, 20, 1738); + attr_dev(div, "class", "country-block"); + add_location(div, file, 50, 20, 1808); + }, + m: function mount(target, anchor) { + insert_dev(target, h4, anchor); + append_dev(h4, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append_dev(div, t2); + }, + p: function update(ctx, dirty) { + if (dirty & /*Object, communesByCountry, $content, getAddress*/ 129) { + each_value_1 = /*communes*/ ctx[10]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(h4); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(49:16) {#each Object.entries(communesByCountry) as [name,communes]}", + ctx + }); + + return block; +} + +// (38:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[1] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[1] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(38:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[1]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 2 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[1])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('communes-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(1, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(0, $content = value)); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "communes-component", loaded); + + function mapCallbackCommunes(createMap, content, locale) { + let map = createMap([22, 0], 2); + addMarkersCommunes(map, content, locale); + } + + function getCountry(name) { + return locale == "en" ? name : $content[name]; + } + + function getAddress(group) { + return group.location[0].map(x => locale == "en" ? x : $content[x]).join(", "); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const func = createMap => mapCallbackCommunes(createMap, $content, locale); + + $$self.$capture_state = () => ({ + onMount, + writable, + communesByCountry, + addMarkersCommunes, + loadLocaleContent, + loaded, + content, + locale, + mapCallbackCommunes, + getCountry, + getAddress, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) $$invalidate(4, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + $content, + $loaded, + loaded, + content, + locale, + mapCallbackCommunes, + getCountry, + getAddress, + func + ]; +} + +class Communes_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("communes-component", Communes_component); + +export { Communes_component as default }; diff --git a/Server/public/js/components/compass-component.js b/Server/public/js/components/compass-component.js index 1e38a3d..1ed1bd2 100644 --- a/Server/public/js/components/compass-component.js +++ b/Server/public/js/components/compass-component.js @@ -1 +1,714 @@ -import{S as t,i as n,a as e,b as i,s as o,e as r,n as s,d as a,c as l,o as m,f as c,t as u,g as p,h as d,j as g,l as h,m as f,q as b,p as v,r as q}from"./index-4348483d.js";import{w as x}from"./index-71440b21.js";import{loadLocaleContent as _}from"../../../../../../../../../js/libraries/serverTools.js";import{shuffleArray as z}from"../../../../../../../../../js/libraries/miscTools.js";function w(t,n,e){const i=t.slice();return i[19]=n[e],i[21]=e,i}function y(t){let n,e,r,s,l,m,b,v,q=t[5].heading+"",x=t[0],_=S(t);return{c(){n=c("div"),e=c("div"),r=c("h1"),s=u(q),l=p(),m=c("img"),v=p(),_.c(),d(m,"id","compass-img"),g(m.src,b="/img/common/compass.svg")||d(m,"src","/img/common/compass.svg"),d(m,"alt","compass"),d(e,"id","text-container"),d(n,"id","container")},m(t,o){i(t,n,o),h(n,e),h(e,r),h(r,s),h(e,l),h(e,m),h(e,v),_.m(e,null)},p(t,n){32&n&&q!==(q=t[5].heading+"")&&f(s,q),1&n&&o(x,x=t[0])?(_.d(1),_=S(t),_.c(),_.m(e,null)):_.p(t,n)},d(t){t&&a(n),_.d(t)}}}function k(t){let n,e,o,r,s,l,m,g,v,q,x,_,z,w,y,k,j,C,S,B,M,N,T,D;return{c(){n=c("p"),n.textContent="You are compatible with ...",e=p(),o=c("ul"),r=c("li"),s=u("capitalism by "),l=c("span"),m=u(t[2]),g=u("%"),v=p(),q=c("li"),x=u("vanguardism by "),_=c("span"),z=u(t[3]),w=u("%"),y=p(),k=c("li"),j=u("libertarian socialism by "),C=c("span"),S=u(t[4]),B=u("%"),M=p(),N=c("button"),N.textContent="back",d(o,"class","results-list"),d(N,"class","quiz-buttons")},m(a,c){i(a,n,c),i(a,e,c),i(a,o,c),h(o,r),h(r,s),h(r,l),h(l,m),h(r,g),h(o,v),h(o,q),h(q,x),h(q,_),h(_,z),h(q,w),h(o,y),h(o,k),h(k,j),h(k,C),h(C,S),h(k,B),i(a,M,c),i(a,N,c),T||(D=b(N,"click",t[16]),T=!0)},p(t,n){4&n&&f(m,t[2]),8&n&&f(z,t[3]),16&n&&f(S,t[4])},d(t){t&&a(n),t&&a(e),t&&a(o),t&&a(M),t&&a(N),T=!1,D()}}}function j(t){let n,e,o,r,s,l,m,g,x,_=t[5].qs[t[0]].q+"",z=t[5].qs[t[0]].as,y=[];for(let n=0;ne(6,o=t)));let s=x({});l(t,s,(t=>e(5,i=t))),_(s,"countries",r),_(s,"compass-component",r,(function(t){for(let n of t.qs)z(n.as)}));let a=0,c=[],u="",p="",d="";function g(t){null!=c[t]&&at.includes("C"))).filter(Boolean).length/c.length).toString()),e(3,p=Math.round(100*c.map((t=>t.includes("V"))).filter(Boolean).length/c.length).toString()),e(4,d=Math.round(100*c.map((t=>t.includes("LS"))).filter(Boolean).length/c.length).toString())),e(0,a+=1))}function h(t){0!=a&&e(0,a-=1)}m((()=>{}));return[a,c,u,p,d,i,o,r,s,g,h,function(){c[a]=this.__value,e(1,c)},[[]],t=>e(1,c[a]=t[1],c),()=>h(),()=>g(a),()=>h()]}class T extends t{constructor(t){super(),this.shadowRoot.innerHTML="",n(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},N,M,o,{},null),t&&t.target&&i(t.target,this,t.anchor)}}customElements.define("compass-component",T);export{T as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, f as empty, n as noop, h as detach_dev, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, u as append_dev, w as set_data_dev, j as validate_each_argument, y as listen_dev, x as destroy_each, z as run_all, A as prop_dev } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import { shuffleArray } from '../../../../../../../../../js/libraries/miscTools.js'; + +/* src\compass-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\compass-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[19] = list[i]; + child_ctx[21] = i; + return child_ctx; +} + +// (57:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[5].heading + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let previous_key = /*qTag*/ ctx[0]; + let key_block = create_key_block_1(ctx); + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + key_block.c(); + add_location(h1, file, 59, 16, 1759); + attr_dev(img, "id", "compass-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/compass.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "compass"); + add_location(img, file, 60, 16, 1804); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 58, 12, 1716); + attr_dev(div1, "id", "container"); + add_location(div1, file, 57, 8, 1682); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + key_block.m(div0, null); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 32 && t0_value !== (t0_value = /*$content*/ ctx[5].heading + "")) set_data_dev(t0, t0_value); + + if (dirty & /*qTag*/ 1 && safe_not_equal(previous_key, previous_key = /*qTag*/ ctx[0])) { + key_block.d(1); + key_block = create_key_block_1(ctx); + key_block.c(); + key_block.m(div0, null); + } else { + key_block.p(ctx, dirty); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(57:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (74:16) {:else} +function create_else_block(ctx) { + let p; + let t1; + let ul; + let li0; + let t2; + let span0; + let t3; + let t4; + let t5; + let li1; + let t6; + let span1; + let t7; + let t8; + let t9; + let li2; + let t10; + let span2; + let t11; + let t12; + let t13; + let button; + let mounted; + let dispose; + + const block = { + c: function create() { + p = element("p"); + p.textContent = "You are compatible with ..."; + t1 = space(); + ul = element("ul"); + li0 = element("li"); + t2 = text("capitalism by "); + span0 = element("span"); + t3 = text(/*capitalismScore*/ ctx[2]); + t4 = text("%"); + t5 = space(); + li1 = element("li"); + t6 = text("vanguardism by "); + span1 = element("span"); + t7 = text(/*vanguardismScore*/ ctx[3]); + t8 = text("%"); + t9 = space(); + li2 = element("li"); + t10 = text("libertarian socialism by "); + span2 = element("span"); + t11 = text(/*socialismScore*/ ctx[4]); + t12 = text("%"); + t13 = space(); + button = element("button"); + button.textContent = "back"; + add_location(p, file, 74, 20, 2731); + add_location(span0, file, 76, 42, 2856); + add_location(li0, file, 76, 24, 2838); + add_location(span1, file, 77, 43, 2937); + add_location(li1, file, 77, 24, 2918); + add_location(span2, file, 78, 53, 3029); + add_location(li2, file, 78, 24, 3000); + attr_dev(ul, "class", "results-list"); + add_location(ul, file, 75, 20, 2787); + attr_dev(button, "class", "quiz-buttons"); + add_location(button, file, 80, 20, 3113); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + insert_dev(target, t1, anchor); + insert_dev(target, ul, anchor); + append_dev(ul, li0); + append_dev(li0, t2); + append_dev(li0, span0); + append_dev(span0, t3); + append_dev(li0, t4); + append_dev(ul, t5); + append_dev(ul, li1); + append_dev(li1, t6); + append_dev(li1, span1); + append_dev(span1, t7); + append_dev(li1, t8); + append_dev(ul, t9); + append_dev(ul, li2); + append_dev(li2, t10); + append_dev(li2, span2); + append_dev(span2, t11); + append_dev(li2, t12); + insert_dev(target, t13, anchor); + insert_dev(target, button, anchor); + + if (!mounted) { + dispose = listen_dev(button, "click", /*click_handler_3*/ ctx[16], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*capitalismScore*/ 4) set_data_dev(t3, /*capitalismScore*/ ctx[2]); + if (dirty & /*vanguardismScore*/ 8) set_data_dev(t7, /*vanguardismScore*/ ctx[3]); + if (dirty & /*socialismScore*/ 16) set_data_dev(t11, /*socialismScore*/ ctx[4]); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(ul); + if (detaching) detach_dev(t13); + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block.name, + type: "else", + source: "(74:16) {:else}", + ctx + }); + + return block; +} + +// (63:16) {#if qTag!=$content.qs.length} +function create_if_block_1(ctx) { + let p; + let t0_value = /*$content*/ ctx[5].qs[/*qTag*/ ctx[0]].q + ""; + let t0; + let t1; + let div; + let t2; + let button0; + let button1; + let mounted; + let dispose; + let each_value = /*$content*/ ctx[5].qs[/*qTag*/ ctx[0]].as; + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + p = element("p"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + button0 = element("button"); + button0.textContent = "back"; + button1 = element("button"); + button1.textContent = "next"; + add_location(p, file, 63, 20, 1969); + attr_dev(div, "class", "quiz-inputs"); + add_location(div, file, 64, 20, 2019); + attr_dev(button0, "class", "quiz-buttons"); + add_location(button0, file, 72, 20, 2544); + attr_dev(button1, "class", "quiz-buttons"); + add_location(button1, file, 72, 90, 2614); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + append_dev(p, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + insert_dev(target, t2, anchor); + insert_dev(target, button0, anchor); + insert_dev(target, button1, anchor); + + if (!mounted) { + dispose = [ + listen_dev(button0, "click", /*click_handler_1*/ ctx[14], false, false, false), + listen_dev(button1, "click", /*click_handler_2*/ ctx[15], false, false, false) + ]; + + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content, qTag*/ 33 && t0_value !== (t0_value = /*$content*/ ctx[5].qs[/*qTag*/ ctx[0]].q + "")) set_data_dev(t0, t0_value); + + if (dirty & /*answers, qTag, $content*/ 35) { + each_value = /*$content*/ ctx[5].qs[/*qTag*/ ctx[0]].as; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + if (detaching) detach_dev(t2); + if (detaching) detach_dev(button0); + if (detaching) detach_dev(button1); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1.name, + type: "if", + source: "(63:16) {#if qTag!=$content.qs.length}", + ctx + }); + + return block; +} + +// (66:24) {#each $content.qs[qTag].as as a,i} +function create_each_block(ctx) { + let div; + let input; + let input_value_value; + let t0; + let button; + let t1_value = /*a*/ ctx[19][0] + ""; + let t1; + let t2; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[13](/*a*/ ctx[19]); + } + + const block = { + c: function create() { + div = element("div"); + input = element("input"); + t0 = space(); + button = element("button"); + t1 = text(t1_value); + t2 = space(); + attr_dev(input, "type", "radio"); + attr_dev(input, "id", "option" + /*i*/ ctx[21]); + attr_dev(input, "name", "options"); + input.__value = input_value_value = /*a*/ ctx[19][1]; + input.value = input.__value; + /*$$binding_groups*/ ctx[12][0].push(input); + add_location(input, file, 67, 32, 2198); + attr_dev(button, "class", "input-label"); + attr_dev(button, "for", "option" + /*i*/ ctx[21]); + add_location(button, file, 68, 32, 2323); + attr_dev(div, "class", "radio-container"); + add_location(div, file, 66, 28, 2135); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, input); + input.checked = input.__value === /*answers*/ ctx[1][/*qTag*/ ctx[0]]; + append_dev(div, t0); + append_dev(div, button); + append_dev(button, t1); + append_dev(div, t2); + + if (!mounted) { + dispose = [ + listen_dev(input, "change", /*input_change_handler*/ ctx[11]), + listen_dev(button, "click", click_handler, false, false, false) + ]; + + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*$content, qTag*/ 33 && input_value_value !== (input_value_value = /*a*/ ctx[19][1])) { + prop_dev(input, "__value", input_value_value); + input.value = input.__value; + } + + if (dirty & /*answers, qTag*/ 3) { + input.checked = input.__value === /*answers*/ ctx[1][/*qTag*/ ctx[0]]; + } + + if (dirty & /*$content, qTag*/ 33 && t1_value !== (t1_value = /*a*/ ctx[19][0] + "")) set_data_dev(t1, t1_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + /*$$binding_groups*/ ctx[12][0].splice(/*$$binding_groups*/ ctx[12][0].indexOf(input), 1); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(66:24) {#each $content.qs[qTag].as as a,i}", + ctx + }); + + return block; +} + +// (62:16) {#key qTag} +function create_key_block_1(ctx) { + let if_block_anchor; + + function select_block_type(ctx, dirty) { + if (/*qTag*/ ctx[0] != /*$content*/ ctx[5].qs.length) return create_if_block_1; + return create_else_block; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + + const block = { + c: function create() { + if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { + if_block.p(ctx, dirty); + } else { + if_block.d(1); + if_block = current_block_type(ctx); + + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, + d: function destroy(detaching) { + if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block_1.name, + type: "key", + source: "(62:16) {#key qTag}", + ctx + }); + + return block; +} + +// (56:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[6] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[6] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(56:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[6]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 64 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[6])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('compass-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(6, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(5, $content = value)); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "compass-component", loaded, contentCallback); + let qTag = 0; + let answers = []; + let capitalismScore = ""; + let vanguardismScore = ""; + let socialismScore = ""; + + function contentCallback(content) { + for (let q of content.qs) { + shuffleArray(q.as); + } + } + + function next(i) { + if (answers[i] != undefined) { + if (qTag < $content.qs.length) { + if (qTag == $content.qs.length - 1) { + $$invalidate(2, capitalismScore = Math.round(answers.map(x => x.includes("C")).filter(Boolean).length * 100 / answers.length).toString()); + $$invalidate(3, vanguardismScore = Math.round(answers.map(x => x.includes("V")).filter(Boolean).length * 100 / answers.length).toString()); + $$invalidate(4, socialismScore = Math.round(answers.map(x => x.includes("LS")).filter(Boolean).length * 100 / answers.length).toString()); + } + + $$invalidate(0, qTag = qTag + 1); + } + } + } + + function back(i) { + if (qTag != 0) { + $$invalidate(0, qTag = qTag - 1); + } + } + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const $$binding_groups = [[]]; + + function input_change_handler() { + answers[qTag] = this.__value; + $$invalidate(1, answers); + } + + const click_handler = a => $$invalidate(1, answers[qTag] = a[1], answers); + const click_handler_1 = () => back(); + const click_handler_2 = () => next(qTag); + const click_handler_3 = () => back(); + + $$self.$capture_state = () => ({ + onMount, + writable, + loadLocaleContent, + shuffleArray, + loaded, + content, + locale, + qTag, + answers, + capitalismScore, + vanguardismScore, + socialismScore, + contentCallback, + next, + back, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(7, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(8, content = $$props.content); + if ('locale' in $$props) locale = $$props.locale; + if ('qTag' in $$props) $$invalidate(0, qTag = $$props.qTag); + if ('answers' in $$props) $$invalidate(1, answers = $$props.answers); + if ('capitalismScore' in $$props) $$invalidate(2, capitalismScore = $$props.capitalismScore); + if ('vanguardismScore' in $$props) $$invalidate(3, vanguardismScore = $$props.vanguardismScore); + if ('socialismScore' in $$props) $$invalidate(4, socialismScore = $$props.socialismScore); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + qTag, + answers, + capitalismScore, + vanguardismScore, + socialismScore, + $content, + $loaded, + loaded, + content, + next, + back, + input_change_handler, + $$binding_groups, + click_handler, + click_handler_1, + click_handler_2, + click_handler_3 + ]; +} + +class Compass_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("compass-component", Compass_component); + +export { Compass_component as default }; diff --git a/Server/public/js/components/cookies-dialog.js b/Server/public/js/components/cookies-dialog.js index 79c9c70..d4a55c2 100644 --- a/Server/public/js/components/cookies-dialog.js +++ b/Server/public/js/components/cookies-dialog.js @@ -1 +1,99 @@ -import{S as e,i as s,a as t,b as o,s as i,f as a,n as r,h as n,d as c,o as d}from"./index-4348483d.js";function p(e){let s;return{c(){s=a("div"),s.innerHTML="

We use cookies to improve your experience, personalise your content and analyse site usage. By clicking “OK”, you agree to the use of cookies.

",this.c=r,n(s,"id","wrapper")},m(e,t){o(e,s,t)},p:r,i:r,o:r,d(e){e&&c(s)}}}function u(e){return d((()=>{})),[]}class h extends e{constructor(e){super(),this.shadowRoot.innerHTML="",s(this,{target:this.shadowRoot,props:t(this.attributes),customElement:!0},u,p,i,{},null),e&&e.target&&o(e.target,this,e.anchor)}}customElements.define("cookies-dialog",h);export{h as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, k as element, n as noop, m as add_location, p as attr_dev, u as append_dev, h as detach_dev } from './index-d19aafba.js'; + +/* src\components\cookies-dialog.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\cookies-dialog.svelte"; + +function create_fragment(ctx) { + let div1; + let div0; + let p; + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + p = element("p"); + p.textContent = "We use cookies to improve your experience, personalise your content and analyse site usage. By clicking “OK”, you agree to the use of cookies."; + this.c = noop; + add_location(p, file, 19, 8, 248); + add_location(div0, file, 18, 4, 233); + attr_dev(div1, "id", "wrapper"); + add_location(div1, file, 17, 0, 209); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, p); + }, + p: noop, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('cookies-dialog', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Cookies_dialog extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("cookies-dialog", Cookies_dialog); + +export { Cookies_dialog as default }; diff --git a/Server/public/js/components/cooperatives-component.js b/Server/public/js/components/cooperatives-component.js index bf76fda..d049e46 100644 --- a/Server/public/js/components/cooperatives-component.js +++ b/Server/public/js/components/cooperatives-component.js @@ -1 +1,737 @@ -import{S as t,i as e,a as o,b as n,s as i,e as r,n as a,d as s,c,o as m,f as l,t as p,g,h as d,j as h,k as f,l as u,m as b,p as w}from"./index-4348483d.js";import{w as x}from"./index-71440b21.js";import{addMarkersCoops as v,coopsByCountry as j}from"../../../../../../../../../js/coops.js";import{loadLocaleContent as k}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function y(t,e,o){const n=t.slice();return n[8]=e[o][0],n[9]=e[o][1],n}function z(t,e,o){const n=t.slice();return n[12]=e[o],n}function D(t){let e,o,i,r,a,c,m,x,v,k,z,D,E,O,R,T,_,A,C,H,L=t[1].cooperatives+"",M=t[1].p1+"",S=t[1].subheading1+"",q=t[1]["map-prompt"]+"",B=Object.entries(j),F=[];for(let e=0;eo(0,n=t)));let a=x({});c(t,a,(t=>o(1,i=t))),k(a,"countries",r);let s=k(a,"cooperatives-component",r);function l(t,e){let o=t([22,0],2);v(o,e)}m((()=>{}));return[n,i,r,a,s,l,t=>l(t,i),t=>i[t]]}class _ extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},T,R,i,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("cooperatives-component",_);export{_ as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, j as validate_each_argument, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, r as set_custom_element_data, u as append_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { coopsByCountry, addMarkersCoops } from '../../../../../../../../../js/coops.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\cooperatives-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; + +const file = "src\\cooperatives-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i][0]; + child_ctx[10] = list[i][1]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; +} + +// (39:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[0].cooperatives + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let p0; + let t3_value = /*$content*/ ctx[0].p1 + ""; + let t3; + let t4; + let h3; + let t5_value = /*$content*/ ctx[0].subheading1 + ""; + let t5; + let t6; + let map_component; + let map_component_callback_value; + let t7; + let p1; + let t8_value = /*$content*/ ctx[0]["map-prompt"] + ""; + let t8; + let t9; + let each_value = Object.entries(coopsByCountry); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + p0 = element("p"); + t3 = text(t3_value); + t4 = space(); + h3 = element("h3"); + t5 = text(t5_value); + t6 = space(); + map_component = element("map-component"); + t7 = space(); + p1 = element("p"); + t8 = text(t8_value); + t9 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + add_location(h1, file, 41, 16, 1144); + attr_dev(img, "id", "coops-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/coops.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "coops"); + add_location(img, file, 42, 16, 1194); + attr_dev(p0, "class", "description"); + add_location(p0, file, 43, 16, 1272); + add_location(h3, file, 44, 16, 1330); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[8]); + add_location(map_component, file, 45, 16, 1379); + attr_dev(p1, "id", "add-prompt"); + add_location(p1, file, 46, 16, 1507); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 40, 12, 1101); + attr_dev(div1, "id", "container"); + add_location(div1, file, 39, 8, 1067); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p0); + append_dev(p0, t3); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(h3, t5); + append_dev(div0, t6); + append_dev(div0, map_component); + append_dev(div0, t7); + append_dev(div0, p1); + append_dev(p1, t8); + append_dev(div0, t9); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].cooperatives + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].p1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t5_value !== (t5_value = /*$content*/ ctx[0].subheading1 + "")) set_data_dev(t5, t5_value); + + if (dirty & /*$content*/ 1 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[8])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0]["map-prompt"] + "")) set_data_dev(t8, t8_value); + + if (dirty & /*Object, coopsByCountry, $content, getAddress, getCountry*/ 193) { + each_value = Object.entries(coopsByCountry); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(39:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (51:24) {#each coops as coop} +function create_each_block_1(ctx) { + let div2; + let div1; + let div0; + let p0; + let b0; + let t0_value = /*$content*/ ctx[0].name + ""; + let t0; + let t1; + let t2_value = /*coop*/ ctx[13].name + ""; + let t2; + let t3; + let p1; + let b1; + let t4_value = /*$content*/ ctx[0].location + ""; + let t4; + let t5; + let t6_value = /*getAddress*/ ctx[7](/*coop*/ ctx[13]) + ""; + let t6; + let t7; + let p2; + let b2; + let t8_value = /*$content*/ ctx[0].market + ""; + let t8; + let t9; + let t10_value = /*$content*/ ctx[0][/*coop*/ ctx[13].market] + ""; + let t10; + let t11; + let p3; + let b3; + let t12_value = /*$content*/ ctx[0].workers + ""; + let t12; + let t13; + let t14_value = /*coop*/ ctx[13].workers + ""; + let t14; + let t15; + let p4; + let b4; + let t16_value = /*$content*/ ctx[0].status + ""; + let t16; + let t17; + let t18_value = /*$content*/ ctx[0][/*coop*/ ctx[13].status] + ""; + let t18; + let t19; + let p5; + let b5; + let t20_value = /*$content*/ ctx[0].website + ""; + let t20; + let t21; + let a0; + let t22_value = /*coop*/ ctx[13].website[1] + ""; + let t22; + let t23; + let p6; + let b6; + let t24_value = /*$content*/ ctx[0].contact + ""; + let t24; + let t25; + let a1; + let t26_value = /*$content*/ ctx[0][/*coop*/ ctx[13].contact[1]] + ""; + let t26; + let t27; + let picture; + let source0; + let t28; + let source1; + let t29; + let img; + let t30; + let p7; + let b7; + let t31_value = /*$content*/ ctx[0].description + ""; + let t31; + let t32; + let t33_value = /*$content*/ ctx[0][/*coop*/ ctx[13].description] + ""; + let t33; + + const block = { + c: function create() { + div2 = element("div"); + div1 = element("div"); + div0 = element("div"); + p0 = element("p"); + b0 = element("b"); + t0 = text(t0_value); + t1 = text(": "); + t2 = text(t2_value); + t3 = space(); + p1 = element("p"); + b1 = element("b"); + t4 = text(t4_value); + t5 = text(": "); + t6 = text(t6_value); + t7 = space(); + p2 = element("p"); + b2 = element("b"); + t8 = text(t8_value); + t9 = text(": "); + t10 = text(t10_value); + t11 = space(); + p3 = element("p"); + b3 = element("b"); + t12 = text(t12_value); + t13 = text(": "); + t14 = text(t14_value); + t15 = space(); + p4 = element("p"); + b4 = element("b"); + t16 = text(t16_value); + t17 = text(": "); + t18 = text(t18_value); + t19 = space(); + p5 = element("p"); + b5 = element("b"); + t20 = text(t20_value); + t21 = text(": "); + a0 = element("a"); + t22 = text(t22_value); + t23 = space(); + p6 = element("p"); + b6 = element("b"); + t24 = text(t24_value); + t25 = text(": "); + a1 = element("a"); + t26 = text(t26_value); + t27 = space(); + picture = element("picture"); + source0 = element("source"); + t28 = space(); + source1 = element("source"); + t29 = space(); + img = element("img"); + t30 = space(); + p7 = element("p"); + b7 = element("b"); + t31 = text(t31_value); + t32 = text(": "); + t33 = text(t33_value); + add_location(b0, file, 54, 43, 2001); + add_location(p0, file, 54, 40, 1998); + add_location(b1, file, 55, 43, 2085); + add_location(p1, file, 55, 40, 2082); + add_location(b2, file, 56, 43, 2180); + add_location(p2, file, 56, 40, 2177); + add_location(b3, file, 57, 43, 2278); + add_location(p3, file, 57, 40, 2275); + add_location(b4, file, 58, 43, 2368); + add_location(p4, file, 58, 40, 2365); + add_location(b5, file, 59, 43, 2466); + attr_dev(a0, "href", /*coop*/ ctx[13].website[0]); + attr_dev(a0, "target", "_blank"); + attr_dev(a0, "rel", "noreferrer"); + add_location(a0, file, 59, 70, 2493); + add_location(p5, file, 59, 40, 2463); + add_location(b6, file, 60, 43, 2620); + attr_dev(a1, "href", /*coop*/ ctx[13].contact[0]); + attr_dev(a1, "target", ";_blank;"); + attr_dev(a1, "rel", "noreferrer"); + add_location(a1, file, 60, 70, 2647); + add_location(p6, file, 60, 40, 2617); + add_location(div0, file, 53, 36, 1951); + attr_dev(source0, "srcset", "/img/coops/" + /*coop*/ ctx[13].logo + ".webp"); + add_location(source0, file, 63, 40, 2872); + attr_dev(source1, "srcset", "/img/coops/" + /*coop*/ ctx[13].logo + ".png"); + add_location(source1, file, 64, 40, 2963); + attr_dev(img, "class", "coop-logo"); + attr_dev(img, "alt", "logo"); + add_location(img, file, 65, 40, 3053); + add_location(picture, file, 62, 36, 2821); + attr_dev(div1, "class", "img-general-info"); + add_location(div1, file, 52, 32, 1883); + add_location(b7, file, 68, 35, 3212); + add_location(p7, file, 68, 32, 3209); + attr_dev(div2, "class", "location-info"); + add_location(div2, file, 51, 28, 1822); + }, + m: function mount(target, anchor) { + insert_dev(target, div2, anchor); + append_dev(div2, div1); + append_dev(div1, div0); + append_dev(div0, p0); + append_dev(p0, b0); + append_dev(b0, t0); + append_dev(b0, t1); + append_dev(p0, t2); + append_dev(div0, t3); + append_dev(div0, p1); + append_dev(p1, b1); + append_dev(b1, t4); + append_dev(b1, t5); + append_dev(p1, t6); + append_dev(div0, t7); + append_dev(div0, p2); + append_dev(p2, b2); + append_dev(b2, t8); + append_dev(b2, t9); + append_dev(p2, t10); + append_dev(div0, t11); + append_dev(div0, p3); + append_dev(p3, b3); + append_dev(b3, t12); + append_dev(b3, t13); + append_dev(p3, t14); + append_dev(div0, t15); + append_dev(div0, p4); + append_dev(p4, b4); + append_dev(b4, t16); + append_dev(b4, t17); + append_dev(p4, t18); + append_dev(div0, t19); + append_dev(div0, p5); + append_dev(p5, b5); + append_dev(b5, t20); + append_dev(b5, t21); + append_dev(p5, a0); + append_dev(a0, t22); + append_dev(div0, t23); + append_dev(div0, p6); + append_dev(p6, b6); + append_dev(b6, t24); + append_dev(b6, t25); + append_dev(p6, a1); + append_dev(a1, t26); + append_dev(div1, t27); + append_dev(div1, picture); + append_dev(picture, source0); + append_dev(picture, t28); + append_dev(picture, source1); + append_dev(picture, t29); + append_dev(picture, img); + append_dev(div2, t30); + append_dev(div2, p7); + append_dev(p7, b7); + append_dev(b7, t31); + append_dev(b7, t32); + append_dev(p7, t33); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].name + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t4_value !== (t4_value = /*$content*/ ctx[0].location + "")) set_data_dev(t4, t4_value); + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0].market + "")) set_data_dev(t8, t8_value); + if (dirty & /*$content*/ 1 && t10_value !== (t10_value = /*$content*/ ctx[0][/*coop*/ ctx[13].market] + "")) set_data_dev(t10, t10_value); + if (dirty & /*$content*/ 1 && t12_value !== (t12_value = /*$content*/ ctx[0].workers + "")) set_data_dev(t12, t12_value); + if (dirty & /*$content*/ 1 && t16_value !== (t16_value = /*$content*/ ctx[0].status + "")) set_data_dev(t16, t16_value); + if (dirty & /*$content*/ 1 && t18_value !== (t18_value = /*$content*/ ctx[0][/*coop*/ ctx[13].status] + "")) set_data_dev(t18, t18_value); + if (dirty & /*$content*/ 1 && t20_value !== (t20_value = /*$content*/ ctx[0].website + "")) set_data_dev(t20, t20_value); + if (dirty & /*$content*/ 1 && t24_value !== (t24_value = /*$content*/ ctx[0].contact + "")) set_data_dev(t24, t24_value); + if (dirty & /*$content*/ 1 && t26_value !== (t26_value = /*$content*/ ctx[0][/*coop*/ ctx[13].contact[1]] + "")) set_data_dev(t26, t26_value); + if (dirty & /*$content*/ 1 && t31_value !== (t31_value = /*$content*/ ctx[0].description + "")) set_data_dev(t31, t31_value); + if (dirty & /*$content*/ 1 && t33_value !== (t33_value = /*$content*/ ctx[0][/*coop*/ ctx[13].description] + "")) set_data_dev(t33, t33_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(51:24) {#each coops as coop}", + ctx + }); + + return block; +} + +// (48:16) {#each Object.entries(coopsByCountry) as [name,coops]} +function create_each_block(ctx) { + let h4; + let t0_value = /*getCountry*/ ctx[6](/*name*/ ctx[9]) + ""; + let t0; + let t1; + let div; + let t2; + let each_value_1 = /*coops*/ ctx[10]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + h4 = element("h4"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + attr_dev(h4, "class", "country-name"); + add_location(h4, file, 48, 20, 1648); + attr_dev(div, "class", "country-block"); + add_location(div, file, 49, 20, 1718); + }, + m: function mount(target, anchor) { + insert_dev(target, h4, anchor); + append_dev(h4, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append_dev(div, t2); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content, Object, coopsByCountry, getAddress*/ 129) { + each_value_1 = /*coops*/ ctx[10]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(h4); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(48:16) {#each Object.entries(coopsByCountry) as [name,coops]}", + ctx + }); + + return block; +} + +// (38:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[1] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[1] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(38:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[1]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 2 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[1])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('cooperatives-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(1, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(0, $content = value)); + let locale = loadLocaleContent(content, "countries", loaded); + loadLocaleContent(content, "cooperatives-component", loaded); + + function mapCallbackCoops(createMap, content) { + let map = createMap([22, 0], 2); + addMarkersCoops(map, content, locale); + } + + function getCountry(name) { + return locale == "en" ? name : $content[name]; + } + + function getAddress(group) { + return group.location[0].map(x => locale == "en" ? x : $content[x]).join(", "); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const func = createMap => mapCallbackCoops(createMap, $content); + + $$self.$capture_state = () => ({ + onMount, + writable, + coopsByCountry, + addMarkersCoops, + loadLocaleContent, + loaded, + content, + locale, + mapCallbackCoops, + getCountry, + getAddress, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) $$invalidate(4, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + $content, + $loaded, + loaded, + content, + locale, + mapCallbackCoops, + getCountry, + getAddress, + func + ]; +} + +class Cooperatives_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("cooperatives-component", Cooperatives_component); + +export { Cooperatives_component as default }; diff --git a/Server/public/js/components/footer-component.js b/Server/public/js/components/footer-component.js index 008f55c..56d805f 100644 --- a/Server/public/js/components/footer-component.js +++ b/Server/public/js/components/footer-component.js @@ -1 +1,347 @@ -import{S as t,i as e,a as o,b as r,s as a,e as i,n,d as s,c as m,f as c,t as f,g as d,h as l,v as g,l as h,q as p,m as u}from"./index-4348483d.js";import{w as b}from"./index-71440b21.js";import{loadLocaleContent as w}from"../../../../../../../../../js/libraries/serverTools.js";function v(t){let e,o,a,i,n,m,b,w,v,k,y,x,L,j,z,U,_,C,T,B,H,M,R=t[1].contactUs+"",A=t[1].inviteLink+"",D=t[1].inviteLink+"";return{c(){e=c("footer"),o=c("div"),a=c("div"),i=c("div"),n=c("h2"),m=f(R),b=d(),w=c("p"),v=f("Discord: "),k=c("a"),y=f(A),x=d(),L=c("p"),j=f("WhatsApp: "),z=c("a"),U=f(D),_=d(),C=c("button"),C.innerHTML='',T=d(),B=c("p"),B.innerHTML='Licensed under a Creative Commons CC BY 4.0 license',l(k,"href","https://discord.gg/Qk8KUk787z"),l(k,"target","_blank"),l(k,"rel","noreferrer"),g(k,"margin-left","1.8rem"),l(z,"href","https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"),l(z,"target","_blank"),l(z,"rel","noreferrer"),g(z,"margin-left","0.5rem"),l(i,"id","contact-us-container"),l(a,"id","footer-grid-content-container"),l(a,"class","logged"),l(C,"id","footer-up"),l(C,"aria-label","go up"),l(B,"id","footer-copyright"),l(o,"id","footer-content-container")},m(s,c){r(s,e,c),h(e,o),h(o,a),h(a,i),h(i,n),h(n,m),h(i,b),h(i,w),h(w,v),h(w,k),h(k,y),h(i,x),h(i,L),h(L,j),h(L,z),h(z,U),h(o,_),h(o,C),h(o,T),h(o,B),H||(M=p(C,"click",t[4]),H=!0)},p(t,e){2&e&&R!==(R=t[1].contactUs+"")&&u(m,R),2&e&&A!==(A=t[1].inviteLink+"")&&u(y,A),2&e&&D!==(D=t[1].inviteLink+"")&&u(U,D)},d(t){t&&s(e),H=!1,M()}}}function k(t){let e,o=2==t[0]&&v(t);return{c(){o&&o.c(),e=i()},m(t,a){o&&o.m(t,a),r(t,e,a)},p(t,r){2==t[0]?o?o.p(t,r):(o=v(t),o.c(),o.m(e.parentNode,e)):o&&(o.d(1),o=null)},d(t){o&&o.d(t),t&&s(e)}}}function y(t){let e,o=t[0],m=k(t);return{c(){m.c(),e=i(),this.c=n},m(t,o){m.m(t,o),r(t,e,o)},p(t,[r]){1&r&&a(o,o=t[0])?(m.d(1),m=k(t),m.c(),m.m(e.parentNode,e)):m.p(t,r)},i:n,o:n,d(t){t&&s(e),m.d(t)}}}function x(t,e,o){let r,a,i=b(0);m(t,i,(t=>o(0,r=t)));let n=b({});m(t,n,(t=>o(1,a=t))),w(n,"countries",i),w(n,"footer-component",i);return[r,a,i,n,()=>{location.href="#"}]}class L extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},x,y,a,{},null),t&&t.target&&r(t.target,this,t.anchor)}}customElements.define("footer-component",L);export{L as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, f as empty, n as noop, h as detach_dev, k as element, t as text, l as space, G as svg_element, m as add_location, p as attr_dev, D as set_style, u as append_dev, y as listen_dev, w as set_data_dev } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; + +/* src\footer\footer-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\footer\\footer-component.svelte"; + +// (21:4) {#if $loaded==2} +function create_if_block(ctx) { + let footer; + let div2; + let div1; + let div0; + let h2; + let t0_value = /*$content*/ ctx[1].contactUs + ""; + let t0; + let t1; + let p0; + let t2; + let a0; + let t3_value = /*$content*/ ctx[1].inviteLink + ""; + let t3; + let t4; + let p1; + let t5; + let a1; + let t6_value = /*$content*/ ctx[1].inviteLink + ""; + let t6; + let t7; + let button; + let svg; + let g; + let rect; + let path; + let t8; + let p2; + let t9; + let a2; + let mounted; + let dispose; + + const block = { + c: function create() { + footer = element("footer"); + div2 = element("div"); + div1 = element("div"); + div0 = element("div"); + h2 = element("h2"); + t0 = text(t0_value); + t1 = space(); + p0 = element("p"); + t2 = text("Discord: "); + a0 = element("a"); + t3 = text(t3_value); + t4 = space(); + p1 = element("p"); + t5 = text("WhatsApp: "); + a1 = element("a"); + t6 = text(t6_value); + t7 = space(); + button = element("button"); + svg = svg_element("svg"); + g = svg_element("g"); + rect = svg_element("rect"); + path = svg_element("path"); + t8 = space(); + p2 = element("p"); + t9 = text("Licensed under a Creative Commons "); + a2 = element("a"); + a2.textContent = "CC BY 4.0 license"; + add_location(h2, file, 25, 24, 692); + attr_dev(a0, "href", "https://discord.gg/Qk8KUk787z"); + attr_dev(a0, "target", "_blank"); + attr_dev(a0, "rel", "noreferrer"); + set_style(a0, "margin-left", "1.8rem"); + add_location(a0, file, 27, 36, 858); + add_location(p0, file, 27, 24, 846); + attr_dev(a1, "href", "https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"); + attr_dev(a1, "target", "_blank"); + attr_dev(a1, "rel", "noreferrer"); + set_style(a1, "margin-left", "0.5rem"); + add_location(a1, file, 28, 37, 1026); + add_location(p1, file, 28, 24, 1013); + attr_dev(div0, "id", "contact-us-container"); + add_location(div0, file, 24, 20, 635); + attr_dev(div1, "id", "footer-grid-content-container"); + attr_dev(div1, "class", "logged"); + add_location(div1, file, 23, 16, 558); + attr_dev(rect, "id", "Rectangle_146"); + attr_dev(rect, "data-name", "Rectangle 146"); + attr_dev(rect, "width", "11"); + attr_dev(rect, "height", "51"); + attr_dev(rect, "rx", "5.5"); + attr_dev(rect, "transform", "translate(22 24)"); + attr_dev(rect, "fill", "#cb1816"); + add_location(rect, file, 34, 24, 1573); + attr_dev(path, "id", "Path_1145"); + attr_dev(path, "data-name", "Path 1145"); + attr_dev(path, "d", "M23.814,4.021a5,5,0,0,1,7.372,0l16.134,17.6c2.94,3.207,1.046,10.4-3.686,8.379S28.02,14.081,28.391,13.524,16.544,27.976,11.366,30,4.741,24.828,7.68,21.621Z"); + attr_dev(path, "fill", "#DD1C1A"); + add_location(path, file, 35, 24, 1727); + attr_dev(g, "id", "Group_268"); + attr_dev(g, "data-name", "Group 268"); + attr_dev(g, "transform", "translate(-6.177 -2.399)"); + add_location(g, file, 33, 24, 1470); + attr_dev(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr_dev(svg, "width", "42.545"); + attr_dev(svg, "height", "72.601"); + attr_dev(svg, "viewBox", "0 0 42.545 72.601"); + add_location(svg, file, 32, 20, 1345); + attr_dev(button, "id", "footer-up"); + attr_dev(button, "aria-label", "go up"); + add_location(button, file, 31, 16, 1244); + attr_dev(a2, "href", "https://creativecommons.org/licenses/by/4.0/legalcode "); + attr_dev(a2, "target", "_blank"); + attr_dev(a2, "rel", "noreferrer"); + add_location(a2, file, 39, 75, 2137); + attr_dev(p2, "id", "footer-copyright"); + add_location(p2, file, 39, 16, 2078); + attr_dev(div2, "id", "footer-content-container"); + add_location(div2, file, 22, 12, 505); + add_location(footer, file, 21, 8, 483); + }, + m: function mount(target, anchor) { + insert_dev(target, footer, anchor); + append_dev(footer, div2); + append_dev(div2, div1); + append_dev(div1, div0); + append_dev(div0, h2); + append_dev(h2, t0); + append_dev(div0, t1); + append_dev(div0, p0); + append_dev(p0, t2); + append_dev(p0, a0); + append_dev(a0, t3); + append_dev(div0, t4); + append_dev(div0, p1); + append_dev(p1, t5); + append_dev(p1, a1); + append_dev(a1, t6); + append_dev(div2, t7); + append_dev(div2, button); + append_dev(button, svg); + append_dev(svg, g); + append_dev(g, rect); + append_dev(g, path); + append_dev(div2, t8); + append_dev(div2, p2); + append_dev(p2, t9); + append_dev(p2, a2); + + if (!mounted) { + dispose = listen_dev(button, "click", /*click_handler*/ ctx[4], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 2 && t0_value !== (t0_value = /*$content*/ ctx[1].contactUs + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 2 && t3_value !== (t3_value = /*$content*/ ctx[1].inviteLink + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 2 && t6_value !== (t6_value = /*$content*/ ctx[1].inviteLink + "")) set_data_dev(t6, t6_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(footer); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(21:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (20:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[0] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[0] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(20:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[0]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 1 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[0])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $loaded; + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('footer-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(0, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(1, $content = value)); + loadLocaleContent(content, "countries", loaded); + loadLocaleContent(content, "footer-component", loaded); + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const click_handler = () => { + location.href = '#'; + }; + + $$self.$capture_state = () => ({ + writable, + loadLocaleContent, + loaded, + content, + $loaded, + $content + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [$loaded, $content, loaded, content, click_handler]; +} + +class Footer_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("footer-component", Footer_component); + +export { Footer_component as default }; diff --git a/Server/public/js/components/groups-add-component.js b/Server/public/js/components/groups-add-component.js new file mode 100644 index 0000000..e998340 --- /dev/null +++ b/Server/public/js/components/groups-add-component.js @@ -0,0 +1,476 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, C as binding_callbacks, k as element, l as space, m as add_location, p as attr_dev, q as src_url_equal, r as set_custom_element_data, u as append_dev, y as listen_dev } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { groupsByCountry, addMarkersGroups } from '../../../../../../../../../js/groups.js'; +import { loadLocaleContent, getData, sendData } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\groups-add-component.svelte generated by Svelte v3.52.0 */ + +const { console: console_1 } = globals; + +const file = "src\\groups-add-component.svelte"; + +// (108:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t1; + let img; + let img_src_value; + let t2; + let p; + let t4; + let ol; + let li0; + let t6; + let li1; + let t8; + let li2; + let t10; + let label0; + let input0; + let br; + let t12; + let label1; + let input1; + let t14; + let button; + let t16; + let map_component; + let map_component_callback_value; + let mounted; + let dispose; + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + h1.textContent = "Add a Group"; + t1 = space(); + img = element("img"); + t2 = space(); + p = element("p"); + p.textContent = "If there are no groups in your town with whom you can organize then"; + t4 = space(); + ol = element("ol"); + li0 = element("li"); + li0.textContent = "click on the map to show us where you are located,"; + t6 = space(); + li1 = element("li"); + li1.textContent = "add a way to contact you or leave blank for a pin to point to our discord and"; + t8 = space(); + li2 = element("li"); + li2.textContent = "press \"Submit\" to add yourself to our map"; + t10 = space(); + label0 = element("label"); + label0.textContent = "Location: "; + input0 = element("input"); + br = element("br"); + t12 = space(); + label1 = element("label"); + label1.textContent = "Contact: "; + input1 = element("input"); + t14 = space(); + button = element("button"); + button.textContent = "Submit"; + t16 = space(); + map_component = element("map-component"); + add_location(h1, file, 111, 16, 3533); + attr_dev(img, "id", "groups-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/groups.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "groups"); + add_location(img, file, 112, 16, 3571); + attr_dev(p, "class", "description"); + add_location(p, file, 113, 16, 3652); + add_location(li0, file, 115, 20, 3790); + add_location(li1, file, 116, 20, 3871); + add_location(li2, file, 117, 20, 3979); + add_location(ol, file, 114, 16, 3764); + attr_dev(label0, "for", "address-input"); + add_location(label0, file, 119, 16, 4070); + attr_dev(input0, "id", "address-input"); + attr_dev(input0, "type", "text"); + input0.readOnly = true; + add_location(input0, file, 119, 61, 4115); + add_location(br, file, 119, 133, 4187); + attr_dev(label1, "for", "contact-input"); + add_location(label1, file, 120, 16, 4209); + attr_dev(input1, "id", "contact-input"); + attr_dev(input1, "type", "text"); + add_location(input1, file, 120, 60, 4253); + attr_dev(button, "id", "submit-button"); + add_location(button, file, 121, 16, 4334); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[10]); + add_location(map_component, file, 122, 16, 4420); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 110, 12, 3490); + attr_dev(div1, "id", "container"); + add_location(div1, file, 108, 8, 3387); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p); + append_dev(div0, t4); + append_dev(div0, ol); + append_dev(ol, li0); + append_dev(ol, t6); + append_dev(ol, li1); + append_dev(ol, t8); + append_dev(ol, li2); + append_dev(div0, t10); + append_dev(div0, label0); + append_dev(div0, input0); + /*input0_binding*/ ctx[8](input0); + append_dev(div0, br); + append_dev(div0, t12); + append_dev(div0, label1); + append_dev(div0, input1); + /*input1_binding*/ ctx[9](input1); + append_dev(div0, t14); + append_dev(div0, button); + append_dev(div0, t16); + append_dev(div0, map_component); + + if (!mounted) { + dispose = listen_dev(button, "click", /*submitLocation*/ ctx[7], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 8 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[10])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + /*input0_binding*/ ctx[8](null); + /*input1_binding*/ ctx[9](null); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(108:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (107:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[2] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[2] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(107:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[2]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 4 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[2])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function createPin(lat, lng) { + let markerIcon = new L.Icon({ + iconUrl: '/img/common/markers/marker-black.png', + shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41] + }); + + return L.marker([lat, lng], { icon: markerIcon }); +} + +function updatePin(marker, lat, lng) { + let newLatLng = L.latLng(lat, lng); // Replace with the desired coordinates + marker.setLatLng(newLatLng); +} + +function instance($$self, $$props, $$invalidate) { + let $loaded; + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('groups-add-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(2, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(3, $content = value)); + let addressInput; + let contactInput; + let addressVec; + let userPinLat = 0; + let userPinLng = 0; + let userPin = createPin(0, 0); + userPin.setOpacity(0); + let locale = loadLocaleContent(content, "groups-component", loaded); + loadLocaleContent(content, "countries", loaded); + + function reverseGeocode(latitude, longitude) { + let url = `https://nominatim.openstreetmap.org/reverse?lat=${latitude}&lon=${longitude}&format=jsonv2`; + + let callback = response => { + // Parse the response JSON + response = JSON.parse(response); + + // Extract the address information from the response + let address = response.address; + + let city = address.city || address.town || address.village || address.hamlet; + let state = address.state; + let country = address.country; + let fullAddress = country; + + if (state != undefined) { + fullAddress += ", " + state; + } else { + state = ""; + } + + if (city != undefined) { + fullAddress += ", " + city; + } else { + city = ""; + } + + $$invalidate(0, addressInput.value = fullAddress, addressInput); + addressVec = [country, state, city]; + }; + + getData(url, callback); + } + + function mapCallbackGroups(createMap, content) { + let map = createMap([22, 0], 2); + addMarkersGroups(map, content); + userPin.addTo(map); + + map.on('click', function (event) { + let lat = event.latlng.lat; + let lng = event.latlng.lng; + userPinLat = lat; + userPinLng = lng; + updatePin(userPin, lat, lng); + userPin.setOpacity(1); + reverseGeocode(lat, lng); + }); + } + + function submitLocation() { + if (addressVec != undefined) { + let data = [...addressVec, userPinLat, userPinLng, contactInput.value]; + let url = "/" + locale + "/groups-add-post/"; + console.log(data); + sendData(url, data); + } + } + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1.warn(` was created with unknown prop '${key}'`); + }); + + function input0_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + addressInput = $$value; + $$invalidate(0, addressInput); + }); + } + + function input1_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + contactInput = $$value; + $$invalidate(1, contactInput); + }); + } + + const func = createMap => mapCallbackGroups(createMap, $content); + + $$self.$capture_state = () => ({ + onMount, + writable, + groupsByCountry, + addMarkersGroups, + loadLocaleContent, + getData, + sendData, + loaded, + content, + addressInput, + contactInput, + addressVec, + userPinLat, + userPinLng, + userPin, + locale, + createPin, + updatePin, + reverseGeocode, + mapCallbackGroups, + submitLocation, + $loaded, + $content + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(4, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(5, content = $$props.content); + if ('addressInput' in $$props) $$invalidate(0, addressInput = $$props.addressInput); + if ('contactInput' in $$props) $$invalidate(1, contactInput = $$props.contactInput); + if ('addressVec' in $$props) addressVec = $$props.addressVec; + if ('userPinLat' in $$props) userPinLat = $$props.userPinLat; + if ('userPinLng' in $$props) userPinLng = $$props.userPinLng; + if ('userPin' in $$props) userPin = $$props.userPin; + if ('locale' in $$props) locale = $$props.locale; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + addressInput, + contactInput, + $loaded, + $content, + loaded, + content, + mapCallbackGroups, + submitLocation, + input0_binding, + input1_binding, + func + ]; +} + +class Groups_add_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("groups-add-component", Groups_add_component); + +export { Groups_add_component as default }; diff --git a/Server/public/js/components/groups-component.js b/Server/public/js/components/groups-component.js index 64ea256..286ad32 100644 --- a/Server/public/js/components/groups-component.js +++ b/Server/public/js/components/groups-component.js @@ -1 +1,576 @@ -import{S as t,i as o,a as n,b as e,s as r,e as a,n as i,d as m,c as s,o as c,f as l,t as p,g,h as u,j as d,k as h,l as f,m as b,p as j}from"./index-4348483d.js";import{w as x}from"./index-71440b21.js";import{addMarkersGroups as v,groupsByCountry as w}from"../../../../../../../../../js/groups.js";import{loadLocaleContent as y}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function k(t,o,n){const e=t.slice();return e[7]=o[n][0],e[8]=o[n][1],e}function z(t,o,n){const e=t.slice();return e[11]=o[n],e}function D(t){let o,n,r,a,i,s,c,x,v,y,z,D,E,O,R,T,A,C,H,L,M=t[1].groups+"",S=t[1].p1+"",_=t[1].subheading1+"",q=t[1]["map-prompt"]+"",B=Object.entries(w),F=[];for(let o=0;on(0,e=t)));let i=x({});function m(t,o){let n=t([22,0],2);v(n,o)}s(t,i,(t=>n(1,r=t))),y(i,"groups-component",a),y(i,"countries",a),c((()=>{}));return[e,r,a,i,m,t=>m(t,r),t=>r[t]]}class A extends t{constructor(t){super(),this.shadowRoot.innerHTML="",o(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},T,R,r,{},null),t&&t.target&&e(t.target,this,t.anchor)}}customElements.define("groups-component",A);export{A as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, j as validate_each_argument, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, r as set_custom_element_data, u as append_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { groupsByCountry, addMarkersGroups } from '../../../../../../../../../js/groups.js'; +import { loadLocaleContent, getData, sendData } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\groups-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; + +const file = "src\\groups-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i][0]; + child_ctx[10] = list[i][1]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; +} + +// (39:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[0].groups + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let p0; + let t3_value = /*$content*/ ctx[0].p1 + ""; + let t3; + let t4; + let h3; + let t5_value = /*$content*/ ctx[0].subheading1 + ""; + let t5; + let t6; + let map_component; + let map_component_callback_value; + let t7; + let p1; + let t8_value = /*$content*/ ctx[0]["map-prompt"] + ""; + let t8; + let t9; + let each_value = Object.entries(groupsByCountry); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + p0 = element("p"); + t3 = text(t3_value); + t4 = space(); + h3 = element("h3"); + t5 = text(t5_value); + t6 = space(); + map_component = element("map-component"); + t7 = space(); + p1 = element("p"); + t8 = text(t8_value); + t9 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + add_location(h1, file, 42, 16, 1236); + attr_dev(img, "id", "groups-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/groups.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "groups"); + add_location(img, file, 43, 16, 1280); + attr_dev(p0, "class", "description"); + add_location(p0, file, 44, 16, 1361); + add_location(h3, file, 45, 16, 1419); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[8]); + add_location(map_component, file, 46, 16, 1468); + attr_dev(p1, "id", "add-prompt"); + add_location(p1, file, 47, 16, 1597); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 41, 12, 1193); + attr_dev(div1, "id", "container"); + add_location(div1, file, 39, 8, 1090); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p0); + append_dev(p0, t3); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(h3, t5); + append_dev(div0, t6); + append_dev(div0, map_component); + append_dev(div0, t7); + append_dev(div0, p1); + append_dev(p1, t8); + append_dev(div0, t9); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].groups + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].p1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t5_value !== (t5_value = /*$content*/ ctx[0].subheading1 + "")) set_data_dev(t5, t5_value); + + if (dirty & /*$content*/ 1 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[8])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0]["map-prompt"] + "")) set_data_dev(t8, t8_value); + + if (dirty & /*Object, groupsByCountry, $content, getAddress, getCountry*/ 193) { + each_value = Object.entries(groupsByCountry); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(39:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (52:24) {#each groups as group} +function create_each_block_1(ctx) { + let div; + let p0; + let b0; + let t0_value = /*$content*/ ctx[0].location + ""; + let t0; + let t1; + let t2_value = /*getAddress*/ ctx[7](/*group*/ ctx[13]) + ""; + let t2; + let t3; + let p1; + let b1; + let t4_value = /*$content*/ ctx[0].members + ""; + let t4; + let t5; + let t6_value = /*group*/ ctx[13].members + ""; + let t6; + let t7; + let p2; + let b2; + let t8_value = /*$content*/ ctx[0].contact + ""; + let t8; + let t9; + let a; + let t10_value = /*$content*/ ctx[0][/*group*/ ctx[13].contact[1]] + ""; + let t10; + + const block = { + c: function create() { + div = element("div"); + p0 = element("p"); + b0 = element("b"); + t0 = text(t0_value); + t1 = text(": "); + t2 = text(t2_value); + t3 = space(); + p1 = element("p"); + b1 = element("b"); + t4 = text(t4_value); + t5 = text(": "); + t6 = text(t6_value); + t7 = space(); + p2 = element("p"); + b2 = element("b"); + t8 = text(t8_value); + t9 = text(": "); + a = element("a"); + t10 = text(t10_value); + add_location(b0, file, 53, 35, 1980); + add_location(p0, file, 53, 32, 1977); + add_location(b1, file, 54, 35, 2068); + add_location(p1, file, 54, 32, 2065); + add_location(b2, file, 55, 35, 2151); + attr_dev(a, "href", /*group*/ ctx[13].contact[0]); + attr_dev(a, "target", ";_blank;"); + attr_dev(a, "rel", "noreferrer"); + add_location(a, file, 55, 62, 2178); + add_location(p2, file, 55, 32, 2148); + attr_dev(div, "class", "location-info"); + add_location(div, file, 52, 28, 1916); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, p0); + append_dev(p0, b0); + append_dev(b0, t0); + append_dev(b0, t1); + append_dev(p0, t2); + append_dev(div, t3); + append_dev(div, p1); + append_dev(p1, b1); + append_dev(b1, t4); + append_dev(b1, t5); + append_dev(p1, t6); + append_dev(div, t7); + append_dev(div, p2); + append_dev(p2, b2); + append_dev(b2, t8); + append_dev(b2, t9); + append_dev(p2, a); + append_dev(a, t10); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].location + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t4_value !== (t4_value = /*$content*/ ctx[0].members + "")) set_data_dev(t4, t4_value); + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0].contact + "")) set_data_dev(t8, t8_value); + if (dirty & /*$content*/ 1 && t10_value !== (t10_value = /*$content*/ ctx[0][/*group*/ ctx[13].contact[1]] + "")) set_data_dev(t10, t10_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(52:24) {#each groups as group}", + ctx + }); + + return block; +} + +// (49:16) {#each Object.entries(groupsByCountry) as [name,groups]} +function create_each_block(ctx) { + let h4; + let t0_value = /*getCountry*/ ctx[6](/*name*/ ctx[9]) + ""; + let t0; + let t1; + let div; + let t2; + let each_value_1 = /*groups*/ ctx[10]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + h4 = element("h4"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + attr_dev(h4, "class", "country-name"); + add_location(h4, file, 49, 20, 1740); + attr_dev(div, "class", "country-block"); + add_location(div, file, 50, 20, 1810); + }, + m: function mount(target, anchor) { + insert_dev(target, h4, anchor); + append_dev(h4, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append_dev(div, t2); + }, + p: function update(ctx, dirty) { + if (dirty & /*Object, groupsByCountry, $content, getAddress*/ 129) { + each_value_1 = /*groups*/ ctx[10]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(h4); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(49:16) {#each Object.entries(groupsByCountry) as [name,groups]}", + ctx + }); + + return block; +} + +// (38:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[1] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[1] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(38:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[1]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 2 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[1])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('groups-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(1, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(0, $content = value)); + let locale = loadLocaleContent(content, "groups-component", loaded); + loadLocaleContent(content, "countries", loaded); + + function mapCallbackGroups(createMap, content, locale) { + let map = createMap([22, 0], 2); + addMarkersGroups(map, content, locale); + } + + function getCountry(name) { + return locale == "en" ? name : $content[name]; + } + + function getAddress(group) { + return group.location[0].map(x => locale == "en" ? x : $content[x]).join(", "); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const func = createMap => mapCallbackGroups(createMap, $content, locale); + + $$self.$capture_state = () => ({ + onMount, + writable, + groupsByCountry, + addMarkersGroups, + loadLocaleContent, + getData, + sendData, + loaded, + content, + locale, + mapCallbackGroups, + getCountry, + getAddress, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) $$invalidate(4, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + $content, + $loaded, + loaded, + content, + locale, + mapCallbackGroups, + getCountry, + getAddress, + func + ]; +} + +class Groups_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("groups-component", Groups_component); + +export { Groups_component as default }; diff --git a/Server/public/js/components/join-us-component.js b/Server/public/js/components/join-us-component.js index c8e7427..8ceec18 100644 --- a/Server/public/js/components/join-us-component.js +++ b/Server/public/js/components/join-us-component.js @@ -1 +1,596 @@ -import{S as o,i as t,a as i,b as e,s as r,e as n,n as a,d as s,c as m,o as l,f as c,t as p,g,j as u,h as d,k as h,l as f,m as b}from"./index-4348483d.js";import{w as v}from"./index-71440b21.js";import{addMarkersGroups as j,groupsMarkersLayer as k}from"../../../../../../../../../js/groups.js";import{addMarkersCoops as w,coopsMarkersLayer as y}from"../../../../../../../../../js/coops.js";import{addMarkersCommunes as x,communesMarkersLayer as P}from"../../../../../../../../../js/communes.js";import{addMarkersParties as T,partiesMarkersLayer as N}from"../../../../../../../../../js/parties.js";import{loadLocaleContent as S}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function z(o){let t,i,r,n,a,m,l,v,j,k,w,y,x,P,T,N,S,z,A,D,H,L,O,U,C,G,M,E,K,R,W,Y,_,B,J,Q,q,F,I,V,X,Z,$,oo,to,io,eo,ro,no,ao,so,mo,lo,co,po,go,uo,ho,fo,bo,vo,jo,ko,wo,yo,xo,Po,To,No,So,zo,Ao,Do,Ho,Lo,Oo,Uo,Co,Go,Mo,Eo,Ko,Ro,Wo=o[1].heading+"",Yo=o[1].condition1+"",_o=o[1].condition2+"",Bo=o[1].condition3+"",Jo=o[1].conditionsOutcome+"",Qo=o[1].subheading1+"",qo=o[1].valueProposition1+"",Fo=o[1].valueProposition2+"",Io=o[1].valueProposition3+"",Vo=o[1].valueProposition4+"",Xo=o[1].valueProposition5+"",Zo=o[1].subheading2+"",$o=o[1].findOur+"",ot=o[1].group+"",tt=o[1].commune+"",it=o[1].cooperative+"",et=o[1].or+"",rt=o[1].party+"",nt=o[1].nearYou+"",at=o[1].noneNear+"",st=o[1].WhatsAppGroup+"",mt=o[1].or+"",lt=o[1].DiscordServer+"",ct=o[1].helpStart+"";return{c(){t=c("div"),i=c("div"),r=c("h1"),n=p(Wo),a=g(),m=c("img"),v=g(),j=c("ol"),k=c("li"),w=p(Yo),y=g(),x=c("li"),P=p(_o),T=g(),N=c("li"),S=p(Bo),z=g(),A=c("p"),D=g(),H=c("h2"),L=p(Qo),O=g(),U=c("ol"),C=c("li"),G=p(qo),M=g(),E=c("li"),K=p(Fo),R=g(),W=c("li"),Y=p(Io),_=g(),B=c("li"),J=p(Vo),Q=g(),q=c("p"),F=p(Xo),I=g(),V=c("h2"),X=p(Zo),Z=g(),$=c("div"),oo=c("p"),to=p($o),io=g(),eo=c("ol"),ro=c("li"),no=c("a"),ao=p(ot),so=p(","),mo=g(),lo=c("li"),co=c("a"),po=p(tt),go=g(),uo=c("li"),ho=c("a"),fo=p(it),bo=g(),vo=p(et),jo=g(),ko=c("li"),wo=c("a"),yo=p(rt),xo=g(),Po=c("p"),To=p(nt),No=g(),So=c("p"),zo=p(at),Ao=g(),Do=c("a"),Ho=p(st),Lo=g(),Oo=p(mt),Uo=g(),Co=c("a"),Go=p(lt),Mo=p(ct),Eo=g(),Ko=c("map-component"),u(m.src,l="/img/common/join-group.svg")||d(m,"src","/img/common/join-group.svg"),d(m,"id","join-group"),d(m,"alt","join group"),d(j,"id","condition-list"),d(U,"id","value-proposition-list"),d(no,"href","/"+o[4]+"/groups"),d(co,"href","/"+o[4]+"/communes"),d(ho,"href","/"+o[4]+"/cooperatives"),d(wo,"href","/"+o[4]+"/parties"),d(eo,"id","entities-list"),d($,"id","call-to-action-list"),d(Do,"href","https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"),d(Do,"target","_blank"),d(Do,"rel","noreferrer"),d(Co,"href","https://discord.gg/Qk8KUk787z"),d(Co,"target","_blank"),d(Co,"rel","noreferrer"),h(Ko,"id","map"),h(Ko,"callback",Ro=o[6]),d(i,"id","text-container"),d(t,"id","container")},m(o,s){e(o,t,s),f(t,i),f(i,r),f(r,n),f(i,a),f(i,m),f(i,v),f(i,j),f(j,k),f(k,w),f(j,y),f(j,x),f(x,P),f(j,T),f(j,N),f(N,S),f(j,z),f(j,A),A.innerHTML=Jo,f(i,D),f(i,H),f(H,L),f(i,O),f(i,U),f(U,C),f(C,G),f(U,M),f(U,E),f(E,K),f(U,R),f(U,W),f(W,Y),f(U,_),f(U,B),f(B,J),f(U,Q),f(U,q),f(q,F),f(i,I),f(i,V),f(V,X),f(i,Z),f(i,$),f($,oo),f(oo,to),f($,io),f($,eo),f(eo,ro),f(ro,no),f(no,ao),f(ro,so),f(eo,mo),f(eo,lo),f(lo,co),f(co,po),f(eo,go),f(eo,uo),f(uo,ho),f(ho,fo),f(uo,bo),f(uo,vo),f(eo,jo),f(eo,ko),f(ko,wo),f(wo,yo),f($,xo),f($,Po),f(Po,To),f(i,No),f(i,So),f(So,zo),f(So,Ao),f(So,Do),f(Do,Ho),f(So,Lo),f(So,Oo),f(So,Uo),f(So,Co),f(Co,Go),f(So,Mo),f(i,Eo),f(i,Ko)},p(o,t){2&t&&Wo!==(Wo=o[1].heading+"")&&b(n,Wo),2&t&&Yo!==(Yo=o[1].condition1+"")&&b(w,Yo),2&t&&_o!==(_o=o[1].condition2+"")&&b(P,_o),2&t&&Bo!==(Bo=o[1].condition3+"")&&b(S,Bo),2&t&&Jo!==(Jo=o[1].conditionsOutcome+"")&&(A.innerHTML=Jo),2&t&&Qo!==(Qo=o[1].subheading1+"")&&b(L,Qo),2&t&&qo!==(qo=o[1].valueProposition1+"")&&b(G,qo),2&t&&Fo!==(Fo=o[1].valueProposition2+"")&&b(K,Fo),2&t&&Io!==(Io=o[1].valueProposition3+"")&&b(Y,Io),2&t&&Vo!==(Vo=o[1].valueProposition4+"")&&b(J,Vo),2&t&&Xo!==(Xo=o[1].valueProposition5+"")&&b(F,Xo),2&t&&Zo!==(Zo=o[1].subheading2+"")&&b(X,Zo),2&t&&$o!==($o=o[1].findOur+"")&&b(to,$o),2&t&&ot!==(ot=o[1].group+"")&&b(ao,ot),2&t&&tt!==(tt=o[1].commune+"")&&b(po,tt),2&t&&it!==(it=o[1].cooperative+"")&&b(fo,it),2&t&&et!==(et=o[1].or+"")&&b(vo,et),2&t&&rt!==(rt=o[1].party+"")&&b(yo,rt),2&t&&nt!==(nt=o[1].nearYou+"")&&b(To,nt),2&t&&at!==(at=o[1].noneNear+"")&&b(zo,at),2&t&&st!==(st=o[1].WhatsAppGroup+"")&&b(Ho,st),2&t&&mt!==(mt=o[1].or+"")&&b(Oo,mt),2&t&<!==(lt=o[1].DiscordServer+"")&&b(Go,lt),2&t&&ct!==(ct=o[1].helpStart+"")&&b(Mo,ct),2&t&&Ro!==(Ro=o[6])&&h(Ko,"callback",Ro)},d(o){o&&s(t)}}}function A(o){let t,i=6==o[0]&&z(o);return{c(){i&&i.c(),t=n()},m(o,r){i&&i.m(o,r),e(o,t,r)},p(o,e){6==o[0]?i?i.p(o,e):(i=z(o),i.c(),i.m(t.parentNode,t)):i&&(i.d(1),i=null)},d(o){i&&i.d(o),o&&s(t)}}}function D(o){let t,i=o[0],m=A(o);return{c(){m.c(),t=n(),this.c=a},m(o,i){m.m(o,i),e(o,t,i)},p(o,[e]){1&e&&r(i,i=o[0])?(m.d(1),m=A(o),m.c(),m.m(t.parentNode,t)):m.p(o,e)},i:a,o:a,d(o){o&&s(t),m.d(o)}}}function H(o,t,i){let e,r,n=v(0);m(o,n,(o=>i(0,e=o)));let a=v({});m(o,a,(o=>i(1,r=o))),S(a,"groups-component",n),S(a,"communes-component",n),S(a,"cooperatives-component",n),S(a,"parties-component",n),S(a,"countries",n);let s=S(a,"join-us-component",n);function c(o,t){let i=o([22,0],2);j(i,t),x(i,t),w(i,t),T(i,t);let e={Groups:k,Communes:P,Coops:y,Parties:N};L.control.layers(null,e).addTo(i)}l((()=>{}));return[e,r,n,a,s,c,o=>c(o,r)]}class O extends o{constructor(o){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:i(this.attributes),customElement:!0},H,D,r,{},null),o&&o.target&&e(o.target,this,o.anchor)}}customElements.define("join-us-component",O);export{O as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, f as empty, n as noop, h as detach_dev, k as element, t as text, l as space, m as add_location, q as src_url_equal, p as attr_dev, r as set_custom_element_data, u as append_dev, w as set_data_dev } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { addMarkersGroups, groupsMarkersLayer } from '../../../../../../../../../js/groups.js'; +import { addMarkersCoops, coopsMarkersLayer } from '../../../../../../../../../js/coops.js'; +import { addMarkersCommunes, communesMarkersLayer } from '../../../../../../../../../js/communes.js'; +import { addMarkersParties, partiesMarkersLayer } from '../../../../../../../../../js/parties.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\join-us-component.svelte generated by Svelte v3.52.0 */ + +const file = "src\\join-us-component.svelte"; + +// (49:4) {#if $loaded==6} +function create_if_block(ctx) { + let div2; + let div1; + let h1; + let t0_value = /*$content*/ ctx[1].heading + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let ol0; + let li0; + let t3_value = /*$content*/ ctx[1].condition1 + ""; + let t3; + let t4; + let li1; + let t5_value = /*$content*/ ctx[1].condition2 + ""; + let t5; + let t6; + let li2; + let t7_value = /*$content*/ ctx[1].condition3 + ""; + let t7; + let t8; + let p0; + let raw_value = /*$content*/ ctx[1].conditionsOutcome + ""; + let t9; + let h20; + let t10_value = /*$content*/ ctx[1].subheading1 + ""; + let t10; + let t11; + let ol1; + let li3; + let t12_value = /*$content*/ ctx[1].valueProposition1 + ""; + let t12; + let t13; + let li4; + let t14_value = /*$content*/ ctx[1].valueProposition2 + ""; + let t14; + let t15; + let li5; + let t16_value = /*$content*/ ctx[1].valueProposition3 + ""; + let t16; + let t17; + let li6; + let t18_value = /*$content*/ ctx[1].valueProposition4 + ""; + let t18; + let t19; + let p1; + let t20_value = /*$content*/ ctx[1].valueProposition5 + ""; + let t20; + let t21; + let h21; + let t22_value = /*$content*/ ctx[1].subheading2 + ""; + let t22; + let t23; + let div0; + let p2; + let t24_value = /*$content*/ ctx[1].findOur + ""; + let t24; + let t25; + let ol2; + let li7; + let a0; + let t26_value = /*$content*/ ctx[1].group + ""; + let t26; + let t27; + let t28; + let li8; + let a1; + let t29_value = /*$content*/ ctx[1].commune + ""; + let t29; + let t30; + let li9; + let a2; + let t31_value = /*$content*/ ctx[1].cooperative + ""; + let t31; + let t32; + let t33_value = /*$content*/ ctx[1].or + ""; + let t33; + let t34; + let li10; + let a3; + let t35_value = /*$content*/ ctx[1].party + ""; + let t35; + let t36; + let p3; + let t37_value = /*$content*/ ctx[1].nearYou + ""; + let t37; + let t38; + let p4; + let t39_value = /*$content*/ ctx[1].noneNear + ""; + let t39; + let t40; + let a4; + let t41_value = /*$content*/ ctx[1].WhatsAppGroup + ""; + let t41; + let t42; + let t43_value = /*$content*/ ctx[1].or + ""; + let t43; + let t44; + let a5; + let t45_value = /*$content*/ ctx[1].DiscordServer + ""; + let t45; + let t46_value = /*$content*/ ctx[1].helpStart + ""; + let t46; + let t47; + let map_component; + let map_component_callback_value; + + const block = { + c: function create() { + div2 = element("div"); + div1 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + ol0 = element("ol"); + li0 = element("li"); + t3 = text(t3_value); + t4 = space(); + li1 = element("li"); + t5 = text(t5_value); + t6 = space(); + li2 = element("li"); + t7 = text(t7_value); + t8 = space(); + p0 = element("p"); + t9 = space(); + h20 = element("h2"); + t10 = text(t10_value); + t11 = space(); + ol1 = element("ol"); + li3 = element("li"); + t12 = text(t12_value); + t13 = space(); + li4 = element("li"); + t14 = text(t14_value); + t15 = space(); + li5 = element("li"); + t16 = text(t16_value); + t17 = space(); + li6 = element("li"); + t18 = text(t18_value); + t19 = space(); + p1 = element("p"); + t20 = text(t20_value); + t21 = space(); + h21 = element("h2"); + t22 = text(t22_value); + t23 = space(); + div0 = element("div"); + p2 = element("p"); + t24 = text(t24_value); + t25 = space(); + ol2 = element("ol"); + li7 = element("li"); + a0 = element("a"); + t26 = text(t26_value); + t27 = text(","); + t28 = space(); + li8 = element("li"); + a1 = element("a"); + t29 = text(t29_value); + t30 = space(); + li9 = element("li"); + a2 = element("a"); + t31 = text(t31_value); + t32 = space(); + t33 = text(t33_value); + t34 = space(); + li10 = element("li"); + a3 = element("a"); + t35 = text(t35_value); + t36 = space(); + p3 = element("p"); + t37 = text(t37_value); + t38 = space(); + p4 = element("p"); + t39 = text(t39_value); + t40 = space(); + a4 = element("a"); + t41 = text(t41_value); + t42 = space(); + t43 = text(t43_value); + t44 = space(); + a5 = element("a"); + t45 = text(t45_value); + t46 = text(t46_value); + t47 = space(); + map_component = element("map-component"); + add_location(h1, file, 51, 16, 1794); + if (!src_url_equal(img.src, img_src_value = "/img/common/join-group.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "id", "join-group"); + attr_dev(img, "alt", "join group"); + add_location(img, file, 52, 16, 1839); + add_location(li0, file, 54, 20, 1974); + add_location(li1, file, 55, 20, 2026); + add_location(li2, file, 56, 20, 2078); + add_location(p0, file, 57, 20, 2130); + attr_dev(ol0, "id", "condition-list"); + add_location(ol0, file, 53, 16, 1928); + add_location(h20, file, 59, 16, 2212); + add_location(li3, file, 61, 20, 2315); + add_location(li4, file, 62, 20, 2374); + add_location(li5, file, 63, 20, 2433); + add_location(li6, file, 64, 20, 2492); + add_location(p1, file, 65, 20, 2551); + attr_dev(ol1, "id", "value-proposition-list"); + add_location(ol1, file, 60, 16, 2261); + add_location(h21, file, 67, 16, 2627); + add_location(p2, file, 69, 20, 2728); + attr_dev(a0, "href", "/" + /*locale*/ ctx[4] + "/groups"); + add_location(a0, file, 71, 28, 2828); + add_location(li7, file, 71, 24, 2824); + attr_dev(a1, "href", "/" + /*locale*/ ctx[4] + "/communes"); + add_location(a1, file, 72, 28, 2920); + add_location(li8, file, 72, 24, 2916); + attr_dev(a2, "href", "/" + /*locale*/ ctx[4] + "/cooperatives"); + add_location(a2, file, 73, 28, 3015); + add_location(li9, file, 73, 24, 3011); + attr_dev(a3, "href", "/" + /*locale*/ ctx[4] + "/parties"); + add_location(a3, file, 74, 28, 3131); + add_location(li10, file, 74, 24, 3127); + attr_dev(ol2, "id", "entities-list"); + add_location(ol2, file, 70, 20, 2775); + add_location(p3, file, 76, 20, 3242); + attr_dev(div0, "id", "call-to-action-list"); + add_location(div0, file, 68, 16, 2676); + attr_dev(a4, "href", "https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"); + attr_dev(a4, "target", "_blank"); + attr_dev(a4, "rel", "noreferrer"); + add_location(a4, file, 78, 39, 3332); + attr_dev(a5, "href", "https://discord.gg/Qk8KUk787z"); + attr_dev(a5, "target", "_blank"); + attr_dev(a5, "rel", "noreferrer"); + add_location(a5, file, 78, 172, 3465); + add_location(p4, file, 78, 16, 3309); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[6]); + add_location(map_component, file, 79, 16, 3606); + attr_dev(div1, "id", "text-container"); + add_location(div1, file, 50, 12, 1751); + attr_dev(div2, "id", "container"); + add_location(div2, file, 49, 8, 1717); + }, + m: function mount(target, anchor) { + insert_dev(target, div2, anchor); + append_dev(div2, div1); + append_dev(div1, h1); + append_dev(h1, t0); + append_dev(div1, t1); + append_dev(div1, img); + append_dev(div1, t2); + append_dev(div1, ol0); + append_dev(ol0, li0); + append_dev(li0, t3); + append_dev(ol0, t4); + append_dev(ol0, li1); + append_dev(li1, t5); + append_dev(ol0, t6); + append_dev(ol0, li2); + append_dev(li2, t7); + append_dev(ol0, t8); + append_dev(ol0, p0); + p0.innerHTML = raw_value; + append_dev(div1, t9); + append_dev(div1, h20); + append_dev(h20, t10); + append_dev(div1, t11); + append_dev(div1, ol1); + append_dev(ol1, li3); + append_dev(li3, t12); + append_dev(ol1, t13); + append_dev(ol1, li4); + append_dev(li4, t14); + append_dev(ol1, t15); + append_dev(ol1, li5); + append_dev(li5, t16); + append_dev(ol1, t17); + append_dev(ol1, li6); + append_dev(li6, t18); + append_dev(ol1, t19); + append_dev(ol1, p1); + append_dev(p1, t20); + append_dev(div1, t21); + append_dev(div1, h21); + append_dev(h21, t22); + append_dev(div1, t23); + append_dev(div1, div0); + append_dev(div0, p2); + append_dev(p2, t24); + append_dev(div0, t25); + append_dev(div0, ol2); + append_dev(ol2, li7); + append_dev(li7, a0); + append_dev(a0, t26); + append_dev(li7, t27); + append_dev(ol2, t28); + append_dev(ol2, li8); + append_dev(li8, a1); + append_dev(a1, t29); + append_dev(ol2, t30); + append_dev(ol2, li9); + append_dev(li9, a2); + append_dev(a2, t31); + append_dev(li9, t32); + append_dev(li9, t33); + append_dev(ol2, t34); + append_dev(ol2, li10); + append_dev(li10, a3); + append_dev(a3, t35); + append_dev(div0, t36); + append_dev(div0, p3); + append_dev(p3, t37); + append_dev(div1, t38); + append_dev(div1, p4); + append_dev(p4, t39); + append_dev(p4, t40); + append_dev(p4, a4); + append_dev(a4, t41); + append_dev(p4, t42); + append_dev(p4, t43); + append_dev(p4, t44); + append_dev(p4, a5); + append_dev(a5, t45); + append_dev(p4, t46); + append_dev(div1, t47); + append_dev(div1, map_component); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 2 && t0_value !== (t0_value = /*$content*/ ctx[1].heading + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 2 && t3_value !== (t3_value = /*$content*/ ctx[1].condition1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 2 && t5_value !== (t5_value = /*$content*/ ctx[1].condition2 + "")) set_data_dev(t5, t5_value); + if (dirty & /*$content*/ 2 && t7_value !== (t7_value = /*$content*/ ctx[1].condition3 + "")) set_data_dev(t7, t7_value); + if (dirty & /*$content*/ 2 && raw_value !== (raw_value = /*$content*/ ctx[1].conditionsOutcome + "")) p0.innerHTML = raw_value; if (dirty & /*$content*/ 2 && t10_value !== (t10_value = /*$content*/ ctx[1].subheading1 + "")) set_data_dev(t10, t10_value); + if (dirty & /*$content*/ 2 && t12_value !== (t12_value = /*$content*/ ctx[1].valueProposition1 + "")) set_data_dev(t12, t12_value); + if (dirty & /*$content*/ 2 && t14_value !== (t14_value = /*$content*/ ctx[1].valueProposition2 + "")) set_data_dev(t14, t14_value); + if (dirty & /*$content*/ 2 && t16_value !== (t16_value = /*$content*/ ctx[1].valueProposition3 + "")) set_data_dev(t16, t16_value); + if (dirty & /*$content*/ 2 && t18_value !== (t18_value = /*$content*/ ctx[1].valueProposition4 + "")) set_data_dev(t18, t18_value); + if (dirty & /*$content*/ 2 && t20_value !== (t20_value = /*$content*/ ctx[1].valueProposition5 + "")) set_data_dev(t20, t20_value); + if (dirty & /*$content*/ 2 && t22_value !== (t22_value = /*$content*/ ctx[1].subheading2 + "")) set_data_dev(t22, t22_value); + if (dirty & /*$content*/ 2 && t24_value !== (t24_value = /*$content*/ ctx[1].findOur + "")) set_data_dev(t24, t24_value); + if (dirty & /*$content*/ 2 && t26_value !== (t26_value = /*$content*/ ctx[1].group + "")) set_data_dev(t26, t26_value); + if (dirty & /*$content*/ 2 && t29_value !== (t29_value = /*$content*/ ctx[1].commune + "")) set_data_dev(t29, t29_value); + if (dirty & /*$content*/ 2 && t31_value !== (t31_value = /*$content*/ ctx[1].cooperative + "")) set_data_dev(t31, t31_value); + if (dirty & /*$content*/ 2 && t33_value !== (t33_value = /*$content*/ ctx[1].or + "")) set_data_dev(t33, t33_value); + if (dirty & /*$content*/ 2 && t35_value !== (t35_value = /*$content*/ ctx[1].party + "")) set_data_dev(t35, t35_value); + if (dirty & /*$content*/ 2 && t37_value !== (t37_value = /*$content*/ ctx[1].nearYou + "")) set_data_dev(t37, t37_value); + if (dirty & /*$content*/ 2 && t39_value !== (t39_value = /*$content*/ ctx[1].noneNear + "")) set_data_dev(t39, t39_value); + if (dirty & /*$content*/ 2 && t41_value !== (t41_value = /*$content*/ ctx[1].WhatsAppGroup + "")) set_data_dev(t41, t41_value); + if (dirty & /*$content*/ 2 && t43_value !== (t43_value = /*$content*/ ctx[1].or + "")) set_data_dev(t43, t43_value); + if (dirty & /*$content*/ 2 && t45_value !== (t45_value = /*$content*/ ctx[1].DiscordServer + "")) set_data_dev(t45, t45_value); + if (dirty & /*$content*/ 2 && t46_value !== (t46_value = /*$content*/ ctx[1].helpStart + "")) set_data_dev(t46, t46_value); + + if (dirty & /*$content*/ 2 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[6])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(49:4) {#if $loaded==6}", + ctx + }); + + return block; +} + +// (48:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[0] == 6 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[0] == 6) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(48:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[0]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 1 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[0])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $loaded; + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('join-us-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(0, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(1, $content = value)); + loadLocaleContent(content, "groups-component", loaded); + loadLocaleContent(content, "communes-component", loaded); + loadLocaleContent(content, "cooperatives-component", loaded); + loadLocaleContent(content, "parties-component", loaded); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "join-us-component", loaded); + + function mapCallback(createMap, content, locale) { + let map = createMap([22, 0], 2); + addMarkersGroups(map, content, locale); + addMarkersCommunes(map, content, locale); + addMarkersCoops(map, content, locale); + addMarkersParties(map, content, locale); + + let overlayMaps = { + "Groups": groupsMarkersLayer, + "Communes": communesMarkersLayer, + "Coops": coopsMarkersLayer, + "Parties": partiesMarkersLayer + }; + + L.control.layers(null, overlayMaps).addTo(map); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const func = createMap => mapCallback(createMap, $content, locale); + + $$self.$capture_state = () => ({ + onMount, + writable, + addMarkersGroups, + groupsMarkersLayer, + addMarkersCoops, + coopsMarkersLayer, + addMarkersCommunes, + communesMarkersLayer, + addMarkersParties, + partiesMarkersLayer, + loadLocaleContent, + loaded, + content, + locale, + mapCallback, + $loaded, + $content + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) $$invalidate(4, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [$loaded, $content, loaded, content, locale, mapCallback, func]; +} + +class Join_us_component extends SvelteElement { + constructor(options) { + super(); + + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("join-us-component", Join_us_component); + +export { Join_us_component as default }; diff --git a/Server/public/js/components/landing-component.js b/Server/public/js/components/landing-component.js index 8fc8089..c03e204 100644 --- a/Server/public/js/components/landing-component.js +++ b/Server/public/js/components/landing-component.js @@ -1 +1,588 @@ -import{S as t,i,a as o,b as e,s as r,e as n,n as s,d as m,c as a,o as c,w as p,f as g,g as d,t as l,h as u,j as h,v as f,k as v,l as w,m as x}from"./index-4348483d.js";import{w as b}from"./index-71440b21.js";import{addMarkersGroups as j,groupsMarkersLayer as T}from"../../../../../../../../../js/groups.js";import{addMarkersCoops as k,coopsMarkersLayer as y}from"../../../../../../../../../js/coops.js";import{addMarkersCommunes as U,communesMarkersLayer as z}from"../../../../../../../../../js/communes.js";import{addMarkersParties as N,partiesMarkersLayer as C}from"../../../../../../../../../js/parties.js";import{loadLocaleContent as A}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function E(t){let i,o,r,n,s,a,c,p,b,j,T,k,y,U,z,N,C,L,A,E,F,H,M,R,W,B,D,K,Q,S,_,q,G,I,J,O,P,V,X,Y,Z,$,tt,it,ot,et,rt,nt,st,mt,at,ct,pt,gt,dt,lt,ut,ht,ft,vt,wt,xt,bt,jt,Tt,kt,yt,Ut=t[3].top+"",zt=t[3].groupsTitle+"",Nt=t[3].groupsText+"",Ct=t[3].communesTitle+"",Lt=t[3].communesText+"",At=t[3].cooperativesTitle+"",Et=t[3].cooperativesText+"",Ft=t[3].partiesTitle+"",Ht=t[3].partiesText+"",Mt=t[3].findUs+"",Rt=t[3].whatNow+"",Wt=t[3].joinUs+"",Bt=t[3].talkWithUs+"";return{c(){i=g("div"),o=g("picture"),o.innerHTML=' \n \n crowd',r=d(),n=g("div"),s=g("p"),a=l(Ut),c=d(),p=g("div"),b=g("div"),j=g("a"),T=g("h2"),k=l(zt),y=d(),U=g("img"),N=d(),C=g("p"),L=l(Nt),A=d(),E=g("div"),F=g("a"),H=g("h2"),M=l(Ct),R=d(),W=g("img"),D=d(),K=g("p"),Q=l(Lt),S=d(),_=g("div"),q=g("a"),G=g("h2"),I=l(At),J=d(),O=g("img"),V=d(),X=g("p"),Y=l(Et),Z=d(),$=g("div"),tt=g("a"),it=g("h2"),ot=l(Ft),et=d(),rt=g("img"),st=d(),mt=g("p"),at=l(Ht),ct=d(),pt=g("h1"),gt=l(Mt),dt=d(),lt=g("map-component"),ht=d(),ft=g("h1"),vt=l(Rt),wt=d(),xt=g("div"),bt=g("a"),jt=l(Wt),Tt=d(),kt=g("a"),yt=l(Bt),u(j,"href","/"+t[6]+"/groups"),u(U,"id","groups-img"),h(U.src,z="/img/common/groups.svg")||u(U,"src","/img/common/groups.svg"),u(U,"alt","groups"),u(F,"href","/"+t[6]+"/communes"),u(W,"id","communes-img"),h(W.src,B="/img/common/commune.svg")||u(W,"src","/img/common/commune.svg"),u(W,"alt","communes"),u(q,"href","/"+t[6]+"/coops"),u(O,"id","coops-img"),h(O.src,P="/img/common/coops.svg")||u(O,"src","/img/common/coops.svg"),u(O,"alt","coops"),u(tt,"href","/"+t[6]+"/parties"),u(rt,"id","parties-img"),h(rt.src,nt="/img/common/parties.svg")||u(rt,"src","/img/common/parties.svg"),u(rt,"alt","coops"),u(p,"id","container-grid"),f(p,"--grid-width",t[1]),u(pt,"id","find-us"),v(lt,"id","map"),v(lt,"callback",ut=t[9]),v(lt,"colors",["#23AC20","#CA2437","#217BC9","#FFD326"]),u(bt,"class","link-button"),u(bt,"href","/"+t[6]+"/join-us"),u(kt,"class","link-button"),u(kt,"href","https://discord.gg/Qk8KUk787z"),u(kt,"target","_blank"),u(kt,"rel","noreferrer"),u(xt,"id","action-container"),u(n,"id","text-container"),u(i,"id","container")},m(m,g){e(m,i,g),w(i,o),w(i,r),w(i,n),w(n,s),w(s,a),w(n,c),w(n,p),w(p,b),w(b,j),w(j,T),w(T,k),w(b,y),w(b,U),w(b,N),w(b,C),w(C,L),w(p,A),w(p,E),w(E,F),w(F,H),w(H,M),w(E,R),w(E,W),w(E,D),w(E,K),w(K,Q),w(p,S),w(p,_),w(_,q),w(q,G),w(G,I),w(_,J),w(_,O),w(_,V),w(_,X),w(X,Y),w(p,Z),w(p,$),w($,tt),w(tt,it),w(it,ot),w($,et),w($,rt),w($,st),w($,mt),w(mt,at),t[8](p),w(n,ct),w(n,pt),w(pt,gt),w(n,dt),w(n,lt),w(n,ht),w(n,ft),w(ft,vt),w(n,wt),w(n,xt),w(xt,bt),w(bt,jt),w(xt,Tt),w(xt,kt),w(kt,yt)},p(t,i){8&i&&Ut!==(Ut=t[3].top+"")&&x(a,Ut),8&i&&zt!==(zt=t[3].groupsTitle+"")&&x(k,zt),8&i&&Nt!==(Nt=t[3].groupsText+"")&&x(L,Nt),8&i&&Ct!==(Ct=t[3].communesTitle+"")&&x(M,Ct),8&i&&Lt!==(Lt=t[3].communesText+"")&&x(Q,Lt),8&i&&At!==(At=t[3].cooperativesTitle+"")&&x(I,At),8&i&&Et!==(Et=t[3].cooperativesText+"")&&x(Y,Et),8&i&&Ft!==(Ft=t[3].partiesTitle+"")&&x(ot,Ft),8&i&&Ht!==(Ht=t[3].partiesText+"")&&x(at,Ht),2&i&&f(p,"--grid-width",t[1]),8&i&&Mt!==(Mt=t[3].findUs+"")&&x(gt,Mt),8&i&&ut!==(ut=t[9])&&v(lt,"callback",ut),8&i&&Rt!==(Rt=t[3].whatNow+"")&&x(vt,Rt),8&i&&Wt!==(Wt=t[3].joinUs+"")&&x(jt,Wt),8&i&&Bt!==(Bt=t[3].talkWithUs+"")&&x(yt,Bt)},d(o){o&&m(i),t[8](null)}}}function F(t){let i,o=6==t[2]&&E(t);return{c(){o&&o.c(),i=n()},m(t,r){o&&o.m(t,r),e(t,i,r)},p(t,e){6==t[2]?o?o.p(t,e):(o=E(t),o.c(),o.m(i.parentNode,i)):o&&(o.d(1),o=null)},d(t){o&&o.d(t),t&&m(i)}}}function H(t){let i,o=t[2],a=F(t);return{c(){a.c(),i=n(),this.c=s},m(t,o){a.m(t,o),e(t,i,o)},p(t,[e]){4&e&&r(o,o=t[2])?(a.d(1),a=F(t),a.c(),a.m(i.parentNode,i)):a.p(t,e)},i:s,o:s,d(t){t&&m(i),a.d(t)}}}function M(t,i,o){let e,r,n,s,m=b(0);a(t,m,(t=>o(2,e=t)));let g=b({});function d(t){o(1,s="1fr 1fr")}a(t,g,(t=>o(3,r=t))),A(g,"groups-component",m),A(g,"communes-component",m),A(g,"cooperatives-component",m),A(g,"parties-component",m),A(g,"countries",m);let l=A(g,"landing-component",m,d);function u(t,i){let o=t([22,0],2);j(o,i),U(o,i),k(o,i),N(o,i);let e={};e[i.groups]=T,e[i.communes]=z,e[i.cooperatives]=y,e[i.parties]=C,L.control.layers(null,e).addTo(o)}d(),c((()=>{}));return[n,s,e,r,m,g,l,u,function(t){p[t?"unshift":"push"]((()=>{n=t,o(0,n)}))},t=>u(t,r)]}class R extends t{constructor(t){super(),this.shadowRoot.innerHTML="",i(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},M,H,r,{},null),t&&t.target&&e(t.target,this,t.anchor)}}customElements.define("landing-component",R);export{R as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, f as empty, n as noop, h as detach_dev, C as binding_callbacks, k as element, l as space, t as text, p as attr_dev, m as add_location, q as src_url_equal, D as set_style, r as set_custom_element_data, u as append_dev, w as set_data_dev } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { addMarkersGroups, groupsMarkersLayer } from '../../../../../../../../../js/groups.js'; +import { addMarkersCoops, coopsMarkersLayer } from '../../../../../../../../../js/coops.js'; +import { addMarkersCommunes, communesMarkersLayer } from '../../../../../../../../../js/communes.js'; +import { addMarkersParties, partiesMarkersLayer } from '../../../../../../../../../js/parties.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\landing-component.svelte generated by Svelte v3.52.0 */ + +const file = "src\\landing-component.svelte"; + +// (61:4) {#if $loaded==6} +function create_if_block(ctx) { + let div7; + let picture; + let source0; + let t0; + let source1; + let t1; + let img0; + let t2; + let div6; + let p0; + let t3_value = /*$content*/ ctx[3].top + ""; + let t3; + let t4; + let div4; + let div0; + let a0; + let h20; + let t5_value = /*$content*/ ctx[3].groupsTitle + ""; + let t5; + let t6; + let img1; + let img1_src_value; + let t7; + let p1; + let t8_value = /*$content*/ ctx[3].groupsText + ""; + let t8; + let t9; + let div1; + let a1; + let h21; + let t10_value = /*$content*/ ctx[3].communesTitle + ""; + let t10; + let t11; + let img2; + let img2_src_value; + let t12; + let p2; + let t13_value = /*$content*/ ctx[3].communesText + ""; + let t13; + let t14; + let div2; + let a2; + let h22; + let t15_value = /*$content*/ ctx[3].cooperativesTitle + ""; + let t15; + let t16; + let img3; + let img3_src_value; + let t17; + let p3; + let t18_value = /*$content*/ ctx[3].cooperativesText + ""; + let t18; + let t19; + let div3; + let a3; + let h23; + let t20_value = /*$content*/ ctx[3].partiesTitle + ""; + let t20; + let t21; + let img4; + let img4_src_value; + let t22; + let p4; + let t23_value = /*$content*/ ctx[3].partiesText + ""; + let t23; + let t24; + let h10; + let t25_value = /*$content*/ ctx[3].findUs + ""; + let t25; + let t26; + let map_component; + let map_component_callback_value; + let t27; + let h11; + let t28_value = /*$content*/ ctx[3].whatNow + ""; + let t28; + let t29; + let div5; + let a4; + let t30_value = /*$content*/ ctx[3].joinUs + ""; + let t30; + let t31; + let a5; + let t32_value = /*$content*/ ctx[3].talkWithUs + ""; + let t32; + + const block = { + c: function create() { + div7 = element("div"); + picture = element("picture"); + source0 = element("source"); + t0 = space(); + source1 = element("source"); + t1 = space(); + img0 = element("img"); + t2 = space(); + div6 = element("div"); + p0 = element("p"); + t3 = text(t3_value); + t4 = space(); + div4 = element("div"); + div0 = element("div"); + a0 = element("a"); + h20 = element("h2"); + t5 = text(t5_value); + t6 = space(); + img1 = element("img"); + t7 = space(); + p1 = element("p"); + t8 = text(t8_value); + t9 = space(); + div1 = element("div"); + a1 = element("a"); + h21 = element("h2"); + t10 = text(t10_value); + t11 = space(); + img2 = element("img"); + t12 = space(); + p2 = element("p"); + t13 = text(t13_value); + t14 = space(); + div2 = element("div"); + a2 = element("a"); + h22 = element("h2"); + t15 = text(t15_value); + t16 = space(); + img3 = element("img"); + t17 = space(); + p3 = element("p"); + t18 = text(t18_value); + t19 = space(); + div3 = element("div"); + a3 = element("a"); + h23 = element("h2"); + t20 = text(t20_value); + t21 = space(); + img4 = element("img"); + t22 = space(); + p4 = element("p"); + t23 = text(t23_value); + t24 = space(); + h10 = element("h1"); + t25 = text(t25_value); + t26 = space(); + map_component = element("map-component"); + t27 = space(); + h11 = element("h1"); + t28 = text(t28_value); + t29 = space(); + div5 = element("div"); + a4 = element("a"); + t30 = text(t30_value); + t31 = space(); + a5 = element("a"); + t32 = text(t32_value); + attr_dev(source0, "srcset", "/img/crowd.webp"); + add_location(source0, file, 63, 16, 2097); + attr_dev(source1, "srcset", "/img/crowd.png"); + add_location(source1, file, 64, 16, 2148); + attr_dev(img0, "id", "crowd"); + attr_dev(img0, "alt", "crowd"); + add_location(img0, file, 65, 16, 2198); + add_location(picture, file, 62, 12, 2070); + add_location(p0, file, 68, 16, 2307); + add_location(h20, file, 71, 59, 2510); + attr_dev(a0, "href", "/" + /*locale*/ ctx[6] + "/groups"); + add_location(a0, file, 71, 24, 2475); + attr_dev(img1, "id", "groups-img"); + if (!src_url_equal(img1.src, img1_src_value = "/img/common/groups.svg")) attr_dev(img1, "src", img1_src_value); + attr_dev(img1, "alt", "groups"); + add_location(img1, file, 72, 24, 2571); + add_location(p1, file, 73, 24, 2660); + add_location(div0, file, 70, 20, 2444); + add_location(h21, file, 76, 61, 2806); + attr_dev(a1, "href", "/" + /*locale*/ ctx[6] + "/communes"); + add_location(a1, file, 76, 24, 2769); + attr_dev(img2, "id", "communes-img"); + if (!src_url_equal(img2.src, img2_src_value = "/img/common/commune.svg")) attr_dev(img2, "src", img2_src_value); + attr_dev(img2, "alt", "communes"); + add_location(img2, file, 77, 24, 2869); + add_location(p2, file, 78, 24, 2963); + add_location(div1, file, 75, 20, 2738); + add_location(h22, file, 81, 58, 3108); + attr_dev(a2, "href", "/" + /*locale*/ ctx[6] + "/coops"); + add_location(a2, file, 81, 24, 3074); + attr_dev(img3, "id", "coops-img"); + if (!src_url_equal(img3.src, img3_src_value = "/img/common/coops.svg")) attr_dev(img3, "src", img3_src_value); + attr_dev(img3, "alt", "coops"); + add_location(img3, file, 82, 24, 3175); + add_location(p3, file, 83, 24, 3261); + add_location(div2, file, 80, 20, 3043); + add_location(h23, file, 86, 60, 3412); + attr_dev(a3, "href", "/" + /*locale*/ ctx[6] + "/parties"); + add_location(a3, file, 86, 24, 3376); + attr_dev(img4, "id", "parties-img"); + if (!src_url_equal(img4.src, img4_src_value = "/img/common/parties.svg")) attr_dev(img4, "src", img4_src_value); + attr_dev(img4, "alt", "coops"); + add_location(img4, file, 87, 24, 3474); + add_location(p4, file, 88, 24, 3564); + add_location(div3, file, 85, 20, 3345); + attr_dev(div4, "id", "container-grid"); + set_style(div4, "--grid-width", /*gridWidth*/ ctx[1]); + add_location(div4, file, 69, 16, 2346); + attr_dev(h10, "id", "find-us"); + add_location(h10, file, 108, 16, 6365); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[9]); + set_custom_element_data(map_component, "colors", ["#23AC20", "#CA2437", "#217BC9", "#FFD326"]); + add_location(map_component, file, 109, 16, 6422); + add_location(h11, file, 110, 16, 6596); + attr_dev(a4, "class", "link-button"); + attr_dev(a4, "href", "/" + /*locale*/ ctx[6] + "/join-us"); + add_location(a4, file, 112, 20, 6690); + attr_dev(a5, "class", "link-button"); + attr_dev(a5, "href", "https://discord.gg/Qk8KUk787z"); + attr_dev(a5, "target", "_blank"); + attr_dev(a5, "rel", "noreferrer"); + add_location(a5, file, 113, 20, 6789); + attr_dev(div5, "id", "action-container"); + add_location(div5, file, 111, 16, 6641); + attr_dev(div6, "id", "text-container"); + add_location(div6, file, 67, 12, 2264); + attr_dev(div7, "id", "container"); + add_location(div7, file, 61, 8, 2036); + }, + m: function mount(target, anchor) { + insert_dev(target, div7, anchor); + append_dev(div7, picture); + append_dev(picture, source0); + append_dev(picture, t0); + append_dev(picture, source1); + append_dev(picture, t1); + append_dev(picture, img0); + append_dev(div7, t2); + append_dev(div7, div6); + append_dev(div6, p0); + append_dev(p0, t3); + append_dev(div6, t4); + append_dev(div6, div4); + append_dev(div4, div0); + append_dev(div0, a0); + append_dev(a0, h20); + append_dev(h20, t5); + append_dev(div0, t6); + append_dev(div0, img1); + append_dev(div0, t7); + append_dev(div0, p1); + append_dev(p1, t8); + append_dev(div4, t9); + append_dev(div4, div1); + append_dev(div1, a1); + append_dev(a1, h21); + append_dev(h21, t10); + append_dev(div1, t11); + append_dev(div1, img2); + append_dev(div1, t12); + append_dev(div1, p2); + append_dev(p2, t13); + append_dev(div4, t14); + append_dev(div4, div2); + append_dev(div2, a2); + append_dev(a2, h22); + append_dev(h22, t15); + append_dev(div2, t16); + append_dev(div2, img3); + append_dev(div2, t17); + append_dev(div2, p3); + append_dev(p3, t18); + append_dev(div4, t19); + append_dev(div4, div3); + append_dev(div3, a3); + append_dev(a3, h23); + append_dev(h23, t20); + append_dev(div3, t21); + append_dev(div3, img4); + append_dev(div3, t22); + append_dev(div3, p4); + append_dev(p4, t23); + /*div4_binding*/ ctx[8](div4); + append_dev(div6, t24); + append_dev(div6, h10); + append_dev(h10, t25); + append_dev(div6, t26); + append_dev(div6, map_component); + append_dev(div6, t27); + append_dev(div6, h11); + append_dev(h11, t28); + append_dev(div6, t29); + append_dev(div6, div5); + append_dev(div5, a4); + append_dev(a4, t30); + append_dev(div5, t31); + append_dev(div5, a5); + append_dev(a5, t32); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 8 && t3_value !== (t3_value = /*$content*/ ctx[3].top + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 8 && t5_value !== (t5_value = /*$content*/ ctx[3].groupsTitle + "")) set_data_dev(t5, t5_value); + if (dirty & /*$content*/ 8 && t8_value !== (t8_value = /*$content*/ ctx[3].groupsText + "")) set_data_dev(t8, t8_value); + if (dirty & /*$content*/ 8 && t10_value !== (t10_value = /*$content*/ ctx[3].communesTitle + "")) set_data_dev(t10, t10_value); + if (dirty & /*$content*/ 8 && t13_value !== (t13_value = /*$content*/ ctx[3].communesText + "")) set_data_dev(t13, t13_value); + if (dirty & /*$content*/ 8 && t15_value !== (t15_value = /*$content*/ ctx[3].cooperativesTitle + "")) set_data_dev(t15, t15_value); + if (dirty & /*$content*/ 8 && t18_value !== (t18_value = /*$content*/ ctx[3].cooperativesText + "")) set_data_dev(t18, t18_value); + if (dirty & /*$content*/ 8 && t20_value !== (t20_value = /*$content*/ ctx[3].partiesTitle + "")) set_data_dev(t20, t20_value); + if (dirty & /*$content*/ 8 && t23_value !== (t23_value = /*$content*/ ctx[3].partiesText + "")) set_data_dev(t23, t23_value); + + if (dirty & /*gridWidth*/ 2) { + set_style(div4, "--grid-width", /*gridWidth*/ ctx[1]); + } + + if (dirty & /*$content*/ 8 && t25_value !== (t25_value = /*$content*/ ctx[3].findUs + "")) set_data_dev(t25, t25_value); + + if (dirty & /*$content*/ 8 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[9])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + + if (dirty & /*$content*/ 8 && t28_value !== (t28_value = /*$content*/ ctx[3].whatNow + "")) set_data_dev(t28, t28_value); + if (dirty & /*$content*/ 8 && t30_value !== (t30_value = /*$content*/ ctx[3].joinUs + "")) set_data_dev(t30, t30_value); + if (dirty & /*$content*/ 8 && t32_value !== (t32_value = /*$content*/ ctx[3].talkWithUs + "")) set_data_dev(t32, t32_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div7); + /*div4_binding*/ ctx[8](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(61:4) {#if $loaded==6}", + ctx + }); + + return block; +} + +// (60:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[2] == 6 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[2] == 6) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(60:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[2]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 4 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[2])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $loaded; + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('landing-component', slots, []); + let grid; + let gridWidth; + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(2, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(3, $content = value)); + + function changeWidth(locale) { + if (locale == "ru") { + $$invalidate(1, gridWidth = "1fr 1fr"); + } else { + $$invalidate(1, gridWidth = "1fr 1fr"); + } + } + + loadLocaleContent(content, "groups-component", loaded); + loadLocaleContent(content, "communes-component", loaded); + loadLocaleContent(content, "cooperatives-component", loaded); + loadLocaleContent(content, "parties-component", loaded); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "landing-component", loaded, changeWidth); + changeWidth(locale); + + function mapCallback(createMap, content, locale) { + let map = createMap([22, 0], 2); + addMarkersGroups(map, content, locale); + addMarkersCommunes(map, content, locale); + addMarkersCoops(map, content, locale); + addMarkersParties(map, content, locale); + let overlayMaps = {}; + overlayMaps[content.groups] = groupsMarkersLayer; + overlayMaps[content.communes] = communesMarkersLayer; + overlayMaps[content.cooperatives] = coopsMarkersLayer; + overlayMaps[content.parties] = partiesMarkersLayer; + L.control.layers(null, overlayMaps).addTo(map); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function div4_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + grid = $$value; + $$invalidate(0, grid); + }); + } + + const func = createMap => mapCallback(createMap, $content, locale); + + $$self.$capture_state = () => ({ + onMount, + writable, + addMarkersGroups, + groupsMarkersLayer, + addMarkersCoops, + coopsMarkersLayer, + addMarkersCommunes, + communesMarkersLayer, + addMarkersParties, + partiesMarkersLayer, + loadLocaleContent, + grid, + gridWidth, + loaded, + content, + changeWidth, + locale, + mapCallback, + $loaded, + $content + }); + + $$self.$inject_state = $$props => { + if ('grid' in $$props) $$invalidate(0, grid = $$props.grid); + if ('gridWidth' in $$props) $$invalidate(1, gridWidth = $$props.gridWidth); + if ('loaded' in $$props) $$invalidate(4, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(5, content = $$props.content); + if ('locale' in $$props) $$invalidate(6, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + grid, + gridWidth, + $loaded, + $content, + loaded, + content, + locale, + mapCallback, + div4_binding, + func + ]; +} + +class Landing_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("landing-component", Landing_component); + +export { Landing_component as default }; diff --git a/Server/public/js/components/legend-component.js b/Server/public/js/components/legend-component.js index 6a643c7..97a38cc 100644 --- a/Server/public/js/components/legend-component.js +++ b/Server/public/js/components/legend-component.js @@ -1 +1,362 @@ -import{S as t,i as e,a as s,b as o,u as n,s as r,f as i,n as a,h as l,d as c,p,o as u,g as h,t as d,v as m,l as f,q as g,m as y,w as $}from"./index-4348483d.js";import{pullLegendData as b}from"../../../../../../../../../js/predict/charts.js";function w(t,e,s){const o=t.slice();return o[10]=e[s],o[11]=e,o[12]=s,o}function x(t){let e,s,n,r,a,p,u,$,b=t[10].name+"",w=t[12];const x=()=>t[6](e,w),k=()=>t[6](null,w);function v(){return t[7](t[12])}return{c(){e=i("button"),s=i("div"),n=h(),r=i("span"),a=d(b),p=h(),l(s,"class","marker"),m(s,"background-color",t[10].color)},m(t,i){o(t,e,i),f(e,s),f(e,n),f(e,r),f(r,a),f(e,p),x(),u||($=g(e,"click",v),u=!0)},p(e,o){t=e,1&o&&m(s,"background-color",t[10].color),1&o&&b!==(b=t[10].name+"")&&y(a,b),w!==t[12]&&(k(),w=t[12],x())},d(t){t&&c(e),k(),u=!1,$()}}}function k(t){let e,s=t[0],n=[];for(let e=0;et._id)),c=a[t];for(let t=0;t{c()}));return t.$$set=t=>{"option"in t&&s(4,n=t.option),"chart"in t&&s(5,r=t.chart),"data"in t&&s(3,i=t.data)},[a,l,p,i,n,r,function(t,e){$[t?"unshift":"push"]((()=>{l[e]=t,s(1,l)}))},t=>p(t)]}class j extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:s(this.attributes),customElement:!0},v,k,r,{option:4,chart:5,data:3},null),t&&(t.target&&o(t.target,this,t.anchor),t.props&&(this.$set(t.props),n()))}static get observedAttributes(){return["option","chart","data"]}get option(){return this.$$.ctx[4]}set option(t){this.$$set({option:t}),n()}get chart(){return this.$$.ctx[5]}set chart(t){this.$$set({chart:t}),n()}get data(){return this.$$.ctx[3]}set data(t){this.$$set({data:t}),n()}}customElements.define("legend-component",j);export{j as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, B as flush, s as safe_not_equal, j as validate_each_argument, d as dispatch_dev, v as validate_slots, o as onMount, g as globals, k as element, n as noop, p as attr_dev, m as add_location, h as detach_dev, x as destroy_each, C as binding_callbacks, l as space, t as text, D as set_style, u as append_dev, y as listen_dev, w as set_data_dev } from './index-d19aafba.js'; +import { pullLegendData } from '../../../../../../../../../js/predict/charts.js'; + +/* src\components\legend-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; +const file = "src\\components\\legend-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[10] = list[i]; + child_ctx[11] = list; + child_ctx[12] = i; + return child_ctx; +} + +// (69:4) {#each legendData as item, i} +function create_each_block(ctx) { + let button; + let div; + let t0; + let span; + let t1_value = /*item*/ ctx[10].name + ""; + let t1; + let t2; + let i = /*i*/ ctx[12]; + let mounted; + let dispose; + const assign_button = () => /*button_binding*/ ctx[6](button, i); + const unassign_button = () => /*button_binding*/ ctx[6](null, i); + + function click_handler() { + return /*click_handler*/ ctx[7](/*i*/ ctx[12]); + } + + const block = { + c: function create() { + button = element("button"); + div = element("div"); + t0 = space(); + span = element("span"); + t1 = text(t1_value); + t2 = space(); + attr_dev(div, "class", "marker"); + set_style(div, "background-color", /*item*/ ctx[10].color); + add_location(div, file, 70, 12, 1892); + add_location(span, file, 71, 12, 1971); + add_location(button, file, 69, 8, 1814); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, div); + append_dev(button, t0); + append_dev(button, span); + append_dev(span, t1); + append_dev(button, t2); + assign_button(); + + if (!mounted) { + dispose = listen_dev(button, "click", click_handler, false, false, false); + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*legendData*/ 1) { + set_style(div, "background-color", /*item*/ ctx[10].color); + } + + if (dirty & /*legendData*/ 1 && t1_value !== (t1_value = /*item*/ ctx[10].name + "")) set_data_dev(t1, t1_value); + + if (i !== /*i*/ ctx[12]) { + unassign_button(); + i = /*i*/ ctx[12]; + assign_button(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + unassign_button(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(69:4) {#each legendData as item, i}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let div; + let each_value = /*legendData*/ ctx[0]; + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + this.c = noop; + attr_dev(div, "class", "legend"); + add_location(div, file, 67, 0, 1749); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*buttons, toggleSeries, legendData*/ 7) { + each_value = /*legendData*/ ctx[0]; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('legend-component', slots, []); + let { option = null } = $$props; + let { chart = null } = $$props; + let { data = {} } = $$props; + + // Main code + let legendData = []; + + let buttons = []; + let dataKeys; + + function init() { + if (option == null || option == undefined || chart == null || chart == undefined) { + setTimeout(init, 100); + } else { + $$invalidate(0, legendData = pullLegendData(legendData, option)); + + for (let obj of legendData) { + $$invalidate(3, data[obj.name] = true, data); + } + + dataKeys = Object.keys(data); + } + } + + function toggleSeries(i) { + $$invalidate(3, data[dataKeys[i]] = !data[dataKeys[i]], data); + let inds = []; + let ids = option.series.map(x => x._id); + let id = ids[i]; + + for (let j = 0; j < ids.length; j++) { + if (ids[j] == id) { + inds.push(j); + } + } + + for (let i of inds) { + let series = option.series[i]; + + if (!series.tooltip.show) { + series.lineStyle.opacity = 1; + series.itemStyle.opacity = 1; + series.tooltip.show = true; + $$invalidate(1, buttons[inds[0]].style.opacity = 1, buttons); + } else { + series.lineStyle.opacity = 0; + series.itemStyle.opacity = 0; + series.tooltip.show = false; + $$invalidate(1, buttons[inds[0]].style.opacity = 0.5, buttons); + } + } + + chart.setOption(option); + } + + onMount(() => { + init(); + }); + + const writable_props = ['option', 'chart', 'data']; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function button_binding($$value, i) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + buttons[i] = $$value; + $$invalidate(1, buttons); + }); + } + + const click_handler = i => toggleSeries(i); + + $$self.$$set = $$props => { + if ('option' in $$props) $$invalidate(4, option = $$props.option); + if ('chart' in $$props) $$invalidate(5, chart = $$props.chart); + if ('data' in $$props) $$invalidate(3, data = $$props.data); + }; + + $$self.$capture_state = () => ({ + onMount, + pullLegendData, + option, + chart, + data, + legendData, + buttons, + dataKeys, + init, + toggleSeries + }); + + $$self.$inject_state = $$props => { + if ('option' in $$props) $$invalidate(4, option = $$props.option); + if ('chart' in $$props) $$invalidate(5, chart = $$props.chart); + if ('data' in $$props) $$invalidate(3, data = $$props.data); + if ('legendData' in $$props) $$invalidate(0, legendData = $$props.legendData); + if ('buttons' in $$props) $$invalidate(1, buttons = $$props.buttons); + if ('dataKeys' in $$props) dataKeys = $$props.dataKeys; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + legendData, + buttons, + toggleSeries, + data, + option, + chart, + button_binding, + click_handler + ]; +} + +class Legend_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + { option: 4, chart: 5, data: 3 }, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + + if (options.props) { + this.$set(options.props); + flush(); + } + } + } + + static get observedAttributes() { + return ["option", "chart", "data"]; + } + + get option() { + return this.$$.ctx[4]; + } + + set option(option) { + this.$$set({ option }); + flush(); + } + + get chart() { + return this.$$.ctx[5]; + } + + set chart(chart) { + this.$$set({ chart }); + flush(); + } + + get data() { + return this.$$.ctx[3]; + } + + set data(data) { + this.$$set({ data }); + flush(); + } +} + +customElements.define("legend-component", Legend_component); + +export { Legend_component as default }; diff --git a/Server/public/js/components/loadscreen-component.js b/Server/public/js/components/loadscreen-component.js index 4feb1ba..76d0605 100644 --- a/Server/public/js/components/loadscreen-component.js +++ b/Server/public/js/components/loadscreen-component.js @@ -1 +1,115 @@ -import{S as t,i as s,a as e,b as n,s as o,f as a,n as i,h as d,v as r,d as u,o as c,w as l}from"./index-4348483d.js";function h(t){let s;return{c(){s=a("div"),this.c=i,d(s,"id","loadscreen"),r(s,"width","100%"),r(s,"height","100%"),r(s,"background","white"),r(s,"position","absolute"),r(s,"z-index","100000")},m(e,o){n(e,s,o),t[1](s)},p:i,i:i,o:i,d(e){e&&u(s),t[1](null)}}}function p(t,s,e){let n;return c((()=>{window.addEventListener("load",(function(){e(0,n.parentNode.host.style.display="none",n)}))})),[n,function(t){l[t?"unshift":"push"]((()=>{n=t,e(0,n)}))}]}class f extends t{constructor(t){super(),s(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},p,h,o,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("loadscreen-component",f);export{f as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, k as element, n as noop, p as attr_dev, D as set_style, m as add_location, h as detach_dev, C as binding_callbacks } from './index-d19aafba.js'; + +/* src\components\loadscreen-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\loadscreen-component.svelte"; + +function create_fragment(ctx) { + let div; + + const block = { + c: function create() { + div = element("div"); + this.c = noop; + attr_dev(div, "id", "loadscreen"); + set_style(div, "width", "100%"); + set_style(div, "height", "100%"); + set_style(div, "background", "white"); + set_style(div, "position", "absolute"); + set_style(div, "z-index", "100000"); + add_location(div, file, 20, 0, 366); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + /*div_binding*/ ctx[1](div); + }, + p: noop, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + /*div_binding*/ ctx[1](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('loadscreen-component', slots, []); + let loadscreen; + + onMount(() => { + window.addEventListener('load', function () { + $$invalidate(0, loadscreen.parentNode.host.style.display = "none", loadscreen); + }); + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function div_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + loadscreen = $$value; + $$invalidate(0, loadscreen); + }); + } + + $$self.$capture_state = () => ({ onMount, loadscreen }); + + $$self.$inject_state = $$props => { + if ('loadscreen' in $$props) $$invalidate(0, loadscreen = $$props.loadscreen); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [loadscreen, div_binding]; +} + +class Loadscreen_component extends SvelteElement { + constructor(options) { + super(); + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("loadscreen-component", Loadscreen_component); + +export { Loadscreen_component as default }; diff --git a/Server/public/js/components/manifesto-component.js b/Server/public/js/components/manifesto-component.js index e0230b8..c4f3b17 100644 --- a/Server/public/js/components/manifesto-component.js +++ b/Server/public/js/components/manifesto-component.js @@ -1 +1,1490 @@ -import{S as t,i as e,a as n,b as i,s as l,e as o,n as r,d as s,c,o as a,w as d,f as m,h as u,l as f,t as h,g as p,j as g,v as w,q as b,m as x,p as y,y as v,H as k}from"./index-4348483d.js";import{w as H}from"./index-71440b21.js";import{loadLocaleContent as j,getData as I}from"../../../../../../../../../js/libraries/serverTools.js";import{px2rem as L}from"../../../../../../../../../js/libraries/miscTools.js";function T(t,e,n){const i=t.slice();return i[33]=e[n],i[34]=e,i[35]=n,i}function Y(t,e,n){const i=t.slice();return i[36]=e[n],i}function C(t,e,n){const i=t.slice();return i[36]=e[n],i}function M(t,e,n){const i=t.slice();return i[41]=e[n],i[42]=e,i[43]=n,i}function z(t,e,n){const i=t.slice();return i[44]=e[n],i[45]=e,i[46]=n,i}function A(t){let e,n,o=t[0],r=K(t);return{c(){e=m("div"),n=m("div"),r.c(),u(n,"id","text-container"),u(e,"id","container")},m(l,o){i(l,e,o),f(e,n),r.m(n,null),t[28](e)},p(t,e){1&e[0]&&l(o,o=t[0])?(r.d(1),r=K(t),r.c(),r.m(n,null)):r.p(t,e)},d(n){n&&s(e),r.d(n),t[28](null)}}}function V(t){let e,n,l,o,r,c,a=t[41].name+"",d=t[41];const g=()=>t[21](n,d),w=()=>t[21](null,d);function x(){return t[22](t[41])}return{c(){e=m("div"),n=m("button"),l=h(a),o=p(),u(n,"class","level0 heading-button"),u(e,"class","heading-button-wrapper")},m(t,s){i(t,e,s),f(e,n),f(n,l),g(),f(e,o),r||(c=b(n,"click",x),r=!0)},p(e,n){d!==(t=e)[41]&&(w(),d=t[41],g())},d(t){t&&s(e),w(),r=!1,c()}}}function O(t){let e,n=t[41],l=[];for(let e=0;et[19](n,d),w=()=>t[19](null,d);function x(){return t[20](t[44])}return{c(){e=m("div"),n=m("button"),l=h(a),o=p(),u(n,"class","level1 heading-button"),u(e,"class","heading-button-wrapper")},m(t,s){i(t,e,s),f(e,n),f(n,l),g(),f(e,o),r||(c=b(n,"click",x),r=!0)},p(e,n){d!==(t=e)[44]&&(w(),d=t[44],g())},d(t){t&&s(e),w(),r=!1,c()}}}function S(t){let e;let n=function(t,e){return Array.isArray(t[41])?O:V}(t),l=n(t);return{c(){l.c(),e=o()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&s(e)}}}function E(t){let e;let n=function(t,e){return t[33],"ul"==Object.keys(t[33])[0]?D:(t[33],"ol"==Object.keys(t[33])[0]?W:(t[33],"h3"==t[33].type?q:(t[33],"h2"==t[33].type?_:"#"==t[33][0]?B:N)))}(t),l=n(t);return{c(){l.c(),e=o()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&s(e)}}}function N(t){let e,n,l,o=t[33]+"";return{c(){e=m("p"),n=new k(!1),l=p(),n.a=l,u(e,"class","margin-end")},m(t,r){i(t,e,r),n.m(o,e),f(e,l)},p:r,d(t){t&&s(e)}}}function B(t){let e,n=t[33].slice(2,t[33].length)+"";return{c(){e=m("h1")},m(t,l){i(t,e,l),e.innerHTML=n},p:r,d(t){t&&s(e)}}}function _(t){let e,n,l,o,r,c=t[33].line+"",a=t[33];const d=()=>t[26](n,a),h=()=>t[26](null,a);return{c(){e=m("button"),n=m("h2"),l=p(),u(n,"id",t[33].id),w(e,"display","block"),w(e,"width","100%")},m(s,a){i(s,e,a),f(e,n),n.innerHTML=c,d(),f(e,l),o||(r=b(e,"click",(function(){v(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),o=!0)},p(e,n){a!==(t=e)[33]&&(h(),a=t[33],d())},d(t){t&&s(e),h(),o=!1,r()}}}function q(t){let e,n,l,o,r,c=t[33].line+"",a=t[33];const d=()=>t[25](n,a),h=()=>t[25](null,a);return{c(){e=m("button"),n=m("h3"),l=p(),u(n,"id",t[33].id),w(e,"display","block"),w(e,"width","100%")},m(s,a){i(s,e,a),f(e,n),n.innerHTML=c,d(),f(e,l),o||(r=b(e,"click",(function(){v(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),o=!0)},p(e,n){a!==(t=e)[33]&&(h(),a=t[33],d())},d(t){t&&s(e),h(),o=!1,r()}}}function W(t){let e,n,l=t[33].ol,o=[];for(let e=0;en(9,i=t)));let k=H({});c(t,k,(t=>n(10,l=t))),j(k,"countries",v);let T=j(k,"manifesto-component",v);const Y=["ul","ol"];function C(t){w[t].scrollIntoView({block:"start"},!0)}I("/locales/"+T+"/manifesto.txt",(function(t){let e,i=t.split(/\r?\n/),l=0;for(let t=0;tn.includes("<"+t+">"))).findIndex((t=>t));if(-1!=o){let e=Y[o],l={};l[e]=[];let r="";for(;;){if(t+=1,n=i[t],n.includes(r)){p.push(l);break}l[e].push(n)}}else if("###"==n.slice(0,3)){let t=n.slice(4,n.length),i=t.toLowerCase().trim().replaceAll(" ","-");e.push({id:i,name:t,index:l}),l+=1,p.push({type:"h3",id:i,line:t,index:l})}else if("##"==n.slice(0,2)){let t=n.slice(3,n.length),i=t.toLowerCase().trim().replaceAll(" ","-");b.push({id:t.toLowerCase().trim().replaceAll(" ","-"),name:t,index:l}),l+=1,e=[],b.push(e),p.push({type:"h2",id:i,line:t,index:l})}else p.push(n)}n(0,o+=1)})),addEventListener("scroll",(t=>{if(window.innerWidth>1080){let t=L(window.scrollY),e=L(f.getBoundingClientRect().bottom+window.scrollY),i=L(u.getBoundingClientRect().bottom+window.scrollY);if(t>x&&t<5||t=e-1.5)y-=i-(e-1.5);else if(y>-5&&(y=-5),t<5&&0!=t){let t=L(u.offsetHeight-window.innerHeight);y=-Math.min(L(window.scrollY),5+t+2.5)}else if(twindow.innerHeight){let e=L(u.offsetHeight)-L(window.innerHeight);y>-(e+8)?y+=x-t:y=-(e+8)}n(6,u.style.marginTop=y+"rem",u),x=L(window.scrollY)}else n(6,u.style.marginTop="0rem",u)})),a((()=>{let t=localStorage.getItem("manifesto-hide-content");null!=t&&null!=t&&"true"==t&&U(s,m)}));return[o,r,s,m,g,w,u,f,h,i,l,p,b,v,k,C,function(t){d[t?"unshift":"push"]((()=>{s=t,n(2,s)}))},function(t){d[t?"unshift":"push"]((()=>{r=t,n(1,r)}))},()=>U(s,m),function(t,e){d[t?"unshift":"push"]((()=>{g[e.index]=t,n(4,g)}))},t=>C(t.id),function(t,e){d[t?"unshift":"push"]((()=>{g[e.index]=t,n(4,g)}))},t=>C(t.id),function(t){d[t?"unshift":"push"]((()=>{m=t,n(3,m)}))},function(t){d[t?"unshift":"push"]((()=>{u=t,n(6,u)}))},function(t,e){d[t?"unshift":"push"]((()=>{w[e.id]=t,n(5,w)}))},function(t,e){d[t?"unshift":"push"]((()=>{w[e.id]=t,n(5,w)}))},function(t){d[t?"unshift":"push"]((()=>{h=t,n(8,h)}))},function(t){d[t?"unshift":"push"]((()=>{f=t,n(7,f)}))}]}class Z extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},X,Q,l,{},null,[-1,-1]),t&&t.target&&i(t.target,this,t.anchor)}}customElements.define("manifesto-component",Z);export{Z as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, C as binding_callbacks, j as validate_each_argument, k as element, p as attr_dev, m as add_location, u as append_dev, t as text, l as space, q as src_url_equal, D as set_style, y as listen_dev, w as set_data_dev, x as destroy_each, H as is_function, I as HtmlTag } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { loadLocaleContent, getData } from '../../../../../../../../../js/libraries/serverTools.js'; +import { px2rem } from '../../../../../../../../../js/libraries/miscTools.js'; + +/* src\manifesto-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; +const file = "src\\manifesto-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[33] = list[i]; + child_ctx[34] = list; + child_ctx[35] = i; + return child_ctx; +} + +function get_each_context_2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[36] = list[i]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[36] = list[i]; + return child_ctx; +} + +function get_each_context_3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[41] = list[i]; + child_ctx[42] = list; + child_ctx[43] = i; + return child_ctx; +} + +function get_each_context_4(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[44] = list[i]; + child_ctx[45] = list; + child_ctx[46] = i; + return child_ctx; +} + +// (168:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let previous_key = /*key*/ ctx[0]; + let key_block = create_key_block_1(ctx); + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + key_block.c(); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 169, 12, 6059); + attr_dev(div1, "id", "container"); + add_location(div1, file, 168, 8, 6008); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + key_block.m(div0, null); + /*div1_binding_1*/ ctx[28](div1); + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*key*/ 1 && safe_not_equal(previous_key, previous_key = /*key*/ ctx[0])) { + key_block.d(1); + key_block = create_key_block_1(ctx); + key_block.c(); + key_block.m(div0, null); + } else { + key_block.p(ctx, dirty); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + key_block.d(detaching); + /*div1_binding_1*/ ctx[28](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(168:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (187:32) {:else} +function create_else_block_1(ctx) { + let div; + let button; + let t0_value = /*obj*/ ctx[41].name + ""; + let t0; + let obj = /*obj*/ ctx[41]; + let t1; + let mounted; + let dispose; + const assign_button = () => /*button_binding_2*/ ctx[21](button, obj); + const unassign_button = () => /*button_binding_2*/ ctx[21](null, obj); + + function click_handler_2() { + return /*click_handler_2*/ ctx[22](/*obj*/ ctx[41]); + } + + const block = { + c: function create() { + div = element("div"); + button = element("button"); + t0 = text(t0_value); + t1 = space(); + attr_dev(button, "class", "level0 heading-button"); + add_location(button, file, 188, 40, 7396); + attr_dev(div, "class", "heading-button-wrapper"); + add_location(div, file, 187, 36, 7318); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, button); + append_dev(button, t0); + assign_button(); + append_dev(div, t1); + + if (!mounted) { + dispose = listen_dev(button, "click", click_handler_2, false, false, false); + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (obj !== /*obj*/ ctx[41]) { + unassign_button(); + obj = /*obj*/ ctx[41]; + assign_button(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + unassign_button(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block_1.name, + type: "else", + source: "(187:32) {:else}", + ctx + }); + + return block; +} + +// (179:32) {#if Array.isArray(obj)} +function create_if_block_8(ctx) { + let each_1_anchor; + let each_value_4 = /*obj*/ ctx[41]; + validate_each_argument(each_value_4); + let each_blocks = []; + + for (let i = 0; i < each_value_4.length; i += 1) { + each_blocks[i] = create_each_block_4(get_each_context_4(ctx, each_value_4, i)); + } + + const block = { + c: function create() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + each_1_anchor = empty(); + }, + m: function mount(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } + + insert_dev(target, each_1_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*buttons, contentHeadings, goToChapter*/ 36880) { + each_value_4 = /*obj*/ ctx[41]; + validate_each_argument(each_value_4); + let i; + + for (i = 0; i < each_value_4.length; i += 1) { + const child_ctx = get_each_context_4(ctx, each_value_4, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_4(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_4.length; + } + }, + d: function destroy(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach_dev(each_1_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_8.name, + type: "if", + source: "(179:32) {#if Array.isArray(obj)}", + ctx + }); + + return block; +} + +// (180:36) {#each obj as obj2} +function create_each_block_4(ctx) { + let div; + let button; + let t0_value = /*obj2*/ ctx[44].name + ""; + let t0; + let obj2 = /*obj2*/ ctx[44]; + let t1; + let mounted; + let dispose; + const assign_button = () => /*button_binding_1*/ ctx[19](button, obj2); + const unassign_button = () => /*button_binding_1*/ ctx[19](null, obj2); + + function click_handler_1() { + return /*click_handler_1*/ ctx[20](/*obj2*/ ctx[44]); + } + + const block = { + c: function create() { + div = element("div"); + button = element("button"); + t0 = text(t0_value); + t1 = space(); + attr_dev(button, "class", "level1 heading-button"); + add_location(button, file, 181, 40, 6934); + attr_dev(div, "class", "heading-button-wrapper"); + add_location(div, file, 180, 36, 6856); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + append_dev(div, button); + append_dev(button, t0); + assign_button(); + append_dev(div, t1); + + if (!mounted) { + dispose = listen_dev(button, "click", click_handler_1, false, false, false); + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (obj2 !== /*obj2*/ ctx[44]) { + unassign_button(); + obj2 = /*obj2*/ ctx[44]; + assign_button(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + unassign_button(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_4.name, + type: "each", + source: "(180:36) {#each obj as obj2}", + ctx + }); + + return block; +} + +// (178:28) {#each contentHeadings as obj} +function create_each_block_3(ctx) { + let if_block_anchor; + + function select_block_type(ctx, dirty) { + if (Array.isArray(/*obj*/ ctx[41])) return create_if_block_8; + return create_else_block_1; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + + const block = { + c: function create() { + if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if_block.p(ctx, dirty); + }, + d: function destroy(detaching) { + if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_3.name, + type: "each", + source: "(178:28) {#each contentHeadings as obj}", + ctx + }); + + return block; +} + +// (199:28) {#if line!==""} +function create_if_block_1(ctx) { + let if_block_anchor; + + function select_block_type_2(ctx, dirty) { + if (typeof (/*line*/ ctx[33] === 'object') && Object.keys(/*line*/ ctx[33])[0] == "ul") return create_if_block_2; + if (typeof (/*line*/ ctx[33] === 'object') && Object.keys(/*line*/ ctx[33])[0] == "ol") return create_if_block_3; + if (typeof (/*line*/ ctx[33] === 'object') && /*line*/ ctx[33].type == "h3") return create_if_block_4; + if (typeof (/*line*/ ctx[33] === 'object') && /*line*/ ctx[33].type == "h2") return create_if_block_5; + if (/*line*/ ctx[33][0] == "#") return create_if_block_6; + return create_else_block; + } + + let current_block_type = select_block_type_2(ctx); + let if_block = current_block_type(ctx); + + const block = { + c: function create() { + if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if_block.p(ctx, dirty); + }, + d: function destroy(detaching) { + if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_1.name, + type: "if", + source: "(199:28) {#if line!==\\\"\\\"}", + ctx + }); + + return block; +} + +// (224:32) {:else} +function create_else_block(ctx) { + let p; + let html_tag; + let raw_value = /*line*/ ctx[33] + ""; + let t; + + const block = { + c: function create() { + p = element("p"); + html_tag = new HtmlTag(false); + t = space(); + html_tag.a = t; + attr_dev(p, "class", "margin-end"); + add_location(p, file, 224, 36, 9794); + }, + m: function mount(target, anchor) { + insert_dev(target, p, anchor); + html_tag.m(raw_value, p); + append_dev(p, t); + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(p); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_else_block.name, + type: "else", + source: "(224:32) {:else}", + ctx + }); + + return block; +} + +// (222:55) +function create_if_block_6(ctx) { + let h1; + let raw_value = /*line*/ ctx[33].slice(2, /*line*/ ctx[33].length) + ""; + + const block = { + c: function create() { + h1 = element("h1"); + add_location(h1, file, 222, 36, 9673); + }, + m: function mount(target, anchor) { + insert_dev(target, h1, anchor); + h1.innerHTML = raw_value; + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(h1); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_6.name, + type: "if", + source: "(222:55) ", + ctx + }); + + return block; +} + +// (218:90) +function create_if_block_5(ctx) { + let button; + let h2; + let raw_value = /*line*/ ctx[33].line + ""; + let line = /*line*/ ctx[33]; + let t; + let mounted; + let dispose; + const assign_h2 = () => /*h2_binding*/ ctx[26](h2, line); + const unassign_h2 = () => /*h2_binding*/ ctx[26](null, line); + + const block = { + c: function create() { + button = element("button"); + h2 = element("h2"); + t = space(); + attr_dev(h2, "id", /*line*/ ctx[33].id); + add_location(h2, file, 219, 40, 9455); + set_style(button, "display", "block"); + set_style(button, "width", "100%"); + add_location(button, file, 218, 36, 9302); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, h2); + h2.innerHTML = raw_value; + assign_h2(); + append_dev(button, t); + + if (!mounted) { + dispose = listen_dev( + button, + "click", + function () { + if (is_function(/*contentTable*/ ctx[6].scrollIntoView({ block: 'start' }, true))) /*contentTable*/ ctx[6].scrollIntoView({ block: 'start' }, true).apply(this, arguments); + }, + false, + false, + false + ); + + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (line !== /*line*/ ctx[33]) { + unassign_h2(); + line = /*line*/ ctx[33]; + assign_h2(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + unassign_h2(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_5.name, + type: "if", + source: "(218:90) ", + ctx + }); + + return block; +} + +// (214:90) +function create_if_block_4(ctx) { + let button; + let h3; + let raw_value = /*line*/ ctx[33].line + ""; + let line = /*line*/ ctx[33]; + let t; + let mounted; + let dispose; + const assign_h3 = () => /*h3_binding*/ ctx[25](h3, line); + const unassign_h3 = () => /*h3_binding*/ ctx[25](null, line); + + const block = { + c: function create() { + button = element("button"); + h3 = element("h3"); + t = space(); + attr_dev(h3, "id", /*line*/ ctx[33].id); + add_location(h3, file, 215, 40, 9049); + set_style(button, "display", "block"); + set_style(button, "width", "100%"); + add_location(button, file, 214, 36, 8896); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, h3); + h3.innerHTML = raw_value; + assign_h3(); + append_dev(button, t); + + if (!mounted) { + dispose = listen_dev( + button, + "click", + function () { + if (is_function(/*contentTable*/ ctx[6].scrollIntoView({ block: 'start' }, true))) /*contentTable*/ ctx[6].scrollIntoView({ block: 'start' }, true).apply(this, arguments); + }, + false, + false, + false + ); + + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + + if (line !== /*line*/ ctx[33]) { + unassign_h3(); + line = /*line*/ ctx[33]; + assign_h3(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + unassign_h3(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_4.name, + type: "if", + source: "(214:90) ", + ctx + }); + + return block; +} + +// (206:101) +function create_if_block_3(ctx) { + let ol; + let t; + let each_value_2 = /*line*/ ctx[33].ol; + validate_each_argument(each_value_2); + let each_blocks = []; + + for (let i = 0; i < each_value_2.length; i += 1) { + each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); + } + + const block = { + c: function create() { + ol = element("ol"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t = space(); + add_location(ol, file, 206, 36, 8440); + }, + m: function mount(target, anchor) { + insert_dev(target, ol, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(ol, null); + } + + append_dev(ol, t); + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*manifesto*/ 2048) { + each_value_2 = /*line*/ ctx[33].ol; + validate_each_argument(each_value_2); + let i; + + for (i = 0; i < each_value_2.length; i += 1) { + const child_ctx = get_each_context_2(ctx, each_value_2, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_2(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(ol, t); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_2.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(ol); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_3.name, + type: "if", + source: "(206:101) ", + ctx + }); + + return block; +} + +// (200:32) {#if typeof (line === 'object') && (Object.keys(line)[0]=="ul")} +function create_if_block_2(ctx) { + let ul; + let t; + let each_value_1 = /*line*/ ctx[33].ul; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + ul = element("ul"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t = space(); + add_location(ul, file, 200, 36, 8075); + }, + m: function mount(target, anchor) { + insert_dev(target, ul, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(ul, null); + } + + append_dev(ul, t); + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*manifesto*/ 2048) { + each_value_1 = /*line*/ ctx[33].ul; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(ul, t); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(ul); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block_2.name, + type: "if", + source: "(200:32) {#if typeof (line === 'object') && (Object.keys(line)[0]==\\\"ul\\\")}", + ctx + }); + + return block; +} + +// (208:40) {#each line.ol as line2} +function create_each_block_2(ctx) { + let li; + let raw_value = /*line2*/ ctx[36] + ""; + + const block = { + c: function create() { + li = element("li"); + add_location(li, file, 208, 44, 8556); + }, + m: function mount(target, anchor) { + insert_dev(target, li, anchor); + li.innerHTML = raw_value; + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(li); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_2.name, + type: "each", + source: "(208:40) {#each line.ol as line2}", + ctx + }); + + return block; +} + +// (202:40) {#each line.ul as line2} +function create_each_block_1(ctx) { + let li; + let t_value = /*line2*/ ctx[36] + ""; + let t; + + const block = { + c: function create() { + li = element("li"); + t = text(t_value); + add_location(li, file, 202, 44, 8191); + }, + m: function mount(target, anchor) { + insert_dev(target, li, anchor); + append_dev(li, t); + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(li); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(202:40) {#each line.ul as line2}", + ctx + }); + + return block; +} + +// (198:24) {#each manifesto as line} +function create_each_block(ctx) { + let if_block_anchor; + + function select_block_type_1(ctx, dirty) { + if (/*line*/ ctx[33] !== "") return create_if_block_1; + } + + let current_block_type = select_block_type_1(ctx); + let if_block = current_block_type && current_block_type(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (if_block) if_block.p(ctx, dirty); + }, + d: function destroy(detaching) { + if (if_block) { + if_block.d(detaching); + } + + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(198:24) {#each manifesto as line}", + ctx + }); + + return block; +} + +// (171:16) {#key key} +function create_key_block_1(ctx) { + let div1; + let button; + let t0_value = /*$content*/ ctx[10].tableOfContents + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let div0; + let t3; + let div2; + let mounted; + let dispose; + let each_value_3 = /*contentHeadings*/ ctx[12]; + validate_each_argument(each_value_3); + let each_blocks_1 = []; + + for (let i = 0; i < each_value_3.length; i += 1) { + each_blocks_1[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); + } + + let each_value = /*manifesto*/ ctx[11]; + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + button = element("button"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + div0 = element("div"); + + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + + t3 = space(); + div2 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + if (!src_url_equal(img.src, img_src_value = "../assets/arrow_down.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "arrow down"); + set_style(img, "transform", "scaleY(-1)"); + add_location(img, file, 174, 28, 6403); + attr_dev(button, "id", "toggle-content"); + add_location(button, file, 172, 24, 6209); + attr_dev(div0, "class", "module"); + set_style(div0, "display", "initial"); + add_location(div0, file, 176, 24, 6572); + attr_dev(div1, "id", "table-content"); + add_location(div1, file, 171, 20, 6134); + attr_dev(div2, "id", "main"); + add_location(div2, file, 196, 20, 7811); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, button); + append_dev(button, t0); + append_dev(button, t1); + append_dev(button, img); + /*img_binding*/ ctx[16](img); + /*button_binding*/ ctx[17](button); + append_dev(div1, t2); + append_dev(div1, div0); + + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].m(div0, null); + } + + /*div0_binding*/ ctx[23](div0); + /*div1_binding*/ ctx[24](div1); + insert_dev(target, t3, anchor); + insert_dev(target, div2, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div2, null); + } + + /*div2_binding*/ ctx[27](div2); + + if (!mounted) { + dispose = listen_dev(button, "click", /*click_handler*/ ctx[18], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*$content*/ 1024 && t0_value !== (t0_value = /*$content*/ ctx[10].tableOfContents + "")) set_data_dev(t0, t0_value); + + if (dirty[0] & /*contentHeadings, buttons, goToChapter*/ 36880) { + each_value_3 = /*contentHeadings*/ ctx[12]; + validate_each_argument(each_value_3); + let i; + + for (i = 0; i < each_value_3.length; i += 1) { + const child_ctx = get_each_context_3(ctx, each_value_3, i); + + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + } else { + each_blocks_1[i] = create_each_block_3(child_ctx); + each_blocks_1[i].c(); + each_blocks_1[i].m(div0, null); + } + } + + for (; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].d(1); + } + + each_blocks_1.length = each_value_3.length; + } + + if (dirty[0] & /*manifesto, contentTable, headingsObjects*/ 2144) { + each_value = /*manifesto*/ ctx[11]; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div2, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + /*img_binding*/ ctx[16](null); + /*button_binding*/ ctx[17](null); + destroy_each(each_blocks_1, detaching); + /*div0_binding*/ ctx[23](null); + /*div1_binding*/ ctx[24](null); + if (detaching) detach_dev(t3); + if (detaching) detach_dev(div2); + destroy_each(each_blocks, detaching); + /*div2_binding*/ ctx[27](null); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block_1.name, + type: "key", + source: "(171:16) {#key key}", + ctx + }); + + return block; +} + +// (167:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[9] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[9] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(167:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[9]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (dirty[0] & /*$loaded*/ 512 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[9])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function hideBlock(arrow, block) { + if (block.style.display == "none" || block.style.display == "") { + block.style.display = "initial"; + arrow.style.transform = "scaleY(-1)"; + localStorage.setItem("manifesto-hide-content", "false"); + } else { + block.style.display = "none"; + arrow.style.transform = ""; + localStorage.setItem("manifesto-hide-content", "true"); + } +} + +function instance($$self, $$props, $$invalidate) { + let $loaded; + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('manifesto-component', slots, []); + let manifesto = []; + let key; + let contentButton; + let contentArrow; + let contentBlock; + let buttons = []; + let headingsObjects = {}; + let contentHeadings = []; + let contentTable; + let lastTop = 0; + let margin = 0; + let root; + let main; + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(9, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(10, $content = value)); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "manifesto-component", loaded); + const htmlDelims = ["ul", "ol"]; + + getData("/locales/" + locale + "/manifesto.txt", function (response) { + let splitText = response.split(/\r?\n/); + let currentChapter; + let cnt = 0; + + for (let j = 0; j < splitText.length; j++) { + let line = splitText[j]; + let delimInd = htmlDelims.map(x => line.includes("<" + x + ">")).findIndex(x => x); + + if (delimInd != -1) { + let delim = htmlDelims[delimInd]; + let obj = {}; + obj[delim] = []; + let delimEndTag = ""; + + while (true) { + j += 1; + line = splitText[j]; + + if (line.includes(delimEndTag)) { + manifesto.push(obj); + break; + } else { + obj[delim].push(line); + } + } + } else { + if (line.slice(0, 3) == "###") { + let heading = line.slice(4, line.length); + let id = heading.toLowerCase().trim().replaceAll(" ", "-"); + currentChapter.push({ id, name: heading, index: cnt }); + cnt += 1; + + manifesto.push({ + type: "h3", + id, + line: heading, + index: cnt + }); + } else if (line.slice(0, 2) == "##") { + let heading = line.slice(3, line.length); + let id = heading.toLowerCase().trim().replaceAll(" ", "-"); + + contentHeadings.push({ + id: heading.toLowerCase().trim().replaceAll(" ", "-"), + name: heading, + index: cnt + }); + + cnt += 1; + currentChapter = []; + contentHeadings.push(currentChapter); + + manifesto.push({ + type: "h2", + id, + line: heading, + index: cnt + }); + } else { + manifesto.push(line); + } + } + } + + $$invalidate(0, key += 1); + }); + + function goToChapter(id) { + headingsObjects[id].scrollIntoView({ block: 'start' }, true); + } + + addEventListener("scroll", event => { + if (window.innerWidth > 1080) { + let top = px2rem(window.scrollY); + let textBottom = px2rem(root.getBoundingClientRect().bottom + window.scrollY); + let tableBottom = px2rem(contentTable.getBoundingClientRect().bottom + window.scrollY); + + if (top > lastTop && top < 5 || top < lastTop && top < 5) { + margin = -Math.min(px2rem(window.scrollY), 5); + } else if (tableBottom >= textBottom - 1.5) { + margin = margin - (tableBottom - (textBottom - 1.5)); + } else { + if (margin > -5) { + margin = -5; + } + + if (top < 5 && top != 0) { + let dif = px2rem(contentTable.offsetHeight - window.innerHeight); + margin = -Math.min(px2rem(window.scrollY), 5 + dif + 2.5); + } else if (top < lastTop || margin == 0) { + if (margin < -5) { + margin = margin + (lastTop - top); + } else { + margin = -5; + } + } else { + if (contentTable.offsetHeight > window.innerHeight) { + let dif = px2rem(contentTable.offsetHeight) - px2rem(window.innerHeight); + + if (margin > -(dif + 8)) { + margin = margin + (lastTop - top); + } else { + margin = -(dif + 8); + } + } + } + } + + $$invalidate(6, contentTable.style.marginTop = margin + "rem", contentTable); + lastTop = px2rem(window.scrollY); + } else { + $$invalidate(6, contentTable.style.marginTop = "0rem", contentTable); + } + }); + + onMount(() => { + let hideBool = localStorage.getItem("manifesto-hide-content"); + + if (hideBool != undefined && hideBool != null) { + if (hideBool == "true") { + hideBlock(contentArrow, contentBlock); + } + } + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function img_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + contentArrow = $$value; + $$invalidate(2, contentArrow); + }); + } + + function button_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + contentButton = $$value; + $$invalidate(1, contentButton); + }); + } + + const click_handler = () => hideBlock(contentArrow, contentBlock); + + function button_binding_1($$value, obj2) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + buttons[obj2.index] = $$value; + $$invalidate(4, buttons); + }); + } + + const click_handler_1 = obj2 => goToChapter(obj2.id); + + function button_binding_2($$value, obj) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + buttons[obj.index] = $$value; + $$invalidate(4, buttons); + }); + } + + const click_handler_2 = obj => goToChapter(obj.id); + + function div0_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + contentBlock = $$value; + $$invalidate(3, contentBlock); + }); + } + + function div1_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + contentTable = $$value; + $$invalidate(6, contentTable); + }); + } + + function h3_binding($$value, line) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + headingsObjects[line.id] = $$value; + $$invalidate(5, headingsObjects); + }); + } + + function h2_binding($$value, line) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + headingsObjects[line.id] = $$value; + $$invalidate(5, headingsObjects); + }); + } + + function div2_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + main = $$value; + $$invalidate(8, main); + }); + } + + function div1_binding_1($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + root = $$value; + $$invalidate(7, root); + }); + } + + $$self.$capture_state = () => ({ + onMount, + writable, + getData, + px2rem, + loadLocaleContent, + manifesto, + key, + contentButton, + contentArrow, + contentBlock, + buttons, + headingsObjects, + contentHeadings, + contentTable, + lastTop, + margin, + root, + main, + loaded, + content, + locale, + htmlDelims, + hideBlock, + goToChapter, + $loaded, + $content + }); + + $$self.$inject_state = $$props => { + if ('manifesto' in $$props) $$invalidate(11, manifesto = $$props.manifesto); + if ('key' in $$props) $$invalidate(0, key = $$props.key); + if ('contentButton' in $$props) $$invalidate(1, contentButton = $$props.contentButton); + if ('contentArrow' in $$props) $$invalidate(2, contentArrow = $$props.contentArrow); + if ('contentBlock' in $$props) $$invalidate(3, contentBlock = $$props.contentBlock); + if ('buttons' in $$props) $$invalidate(4, buttons = $$props.buttons); + if ('headingsObjects' in $$props) $$invalidate(5, headingsObjects = $$props.headingsObjects); + if ('contentHeadings' in $$props) $$invalidate(12, contentHeadings = $$props.contentHeadings); + if ('contentTable' in $$props) $$invalidate(6, contentTable = $$props.contentTable); + if ('lastTop' in $$props) lastTop = $$props.lastTop; + if ('margin' in $$props) margin = $$props.margin; + if ('root' in $$props) $$invalidate(7, root = $$props.root); + if ('main' in $$props) $$invalidate(8, main = $$props.main); + if ('loaded' in $$props) $$invalidate(13, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(14, content = $$props.content); + if ('locale' in $$props) locale = $$props.locale; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + key, + contentButton, + contentArrow, + contentBlock, + buttons, + headingsObjects, + contentTable, + root, + main, + $loaded, + $content, + manifesto, + contentHeadings, + loaded, + content, + goToChapter, + img_binding, + button_binding, + click_handler, + button_binding_1, + click_handler_1, + button_binding_2, + click_handler_2, + div0_binding, + div1_binding, + h3_binding, + h2_binding, + div2_binding, + div1_binding_1 + ]; +} + +class Manifesto_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null, + [-1, -1] + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("manifesto-component", Manifesto_component); + +export { Manifesto_component as default }; diff --git a/Server/public/js/components/map-component.js b/Server/public/js/components/map-component.js index ec2f98e..f96a0e1 100644 --- a/Server/public/js/components/map-component.js +++ b/Server/public/js/components/map-component.js @@ -1 +1,175 @@ -import{S as t,i as e,a as o,b as s,u as a,s as r,f as l,n,h as i,d as c,o as m,w as h}from"./index-4348483d.js";function p(t){let e;return{c(){e=l("div"),this.c=n,i(e,"id","map")},m(o,a){s(o,e,a),t[3](e)},p:n,i:n,o:n,d(o){o&&c(e),t[3](null)}}}function u(t,e,o){let s,{callback:a=null}=e,{colors:r=null}=e;function l(t,e){let o=L.map(s,{center:t,zoom:e});return L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'© OpenStreetMap contributors',minNativeZoom:2,minZoom:2,maxNativeZoom:14,maxZoom:14}).addTo(o),o}return m((()=>{if(a(l),null!=r){let t=s.getElementsByClassName("leaflet-control-layers-overlays")[0].children;for(let e=0;e{"callback"in t&&o(1,a=t.callback),"colors"in t&&o(2,r=t.colors)},[s,a,r,function(t){h[t?"unshift":"push"]((()=>{s=t,o(0,s)}))}]}class d extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},u,p,r,{callback:1,colors:2},null),t&&(t.target&&s(t.target,this,t.anchor),t.props&&(this.$set(t.props),a()))}static get observedAttributes(){return["callback","colors"]}get callback(){return this.$$.ctx[1]}set callback(t){this.$$set({callback:t}),a()}get colors(){return this.$$.ctx[2]}set colors(t){this.$$set({colors:t}),a()}}customElements.define("map-component",d);export{d as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, B as flush, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, k as element, n as noop, p as attr_dev, m as add_location, h as detach_dev, C as binding_callbacks } from './index-d19aafba.js'; + +/* src\components\map-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\map-component.svelte"; + +function create_fragment(ctx) { + let div; + + const block = { + c: function create() { + div = element("div"); + this.c = noop; + attr_dev(div, "id", "map"); + add_location(div, file, 41, 0, 1151); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + /*div_binding*/ ctx[3](div); + }, + p: noop, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + /*div_binding*/ ctx[3](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('map-component', slots, []); + let { callback = null } = $$props; + let { colors = null } = $$props; + + // Main code + let mapContainer; + + function createMap(center, zoom) { + let map = L.map(mapContainer, { center, zoom }); + + L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors', + minNativeZoom: 2, + minZoom: 2, + maxNativeZoom: 14, + maxZoom: 14 + }).addTo(map); + + return map; + } + + onMount(() => { + callback(createMap); + + if (colors != null) { + let els = mapContainer.getElementsByClassName("leaflet-control-layers-overlays")[0].children; + + for (let i = 0; i < els.length; i++) { + els[i].children[0].children[0].style.accentColor = colors[i]; + } + } + }); + + const writable_props = ['callback', 'colors']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function div_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + mapContainer = $$value; + $$invalidate(0, mapContainer); + }); + } + + $$self.$$set = $$props => { + if ('callback' in $$props) $$invalidate(1, callback = $$props.callback); + if ('colors' in $$props) $$invalidate(2, colors = $$props.colors); + }; + + $$self.$capture_state = () => ({ + onMount, + callback, + colors, + mapContainer, + createMap + }); + + $$self.$inject_state = $$props => { + if ('callback' in $$props) $$invalidate(1, callback = $$props.callback); + if ('colors' in $$props) $$invalidate(2, colors = $$props.colors); + if ('mapContainer' in $$props) $$invalidate(0, mapContainer = $$props.mapContainer); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [mapContainer, callback, colors, div_binding]; +} + +class Map_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + { callback: 1, colors: 2 }, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + + if (options.props) { + this.$set(options.props); + flush(); + } + } + } + + static get observedAttributes() { + return ["callback", "colors"]; + } + + get callback() { + return this.$$.ctx[1]; + } + + set callback(callback) { + this.$$set({ callback }); + flush(); + } + + get colors() { + return this.$$.ctx[2]; + } + + set colors(colors) { + this.$$set({ colors }); + flush(); + } +} + +customElements.define("map-component", Map_component); + +export { Map_component as default }; diff --git a/Server/public/js/components/navbar-component.js b/Server/public/js/components/navbar-component.js index 1064ab1..208d06f 100644 --- a/Server/public/js/components/navbar-component.js +++ b/Server/public/js/components/navbar-component.js @@ -1 +1,638 @@ -import{S as e,i as t,a as n,b as o,s as i,e as r,n as a,d as l,c as s,o as d,t as c,g as m,f as h,h as p,j as g,l as u,q as f,m as b,p as w,r as v,w as y}from"./index-4348483d.js";import{w as k}from"./index-71440b21.js";import{loadLocaleContent as x,locales as j}from"../../../../../../../../../js/libraries/serverTools.js";function H(e,t,n){const o=e.slice();return o[17]=t[n][0],o[18]=t[n][1],o}function z(e){let t,n,i,r,a,s,d,y,k,x,z,L,W,M,O,E,N,S,R,U,q,I,X,A,B,C,D,F,G,J,K,P,Q,V,Y,Z,$,_,ee,te,ne,oe,ie,re,ae,le,se,de,ce,me=e[11]()+"",he=e[4].orgName+"",pe=e[4].manifesto+"",ge=e[4].joinUs+"",ue=e[4].groups+"",fe=e[4].communes+"",be=e[4].cooperatives+"",we=e[4].parties+"",ve=e[4].partners+"",ye=Object.entries(j),ke=[];for(let t=0;t',d=m(),y=h("a"),k=h("img"),z=m(),L=h("span"),W=m(),M=h("nav"),O=h("ul"),E=h("li"),N=h("a"),S=c(pe),R=m(),U=h("li"),q=h("a"),I=c(ge),X=m(),A=h("li"),B=h("a"),C=c(ue),D=m(),F=h("li"),G=h("a"),J=c(fe),K=m(),P=h("li"),Q=h("a"),V=c(be),Y=m(),Z=h("li"),$=h("a"),_=c(we),ee=m(),te=h("li"),ne=h("a"),oe=c(ve),ie=m(),re=h("li"),ae=h("button"),ae.innerHTML=' \n \n globe',le=m(),se=h("div");for(let e=0;en(4,o=e)));let h=x(m,"navbar-component",c);function p(e){localStorage.setItem("locale",e);let t=location.href.split("/"),n=Object.keys(j);t=t.filter((e=>!n.includes(e)));let o=t.slice(0,t.length-1).join("/")+"/"+e+"/"+t[t.length-1];location.href=o}d((()=>{}));return[i,r,a,l,o,c,m,h,function(){i.checked?n(1,r.style.background="white",r):setTimeout((()=>{n(1,r.style.position="relative",r),n(1,r.style.background="",r),n(1,r.style.boxShadow="",r)}),510)},function(){"block"==a.style.display?n(2,a.style.display="none",a):n(2,a.style.display="block",a)},p,function(){if("ru"==h){let e=()=>{null==l?setTimeout(e,100):(window.innerWidth<1700&&window.innerWidth>1400||window.innerWidth<400)&&"100%"!=l.style.lineHeight?(n(3,l.style.lineHeight="120%",l),n(3,l.style.top="1rem",l),n(3,l.style.width="16rem",l)):(window.innerWidth>1700||window.innerWidth>400&&window.innerWidth<1400)&&"400%"!=l.style.lineHeight&&(n(3,l.style.lineHeight="400%",l),n(3,l.style.top="0rem",l),n(3,l.style.width="auto",l))};e(),addEventListener("resize",e)}},function(e){y[e?"unshift":"push"]((()=>{i=e,n(0,i)}))},function(e){y[e?"unshift":"push"]((()=>{l=e,n(3,l)}))},e=>p(e),function(e){y[e?"unshift":"push"]((()=>{a=e,n(2,a)}))},function(e){y[e?"unshift":"push"]((()=>{r=e,n(1,r)}))}]}class M extends e{constructor(e){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},W,L,i,{},null),e&&e.target&&o(e.target,this,e.anchor)}}customElements.define("navbar-component",M);export{M as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, E as getContext, g as globals, j as validate_each_argument, f as empty, n as noop, h as detach_dev, C as binding_callbacks, t as text, l as space, k as element, p as attr_dev, m as add_location, q as src_url_equal, u as append_dev, y as listen_dev, w as set_data_dev, x as destroy_each, z as run_all } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { loadLocaleContent, locales } from '../../../../../../../../../js/libraries/serverTools.js'; + +/* src\navbar\navbar-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; +const file = "src\\navbar\\navbar-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[17] = list[i][0]; + child_ctx[18] = list[i][1]; + return child_ctx; +} + +// (87:4) {#if Object.keys($content).length!=0} +function create_if_block(ctx) { + let t0_value = /*fixHeading*/ ctx[11]() + ""; + let t0; + let t1; + let header; + let input; + let t2; + let label; + let span0; + let t3; + let a0; + let img0; + let img0_src_value; + let t4; + let span1; + let raw_value = /*$content*/ ctx[4].orgName + ""; + let t5; + let nav; + let ul; + let li0; + let a1; + let t6_value = /*$content*/ ctx[4].manifesto + ""; + let t6; + let t7; + let li1; + let a2; + let t8_value = /*$content*/ ctx[4].joinUs + ""; + let t8; + let t9; + let li2; + let a3; + let t10_value = /*$content*/ ctx[4].groups + ""; + let t10; + let t11; + let li3; + let a4; + let t12_value = /*$content*/ ctx[4].communes + ""; + let t12; + let t13; + let li4; + let a5; + let t14_value = /*$content*/ ctx[4].cooperatives + ""; + let t14; + let t15; + let li5; + let a6; + let t16_value = /*$content*/ ctx[4].parties + ""; + let t16; + let t17; + let li6; + let a7; + let t18_value = /*$content*/ ctx[4].partners + ""; + let t18; + let t19; + let li7; + let button; + let picture; + let source0; + let t20; + let source1; + let t21; + let img1; + let t22; + let div; + let mounted; + let dispose; + let each_value = Object.entries(locales); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + t0 = text(t0_value); + t1 = space(); + header = element("header"); + input = element("input"); + t2 = space(); + label = element("label"); + span0 = element("span"); + t3 = space(); + a0 = element("a"); + img0 = element("img"); + t4 = space(); + span1 = element("span"); + t5 = space(); + nav = element("nav"); + ul = element("ul"); + li0 = element("li"); + a1 = element("a"); + t6 = text(t6_value); + t7 = space(); + li1 = element("li"); + a2 = element("a"); + t8 = text(t8_value); + t9 = space(); + li2 = element("li"); + a3 = element("a"); + t10 = text(t10_value); + t11 = space(); + li3 = element("li"); + a4 = element("a"); + t12 = text(t12_value); + t13 = space(); + li4 = element("li"); + a5 = element("a"); + t14 = text(t14_value); + t15 = space(); + li5 = element("li"); + a6 = element("a"); + t16 = text(t16_value); + t17 = space(); + li6 = element("li"); + a7 = element("a"); + t18 = text(t18_value); + t19 = space(); + li7 = element("li"); + button = element("button"); + picture = element("picture"); + source0 = element("source"); + t20 = space(); + source1 = element("source"); + t21 = space(); + img1 = element("img"); + t22 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr_dev(input, "type", "checkbox"); + attr_dev(input, "id", "side-menu"); + add_location(input, file, 90, 12, 2866); + attr_dev(span0, "id", "hamb-line"); + add_location(span0, file, 91, 45, 2997); + attr_dev(label, "id", "hamb"); + attr_dev(label, "for", "side-menu"); + add_location(label, file, 91, 12, 2964); + if (!src_url_equal(img0.src, img0_src_value = "/img/common/flag.png")) attr_dev(img0, "src", img0_src_value); + attr_dev(img0, "id", "navbar-logo"); + attr_dev(img0, "alt", "logo"); + add_location(img0, file, 94, 16, 3139); + attr_dev(span1, "id", "navbar-logo-text"); + add_location(span1, file, 95, 16, 3217); + attr_dev(a0, "id", "logo-container"); + attr_dev(a0, "href", "/" + /*locale*/ ctx[7] + "/"); + add_location(a0, file, 93, 12, 3074); + attr_dev(a1, "href", "/" + /*locale*/ ctx[7] + "/manifesto"); + add_location(a1, file, 100, 24, 3429); + add_location(li0, file, 100, 20, 3425); + attr_dev(a2, "href", "/" + /*locale*/ ctx[7] + "/join-us"); + add_location(a2, file, 101, 24, 3518); + add_location(li1, file, 101, 20, 3514); + attr_dev(a3, "href", "/" + /*locale*/ ctx[7] + "/groups"); + add_location(a3, file, 102, 24, 3602); + add_location(li2, file, 102, 20, 3598); + attr_dev(a4, "href", "/" + /*locale*/ ctx[7] + "/communes"); + add_location(a4, file, 103, 24, 3685); + add_location(li3, file, 103, 20, 3681); + attr_dev(a5, "href", "/" + /*locale*/ ctx[7] + "/cooperatives"); + add_location(a5, file, 104, 24, 3772); + add_location(li4, file, 104, 20, 3768); + attr_dev(a6, "href", "/" + /*locale*/ ctx[7] + "/parties"); + add_location(a6, file, 105, 24, 3867); + add_location(li5, file, 105, 20, 3863); + attr_dev(a7, "href", "/" + /*locale*/ ctx[7] + "/partners"); + add_location(a7, file, 106, 24, 3952); + add_location(li6, file, 106, 20, 3948); + attr_dev(source0, "srcset", "/img/common/globe.webp"); + add_location(source0, file, 110, 32, 4182); + attr_dev(source1, "srcset", "/img/common/globe.png"); + add_location(source1, file, 111, 32, 4256); + attr_dev(img1, "id", "locales-img"); + attr_dev(img1, "alt", "globe"); + add_location(img1, file, 112, 32, 4329); + add_location(picture, file, 109, 28, 4139); + add_location(button, file, 108, 24, 4078); + attr_dev(li7, "id", "locales"); + add_location(li7, file, 107, 20, 4035); + attr_dev(div, "id", "locales-dropdown"); + add_location(div, file, 116, 20, 4487); + attr_dev(ul, "id", "menu"); + add_location(ul, file, 99, 16, 3389); + attr_dev(nav, "id", "nav"); + add_location(nav, file, 98, 12, 3357); + attr_dev(header, "id", "navbar"); + add_location(header, file, 88, 8, 2776); + }, + m: function mount(target, anchor) { + insert_dev(target, t0, anchor); + insert_dev(target, t1, anchor); + insert_dev(target, header, anchor); + append_dev(header, input); + /*input_binding*/ ctx[12](input); + append_dev(header, t2); + append_dev(header, label); + append_dev(label, span0); + append_dev(header, t3); + append_dev(header, a0); + append_dev(a0, img0); + append_dev(a0, t4); + append_dev(a0, span1); + span1.innerHTML = raw_value; + /*span1_binding*/ ctx[13](span1); + append_dev(header, t5); + append_dev(header, nav); + append_dev(nav, ul); + append_dev(ul, li0); + append_dev(li0, a1); + append_dev(a1, t6); + append_dev(ul, t7); + append_dev(ul, li1); + append_dev(li1, a2); + append_dev(a2, t8); + append_dev(ul, t9); + append_dev(ul, li2); + append_dev(li2, a3); + append_dev(a3, t10); + append_dev(ul, t11); + append_dev(ul, li3); + append_dev(li3, a4); + append_dev(a4, t12); + append_dev(ul, t13); + append_dev(ul, li4); + append_dev(li4, a5); + append_dev(a5, t14); + append_dev(ul, t15); + append_dev(ul, li5); + append_dev(li5, a6); + append_dev(a6, t16); + append_dev(ul, t17); + append_dev(ul, li6); + append_dev(li6, a7); + append_dev(a7, t18); + append_dev(ul, t19); + append_dev(ul, li7); + append_dev(li7, button); + append_dev(button, picture); + append_dev(picture, source0); + append_dev(picture, t20); + append_dev(picture, source1); + append_dev(picture, t21); + append_dev(picture, img1); + append_dev(ul, t22); + append_dev(ul, div); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + /*div_binding*/ ctx[15](div); + /*header_binding*/ ctx[16](header); + + if (!mounted) { + dispose = [ + listen_dev(input, "click", /*changeNavbar*/ ctx[8], false, false, false), + listen_dev(button, "click", /*showLocales*/ ctx[9], false, false, false) + ]; + + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 16 && raw_value !== (raw_value = /*$content*/ ctx[4].orgName + "")) span1.innerHTML = raw_value; if (dirty & /*$content*/ 16 && t6_value !== (t6_value = /*$content*/ ctx[4].manifesto + "")) set_data_dev(t6, t6_value); + if (dirty & /*$content*/ 16 && t8_value !== (t8_value = /*$content*/ ctx[4].joinUs + "")) set_data_dev(t8, t8_value); + if (dirty & /*$content*/ 16 && t10_value !== (t10_value = /*$content*/ ctx[4].groups + "")) set_data_dev(t10, t10_value); + if (dirty & /*$content*/ 16 && t12_value !== (t12_value = /*$content*/ ctx[4].communes + "")) set_data_dev(t12, t12_value); + if (dirty & /*$content*/ 16 && t14_value !== (t14_value = /*$content*/ ctx[4].cooperatives + "")) set_data_dev(t14, t14_value); + if (dirty & /*$content*/ 16 && t16_value !== (t16_value = /*$content*/ ctx[4].parties + "")) set_data_dev(t16, t16_value); + if (dirty & /*$content*/ 16 && t18_value !== (t18_value = /*$content*/ ctx[4].partners + "")) set_data_dev(t18, t18_value); + + if (dirty & /*changeLocale, Object, locales*/ 1024) { + each_value = Object.entries(locales); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(t0); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(header); + /*input_binding*/ ctx[12](null); + /*span1_binding*/ ctx[13](null); + destroy_each(each_blocks, detaching); + /*div_binding*/ ctx[15](null); + /*header_binding*/ ctx[16](null); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(87:4) {#if Object.keys($content).length!=0}", + ctx + }); + + return block; +} + +// (118:24) {#each Object.entries(locales) as [loc,name]} +function create_each_block(ctx) { + let button; + let t_value = /*name*/ ctx[18] + ""; + let t; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[14](/*loc*/ ctx[17]); + } + + const block = { + c: function create() { + button = element("button"); + t = text(t_value); + add_location(button, file, 118, 28, 4643); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, t); + + if (!mounted) { + dispose = listen_dev(button, "click", click_handler, false, false, false); + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(118:24) {#each Object.entries(locales) as [loc,name]}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let show_if = Object.keys(/*$content*/ ctx[4]).length != 0; + let if_block_anchor; + let if_block = show_if && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$content*/ 16) show_if = Object.keys(/*$content*/ ctx[4]).length != 0; + + if (show_if) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('navbar-component', slots, []); + let hambInput; + let navbar; + let localesDropdown; + let loaded = writable(0); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(4, $content = value)); + let logoText; + let locale = loadLocaleContent(content, "navbar-component", loaded); + + function changeNavbar() { + if (hambInput.checked) { + $$invalidate(1, navbar.style.background = "white", navbar); + } else { + setTimeout( + () => { + $$invalidate(1, navbar.style.position = "relative", navbar); + $$invalidate(1, navbar.style.background = "", navbar); + $$invalidate(1, navbar.style.boxShadow = "", navbar); + }, + 510 + ); + } + } + + function showLocales() { + if (localesDropdown.style.display == "block") { + $$invalidate(2, localesDropdown.style.display = "none", localesDropdown); + } else { + $$invalidate(2, localesDropdown.style.display = "block", localesDropdown); + } + } + + function changeLocale(lang) { + localStorage.setItem("locale", lang); + let locSplit = location.href.split("/"); + let localesSymbols = Object.keys(locales); + locSplit = locSplit.filter(x => !localesSymbols.includes(x)); + let loc = locSplit.slice(0, locSplit.length - 1).join("/") + "/" + lang + "/" + locSplit[locSplit.length - 1]; + location.href = loc; + } + + function fixHeading() { + if (locale == "ru") { + let func = () => { + if (logoText == undefined) { + setTimeout(func, 100); + } else { + if ((window.innerWidth < 1700 && window.innerWidth > 1400 || window.innerWidth < 400) && logoText.style.lineHeight != "100%") { + $$invalidate(3, logoText.style.lineHeight = "120%", logoText); + $$invalidate(3, logoText.style.top = "1rem", logoText); + $$invalidate(3, logoText.style.width = "16rem", logoText); + } else if ((window.innerWidth > 1700 || window.innerWidth > 400 && window.innerWidth < 1400) && logoText.style.lineHeight != "400%") { + $$invalidate(3, logoText.style.lineHeight = "400%", logoText); + $$invalidate(3, logoText.style.top = "0rem", logoText); + $$invalidate(3, logoText.style.width = "auto", logoText); + } + } + }; + + func(); + addEventListener("resize", func); + } + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function input_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + hambInput = $$value; + $$invalidate(0, hambInput); + }); + } + + function span1_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + logoText = $$value; + $$invalidate(3, logoText); + }); + } + + const click_handler = loc => changeLocale(loc); + + function div_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + localesDropdown = $$value; + $$invalidate(2, localesDropdown); + }); + } + + function header_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + navbar = $$value; + $$invalidate(1, navbar); + }); + } + + $$self.$capture_state = () => ({ + onMount, + getContext, + writable, + loadLocaleContent, + locales, + hambInput, + navbar, + localesDropdown, + loaded, + content, + logoText, + locale, + changeNavbar, + showLocales, + changeLocale, + fixHeading, + $content + }); + + $$self.$inject_state = $$props => { + if ('hambInput' in $$props) $$invalidate(0, hambInput = $$props.hambInput); + if ('navbar' in $$props) $$invalidate(1, navbar = $$props.navbar); + if ('localesDropdown' in $$props) $$invalidate(2, localesDropdown = $$props.localesDropdown); + if ('loaded' in $$props) $$invalidate(5, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(6, content = $$props.content); + if ('logoText' in $$props) $$invalidate(3, logoText = $$props.logoText); + if ('locale' in $$props) $$invalidate(7, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + hambInput, + navbar, + localesDropdown, + logoText, + $content, + loaded, + content, + locale, + changeNavbar, + showLocales, + changeLocale, + fixHeading, + input_binding, + span1_binding, + click_handler, + div_binding, + header_binding + ]; +} + +class Navbar_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("navbar-component", Navbar_component); + +export { Navbar_component as default }; diff --git a/Server/public/js/components/pane-aligner.js b/Server/public/js/components/pane-aligner.js index 784b939..7115f40 100644 --- a/Server/public/js/components/pane-aligner.js +++ b/Server/public/js/components/pane-aligner.js @@ -1 +1,304 @@ -import{S as i,i as e,a,b as t,s as n,f as r,g as s,n as d,h as o,l,d as m,x as p,o as h,w as g}from"./index-4348483d.js";import{debounce as c}from"../../../../../../../../../js/libraries/miscTools.js";function f(i){let e,a,n,p,h,g,c,f,u,b;return{c(){e=r("div"),a=r("div"),n=r("div"),p=r("div"),p.innerHTML='',h=s(),g=r("div"),g.innerHTML='',c=s(),f=r("div"),f.innerHTML='',u=s(),b=r("div"),b.innerHTML='',this.c=d,o(p,"id","sidebar-left"),o(p,"class","pane"),o(g,"id","sidebar-left2"),o(g,"class","pane"),o(n,"id","sidebars-left"),o(n,"class","sidebar"),o(f,"id","sidebar-right"),o(f,"class","pane sidebar"),o(b,"id","main-pane"),o(b,"class","pane"),o(a,"class","pane-container"),o(e,"id","root"),o(e,"class","pane-centering")},m(r,s){t(r,e,s),l(e,a),l(a,n),l(n,p),i[5](p),l(n,h),l(n,g),i[6](g),l(a,c),l(a,f),i[7](f),l(a,u),l(a,b),i[8](b),i[9](e)},p:d,i:d,o:d,d(a){a&&m(e),i[5](null),i[6](null),i[7](null),i[8](null),i[9](null)}}}function u(i,e,a){let t,n,r,s,d,o=null!=p("alignerParent")?p("alignerParent").switchView:void 0,l=!1,m=!1,f=!1;function u(){if(null!=t.parentNode){let i=t.parentNode.host.childNodes;if(0==i.length)setTimeout(u,50);else{let e=!1,n=t.parentNode.innerHTML;for(let a of i)"sidebar-left"!=a.slot||l?"sidebar-left2"!=a.slot||m?"sidebar-right"!=a.slot||f||(n=n.replace("#sidebar-right{display:none;","#sidebar-right{"),f=!0,e=!0):(n=n.replace("#sidebar-left2{display:none}",""),m=!0,e=!0):(n=n.replace("#sidebar-left{display:none}",""),l=!0,e=!0);null!=o&&(n=n.replace("1880px",o),e=!0),e&&a(0,t.parentNode.innerHTML=n,t)}}}return window.addEventListener("resize",c(u,100)),h((()=>{u()})),[t,n,r,s,d,function(i){g[i?"unshift":"push"]((()=>{r=i,a(2,r)}))},function(i){g[i?"unshift":"push"]((()=>{s=i,a(3,s)}))},function(i){g[i?"unshift":"push"]((()=>{d=i,a(4,d)}))},function(i){g[i?"unshift":"push"]((()=>{n=i,a(1,n)}))},function(i){g[i?"unshift":"push"]((()=>{t=i,a(0,t)}))}]}class b extends i{constructor(i){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:a(this.attributes),customElement:!0},u,f,n,{},null),i&&i.target&&t(i.target,this,i.anchor)}}customElements.define("pane-aligner",b);export{b as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, E as getContext, o as onMount, F as setContext, k as element, l as space, n as noop, p as attr_dev, m as add_location, u as append_dev, h as detach_dev, C as binding_callbacks } from './index-d19aafba.js'; +import { debounce } from '../../../../../../../../../js/libraries/miscTools.js'; + +/* src\components\pane-aligner.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\pane-aligner.svelte"; + +function create_fragment(ctx) { + let div6; + let div5; + let div2; + let div0; + let slot0; + let t0; + let div1; + let slot1; + let t1; + let div3; + let slot2; + let t2; + let div4; + let slot3; + + const block = { + c: function create() { + div6 = element("div"); + div5 = element("div"); + div2 = element("div"); + div0 = element("div"); + slot0 = element("slot"); + t0 = space(); + div1 = element("div"); + slot1 = element("slot"); + t1 = space(); + div3 = element("div"); + slot2 = element("slot"); + t2 = space(); + div4 = element("div"); + slot3 = element("slot"); + this.c = noop; + attr_dev(slot0, "name", "sidebar-left"); + add_location(slot0, file, 74, 16, 2567); + attr_dev(div0, "id", "sidebar-left"); + attr_dev(div0, "class", "pane"); + add_location(div0, file, 73, 12, 2489); + attr_dev(slot1, "name", "sidebar-left2"); + add_location(slot1, file, 77, 16, 2714); + attr_dev(div1, "id", "sidebar-left2"); + attr_dev(div1, "class", "pane"); + add_location(div1, file, 76, 12, 2634); + attr_dev(div2, "id", "sidebars-left"); + attr_dev(div2, "class", "sidebar"); + add_location(div2, file, 72, 8, 2435); + attr_dev(slot2, "name", "sidebar-right"); + add_location(slot2, file, 81, 12, 2879); + attr_dev(div3, "id", "sidebar-right"); + attr_dev(div3, "class", "pane sidebar"); + add_location(div3, file, 80, 8, 2794); + attr_dev(slot3, "name", "main"); + attr_dev(slot3, "id", "main-slot"); + add_location(slot3, file, 84, 12, 3007); + attr_dev(div4, "id", "main-pane"); + attr_dev(div4, "class", "pane"); + add_location(div4, file, 83, 8, 2939); + attr_dev(div5, "class", "pane-container"); + add_location(div5, file, 71, 4, 2397); + attr_dev(div6, "id", "root"); + attr_dev(div6, "class", "pane-centering"); + add_location(div6, file, 70, 0, 2336); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div6, anchor); + append_dev(div6, div5); + append_dev(div5, div2); + append_dev(div2, div0); + append_dev(div0, slot0); + /*div0_binding*/ ctx[5](div0); + append_dev(div2, t0); + append_dev(div2, div1); + append_dev(div1, slot1); + /*div1_binding*/ ctx[6](div1); + append_dev(div5, t1); + append_dev(div5, div3); + append_dev(div3, slot2); + /*div3_binding*/ ctx[7](div3); + append_dev(div5, t2); + append_dev(div5, div4); + append_dev(div4, slot3); + /*div4_binding*/ ctx[8](div4); + /*div6_binding*/ ctx[9](div6); + }, + p: noop, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div6); + /*div0_binding*/ ctx[5](null); + /*div1_binding*/ ctx[6](null); + /*div3_binding*/ ctx[7](null); + /*div4_binding*/ ctx[8](null); + /*div6_binding*/ ctx[9](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('pane-aligner', slots, []); + let root; + let mainPane; + let sidebarLeft; + let sidebarLeft2; + let sidebarRight; + let parentProps = getContext("alignerParent"); + + let switchView = parentProps != undefined + ? getContext("alignerParent").switchView + : undefined; + + let leftReplaced = false; + let left2Replaced = false; + let rightReplaced = false; + let switchViewReplaced = false; + + function adjustSlotted() { + if (root.parentNode != null) { + let slotted = root.parentNode.host.childNodes; + + if (slotted.length == 0) { + setTimeout(adjustSlotted, 50); + } else { + let changed = false; + let html = root.parentNode.innerHTML; + + for (let item of slotted) { + if (item.slot == "sidebar-left" && !leftReplaced) { + html = html.replace("#sidebar-left{display:none}", ""); + leftReplaced = true; + changed = true; + } else if (item.slot == "sidebar-left2" && !left2Replaced) { + html = html.replace("#sidebar-left2{display:none}", ""); + left2Replaced = true; + changed = true; + } else if (item.slot == "sidebar-right" && !rightReplaced) { + html = html.replace("#sidebar-right{display:none;", "#sidebar-right{"); + rightReplaced = true; + changed = true; + } + } + + if (switchView != undefined && !switchViewReplaced) { + html = html.replace("1880px", switchView); + changed = true; + } + + if (changed) { + $$invalidate(0, root.parentNode.innerHTML = html, root); + } + } + } + } + + window.addEventListener("resize", debounce(adjustSlotted, 100)); + + onMount(() => { + adjustSlotted(); + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function div0_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + sidebarLeft = $$value; + $$invalidate(2, sidebarLeft); + }); + } + + function div1_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + sidebarLeft2 = $$value; + $$invalidate(3, sidebarLeft2); + }); + } + + function div3_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + sidebarRight = $$value; + $$invalidate(4, sidebarRight); + }); + } + + function div4_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + mainPane = $$value; + $$invalidate(1, mainPane); + }); + } + + function div6_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + root = $$value; + $$invalidate(0, root); + }); + } + + $$self.$capture_state = () => ({ + getContext, + setContext, + onMount, + debounce, + root, + mainPane, + sidebarLeft, + sidebarLeft2, + sidebarRight, + parentProps, + switchView, + leftReplaced, + left2Replaced, + rightReplaced, + switchViewReplaced, + adjustSlotted + }); + + $$self.$inject_state = $$props => { + if ('root' in $$props) $$invalidate(0, root = $$props.root); + if ('mainPane' in $$props) $$invalidate(1, mainPane = $$props.mainPane); + if ('sidebarLeft' in $$props) $$invalidate(2, sidebarLeft = $$props.sidebarLeft); + if ('sidebarLeft2' in $$props) $$invalidate(3, sidebarLeft2 = $$props.sidebarLeft2); + if ('sidebarRight' in $$props) $$invalidate(4, sidebarRight = $$props.sidebarRight); + if ('parentProps' in $$props) parentProps = $$props.parentProps; + if ('switchView' in $$props) switchView = $$props.switchView; + if ('leftReplaced' in $$props) leftReplaced = $$props.leftReplaced; + if ('left2Replaced' in $$props) left2Replaced = $$props.left2Replaced; + if ('rightReplaced' in $$props) rightReplaced = $$props.rightReplaced; + if ('switchViewReplaced' in $$props) switchViewReplaced = $$props.switchViewReplaced; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + root, + mainPane, + sidebarLeft, + sidebarLeft2, + sidebarRight, + div0_binding, + div1_binding, + div3_binding, + div4_binding, + div6_binding + ]; +} + +class Pane_aligner extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("pane-aligner", Pane_aligner); + +export { Pane_aligner as default }; diff --git a/Server/public/js/components/parties-component.js b/Server/public/js/components/parties-component.js index 0d66c8c..fde9401 100644 --- a/Server/public/js/components/parties-component.js +++ b/Server/public/js/components/parties-component.js @@ -1 +1,637 @@ -import{S as t,i as e,a as n,b as o,s as i,e as r,n as a,d as m,c as s,o as l,f as c,t as p,g,h as d,j as h,k as f,l as u,m as b,p as x}from"./index-4348483d.js";import{w as y}from"./index-71440b21.js";import{addMarkersParties as w,partiesByCountry as j}from"../../../../../../../../../js/parties.js";import{loadLocaleContent as v}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function k(t,e,n){const o=t.slice();return o[6]=e[n][0],o[7]=e[n][1],o}function z(t,e,n){const o=t.slice();return o[10]=e[n],o}function D(t){let e,n,i,r,a,s,l,y,w,v,z,D,E,O,R,T,A,C,H,L,M=t[1].parties+"",S=t[1].p1+"",_=t[1].subheading1+"",q=t[1]["map-prompt"]+"",B=Object.entries(j),F=[];for(let e=0;en(0,o=t)));let a=y({});function m(t,e){let n=t([22,0],2);w(n,e)}s(t,a,(t=>n(1,i=t))),v(a,"countries",r),v(a,"parties-component",r),l((()=>{}));return[o,i,r,a,m,t=>m(t,i)]}class A extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},T,R,i,{},null),t&&t.target&&o(t.target,this,t.anchor)}}customElements.define("parties-component",A);export{A as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, j as validate_each_argument, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, r as set_custom_element_data, u as append_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { partiesByCountry, addMarkersParties } from '../../../../../../../../../js/parties.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\parties-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; + +const file = "src\\parties-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i][0]; + child_ctx[10] = list[i][1]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + return child_ctx; +} + +// (39:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[0].parties + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let p0; + let t3_value = /*$content*/ ctx[0].p1 + ""; + let t3; + let t4; + let h3; + let t5_value = /*$content*/ ctx[0].subheading1 + ""; + let t5; + let t6; + let map_component; + let map_component_callback_value; + let t7; + let p1; + let t8_value = /*$content*/ ctx[0]["map-prompt"] + ""; + let t8; + let t9; + let each_value = Object.entries(partiesByCountry); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + p0 = element("p"); + t3 = text(t3_value); + t4 = space(); + h3 = element("h3"); + t5 = text(t5_value); + t6 = space(); + map_component = element("map-component"); + t7 = space(); + p1 = element("p"); + t8 = text(t8_value); + t9 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + add_location(h1, file, 42, 16, 1203); + attr_dev(img, "id", "party-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/parties.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "party"); + add_location(img, file, 43, 16, 1248); + attr_dev(p0, "class", "description"); + add_location(p0, file, 44, 16, 1328); + add_location(h3, file, 45, 16, 1386); + set_custom_element_data(map_component, "id", "map"); + set_custom_element_data(map_component, "callback", map_component_callback_value = /*func*/ ctx[8]); + add_location(map_component, file, 46, 16, 1435); + attr_dev(p1, "id", "add-prompt"); + add_location(p1, file, 47, 16, 1565); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 41, 12, 1160); + attr_dev(div1, "id", "container"); + add_location(div1, file, 39, 8, 1057); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p0); + append_dev(p0, t3); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(h3, t5); + append_dev(div0, t6); + append_dev(div0, map_component); + append_dev(div0, t7); + append_dev(div0, p1); + append_dev(p1, t8); + append_dev(div0, t9); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].parties + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].p1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t5_value !== (t5_value = /*$content*/ ctx[0].subheading1 + "")) set_data_dev(t5, t5_value); + + if (dirty & /*$content*/ 1 && map_component_callback_value !== (map_component_callback_value = /*func*/ ctx[8])) { + set_custom_element_data(map_component, "callback", map_component_callback_value); + } + + if (dirty & /*$content*/ 1 && t8_value !== (t8_value = /*$content*/ ctx[0]["map-prompt"] + "")) set_data_dev(t8, t8_value); + + if (dirty & /*Object, partiesByCountry, $content, getAddress, getCountry*/ 193) { + each_value = Object.entries(partiesByCountry); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(39:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (52:24) {#each parties as party} +function create_each_block_1(ctx) { + let div2; + let div1; + let picture; + let source0; + let t0; + let source1; + let t1; + let img; + let t2; + let div0; + let p0; + let b0; + let t3_value = /*$content*/ ctx[0].name + ""; + let t3; + let t4; + let t5_value = /*party*/ ctx[13].name + ""; + let t5; + let t6; + let p1; + let b1; + let t7_value = /*$content*/ ctx[0].location + ""; + let t7; + let t8; + let t9_value = /*getAddress*/ ctx[7](/*party*/ ctx[13]) + ""; + let t9; + let t10; + let p2; + let b2; + let t11_value = /*$content*/ ctx[0].link + ""; + let t11; + let t12; + let a; + let t13_value = /*party*/ ctx[13].link + ""; + let t13; + let t14; + let p3; + let b3; + let t15_value = /*$content*/ ctx[0].description + ""; + let t15; + let t16; + let t17_value = /*$content*/ ctx[0][/*party*/ ctx[13].description] + ""; + let t17; + + const block = { + c: function create() { + div2 = element("div"); + div1 = element("div"); + picture = element("picture"); + source0 = element("source"); + t0 = space(); + source1 = element("source"); + t1 = space(); + img = element("img"); + t2 = space(); + div0 = element("div"); + p0 = element("p"); + b0 = element("b"); + t3 = text(t3_value); + t4 = text(": "); + t5 = text(t5_value); + t6 = space(); + p1 = element("p"); + b1 = element("b"); + t7 = text(t7_value); + t8 = text(": "); + t9 = text(t9_value); + t10 = space(); + p2 = element("p"); + b2 = element("b"); + t11 = text(t11_value); + t12 = text(": "); + a = element("a"); + t13 = text(t13_value); + t14 = space(); + p3 = element("p"); + b3 = element("b"); + t15 = text(t15_value); + t16 = text(": "); + t17 = text(t17_value); + attr_dev(source0, "srcset", "/img/parties/" + /*party*/ ctx[13].logo + ".webp"); + add_location(source0, file, 55, 36, 2051); + attr_dev(source1, "srcset", "/img/parties/" + /*party*/ ctx[13].logo + ".jpg"); + add_location(source1, file, 56, 36, 2141); + attr_dev(img, "class", "party-logo"); + attr_dev(img, "alt", "logo"); + add_location(img, file, 57, 36, 2230); + add_location(picture, file, 54, 32, 2004); + add_location(b0, file, 60, 39, 2389); + add_location(p0, file, 60, 36, 2386); + add_location(b1, file, 61, 39, 2470); + add_location(p1, file, 61, 36, 2467); + add_location(b2, file, 62, 39, 2562); + attr_dev(a, "href", /*party*/ ctx[13].link); + attr_dev(a, "target", ";_blank;"); + attr_dev(a, "rel", "noreferrer"); + add_location(a, file, 62, 63, 2586); + add_location(p2, file, 62, 36, 2559); + add_location(div0, file, 59, 32, 2343); + attr_dev(div1, "class", "img-general-info"); + add_location(div1, file, 53, 28, 1940); + add_location(b3, file, 65, 31, 2767); + add_location(p3, file, 65, 28, 2764); + attr_dev(div2, "class", "location-info"); + add_location(div2, file, 52, 24, 1883); + }, + m: function mount(target, anchor) { + insert_dev(target, div2, anchor); + append_dev(div2, div1); + append_dev(div1, picture); + append_dev(picture, source0); + append_dev(picture, t0); + append_dev(picture, source1); + append_dev(picture, t1); + append_dev(picture, img); + append_dev(div1, t2); + append_dev(div1, div0); + append_dev(div0, p0); + append_dev(p0, b0); + append_dev(b0, t3); + append_dev(b0, t4); + append_dev(p0, t5); + append_dev(div0, t6); + append_dev(div0, p1); + append_dev(p1, b1); + append_dev(b1, t7); + append_dev(b1, t8); + append_dev(p1, t9); + append_dev(div0, t10); + append_dev(div0, p2); + append_dev(p2, b2); + append_dev(b2, t11); + append_dev(b2, t12); + append_dev(p2, a); + append_dev(a, t13); + append_dev(div2, t14); + append_dev(div2, p3); + append_dev(p3, b3); + append_dev(b3, t15); + append_dev(b3, t16); + append_dev(p3, t17); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].name + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t7_value !== (t7_value = /*$content*/ ctx[0].location + "")) set_data_dev(t7, t7_value); + if (dirty & /*$content*/ 1 && t11_value !== (t11_value = /*$content*/ ctx[0].link + "")) set_data_dev(t11, t11_value); + if (dirty & /*$content*/ 1 && t15_value !== (t15_value = /*$content*/ ctx[0].description + "")) set_data_dev(t15, t15_value); + if (dirty & /*$content*/ 1 && t17_value !== (t17_value = /*$content*/ ctx[0][/*party*/ ctx[13].description] + "")) set_data_dev(t17, t17_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(52:24) {#each parties as party}", + ctx + }); + + return block; +} + +// (49:16) {#each Object.entries(partiesByCountry) as [name,parties]} +function create_each_block(ctx) { + let h4; + let t0_value = /*getCountry*/ ctx[6](/*name*/ ctx[9]) + ""; + let t0; + let t1; + let div; + let t2; + let each_value_1 = /*parties*/ ctx[10]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + h4 = element("h4"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + attr_dev(h4, "class", "country-name"); + add_location(h4, file, 49, 20, 1710); + attr_dev(div, "class", "country-block"); + add_location(div, file, 50, 20, 1780); + }, + m: function mount(target, anchor) { + insert_dev(target, h4, anchor); + append_dev(h4, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append_dev(div, t2); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content, Object, partiesByCountry, getAddress*/ 129) { + each_value_1 = /*parties*/ ctx[10]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(h4); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(49:16) {#each Object.entries(partiesByCountry) as [name,parties]}", + ctx + }); + + return block; +} + +// (38:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[1] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[1] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(38:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[1]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 2 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[1])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('parties-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(1, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(0, $content = value)); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "parties-component", loaded); + + function mapCallbackParties(createMap, content, locale) { + let map = createMap([22, 0], 2); + addMarkersParties(map, content, locale); + } + + function getCountry(name) { + return locale == "en" ? name : $content[name]; + } + + function getAddress(group) { + return locale == "en" + ? group.location + : $content[group.location]; + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + const func = createMap => mapCallbackParties(createMap, $content, locale); + + $$self.$capture_state = () => ({ + onMount, + writable, + partiesByCountry, + addMarkersParties, + loadLocaleContent, + loaded, + content, + locale, + mapCallbackParties, + getCountry, + getAddress, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) $$invalidate(4, locale = $$props.locale); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [ + $content, + $loaded, + loaded, + content, + locale, + mapCallbackParties, + getCountry, + getAddress, + func + ]; +} + +class Parties_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("parties-component", Parties_component); + +export { Parties_component as default }; diff --git a/Server/public/js/components/partners-component.js b/Server/public/js/components/partners-component.js index 6431021..9a475a2 100644 --- a/Server/public/js/components/partners-component.js +++ b/Server/public/js/components/partners-component.js @@ -1 +1,611 @@ -import{S as t,i as n,a as e,b as o,s as i,e as r,n as a,d as m,c as s,o as l,f as c,t as g,g as p,h as d,j as h,l as f,m as u,p as b}from"./index-4348483d.js";import{w as x}from"./index-71440b21.js";import{loadLocaleContent as y}from"../../../../../../../../../js/libraries/serverTools.js";import{partnersByCountry as w}from"../../../../../../../../../js/partners.js";import"../../../../../../../../../js/components/map-component.js";function j(t,n,e){const o=t.slice();return o[4]=n[e][0],o[5]=n[e][1],o}function v(t,n,e){const o=t.slice();return o[8]=n[e],o}function k(t){let n,e,i,r,a,s,l,x,y,v,k,z,E,N,O=t[1].heading+"",R=t[1].p1+"",T=t[1].subheading1+"",A=Object.entries(w),C=[];for(let n=0;ne(0,o=t)));let a=x({});return s(t,a,(t=>e(1,i=t))),y(a,"countries",r),y(a,"partners-component",r),l((()=>{})),[o,i,r,a]}class R extends t{constructor(t){super(),this.shadowRoot.innerHTML="",n(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},O,N,i,{},null),t&&t.target&&o(t.target,this,t.anchor)}}customElements.define("partners-component",R);export{R as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, c as validate_store, e as component_subscribe, o as onMount, g as globals, f as empty, n as noop, h as detach_dev, j as validate_each_argument, k as element, t as text, l as space, m as add_location, p as attr_dev, q as src_url_equal, u as append_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { w as writable } from './index-4664ced0.js'; +import { loadLocaleContent } from '../../../../../../../../../js/libraries/serverTools.js'; +import { partnersByCountry } from '../../../../../../../../../js/partners.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\partners-component.svelte generated by Svelte v3.52.0 */ + +const { Object: Object_1 } = globals; + +const file = "src\\partners-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[7] = list[i][0]; + child_ctx[8] = list[i][1]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[11] = list[i]; + return child_ctx; +} + +// (34:4) {#if $loaded==2} +function create_if_block(ctx) { + let div1; + let div0; + let h1; + let t0_value = /*$content*/ ctx[0].heading + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let p; + let t3_value = /*$content*/ ctx[0].p1 + ""; + let t3; + let t4; + let h3; + let t5_value = /*$content*/ ctx[0].subheading1 + ""; + let t5; + let t6; + let each_value = Object.entries(partnersByCountry); + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + p = element("p"); + t3 = text(t3_value); + t4 = space(); + h3 = element("h3"); + t5 = text(t5_value); + t6 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + add_location(h1, file, 37, 16, 1044); + attr_dev(img, "id", "hands-img"); + if (!src_url_equal(img.src, img_src_value = "/img/common/handshake.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "hands"); + add_location(img, file, 38, 16, 1089); + add_location(p, file, 39, 16, 1171); + add_location(h3, file, 40, 16, 1209); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 36, 12, 1001); + attr_dev(div1, "id", "container"); + add_location(div1, file, 34, 8, 898); + }, + m: function mount(target, anchor) { + insert_dev(target, div1, anchor); + append_dev(div1, div0); + append_dev(div0, h1); + append_dev(h1, t0); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p); + append_dev(p, t3); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(h3, t5); + append_dev(div0, t6); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t0_value !== (t0_value = /*$content*/ ctx[0].heading + "")) set_data_dev(t0, t0_value); + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].p1 + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t5_value !== (t5_value = /*$content*/ ctx[0].subheading1 + "")) set_data_dev(t5, t5_value); + + if (dirty & /*Object, partnersByCountry, $content, getAddress, getCountry*/ 49) { + each_value = Object.entries(partnersByCountry); + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div0, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_if_block.name, + type: "if", + source: "(34:4) {#if $loaded==2}", + ctx + }); + + return block; +} + +// (45:24) {#each partners as partner} +function create_each_block_1(ctx) { + let div2; + let div1; + let picture; + let source0; + let t0; + let source1; + let t1; + let img; + let t2; + let div0; + let p0; + let b0; + let t3_value = /*$content*/ ctx[0].name + ""; + let t3; + let t4; + let t5_value = /*partner*/ ctx[11].name + ""; + let t5; + let t6; + let p1; + let b1; + let t7_value = /*$content*/ ctx[0].type + ""; + let t7; + let t8; + let t9_value = /*$content*/ ctx[0][/*partner*/ ctx[11].type] + ""; + let t9; + let t10; + let p2; + let b2; + let t11_value = /*$content*/ ctx[0].location + ""; + let t11; + let t12; + let t13_value = /*getAddress*/ ctx[5](/*partner*/ ctx[11]) + ""; + let t13; + let t14; + let p3; + let b3; + let t15_value = /*$content*/ ctx[0].link + ""; + let t15; + let t16; + let a; + let t17_value = /*partner*/ ctx[11].link + ""; + let t17; + let t18; + let p4; + let b4; + let t19_value = /*$content*/ ctx[0].description + ""; + let t19; + let t20; + let t21_value = /*$content*/ ctx[0][/*partner*/ ctx[11].description] + ""; + let t21; + + const block = { + c: function create() { + div2 = element("div"); + div1 = element("div"); + picture = element("picture"); + source0 = element("source"); + t0 = space(); + source1 = element("source"); + t1 = space(); + img = element("img"); + t2 = space(); + div0 = element("div"); + p0 = element("p"); + b0 = element("b"); + t3 = text(t3_value); + t4 = text(": "); + t5 = text(t5_value); + t6 = space(); + p1 = element("p"); + b1 = element("b"); + t7 = text(t7_value); + t8 = text(": "); + t9 = text(t9_value); + t10 = space(); + p2 = element("p"); + b2 = element("b"); + t11 = text(t11_value); + t12 = text(": "); + t13 = text(t13_value); + t14 = space(); + p3 = element("p"); + b3 = element("b"); + t15 = text(t15_value); + t16 = text(": "); + a = element("a"); + t17 = text(t17_value); + t18 = space(); + p4 = element("p"); + b4 = element("b"); + t19 = text(t19_value); + t20 = text(": "); + t21 = text(t21_value); + attr_dev(source0, "srcset", "/img/partners/" + /*partner*/ ctx[11].logo + ".webp"); + add_location(source0, file, 48, 36, 1684); + attr_dev(source1, "srcset", "/img/partners/" + /*partner*/ ctx[11].logo + ".jpg"); + add_location(source1, file, 49, 36, 1777); + attr_dev(img, "class", "partner-logo"); + attr_dev(img, "alt", "logo"); + add_location(img, file, 50, 36, 1869); + add_location(picture, file, 47, 32, 1637); + add_location(b0, file, 53, 39, 2030); + add_location(p0, file, 53, 36, 2027); + add_location(b1, file, 54, 39, 2113); + add_location(p1, file, 54, 36, 2110); + add_location(b2, file, 55, 39, 2206); + add_location(p2, file, 55, 36, 2203); + add_location(b3, file, 56, 39, 2300); + attr_dev(a, "href", /*partner*/ ctx[11].link); + attr_dev(a, "target", ";_blank;"); + attr_dev(a, "rel", "noreferrer"); + add_location(a, file, 56, 63, 2324); + add_location(p3, file, 56, 36, 2297); + add_location(div0, file, 52, 32, 1984); + attr_dev(div1, "class", "img-general-info"); + add_location(div1, file, 46, 28, 1573); + add_location(b4, file, 59, 31, 2509); + add_location(p4, file, 59, 28, 2506); + attr_dev(div2, "class", "location-info"); + add_location(div2, file, 45, 24, 1516); + }, + m: function mount(target, anchor) { + insert_dev(target, div2, anchor); + append_dev(div2, div1); + append_dev(div1, picture); + append_dev(picture, source0); + append_dev(picture, t0); + append_dev(picture, source1); + append_dev(picture, t1); + append_dev(picture, img); + append_dev(div1, t2); + append_dev(div1, div0); + append_dev(div0, p0); + append_dev(p0, b0); + append_dev(b0, t3); + append_dev(b0, t4); + append_dev(p0, t5); + append_dev(div0, t6); + append_dev(div0, p1); + append_dev(p1, b1); + append_dev(b1, t7); + append_dev(b1, t8); + append_dev(p1, t9); + append_dev(div0, t10); + append_dev(div0, p2); + append_dev(p2, b2); + append_dev(b2, t11); + append_dev(b2, t12); + append_dev(p2, t13); + append_dev(div0, t14); + append_dev(div0, p3); + append_dev(p3, b3); + append_dev(b3, t15); + append_dev(b3, t16); + append_dev(p3, a); + append_dev(a, t17); + append_dev(div2, t18); + append_dev(div2, p4); + append_dev(p4, b4); + append_dev(b4, t19); + append_dev(b4, t20); + append_dev(p4, t21); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content*/ 1 && t3_value !== (t3_value = /*$content*/ ctx[0].name + "")) set_data_dev(t3, t3_value); + if (dirty & /*$content*/ 1 && t7_value !== (t7_value = /*$content*/ ctx[0].type + "")) set_data_dev(t7, t7_value); + if (dirty & /*$content*/ 1 && t9_value !== (t9_value = /*$content*/ ctx[0][/*partner*/ ctx[11].type] + "")) set_data_dev(t9, t9_value); + if (dirty & /*$content*/ 1 && t11_value !== (t11_value = /*$content*/ ctx[0].location + "")) set_data_dev(t11, t11_value); + if (dirty & /*$content*/ 1 && t15_value !== (t15_value = /*$content*/ ctx[0].link + "")) set_data_dev(t15, t15_value); + if (dirty & /*$content*/ 1 && t19_value !== (t19_value = /*$content*/ ctx[0].description + "")) set_data_dev(t19, t19_value); + if (dirty & /*$content*/ 1 && t21_value !== (t21_value = /*$content*/ ctx[0][/*partner*/ ctx[11].description] + "")) set_data_dev(t21, t21_value); + }, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block_1.name, + type: "each", + source: "(45:24) {#each partners as partner}", + ctx + }); + + return block; +} + +// (42:16) {#each Object.entries(partnersByCountry) as [name,partners]} +function create_each_block(ctx) { + let h4; + let t0_value = /*getCountry*/ ctx[4](/*name*/ ctx[7]) + ""; + let t0; + let t1; + let div; + let t2; + let each_value_1 = /*partners*/ ctx[8]; + validate_each_argument(each_value_1); + let each_blocks = []; + + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + const block = { + c: function create() { + h4 = element("h4"); + t0 = text(t0_value); + t1 = space(); + div = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t2 = space(); + attr_dev(h4, "class", "country-name"); + add_location(h4, file, 42, 20, 1340); + attr_dev(div, "class", "country-block"); + add_location(div, file, 43, 20, 1410); + }, + m: function mount(target, anchor) { + insert_dev(target, h4, anchor); + append_dev(h4, t0); + insert_dev(target, t1, anchor); + insert_dev(target, div, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append_dev(div, t2); + }, + p: function update(ctx, dirty) { + if (dirty & /*$content, Object, partnersByCountry, getAddress*/ 33) { + each_value_1 = /*partners*/ ctx[8]; + validate_each_argument(each_value_1); + let i; + + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, t2); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value_1.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(h4); + if (detaching) detach_dev(t1); + if (detaching) detach_dev(div); + destroy_each(each_blocks, detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(42:16) {#each Object.entries(partnersByCountry) as [name,partners]}", + ctx + }); + + return block; +} + +// (33:0) {#key $loaded} +function create_key_block(ctx) { + let if_block_anchor; + let if_block = /*$loaded*/ ctx[1] == 2 && create_if_block(ctx); + + const block = { + c: function create() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m: function mount(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert_dev(target, if_block_anchor, anchor); + }, + p: function update(ctx, dirty) { + if (/*$loaded*/ ctx[1] == 2) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d: function destroy(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach_dev(if_block_anchor); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(33:0) {#key $loaded}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let previous_key = /*$loaded*/ ctx[1]; + let key_block_anchor; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + key_block.c(); + key_block_anchor = empty(); + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + key_block.m(target, anchor); + insert_dev(target, key_block_anchor, anchor); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*$loaded*/ 2 && safe_not_equal(previous_key, previous_key = /*$loaded*/ ctx[1])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(key_block_anchor.parentNode, key_block_anchor); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(key_block_anchor); + key_block.d(detaching); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let $content; + let $loaded; + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('partners-component', slots, []); + let loaded = writable(0); + validate_store(loaded, 'loaded'); + component_subscribe($$self, loaded, value => $$invalidate(1, $loaded = value)); + let content = writable({}); + validate_store(content, 'content'); + component_subscribe($$self, content, value => $$invalidate(0, $content = value)); + loadLocaleContent(content, "countries", loaded); + let locale = loadLocaleContent(content, "partners-component", loaded); + + function getCountry(name) { + return locale == "en" ? name : $content[name]; + } + + function getAddress(group) { + return group.location[0].map(x => locale == "en" ? x : $content[x]).join(", "); + } + + onMount(() => { + + }); + + const writable_props = []; + + Object_1.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ + onMount, + writable, + loadLocaleContent, + partnersByCountry, + loaded, + content, + locale, + getCountry, + getAddress, + $content, + $loaded + }); + + $$self.$inject_state = $$props => { + if ('loaded' in $$props) $$invalidate(2, loaded = $$props.loaded); + if ('content' in $$props) $$invalidate(3, content = $$props.content); + if ('locale' in $$props) locale = $$props.locale; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [$content, $loaded, loaded, content, getCountry, getAddress]; +} + +class Partners_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("partners-component", Partners_component); + +export { Partners_component as default }; diff --git a/Server/public/js/components/select-component.js b/Server/public/js/components/select-component.js index df38f5d..fefa9f3 100644 --- a/Server/public/js/components/select-component.js +++ b/Server/public/js/components/select-component.js @@ -1 +1,593 @@ -import{S as t,i as e,a as r,b as i,u as o,s as n,f as l,n as s,h as a,d,o as u,t as c,g as h,j as p,v as f,l as m,q as v,m as b,p as g,w}from"./index-4348483d.js";import{px2rem as y,getTextWidth as x,getCanvasFont as $}from"../../../../../../../../../js/libraries/miscTools.js";function k(t,e,r){const i=t.slice();return i[26]=e[r],i[27]=e,i[28]=r,i}function z(t){let e,r,o,n,s,a,u=t[26]+"",p=t[28];const f=()=>t[14](e,p),g=()=>t[14](null,p);function w(){return t[15](t[28])}return{c(){e=l("button"),r=l("span"),o=c(u),n=h(),e.value=t[28]},m(t,l){i(t,e,l),m(e,r),m(r,o),m(e,n),f(),s||(a=v(e,"click",w),s=!0)},p(e,r){t=e,4&r&&u!==(u=t[26]+"")&&b(o,u),p!==t[28]&&(g(),p=t[28],f())},d(t){t&&d(e),g(),s=!1,a()}}}function L(t){let e,r,o,n,s,u,w,y,x,$,L,j=(null!=t[0]?t[0]:"")+"",M=t[2],T=[];for(let e=0;ee==t));r(6,n.innerHTML=t,n),r(5,p[i].style.display="none",p),r(11,c=i)}r(8,f+=1)}}function b(t,e){null!=t&&null!=e&&e[t]!=d&&(r(0,d=e[t]),r(8,f+=1))}function g(){"none"==o.style.display?r(4,o.style.display="initial",o):r(4,o.style.display="none",o)}function k(t,e){r(11,c=t),r(0,d=a[t]),null!=e&&null!=e&&e(t)}function z(){r(4,o.style.display="none",o)}function L(t,e){let r;if(null!=t&&null!=e){let i=getComputedStyle(t).getPropertyValue("--width");if(isNaN(i)||""==i){if(null==m)return m=new ResizeObserver((()=>L(t,e))),void m.observe(l);i=getComputedStyle(l).getPropertyValue("width"),r=y(parseFloat(i.slice(0,i.length-2)))}else r=parseFloat(i.slice(0,i.length-2));let o=[];for(let t=0;tr){let t=1.1*n+"rem";e.style.width=t;for(let r=0;r{n=t,r(6,n)}))}function M(t){w[t?"unshift":"push"]((()=>{l=t,r(7,l)}))}function T(t,e){w[t?"unshift":"push"]((()=>{p[e]=t,r(5,p)}))}u((()=>{h.addEventListener("focusout",z)}));const E=t=>k(t,s);function H(t){w[t?"unshift":"push"]((()=>{o=t,r(4,o)}))}function R(t){w[t?"unshift":"push"]((()=>{i=t,r(3,i)}))}return t.$$set=t=>{"callback"in t&&r(1,s=t.callback),"options"in t&&r(2,a=t.options),"value"in t&&r(0,d=t.value),"valueindex"in t&&r(11,c=t.valueindex)},t.$$.update=()=>{5&t.$$.dirty&&v(d,a),2052&t.$$.dirty&&b(c,a),24&t.$$.dirty&&L(i,o)},[d,s,a,i,o,p,n,l,f,g,k,c,j,M,T,E,H,R]}class T extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:r(this.attributes),customElement:!0},M,j,n,{callback:1,options:2,value:0,valueindex:11},null),t&&(t.target&&i(t.target,this,t.anchor),t.props&&(this.$set(t.props),o()))}static get observedAttributes(){return["callback","options","value","valueindex"]}get callback(){return this.$$.ctx[1]}set callback(t){this.$$set({callback:t}),o()}get options(){return this.$$.ctx[2]}set options(t){this.$$set({options:t}),o()}get value(){return this.$$.ctx[0]}set value(t){this.$$set({value:t}),o()}get valueindex(){return this.$$.ctx[11]}set valueindex(t){this.$$set({valueindex:t}),o()}}customElements.define("select-component",T);export{T as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, B as flush, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, j as validate_each_argument, k as element, n as noop, p as attr_dev, m as add_location, h as detach_dev, C as binding_callbacks, t as text, l as space, q as src_url_equal, D as set_style, u as append_dev, y as listen_dev, w as set_data_dev, x as destroy_each } from './index-d19aafba.js'; +import { px2rem, getTextWidth, getCanvasFont } from '../../../../../../../../../js/libraries/miscTools.js'; + +/* src\components\select-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\select-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[26] = list[i]; + child_ctx[27] = list; + child_ctx[28] = i; + return child_ctx; +} + +// (135:12) {#each options as option, i} +function create_each_block(ctx) { + let button; + let span; + let t0_value = /*option*/ ctx[26] + ""; + let t0; + let t1; + let i = /*i*/ ctx[28]; + let mounted; + let dispose; + const assign_button = () => /*button_binding_1*/ ctx[14](button, i); + const unassign_button = () => /*button_binding_1*/ ctx[14](null, i); + + function click_handler() { + return /*click_handler*/ ctx[15](/*i*/ ctx[28]); + } + + const block = { + c: function create() { + button = element("button"); + span = element("span"); + t0 = text(t0_value); + t1 = space(); + add_location(span, file, 136, 20, 4826); + button.value = /*i*/ ctx[28]; + add_location(button, file, 135, 16, 4715); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, span); + append_dev(span, t0); + append_dev(button, t1); + assign_button(); + + if (!mounted) { + dispose = listen_dev(button, "click", click_handler, false, false, false); + mounted = true; + } + }, + p: function update(new_ctx, dirty) { + ctx = new_ctx; + if (dirty & /*options*/ 4 && t0_value !== (t0_value = /*option*/ ctx[26] + "")) set_data_dev(t0, t0_value); + + if (i !== /*i*/ ctx[28]) { + unassign_button(); + i = /*i*/ ctx[28]; + assign_button(); + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + unassign_button(); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(135:12) {#each options as option, i}", + ctx + }); + + return block; +} + +// (127:4) {#key key} +function create_key_block(ctx) { + let button; + let div0; + let span; + let t0_value = (/*value*/ ctx[0] != null ? /*value*/ ctx[0] : "") + ""; + let t0; + let t1; + let img; + let img_src_value; + let t2; + let div1; + let mounted; + let dispose; + let each_value = /*options*/ ctx[2]; + validate_each_argument(each_value); + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const block = { + c: function create() { + button = element("button"); + div0 = element("div"); + span = element("span"); + t0 = text(t0_value); + t1 = space(); + img = element("img"); + t2 = space(); + div1 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr_dev(span, "id", "current-options-span"); + add_location(span, file, 129, 16, 4359); + attr_dev(div0, "id", "current-options-div"); + add_location(div0, file, 128, 12, 4311); + attr_dev(img, "id", "arrow-down"); + if (!src_url_equal(img.src, img_src_value = "../assets/arrow_down.svg")) attr_dev(img, "src", img_src_value); + attr_dev(img, "alt", "arrow down"); + add_location(img, file, 131, 12, 4484); + attr_dev(button, "id", "current-option-button"); + add_location(button, file, 127, 8, 4202); + attr_dev(div1, "id", "options-holder"); + set_style(div1, "display", "none"); + add_location(div1, file, 133, 8, 4582); + }, + m: function mount(target, anchor) { + insert_dev(target, button, anchor); + append_dev(button, div0); + append_dev(div0, span); + append_dev(span, t0); + /*span_binding*/ ctx[12](span); + append_dev(button, t1); + append_dev(button, img); + /*button_binding*/ ctx[13](button); + insert_dev(target, t2, anchor); + insert_dev(target, div1, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div1, null); + } + + /*div1_binding*/ ctx[16](div1); + + if (!mounted) { + dispose = listen_dev(button, "click", /*changeVisibility*/ ctx[9], false, false, false); + mounted = true; + } + }, + p: function update(ctx, dirty) { + if (dirty & /*value*/ 1 && t0_value !== (t0_value = (/*value*/ ctx[0] != null ? /*value*/ ctx[0] : "") + "")) set_data_dev(t0, t0_value); + + if (dirty & /*optionButtons, changeOption, callback, options*/ 1062) { + each_value = /*options*/ ctx[2]; + validate_each_argument(each_value); + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div1, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + + each_blocks.length = each_value.length; + } + }, + d: function destroy(detaching) { + if (detaching) detach_dev(button); + /*span_binding*/ ctx[12](null); + /*button_binding*/ ctx[13](null); + if (detaching) detach_dev(t2); + if (detaching) detach_dev(div1); + destroy_each(each_blocks, detaching); + /*div1_binding*/ ctx[16](null); + mounted = false; + dispose(); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_key_block.name, + type: "key", + source: "(127:4) {#key key}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let div; + let previous_key = /*key*/ ctx[8]; + let key_block = create_key_block(ctx); + + const block = { + c: function create() { + div = element("div"); + key_block.c(); + this.c = noop; + attr_dev(div, "class", "select"); + add_location(div, file, 125, 0, 4137); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, div, anchor); + key_block.m(div, null); + /*div_binding*/ ctx[17](div); + }, + p: function update(ctx, [dirty]) { + if (dirty & /*key*/ 256 && safe_not_equal(previous_key, previous_key = /*key*/ ctx[8])) { + key_block.d(1); + key_block = create_key_block(ctx); + key_block.c(); + key_block.m(div, null); + } else { + key_block.p(ctx, dirty); + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div); + key_block.d(detaching); + /*div_binding*/ ctx[17](null); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('select-component', slots, []); + let { callback = null } = $$props; + let { options = [""] } = $$props; + let { value = null } = $$props; + let { valueindex = null } = $$props; + + // Main code + let root = arguments[0]; + + let select; + let optionsHolder; + let optionButtons = []; + let currentOption; + let currentOptionButton; + let init = false; + let key = 0; + let obs = null; + + function setKeyValue(value, options) { + if (value !== null) { + if (options.includes(value)) { + let index = options.findIndex(element => element == value); + $$invalidate(6, currentOption.innerHTML = value, currentOption); + $$invalidate(5, optionButtons[index].style.display = "none", optionButtons); + $$invalidate(11, valueindex = index); + } + + $$invalidate(8, key += 1); + } + } + + function setKeyIndex(valueindex, options) { + if (valueindex != null && options != undefined && options[valueindex] != value) { + $$invalidate(0, value = options[valueindex]); + $$invalidate(8, key += 1); + } + } + + function indexToValue(index) { + $$invalidate(0, value = options[index]); + } + + function changeVisibility() { + if (optionsHolder.style.display == "none") { + $$invalidate(4, optionsHolder.style.display = "initial", optionsHolder); + } else { + $$invalidate(4, optionsHolder.style.display = "none", optionsHolder); + } + } + + function changeOption(index, callback) { + $$invalidate(11, valueindex = index); + $$invalidate(0, value = options[index]); + + if (callback != undefined && callback != null) { + callback(index); + } + } + + function hideSelect() { + $$invalidate(4, optionsHolder.style.display = "none", optionsHolder); + } + + function changeOptionsWidth(select, optionsHolder) { + let selectWidth; + + if (select != undefined && optionsHolder != undefined) { + let selectWidthText = getComputedStyle(select).getPropertyValue('--width'); + + if (isNaN(selectWidthText) || selectWidthText == "") { + if (obs == null) { + obs = new ResizeObserver(() => changeOptionsWidth(select, optionsHolder)); + obs.observe(currentOptionButton); + return; + } else { + selectWidthText = getComputedStyle(currentOptionButton).getPropertyValue('width'); + selectWidth = px2rem(parseFloat(selectWidthText.slice(0, selectWidthText.length - 2))); + } + } else { + selectWidth = parseFloat(selectWidthText.slice(0, selectWidthText.length - 2)); + } + + let spanWidths = []; + + for (let i = 0; i < optionsHolder.children.length; i++) { + let span = optionsHolder.children[i].children[0]; + let spanWidth = getTextWidth(span.innerHTML, getCanvasFont(span)); + spanWidths.push(spanWidth); + } + + let maxOptionsWidth = px2rem(Math.max(...spanWidths)); + + if (maxOptionsWidth > selectWidth) { + let width = 1.1 * maxOptionsWidth + "rem"; + optionsHolder.style.width = width; + + for (let i = 0; i < optionsHolder.children.length; i++) { + let button = optionsHolder.children[i]; + button.style.width = width; + } + + optionsHolder.style.marginLeft = -(1.1 * maxOptionsWidth - selectWidth) / 2 - 0.05 + "rem"; + } else { + let width = selectWidth + 0.1 + "rem"; + + for (let i = 0; i < optionsHolder.children.length; i++) { + let button = optionsHolder.children[i]; + button.style.width = width; + } + } + } + } + + onMount(() => { + init = true; + root.addEventListener('focusout', hideSelect); + }); + + const writable_props = ['callback', 'options', 'value', 'valueindex']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function span_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + currentOption = $$value; + $$invalidate(6, currentOption); + }); + } + + function button_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + currentOptionButton = $$value; + $$invalidate(7, currentOptionButton); + }); + } + + function button_binding_1($$value, i) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + optionButtons[i] = $$value; + $$invalidate(5, optionButtons); + }); + } + + const click_handler = i => changeOption(i, callback); + + function div1_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + optionsHolder = $$value; + $$invalidate(4, optionsHolder); + }); + } + + function div_binding($$value) { + binding_callbacks[$$value ? 'unshift' : 'push'](() => { + select = $$value; + $$invalidate(3, select); + }); + } + + $$self.$$set = $$props => { + if ('callback' in $$props) $$invalidate(1, callback = $$props.callback); + if ('options' in $$props) $$invalidate(2, options = $$props.options); + if ('value' in $$props) $$invalidate(0, value = $$props.value); + if ('valueindex' in $$props) $$invalidate(11, valueindex = $$props.valueindex); + }; + + $$self.$capture_state = () => ({ + onMount, + px2rem, + getTextWidth, + getCanvasFont, + callback, + options, + value, + valueindex, + root, + select, + optionsHolder, + optionButtons, + currentOption, + currentOptionButton, + init, + key, + obs, + setKeyValue, + setKeyIndex, + indexToValue, + changeVisibility, + changeOption, + hideSelect, + changeOptionsWidth + }); + + $$self.$inject_state = $$props => { + if ('callback' in $$props) $$invalidate(1, callback = $$props.callback); + if ('options' in $$props) $$invalidate(2, options = $$props.options); + if ('value' in $$props) $$invalidate(0, value = $$props.value); + if ('valueindex' in $$props) $$invalidate(11, valueindex = $$props.valueindex); + if ('root' in $$props) root = $$props.root; + if ('select' in $$props) $$invalidate(3, select = $$props.select); + if ('optionsHolder' in $$props) $$invalidate(4, optionsHolder = $$props.optionsHolder); + if ('optionButtons' in $$props) $$invalidate(5, optionButtons = $$props.optionButtons); + if ('currentOption' in $$props) $$invalidate(6, currentOption = $$props.currentOption); + if ('currentOptionButton' in $$props) $$invalidate(7, currentOptionButton = $$props.currentOptionButton); + if ('init' in $$props) init = $$props.init; + if ('key' in $$props) $$invalidate(8, key = $$props.key); + if ('obs' in $$props) obs = $$props.obs; + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*value, options*/ 5) { + setKeyValue(value, options); + } + + if ($$self.$$.dirty & /*valueindex, options*/ 2052) { + setKeyIndex(valueindex, options); + } + + if ($$self.$$.dirty & /*select, optionsHolder*/ 24) { + changeOptionsWidth(select, optionsHolder); + } + }; + + return [ + value, + callback, + options, + select, + optionsHolder, + optionButtons, + currentOption, + currentOptionButton, + key, + changeVisibility, + changeOption, + valueindex, + span_binding, + button_binding, + button_binding_1, + click_handler, + div1_binding, + div_binding + ]; +} + +class Select_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + { + callback: 1, + options: 2, + value: 0, + valueindex: 11 + }, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + + if (options.props) { + this.$set(options.props); + flush(); + } + } + } + + static get observedAttributes() { + return ["callback", "options", "value", "valueindex"]; + } + + get callback() { + return this.$$.ctx[1]; + } + + set callback(callback) { + this.$$set({ callback }); + flush(); + } + + get options() { + return this.$$.ctx[2]; + } + + set options(options) { + this.$$set({ options }); + flush(); + } + + get value() { + return this.$$.ctx[0]; + } + + set value(value) { + this.$$set({ value }); + flush(); + } + + get valueindex() { + return this.$$.ctx[11]; + } + + set valueindex(valueindex) { + this.$$set({ valueindex }); + flush(); + } +} + +customElements.define("select-component", Select_component); + +export { Select_component as default }; diff --git a/Server/public/js/components/switch-component.js b/Server/public/js/components/switch-component.js index bd960dc..6bc83b3 100644 --- a/Server/public/js/components/switch-component.js +++ b/Server/public/js/components/switch-component.js @@ -1 +1,209 @@ -import{S as t,i as e,a as s,b as c,u as i,s as a,f as r,g as o,n as h,h as n,l,q as d,d as u,r as p,o as b}from"./index-4348483d.js";import"../../../../../../../../../js/libraries/miscTools.js";function k(t){let e,s,i,a,b,k;return{c(){e=r("label"),s=r("input"),i=o(),a=r("span"),this.c=h,n(s,"type","checkbox"),n(a,"class","switch-span"),n(e,"class","switch")},m(r,o){c(r,e,o),l(e,s),s.checked=t[0],l(e,i),l(e,a),b||(k=[d(s,"change",t[4]),d(s,"click",t[1])],b=!0)},p(t,[e]){1&e&&(s.checked=t[0])},i:h,o:h,d(t){t&&u(e),b=!1,p(k)}}}function g(t,e,s){let{callback:c=null}=e,{checked:i=!1}=e;const a=()=>{setTimeout((()=>{null!=c?(s(0,i=!i),c()):a()}),100)};return b((()=>{})),t.$$set=t=>{"callback"in t&&s(2,c=t.callback),"checked"in t&&s(0,i=t.checked)},[i,function(){null!=c&&(s(0,i=!i),c())},c,a,function(){i=this.checked,s(0,i)}]}class m extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:s(this.attributes),customElement:!0},g,k,a,{callback:2,checked:0,toggle:3},null),t&&(t.target&&c(t.target,this,t.anchor),t.props&&(this.$set(t.props),i()))}static get observedAttributes(){return["callback","checked","toggle"]}get callback(){return this.$$.ctx[2]}set callback(t){this.$$set({callback:t}),i()}get checked(){return this.$$.ctx[0]}set checked(t){this.$$set({checked:t}),i()}get toggle(){return this.$$.ctx[3]}}customElements.define("switch-component",m);export{m as default}; + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, B as flush, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, k as element, l as space, n as noop, p as attr_dev, m as add_location, u as append_dev, y as listen_dev, h as detach_dev, z as run_all } from './index-d19aafba.js'; +import { px2rem, getTextWidth, getCanvasFont } from '../../../../../../../../../js/libraries/miscTools.js'; + +/* src\components\switch-component.svelte generated by Svelte v3.52.0 */ +const file = "src\\components\\switch-component.svelte"; + +function create_fragment(ctx) { + let label; + let input; + let t; + let span; + let mounted; + let dispose; + + const block = { + c: function create() { + label = element("label"); + input = element("input"); + t = space(); + span = element("span"); + this.c = noop; + attr_dev(input, "type", "checkbox"); + add_location(input, file, 39, 4, 804); + attr_dev(span, "class", "switch-span"); + add_location(span, file, 40, 4, 880); + attr_dev(label, "class", "switch"); + add_location(label, file, 38, 0, 776); + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: function mount(target, anchor) { + insert_dev(target, label, anchor); + append_dev(label, input); + input.checked = /*checked*/ ctx[0]; + append_dev(label, t); + append_dev(label, span); + + if (!mounted) { + dispose = [ + listen_dev(input, "change", /*input_change_handler*/ ctx[4]), + listen_dev(input, "click", /*toggleClick*/ ctx[1], false, false, false) + ]; + + mounted = true; + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*checked*/ 1) { + input.checked = /*checked*/ ctx[0]; + } + }, + i: noop, + o: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(label); + mounted = false; + run_all(dispose); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('switch-component', slots, []); + let { callback = null } = $$props; + let { checked = false } = $$props; + + const toggle = () => { + let f = () => { + if (callback != null) { + $$invalidate(0, checked = !checked); + callback(); + } else { + toggle(); + } + }; + + setTimeout(f, 100); + }; + + function toggleClick() { + if (callback != null) { + $$invalidate(0, checked = !checked); + callback(); + } + } + + // Main code + onMount(() => { + + }); + + const writable_props = ['callback', 'checked']; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + function input_change_handler() { + checked = this.checked; + $$invalidate(0, checked); + } + + $$self.$$set = $$props => { + if ('callback' in $$props) $$invalidate(2, callback = $$props.callback); + if ('checked' in $$props) $$invalidate(0, checked = $$props.checked); + }; + + $$self.$capture_state = () => ({ + onMount, + px2rem, + getTextWidth, + getCanvasFont, + callback, + checked, + toggle, + toggleClick + }); + + $$self.$inject_state = $$props => { + if ('callback' in $$props) $$invalidate(2, callback = $$props.callback); + if ('checked' in $$props) $$invalidate(0, checked = $$props.checked); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [checked, toggleClick, callback, toggle, input_change_handler]; +} + +class Switch_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + { callback: 2, checked: 0, toggle: 3 }, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + + if (options.props) { + this.$set(options.props); + flush(); + } + } + } + + static get observedAttributes() { + return ["callback", "checked", "toggle"]; + } + + get callback() { + return this.$$.ctx[2]; + } + + set callback(callback) { + this.$$set({ callback }); + flush(); + } + + get checked() { + return this.$$.ctx[0]; + } + + set checked(checked) { + this.$$set({ checked }); + flush(); + } + + get toggle() { + return this.$$.ctx[3]; + } + + set toggle(value) { + throw new Error(": Cannot set read-only property 'toggle'"); + } +} + +customElements.define("switch-component", Switch_component); + +export { Switch_component as default }; diff --git a/Server/public/js/coops.js b/Server/public/js/coops.js index 1b6038b..8338fcc 100644 --- a/Server/public/js/coops.js +++ b/Server/public/js/coops.js @@ -2,7 +2,7 @@ export let coops = [ { logo: "chiron_logo", name: "Chiron Health", - location: [["Estonia","KohtlaJarve"],[59.41038769769602, 27.287802936242034]], + location: [["Estonia","Kohtla-Järve"],[59.41038769769602, 27.287802936242034]], market: "wellnessAndHealth", workers: 2, status: "inDevelopment", @@ -13,7 +13,7 @@ export let coops = [ { logo: "kuusk_logo", name: "Kuusk", - location: [["Estonia","KohtlaJarve"],[59.399947051803004, 27.277159931677055]], + location: [["Estonia","Kohtla-Järve"],[59.399947051803004, 27.277159931677055]], market: "herbalTeas", workers: 1, status: "inDevelopment", @@ -36,7 +36,7 @@ for (let g of coops) { export let coopsMarkersLayer = L.layerGroup() -export function addMarkersCoops(map,content) { +export function addMarkersCoops(map,content,locale) { for (let g of coops) { let coordinates let text = ""+content["Cooperative"]+"
" @@ -56,7 +56,13 @@ export function addMarkersCoops(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/public/js/groups.js b/Server/public/js/groups.js index 3aef913..95b2c52 100644 --- a/Server/public/js/groups.js +++ b/Server/public/js/groups.js @@ -25,7 +25,7 @@ export let groups = [ contact: ["https://discord.gg/Qk8KUk787z","DiscordInviteLink"] }, { - location: [["Estonia","KohtlaJarve"], [59.40629447076191, 27.280605339416322]], + location: [["Estonia","Kohtla-Järve"], [59.40629447076191, 27.280605339416322]], members: 3, contact: ["https://discord.gg/Qk8KUk787z","DiscordInviteLink"] }, @@ -93,7 +93,7 @@ let groupsMarkersLayerIn = L.layerGroup() let contactGeneral =["https://discord.gg/4BUau4AZre","DiscordInviteLink"] -function addMarkersToLayer(g,layer,content) { +function addMarkersToLayer(g,layer,content,locale) { let coordinates let text = ""+content["Group"]+"
" for (let field in g) { @@ -103,7 +103,13 @@ function addMarkersToLayer(g,layer,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location.map(x => content[x]).join(", ") + let locationString + if (locale=="en") { + locationString = location.map(x => x).join(", ") + } + else { + locationString = location.map(x => content[x]).join(", ") + } text += fieldText + locationString + "
" coordinates = g[field][1] } @@ -123,15 +129,15 @@ function addMarkersToLayer(g,layer,content) { marker.addTo(layer).bindPopup(text) } -export function addMarkersGroups(map,content) { +export function addMarkersGroups(map,content,locale) { for (let g of groups) { - addMarkersToLayer(g,groupsMarkersLayerIn,content) + addMarkersToLayer(g,groupsMarkersLayerIn,content,locale) } for (let gs of Object.values(groupsByCountry)) { if (gs.length==1) { let g = {...gs[0]} g.location[0] = [g.location[0][0]] - addMarkersToLayer(g,groupsMarkersLayerOut,content) + addMarkersToLayer(g,groupsMarkersLayerOut,content,locale) } else { let locationName = [gs[0].location[0][0]] @@ -153,7 +159,7 @@ export function addMarkersGroups(map,content) { members: members, contact: contact } - addMarkersToLayer(gNew,groupsMarkersLayerOut,content) + addMarkersToLayer(gNew,groupsMarkersLayerOut,content,locale) } } groupsMarkersLayerOut.addTo(groupsMarkersLayer) @@ -172,37 +178,5 @@ function onZoomEnd(map) { groupsMarkersLayerIn.addTo(groupsMarkersLayer) } } -/* -function reverseGeocode(latitude, longitude) { - let url = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${latitude}&lon=${longitude}`; - - // Create a new XMLHttpRequest object - let xhr = new XMLHttpRequest(); - - // Set up the AJAX request - xhr.open('GET', url, true); - - // Define the onload function - xhr.onload = function() { - if (xhr.status === 200) { - // Parse the response JSON - let response = JSON.parse(xhr.responseText); - - // Extract the address information from the response - let address = response.address; - let city = address.city || address.town || address.village || address.hamlet; - let country = address.country; - let fullAddress = city + ', ' + country; - - // Do something with the address - console.log(fullAddress); - } - }; - - // Send the AJAX request - xhr.send(); - } + -let latitude = 123.456; // Replace with your latitude -let longitude = 78.901; // Replace with your longitude -reverseGeocode(latitude, longitude);*/ \ No newline at end of file diff --git a/Server/public/js/libraries/serverTools.js b/Server/public/js/libraries/serverTools.js index 76df3ab..6e85d01 100644 --- a/Server/public/js/libraries/serverTools.js +++ b/Server/public/js/libraries/serverTools.js @@ -1,17 +1,17 @@ // Get data from server export function getData(path,callback) { - var xhr = new XMLHttpRequest(); - xhr.overrideMimeType("application/json"); - xhr.open('GET', path, true); + let xhr = new XMLHttpRequest(); + xhr.overrideMimeType("application/json") + xhr.open('GET', path, true) xhr.onreadystatechange = function () { - if (xhr.readyState == 4 && xhr.status == "200") { + if (xhr.readyState == 4 && xhr.status == "200") { if (callback !== undefined) { - callback(xhr.responseText); + callback(xhr.responseText) } - } + } }; - xhr.send(null); + xhr.send() } // Parse JSON from given path into a given variable under a given key @@ -35,6 +35,7 @@ export function sendData(route,data,callback) { callback(xhr.responseText) } } else { + console.log("Request gave an error") // Oh no! There has been an error with the request! } } diff --git a/Server/public/js/parties.js b/Server/public/js/parties.js index 22a775b..5921eb9 100644 --- a/Server/public/js/parties.js +++ b/Server/public/js/parties.js @@ -22,7 +22,7 @@ for (let g of parties) { export let partiesMarkersLayer = L.layerGroup() -export function addMarkersParties(map,content) { +export function addMarkersParties(map,content,locale) { for (let g of parties) { let coordinates let text = ""+content["Party"]+"
" @@ -42,7 +42,13 @@ export function addMarkersParties(map,content) { } else if (field=="location") { let location = g[field][0] - let locationString = location + let locationString + if (locale=="en") { + locationString = location + } + else { + locationString = content[location] + } text += fieldText + locationString + "
" coordinates = g[field][1] } diff --git a/Server/public/locales/countries.csv b/Server/public/locales/countries.csv new file mode 100644 index 0000000..e69de29 diff --git a/Server/public/locales/en/countries.json b/Server/public/locales/en/countries.json index 3680dc3..8919b1b 100644 --- a/Server/public/locales/en/countries.json +++ b/Server/public/locales/en/countries.json @@ -1,29 +1,3 @@ { - "map-prompt": "Want to appear on our map? Contact us!", - "Online": "Online", - "Denmark": "Denmark", - "Estonia": "Estonia", - "Greece": "Greece", - "Latvia": "Latvia", - "Canada": "Canada", - "Germany": "Germany", - "Copenhagen": "Copenhagen", - "Ireland": "Ireland", - "USA": "USA", - "Bulgaria": "Bulgaria", - "Colorado": "Colorado", - "Georgia": "Georgia", - "Ohio": "Ohio", - "Montreal": "Montreal", - "Kolding": "Kolding", - "KohtlaJarve": "Kohtla-Järve", - "Athens": "Athens", - "Riga": "Riga", - "Halifax": "Halifax", - "Wiesbaden": "Wiesbaden", - "Florida": "Florida", - "Tallinn": "Tallinn", - "Varna": "Varna", - "Louisville": "Louisville", - "Toronto": "Toronto" + "map-prompt": "Want to appear on our map? Contact us!" } \ No newline at end of file diff --git a/Server/public/locales/ru/countries.json b/Server/public/locales/ru/countries.json index 5cf1964..08eec1d 100644 --- a/Server/public/locales/ru/countries.json +++ b/Server/public/locales/ru/countries.json @@ -15,7 +15,7 @@ "Ohio": "Огайо", "Copenhagen": "Копенгаген", "Kolding": "Колдинг", - "KohtlaJarve": "Кохтла-Ярве", + "Kohtla-Järve": "Кохтла-Ярве", "Athens": "Афины", "Riga": "Рига", "Halifax": "Галифакс", diff --git a/Server/routes.jl b/Server/routes.jl index e964a87..94b5019 100644 --- a/Server/routes.jl +++ b/Server/routes.jl @@ -11,6 +11,10 @@ route("/:locale/join-us/*", BasicController.join_us, named = :join_us) route("/:locale/groups/*", BasicController.groups, named = :groups) +route("/:locale/groups-add/*", BasicController.groups_add, named = :groups_add) + +route("/:locale/groups-add-post/*", BasicController.groups_add_post, method = POST, named = :groups_add_post) + route("/:locale/cooperatives/*", BasicController.cooperatives, named = :cooperatives) route("/:locale/communes/*", BasicController.communes, named = :communes)