(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ function getServerUrl() { return `${location.origin}${ location.origin.charAt(location.origin.length - 1) !== "/" ? "/" : "" }`; } module.exports = { getServerUrl, website_title: "Kuadrado website template", build: { protected_dirs: ["assets", "style", "articles"], default_meta_keys: ["title", "description", "image", "open_graph", "json_ld"], }, }; },{}],2:[function(require,module,exports){ const { getServerUrl } = require("./config"); module.exports = { images_url: `${getServerUrl()}assets/images/`, articles_url: `${getServerUrl()}articles/`, }; },{"./config":1}],3:[function(require,module,exports){ "use strict"; module.exports = { setRenderCycleRoot(renderCycleRoot) { this.renderCycleRoot = renderCycleRoot; }, objectToHtml: function objectToHtml(obj) { const { tag } = obj; const node = document.createElement(tag); const excludeKeys = ["tag", "contents", "style_rules", "state"]; Object.keys(obj) .filter(attr => !excludeKeys.includes(attr)) .forEach(attr => { if (attr === "class") { node.classList.add(...obj[attr].split(" ").filter(s => s !== "")); } else { node[attr] = obj[attr]; } }); if (obj.contents && typeof obj.contents === "string") { node.innerHTML = obj.contents; } else { obj.contents && obj.contents.length > 0 && obj.contents.forEach(el => { switch (typeof el) { case "string": node.innerHTML = el; break; case "object": node.appendChild(objectToHtml(el)); break; } }); } if (obj.style_rules) { Object.keys(obj.style_rules).forEach(rule => { node.style[rule] = obj.style_rules[rule]; }); } return node; }, renderCycle: function () { this.subRender(this.renderCycleRoot.render(), document.getElementsByTagName("main")[0], { mode: "replace", }); }, subRender(object, htmlNode, options = { mode: "append" }) { const insert = this.objectToHtml(object); switch (options.mode) { case "append": htmlNode.appendChild(insert); break; case "override": htmlNode.innerHTML = ""; htmlNode.appendChild(insert); break; case "insert-before": htmlNode.insertBefore(insert, htmlNode.childNodes[options.insertIndex]); break; case "adjacent": /** * options.insertLocation must be one of: * * afterbegin * afterend * beforebegin * beforeend */ htmlNode.insertAdjacentHTML(options.insertLocation, insert); break; case "replace": htmlNode.parentNode.replaceChild(insert, htmlNode); break; case "remove": htmlNode.remove(); break; } }, }; },{}],4:[function(require,module,exports){ "use strict"; class WebPage { constructor(args) { Object.assign(this, args); } } module.exports = WebPage; },{}],5:[function(require,module,exports){ "use strict"; const { images_url } = require("../../../constants"); const WebPage = require("../../lib/web-page"); // const GameStudioClub = require("./components/game-studio-club"); // const Popularization = require("./components/popularization"); const EDU_THEMES = [ { title: "Game Studio Club", description: "Conception, graphisme et animation, programmation, je vous accompagne dans la découverte des techniques pour créer un jeu vidéo de A à Z", image: "learning_theme_conception.png", pageUrl: "game-studio-club", }, { title: "Programmation", description: "Vous avez une idée de projet à réaliser en programmation ou vous êtes simplement curieux ? Apprenez à programmer avec différent langages, pour du web du logiciel ou du jeu vidéo.", image: "learning_theme_coding.png", pageUrl: "coding", }, { title: "Dessin numérique et animation 2D", description: "Maîtriser des logiciels libres de création graphique 2D et d'animation.", image: "learning_theme_2d.png", pageUrl: "2d", }, { title: "Maths et physiques", description: "Fâché avec les maths ? Aborder les notions fondamentales de façon décontractée pour le plaisir de comprendre.", image: "learning_theme_math.png", pageUrl: "math", }, { title: "Musique et sons électroniques", description: "Maîtriser des logiciels libres de composition musicales, de synthèse sonore et de prise de son.", image: "learning_theme_sound.png", pageUrl: "sound", }, { title: "Aide informatique générale", description: "Perdu avec votre ordinateur, les logicels, internet ? Je vous aide pas à pas à comprendre les fondamentaux et à utiliser sereinement la technologie.", image: "learning_theme_pc.png", pageUrl: "popularization" } ]; class EducationPage extends WebPage { render() { return { tag: "div", id: "education-page", typeof: "EducationalOrganization", contents: [ { tag: "div", class: "page-header logo-left", contents: [ { tag: "div", class: "page-contents-center grid-wrapper", contents: [ { tag: "div", class: "logo", contents: [ { tag: "img", alt: "image brain", src: `${images_url}brain.svg`, }, ], }, { tag: "h1", contents: "Pédagogie" }, { tag: "p", contents: `Animations autour de la création de jeux vidéos, vulgarisation numérique.`, }, ], }, ], }, { tag: "div", class: "title-banner", }, { tag: "div", class: "page-contents-center", contents: [ { tag: "p", class: "edu-pitch", contents: `La pédagogie est un des objectifs majeurs de Kuadrado Software. <br /> L'informatique est aujourd'hui un élément incontournable de notre société et j'ai la conviction qu'il est fondamental de pouvoir accéder de façon simple à une forme d'apprentissage et de partage de connaissances.<br /> Je propose donc des séances d'enseignement autour des sujets que je suis en position de transmettre en tant que développeur et artiste.` }, { tag: "ul", class: "edu-themes", contents: EDU_THEMES.map(theme => { return { tag: "li", class: "edu-theme", contents: [ { tag: "a", href: theme.pageUrl, contents: [ { tag: "h3", contents: theme.title }, { tag: "img", class: "pixelated", src: `${images_url}/${theme.image}` }, { tag: "p", contents: theme.description }, ] } ] } }) }, { tag: "div", contents: "Pour qui ? Tout le monde à partir de 12 ans, ados ou adultes." }, { tag: "div", contents: "Ou ça ? Dans mon local professionel 32 rue Simon Vialet Vernoux" }, { tag: "div", contents: "Tarfs: 60 bal par mois. Ou 30€/h pour des cours particuliers, visio possible." }, { tag: "div", contents: "Horaires: mardi 17h 18h30, mercredi 15h 16h30, jeudi 17h 18h30" }, { tag: "div", contents: "Matos informatique fournis sur place, on peut amener le sien si on veut." }, { tag: "div", contents: "Pour s'inscrire: Me contacter ou passer me voir. Télécharger le ficher d'inscription -> ici" } ] }, ], }; } } module.exports = EducationPage; },{"../../../constants":2,"../../lib/web-page":4}],6:[function(require,module,exports){ "use strict"; const runPage = require("../../run-page"); const EducationPage = require("./education"); runPage(EducationPage); },{"../../run-page":7,"./education":5}],7:[function(require,module,exports){ "use strict"; const objectHtmlRenderer = require("./lib/object-html-renderer"); const Template = require("./template/template"); module.exports = function runPage(PageComponent) { const template = new Template({ page: new PageComponent() }); objectHtmlRenderer.setRenderCycleRoot(template); objectHtmlRenderer.renderCycle(); }; },{"./lib/object-html-renderer":3,"./template/template":9}],8:[function(require,module,exports){ "use strict"; const { images_url } = require("../../../constants"); const NAV_MENU_ITEMS = [ ["/games/", "Jeux"], [ "/education/", "Pédagogie", [ // submenu ["/education/#game-studio-club", "Game Studio Club"], ["/education/#popularization", "Vulgarisation numérique"], ], ], ["/software-development/", "Software"], ]; class NavBar { constructor() { this.initEventHandlers(); } handleBurgerClick() { document.getElementById("nav-menu-list").classList.toggle("responsive-show"); } initEventHandlers() { window.addEventListener("click", event => { if ( event.target.id !== "nav-menu-list" && !event.target.classList.contains("burger") && !event.target.parentNode.classList.contains("burger") ) { document.getElementById("nav-menu-list").classList.remove("responsive-show"); } }); } renderHome() { return { tag: "div", class: "home", contents: [ { tag: "a", href: "/", contents: [ { tag: "img", alt: "Logo Kuadrado", src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", alt: "Kuadrado Software", class: "logo-text", src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, ], }; } renderMenu(menuItemsArray, isSubmenu = false) { return { tag: "ul", id: "nav-menu-list", class: isSubmenu ? "submenu" : "", contents: menuItemsArray.map(link => { const [href, text, submenu] = link; return { tag: "li", class: !isSubmenu && window.location.pathname === href ? "active" : "", contents: [ { tag: "a", href, contents: text, }, ].concat(submenu ? [this.renderMenu(submenu, true)] : []), }; }), }; } renderResponsiveBurger() { return { tag: "div", class: "burger", onclick: this.handleBurgerClick.bind(this), contents: [{ tag: "span", contents: "···" }], }; } render() { return { tag: "nav", contents: [ this.renderHome(), this.renderResponsiveBurger(), this.renderMenu(NAV_MENU_ITEMS), ], }; } } module.exports = NavBar; },{"../../../constants":2}],9:[function(require,module,exports){ "use strict"; const { in_construction } = require("../../config"); const { images_url } = require("../../constants"); const NavBar = require("./components/navbar"); class Template { constructor(props) { this.props = props; } render() { return { tag: "main", contents: [ { tag: "header", contents: [new NavBar().render()], }, in_construction && { tag: "section", class: "warning-banner", contents: [ { tag: "strong", class: "page-contents-center", contents: "Site en construction ...", }, ], }, { tag: "section", id: "page-container", contents: [this.props.page.render()], }, { tag: "footer", contents: [ { tag: "div", class: "logo", contents: [ { tag: "img", alt: `logo Kuadrado`, src: `${images_url}logo_kuadrado.svg`, }, { tag: "img", class: "text-logo", alt: "Kuadrado Software", src: `${images_url}logo_kuadrado_txt.svg`, }, ], }, { tag: "span", contents: "<b><blue>Où sommes-nous ? </blue></b>32 rue Simon Vialet, 07240 Vernoux en Vivarais. Ardèche, France", }, { tag: "div", contents: [ { tag: "strong", contents: "<blue>Nous contacter : </blue>" }, { tag: "a", href: "mailto:contact@kuadrado-software.fr", contents: "contact@kuadrado-software.fr", }, ], }, { tag: "div", class: "social", contents: [ { tag: "strong", contents: "<blue>Sur les réseaux : </blue>", }, { tag: "a", href: "https://www.linkedin.com/company/kuadrado-software", target: "_blank", contents: "in", title: "Linkedin", }, { tag: "a", href: "https://twitter.com/KuadradoSoft", target: "_blank", contents: "t", title: "Twitter", style_rules: { fontFamily: "serif" }, }, ], }, { tag: "span", contents: `Copyright © ${new Date() .getFullYear()} Kuadrado Software | Toutes les images du site ont été réalisées par mes soins et peuvent être réutilisées pour un usage personnel.`, }, ], }, ], }; } } module.exports = Template; },{"../../config":1,"../../constants":2,"./components/navbar":8}]},{},[6]);