{"version":3,"sources":["Components/NavLink.js","Pages/LandingPage.module.css","Components/FooterLink.module.css","Components/Footer.module.css","Pages/LandingPage.js","Pages/Privacy.js","Pages/ToC.js","Components/DesktopNav.js","Components/Footer.js","App.js","serviceWorker.js","index.js","utils.js"],"names":["NavLink","propOnClick","onClick","children","to","scroll","style","includes","setImmediate","scrollToTop","onClick_","smooth","scrollTo","className","Link","activeClassName","ActiveLink","location","pathname","document","hash","module","exports","LandingPage","position","minHeight","Arrow","ArrowTip","Privacy","href","Toc","DesktopNav","Footer","Wrapper","Content","id","Title","List","linkStyles","rel","Badge","src","alt","About","Date","getFullYear","Copyright","App","Helmet","lang","defaultTitle","titleTemplate","name","concent","Route","path","exact","component","ToC","Boolean","window","hostname","match","smoothscroll","polyfill","ReactDOM","render","getElementById","navigator","serviceWorker","ready","then","registration","unregister","delay","setTimeout","top","left","behavior","element","offset","duration","scrollToElement"],"mappings":"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","file":"static/js/main.22db1fe7.chunk.js","sourcesContent":["import React from 'react'\nimport { NavHashLink } from 'react-router-hash-link'\nimport { scrollToTop, scrollTo } from '../utils.js'\n\nconst NavLink = ({\n onClick: propOnClick,\n children,\n to,\n scroll,\n style = {},\n}) => {\n const onClick = to.includes('#') ? () => {} : () => setImmediate(scrollToTop)\n const onClick_ = propOnClick\n ? () => {\n propOnClick()\n onClick()\n }\n : onClick\n return (\n \n {children}\n \n )\n}\n\nexport default NavLink\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Arrow\":\"LandingPage_Arrow__3CFCF\",\"ArrowTip\":\"LandingPage_ArrowTip__7LE0J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Link\":\"FooterLink_Link__27zNc\",\"ActiveLink\":\"FooterLink_ActiveLink__-ZEs9 FooterLink_Link__27zNc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"Footer_Wrapper__3IZnA\",\"Copyright\":\"Footer_Copyright__3BkjK\",\"Content\":\"Footer_Content__2kS2C\",\"About\":\"Footer_About__31E0R\",\"ContactBlock\":\"Footer_ContactBlock__1nXJO\",\"Badge\":\"Footer_Badge__3nVC3\"};","import React from 'react'\nimport NavLink from '../Components/NavLink'\nimport style from './LandingPage.module.css'\n\nconst LandingPage = () => {\n return (\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n )\n}\n\nexport default LandingPage\n","import React from 'react'\n\nconst Privacy = () => {\n return (\n
\n
\n
\n

Privacy Policy for The Code Boutique, LLC

\n\n

\n At codeboutique.com, accessible from https://www.codeboutique.com,\n one of our main priorities is the privacy of our visitors. This\n Privacy Policy document contains types of information that is\n collected and recorded by codeboutique.com and how we use it.\n

\n\n

\n If you have additional questions or require more information about\n our Privacy Policy, do not hesitate to contact us through email at\n privacy@codeboutique.com\n

\n\n

General Data Protection Regulation (GDPR)

\n

\n We are a Data Controller of your information. If you'd like to learn\n more about GDPR and your rights under GDPR, please read the{' '}\n \n GDPR guide\n \n .\n

\n\n

\n The Code Boutique, LLC legal basis for collecting and using the\n personal information described in this Privacy Policy depends on the\n Personal Information we collect and the specific context in which we\n collect the information:\n

\n
    \n
  • The Code Boutique, LLC needs to perform a contract with you
  • \n
  • You have given The Code Boutique, LLC permission to do so
  • \n
  • \n Processing your personal information is in The Code Boutique, LLC\n legitimate interests\n
  • \n
  • The Code Boutique, LLC needs to comply with the law
  • \n
\n\n

\n The Code Boutique, LLC will retain your personal information only\n for as long as is necessary for the purposes set out in this Privacy\n Policy. We will retain and use your information to the extent\n necessary to comply with our legal obligations, resolve disputes,\n and enforce our policies.\n

\n\n

\n If you are a resident of the European Economic Area (EEA), you have\n certain data protection rights. If you wish to be informed what\n Personal Information we hold about you and if you want it to be\n removed from our systems, please contact us.\n

\n

\n In certain circumstances, you have the following data protection\n rights:\n

\n
    \n
  • \n The right to access, update or to delete the information we have\n on you.\n
  • \n
  • The right of rectification.
  • \n
  • The right to object.
  • \n
  • The right of restriction.
  • \n
  • The right to data portability
  • \n
  • The right to withdraw consent
  • \n
\n\n

Log Files

\n\n

\n codeboutique.com follows a standard procedure of using log files.\n These files log visitors when they visit websites. All hosting\n companies do this and a part of hosting services' analytics. The\n information collected by log files include internet protocol (IP)\n addresses, browser type, Internet Service Provider (ISP), date and\n time stamp, referring/exit pages, and possibly the number of clicks.\n These are not linked to any information that is personally\n identifiable. The purpose of the information is for analyzing\n trends, administering the site, tracking users' movement on the\n website, and gathering demographic information.\n

\n\n

Cookies and Web Beacons

\n\n

\n Like any other website, codeboutique.com uses 'cookies'. These\n cookies are used to store information including visitors'\n preferences, and the pages on the website that the visitor accessed\n or visited. The information is used to optimize the users'\n experience by customizing our web page content based on visitors'\n browser type and/or other information.\n

\n\n

\n You can learn how to manage cookies on your web browser by following\n the{' '}\n \n Browser Cookies Guide\n \n .\n

\n\n

Privacy Policies

\n\n

\n You may consult this list to find the Privacy Policy for each of the\n advertising partners of codeboutique.com.\n

\n\n

\n Third-party ad servers or ad networks uses technologies like\n cookies, JavaScript, or Web Beacons that are used in their\n respective advertisements and links that appear on codeboutique.com,\n which are sent directly to users' browser. They automatically\n receive your IP address when this occurs. These technologies are\n used to measure the effectiveness of their advertising campaigns\n and/or to personalize the advertising content that you see on\n websites that you visit.\n

\n\n

\n Note that codeboutique.com has no access to or control over these\n cookies that are used by third-party advertisers.\n

\n\n

Third Pary Privacy Policies

\n\n

\n codeboutique.com's Privacy Policy does not apply to other\n advertisers or websites. Thus, we are advising you to consult the\n respective Privacy Policies of these third-party ad servers for more\n detailed information. It may include their practices and\n instructions about how to opt-out of certain options. You may find a\n complete list of these Privacy Policies and their links here:\n Privacy Policy Links.\n

\n\n

\n You can choose to disable cookies through your individual browser\n options. To know more detailed information about cookie management\n with specific web browsers, it can be found at the browsers'\n respective websites. What Are Cookies?\n

\n\n

Children's Information

\n\n

\n Another part of our priority is adding protection for children while\n using the internet. We encourage parents and guardians to observe,\n participate in, and/or monitor and guide their online activity.\n

\n\n

\n codeboutique.com does not knowingly collect any Personal\n Identifiable Information from children under the age of 13. If you\n think that your child provided this kind of information on our\n website, we strongly encourage you to contact us immediately and we\n will do our best efforts to promptly remove such information from\n our records.\n

\n\n

Online Privacy Policy Only

\n\n

\n Our Privacy Policy created at GDPRPrivacyPolicy.net) applies only to\n our online activities and is valid for visitors to our website with\n regards to the information that they shared and/or collect in\n codeboutique.com. This policy is not applicable to any information\n collected offline or via channels other than this website.{' '}\n Our GDPR Privacy Policy{' '}\n was generated from the GDPR Privacy Policy Generator.\n

\n\n

Consent

\n\n

\n By using our website, you hereby consent to our Privacy Policy and\n agree to its terms.\n

\n
\n
\n
\n )\n}\n\nexport default Privacy\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\nimport { scrollToTop } from '../utils.js'\n\nconst Toc = () => {\n return (\n
\n
\n
\n

Terms and Conditions for The Code Boutique, LLC

\n\n

Introduction

\n\n

\n These Website Standard Terms and Conditions written on this webpage\n shall manage your use of our website, codeboutique.com accessible at\n https://www.codeboutique.com.\n

\n\n

\n These Terms will be applied fully and affect to your use of this\n Website. By using this Website, you agreed to accept all terms and\n conditions written in here. You must not use this Website if you\n disagree with any of these Website Standard Terms and Conditions.\n Our Terms and Conditions have been generated at{' '}\n \n Terms And Conditions Template\n {' '}\n website.\n

\n\n

\n Minors or people below 18 years old are not allowed to use this\n Website.\n

\n\n

Intellectual Property Rights

\n\n

\n Other than the content you own, under these Terms, The Code\n Boutique, LLC and/or its licensors own all the intellectual property\n rights and materials contained in this Website.\n

\n\n

\n You are granted limited license only for purposes of viewing the\n material contained on this Website.\n

\n\n

Restrictions

\n\n

You are specifically restricted from all of the following:

\n\n
    \n
  • publishing any Website material in any other media;
  • \n
  • \n selling, sublicensing and/or otherwise commercializing any Website\n material;\n
  • \n
  • publicly performing and/or showing any Website material;
  • \n
  • \n using this Website in any way that is or may be damaging to this\n Website;\n
  • \n
  • \n using this Website in any way that impacts user access to this\n Website;\n
  • \n
  • \n using this Website contrary to applicable laws and regulations, or\n in any way may cause harm to the Website, or to any person or\n business entity;\n
  • \n
  • \n engaging in any data mining, data harvesting, data extracting or\n any other similar activity in relation to this Website;\n
  • \n
  • \n using this Website to engage in any advertising or marketing.\n
  • \n
\n\n

\n Certain areas of this Website are restricted from being access by\n you and The Code Boutique, LLC may further restrict access by you to\n any areas of this Website, at any time, in absolute discretion. Any\n user ID and password you may have for this Website are confidential\n and you must maintain confidentiality as well.\n

\n\n

Your Content

\n\n

\n In these Website Standard Terms and Conditions, \"Your Content\" shall\n mean any audio, video text, images or other material you choose to\n display on this Website. By displaying Your Content, you grant The\n Code Boutique, LLC a non-exclusive, worldwide irrevocable, sub\n licensable license to use, reproduce, adapt, publish, translate and\n distribute it in any and all media.\n

\n\n

Your Privacy

\n\n

\n Please read{' '}\n \n our Privacy Policy\n \n .\n

\n\n

\n Your Content must be your own and must not be invading any\n third-party’s rights. The Code Boutique, LLC reserves the right to\n remove any of Your Content from this Website at any time without\n notice.\n

\n\n

No warranties

\n\n

\n This Website is provided \"as is,\" with all faults, and The Code\n Boutique, LLC express no representations or warranties, of any kind\n related to this Website or the materials contained on this Website.\n Also, nothing contained on this Website shall be interpreted as\n advising you.\n

\n\n

Limitation of liability

\n\n

\n In no event shall The Code Boutique, LLC, nor any of its officers,\n directors and employees, shall be held liable for anything arising\n out of or in any way connected with your use of this Website whether\n such liability is under contract. The Code Boutique, LLC, including\n its officers, directors and employees shall not be held liable for\n any indirect, consequential or special liability arising out of or\n in any way related to your use of this Website.\n

\n\n

Indemnification

\n\n

\n You hereby indemnify to the fullest extent The Code Boutique, LLC\n from and against any and/or all liabilities, costs, demands, causes\n of action, damages and expenses arising in any way related to your\n breach of any of the provisions of these Terms.\n

\n\n

Severability

\n\n

\n If any provision of these Terms is found to be invalid under any\n applicable law, such provisions shall be deleted without affecting\n the remaining provisions herein.\n

\n\n

Variation of Terms

\n\n

\n The Code Boutique, LLC is permitted to revise these Terms at any\n time as it sees fit, and by using this Website you are expected to\n review these Terms on a regular basis.\n

\n\n

Assignment

\n\n

\n The The Code Boutique, LLC is allowed to assign, transfer, and\n subcontract its rights and/or obligations under these Terms without\n any notification. However, you are not allowed to assign, transfer,\n or subcontract any of your rights and/or obligations under these\n Terms.\n

\n\n

Entire Agreement

\n\n

\n These Terms constitute the entire agreement between The Code\n Boutique, LLC and you in relation to your use of this Website, and\n supersede all prior agreements and understandings.\n

\n\n

Governing Law & Jurisdiction

\n

\n These Terms will be governed by and interpreted in accordance with\n the laws of the State of us, and you submit to the non-exclusive\n jurisdiction of the state and federal courts located in us for the\n resolution of any disputes.\n

\n
\n
\n
\n )\n}\n\nexport default Toc\n","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport './DesktopNav.css'\nimport { scrollToTop } from '../utils.js'\n\nconst DesktopNav = () => {\n return (\n \n )\n}\n\nexport default DesktopNav\n","import React from 'react'\nimport style from './Footer.module.css'\nimport FooterLink from './NavLink.js'\nimport linkStyles from './FooterLink.module.css'\n\nconst Footer = () => (\n
\n
\n \n\n
\n
Address
\n
\n The Code Boutique, LLC\n
\n Michael Bøcker-Larsen sole member\n
\n 347 5th ave ste 1402-382\n
\n New York, NY 10016\n
\n United States\n
\n
\n\n
\n
About
\n

\n The Code Boutique is{' '}\n \n Michael Bøcker-Larsen\n {' '}\n at the helm. Mostly working alone but often in collaboration with\n senior developers, drawing expertice where it is needed. We opened\n shop more than {new Date().getFullYear() - 2010} years ago.\n

\n
\n
\n\n
\n © 2010 - {new Date().getFullYear()} The Code Boutique, LLC\n
\n
\n)\n\nexport default Footer\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport './App.css'\nimport LandingPage from './Pages/LandingPage.js'\nimport Privacy from './Pages/Privacy.js'\nimport ToC from './Pages/ToC.js'\nimport DesktopNav from './Components/DesktopNav.js'\nimport Footer from './Components/Footer.js'\nimport { BrowserRouter as Router, Route } from 'react-router-dom'\n\nconst App = () => {\n return (\n \n
\n \n \n \n \n \n \n \n
\n
\n
\n )\n}\n\nexport default App\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\n\nimport smoothscroll from 'smoothscroll-polyfill'\nsmoothscroll.polyfill()\n\nReactDOM.render(, document.getElementById('root'))\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","import scrollToElement from 'scroll-to-element'\n\nexport function scrollToTop(delay = 200) {\n setTimeout(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n })\n }, delay)\n}\n\nexport function scrollTo(element, offset = -120, duration = 300) {\n scrollToElement(element, { offset, duration })\n}\n"],"sourceRoot":""}