diff --git a/Server/app/layouts/main.jl.html b/Server/app/layouts/main.jl.html index ea10148..6d54157 100644 --- a/Server/app/layouts/main.jl.html +++ b/Server/app/layouts/main.jl.html @@ -12,6 +12,8 @@ + + diff --git a/Server/app/resources/basic/BasicController.jl b/Server/app/resources/basic/BasicController.jl index e950849..c926db4 100644 --- a/Server/app/resources/basic/BasicController.jl +++ b/Server/app/resources/basic/BasicController.jl @@ -13,7 +13,7 @@ dict_layouts = Dict( :groups => generate_layout_html("main",controller,"groups",libraries=["Leaflet"]), :cooperatives => generate_layout_html("main",controller,"cooperatives",libraries=["Leaflet"]), :communities => generate_layout_html("main",controller,"communities",libraries=["Leaflet"]), - :affiliates => generate_layout_html("main",controller,"affiliates",libraries=["Leaflet"]), + :partners => generate_layout_html("main",controller,"partners",libraries=["Leaflet"]), ) #---General----------------------------------------------------- @@ -61,9 +61,9 @@ function communities() ) end -function affiliates() - html(:basic,:affiliates, layout = dict_layouts[:affiliates], context = @__MODULE__, - title = "LibSoc - Affiliates", +function partners() + html(:basic,:partners, layout = dict_layouts[:partners], context = @__MODULE__, + title = "LibSoc - Partners", description = "" ) end diff --git a/Server/app/resources/basic/views/affiliates.jl.html b/Server/app/resources/basic/views/affiliates.jl.html deleted file mode 100644 index 2de7130..0000000 --- a/Server/app/resources/basic/views/affiliates.jl.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Server/app/resources/basic/views/partners.jl.html b/Server/app/resources/basic/views/partners.jl.html new file mode 100644 index 0000000..5b80dbc --- /dev/null +++ b/Server/app/resources/basic/views/partners.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 6828e60..701c69b 100644 --- a/Server/app/svelte/public/css/common.css +++ b/Server/app/svelte/public/css/common.css @@ -16,8 +16,8 @@ --grey-blue:hsl(223, 13%, 22%); --cream:hsl(34, 43%, 90%); --dark-cream:hsl(33, 26%, 84%); - --sans-serif: "Space Grotesk"; - --serif: "DejaVu"; + --sans-serif: "OpenSans"; + --serif: "Lora"; } svg { @@ -59,27 +59,25 @@ body { /*---Fonts---------------------------------------------------------*/ @font-face { - font-family: 'Space Grotesk'; + font-family: 'OpenSans'; font-weight: 400; font-style: normal; font-display: swap; src: /*local('Space Grotesk Light'), local('SpaceGroteskLight-Regular'), local('Space Grotesk Light Regular'), */ - url('/fonts/SpaceGrotesk/SpaceGrotesk.woff2') format('woff2'), - url('/fonts/SpaceGrotesk/SpaceGrotesk.woff') format('woff'); + url('/fonts/OpenSans/opensans.woff2') format('woff2'), + url('/fonts/OpenSans/opensans.woff') format('woff'); } @font-face { - font-family: 'DejaVu'; + font-family: 'Lora'; font-weight: 400; font-style: normal; font-display: swap; - src: /*local('DejaVuLGCSerif'), - local('DejaVu LGC Serif'), */ - /*url('/fonts/DejaVu/DejaVuLGCSerif.woff2') format('woff2'), */ - url('/fonts/DejaVu/solitasserifnormregular.woff2') format('woff2'), - url('/fonts/DejaVu/DejaVuLGCSerif.woff') format('woff'); + src: + url('/fonts/Lora/Lora-Regular.ttf') format('ttf'), + url('/fonts/lora/Lora-Regular.woff') format('woff'); } .serif { @@ -124,7 +122,7 @@ h4 { span { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; height: auto; width: auto; color: #222222; @@ -132,20 +130,20 @@ span { p { font-family: var(--serif, serif); - font-size: 1.25rem; - line-height: 150%; + font-size: 1.15rem; + line-height: 160%; color: #222222; } a { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; color: #222222; } li { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; color: #222222; text-align: justify; } diff --git a/Server/app/svelte/public/css/navbar.css b/Server/app/svelte/public/css/navbar.css deleted file mode 100644 index edb7355..0000000 --- a/Server/app/svelte/public/css/navbar.css +++ /dev/null @@ -1,219 +0,0 @@ - -/* Header */ -#navbar{ - position: relative; - top: 0; - width: min(100%,116rem); - z-index: 1000; - height: 5.26rem; -} - -#navbar * { - font-family: var(--sans-serif, sans-serif); -} - -/* Logo */ -#logo-container { - display: flex; - position: absolute; - margin-left: 1rem; - height: 100%; - max-height: 5.26rem; - color: black; - z-index: 1; - flex-direction: row; - flex-wrap: nowrap; - align-items: center; -} - -#navbar-logo { - height: 3.5rem; - width: 3.5rem; - object-fit: contain; - border-radius: 10rem; -} - -#navbar-logo-text { - position: relative; - width: auto; - height: 100%; - line-height: 400%; - white-space: nowrap; - text-align: center; - font-size: 1.4rem; - color: #292222; - font-family: var(--sans-serif, sans-serif); - font-weight: 400; - padding-left: 1.2rem; -} - -/* Nav menu */ -#nav { - position: fixed; - width: 100%; - height: 100%; - background-color: white; - overflow: hidden; - z-index: 0; -} -#menu a { - display: block; - padding: 1.9rem; - padding-top: 1rem; - padding-bottom: 1rem; - color: black; - font-size: 1.4rem; -} -#menu a:hover { - background-color: rgb(220, 220, 220); -} - -#menu a:active{ - background-color: #f7aec0; -} - -#menu li { - list-style-type: none; -} - -#nav{ - max-height: 0; - /*transition: max-height .5s ease-out;*/ -} - -/* Menu Icon */ -#hamb{ - position: absolute; - cursor: pointer; - right: 0rem; - padding: 2.8rem 2rem; - z-index: 9999; -}/* Style label tag */ - -#hamb-line { - background: black; - display: block; - height: 2px; - position: relative; - width: 24px; - -} /* Style span tag */ - -#hamb-line::before, -#hamb-line::after{ - background: black; - content: ''; - display: block; - height: 100%; - position: absolute; - transition: all .2s ease-out; - width: 100%; -} -#hamb-line::before{ - top: 5px; -} -#hamb-line::after{ - top: -5px; -} - -#side-menu { - display: none; -} /* Hide checkbox */ - -/* Toggle menu icon */ -#side-menu:checked ~ nav { - display: block; - max-height: 100%; - padding-top: 5.625rem; -} - -#side-menu:checked ~ #logo-container { - position: fixed; -} - -#side-menu:checked ~ #hamb { - position: fixed; -} - -#side-menu:checked ~ #logo-container { - position: fixed; -} - -#side-menu:checked ~ #hamb #hamb-line { - background: transparent; -} - -#side-menu:checked ~ #hamb #hamb-line::before { - transform: rotate(-45deg); - top:0; -} - -#side-menu:checked ~ #hamb #hamb-line::after { - transform: rotate(45deg); - top:0; -} - -#cart-icon { - height: 1.8rem; - pointer-events: none; -} - -#menu a:hover div { - filter: saturate(50%) brightness(140%); -} - -#menu a:hover svg { - stroke: rgb(127, 127, 127);; -} - -#cart-counter { - position: relative; - top: -2.8rem; - left: 1.6rem; - width: 1.3rem; - height: 1.3rem; - border-radius: 3.4rem; - font-family: var(--sans-serif, sans-serif); - font-size: 1rem; - text-align: center; - color: white; - background: var(--pink); -} - - -/* Responsiveness */ -@media only screen and (min-width: 1500px) { - - #navbar { - left: 50%; - -ms-transform: translateX(-50%); - transform: translateX(-50%); - } - - #nav { - max-height: none; - top: 0; - position: relative; - float: right; - width: fit-content; - background-color: transparent; - } - #menu li { - float: left; - } - - #menu a:hover { - background-color: transparent; - color: rgb(127, 127, 127); - } - - #menu a { - padding: 1.9rem; - } - - - - #hamb { - display: none; - } -} \ No newline at end of file diff --git a/Server/app/svelte/public/js/communities.js b/Server/app/svelte/public/js/communities.js index b8897be..4ffb183 100644 --- a/Server/app/svelte/public/js/communities.js +++ b/Server/app/svelte/public/js/communities.js @@ -1,26 +1,40 @@ export let communities = [ { - location: ["Estonia, Kohtla-Järve",[59.409521829709504, 27.288415912535914]], - status: "forming", + location: [{ + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.409521829709504, 27.288415912535914]], + status: { + en: "forming", + ru: "формируется" + }, members: 2, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] } ] -export function addMarkersCommunities(map) { +export function addMarkersCommunities(map,content,locale) { for (let g of communities) { let coordinates let text = "" for (let field in g) { - let fieldText = field[0].toUpperCase() + field.slice(1) + ": " + let fieldText = content[field] + ": " if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + text += fieldText + "" + g.contact[1][locale[0]] + "" } else if (field=="location") { - text += fieldText + g[field][0] + "
" + text += fieldText + g[field][0][locale[0]] + "
" coordinates = g[field][1] } + else if (field=="status") { + text += fieldText + g[field][locale[0]] + "
" + } else { text += fieldText + g[field] + "
" } diff --git a/Server/app/svelte/public/js/coops.js b/Server/app/svelte/public/js/coops.js index e437090..8fd8d9e 100644 --- a/Server/app/svelte/public/js/coops.js +++ b/Server/app/svelte/public/js/coops.js @@ -2,46 +2,88 @@ export let coops = [ { logo: "chiron_logo", name: "Chiron Health", - location: ["Estonia, Kohtla-Järve",[59.40338782864918, 27.286240058760324]], - market: "wellness and health", + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.40338782864918, 27.286240058760324]], + market: { + en: "wellness and health", + ru: "благополучие и здоровье" + }, workers: 2, - status: "launch in 2 months", + status: { + en: "launch in 2 months", + ru: "запуск через 2 месяца" + }, website: "chrn.health", - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"], - description: "Chiron Health is a health platform providing courses and services on the topics of nutrition, exercise, sleep and mental wellbeing.", + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }], + description: { + en: "Chiron Health is a health platform providing courses and services on the topics of nutrition, exercise, sleep and mental wellbeing.", + ru: "Chiron Health — это платформа о здоровье, предлагающая курсы и услуги по вопросам питания, физических упражнений, сна и психического благополучия" + } }, { logo: "kuusk_logo", name: "Kuusk", - location: ["Estonia, Kohtla-Järve",[59.405466538976185, 27.289104862336302]], - market: "herbal teas", + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.405466538976185, 27.289104862336302]], + market: { + en: "herbal teas", + ru: "травяные чаи" + }, workers: 1, - status: "launch in TBD months", + status: { + en: "launch in TBD months", + ru: "запуск через X месяцев" + }, website: "-", - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"], - description: "Kuusk is an online store that sells herbal teas from exclusively local wild plants, as well as an online gathering course.", + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }], + description: { + en: "Kuusk is an online store that sells herbal teas from exclusively local wild plants, as well as an online gathering course.", + ru: "Kuusk — интернет-магазин, в котором продаются травяные чаи исключительно из местных дикорастущих растений, а также онлайн-курс по собирательству." + } } ] -export function addMarkersCoops(map) { +export function addMarkersCoops(map,content,locale) { for (let g of coops) { let coordinates let text = "" for (let field in g) { - let fieldText = "" + field[0].toUpperCase() + field.slice(1) + ": " + "" + let fieldText + if (field!="logo") { + fieldText = content[field] + ": " + } if (field=="logo") { text += "logo" + "
" } else if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + "
" + text += fieldText + "" + g.contact[1][locale[0]] + "" + "
" } else if (field=="website") { text += fieldText + "" + g.website + "" + "
" } else if (field=="location") { - text += fieldText + g[field][0] + "
" + text += fieldText + g[field][0][locale[0]] + "
" coordinates = g[field][1] } + else if (field=="market" || field=="status" || field=="description") { + text += fieldText + g[field][locale[0]] + "
" + } else { text += fieldText + g[field] + "
" } diff --git a/Server/app/svelte/public/js/groups.js b/Server/app/svelte/public/js/groups.js index 80140b5..f80af0c 100644 --- a/Server/app/svelte/public/js/groups.js +++ b/Server/app/svelte/public/js/groups.js @@ -1,37 +1,73 @@ export let groups = [ { - location: ["Denmark, Copenhagen",[55.6840661150132, 12.557133959514688]], + location: [ + { + en: "Denmark, Copenhagen", + ru: "Дания, Копенгаген" + }, + [55.6840661150132, 12.557133959514688]], members: 1, - contact: ["https://discord.gg/xAPZmyr8B6","Discord invite link"] + contact: ["https://discord.gg/xAPZmyr8B6", + { + en: "WhatsApp invite link", + ru: "Discord ссылка" + }] }, { - location: ["Estonia, Kohtla-Järve",[59.40629447076191, 27.280605339416322]], + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.40629447076191, 27.280605339416322]], members: 3, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, { - location: ["Greece, Athens",[37.94877252621736, 23.677622972996158]], + location: [ + { + en: "Greece, Athens", + ru: "Греция, Афины" + }, + [37.94877252621736, 23.677622972996158]], members: 1, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, { - location: ["Latvia, Riga",[56.94748425529816, 24.003027136431925]], + location: [ + { + en: "Latvia, Riga", + ru: "Латвия, Рига" + }, + [56.94748425529816, 24.003027136431925]], members: 2, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, ] -export function addMarkersGroups(map) { +export function addMarkersGroups(map,content,locale) { for (let g of groups) { let coordinates let text = "" for (let field in g) { - let fieldText = field[0].toUpperCase() + field.slice(1) + ": " + let fieldText = content[field] + ": " if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + text += fieldText + "" + g.contact[1][locale[0]] + "" } else if (field=="location") { - text += fieldText + g[field][0] + "
" + text += fieldText + g[field][0][locale[0]] + "
" coordinates = g[field][1] } else { diff --git a/Server/app/svelte/public/js/libraries/serverTools.js b/Server/app/svelte/public/js/libraries/serverTools.js index 65c2ae3..72037f0 100644 --- a/Server/app/svelte/public/js/libraries/serverTools.js +++ b/Server/app/svelte/public/js/libraries/serverTools.js @@ -62,3 +62,47 @@ export function sendText(route,data,callback) { xhr.send(data) } +function onlyUnique(value, index, array) { + return array.indexOf(value) === index; +} + +export function loadLocaleContent(content,componentName,loaded,callback) { + let langs + let localesAvailable + let locale = localStorage.getItem("locale") + if (locale==null) { + langs = navigator.languages.map(x => x.split("-")[0]).filter(onlyUnique) + } + getData("/locales/available.json",function(response) { + if (locale!=null) { + getData("/locales/" + locale + "/" + componentName + ".json" ,function(response) { + let parsed = JSON.parse(response) + content.set(parsed) + if (callback!=undefined) { + callback(locale) + } + loaded = 1 + }) + } + else { + localesAvailable = JSON.parse(response) + for (let lang of langs) { + if (localesAvailable.includes(lang)) { + getData("/locales/" + lang + "/" + componentName + ".json" ,function(response) { + let parsed = JSON.parse(response) + content.set(parsed) + if (callback!=undefined) { + callback(locale) + } + loaded = 1 + }) + } + break + } + } + }) +} + +export function getLocale(locale,lang) { + locale[0] = lang +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/available.json b/Server/app/svelte/public/locales/available.json new file mode 100644 index 0000000..29b6e3b --- /dev/null +++ b/Server/app/svelte/public/locales/available.json @@ -0,0 +1 @@ +["en","ru"] \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/communities-component.json b/Server/app/svelte/public/locales/en/communities-component.json new file mode 100644 index 0000000..9f43b00 --- /dev/null +++ b/Server/app/svelte/public/locales/en/communities-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Communities", + "p1": "We establish libertarian socialist communities by buying land, housing and the means of production which are then owned by the members of these communities. There is no private property within the communities and, therefore, exploitation and suffering that comes with it. Decisions are made using direct democracy with a focus on consensus, ensuring that each community member has power over decisions that affect their life. Communities try to establish their own cooperatives in order to finance their development becoming financially independent and sustainable, which allows for their survival and growth. Within communities the gift economy is utilized whenever possible. Each community is a small beacon of socialism within the dark capitalist world showing us how good life can be if only we achieve our goal.", + "subheading1": "Our Communities", + "subheading2": "Europe", + "location": "Location", + "status": "Status", + "members": "Members", + "contact": "Contact" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/cooperatives-component.json b/Server/app/svelte/public/locales/en/cooperatives-component.json new file mode 100644 index 0000000..b4641c1 --- /dev/null +++ b/Server/app/svelte/public/locales/en/cooperatives-component.json @@ -0,0 +1,15 @@ +{ + "heading": "Cooperatives", + "p1": "We establish worker cooperatives, which is a business model where employees own and control the enterprise. Each worker has a voice in decision-making, and profits are distributed based on individual contributions. This participatory structure fosters ownership, motivation, and job satisfaction, creating a more fulfilling work experience as well as challenging the wealth concentration in traditional capitalist businesses.", + "p2": "By focusing on employees' needs, our cooperatives create supportive and sustainable work environments that foster social cohesion and job security. We also prioritize the interests of local communities, taking a long-term perspective. With workers making decisions, we avoid harmful short-term profit-driven strategies and instead reinvest our profits, contributing to community development and resilience.", + "subheading1": "Our Cooperatives", + "subheading2": "Europe", + "name": "Name", + "location": "Location", + "market": "Market", + "status": "Status", + "workers": "Workers", + "contact": "Contact", + "description": "Description", + "website": "Website" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/footer-component.json b/Server/app/svelte/public/locales/en/footer-component.json new file mode 100644 index 0000000..62fe3cb --- /dev/null +++ b/Server/app/svelte/public/locales/en/footer-component.json @@ -0,0 +1,5 @@ +{ + "contactUs": "Contact Us", + "inviteLink": "invite link", + "libertarianSocialists": "Libertarian Socialists" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/groups-component.json b/Server/app/svelte/public/locales/en/groups-component.json new file mode 100644 index 0000000..6477a45 --- /dev/null +++ b/Server/app/svelte/public/locales/en/groups-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Groups", + "p1": "We aim to raise awareness about the negative impact of current politico-economic systems on our well-being. By highlighting these issues, we empower people to question the status quo and imagine fairer and more sustainable alternatives.", + "p2": "But our mission goes beyond theory. We engage in mutual aid and collective action to address immediate challenges within capitalism. Through mutual aid, we support each other by sharing resources, knowledge, and skills, fostering solidarity and resilience. Whether it's community gardens, food cooperatives, or support networks, our goal is to make life under capitalism more bearable and create pockets of resistance and alternatives within the system.", + "subheading1": "Our Groups", + "subheading2": "Europe", + "location": "Location", + "members": "Members", + "contact": "Contact" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/join-us-component.json b/Server/app/svelte/public/locales/en/join-us-component.json new file mode 100644 index 0000000..f1ce788 --- /dev/null +++ b/Server/app/svelte/public/locales/en/join-us-component.json @@ -0,0 +1,24 @@ +{ + "heading": "Join Us", + "condition1": "Are you against dictatorship and in favor of democracy?", + "condition2": "Are you against exploitation of one human being by another?", + "condition3": "Do you agree that we should work with each other and not against each other?", + "conditionsOutcome": "If the answer is YES, then you are already a libertarian socialist. JOIN US!", + "subheading1": "What You Will Get", + "valueProposition1": "A community that is always ready to help with all your troubles;", + "valueProposition2": "Access to the means of production of our cooperatives;", + "valueProposition3": "Products and services at the cost of production or even for free;", + "valueProposition4": "Monetary and non-monetary help with opening your own cooperative;", + "valueProposition5": "and much more!", + "subheading2": "Find Us", + "findOur": "Find our", + "group": "group", + "community": "community", + "or": "or", + "cooperative": "cooperative", + "nearYou": "near you and join to help make a world we both envision a reality.", + "noneNear": "None of them near you? Not a problem! Join our", + "WhatsAppGroup": "WhatsApp group", + "DiscordServer": "Discord server", + "helpStart": " and we will help you start your own." +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/landing-component.json b/Server/app/svelte/public/locales/en/landing-component.json new file mode 100644 index 0000000..9e2d2e7 --- /dev/null +++ b/Server/app/svelte/public/locales/en/landing-component.json @@ -0,0 +1,9 @@ +{ + "top": "We are people united around a singular cause: bringing down authoritarian exploitative systems represented by various forms of capitalism and replacing them with libertarian socialist systems, with the goal of creating a more equitable and democratic world.", + "groupsTitle": "GROUPS", + "groupsText": "We organize groups for the purposes of education, advocacy, and mutual aid. Our objective is to demonstrate to people how the current politico-economic systems detrimentally impact our well-being, present them with alternative approaches, and engage in mutual aid to alleviate the challenges of living under capitalism.", + "communitiesTitle": "COMMUNITIES", + "communitiesText": "We establish communities based on libertarian socialist principles, where communities have ownership of their land, houses, and the means of production as well as make decisions using direct democracy. We are gradually expanding our socialist world, one community at a time.", + "cooperativesTitle": "COOPERATIVES", + "cooperativesText": "We form worker cooperatives to finance the operations of our groups and communities. Recognizing that economic power influences political power, we consider the establishment of cooperatives to be one of the initial steps towards achieving socialism." +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/navbar-component.json b/Server/app/svelte/public/locales/en/navbar-component.json new file mode 100644 index 0000000..275329b --- /dev/null +++ b/Server/app/svelte/public/locales/en/navbar-component.json @@ -0,0 +1,9 @@ +{ + "orgName": "Libertarian socialists", + "manifesto": "Manifesto", + "joinUs": "Join Us", + "groups": "Groups", + "communities": "Communities", + "cooperatives": "Cooperatives", + "partners": "Partners" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/en/partners-component.json b/Server/app/svelte/public/locales/en/partners-component.json new file mode 100644 index 0000000..0914fee --- /dev/null +++ b/Server/app/svelte/public/locales/en/partners-component.json @@ -0,0 +1,11 @@ +{ + "heading": "Partners", + "p1": "We partner with organizations and initiatives that align with our mission. Together, we are a united force driven by a shared worldview where there is no place for authoritarian exploitative systems, but where systems promoting equity and democracy thrive.", + "subheading1": "Our Partners", + "subheading2": "Online", + "name": "Name", + "location": "Location", + "type": "Type", + "link": "Link", + "description": "Description" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/communities-component.json b/Server/app/svelte/public/locales/ru/communities-component.json new file mode 100644 index 0000000..e3d413c --- /dev/null +++ b/Server/app/svelte/public/locales/ru/communities-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Коммуны", + "p1": "Мы создаем либертарные социалистические коммуны, покупая землю, жилье и средства производства, которые затем принадлежат членам этих коммун. В коммунах нет частной собственности и, следовательно, эксплуатации и страданий, которые с ней связаны. Решения принимаются с использованием прямой демократии с упором на консенсус, гарантируя, что каждый член сообщества имеет право принимать решения, влияющие на его жизнь. Сообщества пытаются создавать свои собственные кооперативы, чтобы финансировать свое развитие, становясь финансово независимыми и устойчивыми, что позволяет им выживать и расти. В сообществах по возможности используется экономика дарения. Каждая коммуна — это маленький маяк социализма в темном капиталистическом мире, показывающий нам, насколько хорошей может быть жизнь, если мы только достигнем своей цели.", + "subheading1": "Наши коммуны", + "subheading2": "Европа", + "location": "Локация", + "status": "Статус", + "members": "Участники", + "contact": "Контакт" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/cooperatives-component.json b/Server/app/svelte/public/locales/ru/cooperatives-component.json new file mode 100644 index 0000000..5363c0c --- /dev/null +++ b/Server/app/svelte/public/locales/ru/cooperatives-component.json @@ -0,0 +1,15 @@ +{ + "heading": "Кооперативы", + "p1": "Мы создаем рабочие кооперативы, которые представляют собой бизнес-модель, в которой работники владеют предприятием и контролируют его. Каждый работник имеет право голоса при принятии решений, а прибыль распределяется на основе индивидуальных вкладов. Эта структура способствует мотивации и удовлетворенности работой, создавая более приятные условия труда, а также бросает вызов концентрации богатства в традиционных капиталистических предприятиях.", + "p2": "Сосредоточив внимание на потребностях сотрудников, наши кооперативы создают благоприятную и устойчивую рабочую среду, которая способствует социальной сплоченности и гарантиям занятости. Мы также уделяем первостепенное внимание интересам местных сообществ, ориентируясь на долгосрочную перспективу. Когда решения принимают работники, мы избегаем вредных краткосрочных стратегий, ориентированных на получение прибыли, и вместо этого реинвестируем нашу прибыль, способствуя развитию и устойчивости сообщества.", + "subheading1": "Наши кооперативы", + "subheading2": "Европа", + "name": "Название", + "location": "Локация", + "market": "Рынок", + "status": "Статус", + "workers": "Работники", + "contact": "Контакт", + "description": "Описание", + "website": "Вебсайт" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/footer-component.json b/Server/app/svelte/public/locales/ru/footer-component.json new file mode 100644 index 0000000..bb20acd --- /dev/null +++ b/Server/app/svelte/public/locales/ru/footer-component.json @@ -0,0 +1,5 @@ +{ + "contactUs": "Напиши нам", + "inviteLink": "ссылка", + "libertarianSocialists": "Либертарные Социалисты" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/groups-component.json b/Server/app/svelte/public/locales/ru/groups-component.json new file mode 100644 index 0000000..3670abb --- /dev/null +++ b/Server/app/svelte/public/locales/ru/groups-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Группы", + "p1": "Мы стремимся повышать осведомленность о негативном влиянии нынешних политико-экономических систем на наше благополучие. Выдвигая на первый план эти проблемы, мы даем людям возможность поставить под сомнение статус-кво и представить себе более справедливые и устойчивые альтернативы.", + "p2": "Однако, наша миссия выходит за рамки теории. Мы участвуем во взаимопомощи и коллективных действиях для решения насущных проблем. Посредством взаимопомощи мы поддерживаем друг друга, делясь ресурсами, знаниями и навыками, укрепляя солидарность и устойчивость к негодам. Будь то общественные сады, продовольственные кооперативы или сети поддержки, наша цель — сделать жизнь при капитализме более терпимой и создать очаги сопротивления и альтернативы внутри системы.", + "subheading1": "Наши группы", + "subheading2": "Европа", + "location": "Локация", + "members": "Участники", + "contact": "Контакт" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/join-us-component.json b/Server/app/svelte/public/locales/ru/join-us-component.json new file mode 100644 index 0000000..991286d --- /dev/null +++ b/Server/app/svelte/public/locales/ru/join-us-component.json @@ -0,0 +1,24 @@ +{ + "heading": "Присоединяйся", + "condition1": "Ты против диктатуры и за демократию?", + "condition2": "Ты против эксплуатации одного человека другим?", + "condition3": "Ты согласен, что мы должны работать с друг другом, а не против друг друга?", + "conditionsOutcome": "Если твой ответ ДА, то ты уже лебиртарный социалист. Присоединяйся!", + "subheading1": "Что ты получишь", + "valueProposition1": "Сообщество, которое всегда готово прийти к тебе на помощь;", + "valueProposition2": "Доступ к средствам производства наших кооперативов;", + "valueProposition3": "Продукты и сервис за стоимость производства или бесплатно;", + "valueProposition4": "Денежная и другая помощь для открытия кооператива;", + "valueProposition5": "и многое другое!", + "subheading2": "Найди нас", + "findOur": "Найди нашу", + "group": "группу", + "community": "коммуну", + "or": "или", + "cooperative": "кооператив", + "nearYou": "около тебя и присоединяйся для того, чтобы сделать тот мир, о котором мы все мечтаем, реальностью.", + "noneNear": "Ни одного из них около тебя нет? Не проблема! Присоединяйся к нашей", + "WhatsAppGroup": "WhatsApp группе", + "DiscordServer": "Discord серверу", + "helpStart": " и мы поможем тебе создать создать свои." +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/landing-component.json b/Server/app/svelte/public/locales/ru/landing-component.json new file mode 100644 index 0000000..57c1662 --- /dev/null +++ b/Server/app/svelte/public/locales/ru/landing-component.json @@ -0,0 +1,9 @@ +{ + "top": "Мы люди, объединенные одной целью: свержение авторитарных эксплуататорских систем, представленных различными формами капитализма, и замена их либертарными социалистическими системами с целью создания более справедливого и демократического мира.", + "groupsTitle": "ГРУППЫ", + "groupsText": "Мы организуем группы в целях образования, защиты наших интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные варианты и заниматься взаимопомощью, чтобы сделать жизнь при капитализме легче.", + "communitiesTitle": "КОММУНЫ", + "communitiesText": "Мы создаем коммуны на основе либертарных социалистических принципов, где члены коммун владеют своей землей, домами и средствами производства, а также принимают решения, используя прямую демократию. Мы постепенно, по одной коммуне, расширяем наш социалистический мир.", + "cooperativesTitle": "КООПЕРАТИВЫ", + "cooperativesText": "Мы формируем рабочие кооперативы для финансирования операций наших групп и коммун. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму." +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/navbar-component.json b/Server/app/svelte/public/locales/ru/navbar-component.json new file mode 100644 index 0000000..b8a1c54 --- /dev/null +++ b/Server/app/svelte/public/locales/ru/navbar-component.json @@ -0,0 +1,9 @@ +{ + "orgName": "Либертарные социалисты", + "manifesto": "Манифест", + "joinUs": "Присоединяйся", + "groups": "Группы", + "communities": "Сообщества", + "cooperatives": "Кооперативы", + "partners": "Партнеры" +} \ No newline at end of file diff --git a/Server/app/svelte/public/locales/ru/partners-component.json b/Server/app/svelte/public/locales/ru/partners-component.json new file mode 100644 index 0000000..033efcc --- /dev/null +++ b/Server/app/svelte/public/locales/ru/partners-component.json @@ -0,0 +1,11 @@ +{ + "heading": "Партнеры", + "p1": "Мы сотрудничаем с организациями и инициативами, которые соответствуют нашей миссии. Вместе мы являемся единой силой, движимой общим мировоззрением, где нет места авторитарным эксплуататорским системам, но где процветают системы, продвигающие справедливость и демократию.", + "subheading1": "Наши партнеры", + "subheading2": "Онлайн", + "name": "Название", + "location": "Локация", + "type": "Тип", + "link": "Ссылка", + "description": "Описание" +} \ No newline at end of file diff --git a/Server/app/svelte/rollup.config.js b/Server/app/svelte/rollup.config.js index 72c9b3c..230492a 100644 --- a/Server/app/svelte/rollup.config.js +++ b/Server/app/svelte/rollup.config.js @@ -30,7 +30,8 @@ function serve() { } }; } - + + const walkSync = require("walk-sync"); const paths = walkSync("./src", {globs: ["**/*.svelte"]}).map(x => "src/"+x) diff --git a/Server/app/svelte/src/affiliates-component.svelte b/Server/app/svelte/src/affiliates-component.svelte deleted file mode 100644 index 0228a72..0000000 --- a/Server/app/svelte/src/affiliates-component.svelte +++ /dev/null @@ -1,168 +0,0 @@ - - - - -
- -
-

Affiliates

- hands -

We affiliate with organizations and initiatives that align with our mission. Together, we are a united force driven by a shared worldview where there is no place for authoritarian exploitative systems, but where systems promoting equity and democracy thrive.

-

Our affiliates

-

Online

- {#each affiliates as affiliate} -
-
- - - - - -
-

Name: {affiliate.name}

-

Type: {affiliate.type}

-

Link: {affiliate.link}

-
-
-

Description: {affiliate.description}

-
- {/each} - -
-
- - \ No newline at end of file diff --git a/Server/app/svelte/src/communities-component.svelte b/Server/app/svelte/src/communities-component.svelte index a42c41f..6ad934f 100644 --- a/Server/app/svelte/src/communities-component.svelte +++ b/Server/app/svelte/src/communities-component.svelte @@ -3,16 +3,23 @@ -
- -
-

Communities

- communities -

We establish libertarian socialist communities by buying land, housing and the means of production which are then owned by the members of these communities. There is no private property within the communities and, therefore, exploitation and suffering that comes with it. Decisions are made using direct democracy with a focus on consensus, ensuring that each community member has power over decisions that affect their life. Communities try to establish their own cooperatives in order to finance their development becoming financially independent and sustainable, which allows for their survival and growth. Within communities the gift economy is utilized whenever possible. Each community is a small beacon of socialism within the dark capitalist world showing us how good life can be if only we achieve our goal.

-

Our communities

- -

Europe

- {#each communities as community} -
-

Location: {community.location[0]}

-

Status: {community.status}

-

Members: {community.members}

-

Contact: {community.contact[1]}

+{#key loaded} + {#if Object.keys($content).length!=0} +
+ +
+

{$content.heading}

+ communities +

{$content.p1}

+

{$content.subheading1}

+ mapCallbackCommunities(createMap,$content,locale)}> +

{$content.subheading2}

+ {#each communities as community} +
+

{$content.location}: {community.location[0][locale[0]]}

+

{$content.status}: {community.status[locale[0]]}

+

{$content.members}: {community.members}

+

{$content.contact}: {community.contact[1][locale[0]]}

+
+ {/each} +
- {/each} - -
-
+
+ {/if} +{/key} \ No newline at end of file diff --git a/Server/app/svelte/src/partners-component.svelte b/Server/app/svelte/src/partners-component.svelte new file mode 100644 index 0000000..2fad73e --- /dev/null +++ b/Server/app/svelte/src/partners-component.svelte @@ -0,0 +1,184 @@ + + + + +{#key loaded} + {#if Object.keys($content).length!=0} +
+ +
+

{$content.heading}

+ hands +

{$content.p1}

+

{$content.subheading1}

+

{$content.subheading2}

+ {#each partners as partner} +
+
+ + + + + +
+

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

+

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

+

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

+
+
+

{$content.description}: {partner.description[locale[0]]}

+
+ {/each} +
+
+ {/if} +{/key} + + \ No newline at end of file diff --git a/Server/public/css/common.css b/Server/public/css/common.css index 6828e60..701c69b 100644 --- a/Server/public/css/common.css +++ b/Server/public/css/common.css @@ -16,8 +16,8 @@ --grey-blue:hsl(223, 13%, 22%); --cream:hsl(34, 43%, 90%); --dark-cream:hsl(33, 26%, 84%); - --sans-serif: "Space Grotesk"; - --serif: "DejaVu"; + --sans-serif: "OpenSans"; + --serif: "Lora"; } svg { @@ -59,27 +59,25 @@ body { /*---Fonts---------------------------------------------------------*/ @font-face { - font-family: 'Space Grotesk'; + font-family: 'OpenSans'; font-weight: 400; font-style: normal; font-display: swap; src: /*local('Space Grotesk Light'), local('SpaceGroteskLight-Regular'), local('Space Grotesk Light Regular'), */ - url('/fonts/SpaceGrotesk/SpaceGrotesk.woff2') format('woff2'), - url('/fonts/SpaceGrotesk/SpaceGrotesk.woff') format('woff'); + url('/fonts/OpenSans/opensans.woff2') format('woff2'), + url('/fonts/OpenSans/opensans.woff') format('woff'); } @font-face { - font-family: 'DejaVu'; + font-family: 'Lora'; font-weight: 400; font-style: normal; font-display: swap; - src: /*local('DejaVuLGCSerif'), - local('DejaVu LGC Serif'), */ - /*url('/fonts/DejaVu/DejaVuLGCSerif.woff2') format('woff2'), */ - url('/fonts/DejaVu/solitasserifnormregular.woff2') format('woff2'), - url('/fonts/DejaVu/DejaVuLGCSerif.woff') format('woff'); + src: + url('/fonts/Lora/Lora-Regular.ttf') format('ttf'), + url('/fonts/lora/Lora-Regular.woff') format('woff'); } .serif { @@ -124,7 +122,7 @@ h4 { span { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; height: auto; width: auto; color: #222222; @@ -132,20 +130,20 @@ span { p { font-family: var(--serif, serif); - font-size: 1.25rem; - line-height: 150%; + font-size: 1.15rem; + line-height: 160%; color: #222222; } a { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; color: #222222; } li { font-family: var(--serif, serif); - font-size: 1.25rem; + font-size: 1.15rem; color: #222222; text-align: justify; } diff --git a/Server/public/fonts/Lora/Lora-Regular.ttf b/Server/public/fonts/Lora/Lora-Regular.ttf new file mode 100644 index 0000000..5306a94 Binary files /dev/null and b/Server/public/fonts/Lora/Lora-Regular.ttf differ diff --git a/Server/public/fonts/Lora/Lora-Regular.woff b/Server/public/fonts/Lora/Lora-Regular.woff new file mode 100644 index 0000000..c248ca2 Binary files /dev/null and b/Server/public/fonts/Lora/Lora-Regular.woff differ diff --git a/Server/public/fonts/Lora/Lora-Regular.woff2 b/Server/public/fonts/Lora/Lora-Regular.woff2 new file mode 100644 index 0000000..bf51a83 Binary files /dev/null and b/Server/public/fonts/Lora/Lora-Regular.woff2 differ diff --git a/Server/public/fonts/NotoSerif/NotoSerif-Light.ttf b/Server/public/fonts/NotoSerif/NotoSerif-Light.ttf new file mode 100644 index 0000000..96b7c22 Binary files /dev/null and b/Server/public/fonts/NotoSerif/NotoSerif-Light.ttf differ diff --git a/Server/public/fonts/NotoSerif/NotoSerif-Regular.ttf b/Server/public/fonts/NotoSerif/NotoSerif-Regular.ttf new file mode 100644 index 0000000..3aa8999 Binary files /dev/null and b/Server/public/fonts/NotoSerif/NotoSerif-Regular.ttf differ diff --git a/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff b/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff new file mode 100644 index 0000000..abd15ad Binary files /dev/null and b/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff differ diff --git a/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff2 b/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff2 new file mode 100644 index 0000000..e2e1f3d Binary files /dev/null and b/Server/public/fonts/NotoSerif/NotoSerif-Regular.woff2 differ diff --git a/Server/public/fonts/OpenSans/opensans.ttf b/Server/public/fonts/OpenSans/opensans.ttf new file mode 100644 index 0000000..29e9e60 Binary files /dev/null and b/Server/public/fonts/OpenSans/opensans.ttf differ diff --git a/Server/public/fonts/OpenSans/opensans.woff b/Server/public/fonts/OpenSans/opensans.woff new file mode 100644 index 0000000..d28b141 Binary files /dev/null and b/Server/public/fonts/OpenSans/opensans.woff differ diff --git a/Server/public/fonts/OpenSans/opensans.woff2 b/Server/public/fonts/OpenSans/opensans.woff2 new file mode 100644 index 0000000..6b00eaa Binary files /dev/null and b/Server/public/fonts/OpenSans/opensans.woff2 differ diff --git a/Server/public/img/common/globe.png b/Server/public/img/common/globe.png index 91e93e7..cd8e4df 100644 Binary files a/Server/public/img/common/globe.png and b/Server/public/img/common/globe.png differ diff --git a/Server/public/img/common/globe.webp b/Server/public/img/common/globe.webp new file mode 100644 index 0000000..00d4608 Binary files /dev/null and b/Server/public/img/common/globe.webp differ diff --git a/Server/public/img/common/globe2.png b/Server/public/img/common/globe2.png new file mode 100644 index 0000000..91e93e7 Binary files /dev/null and b/Server/public/img/common/globe2.png differ diff --git a/Server/public/img/affiliates/gaias_fall.jpg b/Server/public/img/partners/gaias_fall.jpg similarity index 100% rename from Server/public/img/affiliates/gaias_fall.jpg rename to Server/public/img/partners/gaias_fall.jpg diff --git a/Server/public/img/affiliates/gaias_fall.webp b/Server/public/img/partners/gaias_fall.webp similarity index 100% rename from Server/public/img/affiliates/gaias_fall.webp rename to Server/public/img/partners/gaias_fall.webp diff --git a/Server/public/js/communities.js b/Server/public/js/communities.js index b8897be..4ffb183 100644 --- a/Server/public/js/communities.js +++ b/Server/public/js/communities.js @@ -1,26 +1,40 @@ export let communities = [ { - location: ["Estonia, Kohtla-Järve",[59.409521829709504, 27.288415912535914]], - status: "forming", + location: [{ + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.409521829709504, 27.288415912535914]], + status: { + en: "forming", + ru: "формируется" + }, members: 2, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] } ] -export function addMarkersCommunities(map) { +export function addMarkersCommunities(map,content,locale) { for (let g of communities) { let coordinates let text = "" for (let field in g) { - let fieldText = field[0].toUpperCase() + field.slice(1) + ": " + let fieldText = content[field] + ": " if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + text += fieldText + "" + g.contact[1][locale[0]] + "" } else if (field=="location") { - text += fieldText + g[field][0] + "
" + text += fieldText + g[field][0][locale[0]] + "
" coordinates = g[field][1] } + else if (field=="status") { + text += fieldText + g[field][locale[0]] + "
" + } else { text += fieldText + g[field] + "
" } diff --git a/Server/public/js/components/affiliates-component.js b/Server/public/js/components/affiliates-component.js index f2d8d73..c0d9a50 100644 --- a/Server/public/js/components/affiliates-component.js +++ b/Server/public/js/components/affiliates-component.js @@ -1 +1,345 @@ -import{S as t,i as e,a as i,b as n,s as a,e as o,c as r,n as s,d as l,f as m,g as c,h as g,j as d,o as h,t as f}from"./index-95aedb1a.js";import"../../../../../../../../../js/components/map-component.js";function p(t,e,i){const n=t.slice();return n[1]=e[i],n}function u(t){let e,i,a,m,d,h,p,u,x,b,w,v,y,k,C,j,z,D,T,A,E,F,G,L,O,R,S,W=t[1].name+"",_=t[1].type+"",q=t[1].link+"",H=t[1].description+"";return{c(){e=o("div"),i=o("div"),a=o("picture"),m=o("source"),d=r(),h=o("source"),p=r(),u=o("img"),x=r(),b=o("div"),w=o("p"),v=o("b"),v.textContent="Name: ",y=f(W),k=r(),C=o("p"),j=o("b"),j.textContent="Type: ",z=f(_),D=r(),T=o("p"),A=o("b"),A.textContent="Link: ",E=o("a"),F=f(q),G=r(),L=o("p"),O=o("b"),O.textContent="Description: ",R=f(H),S=r(),l(m,"srcset","/img/affiliates/"+t[1].logo+".webp"),l(h,"srcset","/img/affiliates/"+t[1].logo+".jpg"),l(u,"class","affiliate-logo"),l(u,"alt","logo"),l(E,"href",t[1].link),l(E,"target",";_blank;"),l(E,"rel","noreferrer"),l(i,"class","img-general-info"),l(e,"class","location-info")},m(t,o){n(t,e,o),c(e,i),c(i,a),c(a,m),c(a,d),c(a,h),c(a,p),c(a,u),c(i,x),c(i,b),c(b,w),c(w,v),c(w,y),c(b,k),c(b,C),c(C,j),c(C,z),c(b,D),c(b,T),c(T,A),c(T,E),c(E,F),c(e,G),c(e,L),c(L,O),c(L,R),c(e,S)},p:s,d(t){t&&g(e)}}}function x(t){let e,i,a,h,f,x,b,w,v,y,k,C,j,z=t[0],D=[];for(let e=0;e{})),[[{name:"Gaia's Fall",type:"a place to discuss and organize",link:"https://discord.libsoc.org",description:"Gaia's Fall is a server that promotes Solarpunk ideals, environmentalism, anarchism, and anti-capitalism. We encourage civil debates, discussions of theories and possibilities, and the creation of communities focused on shaping a better world. It is our official Discord server where we organize and work together.",logo:"gaias_fall"}]]}class w extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:i(this.attributes),customElement:!0},b,x,a,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("affiliates-component",w);export{w 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, v as validate_each_argument, d as dispatch_dev, c as validate_slots, o as onMount, e as element, f as space, n as noop, g as add_location, h as attr_dev, j as src_url_equal, k as append_dev, l as detach_dev, m as destroy_each, t as text } from './index-ab5c14c8.js'; +import '../../../../../../../../../js/components/map-component.js'; + +/* src\affiliates-component.svelte generated by Svelte v3.52.0 */ + +const file = "src\\affiliates-component.svelte"; + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[1] = list[i]; + return child_ctx; +} + +// (36:8) {#each affiliates as affiliate} +function create_each_block(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 t4_value = /*affiliate*/ ctx[1].name + ""; + let t4; + let t5; + let p1; + let b1; + let t7_value = /*affiliate*/ ctx[1].type + ""; + let t7; + let t8; + let p2; + let b2; + let a; + let t10_value = /*affiliate*/ ctx[1].link + ""; + let t10; + let t11; + let p3; + let b3; + let t13_value = /*affiliate*/ ctx[1].description + ""; + let t13; + let t14; + + 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"); + b0.textContent = "Name: "; + t4 = text(t4_value); + t5 = space(); + p1 = element("p"); + b1 = element("b"); + b1.textContent = "Type: "; + t7 = text(t7_value); + t8 = space(); + p2 = element("p"); + b2 = element("b"); + b2.textContent = "Link: "; + a = element("a"); + t10 = text(t10_value); + t11 = space(); + p3 = element("p"); + b3 = element("b"); + b3.textContent = "Description: "; + t13 = text(t13_value); + t14 = space(); + attr_dev(source0, "srcset", "/img/affiliates/" + /*affiliate*/ ctx[1].logo + ".webp"); + add_location(source0, file, 39, 24, 1619); + attr_dev(source1, "srcset", "/img/affiliates/" + /*affiliate*/ ctx[1].logo + ".jpg"); + add_location(source1, file, 40, 24, 1704); + attr_dev(img, "class", "affiliate-logo"); + attr_dev(img, "alt", "logo"); + add_location(img, file, 41, 24, 1788); + add_location(picture, file, 38, 20, 1584); + add_location(b0, file, 44, 27, 1915); + add_location(p0, file, 44, 24, 1912); + add_location(b1, file, 45, 27, 1977); + add_location(p1, file, 45, 24, 1974); + add_location(b2, file, 46, 27, 2039); + attr_dev(a, "href", /*affiliate*/ ctx[1].link); + attr_dev(a, "target", ";_blank;"); + attr_dev(a, "rel", "noreferrer"); + add_location(a, file, 46, 40, 2052); + add_location(p2, file, 46, 24, 2036); + add_location(div0, file, 43, 20, 1881); + attr_dev(div1, "class", "img-general-info"); + add_location(div1, file, 37, 16, 1532); + add_location(b3, file, 49, 19, 2205); + add_location(p3, file, 49, 16, 2202); + attr_dev(div2, "class", "location-info"); + add_location(div2, file, 36, 12, 1487); + }, + 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(p0, t4); + append_dev(div0, t5); + append_dev(div0, p1); + append_dev(p1, b1); + append_dev(p1, t7); + append_dev(div0, t8); + append_dev(div0, p2); + append_dev(p2, b2); + append_dev(p2, a); + append_dev(a, t10); + append_dev(div2, t11); + append_dev(div2, p3); + append_dev(p3, b3); + append_dev(p3, t13); + append_dev(div2, t14); + }, + p: noop, + d: function destroy(detaching) { + if (detaching) detach_dev(div2); + } + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_each_block.name, + type: "each", + source: "(36:8) {#each affiliates as affiliate}", + ctx + }); + + return block; +} + +function create_fragment(ctx) { + let div1; + let div0; + let h1; + let t1; + let img; + let img_src_value; + let t2; + let p; + let t4; + let h3; + let t6; + let h4; + let t8; + let each_value = /*affiliates*/ 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() { + div1 = element("div"); + div0 = element("div"); + h1 = element("h1"); + h1.textContent = "Affiliates"; + t1 = space(); + img = element("img"); + t2 = space(); + p = element("p"); + p.textContent = "We affiliate with organizations and initiatives that align with our mission. Together, we are a united force driven by a shared worldview where there is no place for authoritarian exploitative systems, but where systems promoting equity and democracy thrive."; + t4 = space(); + h3 = element("h3"); + h3.textContent = "Our affiliates"; + t6 = space(); + h4 = element("h4"); + h4.textContent = "Online"; + t8 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + this.c = noop; + add_location(h1, file, 30, 8, 1006); + 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, 31, 8, 1035); + add_location(p, file, 32, 8, 1109); + add_location(h3, file, 33, 8, 1384); + add_location(h4, file, 34, 8, 1417); + attr_dev(div0, "id", "text-container"); + add_location(div0, file, 29, 4, 971); + attr_dev(div1, "id", "container"); + add_location(div1, file, 27, 0, 884); + }, + 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, h1); + append_dev(div0, t1); + append_dev(div0, img); + append_dev(div0, t2); + append_dev(div0, p); + append_dev(div0, t4); + append_dev(div0, h3); + append_dev(div0, t6); + append_dev(div0, h4); + append_dev(div0, t8); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + }, + p: function update(ctx, [dirty]) { + if (dirty & /*affiliates*/ 1) { + each_value = /*affiliates*/ 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(div0, 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(div1); + 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('affiliates-component', slots, []); + + let affiliates = [ + { + name: "Gaia's Fall", + type: "a place to discuss and organize", + link: "https://discord.libsoc.org", + description: "Gaia's Fall is a server that promotes Solarpunk ideals, environmentalism, anarchism, and anti-capitalism. We encourage civil debates, discussions of theories and possibilities, and the creation of communities focused on shaping a better world. It is our official Discord server where we organize and work together.", + logo: "gaias_fall" + } + ]; + + 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, affiliates }); + + $$self.$inject_state = $$props => { + if ('affiliates' in $$props) $$invalidate(0, affiliates = $$props.affiliates); + }; + + if ($$props && "$$inject" in $$props) { + $$self.$inject_state($$props.$$inject); + } + + return [affiliates]; +} + +class Affiliates_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("affiliates-component", Affiliates_component); + +export { Affiliates_component as default }; diff --git a/Server/public/js/components/communities-component.js b/Server/public/js/components/communities-component.js index 60d74b6..0bb9466 100644 --- a/Server/public/js/components/communities-component.js +++ b/Server/public/js/components/communities-component.js @@ -1 +1 @@ -import{S as t,i as e,a as n,b as o,s as i,e as a,c as s,n as m,d as r,f as c,k as l,g as h,h as u,j as d,o as g,t as p}from"./index-95aedb1a.js";import{communities as f,addMarkersCommunities as b}from"../../../../../../../../../js/communities.js";import"../../../../../../../../../js/components/map-component.js";function w(t,e,n){const o=t.slice();return o[1]=e[n],o}function x(t){let e,n,i,c,l,d,g,f,b,w,x,v,y,C,j,k,E,z,D=t[1].location[0]+"",L=t[1].status+"",M=t[1].members+"",R=t[1].contact[1]+"";return{c(){e=a("div"),n=a("p"),i=a("b"),i.textContent="Location: ",c=p(D),l=s(),d=a("p"),g=a("b"),g.textContent="Status: ",f=p(L),b=s(),w=a("p"),x=a("b"),x.textContent="Members: ",v=p(M),y=s(),C=a("p"),j=a("b"),j.textContent="Contact: ",k=a("a"),E=p(R),z=s(),r(k,"href",t[1].contact[0]),r(k,"target",";_blank;"),r(k,"rel","noreferrer"),r(e,"class","location-info")},m(t,a){o(t,e,a),h(e,n),h(n,i),h(n,c),h(e,l),h(e,d),h(d,g),h(d,f),h(e,b),h(e,w),h(w,x),h(w,v),h(e,y),h(e,C),h(C,j),h(C,k),h(k,E),h(e,z)},p:m,d(t){t&&u(e)}}}function v(t){let e,n,i,g,p,b,v,y,C,j,k,E,z,D,L,M=f,R=[];for(let e=0;e{})),[function(t){let e=t([51.505,-.09],3);b(e)}]}class C extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},y,v,i,{},null),t&&t.target&&o(t.target,this,t.anchor)}}customElements.define("communities-component",C);export{C as default}; +import{S as t,i as n,a as o,b as e,s as i,e as m,n as a,d as s,c as r,o as c,f as l,t as g,g as p,h,j as u,k as d,l as f,m as b,p as x}from"./index-ce8c147b.js";import{w as j}from"./index-f2dbf8ff.js";import{communities as v,addMarkersCommunities as w}from"../../../../../../../../../js/communities.js";import{loadLocaleContent as k,getLocale as y}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function z(t,n,o){const e=t.slice();return e[6]=n[o],e}function D(t){let n,o,i,m,a,r,c,j,w,k,y,D,O,R,T,A,C,H,L,M,N=t[0].heading+"",S=t[0].p1+"",_=t[0].subheading1+"",q=t[0].subheading2+"",B=v,F=[];for(let n=0;no(0,e=t))),k(a,"communities-component",i,(t=>y(m,t))),c((()=>{}));return[e,i,m,a,s,t=>s(t,e,m)]}class T extends t{constructor(t){super(),this.shadowRoot.innerHTML="",n(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},R,O,i,{},null),t&&t.target&&e(t.target,this,t.anchor)}}customElements.define("communities-component",T);export{T as default}; diff --git a/Server/public/js/components/cookies-dialog.js b/Server/public/js/components/cookies-dialog.js index 3cd1ef2..ad6ed7a 100644 --- a/Server/public/js/components/cookies-dialog.js +++ b/Server/public/js/components/cookies-dialog.js @@ -1 +1 @@ -import{S as e,i as s,a as t,b as o,s as i,e as a,n as r,d as n,h as c,o as d}from"./index-95aedb1a.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}; +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-ce8c147b.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}; diff --git a/Server/public/js/components/cooperatives-component.js b/Server/public/js/components/cooperatives-component.js index 92559e1..f2bdeb7 100644 --- a/Server/public/js/components/cooperatives-component.js +++ b/Server/public/js/components/cooperatives-component.js @@ -1 +1 @@ -import{S as t,i as e,a as o,b as n,s as i,e as r,c as a,n as s,d as c,f as m,k as l,g as p,h as g,j as h,o as d,t as f}from"./index-95aedb1a.js";import{coops as u,addMarkersCoops as b}from"../../../../../../../../../js/coops.js";import"../../../../../../../../../js/components/map-component.js";function x(t,e,o){const n=t.slice();return n[1]=e[o],n}function w(t){let e,o,i,m,l,h,d,u,b,x,w,v,k,C,y,j,W,E,z,D,L,M,R,S,T,_,A,B,H,N,O,q,F,G,I,J,K,P,Q,U,V,X,Y,Z,$=t[1].name+"",tt=t[1].location[0]+"",et=t[1].market+"",ot=t[1].workers+"",nt=t[1].status+"",it=t[1].website+"",rt=t[1].contact[1]+"",at=t[1].description+"";return{c(){e=r("div"),o=r("div"),i=r("div"),m=r("p"),l=r("b"),l.textContent="Name: ",h=f($),d=a(),u=r("p"),b=r("b"),b.textContent="Location: ",x=f(tt),w=a(),v=r("p"),k=r("b"),k.textContent="Market: ",C=f(et),y=a(),j=r("p"),W=r("b"),W.textContent="Workers: ",E=f(ot),z=a(),D=r("p"),L=r("b"),L.textContent="Status: ",M=f(nt),R=a(),S=r("p"),T=r("b"),T.textContent="Website: ",_=r("a"),A=f(it),B=a(),H=r("p"),N=r("b"),N.textContent="Contact: ",O=r("a"),q=f(rt),F=a(),G=r("picture"),I=r("source"),J=a(),K=r("source"),P=a(),Q=r("img"),U=a(),V=r("p"),X=r("b"),X.textContent="Description: ",Y=f(at),Z=a(),c(_,"href","https://www."+t[1].website),c(_,"target","_blank"),c(_,"rel","noreferrer"),c(O,"href",t[1].contact[0]),c(O,"target",";_blank;"),c(O,"rel","noreferrer"),c(I,"srcset","/img/coops/"+t[1].logo+".webp"),c(K,"srcset","/img/coops/"+t[1].logo+".png"),c(Q,"class","coop-logo"),c(Q,"alt","logo"),c(o,"class","img-general-info"),c(e,"class","location-info")},m(t,r){n(t,e,r),p(e,o),p(o,i),p(i,m),p(m,l),p(m,h),p(i,d),p(i,u),p(u,b),p(u,x),p(i,w),p(i,v),p(v,k),p(v,C),p(i,y),p(i,j),p(j,W),p(j,E),p(i,z),p(i,D),p(D,L),p(D,M),p(i,R),p(i,S),p(S,T),p(S,_),p(_,A),p(i,B),p(i,H),p(H,N),p(H,O),p(O,q),p(o,F),p(o,G),p(G,I),p(G,J),p(G,K),p(G,P),p(G,Q),p(e,U),p(e,V),p(V,X),p(V,Y),p(e,Z)},p:s,d(t){t&&g(e)}}}function v(t){let e,o,i,d,f,b,v,k,C,y,j,W,E,z,D,L,M,R=u,S=[];for(let e=0;e{})),[function(t){let e=t([51.505,-.09],3);b(e)}]}class C extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},k,v,i,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("cooperatives-component",C);export{C as default}; +import{S as t,i as e,a as o,b as n,s as i,e as a,n as r,d as s,c,o as m,f as l,t as p,g,h,j as d,k as f,l as b,m as u,p as w}from"./index-ce8c147b.js";import{w as x}from"./index-f2dbf8ff.js";import{coops as v,addMarkersCoops as j}from"../../../../../../../../../js/coops.js";import{loadLocaleContent as k,getLocale as y}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function z(t,e,o){const n=t.slice();return n[6]=e[o],n}function D(t){let e,o,i,a,r,c,m,x,j,k,y,D,O,R,T,_,A,C,H,L,M,N,S,q=t[0].heading+"",B=t[0].p1+"",F=t[0].p2+"",G=t[0].subheading1+"",I=t[0].subheading2+"",J=v,K=[];for(let e=0;eo(0,n=t))),k(r,"cooperatives-component",i,(t=>y(a,t))),m((()=>{}));return[n,i,a,r,s,t=>s(t,n,a)]}class T extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},R,O,i,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("cooperatives-component",T);export{T as default}; diff --git a/Server/public/js/components/footer-component.js b/Server/public/js/components/footer-component.js index 28abfbc..9a4db39 100644 --- a/Server/public/js/components/footer-component.js +++ b/Server/public/js/components/footer-component.js @@ -1 +1 @@ -import{S as t,i as e,a,b as r,s as n,e as s,c as o,n as i,d as c,g as l,p as h,h as d}from"./index-95aedb1a.js";function p(t){let e,a,n,p,g,m,f,u,w;return{c(){e=s("footer"),a=s("div"),n=s("div"),n.innerHTML='

CONTACT US

\n \n

WhatsApp: invite link

\n

Discord: invite link

',p=o(),g=s("button"),g.innerHTML='',m=o(),f=s("p"),f.textContent="© 2023 Libertarian Socialists",this.c=i,c(n,"id","footer-grid-content-container"),c(n,"class","logged"),c(g,"id","footer-up"),c(g,"aria-label","go up"),c(f,"id","footer-copyright"),c(a,"id","footer-content-container")},m(s,o){r(s,e,o),l(e,a),l(a,n),l(a,p),l(a,g),l(a,m),l(a,f),u||(w=h(g,"click",t[0]),u=!0)},p:i,i:i,o:i,d(t){t&&d(e),u=!1,w()}}}function g(t){return[()=>{location.href="#"}]}class m extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:a(this.attributes),customElement:!0},g,p,n,{},null),t&&t.target&&r(t.target,this,t.anchor)}}customElements.define("footer-component",m);export{m as default}; +import{S as t,i as e,a as r,b as a,s,e as o,n as i,d as n,c,f as l,t as d,g as h,h as m,r as f,l as p,u as g,m as u}from"./index-ce8c147b.js";import{w as b}from"./index-f2dbf8ff.js";import{loadLocaleContent as v,getLocale as w}from"../../../../../../../../../js/libraries/serverTools.js";function k(t){let e,r,s,o,i,c,b,v,w,k,x,j,y,L,U,_,A,R,S,T,B,D,H,M,P=t[0].contactUs+"",E=t[0].inviteLink+"",G=t[0].inviteLink+"",N=t[0].libertarianSocialists+"";return{c(){e=l("footer"),r=l("div"),s=l("div"),o=l("div"),i=l("h2"),c=d(P),b=h(),v=l("p"),w=d("WhatsApp: "),k=l("a"),x=d(E),j=h(),y=l("p"),L=d("Discord: "),U=l("a"),_=d(G),A=h(),R=l("button"),R.innerHTML='',S=h(),T=l("p"),B=d("© 2023 "),D=d(N),m(k,"href","https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"),m(k,"target","_blank"),m(k,"rel","noreferrer"),f(k,"margin-left","0.5rem"),m(U,"href","https://discord.gg/xAPZmyr8B6"),m(U,"target","_blank"),m(U,"rel","noreferrer"),f(U,"margin-left","2rem"),m(o,"id","contact-us-container"),m(s,"id","footer-grid-content-container"),m(s,"class","logged"),m(R,"id","footer-up"),m(R,"aria-label","go up"),m(T,"id","footer-copyright"),m(r,"id","footer-content-container")},m(n,l){a(n,e,l),p(e,r),p(r,s),p(s,o),p(o,i),p(i,c),p(o,b),p(o,v),p(v,w),p(v,k),p(k,x),p(o,j),p(o,y),p(y,L),p(y,U),p(U,_),p(r,A),p(r,R),p(r,S),p(r,T),p(T,B),p(T,D),H||(M=g(R,"click",t[3]),H=!0)},p(t,e){1&e&&P!==(P=t[0].contactUs+"")&&u(c,P),1&e&&E!==(E=t[0].inviteLink+"")&&u(x,E),1&e&&G!==(G=t[0].inviteLink+"")&&u(_,G),1&e&&N!==(N=t[0].libertarianSocialists+"")&&u(D,N)},d(t){t&&n(e),H=!1,M()}}}function x(t){let e,r=0!=Object.keys(t[0]).length,s=r&&k(t);return{c(){s&&s.c(),e=o(),this.c=i},m(t,r){s&&s.m(t,r),a(t,e,r)},p(t,[a]){1&a&&(r=0!=Object.keys(t[0]).length),r?s?s.p(t,a):(s=k(t),s.c(),s.m(e.parentNode,e)):s&&(s.d(1),s=null)},i:i,o:i,d(t){s&&s.d(t),t&&n(e)}}}function j(t,e,r){let a,s,o=[],i=b({});c(t,i,(t=>r(0,a=t))),v(i,"footer-component",s,(t=>w(o,t)));return[a,s,i,()=>{location.href="#"}]}class y extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:r(this.attributes),customElement:!0},j,x,s,{},null),t&&t.target&&a(t.target,this,t.anchor)}}customElements.define("footer-component",y);export{y as default}; diff --git a/Server/public/js/components/groups-component.js b/Server/public/js/components/groups-component.js index 53a541a..4345e13 100644 --- a/Server/public/js/components/groups-component.js +++ b/Server/public/js/components/groups-component.js @@ -1 +1 @@ -import{S as t,i as e,a as o,b as n,l as a,s as i,e as s,c as r,n as m,d as c,f as l,k as p,g as u,h as g,j as h,o as d,t as f}from"./index-95aedb1a.js";import{groups as b,addMarkersGroups as x}from"../../../../../../../../../js/groups.js";import"../../../../../../../../../js/components/map-component.js";function w(t,e,o){const n=t.slice();return n[1]=e[o],n}function v(t){let e,o,a,i,l,p,h,d,b,x,w,v,y,C,k=t[1].location[0]+"",j=t[1].members+"",G=t[1].contact[1]+"";return{c(){e=s("div"),o=s("p"),a=s("b"),a.textContent="Location: ",i=f(k),l=r(),p=s("p"),h=s("b"),h.textContent="Members: ",d=f(j),b=r(),x=s("p"),w=s("b"),w.textContent="Contact: ",v=s("a"),y=f(G),C=r(),c(v,"href",t[1].contact[0]),c(v,"target",";_blank;"),c(v,"rel","noreferrer"),c(e,"class","location-info")},m(t,s){n(t,e,s),u(e,o),u(o,a),u(o,i),u(e,l),u(e,p),u(p,h),u(p,d),u(e,b),u(e,x),u(x,w),u(x,v),u(v,y),u(e,C)},p:m,d(t){t&&g(e)}}}function y(t){let e,o,a,i,d,f,x,y,C,k,j,G,q,E,T,W,$,z=b,A=[];for(let e=0;e{})),[function(t){let e=t([51.505,-.09],3);x(e)}]}class k extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},C,y,i,{mapCallbackGroups:0},null),t&&(t.target&&n(t.target,this,t.anchor),t.props&&(this.$set(t.props),a()))}static get observedAttributes(){return["mapCallbackGroups"]}get mapCallbackGroups(){return this.$$.ctx[0]}}customElements.define("groups-component",k);export{k as default}; +import{S as t,i as o,a as n,b as e,s as r,e as a,n as i,d as s,c as m,o as c,f as l,t as p,g,h,j as u,k as d,l as f,m as b,p as x}from"./index-ce8c147b.js";import{w as j}from"./index-f2dbf8ff.js";import{groups as v,addMarkersGroups as w}from"../../../../../../../../../js/groups.js";import{loadLocaleContent as k,getLocale as y}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function z(t,o,n){const e=t.slice();return e[6]=o[n],e}function D(t){let o,n,r,a,i,m,c,j,w,k,y,D,O,R,T,A,C,H,L,M,N,S,_,q=t[0].heading+"",B=t[0].p1+"",F=t[0].p2+"",G=t[0].subheading1+"",I=t[0].subheading2+"",J=v,K=[];for(let o=0;on(0,e=t))),k(i,"groups-component",r,(t=>y(a,t))),c((()=>{}));return[e,r,a,i,s,t=>s(t,e,a)]}class T extends t{constructor(t){super(),this.shadowRoot.innerHTML="",o(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},R,O,r,{},null),t&&t.target&&e(t.target,this,t.anchor)}}customElements.define("groups-component",T);export{T as default}; diff --git a/Server/public/js/components/index-2155aefb.js b/Server/public/js/components/index-2155aefb.js new file mode 100644 index 0000000..255f759 --- /dev/null +++ b/Server/public/js/components/index-2155aefb.js @@ -0,0 +1,53 @@ + +(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 { n as noop, s as safe_not_equal } from './index-a459c24b.js'; + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +export { writable as w }; diff --git a/Server/public/js/components/index-51dcf822.js b/Server/public/js/components/index-51dcf822.js new file mode 100644 index 0000000..4ab67e0 --- /dev/null +++ b/Server/public/js/components/index-51dcf822.js @@ -0,0 +1,53 @@ + +(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 { n as noop, s as safe_not_equal } from './index-5cb337ff.js'; + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +export { writable as w }; diff --git a/Server/public/js/components/index-57a61f53.js b/Server/public/js/components/index-57a61f53.js new file mode 100644 index 0000000..eb9a263 --- /dev/null +++ b/Server/public/js/components/index-57a61f53.js @@ -0,0 +1,513 @@ + +(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); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function set_store_value(store, ret, value) { + store.set(value); + return ret; +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value; + } + else { + attr(node, prop, value); + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { setContext as A, run_all as B, svg_element as C, empty as D, is_function as E, validate_store as F, component_subscribe as G, HtmlTag as H, set_store_value as I, SvelteElement as S, attribute_to_object as a, insert_dev as b, validate_slots as c, dispatch_dev as d, element as e, space as f, add_location as g, attr_dev as h, init as i, src_url_equal as j, append_dev as k, detach_dev as l, destroy_each as m, noop as n, onMount as o, set_custom_element_data as p, flush as q, globals as r, safe_not_equal as s, text as t, binding_callbacks as u, validate_each_argument as v, set_style as w, listen_dev as x, set_data_dev as y, getContext as z }; diff --git a/Server/public/js/components/index-5cb337ff.js b/Server/public/js/components/index-5cb337ff.js new file mode 100644 index 0000000..3e9af3e --- /dev/null +++ b/Server/public/js/components/index-5cb337ff.js @@ -0,0 +1,509 @@ + +(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); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value; + } + else { + attr(node, prop, value); + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { setContext as A, run_all as B, svg_element as C, validate_store as D, component_subscribe as E, empty as F, is_function as G, HtmlTag as H, SvelteElement as S, attribute_to_object as a, insert_dev as b, validate_slots as c, dispatch_dev as d, element as e, space as f, add_location as g, attr_dev as h, init as i, src_url_equal as j, append_dev as k, detach_dev as l, destroy_each as m, noop as n, onMount as o, set_custom_element_data as p, flush as q, globals as r, safe_not_equal as s, text as t, binding_callbacks as u, validate_each_argument as v, set_style as w, listen_dev as x, set_data_dev as y, getContext as z }; diff --git a/Server/public/js/components/index-970976e6.js b/Server/public/js/components/index-970976e6.js new file mode 100644 index 0000000..6b381e8 --- /dev/null +++ b/Server/public/js/components/index-970976e6.js @@ -0,0 +1,509 @@ + +(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); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value; + } + else { + attr(node, prop, value); + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { setContext as A, run_all as B, svg_element as C, empty as D, is_function as E, validate_store as F, component_subscribe as G, HtmlTag as H, SvelteElement as S, attribute_to_object as a, insert_dev as b, validate_slots as c, dispatch_dev as d, element as e, space as f, add_location as g, attr_dev as h, init as i, src_url_equal as j, append_dev as k, detach_dev as l, destroy_each as m, noop as n, onMount as o, set_custom_element_data as p, flush as q, globals as r, safe_not_equal as s, text as t, binding_callbacks as u, validate_each_argument as v, set_style as w, listen_dev as x, set_data_dev as y, getContext as z }; diff --git a/Server/public/js/components/index-a459c24b.js b/Server/public/js/components/index-a459c24b.js new file mode 100644 index 0000000..d20b155 --- /dev/null +++ b/Server/public/js/components/index-a459c24b.js @@ -0,0 +1,509 @@ + +(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); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value; + } + else { + attr(node, prop, value); + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { set_style as A, listen_dev as B, getContext as C, setContext as D, run_all as E, svg_element as F, is_function as G, HtmlTag as H, SvelteElement as S, attribute_to_object as a, insert_dev as b, validate_store as c, dispatch_dev as d, component_subscribe as e, validate_each_argument as f, globals as g, empty as h, init as i, detach_dev as j, element as k, space as l, add_location as m, noop as n, onMount as o, attr_dev as p, src_url_equal as q, set_custom_element_data as r, safe_not_equal as s, text as t, append_dev as u, validate_slots as v, set_data_dev as w, destroy_each as x, flush as y, binding_callbacks as z }; diff --git a/Server/public/js/components/index-ab5c14c8.js b/Server/public/js/components/index-ab5c14c8.js new file mode 100644 index 0000000..aaf0a59 --- /dev/null +++ b/Server/public/js/components/index-ab5c14c8.js @@ -0,0 +1,509 @@ + +(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); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function validate_store(store, name) { + if (store != null && typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value; + } + else { + attr(node, prop, value); + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +class HtmlTag { + constructor(is_svg = false) { + this.is_svg = false; + this.is_svg = is_svg; + this.e = this.n = null; + } + c(html) { + this.h(html); + } + m(html, target, anchor = null) { + if (!this.e) { + if (this.is_svg) + this.e = svg_element(target.nodeName); + else + this.e = element(target.nodeName); + this.t = target; + this.c(html); + } + this.i(anchor); + } + h(html) { + this.e.innerHTML = html; + this.n = Array.from(this.e.childNodes); + } + i(anchor) { + for (let i = 0; i < this.n.length; i += 1) { + insert(this.t, this.n[i], anchor); + } + } + p(html) { + this.d(); + this.h(html); + this.i(this.a); + } + d() { + this.n.forEach(detach); + } +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { set_style as A, listen_dev as B, getContext as C, setContext as D, run_all as E, svg_element as F, is_function as G, HtmlTag as H, SvelteElement as S, attribute_to_object as a, insert_dev as b, validate_slots as c, dispatch_dev as d, element as e, space as f, add_location as g, attr_dev as h, init as i, src_url_equal as j, append_dev as k, detach_dev as l, destroy_each as m, noop as n, onMount as o, validate_store as p, component_subscribe as q, globals as r, safe_not_equal as s, text as t, empty as u, validate_each_argument as v, set_custom_element_data as w, set_data_dev as x, flush as y, binding_callbacks as z }; diff --git a/Server/public/js/components/index-ce8c147b.js b/Server/public/js/components/index-ce8c147b.js new file mode 100644 index 0000000..e869406 --- /dev/null +++ b/Server/public/js/components/index-ce8c147b.js @@ -0,0 +1 @@ +function t(){}function n(t){return t()}function e(){return Object.create(null)}function o(t){t.forEach(n)}function s(t){return"function"==typeof t}function r(t,n){return t!=t?n==n:t!==n||t&&"object"==typeof t||"function"==typeof t}let i,c;function a(t,n){return i||(i=document.createElement("a")),i.href=n,t===i.href}function u(n,e,o){n.$$.on_destroy.push(function(n,...e){if(null==n)return t;const o=n.subscribe(...e);return o.unsubscribe?()=>o.unsubscribe():o}(e,o))}function f(t,n){t.appendChild(n)}function l(t,n,e){t.insertBefore(n,e||null)}function h(t){t.parentNode.removeChild(t)}function d(t,n){for(let e=0;et.removeEventListener(n,e,o)}function y(t,n,e){null==e?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function _(t,n,e){n in t?t[n]="boolean"==typeof t[n]&&""===e||e:y(t,n,e)}function x(t,n){n=""+n,t.wholeText!==n&&(t.data=n)}function v(t,n,e,o){null===e?t.style.removeProperty(n):t.style.setProperty(n,e,o?"important":"")}class E{constructor(t=!1){this.is_svg=!1,this.is_svg=t,this.e=this.n=null}c(t){this.h(t)}m(t,n,e=null){var o;this.e||(this.is_svg?this.e=(o=n.nodeName,document.createElementNS("http://www.w3.org/2000/svg",o)):this.e=$(n.nodeName),this.t=n,this.c(t)),this.i(e)}h(t){this.e.innerHTML=t,this.n=Array.from(this.e.childNodes)}i(t){for(let n=0;n{const o=e.length?e[0]:n;return m.ctx&&f(m.ctx[t],m.ctx[t]=o)&&(!m.skip_bound&&m.bound[t]&&m.bound[t](o),g&&D(r,t)),n})):[],m.update(),g=!0,o(m.before_update),m.fragment=!!u&&u(m.ctx),i.target){if(i.hydrate){const t=function(t){return Array.from(t.childNodes)}(i.target);m.fragment&&m.fragment.l(t),t.forEach(h)}else m.fragment&&m.fragment.c();i.intro&&((b=r.$$.fragment)&&b.i&&(F.delete(b),b.i(y))),function(t,e,r,i){const{fragment:c,after_update:a}=t.$$;c&&c.m(e,r),i||O((()=>{const e=t.$$.on_mount.map(n).filter(s);t.$$.on_destroy?t.$$.on_destroy.push(...e):o(e),t.$$.on_mount=[]})),a.forEach(O)}(r,i.target,i.anchor,i.customElement),z()}var b,y;k(p)}let I;"function"==typeof HTMLElement&&(I=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){const{on_mount:t}=this.$$;this.$$.on_disconnect=t.map(n).filter(s);for(const t in this.$$.slotted)this.appendChild(this.$$.slotted[t])}attributeChangedCallback(t,n,e){this[t]=e}disconnectedCallback(){o(this.$$.on_disconnect)}$destroy(){!function(t,n){const e=t.$$;null!==e.fragment&&(o(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}(this,1),this.$destroy=t}$on(n,e){if(!s(e))return t;const o=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return o.push(e),()=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}$set(t){var n;this.$$set&&(n=t,0!==Object.keys(n).length)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}});export{E as H,I as S,w as a,l as b,u as c,h as d,g as e,$ as f,m as g,y as h,G as i,a as j,_ as k,f as l,x as m,t as n,N as o,d as p,z as q,v as r,r as s,p as t,b as u,S as v,A as w,o as x,s as y}; diff --git a/Server/public/js/components/index-ed9e9a4d.js b/Server/public/js/components/index-ed9e9a4d.js new file mode 100644 index 0000000..34d6959 --- /dev/null +++ b/Server/public/js/components/index-ed9e9a4d.js @@ -0,0 +1,53 @@ + +(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 { n as noop, s as safe_not_equal } from './index-ab5c14c8.js'; + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +export { writable as w }; diff --git a/Server/public/js/components/index-f2dbf8ff.js b/Server/public/js/components/index-f2dbf8ff.js new file mode 100644 index 0000000..2cce352 --- /dev/null +++ b/Server/public/js/components/index-f2dbf8ff.js @@ -0,0 +1 @@ +import{n,s as t}from"./index-ce8c147b.js";const e=[];function s(s,o=n){let c;const i=new Set;function f(n){if(t(s,n)&&(s=n,c)){const n=!e.length;for(const n of i)n[1](),e.push(n,s);if(n){for(let n=0;n{i.delete(r),0===i.size&&(c(),c=null)}}}}export{s as w}; diff --git a/Server/public/js/components/index-fc577514.js b/Server/public/js/components/index-fc577514.js new file mode 100644 index 0000000..f122998 --- /dev/null +++ b/Server/public/js/components/index-fc577514.js @@ -0,0 +1,53 @@ + +(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 { n as noop, s as safe_not_equal } from './index-970976e6.js'; + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +export { writable as w }; diff --git a/Server/public/js/components/join-us-component.js b/Server/public/js/components/join-us-component.js index d76d34b..388d31e 100644 --- a/Server/public/js/components/join-us-component.js +++ b/Server/public/js/components/join-us-component.js @@ -1 +1 @@ -import{S as o,i as t,a as i,b as e,l as r,s as a,t as n,e as s,c as l,n as m,f as p,d as c,k as h,g as u,h as d,o as g}from"./index-95aedb1a.js";import{addMarkersGroups as f}from"../../../../../../../../../js/groups.js";import{addMarkersCoops as b}from"../../../../../../../../../js/coops.js";import{addMarkersCommunities as y}from"../../../../../../../../../js/communities.js";import"../../../../../../../../../js/components/map-component.js";function w(o){let t,i,r,a,g,f,b,y,w,v,j,x,A,k,C,H,J,M,N,T,U;return{c(){t=n("Are you against exploitation of one human being by another?\r\nDo you agree that we should cooperate and not compete with each other?\r\nIn that case, you are already a libertarian socialist. Join us \r\n\r\nFInd our group, community or cooperative near you and join in order to make a world we both envision a reality. \r\n\r\nNone of them near you? Not a problem! Join our WhatsApp group and we will help you get started.\r\n"),i=s("div"),r=s("div"),a=s("h1"),a.textContent="Join Us",g=l(),f=s("img"),y=l(),w=s("ol"),w.innerHTML="
  • Are you against dictatorship and in favor of democracy?
  • \n
  • Are you against exploitation of one human being by another?
  • \n
  • Do you agree that we should cooperate and not compete with each other?
  • \n

    If the answer is YES, then you are already a libertarian socialist. JOIN US!

    ",v=l(),j=s("h2"),j.textContent="What You Will Get",x=l(),A=s("ol"),A.innerHTML="
  • A community that is always ready to help with all your troubles;
  • \n
  • Access to the means of production of our cooperatives;
  • \n
  • Products and services at the cost of production or even for free;
  • \n
  • Monetary and non-monetary help with opening your own cooperative;
  • \n

    and much more!

    ",k=l(),C=s("h2"),C.textContent="Find Us",H=l(),J=s("div"),J.innerHTML='

    Find our

    \n
    1. group,
    2. \n
    3. community or
    4. \n
    5. cooperative
    \n

    near you and join to help make a world we both envision a reality.

    ',M=l(),N=s("p"),N.innerHTML='None of them near you? Not a problem! Join our WhatsApp group or Discord server and we will help you start your own.',T=l(),U=s("map-component"),this.c=m,p(f.src,b="/img/common/join-group.svg")||c(f,"src","/img/common/join-group.svg"),c(f,"id","join-group"),c(f,"alt","join group"),c(w,"id","condition-list"),c(A,"id","value-proposition-list"),c(J,"id","call-to-action-list"),h(U,"id","map"),h(U,"callback",o[0]),c(r,"id","text-container"),c(i,"id","container")},m(o,n){e(o,t,n),e(o,i,n),u(i,r),u(r,a),u(r,g),u(r,f),u(r,y),u(r,w),u(r,v),u(r,j),u(r,x),u(r,A),u(r,k),u(r,C),u(r,H),u(r,J),u(r,M),u(r,N),u(r,T),u(r,U)},p:m,i:m,o:m,d(o){o&&d(t),o&&d(i)}}}function v(o,t,i){return g((()=>{})),[function(o){let t=o([51.505,-.09],3);f(t),b(t),y(t)}]}class j extends o{constructor(o){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:i(this.attributes),customElement:!0},v,w,a,{mapCallback:0},null),o&&(o.target&&e(o.target,this,o.anchor),o.props&&(this.$set(o.props),r()))}static get observedAttributes(){return["mapCallback"]}get mapCallback(){return this.$$.ctx[0]}}customElements.define("join-us-component",j);export{j as default}; +import{S as o,i as t,a as i,b as r,s as n,e,n as a,d as s,c as m,o as l,f as c,t as p,g as u,j as d,h as g,k as h,l as f,m as v}from"./index-ce8c147b.js";import{addMarkersGroups as b}from"../../../../../../../../../js/groups.js";import{addMarkersCoops as j}from"../../../../../../../../../js/coops.js";import{addMarkersCommunities as x}from"../../../../../../../../../js/communities.js";import{loadLocaleContent as y}from"../../../../../../../../../js/libraries/serverTools.js";import{w as P}from"./index-f2dbf8ff.js";import"../../../../../../../../../js/components/map-component.js";function w(o){let t,i,n,e,a,m,l,b,j,x,y,P,w,k,O,A,S,T,D,H,N,L,M,U,z,B,E,G,R,W,Y,_,C,J,K,Z,q,F,I,Q,V,X,$,oo,to,io,ro,no,eo,ao,so,mo,lo,co,po,uo,go,ho,fo,vo,bo,jo,xo,yo,Po,wo,ko,Oo,Ao,So,To,Do,Ho,No,Lo,Mo,Uo,zo,Bo=o[0].heading+"",Eo=o[0].condition1+"",Go=o[0].condition2+"",Ro=o[0].condition3+"",Wo=o[0].conditionsOutcome+"",Yo=o[0].subheading1+"",_o=o[0].valueProposition1+"",Co=o[0].valueProposition2+"",Jo=o[0].valueProposition3+"",Ko=o[0].valueProposition4+"",Zo=o[0].valueProposition5+"",qo=o[0].subheading2+"",Fo=o[0].findOur+"",Io=o[0].group+"",Qo=o[0].community+"",Vo=o[0].or+"",Xo=o[0].cooperative+"",$o=o[0].nearYou+"",ot=o[0].noneNear+"",tt=o[0].WhatsAppGroup+"",it=o[0].or+"",rt=o[0].DiscordServer+"",nt=o[0].helpStart+"";return{c(){t=c("div"),i=c("div"),n=c("h1"),e=p(Bo),a=u(),m=c("img"),b=u(),j=c("ol"),x=c("li"),y=p(Eo),P=u(),w=c("li"),k=p(Go),O=u(),A=c("li"),S=p(Ro),T=u(),D=c("p"),H=u(),N=c("h2"),L=p(Yo),M=u(),U=c("ol"),z=c("li"),B=p(_o),E=u(),G=c("li"),R=p(Co),W=u(),Y=c("li"),_=p(Jo),C=u(),J=c("li"),K=p(Ko),Z=u(),q=c("p"),F=p(Zo),I=u(),Q=c("h2"),V=p(qo),X=u(),$=c("div"),oo=c("p"),to=p(Fo),io=u(),ro=c("ol"),no=c("li"),eo=c("a"),ao=p(Io),so=p(","),mo=u(),lo=c("li"),co=c("a"),po=p(Qo),uo=u(),go=p(Vo),ho=u(),fo=c("li"),vo=c("a"),bo=p(Xo),jo=u(),xo=c("p"),yo=p($o),Po=u(),wo=c("p"),ko=p(ot),Oo=u(),Ao=c("a"),So=p(tt),To=u(),Do=p(it),Ho=u(),No=c("a"),Lo=p(rt),Mo=p(nt),Uo=u(),zo=c("map-component"),d(m.src,l="/img/common/join-group.svg")||g(m,"src","/img/common/join-group.svg"),g(m,"id","join-group"),g(m,"alt","join group"),g(j,"id","condition-list"),g(U,"id","value-proposition-list"),g(eo,"href","/groups"),g(co,"href","/communities"),g(vo,"href","/cooperatives"),g($,"id","call-to-action-list"),g(Ao,"href","https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"),g(Ao,"target","_blank"),g(Ao,"rel","noreferrer"),g(No,"href","https://discord.gg/xAPZmyr8B6"),g(No,"target","_blank"),g(No,"rel","noreferrer"),h(zo,"id","map"),h(zo,"callback",o[3]),g(i,"id","text-container"),g(t,"id","container")},m(o,s){r(o,t,s),f(t,i),f(i,n),f(n,e),f(i,a),f(i,m),f(i,b),f(i,j),f(j,x),f(x,y),f(j,P),f(j,w),f(w,k),f(j,O),f(j,A),f(A,S),f(j,T),f(j,D),D.innerHTML=Wo,f(i,H),f(i,N),f(N,L),f(i,M),f(i,U),f(U,z),f(z,B),f(U,E),f(U,G),f(G,R),f(U,W),f(U,Y),f(Y,_),f(U,C),f(U,J),f(J,K),f(U,Z),f(U,q),f(q,F),f(i,I),f(i,Q),f(Q,V),f(i,X),f(i,$),f($,oo),f(oo,to),f($,io),f($,ro),f(ro,no),f(no,eo),f(eo,ao),f(no,so),f(ro,mo),f(ro,lo),f(lo,co),f(co,po),f(lo,uo),f(lo,go),f(ro,ho),f(ro,fo),f(fo,vo),f(vo,bo),f($,jo),f($,xo),f(xo,yo),f(i,Po),f(i,wo),f(wo,ko),f(wo,Oo),f(wo,Ao),f(Ao,So),f(wo,To),f(wo,Do),f(wo,Ho),f(wo,No),f(No,Lo),f(wo,Mo),f(i,Uo),f(i,zo)},p(o,t){1&t&&Bo!==(Bo=o[0].heading+"")&&v(e,Bo),1&t&&Eo!==(Eo=o[0].condition1+"")&&v(y,Eo),1&t&&Go!==(Go=o[0].condition2+"")&&v(k,Go),1&t&&Ro!==(Ro=o[0].condition3+"")&&v(S,Ro),1&t&&Wo!==(Wo=o[0].conditionsOutcome+"")&&(D.innerHTML=Wo),1&t&&Yo!==(Yo=o[0].subheading1+"")&&v(L,Yo),1&t&&_o!==(_o=o[0].valueProposition1+"")&&v(B,_o),1&t&&Co!==(Co=o[0].valueProposition2+"")&&v(R,Co),1&t&&Jo!==(Jo=o[0].valueProposition3+"")&&v(_,Jo),1&t&&Ko!==(Ko=o[0].valueProposition4+"")&&v(K,Ko),1&t&&Zo!==(Zo=o[0].valueProposition5+"")&&v(F,Zo),1&t&&qo!==(qo=o[0].subheading2+"")&&v(V,qo),1&t&&Fo!==(Fo=o[0].findOur+"")&&v(to,Fo),1&t&&Io!==(Io=o[0].group+"")&&v(ao,Io),1&t&&Qo!==(Qo=o[0].community+"")&&v(po,Qo),1&t&&Vo!==(Vo=o[0].or+"")&&v(go,Vo),1&t&&Xo!==(Xo=o[0].cooperative+"")&&v(bo,Xo),1&t&&$o!==($o=o[0].nearYou+"")&&v(yo,$o),1&t&&ot!==(ot=o[0].noneNear+"")&&v(ko,ot),1&t&&tt!==(tt=o[0].WhatsAppGroup+"")&&v(So,tt),1&t&&it!==(it=o[0].or+"")&&v(Do,it),1&t&&rt!==(rt=o[0].DiscordServer+"")&&v(Lo,rt),1&t&&nt!==(nt=o[0].helpStart+"")&&v(Mo,nt)},d(o){o&&s(t)}}}function k(o){let t,i=0!=Object.keys(o[0]).length,n=i&&w(o);return{c(){n&&n.c(),t=e(),this.c=a},m(o,i){n&&n.m(o,i),r(o,t,i)},p(o,[r]){1&r&&(i=0!=Object.keys(o[0]).length),i?n?n.p(o,r):(n=w(o),n.c(),n.m(t.parentNode,t)):n&&(n.d(1),n=null)},i:a,o:a,d(o){n&&n.d(o),o&&s(t)}}}function O(o,t,i){let r,n,e=P({});return m(o,e,(o=>i(0,r=o))),y(e,"join-us-component",n),l((()=>{})),[r,n,e,function(o){let t=o([51.505,-.09],3);b(t),j(t),x(t)}]}class A extends o{constructor(o){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:i(this.attributes),customElement:!0},O,k,n,{},null),o&&o.target&&r(o.target,this,o.anchor)}}customElements.define("join-us-component",A);export{A as default}; diff --git a/Server/public/js/components/landing-component.js b/Server/public/js/components/landing-component.js index 3d0914d..12c321b 100644 --- a/Server/public/js/components/landing-component.js +++ b/Server/public/js/components/landing-component.js @@ -1 +1 @@ -import{S as i,i as e,a as t,b as o,s as n,e as a,n as r,d as s,h as m,o as c}from"./index-95aedb1a.js";function d(i){let e;return{c(){e=a("div"),e.innerHTML=' \n \n crowd \n \n

    We are people united around a singular cause: bringing down authoritarian exploitative systems represented by various forms of capitalism and replacing them with libertarian socialist systems, with the goal of creating a more equitable and democratic world.

    \n

    GROUPS

    \n groups \n

    We organize groups for the purposes of education, advocacy, and mutual aid. Our objective is to demonstrate to people how the current politico-economic systems detrimentally impact our well-being, present them with alternative approaches, and engage in mutual aid to alleviate the challenges of living under capitalism.

    \n

    COMMUNITIES

    \n communities \n

    We establish communities based on libertarian socialist principles, where communities have ownership of their land, houses, and the means of production as well as make decisions using direct democracy. We are gradually expanding our socialist world, one community at a time.

    \n

    COOPERATIVES

    \n coops \n

    We form worker cooperatives to finance the operations of our groups and communities. Recognizing that economic power influences political power, we consider the establishment of cooperatives to be one of the initial steps towards achieving socialism.

    ',this.c=r,s(e,"id","container")},m(i,t){o(i,e,t)},p:r,i:r,o:r,d(i){i&&m(e)}}}function p(i){return c((()=>{})),[]}class g extends i{constructor(i){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:t(this.attributes),customElement:!0},p,d,n,{},null),i&&i.target&&o(i.target,this,i.anchor)}}customElements.define("landing-component",g);export{g as default}; +import{S as i,i as t,a as o,b as e,s as r,e as s,n,d as m,c as a,o as c,f as g,g as d,t as p,h as l,j as u,r as h,l as f,m as v,v as x}from"./index-ce8c147b.js";import{loadLocaleContent as w}from"../../../../../../../../../js/libraries/serverTools.js";import{w as T}from"./index-f2dbf8ff.js";function b(i){let t,o,r,s,n,a,c,x,w,T,b,y,j,k,z,E,H,L,M,O,R,N,S,q,A,B,C,D,F,G,I,J,K,P,Q,U,V,W=i[2].top+"",X=i[2].groupsTitle+"",Y=i[2].groupsText+"",Z=i[2].communitiesTitle+"",$=i[2].communitiesText+"",_=i[2].cooperativesTitle+"",ii=i[2].cooperativesText+"";return{c(){t=g("div"),o=g("picture"),o.innerHTML=' \n \n crowd',r=d(),s=g("div"),n=g("p"),a=p(W),c=d(),x=g("div"),w=g("div"),T=g("h2"),b=p(X),y=d(),j=g("img"),z=d(),E=g("p"),H=p(Y),L=d(),M=g("div"),O=g("h2"),R=p(Z),N=d(),S=g("img"),A=d(),B=g("p"),C=p($),D=d(),F=g("div"),G=g("h2"),I=p(_),J=d(),K=g("img"),Q=d(),U=g("p"),V=p(ii),l(j,"id","groups-img"),u(j.src,k="/img/common/groups.svg")||l(j,"src","/img/common/groups.svg"),l(j,"alt","groups"),l(S,"id","communities-img"),u(S.src,q="/img/common/communities.svg")||l(S,"src","/img/common/communities.svg"),l(S,"alt","communities"),l(K,"id","coops-img"),u(K.src,P="/img/common/coops.svg")||l(K,"src","/img/common/coops.svg"),l(K,"alt","coops"),l(x,"id","container-grid"),h(x,"--grid-width",i[1]),l(s,"id","text-container"),l(t,"id","container")},m(m,g){e(m,t,g),f(t,o),f(t,r),f(t,s),f(s,n),f(n,a),f(s,c),f(s,x),f(x,w),f(w,T),f(T,b),f(w,y),f(w,j),f(w,z),f(w,E),f(E,H),f(x,L),f(x,M),f(M,O),f(O,R),f(M,N),f(M,S),f(M,A),f(M,B),f(B,C),f(x,D),f(x,F),f(F,G),f(G,I),f(F,J),f(F,K),f(F,Q),f(F,U),f(U,V),i[5](x)},p(i,t){4&t&&W!==(W=i[2].top+"")&&v(a,W),4&t&&X!==(X=i[2].groupsTitle+"")&&v(b,X),4&t&&Y!==(Y=i[2].groupsText+"")&&v(H,Y),4&t&&Z!==(Z=i[2].communitiesTitle+"")&&v(R,Z),4&t&&$!==($=i[2].communitiesText+"")&&v(C,$),4&t&&_!==(_=i[2].cooperativesTitle+"")&&v(I,_),4&t&&ii!==(ii=i[2].cooperativesText+"")&&v(V,ii),2&t&&h(x,"--grid-width",i[1])},d(o){o&&m(t),i[5](null)}}}function y(i){let t,o=0!=Object.keys(i[2]).length,r=o&&b(i);return{c(){r&&r.c(),t=s(),this.c=n},m(i,o){r&&r.m(i,o),e(i,t,o)},p(i,[e]){4&e&&(o=0!=Object.keys(i[2]).length),o?r?r.p(i,e):(r=b(i),r.c(),r.m(t.parentNode,t)):r&&(r.d(1),r=null)},i:n,o:n,d(i){r&&r.d(i),i&&m(t)}}}function j(i,t,o){let e,r,s,n,m=T({});return a(i,m,(i=>o(2,e=i))),w(m,"landing-component",n,(function(i){o(1,s="ru"==i?"1.2fr 1.05fr 1fr":"1.2fr 1.1fr 1fr")})),c((()=>{})),[r,s,e,n,m,function(i){x[i?"unshift":"push"]((()=>{r=i,o(0,r)}))}]}class k extends i{constructor(i){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:o(this.attributes),customElement:!0},j,y,r,{},null),i&&i.target&&e(i.target,this,i.anchor)}}customElements.define("landing-component",k);export{k as default}; diff --git a/Server/public/js/components/legend-component.js b/Server/public/js/components/legend-component.js index dc0c093..11a133a 100644 --- a/Server/public/js/components/legend-component.js +++ b/Server/public/js/components/legend-component.js @@ -1 +1 @@ -import{S as t,i as e,a as s,b as o,l as n,s as r,e as i,n as a,d as l,h as c,j as p,o as u,c as h,t as d,m,g as f,p as g,q as y,r as $}from"./index-95aedb1a.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 j(){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",j),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 v extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:s(this.attributes),customElement:!0},j,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",v);export{v as default}; +import{S as t,i as e,a as s,b as o,q 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,r as m,l as f,u as g,m as y,v as $}from"./index-ce8c147b.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}; diff --git a/Server/public/js/components/loadscreen-component.js b/Server/public/js/components/loadscreen-component.js index 3e560bd..bde0ec0 100644 --- a/Server/public/js/components/loadscreen-component.js +++ b/Server/public/js/components/loadscreen-component.js @@ -1 +1 @@ -import{S as t,i as s,a as e,b as n,s as a,e as o,n as i,d as r,m as d,h as u,o as c,r as l}from"./index-95aedb1a.js";function h(t){let s;return{c(){s=o("div"),this.c=i,r(s,"id","loadscreen"),d(s,"width","100%"),d(s,"height","100%"),d(s,"background","white"),d(s,"position","absolute"),d(s,"z-index","100000")},m(e,a){n(e,s,a),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 m extends t{constructor(t){super(),s(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},p,h,a,{},null),t&&t.target&&n(t.target,this,t.anchor)}}customElements.define("loadscreen-component",m);export{m as default}; +import{S as t,i as s,a as e,b as n,s as o,f as a,n as i,h as r,r as d,d as c,o as u,v as l}from"./index-ce8c147b.js";function h(t){let s;return{c(){s=a("div"),this.c=i,r(s,"id","loadscreen"),d(s,"width","100%"),d(s,"height","100%"),d(s,"background","white"),d(s,"position","absolute"),d(s,"z-index","100000")},m(e,o){n(e,s,o),t[1](s)},p:i,i:i,o:i,d(e){e&&c(s),t[1](null)}}}function p(t,s,e){let n;return u((()=>{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}; diff --git a/Server/public/js/components/manifesto-component.js b/Server/public/js/components/manifesto-component.js index 0470e6e..ed5dec7 100644 --- a/Server/public/js/components/manifesto-component.js +++ b/Server/public/js/components/manifesto-component.js @@ -1 +1 @@ -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,g as a,h as c,o as d,t as m,c as u,f,m as h,p as g,j as p,r as w,w as b,x,H as y}from"./index-95aedb1a.js";import{getData as v}from"../../../../../../../../../js/libraries/serverTools.js";import{px2rem as k}from"../../../../../../../../../js/libraries/miscTools.js";function H(t,e,n){const i=t.slice();return i[28]=e[n],i[29]=e,i[30]=n,i}function T(t,e,n){const i=t.slice();return i[31]=e[n],i}function L(t,e,n){const i=t.slice();return i[31]=e[n],i}function j(t,e,n){const i=t.slice();return i[36]=e[n],i[37]=e,i[38]=n,i}function I(t,e,n){const i=t.slice();return i[39]=e[n],i[40]=e,i[41]=n,i}function Y(t){let e,n,l,r,d,f,h=t[36].name+"",p=t[36];const w=()=>t[17](n,p),b=()=>t[17](null,p);function x(){return t[18](t[36])}return{c(){e=o("div"),n=o("button"),l=m(h),r=u(),s(n,"class","level0 heading-button"),s(e,"class","heading-button-wrapper")},m(t,o){i(t,e,o),a(e,n),a(n,l),w(),a(e,r),d||(f=g(n,"click",x),d=!0)},p(e,n){p!==(t=e)[36]&&(b(),p=t[36],w())},d(t){t&&c(e),b(),d=!1,f()}}}function M(t){let e,n=t[36],l=[];for(let e=0;et[15](n,p),b=()=>t[15](null,p);function x(){return t[16](t[39])}return{c(){e=o("div"),n=o("button"),l=m(h),r=u(),s(n,"class","level1 heading-button"),s(e,"class","heading-button-wrapper")},m(t,o){i(t,e,o),a(e,n),a(n,l),w(),a(e,r),d||(f=g(n,"click",x),d=!0)},p(e,n){p!==(t=e)[39]&&(b(),p=t[39],w())},d(t){t&&c(e),b(),d=!1,f()}}}function C(t){let e;let n=function(t,e){return Array.isArray(t[36])?M:Y}(t),l=n(t);return{c(){l.c(),e=b()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&c(e)}}}function z(t){let e;let n=function(t,e){return t[28],"ul"==Object.keys(t[28])[0]?B:(t[28],"ol"==Object.keys(t[28])[0]?R:(t[28],"h3"==t[28].type?O:(t[28],"h2"==t[28].type?V:"#"==t[28][0]?S:E)))}(t),l=n(t);return{c(){l.c(),e=b()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&c(e)}}}function E(t){let e,n,l,d=t[28]+"";return{c(){e=o("p"),n=new y(!1),l=u(),n.a=l,s(e,"class","margin-end")},m(t,o){i(t,e,o),n.m(d,e),a(e,l)},p:r,d(t){t&&c(e)}}}function S(t){let e,n=t[28].slice(2,t[28].length)+"";return{c(){e=o("h1")},m(t,l){i(t,e,l),e.innerHTML=n},p:r,d(t){t&&c(e)}}}function V(t){let e,n,l,r,d,m=t[28].line+"",f=t[28];const p=()=>t[22](n,f),w=()=>t[22](null,f);return{c(){e=o("button"),n=o("h2"),l=u(),s(n,"id",t[28].id),h(e,"display","block"),h(e,"width","100%")},m(o,s){i(o,e,s),a(e,n),n.innerHTML=m,p(),a(e,l),r||(d=g(e,"click",(function(){x(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),r=!0)},p(e,n){f!==(t=e)[28]&&(w(),f=t[28],p())},d(t){t&&c(e),w(),r=!1,d()}}}function O(t){let e,n,l,r,d,m=t[28].line+"",f=t[28];const p=()=>t[21](n,f),w=()=>t[21](null,f);return{c(){e=o("button"),n=o("h3"),l=u(),s(n,"id",t[28].id),h(e,"display","block"),h(e,"width","100%")},m(o,s){i(o,e,s),a(e,n),n.innerHTML=m,p(),a(e,l),r||(d=g(e,"click",(function(){x(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),r=!0)},p(e,n){f!==(t=e)[28]&&(w(),f=t[28],p())},d(t){t&&c(e),w(),r=!1,d()}}}function R(t){let e,n,l=t[28].ol,r=[];for(let e=0;en.includes("<"+t+">"))).findIndex((t=>t));if(-1!=i){let e=b[i],o={};o[e]=[];let r="";for(;;){if(t+=1,n=l[t],n.includes(r)){m.push(o);break}o[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:o}),o+=1,m.push({type:"h3",id:i,line:t,index:o})}else if("##"==n.slice(0,2)){let t=n.slice(3,n.length),i=t.toLowerCase().trim().replaceAll(" ","-");h.push({id:t.toLowerCase().trim().replaceAll(" ","-"),name:t,index:o}),o+=1,e=[],h.push(e),m.push({type:"h2",id:i,line:t,index:o})}else m.push(n)}n(0,i+=1)})),addEventListener("scroll",(t=>{if(window.innerWidth>1080){let t=k(window.scrollY),e=k(a.getBoundingClientRect().bottom+window.scrollY),i=k(s.getBoundingClientRect().bottom+window.scrollY);if(t>g&&t<5||t=e-1.5)p-=i-(e-1.5);else if(p>-5&&(p=-5),t<5&&0!=t){let t=k(s.offsetHeight-window.innerHeight);p=-Math.min(k(window.scrollY),5+t+2.5)}else if(twindow.innerHeight){let e=k(s.offsetHeight)-k(window.innerHeight);p>-(e+8)?p+=g-t:p=-(e+8)}n(6,s.style.marginTop=p+"rem",s),g=k(window.scrollY)}else n(6,s.style.marginTop="0rem",s)})),d((()=>{let t=localStorage.getItem("manifesto-hide-content");null!=t&&null!=t&&"true"==t&&D(o,r)}));return[i,l,o,r,u,f,s,a,c,m,h,x,function(t){w[t?"unshift":"push"]((()=>{o=t,n(2,o)}))},function(t){w[t?"unshift":"push"]((()=>{l=t,n(1,l)}))},()=>D(o,r),function(t,e){w[t?"unshift":"push"]((()=>{u[e.index]=t,n(4,u)}))},t=>x(t.id),function(t,e){w[t?"unshift":"push"]((()=>{u[e.index]=t,n(4,u)}))},t=>x(t.id),function(t){w[t?"unshift":"push"]((()=>{r=t,n(3,r)}))},function(t){w[t?"unshift":"push"]((()=>{s=t,n(6,s)}))},function(t,e){w[t?"unshift":"push"]((()=>{f[e.id]=t,n(5,f)}))},function(t,e){w[t?"unshift":"push"]((()=>{f[e.id]=t,n(5,f)}))},function(t){w[t?"unshift":"push"]((()=>{c=t,n(8,c)}))},function(t){w[t?"unshift":"push"]((()=>{a=t,n(7,a)}))}]}class J extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},G,q,l,{},null,[-1,-1]),t&&t.target&&i(t.target,this,t.anchor)}}customElements.define("manifesto-component",J);export{J as default}; +import{S as t,i as e,a as n,b as i,s as l,f as o,n as r,h as s,l as a,d as c,o as d,t as m,g as u,j as f,r as h,u as g,p,v as w,e as b,y as x,H as y}from"./index-ce8c147b.js";import{getData as v}from"../../../../../../../../../js/libraries/serverTools.js";import{px2rem as k}from"../../../../../../../../../js/libraries/miscTools.js";function H(t,e,n){const i=t.slice();return i[28]=e[n],i[29]=e,i[30]=n,i}function T(t,e,n){const i=t.slice();return i[31]=e[n],i}function L(t,e,n){const i=t.slice();return i[31]=e[n],i}function j(t,e,n){const i=t.slice();return i[36]=e[n],i[37]=e,i[38]=n,i}function I(t,e,n){const i=t.slice();return i[39]=e[n],i[40]=e,i[41]=n,i}function Y(t){let e,n,l,r,d,f,h=t[36].name+"",p=t[36];const w=()=>t[17](n,p),b=()=>t[17](null,p);function x(){return t[18](t[36])}return{c(){e=o("div"),n=o("button"),l=m(h),r=u(),s(n,"class","level0 heading-button"),s(e,"class","heading-button-wrapper")},m(t,o){i(t,e,o),a(e,n),a(n,l),w(),a(e,r),d||(f=g(n,"click",x),d=!0)},p(e,n){p!==(t=e)[36]&&(b(),p=t[36],w())},d(t){t&&c(e),b(),d=!1,f()}}}function M(t){let e,n=t[36],l=[];for(let e=0;et[15](n,p),b=()=>t[15](null,p);function x(){return t[16](t[39])}return{c(){e=o("div"),n=o("button"),l=m(h),r=u(),s(n,"class","level1 heading-button"),s(e,"class","heading-button-wrapper")},m(t,o){i(t,e,o),a(e,n),a(n,l),w(),a(e,r),d||(f=g(n,"click",x),d=!0)},p(e,n){p!==(t=e)[39]&&(b(),p=t[39],w())},d(t){t&&c(e),b(),d=!1,f()}}}function C(t){let e;let n=function(t,e){return Array.isArray(t[36])?M:Y}(t),l=n(t);return{c(){l.c(),e=b()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&c(e)}}}function z(t){let e;let n=function(t,e){return t[28],"ul"==Object.keys(t[28])[0]?B:(t[28],"ol"==Object.keys(t[28])[0]?R:(t[28],"h3"==t[28].type?O:(t[28],"h2"==t[28].type?V:"#"==t[28][0]?S:E)))}(t),l=n(t);return{c(){l.c(),e=b()},m(t,n){l.m(t,n),i(t,e,n)},p(t,e){l.p(t,e)},d(t){l.d(t),t&&c(e)}}}function E(t){let e,n,l,d=t[28]+"";return{c(){e=o("p"),n=new y(!1),l=u(),n.a=l,s(e,"class","margin-end")},m(t,o){i(t,e,o),n.m(d,e),a(e,l)},p:r,d(t){t&&c(e)}}}function S(t){let e,n=t[28].slice(2,t[28].length)+"";return{c(){e=o("h1")},m(t,l){i(t,e,l),e.innerHTML=n},p:r,d(t){t&&c(e)}}}function V(t){let e,n,l,r,d,m=t[28].line+"",f=t[28];const p=()=>t[22](n,f),w=()=>t[22](null,f);return{c(){e=o("button"),n=o("h2"),l=u(),s(n,"id",t[28].id),h(e,"display","block"),h(e,"width","100%")},m(o,s){i(o,e,s),a(e,n),n.innerHTML=m,p(),a(e,l),r||(d=g(e,"click",(function(){x(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),r=!0)},p(e,n){f!==(t=e)[28]&&(w(),f=t[28],p())},d(t){t&&c(e),w(),r=!1,d()}}}function O(t){let e,n,l,r,d,m=t[28].line+"",f=t[28];const p=()=>t[21](n,f),w=()=>t[21](null,f);return{c(){e=o("button"),n=o("h3"),l=u(),s(n,"id",t[28].id),h(e,"display","block"),h(e,"width","100%")},m(o,s){i(o,e,s),a(e,n),n.innerHTML=m,p(),a(e,l),r||(d=g(e,"click",(function(){x(t[6].scrollIntoView({block:"start"},!0))&&t[6].scrollIntoView({block:"start"},!0).apply(this,arguments)})),r=!0)},p(e,n){f!==(t=e)[28]&&(w(),f=t[28],p())},d(t){t&&c(e),w(),r=!1,d()}}}function R(t){let e,n,l=t[28].ol,r=[];for(let e=0;en.includes("<"+t+">"))).findIndex((t=>t));if(-1!=i){let e=b[i],o={};o[e]=[];let r="";for(;;){if(t+=1,n=l[t],n.includes(r)){m.push(o);break}o[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:o}),o+=1,m.push({type:"h3",id:i,line:t,index:o})}else if("##"==n.slice(0,2)){let t=n.slice(3,n.length),i=t.toLowerCase().trim().replaceAll(" ","-");h.push({id:t.toLowerCase().trim().replaceAll(" ","-"),name:t,index:o}),o+=1,e=[],h.push(e),m.push({type:"h2",id:i,line:t,index:o})}else m.push(n)}n(0,i+=1)})),addEventListener("scroll",(t=>{if(window.innerWidth>1080){let t=k(window.scrollY),e=k(a.getBoundingClientRect().bottom+window.scrollY),i=k(s.getBoundingClientRect().bottom+window.scrollY);if(t>g&&t<5||t=e-1.5)p-=i-(e-1.5);else if(p>-5&&(p=-5),t<5&&0!=t){let t=k(s.offsetHeight-window.innerHeight);p=-Math.min(k(window.scrollY),5+t+2.5)}else if(twindow.innerHeight){let e=k(s.offsetHeight)-k(window.innerHeight);p>-(e+8)?p+=g-t:p=-(e+8)}n(6,s.style.marginTop=p+"rem",s),g=k(window.scrollY)}else n(6,s.style.marginTop="0rem",s)})),d((()=>{let t=localStorage.getItem("manifesto-hide-content");null!=t&&null!=t&&"true"==t&&D(o,r)}));return[i,l,o,r,u,f,s,a,c,m,h,x,function(t){w[t?"unshift":"push"]((()=>{o=t,n(2,o)}))},function(t){w[t?"unshift":"push"]((()=>{l=t,n(1,l)}))},()=>D(o,r),function(t,e){w[t?"unshift":"push"]((()=>{u[e.index]=t,n(4,u)}))},t=>x(t.id),function(t,e){w[t?"unshift":"push"]((()=>{u[e.index]=t,n(4,u)}))},t=>x(t.id),function(t){w[t?"unshift":"push"]((()=>{r=t,n(3,r)}))},function(t){w[t?"unshift":"push"]((()=>{s=t,n(6,s)}))},function(t,e){w[t?"unshift":"push"]((()=>{f[e.id]=t,n(5,f)}))},function(t,e){w[t?"unshift":"push"]((()=>{f[e.id]=t,n(5,f)}))},function(t){w[t?"unshift":"push"]((()=>{c=t,n(8,c)}))},function(t){w[t?"unshift":"push"]((()=>{a=t,n(7,a)}))}]}class J extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},G,q,l,{},null,[-1,-1]),t&&t.target&&i(t.target,this,t.anchor)}}customElements.define("manifesto-component",J);export{J as default}; diff --git a/Server/public/js/components/map-component.js b/Server/public/js/components/map-component.js index 0282835..038e724 100644 --- a/Server/public/js/components/map-component.js +++ b/Server/public/js/components/map-component.js @@ -1 +1 @@ -import{S as t,i as a,a as e,b as s,l as o,s as r,e as i,n,d as l,h as c,o as p,r as m}from"./index-95aedb1a.js";function h(t){let a;return{c(){a=i("div"),this.c=n,l(a,"id","map")},m(e,o){s(e,a,o),t[2](a)},p:n,i:n,o:n,d(e){e&&c(a),t[2](null)}}}function u(t,a,e){let s,{callback:o=null}=a;function r(t,a){let e=L.map(s,{center:t,zoom:a});return L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'© OpenStreetMap contributors',minNativeZoom:2,minZoom:2,maxNativeZoom:16,maxZoom:16}).addTo(e),e}return p((()=>{o(r)})),t.$$set=t=>{"callback"in t&&e(1,o=t.callback)},[s,o,function(t){m[t?"unshift":"push"]((()=>{s=t,e(0,s)}))}]}class b extends t{constructor(t){super(),this.shadowRoot.innerHTML="",a(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},u,h,r,{callback:1},null),t&&(t.target&&s(t.target,this,t.anchor),t.props&&(this.$set(t.props),o()))}static get observedAttributes(){return["callback"]}get callback(){return this.$$.ctx[1]}set callback(t){this.$$set({callback:t}),o()}}customElements.define("map-component",b);export{b as default}; +import{S as t,i as a,a as e,b as s,q as o,s as r,f as i,n,h as c,d as l,o as p,v as m}from"./index-ce8c147b.js";function h(t){let a;return{c(){a=i("div"),this.c=n,c(a,"id","map")},m(e,o){s(e,a,o),t[2](a)},p:n,i:n,o:n,d(e){e&&l(a),t[2](null)}}}function u(t,a,e){let s,{callback:o=null}=a;function r(t,a){let e=L.map(s,{center:t,zoom:a});return L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'© OpenStreetMap contributors',minNativeZoom:2,minZoom:2,maxNativeZoom:16,maxZoom:16}).addTo(e),e}return p((()=>{o(r)})),t.$$set=t=>{"callback"in t&&e(1,o=t.callback)},[s,o,function(t){m[t?"unshift":"push"]((()=>{s=t,e(0,s)}))}]}class b extends t{constructor(t){super(),this.shadowRoot.innerHTML="",a(this,{target:this.shadowRoot,props:e(this.attributes),customElement:!0},u,h,r,{callback:1},null),t&&(t.target&&s(t.target,this,t.anchor),t.props&&(this.$set(t.props),o()))}static get observedAttributes(){return["callback"]}get callback(){return this.$$.ctx[1]}set callback(t){this.$$set({callback:t}),o()}}customElements.define("map-component",b);export{b as default}; diff --git a/Server/public/js/components/navbar-component.js b/Server/public/js/components/navbar-component.js index 9500c10..f1c3aa8 100644 --- a/Server/public/js/components/navbar-component.js +++ b/Server/public/js/components/navbar-component.js @@ -1 +1 @@ -import{S as a,i,a as s,b as n,s as e,e as t,c as o,n as r,d as l,g as c,p as u,h,o as m,r as d}from"./index-95aedb1a.js";function f(a){let i,s,e,m,d,f,p,b,g,v;return{c(){i=t("header"),s=t("input"),e=o(),m=t("label"),m.innerHTML='',d=o(),f=t("a"),f.innerHTML=' \n Libertarian socialists',p=o(),b=t("nav"),b.innerHTML='',this.c=r,l(s,"type","checkbox"),l(s,"id","side-menu"),l(m,"id","hamb"),l(m,"for","side-menu"),l(f,"id","logo-container"),l(f,"href","/"),l(b,"id","nav"),l(i,"id","navbar")},m(t,o){n(t,i,o),c(i,s),a[3](s),c(i,e),c(i,m),c(i,d),c(i,f),c(i,p),c(i,b),a[4](i),g||(v=u(s,"click",a[2]),g=!0)},p:r,i:r,o:r,d(s){s&&h(i),a[3](null),a[4](null),g=!1,v()}}}function p(a,i,s){let n,e;return m((()=>{})),[n,e,function(){n.checked?s(1,e.style.background="white",e):setTimeout((()=>{s(1,e.style.position="relative",e),s(1,e.style.background="",e),s(1,e.style.boxShadow="",e)}),510)},function(a){d[a?"unshift":"push"]((()=>{n=a,s(0,n)}))},function(a){d[a?"unshift":"push"]((()=>{e=a,s(1,e)}))}]}class b extends a{constructor(a){super(),this.shadowRoot.innerHTML="",i(this,{target:this.shadowRoot,props:s(this.attributes),customElement:!0},p,f,e,{},null),a&&a.target&&n(a.target,this,a.anchor)}}customElements.define("navbar-component",b);export{b as default}; +import{S as e,i as o,a as t,b as i,s as n,e as a,n as r,d as s,c as l,o as c,f as d,g as m,t as p,h,j as g,l as u,u as b,m as f,x as v,v as k}from"./index-ce8c147b.js";import{loadLocaleContent as w}from"../../../../../../../../../js/libraries/serverTools.js";import{w as x}from"./index-f2dbf8ff.js";function y(e){let o,t,n,a,r,l,c,k,w,x,y,j,z,T,E,H,L,M,N,S,C,O,R,U,I,X,q,A,B,D,F,G,J,K,P,Q,V,W,Y,Z,$,_,ee,oe,te,ie,ne,ae=e[3].orgName+"",re=e[3].manifesto+"",se=e[3].joinUs+"",le=e[3].groups+"",ce=e[3].communities+"",de=e[3].cooperatives+"",me=e[3].partners+"";return{c(){o=d("header"),t=d("input"),n=m(),a=d("label"),a.innerHTML='',r=m(),l=d("a"),c=d("img"),w=m(),x=d("span"),y=p(ae),j=m(),z=d("nav"),T=d("ul"),E=d("li"),H=d("a"),L=p(re),M=m(),N=d("li"),S=d("a"),C=p(se),O=m(),R=d("li"),U=d("a"),I=p(le),X=m(),q=d("li"),A=d("a"),B=p(ce),D=m(),F=d("li"),G=d("a"),J=p(de),K=m(),P=d("li"),Q=d("a"),V=p(me),W=m(),Y=d("li"),Z=d("button"),Z.innerHTML=' \n \n globe',$=m(),_=d("div"),ee=d("button"),ee.textContent="English",oe=m(),te=d("button"),te.textContent="Русский",h(t,"type","checkbox"),h(t,"id","side-menu"),h(a,"id","hamb"),h(a,"for","side-menu"),g(c.src,k="img/common/flag.png")||h(c,"src","img/common/flag.png"),h(c,"id","navbar-logo"),h(c,"alt","logo"),h(x,"id","navbar-logo-text"),h(l,"id","logo-container"),h(l,"href","/"),h(H,"href","/manifesto"),h(S,"href","/join-us"),h(U,"href","/groups"),h(A,"href","/communities"),h(G,"href","/cooperatives"),h(Q,"href","/partners"),h(Y,"id","locales"),h(_,"id","locales-dropdown"),h(T,"id","menu"),h(z,"id","nav"),h(o,"id","navbar")},m(s,d){i(s,o,d),u(o,t),e[8](t),u(o,n),u(o,a),u(o,r),u(o,l),u(l,c),u(l,w),u(l,x),u(x,y),u(o,j),u(o,z),u(z,T),u(T,E),u(E,H),u(H,L),u(T,M),u(T,N),u(N,S),u(S,C),u(T,O),u(T,R),u(R,U),u(U,I),u(T,X),u(T,q),u(q,A),u(A,B),u(T,D),u(T,F),u(F,G),u(G,J),u(T,K),u(T,P),u(P,Q),u(Q,V),u(T,W),u(T,Y),u(Y,Z),u(T,$),u(T,_),u(_,ee),u(_,oe),u(_,te),e[11](_),e[12](o),ie||(ne=[b(t,"click",e[6]),b(Z,"click",e[7]),b(ee,"click",e[9]),b(te,"click",e[10])],ie=!0)},p(e,o){8&o&&ae!==(ae=e[3].orgName+"")&&f(y,ae),8&o&&re!==(re=e[3].manifesto+"")&&f(L,re),8&o&&se!==(se=e[3].joinUs+"")&&f(C,se),8&o&&le!==(le=e[3].groups+"")&&f(I,le),8&o&&ce!==(ce=e[3].communities+"")&&f(B,ce),8&o&&de!==(de=e[3].cooperatives+"")&&f(J,de),8&o&&me!==(me=e[3].partners+"")&&f(V,me)},d(t){t&&s(o),e[8](null),e[11](null),e[12](null),ie=!1,v(ne)}}}function j(e){let o,t=0!=Object.keys(e[3]).length,n=t&&y(e);return{c(){n&&n.c(),o=a(),this.c=r},m(e,t){n&&n.m(e,t),i(e,o,t)},p(e,[i]){8&i&&(t=0!=Object.keys(e[3]).length),t?n?n.p(e,i):(n=y(e),n.c(),n.m(o.parentNode,o)):n&&(n.d(1),n=null)},i:r,o:r,d(e){n&&n.d(e),e&&s(o)}}}function z(e){localStorage.setItem("locale",e),location.reload()}function T(e,o,t){let i,n,a,r,s,d=x({});l(e,d,(e=>t(3,i=e))),w(d,"navbar-component",s),c((()=>{}));return[n,a,r,i,s,d,function(){n.checked?t(1,a.style.background="white",a):setTimeout((()=>{t(1,a.style.position="relative",a),t(1,a.style.background="",a),t(1,a.style.boxShadow="",a)}),510)},function(){"block"==r.style.display?t(2,r.style.display="none",r):t(2,r.style.display="block",r)},function(e){k[e?"unshift":"push"]((()=>{n=e,t(0,n)}))},()=>z("en"),()=>z("ru"),function(e){k[e?"unshift":"push"]((()=>{r=e,t(2,r)}))},function(e){k[e?"unshift":"push"]((()=>{a=e,t(1,a)}))}]}class E extends e{constructor(e){super(),this.shadowRoot.innerHTML="",o(this,{target:this.shadowRoot,props:t(this.attributes),customElement:!0},T,j,n,{},null),e&&e.target&&i(e.target,this,e.anchor)}}customElements.define("navbar-component",E);export{E as default}; diff --git a/Server/public/js/components/pane-aligner.js b/Server/public/js/components/pane-aligner.js index 4d1fb3a..21e615e 100644 --- a/Server/public/js/components/pane-aligner.js +++ b/Server/public/js/components/pane-aligner.js @@ -1 +1 @@ -import{S as e,i,a,b as t,s as n,e as r,c as s,n as d,d as o,g as l,h as m,u as p,o as h,r as g}from"./index-95aedb1a.js";import{debounce as c}from"../../../../../../../../../js/libraries/miscTools.js";function f(e){let i,a,n,p,h,g,c,f,u,b;return{c(){i=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(i,"id","root"),o(i,"class","pane-centering")},m(r,s){t(r,i,s),l(i,a),l(a,n),l(n,p),e[5](p),l(n,h),l(n,g),e[6](g),l(a,c),l(a,f),e[7](f),l(a,u),l(a,b),e[8](b),e[9](i)},p:d,i:d,o:d,d(a){a&&m(i),e[5](null),e[6](null),e[7](null),e[8](null),e[9](null)}}}function u(e,i,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 e=t.parentNode.host.childNodes;if(0==e.length)setTimeout(u,50);else{let i=!1,n=t.parentNode.innerHTML;for(let a of e)"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,i=!0):(n=n.replace("#sidebar-left2{display:none}",""),m=!0,i=!0):(n=n.replace("#sidebar-left{display:none}",""),l=!0,i=!0);null!=o&&(n=n.replace("1880px",o),i=!0),i&&a(0,t.parentNode.innerHTML=n,t)}}}return window.addEventListener("resize",c(u,100)),h((()=>{u()})),[t,n,r,s,d,function(e){g[e?"unshift":"push"]((()=>{r=e,a(2,r)}))},function(e){g[e?"unshift":"push"]((()=>{s=e,a(3,s)}))},function(e){g[e?"unshift":"push"]((()=>{d=e,a(4,d)}))},function(e){g[e?"unshift":"push"]((()=>{n=e,a(1,n)}))},function(e){g[e?"unshift":"push"]((()=>{t=e,a(0,t)}))}]}class b extends e{constructor(e){super(),this.shadowRoot.innerHTML="",i(this,{target:this.shadowRoot,props:a(this.attributes),customElement:!0},u,f,n,{},null),e&&e.target&&t(e.target,this,e.anchor)}}customElements.define("pane-aligner",b);export{b as default}; +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,w as p,o as h,v as g}from"./index-ce8c147b.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}; diff --git a/Server/public/js/components/partners-component.js b/Server/public/js/components/partners-component.js new file mode 100644 index 0000000..4f952fb --- /dev/null +++ b/Server/public/js/components/partners-component.js @@ -0,0 +1 @@ +import{S as e,i as t,a as n,b as i,s as o,e as a,n as r,d as s,c as m,o as l,f as c,t as g,g as d,h as p,j as h,l as f,m as u,p as b}from"./index-ce8c147b.js";import{w as x}from"./index-f2dbf8ff.js";import{loadLocaleContent as w,getLocale as v}from"../../../../../../../../../js/libraries/serverTools.js";import"../../../../../../../../../js/components/map-component.js";function y(e,t,n){const i=e.slice();return i[5]=t[n],i}function k(e){let t,n,o,a,r,m,l,x,w,v,k,z,D,F,G,E,O,R=e[0].heading+"",S=e[0].p1+"",T=e[0].subheading1+"",_=e[0].subheading2+"",A=e[4],C=[];for(let t=0;tn(0,i=e))),w(r,"partners-component",o,(e=>v(a,e)));return l((()=>{})),[i,o,a,r,[{name:"Gaia's Fall",type:{en:"a place to discuss and organize",ru:"место для общения и организации"},link:"https://discord.libsoc.org",description:{en:"Gaia's Fall is a server that promotes Solarpunk ideals, environmentalism, anarchism, and anti-capitalism. We encourage civil debates, discussions of theories and possibilities, and the creation of communities focused on shaping a better world. It is our official Discord server where we organize and work together.",ru:"Gaia's Fall — это сервер, который продвигает идеалы соларпанка, защиту окружающей среды, анархизм и антикапитализм. Мы поощряем гражданские дебаты, обсуждение теорий и возможностей, а также создание сообществ, сосредоточенных на формировании лучшего мира. Это наш официальный сервер Discord, на котором мы организуемся и работаем вместе"},logo:"gaias_fall"}]]}class F extends e{constructor(e){super(),this.shadowRoot.innerHTML="",t(this,{target:this.shadowRoot,props:n(this.attributes),customElement:!0},D,z,o,{},null),e&&e.target&&i(e.target,this,e.anchor)}}customElements.define("partners-component",F);export{F as default}; diff --git a/Server/public/js/components/select-component.js b/Server/public/js/components/select-component.js index 96e24ca..dfe17e8 100644 --- a/Server/public/js/components/select-component.js +++ b/Server/public/js/components/select-component.js @@ -1 +1 @@ -import{S as t,i as e,a as r,b as i,l as o,s as n,e as l,n as s,d as a,h as d,o as u,t as c,c as h,f as p,m as f,g as m,p as v,q as b,j as g,r as w}from"./index-95aedb1a.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}; +import{S as t,i as e,a as r,b as i,q 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,r as f,l as m,u as v,m as b,p as g,v as w}from"./index-ce8c147b.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}; diff --git a/Server/public/js/components/switch-component.js b/Server/public/js/components/switch-component.js index a777ece..85268f2 100644 --- a/Server/public/js/components/switch-component.js +++ b/Server/public/js/components/switch-component.js @@ -1 +1 @@ -import{S as t,i as e,a as s,b as c,l as a,s as i,e as r,c as o,n as h,d as n,g as l,p as d,h as p,v as u,o as b}from"./index-95aedb1a.js";import"../../../../../../../../../js/libraries/miscTools.js";function k(t){let e,s,a,i,b,k;return{c(){e=r("label"),s=r("input"),a=o(),i=r("span"),this.c=h,n(s,"type","checkbox"),n(i,"class","switch-span"),n(e,"class","switch")},m(r,o){c(r,e,o),l(e,s),s.checked=t[0],l(e,a),l(e,i),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&&p(e),b=!1,u(k)}}}function g(t,e,s){let{callback:c=null}=e,{checked:a=!1}=e;const i=()=>{setTimeout((()=>{null!=c?(s(0,a=!a),c()):i()}),100)};return b((()=>{})),t.$$set=t=>{"callback"in t&&s(2,c=t.callback),"checked"in t&&s(0,a=t.checked)},[a,function(){null!=c&&(s(0,a=!a),c())},c,i,function(){a=this.checked,s(0,a)}]}class m extends t{constructor(t){super(),this.shadowRoot.innerHTML="",e(this,{target:this.shadowRoot,props:s(this.attributes),customElement:!0},g,k,i,{callback:2,checked:0,toggle:3},null),t&&(t.target&&c(t.target,this,t.anchor),t.props&&(this.$set(t.props),a()))}static get observedAttributes(){return["callback","checked","toggle"]}get callback(){return this.$$.ctx[2]}set callback(t){this.$$set({callback:t}),a()}get checked(){return this.$$.ctx[0]}set checked(t){this.$$set({checked:t}),a()}get toggle(){return this.$$.ctx[3]}}customElements.define("switch-component",m);export{m as default}; +import{S as t,i as e,a as s,b as c,q as i,s as a,f as r,g as o,n as h,h as n,l,u as d,d as u,x as p,o as b}from"./index-ce8c147b.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}; diff --git a/Server/public/js/coops.js b/Server/public/js/coops.js index e437090..8fd8d9e 100644 --- a/Server/public/js/coops.js +++ b/Server/public/js/coops.js @@ -2,46 +2,88 @@ export let coops = [ { logo: "chiron_logo", name: "Chiron Health", - location: ["Estonia, Kohtla-Järve",[59.40338782864918, 27.286240058760324]], - market: "wellness and health", + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.40338782864918, 27.286240058760324]], + market: { + en: "wellness and health", + ru: "благополучие и здоровье" + }, workers: 2, - status: "launch in 2 months", + status: { + en: "launch in 2 months", + ru: "запуск через 2 месяца" + }, website: "chrn.health", - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"], - description: "Chiron Health is a health platform providing courses and services on the topics of nutrition, exercise, sleep and mental wellbeing.", + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }], + description: { + en: "Chiron Health is a health platform providing courses and services on the topics of nutrition, exercise, sleep and mental wellbeing.", + ru: "Chiron Health — это платформа о здоровье, предлагающая курсы и услуги по вопросам питания, физических упражнений, сна и психического благополучия" + } }, { logo: "kuusk_logo", name: "Kuusk", - location: ["Estonia, Kohtla-Järve",[59.405466538976185, 27.289104862336302]], - market: "herbal teas", + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.405466538976185, 27.289104862336302]], + market: { + en: "herbal teas", + ru: "травяные чаи" + }, workers: 1, - status: "launch in TBD months", + status: { + en: "launch in TBD months", + ru: "запуск через X месяцев" + }, website: "-", - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"], - description: "Kuusk is an online store that sells herbal teas from exclusively local wild plants, as well as an online gathering course.", + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }], + description: { + en: "Kuusk is an online store that sells herbal teas from exclusively local wild plants, as well as an online gathering course.", + ru: "Kuusk — интернет-магазин, в котором продаются травяные чаи исключительно из местных дикорастущих растений, а также онлайн-курс по собирательству." + } } ] -export function addMarkersCoops(map) { +export function addMarkersCoops(map,content,locale) { for (let g of coops) { let coordinates let text = "" for (let field in g) { - let fieldText = "" + field[0].toUpperCase() + field.slice(1) + ": " + "" + let fieldText + if (field!="logo") { + fieldText = content[field] + ": " + } if (field=="logo") { text += "logo" + "
    " } else if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + "
    " + text += fieldText + "" + g.contact[1][locale[0]] + "" + "
    " } else if (field=="website") { text += fieldText + "" + g.website + "" + "
    " } else if (field=="location") { - text += fieldText + g[field][0] + "
    " + text += fieldText + g[field][0][locale[0]] + "
    " coordinates = g[field][1] } + else if (field=="market" || field=="status" || field=="description") { + text += fieldText + g[field][locale[0]] + "
    " + } else { text += fieldText + g[field] + "
    " } diff --git a/Server/public/js/groups.js b/Server/public/js/groups.js index 80140b5..f80af0c 100644 --- a/Server/public/js/groups.js +++ b/Server/public/js/groups.js @@ -1,37 +1,73 @@ export let groups = [ { - location: ["Denmark, Copenhagen",[55.6840661150132, 12.557133959514688]], + location: [ + { + en: "Denmark, Copenhagen", + ru: "Дания, Копенгаген" + }, + [55.6840661150132, 12.557133959514688]], members: 1, - contact: ["https://discord.gg/xAPZmyr8B6","Discord invite link"] + contact: ["https://discord.gg/xAPZmyr8B6", + { + en: "WhatsApp invite link", + ru: "Discord ссылка" + }] }, { - location: ["Estonia, Kohtla-Järve",[59.40629447076191, 27.280605339416322]], + location: [ + { + en: "Estonia, Kohtla-Järve", + ru: "Эстония, Кохтла-Ярве" + }, + [59.40629447076191, 27.280605339416322]], members: 3, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, { - location: ["Greece, Athens",[37.94877252621736, 23.677622972996158]], + location: [ + { + en: "Greece, Athens", + ru: "Греция, Афины" + }, + [37.94877252621736, 23.677622972996158]], members: 1, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, { - location: ["Latvia, Riga",[56.94748425529816, 24.003027136431925]], + location: [ + { + en: "Latvia, Riga", + ru: "Латвия, Рига" + }, + [56.94748425529816, 24.003027136431925]], members: 2, - contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh","WhatsApp invite link"] + contact: ["https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh", + { + en: "WhatsApp invite link", + ru: "WhatsApp ссылка" + }] }, ] -export function addMarkersGroups(map) { +export function addMarkersGroups(map,content,locale) { for (let g of groups) { let coordinates let text = "" for (let field in g) { - let fieldText = field[0].toUpperCase() + field.slice(1) + ": " + let fieldText = content[field] + ": " if (field=="contact") { - text += fieldText + "" + g.contact[1] + "" + text += fieldText + "" + g.contact[1][locale[0]] + "" } else if (field=="location") { - text += fieldText + g[field][0] + "
    " + text += fieldText + g[field][0][locale[0]] + "
    " coordinates = g[field][1] } else { diff --git a/Server/public/js/libraries/serverTools.js b/Server/public/js/libraries/serverTools.js index 65c2ae3..72037f0 100644 --- a/Server/public/js/libraries/serverTools.js +++ b/Server/public/js/libraries/serverTools.js @@ -62,3 +62,47 @@ export function sendText(route,data,callback) { xhr.send(data) } +function onlyUnique(value, index, array) { + return array.indexOf(value) === index; +} + +export function loadLocaleContent(content,componentName,loaded,callback) { + let langs + let localesAvailable + let locale = localStorage.getItem("locale") + if (locale==null) { + langs = navigator.languages.map(x => x.split("-")[0]).filter(onlyUnique) + } + getData("/locales/available.json",function(response) { + if (locale!=null) { + getData("/locales/" + locale + "/" + componentName + ".json" ,function(response) { + let parsed = JSON.parse(response) + content.set(parsed) + if (callback!=undefined) { + callback(locale) + } + loaded = 1 + }) + } + else { + localesAvailable = JSON.parse(response) + for (let lang of langs) { + if (localesAvailable.includes(lang)) { + getData("/locales/" + lang + "/" + componentName + ".json" ,function(response) { + let parsed = JSON.parse(response) + content.set(parsed) + if (callback!=undefined) { + callback(locale) + } + loaded = 1 + }) + } + break + } + } + }) +} + +export function getLocale(locale,lang) { + locale[0] = lang +} \ No newline at end of file diff --git a/Server/public/locales/available.json b/Server/public/locales/available.json new file mode 100644 index 0000000..29b6e3b --- /dev/null +++ b/Server/public/locales/available.json @@ -0,0 +1 @@ +["en","ru"] \ No newline at end of file diff --git a/Server/public/locales/en/communities-component.json b/Server/public/locales/en/communities-component.json new file mode 100644 index 0000000..9f43b00 --- /dev/null +++ b/Server/public/locales/en/communities-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Communities", + "p1": "We establish libertarian socialist communities by buying land, housing and the means of production which are then owned by the members of these communities. There is no private property within the communities and, therefore, exploitation and suffering that comes with it. Decisions are made using direct democracy with a focus on consensus, ensuring that each community member has power over decisions that affect their life. Communities try to establish their own cooperatives in order to finance their development becoming financially independent and sustainable, which allows for their survival and growth. Within communities the gift economy is utilized whenever possible. Each community is a small beacon of socialism within the dark capitalist world showing us how good life can be if only we achieve our goal.", + "subheading1": "Our Communities", + "subheading2": "Europe", + "location": "Location", + "status": "Status", + "members": "Members", + "contact": "Contact" +} \ No newline at end of file diff --git a/Server/public/locales/en/cooperatives-component.json b/Server/public/locales/en/cooperatives-component.json new file mode 100644 index 0000000..b4641c1 --- /dev/null +++ b/Server/public/locales/en/cooperatives-component.json @@ -0,0 +1,15 @@ +{ + "heading": "Cooperatives", + "p1": "We establish worker cooperatives, which is a business model where employees own and control the enterprise. Each worker has a voice in decision-making, and profits are distributed based on individual contributions. This participatory structure fosters ownership, motivation, and job satisfaction, creating a more fulfilling work experience as well as challenging the wealth concentration in traditional capitalist businesses.", + "p2": "By focusing on employees' needs, our cooperatives create supportive and sustainable work environments that foster social cohesion and job security. We also prioritize the interests of local communities, taking a long-term perspective. With workers making decisions, we avoid harmful short-term profit-driven strategies and instead reinvest our profits, contributing to community development and resilience.", + "subheading1": "Our Cooperatives", + "subheading2": "Europe", + "name": "Name", + "location": "Location", + "market": "Market", + "status": "Status", + "workers": "Workers", + "contact": "Contact", + "description": "Description", + "website": "Website" +} \ No newline at end of file diff --git a/Server/public/locales/en/footer-component.json b/Server/public/locales/en/footer-component.json new file mode 100644 index 0000000..62fe3cb --- /dev/null +++ b/Server/public/locales/en/footer-component.json @@ -0,0 +1,5 @@ +{ + "contactUs": "Contact Us", + "inviteLink": "invite link", + "libertarianSocialists": "Libertarian Socialists" +} \ No newline at end of file diff --git a/Server/public/locales/en/groups-component copy.json b/Server/public/locales/en/groups-component copy.json new file mode 100644 index 0000000..7ebf7d1 --- /dev/null +++ b/Server/public/locales/en/groups-component copy.json @@ -0,0 +1,10 @@ +{ + "heading": "Groups", + "p1": "We aim to raise awareness about the negative impact of current politico-economic systems on our well-being. Through education, community engagement, and analysis, we reveal the flaws and inequalities in capitalist societies. By highlighting these issues, we empower people to question the status quo and imagine fairer and more sustainable alternatives.", + "p2": "But our mission goes beyond theory. We engage in mutual aid and collective action to address immediate challenges within capitalism. Through mutual aid, we support each other by sharing resources, knowledge, and skills, fostering solidarity and resilience. Whether it's community gardens, food cooperatives, or support networks, our goal is to make life under capitalism more bearable and create pockets of resistance and alternatives within the system.", + "subheading1": "Our Groups", + "subheading2": "Europe", + "location": "Location", + "members": "Members", + "contact": "Contact" +} \ No newline at end of file diff --git a/Server/public/locales/en/groups-component.json b/Server/public/locales/en/groups-component.json new file mode 100644 index 0000000..6477a45 --- /dev/null +++ b/Server/public/locales/en/groups-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Groups", + "p1": "We aim to raise awareness about the negative impact of current politico-economic systems on our well-being. By highlighting these issues, we empower people to question the status quo and imagine fairer and more sustainable alternatives.", + "p2": "But our mission goes beyond theory. We engage in mutual aid and collective action to address immediate challenges within capitalism. Through mutual aid, we support each other by sharing resources, knowledge, and skills, fostering solidarity and resilience. Whether it's community gardens, food cooperatives, or support networks, our goal is to make life under capitalism more bearable and create pockets of resistance and alternatives within the system.", + "subheading1": "Our Groups", + "subheading2": "Europe", + "location": "Location", + "members": "Members", + "contact": "Contact" +} \ No newline at end of file diff --git a/Server/public/locales/en/join-us-component.json b/Server/public/locales/en/join-us-component.json new file mode 100644 index 0000000..f1ce788 --- /dev/null +++ b/Server/public/locales/en/join-us-component.json @@ -0,0 +1,24 @@ +{ + "heading": "Join Us", + "condition1": "Are you against dictatorship and in favor of democracy?", + "condition2": "Are you against exploitation of one human being by another?", + "condition3": "Do you agree that we should work with each other and not against each other?", + "conditionsOutcome": "If the answer is YES, then you are already a libertarian socialist. JOIN US!", + "subheading1": "What You Will Get", + "valueProposition1": "A community that is always ready to help with all your troubles;", + "valueProposition2": "Access to the means of production of our cooperatives;", + "valueProposition3": "Products and services at the cost of production or even for free;", + "valueProposition4": "Monetary and non-monetary help with opening your own cooperative;", + "valueProposition5": "and much more!", + "subheading2": "Find Us", + "findOur": "Find our", + "group": "group", + "community": "community", + "or": "or", + "cooperative": "cooperative", + "nearYou": "near you and join to help make a world we both envision a reality.", + "noneNear": "None of them near you? Not a problem! Join our", + "WhatsAppGroup": "WhatsApp group", + "DiscordServer": "Discord server", + "helpStart": " and we will help you start your own." +} \ No newline at end of file diff --git a/Server/public/locales/en/landing-component.json b/Server/public/locales/en/landing-component.json new file mode 100644 index 0000000..9e2d2e7 --- /dev/null +++ b/Server/public/locales/en/landing-component.json @@ -0,0 +1,9 @@ +{ + "top": "We are people united around a singular cause: bringing down authoritarian exploitative systems represented by various forms of capitalism and replacing them with libertarian socialist systems, with the goal of creating a more equitable and democratic world.", + "groupsTitle": "GROUPS", + "groupsText": "We organize groups for the purposes of education, advocacy, and mutual aid. Our objective is to demonstrate to people how the current politico-economic systems detrimentally impact our well-being, present them with alternative approaches, and engage in mutual aid to alleviate the challenges of living under capitalism.", + "communitiesTitle": "COMMUNITIES", + "communitiesText": "We establish communities based on libertarian socialist principles, where communities have ownership of their land, houses, and the means of production as well as make decisions using direct democracy. We are gradually expanding our socialist world, one community at a time.", + "cooperativesTitle": "COOPERATIVES", + "cooperativesText": "We form worker cooperatives to finance the operations of our groups and communities. Recognizing that economic power influences political power, we consider the establishment of cooperatives to be one of the initial steps towards achieving socialism." +} \ No newline at end of file diff --git a/Server/public/locales/en/navbar-component.json b/Server/public/locales/en/navbar-component.json new file mode 100644 index 0000000..275329b --- /dev/null +++ b/Server/public/locales/en/navbar-component.json @@ -0,0 +1,9 @@ +{ + "orgName": "Libertarian socialists", + "manifesto": "Manifesto", + "joinUs": "Join Us", + "groups": "Groups", + "communities": "Communities", + "cooperatives": "Cooperatives", + "partners": "Partners" +} \ No newline at end of file diff --git a/Server/public/locales/en/partners-component.json b/Server/public/locales/en/partners-component.json new file mode 100644 index 0000000..0914fee --- /dev/null +++ b/Server/public/locales/en/partners-component.json @@ -0,0 +1,11 @@ +{ + "heading": "Partners", + "p1": "We partner with organizations and initiatives that align with our mission. Together, we are a united force driven by a shared worldview where there is no place for authoritarian exploitative systems, but where systems promoting equity and democracy thrive.", + "subheading1": "Our Partners", + "subheading2": "Online", + "name": "Name", + "location": "Location", + "type": "Type", + "link": "Link", + "description": "Description" +} \ No newline at end of file diff --git a/Server/public/locales/ru/communities-component.json b/Server/public/locales/ru/communities-component.json new file mode 100644 index 0000000..e3d413c --- /dev/null +++ b/Server/public/locales/ru/communities-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Коммуны", + "p1": "Мы создаем либертарные социалистические коммуны, покупая землю, жилье и средства производства, которые затем принадлежат членам этих коммун. В коммунах нет частной собственности и, следовательно, эксплуатации и страданий, которые с ней связаны. Решения принимаются с использованием прямой демократии с упором на консенсус, гарантируя, что каждый член сообщества имеет право принимать решения, влияющие на его жизнь. Сообщества пытаются создавать свои собственные кооперативы, чтобы финансировать свое развитие, становясь финансово независимыми и устойчивыми, что позволяет им выживать и расти. В сообществах по возможности используется экономика дарения. Каждая коммуна — это маленький маяк социализма в темном капиталистическом мире, показывающий нам, насколько хорошей может быть жизнь, если мы только достигнем своей цели.", + "subheading1": "Наши коммуны", + "subheading2": "Европа", + "location": "Локация", + "status": "Статус", + "members": "Участники", + "contact": "Контакт" +} \ No newline at end of file diff --git a/Server/public/locales/ru/cooperatives-component copy.json b/Server/public/locales/ru/cooperatives-component copy.json new file mode 100644 index 0000000..1acb08a --- /dev/null +++ b/Server/public/locales/ru/cooperatives-component copy.json @@ -0,0 +1,15 @@ +{ + "heading": "Cooperatives", + "p1": "We establish worker cooperatives that embody a transformative business model where employees own and control the enterprise. Each worker has a voice in decision-making, and profits are distributed based on individual contributions. This participatory structure fosters ownership, motivation, and job satisfaction, creating a more fulfilling work experience as well as challenging the wealth concentration in traditional capitalist businesses.", + "p2": "By focusing on employees' needs, our cooperatives create supportive and sustainable work environments that foster social cohesion and job security. We also prioritize the interests of local communities, taking a long-term perspective. With workers making decisions, we avoid harmful short-term profit-driven strategies and instead reinvest our profits, contributing to community development and resilience.", + "subheading1": "Our Cooperatives", + "subheading2": "Europe", + "name": "Name", + "location": "Location", + "market": "Market", + "status": "Status", + "workers": "workers", + "contact": "Contact", + "description": "Description", + "website": "Website" +} \ No newline at end of file diff --git a/Server/public/locales/ru/cooperatives-component.json b/Server/public/locales/ru/cooperatives-component.json new file mode 100644 index 0000000..5363c0c --- /dev/null +++ b/Server/public/locales/ru/cooperatives-component.json @@ -0,0 +1,15 @@ +{ + "heading": "Кооперативы", + "p1": "Мы создаем рабочие кооперативы, которые представляют собой бизнес-модель, в которой работники владеют предприятием и контролируют его. Каждый работник имеет право голоса при принятии решений, а прибыль распределяется на основе индивидуальных вкладов. Эта структура способствует мотивации и удовлетворенности работой, создавая более приятные условия труда, а также бросает вызов концентрации богатства в традиционных капиталистических предприятиях.", + "p2": "Сосредоточив внимание на потребностях сотрудников, наши кооперативы создают благоприятную и устойчивую рабочую среду, которая способствует социальной сплоченности и гарантиям занятости. Мы также уделяем первостепенное внимание интересам местных сообществ, ориентируясь на долгосрочную перспективу. Когда решения принимают работники, мы избегаем вредных краткосрочных стратегий, ориентированных на получение прибыли, и вместо этого реинвестируем нашу прибыль, способствуя развитию и устойчивости сообщества.", + "subheading1": "Наши кооперативы", + "subheading2": "Европа", + "name": "Название", + "location": "Локация", + "market": "Рынок", + "status": "Статус", + "workers": "Работники", + "contact": "Контакт", + "description": "Описание", + "website": "Вебсайт" +} \ No newline at end of file diff --git a/Server/public/locales/ru/footer-component.json b/Server/public/locales/ru/footer-component.json new file mode 100644 index 0000000..bb20acd --- /dev/null +++ b/Server/public/locales/ru/footer-component.json @@ -0,0 +1,5 @@ +{ + "contactUs": "Напиши нам", + "inviteLink": "ссылка", + "libertarianSocialists": "Либертарные Социалисты" +} \ No newline at end of file diff --git a/Server/public/locales/ru/groups-component.json b/Server/public/locales/ru/groups-component.json new file mode 100644 index 0000000..3670abb --- /dev/null +++ b/Server/public/locales/ru/groups-component.json @@ -0,0 +1,10 @@ +{ + "heading": "Группы", + "p1": "Мы стремимся повышать осведомленность о негативном влиянии нынешних политико-экономических систем на наше благополучие. Выдвигая на первый план эти проблемы, мы даем людям возможность поставить под сомнение статус-кво и представить себе более справедливые и устойчивые альтернативы.", + "p2": "Однако, наша миссия выходит за рамки теории. Мы участвуем во взаимопомощи и коллективных действиях для решения насущных проблем. Посредством взаимопомощи мы поддерживаем друг друга, делясь ресурсами, знаниями и навыками, укрепляя солидарность и устойчивость к негодам. Будь то общественные сады, продовольственные кооперативы или сети поддержки, наша цель — сделать жизнь при капитализме более терпимой и создать очаги сопротивления и альтернативы внутри системы.", + "subheading1": "Наши группы", + "subheading2": "Европа", + "location": "Локация", + "members": "Участники", + "contact": "Контакт" +} \ No newline at end of file diff --git a/Server/public/locales/ru/join-us-component.json b/Server/public/locales/ru/join-us-component.json new file mode 100644 index 0000000..991286d --- /dev/null +++ b/Server/public/locales/ru/join-us-component.json @@ -0,0 +1,24 @@ +{ + "heading": "Присоединяйся", + "condition1": "Ты против диктатуры и за демократию?", + "condition2": "Ты против эксплуатации одного человека другим?", + "condition3": "Ты согласен, что мы должны работать с друг другом, а не против друг друга?", + "conditionsOutcome": "Если твой ответ ДА, то ты уже лебиртарный социалист. Присоединяйся!", + "subheading1": "Что ты получишь", + "valueProposition1": "Сообщество, которое всегда готово прийти к тебе на помощь;", + "valueProposition2": "Доступ к средствам производства наших кооперативов;", + "valueProposition3": "Продукты и сервис за стоимость производства или бесплатно;", + "valueProposition4": "Денежная и другая помощь для открытия кооператива;", + "valueProposition5": "и многое другое!", + "subheading2": "Найди нас", + "findOur": "Найди нашу", + "group": "группу", + "community": "коммуну", + "or": "или", + "cooperative": "кооператив", + "nearYou": "около тебя и присоединяйся для того, чтобы сделать тот мир, о котором мы все мечтаем, реальностью.", + "noneNear": "Ни одного из них около тебя нет? Не проблема! Присоединяйся к нашей", + "WhatsAppGroup": "WhatsApp группе", + "DiscordServer": "Discord серверу", + "helpStart": " и мы поможем тебе создать создать свои." +} \ No newline at end of file diff --git a/Server/public/locales/ru/landing-component.json b/Server/public/locales/ru/landing-component.json new file mode 100644 index 0000000..57c1662 --- /dev/null +++ b/Server/public/locales/ru/landing-component.json @@ -0,0 +1,9 @@ +{ + "top": "Мы люди, объединенные одной целью: свержение авторитарных эксплуататорских систем, представленных различными формами капитализма, и замена их либертарными социалистическими системами с целью создания более справедливого и демократического мира.", + "groupsTitle": "ГРУППЫ", + "groupsText": "Мы организуем группы в целях образования, защиты наших интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные варианты и заниматься взаимопомощью, чтобы сделать жизнь при капитализме легче.", + "communitiesTitle": "КОММУНЫ", + "communitiesText": "Мы создаем коммуны на основе либертарных социалистических принципов, где члены коммун владеют своей землей, домами и средствами производства, а также принимают решения, используя прямую демократию. Мы постепенно, по одной коммуне, расширяем наш социалистический мир.", + "cooperativesTitle": "КООПЕРАТИВЫ", + "cooperativesText": "Мы формируем рабочие кооперативы для финансирования операций наших групп и коммун. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму." +} \ No newline at end of file diff --git a/Server/public/locales/ru/navbar-component.json b/Server/public/locales/ru/navbar-component.json new file mode 100644 index 0000000..b8a1c54 --- /dev/null +++ b/Server/public/locales/ru/navbar-component.json @@ -0,0 +1,9 @@ +{ + "orgName": "Либертарные социалисты", + "manifesto": "Манифест", + "joinUs": "Присоединяйся", + "groups": "Группы", + "communities": "Сообщества", + "cooperatives": "Кооперативы", + "partners": "Партнеры" +} \ No newline at end of file diff --git a/Server/public/locales/ru/partners-component.json b/Server/public/locales/ru/partners-component.json new file mode 100644 index 0000000..033efcc --- /dev/null +++ b/Server/public/locales/ru/partners-component.json @@ -0,0 +1,11 @@ +{ + "heading": "Партнеры", + "p1": "Мы сотрудничаем с организациями и инициативами, которые соответствуют нашей миссии. Вместе мы являемся единой силой, движимой общим мировоззрением, где нет места авторитарным эксплуататорским системам, но где процветают системы, продвигающие справедливость и демократию.", + "subheading1": "Наши партнеры", + "subheading2": "Онлайн", + "name": "Название", + "location": "Локация", + "type": "Тип", + "link": "Ссылка", + "description": "Описание" +} \ No newline at end of file diff --git a/Server/routes.jl b/Server/routes.jl index 853f65e..78ddb06 100644 --- a/Server/routes.jl +++ b/Server/routes.jl @@ -17,5 +17,5 @@ route("/cooperatives", BasicController.cooperatives, named = :cooperatives) route("/communities", BasicController.communities, named = :communities) -route("/affiliates", BasicController.affiliates, named = :affiliates) +route("/partners", BasicController.partners, named = :partners)