{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/veckoanvisningar/kursvecka-13/utmaningar",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1dv025"}},"mdx":{"fields":{"id":"4f7e368f-57a5-5a5d-8185-610498eece47","title":"Utmaningar","slug":"/veckoanvisningar/kursvecka-13/utmaningar"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Utmaningar\",\n  \"metaTitle\": \"1DV025 | Utmaningar kursvecka 13\",\n  \"metaDescription\": \"metaDescription\",\n  \"order\": 4\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h3\", null, \"F13-01: What is \\\"wrong\\\" with the given code?\\u200B\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Shadow-DOMs should always be in mode \\\"close\\\"\\u200B.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"We have external dependencies\\u200B.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Anonymous classes can not be used when creating components\\u200B.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Components should extend HTMLComponent\\u200B.\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"...\\u200B\\n\\ncustomElements.define('my-component',\\u200B\\n  class extends HTMLElement {\\u200B\\n    constructor () {\\u200B\\n      super()\\u200B\\n  \\u200B\\n      this.attachShadow({ mode: 'open' })\\u200B\\n        .appendChild(template.content.cloneNode(true))\\u200B\\n\\n      let textElements = document.querySelectorAll('p')\\u200B\\n\\n      ...\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Svar\"), mdx(\"p\", null, \"  Nummer 2. Vi har yttre beroenden mot DOM:en genom att vi anv\\xE4nder document.querySelector. Vi ska aldrig referera domen utanf\\xF6r v\\xE5r egen komponent. (D\\xE4remot \\xE4r det ok att anv\\xE4nda document.createElement)\")), mdx(\"h3\", null, \"F13-02: The Timer\"), mdx(\"p\", null, \"Givet tv\\xE5, av varandra oberoende element, my-timer och button. N\\xE4r anv\\xE4ndaren klickar p\\xE5 knappen s\\xE5 ska timern stoppas. \\u200B\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://gitlab.lnu.se/1dv025/content/coursesite/-/raw/main/content/veckoanvisningar/kursvecka-13/resurser/utmaning01.png\",\n    \"alt\": \"Index.js innehållandes två av varandra oberoende komponenter. En klockkomponent och en knapp döpt button\"\n  }), \"\\n\\u200B\\nVilken konstruktion \\xE4r l\\xE4mpligast att anv\\xE4nda?\\u200B\\n\\u200B\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Knappen b\\xE4ddas in i timerkomponenten.\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Knappen anropar timerns publika metod \\\"stop\\\".\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Timern lyssnar p\\xE5 knappens \\\"click\\\"-h\\xE4ndelse vars hanterarfunktion anropar timerns publika metod \\\"stop\\\".\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"I index.js finns kod som lyssnar p\\xE5 knappens \\\"click\\\"-h\\xE4ndelse vars hanterarfunktion anropar timerns publika metod \\\"stop\\\".\\u200B\")), mdx(\"details\", null, mdx(\"summary\", null, \"Svar\"), mdx(\"p\", null, \"  Nummer 1 skulle fungera men faller p\\xE5 att vi \\xF6nskar att komponenterna ska vara oberoende av varandra.\", mdx(\"br\", null), \"\\nNummer 2 \\xE4r ol\\xE4mpligt \\xE4ven om det skulle fungera. En komponent b\\xF6r inte k\\xE4nna till sin omgivning. Denna l\\xF6sning inneb\\xE4r att timern f\\xE5r ett yttre beronende mot knappen och d\\xE4rmed inte kan fungera om inte knappen finns d\\xE4r.\", mdx(\"br\", null), \"\\nNummer 3 \\xE4r i princip samma l\\xF6sning som 2.\", mdx(\"br\", null), \"\\nNummer 4 \\xE4r l\\xE4mpligt. Nu beh\\xF6ver inte knappen k\\xE4nna till timern och timern beh\\xF6ver inte k\\xE4nna till knappen. Ist\\xE4llet \\\"limmar\\\" index.js (eller en omslutande komponent) ihop l\\xF6sningen.\", mdx(\"br\", null))), mdx(\"h3\", null, \"F13-03: The Game\"), mdx(\"p\", null, \"Ett spel inneh\\xE5ller brickor. \\u200B\"), mdx(\"p\", null, \"Vid spelets slut ska samtliga brickors framsida visas.\\u200B\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://gitlab.lnu.se/1dv025/content/coursesite/-/raw/main/content/veckoanvisningar/kursvecka-13/resurser/utmaning02.png\",\n    \"alt\": \"Index.js innehållande komponenten \\\"the-game\\\". Denna komponent innehåller i sin tur sex spelbrickor, döpta \\\"game-tile\\\" \"\n  })), mdx(\"p\", null, \"Vilket \\xE4r det l\\xE4mpligaste s\\xE4ttet att \\xE5stadkomma detta?\\u200B\\n\\u200B\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Brickorna lyssnar p\\xE5 spelets h\\xE4ndelse \\\"gameover\\\" \\u200Boch v\\xE4nder sig sj\\xE4lva.\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Spelet anropar respektive brickas metod \\\"flip\\\" \\u200Bf\\xF6r att v\\xE4nda p\\xE5 brickan.\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Spelet v\\xE4nder brickorna genom att s\\xE4tta attributet \\\"flipped\\\".\\u200B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Spelkomponenten utl\\xF6ser h\\xE4ndelsen \\\"gameover\\\", varp\\xE5 index.js f\\xE5ngar h\\xE4ndelsen, s\\xF6ker ut samtliga brickor och ser till att de v\\xE4nds.\\u200B\")), mdx(\"p\", null, \"\\u200B\"), mdx(\"details\", null, mdx(\"summary\", null, \"Svar\"), mdx(\"p\", null, \"  .1. G\\xE5r givetvis att f\\xE5 att fungera, men nu har vi \\xE5terigen ett beroende p\\xE5 fel h\\xE5ll. Barnen ska inte beh\\xF6va k\\xE4nna till sin f\\xF6r\\xE4lder. Det \\xE4r b\\xE4ttre att f\\xF6r\\xE4ldern talar om f\\xF6r barnet vad det ska g\\xF6ra.\", mdx(\"br\", null), \"\\n.2. Absolut en v\\xE4g att g\\xE5. Detta fungerar men....\", mdx(\"br\", null), \"\\n.3. ... att kommunicera detta via ett attribut \\xE4r l\\xE4mpligare d\\xE5 vi efterliknar det normala beteendet i HTML.\", mdx(\"br\", null), \"\\n.4. Det \\xE4r inte s\\xE4kert att detta ens fungerar f\\xF6r det f\\xF6ruts\\xE4tter att brickorna \\xE4r \\xE5tkomliga via den normala DOMen och inte \\xE4r inb\\xE4ddade i spelets shadowDOM.\", mdx(\"br\", null))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#f13-01-what-is-wrong-with-the-given-code","title":"F13-01: What is \"wrong\" with the given code?​"},{"url":"#f13-02-the-timer","title":"F13-02: The Timer"},{"url":"#f13-03-the-game","title":"F13-03: The Game"}]},"parent":{"relativePath":"veckoanvisningar/kursvecka-13/utmaningar.md"},"frontmatter":{"metaTitle":"1DV025 | Utmaningar kursvecka 13","metaDescription":"metaDescription","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/examinationsuppgifter","title":"Examinationsuppgifter"}}},{"node":{"fields":{"slug":"/samlingar","title":"Samlingar"}}},{"node":{"fields":{"slug":"/","title":"Webbprogrammering på klientsidan (1DV025) - en kurs med JavaScript i fokus"}}},{"node":{"fields":{"slug":"/sandbox/basic-elements","title":"Basic elements"}}},{"node":{"fields":{"slug":"/sandbox/code","title":"Code"}}},{"node":{"fields":{"slug":"/sandbox/exercise","title":"Exercises"}}},{"node":{"fields":{"slug":"/sandbox/frontmatter","title":"Frontmatter"}}},{"node":{"fields":{"slug":"/sandbox/hint","title":"Hint"}}},{"node":{"fields":{"slug":"/sandbox","title":"Sandbox"}}},{"node":{"fields":{"slug":"/sandbox/markdown-import","title":"Imported markdown"}}},{"node":{"fields":{"slug":"/sandbox/mermaid","title":"Mermaid"}}},{"node":{"fields":{"slug":"/sandbox/tabs","title":"Tabs"}}},{"node":{"fields":{"slug":"/sandbox/youtube","title":"YouTube"}}},{"node":{"fields":{"slug":"/studieguide/examination","title":"Examination"}}},{"node":{"fields":{"slug":"/studieguide/forvantningar","title":"Förväntningar"}}},{"node":{"fields":{"slug":"/studieguide","title":"Studieguide"}}},{"node":{"fields":{"slug":"/studieguide/kommunikationsstrategi","title":"Kommunikationsstrategi"}}},{"node":{"fields":{"slug":"/studieguide/kursledning","title":"Kursledning"}}},{"node":{"fields":{"slug":"/studieguide/kursvardering","title":"Kursvärdering"}}},{"node":{"fields":{"slug":"/studieguide/larresurser","title":"Lärresurser"}}},{"node":{"fields":{"slug":"/studieguide/registrering","title":"Registrering"}}},{"node":{"fields":{"slug":"/studieguide/valkommen","title":"🎉 Välkommen!"}}},{"node":{"fields":{"slug":"/veckoanvisningar","title":"Veckoanvisningar"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a1","title":"A1 - Online-test"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a3-tjugoett","title":"A3 - Tjugoett"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a","title":"Delkurs A"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a2-beskrivande-statistik","title":"A2 - Beskrivande statistik"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b1","title":"B1 - Online-test"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b","title":"Delkurs B"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b2","title":"B2 - The Quiz app"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om","title":"Om examination"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/kom-igang","title":"Kom igång med en uppgift"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/inlamning-via-mr","title":"Inlämning via Merge request"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/muntlig-examination","title":"Muntlig examination"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/guider","title":"Guider"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a","title":"Delkurs A"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/ovningar","title":"Övningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/inspelningar","title":"Stödjande inspelningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b/ovningar","title":"Övningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/guide-nodejs","title":"Guide - Node.js"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01","title":"Kursvecka 1 - Satser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/guide-ovningsuppgifter","title":"Guide - Övningsuppgift"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/guide-vscode","title":"Guide - VSCode"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02","title":"Kursvecka 2 - Funktioner, moduler"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b3","title":"B3 - PWD"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/examinationsuppgift","title":"Guide - Examinationsuppgift"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03","title":"Kursvecka 3 - Styrstrukturer"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/guide-jsdoc","title":"Guide - JSDoc"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04","title":"Kursvecka 4 - Arrayer"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05","title":"Kursvecka 5 - Objekt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06","title":"Kursvecka 6 - Klasser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07","title":"Kursvecka 7 - Arv"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08","title":"Kursvecka 8 - Webbläsaren"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09","title":"Kursvecka 9 - HTML-element"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/guide-jest-spec-name","title":"Guide - Så gör du när du inte vill köra alla tester varje gång"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10","title":"Kursvecka 10 - Webbkomponenter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11","title":"Kursvecka 11 - Händelser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12","title":"Kursvecka 12 - AsyncAwait"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13","title":"Kursvecka 13 - Komposition"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14","title":"Kursvecka 14 - Lagring"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15","title":"Kursvecka 15 - Installerbara PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16","title":"Kursvecka 16 - Pålitliga PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19","title":"Kursvecka 17-19 - Kapabla PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-20","title":"Kursvecka 20 - Examination"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-20/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/resurser/kom-igang","title":"Kom Igang"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/resurser/mr","title":"Mr"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/00-om-git","title":"Introduction"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/10-git","title":"Setting Up"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/12-commit-messages","title":"Commits best practice"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/12-multipla-datorer","title":"Multiple computers"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/14-multiple-git-user-configs","title":"Multiple Git User Configs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/16-ssh-troubleshoot","title":"SSH-keys troubleshooting"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/20-detta-hander-vid-git-kommandon","title":"Detta händer vid git-kommandon"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider","title":"Guide - Git versionshantering"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b","title":"Delkurs B"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b/inspelningar","title":"Stödjande inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/resurser/inspelningar","title":"Inspelningar"}}}]}},"pageContext":{"id":"4f7e368f-57a5-5a5d-8185-610498eece47"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}