{"version":3,"sources":["images/Logo.png","images/Arrowhead-Up.png","images/Location-Marker.png","images/profile.jpg","images/Contact.png","images/Mail.png","images/LinkedIn.png","Navigation.jsx","Branding.jsx","ReturnHeader.jsx","LocationHeader.jsx","Contact.jsx","Legal.jsx","App.js","index.js"],"names":["module","exports","executeScrollHome","executeScrollAbout","executeScrollContact","navRef","Navbar","fixed","className","variant","expand","ref","Container","Brand","onClick","Toggle","aria-controls","Collapse","id","Nav","Link","styles","backgroundColor","fontFamily","marginBottom","lineHeight","fontSize","fontWeight","position","maxHeight","maxWidth","width","executeScroll","Jumbotron","style","src","logo","alt","Button","varient","size","title","textAlign","verticalAlign","marginRight","opacity","arrowUp","padding","location","marginLeft","ContactForm","setFormSubmitted","useState","name","setName","email","setEmail","message","setMessage","token","setToken","Form","onSubmit","event","preventDefault","Spinner","animation","role","fetch","process","method","body","JSON","stringify","then","res","status","catch","error","Group","Label","Control","required","type","placeholder","value","onChange","ev","target","Text","as","rows","sitekey","disabled","OfficeAddress","LocationHeader","contactRef","formSubmitted","Row","Col","ReturnHeader","paddingTop","paddingBottom","paddingLeft","paddingRight","color","background","border","textDecoration","cursor","show","setShow","handleClose","Modal","onHide","Header","closeButton","Title","Body","Footer","minWidth","float","fontStyle","marginTop","scrollToTop","window","scrollTo","AboutMe","AboutEngineering","AboutTechnology","quotes","aboutInfos","about","engineering","technology","FocusAreas","setCurrentQuote","setAbout","updateAbout","quote","aboutInfo","md","TechnologySummary","Table","striped","bordered","hover","colSpan","AboutSection","children","aboutRef","profile","contact","href","mail","linkedin","scrollToRef","current","offsetTop","clientHeight","App","currentQuote","currentAbout","useRef","Navigation","Branding","Contact","Legal","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.919127b8.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Logo.a14319de.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADnSURBVFhH7ZZBCoMwEEXTnsIj5BAew7tnkQO4cOHCpYs0oZlpOv5YjQspzIeH+A38R5HiwxgTIrflma+3RQVUQAX+W8Baa/q+z3ftSf+Ep4njYRzHsCxLiBLwzEFguQuNUy5KwLJK13XBe5+nP5nnuVUClpA07pzLk9s0/hKw3IDG13UN0zTlu3caJGD5RW18GIbN+5ByUgKWzN44nbkoAUtGvnBynKhJyHMAWDJlauMEkkDnBLBkKL/GCSmBzghgyaQcHSdKCfRcAEvm7DhBEuiZAJZMyziRJFBfop/lKqACKnCzgDEvqRacue5ftaEAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGASURBVFhH7ZexjoJAEIbn7igsTGwsLCgpKCktKHgAHsDCR7G49/ABgPgExpKCGBoSCgoKCgpNLCwtMJnbJXOn8QZYaSzkTz5Z/93JjJPdJX4AAApepk96vkxDAUMBQwG9CtB1HdbrNaRpClmWged5YJomzT4veREpIxLh+XzGR10uF3Qch43pgDUbiaKIUiKWZYl5ntM3xKIocDQasXEtsCaLaD2lQgzDEDVNq/3NZkMu4nw+/xfXxlN7wDAMGgEkSQLX67Ue7/f7+il1v0ZVbGUc4/EYq6qqf+npdMLFYoGu69at/5XcI1xsC6zZyH27HxXHMRvTAWs2Irsgjh+lvOlwOOBsNmNjOmDNVpbLJaW9abVasWsVYM1WZBfkub+X2HzsWgVYs5Pdbkepsb4LuDUq9H4XBEFAIwDf92nUT2xlXUyn078jaVkWu0YR1lRC3obyDuDmVPkSH9+CXppMJnA8HmG73ZLTT2xlKsh3g23b7Jwqw/+CoYChgHcvAOAHIcVEwmbk+4UAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/profile.0976e9a3.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGGSURBVFhH7ZehjsJAEIb/u0MgEIQgkA0GRAWibwAPgEAgEE14CQTiPK9AgqigCRKJIASJQGJIQJJQV9G6vd25PTdwu+0liOuffOzsdJL5O7Sb9A2AkLxM73p9mQoDhYHCgLWBarWK6XSKw+GASqWis9llZaBer+N4PKLVasHzPIxGI30lu6wMDIdDOI6DNE1pPx6Pac0rdRQbsVgshNLlchHr9Zpi13XZWlMyPYRqCufzGfP5HNfrVWezi3XG8TMBpV6vx9bYYjWBKIp0BJTLZR3lk5WB3W6nI6Db7eoov9jRcMi7FnEc019wv99pz9XZYDUB9fqFYUixOhPUa/kXYp09otPp0ASU5KEkSqUSW2fKh/z5lBjrdrtBmkC73Uaj0UCz2YT0gs1mg1qthu12qyvNxTp7hmwukiT5HoPUarWifcbngk3+ymQy0e0FNV8ulxT7vs/WP4FNGjGbzaipUhAEtO73e7b2CWzSmMFgQE1PpxOdlP1+n617RPFdUBgoDPx3A8AX8auP/uzHgrIAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEHSURBVFhH7ZVBDkRAEEXLxNIl7BzBwjFcwHkcxTG4h6WlhQUJSY/KtE5P+eiMTGz6JT/4i6oXkRYQkVrzGC99fQwv4AW8gBdwOgnLsqQ8z/WTG03TUFEUtCyLbo5hgcOkaarCMFRVVSlX6rpWURSpJEngTBFYmgzDoLIsc5awl3ddB2eKwNKEcZWQyxk0UwSWJhtXEmg5g2aKwNLEZhxHtX6MO4ltOQv2fa/bD2imCCxNJPM8f0nYy/ktSdBMEViaIGyJs+UMmikCS5MjNomz5QyaaefyIPrMwPAhM00TrW9BN3uCgFccc0vAhdsCbdvqu9+I41jfYS4F/o3/HXsBL+AFHhYgegMvrUKV/zm9DQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFhSURBVFhH7Zcxq4JQFMf/z7c6NCgYOAYt+R3aFWroA7j0HWoTmtsbhD6ALoF7i67aEER7uw0ODoEvbyfeq/T1wAsO7/7gj8dzD/pHzz3iB4DiqtaQ6NgawoAwIAy8nQOKomA8HuNyucD3fWRZRiv8KA3UyvO84s56va6saaK3r6DX61EEDAYDivhS6ewuy7KKw+FQJEnC4qqaJmr9W/DWwGw2Q7/fZ3EURXBdlzXlaDRiuZLpdArbtmGaJnRdRxiGWC6XOJ1OVPE7D4/kWdvtllrwuwkdx6HMjZ+NeidN00LTtJfrPYvLHJhMJi/bs9PpYLFY0Fk9XAysViuoqgrDMLDf7ykLDIdDiurhYmA+nyPPc3bzIAgo+7iF6+Bi4Hw+UwQcj0eK/gYXA00QBlo38HmVcwur6Xa7bKLtdjs2CeM4Znu87PoyV2qz2VA1IMsyJEmqXKtC/BcIA8LAfzcAfAE3Aey+v8tbHQAAAABJRU5ErkJggg==\"","import React from \"react\";\r\n\r\nimport Container from \"react-bootstrap/Container\";\r\nimport { Nav, Navbar } from \"react-bootstrap\";\r\n\r\nexport default ({\r\n executeScrollHome,\r\n executeScrollAbout,\r\n executeScrollContact,\r\n navRef,\r\n}) => (\r\n \r\n \r\n \r\n Rookery Technology Ltd\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\n\r\nimport Jumbotron from \"react-bootstrap/Jumbotron\";\r\nimport Container from \"react-bootstrap/Container\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\nimport logo from \"./images/Logo.png\";\r\n\r\nconst styles = {\r\n jumbotron: () => ({\r\n backgroundColor: \"transparent\",\r\n fontFamily: \"Calibri, sans-serif\",\r\n marginBottom: \"-50px\",\r\n }),\r\n jumbotronMessage: () => ({\r\n lineHeight: \"1.4\",\r\n fontSize: \"21px\",\r\n fontWeight: \"200\",\r\n }),\r\n logoBoxing: () => ({\r\n position: \"relative\",\r\n maxHeight: \"100%\",\r\n maxWidth: \"100%\",\r\n width: \"auto\",\r\n }),\r\n logo: () => ({\r\n maxHeight: \"100%\",\r\n maxWidth: \"100%\",\r\n width: \"auto\",\r\n marginBottom: \"20px\",\r\n }),\r\n};\r\n\r\nexport default ({ executeScroll }) => (\r\n
\r\n \r\n \r\n
\r\n \"Logo\"\r\n \r\n Enquiries »\r\n \r\n
\r\n

\r\n Software services and consulting to find innovative solutions to\r\n complex business and technical challenges.\r\n
\r\n Customer focused, quality driven, Windows® and embedded software\r\n development.\r\n

\r\n
\r\n
\r\n
\r\n);\r\n","import React from \"react\";\r\n\r\nimport arrowUp from \"./images/Arrowhead-Up.png\";\r\n\r\nexport default ({ title, executeScroll }) => (\r\n

\r\n
\r\n \r\n {title}\r\n
\r\n

\r\n);\r\n","import React from \"react\";\r\n\r\nimport location from \"./images/Location-Marker.png\";\r\n\r\nexport default () => (\r\n

\r\n
\r\n \r\n Rookery Technology Offices\r\n
\r\n

\r\n);\r\n","import React, { useState } from \"react\";\r\n\r\nimport { Container, Row, Col } from \"react-bootstrap\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport Spinner from \"react-bootstrap/Spinner\";\r\n\r\nimport ReturnHeader from \"./ReturnHeader\";\r\nimport LocationHeader from \"./LocationHeader\";\r\n\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\n\r\nconst styles = {\r\n officeAddress: () => ({\r\n marginLeft: \"15px\",\r\n }),\r\n contactForm: () => ({\r\n width: \"80%\",\r\n }),\r\n};\r\n\r\nconst ContactForm = ({ setFormSubmitted }) => {\r\n const [name, setName] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const [token, setToken] = useState(\"\");\r\n\r\n const handleSubmit = (event) => {\r\n event.preventDefault();\r\n\r\n setFormSubmitted(\r\n
\r\n \r\n Sending...\r\n \r\n \r\n Sending...\r\n \r\n
\r\n );\r\n\r\n fetch(\r\n `https://rookery-contact-sender.azurewebsites.net/api/SendContactRequest?code=${process.env.REACT_APP_AZURE_FUNC_KEY}`,\r\n {\r\n method: \"POST\",\r\n body: JSON.stringify({ name, email, message, token }),\r\n }\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n /*OK*/ setFormSubmitted(\r\n

Thank you for your query. I will be in touch soon.

\r\n );\r\n } else {\r\n setFormSubmitted(\r\n

\r\n Something went wrong. Please try the direct contact information\r\n above.\r\n

\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n setFormSubmitted(\r\n

\r\n Something went wrong. Please try the direct contact information\r\n above.\r\n

\r\n );\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n Name:\r\n setName(ev.target.value)}\r\n />\r\n \r\n \r\n Email Address:\r\n setEmail(ev.target.value)}\r\n />\r\n \r\n We'll never share your email with anyone else.\r\n \r\n \r\n \r\n Message:\r\n setMessage(ev.target.value)}\r\n />\r\n \r\n setToken(value)}\r\n />\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst OfficeAddress = () => (\r\n
\r\n \r\n

Oxfordshire

\r\n
\r\n 15 Pipit Lane\r\n
\r\n Witney, OX28 6NU\r\n
\r\n

Telephone: 07833 298547

\r\n
\r\n);\r\n\r\nexport default ({ contactRef, executeScrollHome }) => {\r\n const [formSubmitted, setFormSubmitted] = useState(null);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {!formSubmitted ? (\r\n \r\n ) : (\r\n <>{formSubmitted}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport Button from 'react-bootstrap/Button';\r\n\r\nconst styles = ({\r\n footer: () => ({\r\n paddingTop: \"10px\",\r\n paddingBottom: \"20px\",\r\n paddingLeft: \"15px\",\r\n paddingRight: \"15px\",\r\n color: \"darkgray\",\r\n textAlign: \"center\",\r\n fontSize: \"x-small\",\r\n }), \r\n privacyLink: () => ({\r\n background: \"transparent\",\r\n border: \"none\",\r\n padding: \"0!important\",\r\n textDecoration: \"underline\",\r\n cursor: \"pointer\",\r\n }),\r\n });\r\n\r\nexport default () => {\r\n const [show, setShow] = useState(false);\r\n\r\n const handleClose = () => setShow(false);\r\n const handleShow = () => setShow(true);\r\n\r\n return (\r\n <>\r\n \r\n \r\n Privacy Policy\r\n \r\n \r\n

Rookery Technology collects data on clients and people who enquire about its services. \r\n The information collected consists of names, job titles and contact email addresses. These data are stored in secure cloud based services and are \r\n only accessible by the company director. The information will be kept as long as the company has a reasonable expectation that it may have \r\n future interaction with that client.

\r\n

To request access to the data we hold about you or to ask us to remove it, please contact chris.hockey@rookerytechnology.co.uk.

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, useRef } from 'react';\r\n\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport Button from 'react-bootstrap/Button';\r\nimport Table from 'react-bootstrap/Table';\r\n\r\nimport Navigation from './Navigation'\r\nimport Branding from './Branding'\r\nimport ContactInformation from './Contact'\r\nimport Legal from './Legal'\r\nimport ReturnHeader from './ReturnHeader'\r\n\r\nimport './App.css';\r\n\r\nimport profile from './images/profile.jpg';\r\nimport contact from './images/Contact.png';\r\nimport mail from './images/Mail.png';\r\nimport linkedin from './images/LinkedIn.png';\r\n\r\nconst styles = ({\r\n profile: () => ({\r\n width: \"33.333333%\",\r\n minWidth: \"320px\",\r\n float: \"left\",\r\n marginRight: \"30px\",\r\n fontSize: \"medium\",\r\n }),\r\n profileImage: () => ({\r\n maxHeight: \"100%\",\r\n maxWidth: \"100%\",\r\n width: \"auto\",\r\n opacity: \"0.9\",\r\n }),\r\n quote: () => ({\r\n fontSize: \"small\",\r\n fontStyle: \"italic\",\r\n }),\r\n aboutBody: () => ({\r\n marginTop: \"10px\",\r\n }),\r\n});\r\n\r\nconst scrollToTop = () => window.scrollTo(0,0);\r\n\r\nconst AboutMe = () => (\r\n <>\r\n

With over ten years experience of complex software development for Windows® and embedded platforms.

\r\n

I have worked as part of a highly focused, delivery driven, Scrum team. Practising Pair Programming and Test Driven Development, using tools like SpecFlow, Moq and MsTest.

\r\n

With strong hardware and software debugging skills, I provide an effective communication medium across the different disciplines within a product development team.

\r\n

I have experience of continuous integration and build automation using Azure DevOps and Git

\r\n\r\n

My commercial experience includes:

\r\n\r\n \r\n \r\n);\r\n\r\nconst AboutEngineering = () => (\r\n <>\r\n

With over ten years experience of complex software and firmware development in a manufacturing, engineering environment.

\r\n

I have developed firmware for microcontrollers including Atmel AVR, Cyrpess FX2LP, and ARM Cortex-M.

\r\n

I have experience of Structured Analysis and Design using Yourdon, and I have used TDD techniques in embedded system development.

\r\n

With strong hardware and software debugging skills, I provide an effective communication medium across the different disciplines within a product development team.

\r\n\r\n

My commercial experience includes:

\r\n\r\n \r\n \r\n);\r\n\r\nconst AboutTechnology = () => (\r\n <>\r\n

With over ten years experience of complex software development for Windows®, Linux and bare metal devices

\r\n

I have worked as part of multiple highly focused, delivery driven, Scrum teams. Using Behaviour Driven and Test Driven Development techniques.

\r\n

I have experience of continuous integration and build automation.

\r\n

I have a passion for new technology and drive to constantly improve myself through self learning and external training.

\r\n\r\n

My commercial experience includes:

\r\n\r\n \r\n\r\n

My latest technology interests include NodeJS, React and Azure Functions.

\r\n \r\n);\r\n\r\nconst quotes = {\r\n about: \"I am passionate about producing high quality solutions\",\r\n engineering: \"I have an interest in software development from high level application architecture to low level firmware implementation.\",\r\n technology: \"I am a champion of new technologies\",\r\n};\r\n\r\nconst aboutInfos = {\r\n about: ,\r\n engineering: ,\r\n technology: ,\r\n};\r\n\r\nconst FocusAreas = ({ setCurrentQuote, setAbout, executeScroll }) => {\r\n\r\n const updateAbout = (quote, aboutInfo) => {\r\n setCurrentQuote(quote);\r\n setAbout(aboutInfo);\r\n executeScroll();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n

Customer focused

\r\n

\r\n Comfortable working in a Agile Scrum environment. Highly motivated, reliable and focused on delivering real customer value.\r\n Quality delivery using the latest in behaviour and test driven development techniques.\r\n

\r\n \r\n \r\n \r\n

Engineering specialist

\r\n

\r\n Highly experienced in scientific and engineering industry applications, understanding the complexity this involves.\r\n From multi-threaded, device interfacing software to bare metal microcontrolller firmware development.\r\n

\r\n \r\n \r\n \r\n

Technology enthusiast

\r\n

\r\n Evolving with the latest software engineering practices. Development using the latest Microsoft technologies.\r\n Experience with continuous integration and build automation.\r\n

\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst TechnologySummary = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TECHNICAL SUMMARY
C/C++RTOS, LinuxTDD, BDD
C# .NETUSB, Bluetooth, BLE, SPI, I2C, UARTSpecFlow, Moq, MsTest, Catch2
WPFNodeJS, ReactEntity framework
Microcontrollers\r\n
    \r\n
  • ARM Cortex-M
  • \r\n
  • Nordic nRF
  • \r\n
  • Atmel AVR
  • \r\n
  • 8051 variants
  • \r\n
\r\n
Yourdon Structured Analysis
UML
Visual studio
Git
\r\n);\r\n\r\nconst AboutSection = ({ quote, children, aboutRef }) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {children}\r\n
\r\n \r\n
\r\n
\r\n
\r\n);\r\n\r\nconst scrollToRef = (ref, navRef) => {\r\n window.scrollTo(0, ref.current.offsetTop - navRef.current.clientHeight);\r\n};\r\n\r\nconst App = () => {\r\n const [currentQuote, setCurrentQuote] = useState(quotes.about);\r\n const [currentAbout, setAbout] = useState();\r\n\r\n const aboutRef = useRef(null);\r\n const contactRef = useRef(null);\r\n const navRef = useRef(null);\r\n\r\n const executeScrollAbout = () => scrollToRef(aboutRef, navRef);\r\n const executeScrollContact = () => scrollToRef(contactRef, navRef);\r\n\r\n return (<>\r\n \r\n \r\n \r\n {currentAbout}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\n\r\n// Importing the Bootstrap CSS\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n\r\nimport App from './App';\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n"],"sourceRoot":""}