diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ee8d20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +/node_modules \ No newline at end of file diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..2071dca --- /dev/null +++ b/css/main.css @@ -0,0 +1,514 @@ +section form input { + padding: 1rem; + outline: 0; + font-family: inherit; + font-size: 0.95em; +} + +section form, section #showData { + padding: 0.5rem; + margin: 10px auto; + border-radius: 1px; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: 'Open Sans', sans-serif; + text-rendering: optimizeSpeed; + image-rendering: pixelated; +} + +h2 { + color: #747a8a; + font-kerning: auto; + font-weight: 800; +} + +section form { + font-size: 16px; +} + +@media (min-width: 300px) and (max-width: 599px) { + section form { + width: 95%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + section form { + width: 95%; + } +} + +@media (min-width: 768px) and (max-width: 1110px) { + section form { + width: 95%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + section form { + width: 80%; + } +} + +@media (min-width: 1601px) { + section form { + width: 80%; + } +} + +section form input[type="submit"] { + background: #d5041f; + border-color: transparent; + color: #FFF; + cursor: pointer; +} + +section form input[type="submit"] :focus { + border: 0.1em solid #bdbdbd; +} + +@media (min-width: 300px) and (max-width: 599px) { + section form #searchBook { + width: 68%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + section form #searchBook { + width: 68%; + } +} + +@media (min-width: 768px) and (max-width: 1110px) { + section form #searchBook { + width: 68%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + section form #searchBook { + width: 70%; + } +} + +@media (min-width: 1601px) { + section form #searchBook { + width: 70%; + } +} + +section form #submit { + width: 28%; + margin-left: 0.6rem; +} + +section form input { + border: 1px solid #ea8300; + color: #ea8300; + font-family: inherit; + width: 100%; +} + +section form input[type="placeholder"] { + color: #fe6103; +} + +section form #submit { + background: #ea8300; + color: #FFF; + border: 0; + border-radius: 2px; + transition: .6s; + overflow: hidden; + text-decoration: none; +} + +section form #submit:focus { + outline: 0; +} + +section form #submit:before { + font-family: 'iconfont'; + content: "\ea2d"; + display: block; + position: absolute; + height: 100%; + left: 0; + top: 0; + opacity: .5; + filter: blur(30px); + transform: translateX(-100px) skewX(-15deg); +} + +section form #submit:after { + content: ''; + display: block; + position: absolute; + width: 30px; + height: 100%; + left: 30px; + top: 0; + opacity: 0; + filter: blur(5px); + transform: translateX(-100px) skewX(-15deg); +} + +section form #submit:hover { + background: #d5041f; + cursor: pointer; +} + +section #showData { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + background: #bababa; + width: 65rem; + font-size: 12px; +} + +section #showData > :nth-of-type(1) { + padding: 2rem; + width: 100%; +} + +section #showData > :nth-of-type(1) a { + color: #FFF; + text-decoration: none; +} + +@media (min-width: 300px) and (max-width: 599px) { + section #showData { + width: 95%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + section #showData { + width: 95%; + } +} + +@media (min-width: 768px) and (max-width: 1110px) { + section #showData { + width: 95%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + section #showData { + width: 80%; + } +} + +@media (min-width: 1601px) { + section #showData { + width: 80%; + } +} + +section #showData .book { + background: #f7f7f7; + padding: 1rem; + margin: 1px; + width: 33.1%; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-flow: wrap; + -moz-flex-flow: wrap; + -ms-flex-flow: wrap; + flex-flow: wrap; +} + +section #showData .book:hover { + background-color: #FFF; + top: 0; + transform: translateY(-5px); + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); +} + +@media (min-width: 768px) and (max-width: 1110px) { + section #showData .book { + width: 49%; + } +} + +@media (min-width: 300px) and (max-width: 599px) { + section #showData .book { + width: 100%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + section #showData .book { + width: 49%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + section #showData .book { + width: 33.1%; + } +} + +@media (min-width: 1601px) { + section #showData .book { + width: 24.7%; + } +} + +section #showData .book > :nth-of-type(3) { + margin-top: 1rem; +} + +section #showData .book .bookContent { + width: 100%; +} + +section #showData .book .bookContent .author { + padding-top: 1rem; +} + +section #showData .book .bookContent .title { + padding-bottom: 1rem; + border-bottom: 0.3rem solid #747a8a; +} + +section #showData .book .bookContent .title ul { + list-style-type: none; +} + +section #showData .book .bookContent .title ul :nth-of-type(1) { + font-size: 25px; + font-weight: 800; + color: #747a8a; +} + +section #showData .book .bookContent .title ul :nth-of-type(2) { + font-size: 18px; +} + +section #showData .book .bookContent .bookInfo { + width: 100%; + padding: 16px 12px 16px 16px; +} + +section #showData .book .bookContent .bookInfo > div { + color: #bababa; +} + +section #showData .book .bookContent .bookImage { + width: 100%; + padding: 1rem; + height: 15rem; + background: #FFF; +} + +section #showData .book .bookContent .bookImage img { + height: 13rem; +} + +section #showData div.btnDiv { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-self: flex-end; + -moz-align-self: flex-end; + -ms-align-self: flex-end; + align-self: flex-end; + width: 100%; +} + +section #showData div.btnDiv .btnBook { + display: block; + width: 100%; + margin-top: 1rem; + padding: 1rem 2rem; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 1px; + text-decoration: none; + color: #FFF; + background-color: #ea8300; +} + +section #showData div.btnDiv .btnBook:hover { + background-color: #d5041f; + cursor: pointer; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); +} + +section #showData .note { + font-weight: 800; + color: #d5041f; +} + +footer .full-of-color { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: row; + -moz-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin: 0 auto; +} + +@media (min-width: 300px) and (max-width: 599px) { + footer .full-of-color { + width: 95%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + footer .full-of-color { + width: 95%; + } +} + +@media (min-width: 768px) and (max-width: 1110px) { + footer .full-of-color { + width: 95%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + footer .full-of-color { + width: 80%; + } +} + +@media (min-width: 1601px) { + footer .full-of-color { + width: 80%; + } +} + +footer .full-of-color :nth-child(5n+1) { + background: #d5041f; +} + +footer .full-of-color :nth-child(5n+2) { + background: #ea8300; +} + +footer .full-of-color :nth-child(5n+3) { + background: #f5bf00; +} + +footer .full-of-color :nth-child(5n+4) { + background: #FFF; +} + +footer .full-of-color :nth-child(5n+5) { + background: #747a8a; +} + +footer .full-of-color div { + padding: 0.2rem; + width: 30%; +} + +footer .main-width { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-direction: row-reverse; + -moz-flex-direction: row-reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + color: #FFF; + background: #d5041f; + margin: 0 auto; + font-size: 10px; +} + +@media (min-width: 300px) and (max-width: 599px) { + footer .main-width { + width: 95%; + } +} + +@media (min-width: 600px) and (max-width: 767px) { + footer .main-width { + width: 95%; + } +} + +@media (min-width: 768px) and (max-width: 1110px) { + footer .main-width { + width: 95%; + } +} + +@media (min-width: 1111px) and (max-width: 1600px) { + footer .main-width { + width: 80%; + } +} + +@media (min-width: 1601px) { + footer .main-width { + width: 80%; + } +} + +footer .main-width a { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + background: #d5041f; + text-decoration: none; + color: #FFF; + padding: 2rem; + width: 100%; +} + +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIm1vZHVsZXMvX2NvbG9ycy5zY3NzIiwibW9kdWxlcy9fYWxsLnNjc3MiLCJtb2R1bGVzL19mbGV4LnNjc3MiLCJtb2R1bGVzL19tZWRpYS5zY3NzIiwicGFydGlhbHMvX2Zvb3Rlci5zY3NzIiwicGFydGlhbHMvX2Jhc2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwibW9kdWxlcy9fY29sb3JzXCI7XG5AaW1wb3J0IFwibW9kdWxlcy9fYWxsXCI7XG5AaW1wb3J0IFwibW9kdWxlcy9fZmxleFwiO1xuQGltcG9ydCBcIm1vZHVsZXMvX21lZGlhXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvX2Zvb3RlclwiO1xuQGltcG9ydCBcInBhcnRpYWxzL19iYXNlXCI7XG5cbi8vICRtYXBPZlByaW1hckNvbG9yczpcbi8vIChyZWRHd286I2Q1MDQxZixcbi8vIG9yYW5nZUd3bzogI2VhODMwMCxcbi8vIHllbGxvd0d3bzogI2Y1YmYwMCxcbi8vIHdoaXRlR3dvOiAjRkZGKTtcbi8vIGZvbnRNYWluOiBjb2xvclxuLy9cbi8vICRtYXBPZkNvbG9yczpcbi8vIChiYWNrZ291bmRDb2xvcjojRkZGLFxuLy8gQ29sb3JCRzogI2Y3ZjdmNyxcbi8vIGZvb3RlckNvbG9yOiAjZmU2MTAzLFxuLy8gbGlua0Nvcm9yOiAjMDBjNmZmLFxuLy8gaG92ZXJDb2xvcjogIzk2MDBmZixcbi8vIGZvbnRBZGRpdGlvbmFsOiAjYmFiYWJhKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIHNlYXJjaCAvIHd5c3p1a2l3YXJrYSAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuc2VjdGlvbiB7XG5cbiAgZm9ybSB7XG4gICAgQGluY2x1ZGUgcGhvbmUoOTUlKTtcbiAgICBAaW5jbHVkZSBzbVBob25lKDk1JSk7XG4gICAgQGluY2x1ZGUgdGFibGV0KDk1JSk7XG4gICAgQGluY2x1ZGUgZGVza3RvcCg4MCUpO1xuICAgIEBpbmNsdWRlIG1heERlc2t0b3AoODAlKTtcbiAgICBAZXh0ZW5kICVmb3JtO1xuICAgIC8vIEBleHRlbmQgJWNsZWFyZml4O1xuICAgIEBpbmNsdWRlIGlucHV0U3VibWl0KG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCByZWRHd28pLCBtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgd2hpdGVHd28pKTtcbiAgICAvLyBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRtYXBPZkNvbG9ycywgQ29sb3JCRyk7XG5cbiAgICBmb250LXNpemU6IDE2cHg7XG5cbiAgICAjc2VhcmNoQm9vayB7XG4gICAgICBAaW5jbHVkZSBwaG9uZSg2OCUpO1xuICAgICAgQGluY2x1ZGUgc21QaG9uZSg2OCUpO1xuICAgICAgQGluY2x1ZGUgdGFibGV0KDY4JSk7XG4gICAgICBAaW5jbHVkZSBkZXNrdG9wKDcwJSk7XG4gICAgICBAaW5jbHVkZSBtYXhEZXNrdG9wKDcwJSk7XG4gICAgfVxuICAgICNzdWJtaXQge1xuICAgICAgd2lkdGg6IDI4JTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwLjZyZW07XG4gICAgfVxuICAgIGlucHV0IHtcbiAgICAgIEBleHRlbmQgJWlucHV0O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIG9yYW5nZUd3byk7XG4gICAgICBjb2xvcjogbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIG9yYW5nZUd3byk7XG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJwbGFjZWhvbGRlclwiXSB7XG4gICAgICBjb2xvcjogbWFwLWdldCgkbWFwT2ZDb2xvcnMsIGZvb3RlckNvbG9yKTtcbiAgICB9XG5cbiAgICAjc3VibWl0IHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbihtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgb3JhbmdlR3dvKSwgbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIHJlZEd3byksIG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCB3aGl0ZUd3byksIG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCB3aGl0ZUd3bykpO1xuICAgIH1cbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLy8vIHJlbmRlciBib29rLy8vL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgI3Nob3dEYXRhIHtcbiAgICBAaW5jbHVkZSBmbGV4Ym94KCk7XG4gICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgIGJhY2tncm91bmQ6IG1hcC1nZXQoJG1hcE9mQ29sb3JzLCBmb250QWRkaXRpb25hbCk7XG5cbiAgICA+IDpudGgtb2YtdHlwZSgxKSB7XG4gICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6IG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCB3aGl0ZUd3byk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aWR0aDogNjVyZW07XG4gICAgZm9udC1zaXplOiAxMnB4O1xuXG4gICAgQGluY2x1ZGUgcGhvbmUoOTUlKTtcbiAgICBAaW5jbHVkZSBzbVBob25lKDk1JSk7XG4gICAgQGluY2x1ZGUgdGFibGV0KDk1JSk7XG4gICAgQGluY2x1ZGUgZGVza3RvcCg4MCUpO1xuICAgIEBpbmNsdWRlIG1heERlc2t0b3AoODAlKTtcbiAgICBAZXh0ZW5kICVmb3JtO1xuXG4gICAgLmJvb2sge1xuICAgICAgYmFja2dyb3VuZDogbWFwLWdldCgkbWFwT2ZDb2xvcnMsIENvbG9yQkcpO1xuICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgIG1hcmdpbjogMXB4O1xuICAgICAgd2lkdGg6IDMzLjElO1xuXG4gICAgICBAaW5jbHVkZSBib29rSG92ZXIocmVkLCBtYXAtZ2V0KCRtYXBPZkNvbG9ycywgYmFja2dvdW5kQ29sb3IpLCBncmVlbiwgeWVsbG93KSA7XG5cblxuICAgICAgQGluY2x1ZGUgZmxleGJveCgpO1xuICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyh3cmFwKTtcblxuICAgICAgQGluY2x1ZGUgdGFibGV0KDQ5JSk7XG4gICAgICBAaW5jbHVkZSBwaG9uZSgxMDAlKTtcbiAgICAgIEBpbmNsdWRlIHNtUGhvbmUoNDklKTtcbiAgICAgIEBpbmNsdWRlIGRlc2t0b3AoMzMuMSUpO1xuICAgICAgQGluY2x1ZGUgbWF4RGVza3RvcCgyNC43JSk7XG5cbiAgICAgID4gOm50aC1vZi10eXBlKDMpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cbiAgICAgIC5ib29rQ29udGVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAuYXV0aG9yIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgICAgICAgfVxuICAgICAgICAudGl0bGUge1xuXG4gICAgICAgICAgdWwge1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICAgICAgICBjb2xvcjogbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIGZvbnRNYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMC4zcmVtIHNvbGlkIG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCBmb250TWFpbik7XG4gICAgICAgIH1cbiAgICAgICAgLmJvb2tJbmZvIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAvLyBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRtYXBPZkNvbG9ycywgQ29sb3JCRyk7XG4gICAgICAgICAgcGFkZGluZzogMTZweCAxMnB4IDE2cHggMTZweDtcbiAgICAgICAgfVxuICAgICAgICAuYm9va0luZm8gPiBkaXYge1xuICAgICAgICAgIGNvbG9yOiBtYXAtZ2V0KCRtYXBPZkNvbG9ycywgZm9udEFkZGl0aW9uYWwpO1xuICAgICAgICB9XG4gICAgICAgIC5ib29rSW1hZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgaGVpZ2h0OiAxNXJlbTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgd2hpdGVHd28pO1xuXG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIC8vIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsMC4xNiksIDAgMCAwIDFweCByZ2JhKDAsMCwwLDAuMDgpO1xuICAgICAgICAgICAgaGVpZ2h0OiAxM3JlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLy8vLy8vLy8vLyBidXR0b24gXCJQcnplamTFuiBkbyBrc2nEmWdhcm5pXCIgLy8vLy8vLy8vLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBkaXYuYnRuRGl2IHtcbiAgICAgIEBpbmNsdWRlIGZsZXhib3goKTtcbiAgICAgIEBpbmNsdWRlIGFsaWduLXNlbGYoZmxleC1lbmQpO1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIC5idG5Cb29rIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uU3RvcmUobWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIG9yYW5nZUd3byksIG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCByZWRHd28pLCBtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgd2hpdGVHd28pLCBtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgd2hpdGVHd28pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLm5vdGUge1xuICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIGNvbG9yOiBtYXAtZ2V0KCRtYXBPZlByaW1hckNvbG9ycywgcmVkR3dvKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8gZm9vdGVyIC8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5mb290ZXIge1xuICAuZnVsbC1vZi1jb2xvciB7XG4gICAgQGluY2x1ZGUgZmxleGJveCgpO1xuICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKHJvdyk7XG5cbiAgICBAaW5jbHVkZSBwaG9uZSg5NSUpO1xuICAgIEBpbmNsdWRlIHNtUGhvbmUoOTUlKTtcbiAgICBAaW5jbHVkZSB0YWJsZXQoOTUlKTtcbiAgICBAaW5jbHVkZSBkZXNrdG9wKDgwJSk7XG4gICAgQGluY2x1ZGUgbWF4RGVza3RvcCg4MCUpO1xuXG4gICAgQGluY2x1ZGUgZnVsbE9mTWFpbkNvbG9ycztcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIGRpdiB7XG4gICAgICBwYWRkaW5nOiAwLjJyZW07XG4gICAgICB3aWR0aDogMzAlO1xuICAgIH1cbiAgfVxuICAubWFpbi13aWR0aCB7XG4gICAgQGluY2x1ZGUgZmxleGJveCgpO1xuICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKHJvdy1yZXZlcnNlICk7XG5cbiAgICAvLyBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoc3BhY2UtYmV0d2VlbilcblxuICAgIEBpbmNsdWRlIHBob25lKDk1JSk7XG4gICAgQGluY2x1ZGUgc21QaG9uZSg5NSUpO1xuICAgIEBpbmNsdWRlIHRhYmxldCg5NSUpO1xuICAgIEBpbmNsdWRlIGRlc2t0b3AoODAlKTtcbiAgICBAaW5jbHVkZSBtYXhEZXNrdG9wKDgwJSk7XG4gICAgY29sb3I6IG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCB3aGl0ZUd3byk7XG4gICAgYmFja2dyb3VuZDogbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIHJlZEd3byk7XG5cbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBmb250LXNpemU6IDEwcHg7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGZsZXhib3goKTtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCByZWRHd28pO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgY29sb3I6IG1hcC1nZXQoJG1hcE9mUHJpbWFyQ29sb3JzLCB3aGl0ZUd3byk7XG4gICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG4iLCIkcHJpbWFyeS1jb2xvcjogI2VhODMwMDtcbiRhZGRpdGlvbmFsLWNvbG9yOiAjZDUwNDFmO1xuJGNvbXBsZW1lbnRhcnktY29sb3I6ICNmNWJmMDA7XG4kbmV1dHJhbENvbG9yOiAjRkZGO1xuXG4kbWFwT2ZQcmltYXJDb2xvcnM6XG4ocmVkR3dvOiNkNTA0MWYsXG5vcmFuZ2VHd286ICNlYTgzMDAsXG55ZWxsb3dHd286ICNmNWJmMDAsXG53aGl0ZUd3bzogI0ZGRixcbmZvbnRNYWluOiAjNzQ3YThhKTtcblxuJG1hcE9mQ29sb3JzOlxuKGJhY2tnb3VuZENvbG9yOiNGRkYsXG5Db2xvckJHOiAjZjdmN2Y3LFxuZm9vdGVyQ29sb3I6ICNmZTYxMDMsXG5saW5rQ29yb3I6ICMwMGM2ZmYsXG5ob3ZlckNvbG9yOiAjOTYwMGZmLFxuZm9udEFkZGl0aW9uYWw6ICNiYWJhYmEpO1xuIiwiQGltcG9ydCBcIm1vZHVsZXMvX2NvbG9yc1wiO1xuXG4lY2xlYXJmaXgge1xuICAmOmFmdGVyLFxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4lZmxvYXQge1xuICBmbG9hdDogbGVmdDtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbiVpbnB1dCB7XG4gIC8vIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDFyZW07XG4gIG91dGxpbmU6IDA7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuOTVlbTtcbn1cblxuJWZvcm0ge1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIG1hcmdpbjogMTBweCBhdXRvO1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbkBtaXhpbiBpbnB1dFN1Ym1pdCgkY29sb3JCYWNrZ3JvdW5kLCAkY29sb3IgKSB7XG4gIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvckJhY2tncm91bmQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIDpmb2N1cyB7XG4gICAgICBib3JkZXI6IDAuMWVtIHNvbGlkIGRhcmtlbigjY2NjLCA2JSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidXR0b24oJGNvbG9yQmFzaWMsICRjb2xvckhvdmVyLCAkY29sb3JUZXh0LCAkY29sb3J0ZXh0SG92ZXIpIHtcblxuICBiYWNrZ3JvdW5kOiAkY29sb3JCYXNpYztcbiAgY29sb3I6ICRjb2xvclRleHQ7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICB0cmFuc2l0aW9uOiAuNnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAmOmZvY3Vze1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgJjpiZWZvcmV7XG4gICAgZm9udC1mYW1pbHk6ICdpY29uZm9udCc7XG4gICAgY29udGVudDogXCJcXGVhMmRcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIG9wYWNpdHk6IC41O1xuICAgIGZpbHRlcjogYmx1cigzMHB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMHB4KSAgc2tld1goLTE1ZGVnKTtcbiAgfVxuICAmOmFmdGVye1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbGVmdDogMzBweDtcbiAgICB0b3A6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBmaWx0ZXI6IGJsdXIoNXB4KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMHB4KSBza2V3WCgtMTVkZWcpO1xuICB9XG4gICY6aG92ZXJ7XG4gICAgYmFja2dyb3VuZDogJGNvbG9ySG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbiRidXR0b24tY29sb3I6ICMyRDMxNDI7XG5cbkBtaXhpbiBidXR0b25TdG9yZSgkY29sb3JCYXNpYywgJGNvbG9ySG92ZXIsICRjb2xvclRleHQsICRjb2xvcnRleHRIb3Zlcikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgcGFkZGluZzogMXJlbSAycmVtO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgLW1zLXRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG5cbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogJGNvbG9yVGV4dDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yQmFzaWM7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsMCwwLDAuMSk7XG4gIH1cbiAgJjpmb2N1cyB7XG4gIH1cbiAgJjphY3RpdmUge1xuICB9XG59XG5cbkBtaXhpbiBib29rSG92ZXIoJGNvbG9yQmFzaWMsICRjb2xvckhvdmVyLCAkY29sb3JUZXh0LCAkY29sb3J0ZXh0SG92ZXIpIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySG92ZXI7XG4gICAgdG9wOiAwO1xuICAgIC8vIG9wYWNpdHk6IDA7XG4gICAgLy8gZmlsdGVyOiBibHVyKDVweCk7XG4gICAgLy8gdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01cHgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTtcblxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsMCwwLDAuNSk7XG5cbiAgfVxuICAmOmZvY3VzIHtcbiAgfVxuICAmOmFjdGl2ZSB7XG4gIH1cbn1cblxuXG4kdG90YWw6IDU7XG4kc3RlcDogOTBkZWcgLyAkdG90YWw7XG5cbkBtaXhpbiBmdWxsT2ZDb2xvcnMge1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR0b3RhbCB7XG4gICAgOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgYmFja2dyb3VuZDogYWRqdXN0LWh1ZShibHVlLCAkaSAqICRzdGVwKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZ1bGxPZk1haW5Db2xvcnMge1xuXG4gICRwcmltYXJDb2xvcnM6ICgjZDUwNDFmLCAjZWE4MzAwLCAjZjViZjAwLCAjRkZGLCAjNzQ3YThhKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkcHJpbWFyQ29sb3JzKSB7XG4gICAgOm50aC1jaGlsZCgje2xlbmd0aCgkcHJpbWFyQ29sb3JzKX1uKyN7JGl9KSB7XG4gICAgICBiYWNrZ3JvdW5kOiBudGgoJHByaW1hckNvbG9ycywgJGkpXG4gICAgfVxuICB9XG59XG4iLCIvLyBGbGV4Ym94IGRpc3BsYXlcbiAgQG1peGluIGZsZXhib3goKSB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAvLyBUaGUgJ2ZsZXgnIHNob3J0aGFuZFxuICAvLyAtIGFwcGxpZXMgdG86IGZsZXggaXRlbXNcbiAgLy8gPHBvc2l0aXZlLW51bWJlcj4sIGluaXRpYWwsIGF1dG8sIG9yIG5vbmVcbiAgQG1peGluIGZsZXgoJHZhbHVlcykge1xuICAgIC13ZWJraXQtYm94LWZsZXg6ICR2YWx1ZXM7XG4gICAgICAgLW1vei1ib3gtZmxleDogJHZhbHVlcztcbiAgICAgICAgLXdlYmtpdC1mbGV4OiAkdmFsdWVzO1xuICAgIFx0ICAtbXMtZmxleDogJHZhbHVlcztcbiAgICBcdCAgICAgIGZsZXg6ICR2YWx1ZXM7XG4gIH1cblxuICAvLyBGbGV4IEZsb3cgRGlyZWN0aW9uXG4gIC8vIC0gYXBwbGllcyB0bzogZmxleCBjb250YWluZXJzXG4gIC8vIHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2VcbiAgQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xuICAgICAgIC1tb3otZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG4gICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xuICB9XG5cbiAgLy8gRmxleCBMaW5lIFdyYXBwaW5nXG4gIC8vIHVtaWVzemN6YSBlbGVtZW50eSB3IGtvbGVqbnltIGFub25pbW93eW0gYmxva3VcbiAgLy8gLSBhcHBsaWVzIHRvOiBmbGV4IGNvbnRhaW5lcnNcbiAgLy8gbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZVxuICBAbWl4aW4gZmxleC13cmFwKCR3cmFwKSB7XG4gICAgLXdlYmtpdC1mbGV4LXdyYXA6ICR3cmFwO1xuICAgICAgIC1tb3otZmxleC13cmFwOiAkd3JhcDtcbiAgICAgICAgLW1zLWZsZXgtd3JhcDogJHdyYXA7XG4gICAgICAgICAgICBmbGV4LXdyYXA6ICR3cmFwO1xuICB9XG5cbiAgLy8gRmxleCBEaXJlY3Rpb24gYW5kIFdyYXBcbiAgLy8gLSBhcHBsaWVzIHRvOiBmbGV4IGNvbnRhaW5lcnNcbiAgLy8gPGZsZXgtZGlyZWN0aW9uPiB8fCA8ZmxleC13cmFwPlxuICBAbWl4aW4gZmxleC1mbG93KCRmbG93KSB7XG4gICAgLXdlYmtpdC1mbGV4LWZsb3c6ICRmbG93O1xuICAgICAgIC1tb3otZmxleC1mbG93OiAkZmxvdztcbiAgICAgICAgLW1zLWZsZXgtZmxvdzogJGZsb3c7XG4gICAgICAgICAgICBmbGV4LWZsb3c6ICRmbG93O1xuICB9XG5cbiAgLy8gRGlzcGxheSBPcmRlclxuICAvLyAtIGFwcGxpZXMgdG86IGZsZXggaXRlbXNcbiAgLy8gPGludGVnZXI+XG4gIEBtaXhpbiBvcmRlcigkdmFsKSB7XG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogJHZhbDtcbiAgICAgICAtbW96LWJveC1vcmRpbmFsLWdyb3VwOiAkdmFsO1xuICAgIFx0ICAgICAtbXMtZmxleC1vcmRlcjogJHZhbDtcbiAgICBcdCAgICAgIC13ZWJraXQtb3JkZXI6ICR2YWw7XG4gICAgXHRcdCAgICAgIG9yZGVyOiAkdmFsO1xuICB9XG5cbiAgLy8gRmxleCBncm93IGZhY3RvclxuICAvLyAtIGFwcGxpZXMgdG86IGZsZXggaXRlbXNcbiAgLy8gPG51bWJlcj5cbiAgQG1peGluIGZsZXgtZ3JvdygkZ3Jvdykge1xuICAgIC13ZWJraXQtZmxleC1ncm93OiAkZ3JvdztcbiAgICAgICAtbW96LWZsZXgtZ3JvdzogJGdyb3c7XG4gICAgICAgIC1tcy1mbGV4LWdyb3c6ICRncm93O1xuICAgICAgICAgICAgZmxleC1ncm93OiAkZ3JvdztcbiAgfVxuXG4gIC8vIEZsZXggc2hyaW5rXG4gIC8vIC0gYXBwbGllcyB0bzogZmxleCBpdGVtIHNocmluayBmYWN0b3JcbiAgLy8gPG51bWJlcj5cbiAgQG1peGluIGZsZXgtc2hyaW5rKCRzaHJpbmspIHtcbiAgICAtd2Via2l0LWZsZXgtc2hyaW5rOiAkc2hyaW5rO1xuICAgICAgIC1tb3otZmxleC1zaHJpbms6ICRzaHJpbms7XG4gICAgICAgIC1tcy1mbGV4LXNocmluazogJHNocmluaztcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAkc2hyaW5rO1xuICB9XG5cbiAgLy8gRmxleCBiYXNpc1xuICAvLyAtIHRoZSBpbml0aWFsIG1haW4gc2l6ZSBvZiB0aGUgZmxleCBpdGVtXG4gIC8vIC0gYXBwbGllcyB0bzogZmxleCBpdGVtc25pdGlhbCBtYWluIHNpemUgb2YgdGhlIGZsZXggaXRlbVxuICAvLyA8d2lkdGg+XG4gIEBtaXhpbiBmbGV4LWJhc2lzKCR3aWR0aCkge1xuICAgIC13ZWJraXQtZmxleC1iYXNpczogJHdpZHRoO1xuICAgICAgIC1tb3otZmxleC1iYXNpczogJHdpZHRoO1xuICAgICAgICAtbXMtZmxleC1iYXNpczogJHdpZHRoO1xuICAgICAgICAgICAgZmxleC1iYXNpczogJHdpZHRoO1xuICB9XG5cbiAgLy8gQXhpcyBBbGlnbm1lbnRcbiAgLy8gLSBhcHBsaWVzIHRvOiBmbGV4IGNvbnRhaW5lcnNcbiAgLy8gZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZFxuICBAbWl4aW4ganVzdGlmeS1jb250ZW50KCRqdXN0aWZ5KSB7XG4gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5O1xuICAgICAgIC1tb3otanVzdGlmeS1jb250ZW50OiAkanVzdGlmeTtcbiAgICAgICAgLW1zLWp1c3RpZnktY29udGVudDogJGp1c3RpZnk7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5O1xuICAgICAgICAgICAgICAtbXMtZmxleC1wYWNrOiAkanVzdGlmeTtcbiAgfVxuXG4gIC8vIFBhY2tpbmcgRmxleCBMaW5lc1xuICAvLyAtIGFwcGxpZXMgdG86IG11bHRpLWxpbmUgZmxleCBjb250YWluZXJzXG4gIC8vIGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoXG4gIEBtaXhpbiBhbGlnbi1jb250ZW50KCRhbGlnbikge1xuICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogJGFsaWduO1xuICAgICAgIC1tb3otYWxpZ24tY29udGVudDogJGFsaWduO1xuICAgICAgICAtbXMtYWxpZ24tY29udGVudDogJGFsaWduO1xuICAgICAgICAgICAgYWxpZ24tY29udGVudDogJGFsaWduO1xuICB9XG5cbiAgLy8gQ3Jvc3MtYXhpcyBBbGlnbm1lbnRcbiAgLy8gLSBhcHBsaWVzIHRvOiBmbGV4IGNvbnRhaW5lcnNcbiAgLy8gZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG4gIEBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24pIHtcbiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiAkYWxpZ247XG4gICAgICAgLW1vei1hbGlnbi1pdGVtczogJGFsaWduO1xuICAgICAgICAtbXMtYWxpZ24taXRlbXM6ICRhbGlnbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiAkYWxpZ247XG4gIH1cblxuICAvLyBDcm9zcy1heGlzIEFsaWdubWVudFxuICAvLyAtIGFwcGxpZXMgdG86IGZsZXggaXRlbXNcbiAgLy8gYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuICBAbWl4aW4gYWxpZ24tc2VsZigkYWxpZ24pIHtcbiAgICAtd2Via2l0LWFsaWduLXNlbGY6ICRhbGlnbjtcbiAgICAgICAtbW96LWFsaWduLXNlbGY6ICRhbGlnbjtcbiAgICAgICAgLW1zLWFsaWduLXNlbGY6ICRhbGlnbjtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6ICRhbGlnbjtcbiAgfVxuIiwiQGltcG9ydCBcIm1vZHVsZXMvX2NvbG9yc1wiO1xuXG4kcGhvbmUyOiBcIihtaW4td2lkdGg6IDEwMHB4KSBhbmQgKG1heC13aWR0aDogMjk5cHgpXCI7XG4kcGhvbmU6IFwiKG1pbi13aWR0aDogMzAwcHgpIGFuZCAobWF4LXdpZHRoOiA1OTlweClcIjtcbiRzbVBob25lOiBcIihtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpXCI7XG4kdGFibGV0OiBcIihtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTExMHB4KVwiO1xuJGRlc2t0b3A6IFwiKG1pbi13aWR0aDogMTExMXB4KSBhbmQgKG1heC13aWR0aDogMTYwMHB4KVwiO1xuJG1heERlc2t0b3A6IFwiKG1pbi13aWR0aDogMTYwMXB4KVwiO1xuXG5AbWl4aW4gcGhvbmUyKCR3aWR0aCkge1xuICBAbWVkaWEgI3skcGhvbmV9IHtcbiAgICBAY29udGVudDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9XG59XG5cbkBtaXhpbiBwaG9uZSgkd2lkdGgpICB7XG4gIEBtZWRpYSAjeyRwaG9uZX0ge1xuICAgIEBjb250ZW50O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH1cbn1cblxuQG1peGluIHNtUGhvbmUoJHdpZHRoKSB7XG4gIEBtZWRpYSAjeyRzbVBob25lfSB7XG4gICAgQGNvbnRlbnQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfVxufVxuXG5AbWl4aW4gdGFibGV0KCR3aWR0aCkge1xuICBAbWVkaWEgI3skdGFibGV0fSB7XG4gICAgQGNvbnRlbnQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCgkd2lkdGgpIHtcbiAgQG1lZGlhICN7JGRlc2t0b3B9IHtcbiAgICBAY29udGVudDtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9XG59XG5cbkBtaXhpbiBtYXhEZXNrdG9wKCR3aWR0aCkge1xuICBAbWVkaWEgI3skbWF4RGVza3RvcH0ge1xuICAgIEBjb250ZW50O1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH1cbn1cbiIsImZvb3RlciB7XG59XG4iLCJAaW1wb3J0IFwibW9kdWxlcy9fY29sb3JzXCI7XG5cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmJvZHkge1xuICAvLyBiYWNrZ3JvdW5kOiBtYXAtZ2V0KCRtYXBPZkNvbG9ycywgZm9udEFkZGl0aW9uYWwpO1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkO1xuICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDtcbn1cblxuaDIge1xuICBjb2xvcjogbWFwLWdldCgkbWFwT2ZQcmltYXJDb2xvcnMsIGZvbnRNYWluKTtcbiAgZm9udC1rZXJuaW5nOiBhdXRvO1xuICBmb250LXdlaWdodDogODAwO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxBRVpBLE9GWU8sQ0FFTCxJQUFJLENBd0JGLEtBQUssQ0V0Q0Y7RUFFTCxPQUFPLEVBQUUsSUFBSTtFQUNiLE9BQU8sRUFBRSxDQUFDO0VBQ1YsV0FBVyxFQUFFLE9BQU87RUFDcEIsU0FBUyxFQUFFLE1BQU07Q0FDbEI7O0FGTUQsQUVKQSxPRklPLENBRUwsSUFBSSxFQUZOLEFFSkEsT0ZJTyxDQStDTCxTQUFTLENFbkRMO0VBQ0osT0FBTyxFQUFFLE1BQU07RUFDZixNQUFNLEVBQUUsU0FBUztFQUNqQixhQUFhLEVBQUUsR0FBRztDQUNuQjs7QUkxQkQsQUFBQSxDQUFDLENBQUM7RUFDQSxVQUFVLEVBQUUsVUFBVTtFQUN0QixNQUFNLEVBQUUsQ0FBQztFQUNULE9BQU8sRUFBRSxDQUFDO0NBQ1g7O0FBRUQsQUFBQSxJQUFJLENBQUM7RUFFSCxXQUFXLEVBQUUsdUJBQXVCO0VBQ3BDLGNBQWMsRUFBRSxhQUFhO0VBQzdCLGVBQWUsRUFBRSxTQUFTO0NBQzNCOztBQUVELEFBQUEsRUFBRSxDQUFDO0VBQ0QsS0FBSyxFTE5HLE9BQU87RUtPZixZQUFZLEVBQUUsSUFBSTtFQUNsQixXQUFXLEVBQUUsR0FBRztDQUNqQjs7QU5TRCxBQUVFLE9BRkssQ0FFTCxJQUFJLENBQUM7RUFXSCxTQUFTLEVBQUUsSUFB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 */ diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 0000000..08d1652 --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,100 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/*!*******************!*\ + !*** ./js/app.js ***! + \*******************/ +/*! dynamic exports provided */ +/*! all exports used */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ./data.js */ 1);\n__webpack_require__(/*! ./component.js */ 2);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2pzL2FwcC5qcz9jOTllIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoXCIuL2RhdGEuanNcIik7XG5yZXF1aXJlKFwiLi9jb21wb25lbnQuanNcIik7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL2FwcC5qc1xuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0\n"); + +/***/ }), +/* 1 */ +/*!********************!*\ + !*** ./js/data.js ***! + \********************/ +/*! dynamic exports provided */ +/*! all exports used */ +/***/ (function(module, exports) { + +eval("document.addEventListener(\"DOMContentLoaded\", function() {\n console.log(\"DOM fully loaded and parsed\"); // test - załadowanie drzewa DOM\n\n var apiPath = \"https://gwo.pl/booksApi/v1/search?query=\";\n var submitButton = document.getElementById(\"submit\"); // Wyszukiwanie przycisku submit w DOM-ie\n var userInput = document.getElementById(\"searchBook\");\n var userInput2 = document.querySelector('#searchBook')\n\n var bookContainer = document.getElementById(\"showData\");\n console.log(bookContainer);\n var pageCounter = 1;\n\n submitButton.addEventListener(\"click\", function(event) { // dodanie eventu na przycisk submit\n this.url = apiPath + encodeURI(userInput.value);\n\n console.log(this.url); // sprawdzam w konsoli czy link jest dynamicznie zmieniany\n\n var ourRequest = new XMLHttpRequest();\n\n ourRequest.open(\"GET\", this.url); // używam metody \"GET\" aby pobrać dane\n ourRequest.onload = function() {\n\n if (ourRequest.status >= 200 && ourRequest.status < 400) {\n var ourData = JSON.parse(ourRequest.responseText);\n renderHTML(ourData); // przekazuję zmienną zawierającą parsowane dane do funkcji renderHTML().\n\n if (ourData.length === 0) {\n var ourData = \"
Brak pozycji, spróbuj ponownie.
\";\n document.getElementById(\"showData\").innerHTML = ourData;\n }\n\n } else {\n console.log(\"We connected to the server, but it returned an error.\");\n }\n\n };\n\n ourRequest.onerror = function() {\n console.log(\"Connection error\");\n var webConnection = \"
Brak połączenia z serwerem
\";\n document.getElementById(\"showData\").innerHTML = webConnection;\n\n };\n ourRequest.send();\n\n function renderHTML(data) { // funkcja wrapująca div-y zawierające dane API do bookContainer\n pageCounter++;\n var htmlString = \"\";\n\n var line = document.createElement(\"div\");\n for (i = 0; i < data.length; i++) {\n\n console.log((data[i].title));\n\n htmlString +=\n \"
\" +\n \"
\" +\n \"
\" + '' + \"
\" +\n \"
\" +\n \"
\" + \"
    \" + \"
  • \" + (data[i].title).replace(/\\./g, '
  • ') + \"
  • \" + \"
\" + \"
\" +\n \"
\" + \"autorzy: \" + (data[i].author) + \"
\" +\n \"
\" + \"ISBN: \" + data[i].isbn + \"
\" +\n \"
\" + \"numer dopuszczenia MEN: \" + data[i].men + \"
\" +\n \"
\" + \"liczba stron: \" + data[i].pages_count + \"
\" +\n \"
\" + \"poziomy nauczania: \" + JSON.stringify(data[i].levels).replace(/:|\"|school|class|}|{|]|[[]/g, ' ') + \"
\" + // JSON.stringify zwraca mi ciąg zawierający tekst\n \"
\" + \"przedmiot: \" + data[i].subject + \"
\" +\n \"
\" + \"rodzaj publikacji: \" + data[i].type + \"
\" + \"
\" + \"
\"\n + \"
\" + '' + \"Przejdź do księgarni\" + \"\" + \"
\" + \"
\";\n }\n document.getElementById(\"showData\").innerHTML = htmlString; // wykorzystałem atrybut innerHTML który zwraca kod HTML.\n }\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2pzL2RhdGEuanM/OWFjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBmdW5jdGlvbigpIHtcbiAgY29uc29sZS5sb2coXCJET00gZnVsbHkgbG9hZGVkIGFuZCBwYXJzZWRcIik7IC8vIHRlc3QgLSB6YcWCYWRvd2FuaWUgZHJ6ZXdhIERPTVxuXG4gIHZhciBhcGlQYXRoID0gXCJodHRwczovL2d3by5wbC9ib29rc0FwaS92MS9zZWFyY2g/cXVlcnk9XCI7XG4gIHZhciBzdWJtaXRCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN1Ym1pdFwiKTsgLy8gV3lzenVraXdhbmllIHByenljaXNrdSBzdWJtaXQgdyBET00taWVcbiAgdmFyIHVzZXJJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoQm9va1wiKTtcbiAgdmFyIHVzZXJJbnB1dDIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoQm9vaycpXG5cbiAgdmFyIGJvb2tDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3dEYXRhXCIpO1xuICBjb25zb2xlLmxvZyhib29rQ29udGFpbmVyKTtcbiAgdmFyIHBhZ2VDb3VudGVyID0gMTtcblxuICBzdWJtaXRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KSB7IC8vIGRvZGFuaWUgZXZlbnR1IG5hIHByenljaXNrIHN1Ym1pdFxuICAgIHRoaXMudXJsID0gYXBpUGF0aCArIGVuY29kZVVSSSh1c2VySW5wdXQudmFsdWUpO1xuXG4gICAgY29uc29sZS5sb2codGhpcy51cmwpOyAvLyBzcHJhd2R6YW0gdyBrb25zb2xpIGN6eSBsaW5rIGplc3QgZHluYW1pY3puaWUgem1pZW5pYW55XG5cbiAgICB2YXIgb3VyUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgb3VyUmVxdWVzdC5vcGVuKFwiR0VUXCIsIHRoaXMudXJsKTsgLy8gdcW8eXdhbSBtZXRvZHkgXCJHRVRcIiBhYnkgcG9icmFjzIEgZGFuZVxuICAgIG91clJlcXVlc3Qub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgIGlmIChvdXJSZXF1ZXN0LnN0YXR1cyA+PSAyMDAgJiYgb3VyUmVxdWVzdC5zdGF0dXMgPCA0MDApIHtcbiAgICAgICAgdmFyIG91ckRhdGEgPSBKU09OLnBhcnNlKG91clJlcXVlc3QucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgcmVuZGVySFRNTChvdXJEYXRhKTsgLy8gcHJ6ZWthenVqxJkgem1pZW5uxIUgemF3aWVyYWrEhWPEhSBwYXJzb3dhbmUgZGFuZSBkbyBmdW5rY2ppIHJlbmRlckhUTUwoKS5cblxuICAgICAgICBpZiAob3VyRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2YXIgb3VyRGF0YSA9IFwiPGRpdiBjbGFzcz0nbm90ZSc+QnJhayBwb3p5Y2ppLCBzcHLDs2J1aiBwb25vd25pZS48L2Rpdj5cIjtcbiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3dEYXRhXCIpLmlubmVySFRNTCA9IG91ckRhdGE7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJXZSBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciwgYnV0IGl0IHJldHVybmVkIGFuIGVycm9yLlwiKTtcbiAgICAgIH1cblxuICAgIH07XG5cbiAgICBvdXJSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGlvbiBlcnJvclwiKTtcbiAgICAgIHZhciB3ZWJDb25uZWN0aW9uID0gXCI8ZGl2IGNsYXNzPSdub3RlJz5CcmFrIHBvxYLEhWN6ZW5pYSB6IHNlcndlcmVtPC9kaXY+XCI7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3dEYXRhXCIpLmlubmVySFRNTCA9IHdlYkNvbm5lY3Rpb247XG5cbiAgICB9O1xuICAgIG91clJlcXVlc3Quc2VuZCgpO1xuXG4gICAgZnVuY3Rpb24gcmVuZGVySFRNTChkYXRhKSB7IC8vIGZ1bmtjamEgd3JhcHVqxIVjYSBkaXYteSB6YXdpZXJhasSFY2UgZGFuZSBBUEkgZG8gYm9va0NvbnRhaW5lclxuICAgICAgcGFnZUNvdW50ZXIrKztcbiAgICAgIHZhciBodG1sU3RyaW5nID0gXCJcIjtcblxuICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBjb25zb2xlLmxvZygoZGF0YVtpXS50aXRsZSkpO1xuXG4gICAgICAgIGh0bWxTdHJpbmcgKz1cbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2Jvb2snPlwiICtcbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2Jvb2tDb250ZW50Jz5cIiArXG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSdib29rSW1hZ2UnPlwiICsgJzxpbWcgc3JjPScgKyBkYXRhW2ldLmNvdmVyICsgJyArIGhlaWdodD1cIjI1MFwiPicgKyBcIjwvZGl2PlwiICtcbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2Jvb2tJbmZvJz5cIiArXG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSd0aXRsZSc+XCIgKyBcIjx1bD5cIiArIFwiPGxpPlwiICsgKGRhdGFbaV0udGl0bGUpLnJlcGxhY2UoL1xcLi9nLCAnPC9saT48bGk+JykgKyBcIjwvbGk+XCIgKyBcIjwvdWw+XCIgKyBcIjwvZGl2PlwiICtcbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2F1dGhvcic+XCIgKyBcImF1dG9yenk6IFwiICsgKGRhdGFbaV0uYXV0aG9yKSArIFwiPC9kaXY+XCIgK1xuICAgICAgICAgIFwiPGRpdiBjbGFzcz0naXNibic+XCIgKyBcIklTQk46IFwiICsgZGF0YVtpXS5pc2JuICsgXCI8L2Rpdj5cIiArXG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSdtZW4nPlwiICsgXCJudW1lciBkb3B1c3pjemVuaWEgTUVOOiBcIiArIGRhdGFbaV0ubWVuICsgXCI8L2Rpdj5cIiArXG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSdwYWdlc19jb3VudCc+XCIgKyBcImxpY3piYSBzdHJvbjogXCIgKyBkYXRhW2ldLnBhZ2VzX2NvdW50ICsgXCI8L2Rpdj5cIiArXG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSdsZXZlbHMnPlwiICsgXCJwb3ppb215IG5hdWN6YW5pYTogXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhW2ldLmxldmVscykucmVwbGFjZSgvOnxcInxzY2hvb2x8Y2xhc3N8fXx7fF18W1tdL2csICcgJykgKyBcIjwvZGl2PlwiICsgLy8gSlNPTi5zdHJpbmdpZnkgendyYWNhIG1pIGNpxIVnIHphd2llcmFqxIVjeSB0ZWtzdFxuICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc3ViamVjdCc+XCIgKyBcInByemVkbWlvdDogXCIgKyBkYXRhW2ldLnN1YmplY3QgKyBcIjwvZGl2PlwiICtcbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J3R5cGUnPlwiICsgXCJyb2R6YWogcHVibGlrYWNqaTogXCIgKyBkYXRhW2ldLnR5cGUgKyBcIjwvZGl2PlwiICsgXCI8L2Rpdj5cIiArIFwiPC9kaXY+XCJcbiAgICAgICAgICArIFwiPGRpdiBjbGFzcz0nYnRuRGl2Jz5cIiArICc8YSBocmVmPScgKyBkYXRhW2ldLnVybCArICcgY2xhc3M9XCJidG5Cb29rXCIgPicgKyBcIlByemVqZMW6IGRvIGtzacSZZ2FybmlcIiArIFwiPC9hPlwiICsgXCI8L2Rpdj5cIiArIFwiPC9kaXY+XCI7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3dEYXRhXCIpLmlubmVySFRNTCA9IGh0bWxTdHJpbmc7IC8vIHd5a29yenlzdGHFgmVtIGF0cnlidXQgaW5uZXJIVE1MIGt0w7NyeSB6d3JhY2Ega29kIEhUTUwuXG4gICAgfVxuICB9KTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9kYXRhLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n"); + +/***/ }), +/* 2 */ +/*!*************************!*\ + !*** ./js/component.js ***! + \*************************/ +/*! dynamic exports provided */ +/*! all exports used */ +/***/ (function(module, exports) { + +eval("console.log(' world!');\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n console.log(\"DOM fully loaded and parsed\");\n\n var formattedBody = \"Witam, \\n\\n Tereść wiadomości...\";\n\n var gitHub = document.createElement('a');\n var portfolio = document.createElement('a');\n var contactToMail = document.createElement('a');\n\n document.getElementById(\"linkGitHubId\").appendChild(gitHub);\n document.getElementById(\"linkPortfolioId\").appendChild(portfolio);\n document.getElementById(\"contactMailId\").appendChild(contactToMail);\n\n var footerTextFirst = document.createTextNode(\"GitHub\");\n var footerTextSecond = document.createTextNode(\"Portfolio\");\n var emailText = document.createTextNode(\"Kontakt\");\n\n var footerLinkFirst = \"https://github.com/Vongriffe\";\n var footerLinkSecond = \"http://capalgerie.org/portfolio/\";\n var mailToLink = \"mailto:kamelboukoffa.mac@gmail.com?\";\n\n function mailConcat(link, tag) {\n\n var content = \"Subject=Zadanie rekrutacyjne frontend&\";\n\n link+= \"\";\n\n if (link.indexOf(\"@\") >=0 ) {\n content += \"body=\" + encodeURIComponent(formattedBody);\n tag.appendChild(emailText);\n tag.title = \"napisz maila\";\n tag.href = link + content;\n return tag;\n\n } else if (link.indexOf(\"github\") >=0 ) {\n tag.appendChild(footerTextFirst);\n tag.href = link;\n tag.target = '_blank';\n return tag;\n\n } else if (link.indexOf(\"portfolio\") >=0 ) {\n tag.appendChild(footerTextSecond);\n tag.href = link;\n tag.target = '_blank';\n return tag;\n }\n }\n mailConcat(mailToLink, contactToMail);\n mailConcat(footerLinkFirst, gitHub);\n mailConcat(footerLinkSecond, portfolio);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2pzL2NvbXBvbmVudC5qcz9hMDZhIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnNvbGUubG9nKCcgd29ybGQhJyk7XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsIGZ1bmN0aW9uKCkge1xuICBjb25zb2xlLmxvZyhcIkRPTSBmdWxseSBsb2FkZWQgYW5kIHBhcnNlZFwiKTtcblxuICB2YXIgZm9ybWF0dGVkQm9keSA9IFwiV2l0YW0sIFxcblxcbiBUZXJlxZvEhyB3aWFkb21vxZtjaS4uLlwiO1xuXG4gIHZhciBnaXRIdWIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIHZhciBwb3J0Zm9saW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIHZhciBjb250YWN0VG9NYWlsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGlua0dpdEh1YklkXCIpLmFwcGVuZENoaWxkKGdpdEh1Yik7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGlua1BvcnRmb2xpb0lkXCIpLmFwcGVuZENoaWxkKHBvcnRmb2xpbyk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFjdE1haWxJZFwiKS5hcHBlbmRDaGlsZChjb250YWN0VG9NYWlsKTtcblxuICB2YXIgZm9vdGVyVGV4dEZpcnN0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJHaXRIdWJcIik7XG4gIHZhciBmb290ZXJUZXh0U2Vjb25kID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJQb3J0Zm9saW9cIik7XG4gIHZhciBlbWFpbFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIktvbnRha3RcIik7XG5cbiAgdmFyIGZvb3RlckxpbmtGaXJzdCA9IFwiaHR0cHM6Ly9naXRodWIuY29tL1ZvbmdyaWZmZVwiO1xuICB2YXIgZm9vdGVyTGlua1NlY29uZCA9IFwiaHR0cDovL2NhcGFsZ2VyaWUub3JnL3BvcnRmb2xpby9cIjtcbiAgdmFyIG1haWxUb0xpbmsgPSBcIm1haWx0bzprYW1lbGJvdWtvZmZhLm1hY0BnbWFpbC5jb20/XCI7XG5cbiAgZnVuY3Rpb24gbWFpbENvbmNhdChsaW5rLCB0YWcpIHtcblxuICAgIHZhciBjb250ZW50ID0gXCJTdWJqZWN0PVphZGFuaWUgcmVrcnV0YWN5am5lIGZyb250ZW5kJlwiO1xuXG4gICAgbGluays9IFwiXCI7XG5cbiAgICBpZiAobGluay5pbmRleE9mKFwiQFwiKSA+PTAgKSB7XG4gICAgICBjb250ZW50ICs9IFwiYm9keT1cIiArIGVuY29kZVVSSUNvbXBvbmVudChmb3JtYXR0ZWRCb2R5KTtcbiAgICAgIHRhZy5hcHBlbmRDaGlsZChlbWFpbFRleHQpO1xuICAgICAgdGFnLnRpdGxlID0gXCJuYXBpc3ogbWFpbGFcIjtcbiAgICAgIHRhZy5ocmVmID0gbGluayArIGNvbnRlbnQ7XG4gICAgICByZXR1cm4gdGFnO1xuXG4gICAgfSBlbHNlIGlmIChsaW5rLmluZGV4T2YoXCJnaXRodWJcIikgPj0wICkge1xuICAgICAgdGFnLmFwcGVuZENoaWxkKGZvb3RlclRleHRGaXJzdCk7XG4gICAgICB0YWcuaHJlZiA9IGxpbms7XG4gICAgICB0YWcudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICByZXR1cm4gdGFnO1xuXG4gICAgfSBlbHNlIGlmIChsaW5rLmluZGV4T2YoXCJwb3J0Zm9saW9cIikgPj0wICkge1xuICAgICAgdGFnLmFwcGVuZENoaWxkKGZvb3RlclRleHRTZWNvbmQpO1xuICAgICAgdGFnLmhyZWYgPSBsaW5rO1xuICAgICAgdGFnLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gIH1cbiAgbWFpbENvbmNhdChtYWlsVG9MaW5rLCBjb250YWN0VG9NYWlsKTtcbiAgbWFpbENvbmNhdChmb290ZXJMaW5rRmlyc3QsIGdpdEh1Yik7XG4gIG1haWxDb25jYXQoZm9vdGVyTGlua1NlY29uZCwgcG9ydGZvbGlvKTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9jb21wb25lbnQuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n"); + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..455546e --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,54 @@ +var gulp = require('gulp'); +var sass = require('gulp-sass'); +var sourcemaps = require('gulp-sourcemaps'); +var browserSync = require('browser-sync').create(); +var watch = require('gulp-watch'); +var jslint = require('gulp-jslint'); +var plumber = require('gulp-plumber'); +var imagemin = require('gulp-imagemin'); + + +var Files = { + html: './index.html', + css_dest: './css', + scss_all: './sass/**/*.scss', + scss_main: './sass/*.scss', + image_max: './image/*', + image_min:'./dist/images' +} + + +gulp.task('image', function(){ + + return gulp.src(Files.image_min) + + .pipe(imagemin({interlaced: true, + progressive: true, + optimizationLevel: 5, + svgoPlugins: [{removeViewBox: true}] })) + .pipe(gulp.dest(Files.image_min)) +}); + +gulp.task('sass', function(){ + + return gulp.src(Files.scss_main) + .pipe(sourcemaps.init()) + .pipe(sass({outputStyle: 'expanded'})) + .on('error', sass.logError) + .pipe(sourcemaps.write()) + .pipe(gulp.dest(Files.css_dest)) + .pipe(browserSync.stream()) +}); + +gulp.task('default', ['sass'], function(){ + + browserSync.init({ + server: { + baseDir: './' + } + }); + + gulp.watch(Files.scss_all, ['sass']); + gulp.watch(Files.html, browserSync.reload); + +}); diff --git a/index.html b/index.html new file mode 100644 index 0000000..d6d668f --- /dev/null +++ b/index.html @@ -0,0 +1,65 @@ + + + + + + + + + Zadanie rekrutacyjne + + + + +
+ +
+
+ +
+ +
+ +
+ + + + + +
+ +
+
+ + Specyfikacja zadania "README" + +
+
+ +
+ + + + + + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..324684e --- /dev/null +++ b/js/app.js @@ -0,0 +1,2 @@ +require("./data.js"); +require("./component.js"); diff --git a/js/component.js b/js/component.js new file mode 100644 index 0000000..f3ce759 --- /dev/null +++ b/js/component.js @@ -0,0 +1,53 @@ +console.log(' world!'); + +document.addEventListener("DOMContentLoaded", function() { + console.log("DOM fully loaded and parsed"); + + var formattedBody = "Witam, \n\n Tereść wiadomości..."; + + var gitHub = document.createElement('a'); + var portfolio = document.createElement('a'); + var contactToMail = document.createElement('a'); + + document.getElementById("linkGitHubId").appendChild(gitHub); + document.getElementById("linkPortfolioId").appendChild(portfolio); + document.getElementById("contactMailId").appendChild(contactToMail); + + var footerTextFirst = document.createTextNode("GitHub"); + var footerTextSecond = document.createTextNode("Portfolio"); + var emailText = document.createTextNode("Kontakt"); + + var footerLinkFirst = "https://github.com/Vongriffe"; + var footerLinkSecond = "http://capalgerie.org/portfolio/"; + var mailToLink = "mailto:kamelboukoffa.mac@gmail.com?"; + + function mailConcat(link, tag) { + + var content = "Subject=Zadanie rekrutacyjne frontend&"; + + link+= ""; + + if (link.indexOf("@") >=0 ) { + content += "body=" + encodeURIComponent(formattedBody); + tag.appendChild(emailText); + tag.title = "napisz maila"; + tag.href = link + content; + return tag; + + } else if (link.indexOf("github") >=0 ) { + tag.appendChild(footerTextFirst); + tag.href = link; + tag.target = '_blank'; + return tag; + + } else if (link.indexOf("portfolio") >=0 ) { + tag.appendChild(footerTextSecond); + tag.href = link; + tag.target = '_blank'; + return tag; + } + } + mailConcat(mailToLink, contactToMail); + mailConcat(footerLinkFirst, gitHub); + mailConcat(footerLinkSecond, portfolio); +}); diff --git a/js/data.js b/js/data.js new file mode 100644 index 0000000..94af25e --- /dev/null +++ b/js/data.js @@ -0,0 +1,73 @@ +document.addEventListener("DOMContentLoaded", function() { + console.log("DOM fully loaded and parsed"); // test - załadowanie drzewa DOM + + var apiPath = "https://gwo.pl/booksApi/v1/search?query="; + var submitButton = document.getElementById("submit"); // Wyszukiwanie przycisku submit w DOM-ie + var userInput = document.getElementById("searchBook"); + var userInput2 = document.querySelector('#searchBook') + + var bookContainer = document.getElementById("showData"); + console.log(bookContainer); + var pageCounter = 1; + + submitButton.addEventListener("click", function(event) { // dodanie eventu na przycisk submit + this.url = apiPath + encodeURI(userInput.value); + + console.log(this.url); // sprawdzam w konsoli czy link jest dynamicznie zmieniany + + var ourRequest = new XMLHttpRequest(); + + ourRequest.open("GET", this.url); // używam metody "GET" aby pobrać dane + ourRequest.onload = function() { + + if (ourRequest.status >= 200 && ourRequest.status < 400) { + var ourData = JSON.parse(ourRequest.responseText); + renderHTML(ourData); // przekazuję zmienną zawierającą parsowane dane do funkcji renderHTML(). + + if (ourData.length === 0) { + var ourData = "
Brak pozycji, spróbuj ponownie.
"; + document.getElementById("showData").innerHTML = ourData; + } + + } else { + console.log("We connected to the server, but it returned an error."); + } + + }; + + ourRequest.onerror = function() { + console.log("Connection error"); + var webConnection = "
Brak połączenia z serwerem
"; + document.getElementById("showData").innerHTML = webConnection; + + }; + ourRequest.send(); + + function renderHTML(data) { // funkcja wrapująca div-y zawierające dane API do bookContainer + pageCounter++; + var htmlString = ""; + + var line = document.createElement("div"); + for (i = 0; i < data.length; i++) { + + console.log((data[i].title)); + + htmlString += + "
" + + "
" + + "
" + '' + "
" + + "
" + + "
" + "
    " + "
  • " + (data[i].title).replace(/\./g, '
  • ') + "
  • " + "
" + "
" + + "
" + "autorzy: " + (data[i].author) + "
" + + "
" + "ISBN: " + data[i].isbn + "
" + + "
" + "numer dopuszczenia MEN: " + data[i].men + "
" + + "
" + "liczba stron: " + data[i].pages_count + "
" + + "
" + "poziomy nauczania: " + JSON.stringify(data[i].levels).replace(/:|"|school|class|}|{|]|[[]/g, ' ') + "
" + // JSON.stringify zwraca mi ciąg zawierający tekst + "
" + "przedmiot: " + data[i].subject + "
" + + "
" + "rodzaj publikacji: " + data[i].type + "
" + "
" + "
" + + "
" + '' + "Przejdź do księgarni" + "" + "
" + "
"; + } + document.getElementById("showData").innerHTML = htmlString; // wykorzystałem atrybut innerHTML który zwraca kod HTML. + } + }); +}); diff --git a/my-index.html b/my-index.html new file mode 100644 index 0000000..5b28448 --- /dev/null +++ b/my-index.html @@ -0,0 +1,59 @@ + + + + + + + + + Zadanie rekrutacyjne + + + + +
+ +
+
+ +
+ +
+ +
+ + + + + +
+ +
+
+ + Specyfikacja zadania "README" + +
+
+ +
+ + + + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..d12702f --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "frontend_recruitment", + "version": "1.0.0", + "description": "Zadanie rekrutacyjne", + "main": "index.js", + "scripts": { + "server": "webpack --config webpack.config.js", + "dev": "webpack -d --watch", + "prod": "webpack -p", + "install": "npm install gulp --save-dev" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Vongriffe/frontend_recruitment.git" + }, + "author": "Kamel Boukoffa - Vongriffe", + "license": "ISC", + "bugs": { + "url": "https://github.com/Vongriffe/frontend_recruitment/issues" + }, + "homepage": "https://github.com/Vongriffe/frontend_recruitment#readme", + "devDependencies": { + "browser-sync": "^2.18.13", + "fast-json": "^1.1.0", + "gulp": "^3.9.1", + "gulp-debug": "^3.1.0", + "gulp-imagemin": "^3.4.0", + "gulp-jslint": "^1.0.10", + "gulp-plumber": "^1.1.0", + "gulp-sass": "^3.1.0", + "gulp-sourcemaps": "^2.6.1", + "gulp-watch": "^4.3.11", + "html-webpack-plugin": "^2.30.1", + "webpack": "^3.8.1" + } +} diff --git a/sass/main.scss b/sass/main.scss new file mode 100644 index 0000000..3d12438 --- /dev/null +++ b/sass/main.scss @@ -0,0 +1,234 @@ +@import "modules/_colors"; +@import "modules/_all"; +@import "modules/_flex"; +@import "modules/_media"; +@import "partials/_footer"; +@import "partials/_base"; + +// $mapOfPrimarColors: +// (redGwo:#d5041f, +// orangeGwo: #ea8300, +// yellowGwo: #f5bf00, +// whiteGwo: #FFF); +// fontMain: color +// +// $mapOfColors: +// (backgoundColor:#FFF, +// ColorBG: #f7f7f7, +// footerColor: #fe6103, +// linkCoror: #00c6ff, +// hoverColor: #9600ff, +// fontAdditional: #bababa); + + + +//////////////////////////// +// search / wyszukiwarka // +////////////////////////// + +section { + + form { + @include phone(95%); + @include smPhone(95%); + @include tablet(95%); + @include desktop(80%); + @include maxDesktop(80%); + @extend %form; + // @extend %clearfix; + @include inputSubmit(map-get($mapOfPrimarColors, redGwo), map-get($mapOfPrimarColors, whiteGwo)); + // background: map-get($mapOfColors, ColorBG); + + font-size: 16px; + + #searchBook { + @include phone(68%); + @include smPhone(68%); + @include tablet(68%); + @include desktop(70%); + @include maxDesktop(70%); + } + #submit { + width: 28%; + margin-left: 0.6rem; + } + input { + @extend %input; + border: 1px solid map-get($mapOfPrimarColors, orangeGwo); + color: map-get($mapOfPrimarColors, orangeGwo); + font-family: inherit; + width: 100%; + } + + input[type="placeholder"] { + color: map-get($mapOfColors, footerColor); + } + + #submit { + @include button(map-get($mapOfPrimarColors, orangeGwo), map-get($mapOfPrimarColors, redGwo), map-get($mapOfPrimarColors, whiteGwo), map-get($mapOfPrimarColors, whiteGwo)); + } + } + + ///////////////////// + //// render book//// + /////////////////// + + #showData { + @include flexbox(); + @include flex-wrap(wrap); + background: map-get($mapOfColors, fontAdditional); + + > :nth-of-type(1) { + padding: 2rem; + width: 100%; + a { + color: map-get($mapOfPrimarColors, whiteGwo); + text-decoration: none; + } + } + + width: 65rem; + font-size: 12px; + + @include phone(95%); + @include smPhone(95%); + @include tablet(95%); + @include desktop(80%); + @include maxDesktop(80%); + @extend %form; + + .book { + background: map-get($mapOfColors, ColorBG); + padding: 1rem; + margin: 1px; + width: 33.1%; + + @include bookHover(red, map-get($mapOfColors, backgoundColor), green, yellow) ; + + + @include flexbox(); + @include flex-direction(column); + @include flex-flow(wrap); + + @include tablet(49%); + @include phone(100%); + @include smPhone(49%); + @include desktop(33.1%); + @include maxDesktop(24.7%); + + > :nth-of-type(3) { + margin-top: 1rem; + } + .bookContent { + width: 100%; + .author { + padding-top: 1rem; + } + .title { + + ul { + list-style-type: none; + :nth-of-type(1) { + font-size: 25px; + font-weight: 800; + color: map-get($mapOfPrimarColors, fontMain); + } + :nth-of-type(2) { + font-size: 18px; + } + } + padding-bottom: 1rem; + border-bottom: 0.3rem solid map-get($mapOfPrimarColors, fontMain); + } + .bookInfo { + width: 100%; + // background: map-get($mapOfColors, ColorBG); + padding: 16px 12px 16px 16px; + } + .bookInfo > div { + color: map-get($mapOfColors, fontAdditional); + } + .bookImage { + width: 100%; + padding: 1rem; + height: 15rem; + background: map-get($mapOfPrimarColors, whiteGwo); + + img { + // box-shadow: 0 2px 2px 0 rgba(0,0,0,0.16), 0 0 0 1px rgba(0,0,0,0.08); + height: 13rem; + } + } + } + } + + ////////////////////////////////////////////////////// + /////////// button "Przejdź do księgarni" /////////// + //////////////////////////////////////////////////// + + div.btnDiv { + @include flexbox(); + @include align-self(flex-end); + width: 100%; + + .btnBook { + @include buttonStore(map-get($mapOfPrimarColors, orangeGwo), map-get($mapOfPrimarColors, redGwo), map-get($mapOfPrimarColors, whiteGwo), map-get($mapOfPrimarColors, whiteGwo)); + } + } + .note { + font-weight: 800; + color: map-get($mapOfPrimarColors, redGwo); + } + } +} + +/////////////////////////////// +/////////// footer /////////// +///////////////////////////// + +footer { + .full-of-color { + @include flexbox(); + @include flex-direction(row); + + @include phone(95%); + @include smPhone(95%); + @include tablet(95%); + @include desktop(80%); + @include maxDesktop(80%); + + @include fullOfMainColors; + margin: 0 auto; + + div { + padding: 0.2rem; + width: 30%; + } + } + .main-width { + @include flexbox(); + @include flex-direction(row-reverse ); + + // @include justify-content(space-between) + + @include phone(95%); + @include smPhone(95%); + @include tablet(95%); + @include desktop(80%); + @include maxDesktop(80%); + color: map-get($mapOfPrimarColors, whiteGwo); + background: map-get($mapOfPrimarColors, redGwo); + + margin: 0 auto; + font-size: 10px; + + a { + @include flexbox(); + background: map-get($mapOfPrimarColors, redGwo); + text-decoration: none; + color: map-get($mapOfPrimarColors, whiteGwo); + padding: 2rem; + width: 100%; + } + } +} diff --git a/sass/modules/_all.scss b/sass/modules/_all.scss new file mode 100644 index 0000000..7a36d44 --- /dev/null +++ b/sass/modules/_all.scss @@ -0,0 +1,176 @@ +@import "modules/_colors"; + +%clearfix { + &:after, + &:before { + content: ""; + display: block; + clear: both; + } +} + +%float { + float: left; + display: block; +} + +%input { + // box-sizing: border-box; + padding: 1rem; + outline: 0; + font-family: inherit; + font-size: 0.95em; +} + +%form { + padding: 0.5rem; + margin: 10px auto; + border-radius: 1px; +} + +@mixin inputSubmit($colorBackground, $color ) { + input[type="submit"] { + background: $colorBackground; + border-color: transparent; + color: $color; + cursor: pointer; + + :focus { + border: 0.1em solid darken(#ccc, 6%); + } + } +} + +@mixin button($colorBasic, $colorHover, $colorText, $colortextHover) { + + background: $colorBasic; + color: $colorText; + border: 0; + border-radius: 2px; + transition: .6s; + overflow: hidden; + text-decoration: none; + + &:focus{ + outline: 0; + } + &:before{ + font-family: 'iconfont'; + content: "\ea2d"; + display: block; + position: absolute; + height: 100%; + left: 0; + top: 0; + opacity: .5; + filter: blur(30px); + transform: translateX(-100px) skewX(-15deg); + } + &:after{ + content: ''; + display: block; + position: absolute; + width: 30px; + height: 100%; + left: 30px; + top: 0; + opacity: 0; + filter: blur(5px); + transform: translateX(-100px) skewX(-15deg); + } + &:hover{ + background: $colorHover; + cursor: pointer; + } +} + +$button-color: #2D3142; + +@mixin buttonStore($colorBasic, $colorHover, $colorText, $colortextHover) { + + display: block; + width: 100%; + margin-top: 1rem; + padding: 1rem 2rem; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + + cursor: pointer; + + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 1px; + text-decoration: none; + color: $colorText; + background-color: $colorBasic; + + &:hover { + background-color: $colorHover; + cursor: pointer; + box-shadow: 0 2px 5px rgba(0,0,0,0.1); + } + &:focus { + } + &:active { + } +} + +@mixin bookHover($colorBasic, $colorHover, $colorText, $colortextHover) { + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + + &:hover { + background-color: $colorHover; + top: 0; + // opacity: 0; + // filter: blur(5px); + // transform: translateX(-5px); + transform: translateY(-5px); + + box-shadow: 0 2px 5px rgba(0,0,0,0.5); + + } + &:focus { + } + &:active { + } +} + + +$total: 5; +$step: 90deg / $total; + +@mixin fullOfColors { + @for $i from 1 through $total { + :nth-child(#{$i}) { + background: adjust-hue(blue, $i * $step); + } + } +} + +@mixin fullOfMainColors { + + $primarColors: (#d5041f, #ea8300, #f5bf00, #FFF, #747a8a); + + @for $i from 1 through length($primarColors) { + :nth-child(#{length($primarColors)}n+#{$i}) { + background: nth($primarColors, $i) + } + } +} diff --git a/sass/modules/_colors.scss b/sass/modules/_colors.scss new file mode 100644 index 0000000..09eafe3 --- /dev/null +++ b/sass/modules/_colors.scss @@ -0,0 +1,19 @@ +$primary-color: #ea8300; +$additional-color: #d5041f; +$complementary-color: #f5bf00; +$neutralColor: #FFF; + +$mapOfPrimarColors: +(redGwo:#d5041f, +orangeGwo: #ea8300, +yellowGwo: #f5bf00, +whiteGwo: #FFF, +fontMain: #747a8a); + +$mapOfColors: +(backgoundColor:#FFF, +ColorBG: #f7f7f7, +footerColor: #fe6103, +linkCoror: #00c6ff, +hoverColor: #9600ff, +fontAdditional: #bababa); diff --git a/sass/modules/_flex.scss b/sass/modules/_flex.scss new file mode 100644 index 0000000..ef623da --- /dev/null +++ b/sass/modules/_flex.scss @@ -0,0 +1,133 @@ +// Flexbox display + @mixin flexbox() { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + } + + // The 'flex' shorthand + // - applies to: flex items + // , initial, auto, or none + @mixin flex($values) { + -webkit-box-flex: $values; + -moz-box-flex: $values; + -webkit-flex: $values; + -ms-flex: $values; + flex: $values; + } + + // Flex Flow Direction + // - applies to: flex containers + // row | row-reverse | column | column-reverse + @mixin flex-direction($direction) { + -webkit-flex-direction: $direction; + -moz-flex-direction: $direction; + -ms-flex-direction: $direction; + flex-direction: $direction; + } + + // Flex Line Wrapping + // umieszcza elementy w kolejnym anonimowym bloku + // - applies to: flex containers + // nowrap | wrap | wrap-reverse + @mixin flex-wrap($wrap) { + -webkit-flex-wrap: $wrap; + -moz-flex-wrap: $wrap; + -ms-flex-wrap: $wrap; + flex-wrap: $wrap; + } + + // Flex Direction and Wrap + // - applies to: flex containers + // || + @mixin flex-flow($flow) { + -webkit-flex-flow: $flow; + -moz-flex-flow: $flow; + -ms-flex-flow: $flow; + flex-flow: $flow; + } + + // Display Order + // - applies to: flex items + // + @mixin order($val) { + -webkit-box-ordinal-group: $val; + -moz-box-ordinal-group: $val; + -ms-flex-order: $val; + -webkit-order: $val; + order: $val; + } + + // Flex grow factor + // - applies to: flex items + // + @mixin flex-grow($grow) { + -webkit-flex-grow: $grow; + -moz-flex-grow: $grow; + -ms-flex-grow: $grow; + flex-grow: $grow; + } + + // Flex shrink + // - applies to: flex item shrink factor + // + @mixin flex-shrink($shrink) { + -webkit-flex-shrink: $shrink; + -moz-flex-shrink: $shrink; + -ms-flex-shrink: $shrink; + flex-shrink: $shrink; + } + + // Flex basis + // - the initial main size of the flex item + // - applies to: flex itemsnitial main size of the flex item + // + @mixin flex-basis($width) { + -webkit-flex-basis: $width; + -moz-flex-basis: $width; + -ms-flex-basis: $width; + flex-basis: $width; + } + + // Axis Alignment + // - applies to: flex containers + // flex-start | flex-end | center | space-between | space-around + @mixin justify-content($justify) { + -webkit-justify-content: $justify; + -moz-justify-content: $justify; + -ms-justify-content: $justify; + justify-content: $justify; + -ms-flex-pack: $justify; + } + + // Packing Flex Lines + // - applies to: multi-line flex containers + // flex-start | flex-end | center | space-between | space-around | stretch + @mixin align-content($align) { + -webkit-align-content: $align; + -moz-align-content: $align; + -ms-align-content: $align; + align-content: $align; + } + + // Cross-axis Alignment + // - applies to: flex containers + // flex-start | flex-end | center | baseline | stretch + @mixin align-items($align) { + -webkit-align-items: $align; + -moz-align-items: $align; + -ms-align-items: $align; + align-items: $align; + } + + // Cross-axis Alignment + // - applies to: flex items + // auto | flex-start | flex-end | center | baseline | stretch + @mixin align-self($align) { + -webkit-align-self: $align; + -moz-align-self: $align; + -ms-align-self: $align; + align-self: $align; + } diff --git a/sass/modules/_icon.scss b/sass/modules/_icon.scss new file mode 100644 index 0000000..e69de29 diff --git a/sass/modules/_media.scss b/sass/modules/_media.scss new file mode 100644 index 0000000..f539fc3 --- /dev/null +++ b/sass/modules/_media.scss @@ -0,0 +1,50 @@ +@import "modules/_colors"; + +$phone2: "(min-width: 100px) and (max-width: 299px)"; +$phone: "(min-width: 300px) and (max-width: 599px)"; +$smPhone: "(min-width: 600px) and (max-width: 767px)"; +$tablet: "(min-width: 768px) and (max-width: 1110px)"; +$desktop: "(min-width: 1111px) and (max-width: 1600px)"; +$maxDesktop: "(min-width: 1601px)"; + +@mixin phone2($width) { + @media #{$phone} { + @content; + width: $width; + } +} + +@mixin phone($width) { + @media #{$phone} { + @content; + width: $width; + } +} + +@mixin smPhone($width) { + @media #{$smPhone} { + @content; + width: $width; + } +} + +@mixin tablet($width) { + @media #{$tablet} { + @content; + width: $width; + } +} + +@mixin desktop($width) { + @media #{$desktop} { + @content; + width: $width; + } +} + +@mixin maxDesktop($width) { + @media #{$maxDesktop} { + @content; + width: $width; + } +} diff --git a/sass/partials/_base.scss b/sass/partials/_base.scss new file mode 100644 index 0000000..c0ce261 --- /dev/null +++ b/sass/partials/_base.scss @@ -0,0 +1,20 @@ +@import "modules/_colors"; + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + // background: map-get($mapOfColors, fontAdditional); + font-family: 'Open Sans', sans-serif; + text-rendering: optimizeSpeed; + image-rendering: pixelated; +} + +h2 { + color: map-get($mapOfPrimarColors, fontMain); + font-kerning: auto; + font-weight: 800; +} diff --git a/sass/partials/_footer.scss b/sass/partials/_footer.scss new file mode 100644 index 0000000..9186584 --- /dev/null +++ b/sass/partials/_footer.scss @@ -0,0 +1,2 @@ +footer { +} diff --git a/sass/partials/_header.scss b/sass/partials/_header.scss new file mode 100644 index 0000000..e69de29 diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..405335d --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,15 @@ +var HtmlWebpackPlugin = require('html-webpack-plugin'); + +module.exports = { + entry: './js/app.js', + output: { + // path: 'dist' + filename: './dist/bundle.js' + }, + plugins: [ + new HtmlWebpackPlugin({ + title: 'fronted_recruitment', + template: 'my-index.html', //load + }) + ] +};