diff --git a/.eslintrc b/.eslintrc index fa2cf7f0a..9b03fcda7 100644 --- a/.eslintrc +++ b/.eslintrc @@ -12,6 +12,9 @@ "no-promise-executor-return": "off", "consistent-return": "off", "no-return-await": "off", + "no-plusplus": "off", + "camelcase": "off", + "object-curly-newline": "off", }, "env": { "es6": true, diff --git a/.gitignore b/.gitignore index c7164714d..1f8de325b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ node_modules -dist .env cypress.env.json \ No newline at end of file diff --git a/deploy/images/modal_close_button.png b/deploy/images/modal_close_button.png new file mode 100644 index 000000000..cbe1b680f Binary files /dev/null and b/deploy/images/modal_close_button.png differ diff --git a/dist/06f0f15cfcb8d681b62c.png b/dist/06f0f15cfcb8d681b62c.png new file mode 100644 index 000000000..a181ac87a Binary files /dev/null and b/dist/06f0f15cfcb8d681b62c.png differ diff --git a/dist/2e162b4fefb34cd7ed8d.png b/dist/2e162b4fefb34cd7ed8d.png new file mode 100644 index 000000000..b2a61da8e Binary files /dev/null and b/dist/2e162b4fefb34cd7ed8d.png differ diff --git a/dist/6328741810b732410eec.png b/dist/6328741810b732410eec.png new file mode 100644 index 000000000..a17bed7c6 Binary files /dev/null and b/dist/6328741810b732410eec.png differ diff --git a/dist/6c9611deedf4b85849c9.png b/dist/6c9611deedf4b85849c9.png new file mode 100644 index 000000000..241de4f2d Binary files /dev/null and b/dist/6c9611deedf4b85849c9.png differ diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 000000000..cbebee4ac --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,484 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/common.css": +/*!******************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/common.css ***! + \******************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! ../images/search_button.png */ \"./src/images/search_button.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"* {\\r\\n box-sizing: border-box !important;\\r\\n}\\r\\n\\r\\nbody {\\r\\n position: relative;\\r\\n\\r\\n background-color: var(--black);\\r\\n\\r\\n font-family: Roboto;\\r\\n font-size: 14px;\\r\\n color: var(--white);\\r\\n}\\r\\n\\r\\na {\\r\\n color: inherit;\\r\\n text-decoration: none;\\r\\n}\\r\\n\\r\\nbutton {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n#app {\\r\\n margin-top: 150px;\\r\\n padding-bottom: 48px;\\r\\n}\\r\\n\\r\\n*:focus {\\r\\n outline: none;\\r\\n}\\r\\n.item-view,\\r\\n.item-test {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.item-view {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: center;\\r\\n max-width: 1200px;\\r\\n margin: 0 auto;\\r\\n}\\r\\n\\r\\n.item-view h2 {\\r\\n font-size: 2rem;\\r\\n font-weight: bold;\\r\\n user-select: none;\\r\\n}\\r\\n\\r\\n/* https://andrew.hedges.name/experiments/aspect_ratio/ */\\r\\n\\r\\n.item-list {\\r\\n display: grid;\\r\\n margin: 48px 0;\\r\\n grid-template-columns: repeat(4, 180px);\\r\\n grid-column-gap: 160px;\\r\\n grid-row-gap: 48px;\\r\\n}\\r\\n\\r\\n.item-card {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\n\\r\\n.item-thumbnail {\\r\\n border-radius: 8px;\\r\\n width: 180px;\\r\\n height: 270px;\\r\\n background-size: contain;\\r\\n}\\r\\n\\r\\n.item-title {\\r\\n margin-top: 16px;\\r\\n font-size: 1.2rem;\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\n.item-score {\\r\\n margin-top: 16px;\\r\\n font-size: 1.2rem;\\r\\n display: inline-block;\\r\\n vertical-align: middle;\\r\\n}\\r\\n\\r\\n.item-score::after {\\r\\n margin-left: 8px;\\r\\n}\\r\\n\\r\\n.item-title.skeleton::after,\\r\\n.item-score.skeleton::after {\\r\\n font-size: 0;\\r\\n content: 'loading';\\r\\n}\\r\\n\\r\\n.full-width {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.last-item {\\r\\n margin-top: 48px;\\r\\n}\\r\\n\\r\\nbutton.btn {\\r\\n border: 0;\\r\\n border-radius: 8px;\\r\\n height: 30px;\\r\\n color: var(--white);\\r\\n}\\r\\n\\r\\nbutton.primary {\\r\\n background: var(--red);\\r\\n}\\r\\n\\r\\n.item-card .skeleton {\\r\\n background: linear-gradient(-90deg, var(--gray), var(--light-gray), var(--gray), var(--light-gray));\\r\\n background-size: 400%;\\r\\n animation: skeleton-animation 5s infinite ease-out;\\r\\n border-radius: 8px;\\r\\n}\\r\\n\\r\\n@keyframes skeleton-animation {\\r\\n 0% {\\r\\n background-position: 0% 50%;\\r\\n }\\r\\n 50% {\\r\\n background-position: 100% 50%;\\r\\n }\\r\\n 100% {\\r\\n background-position: 0% 50%;\\r\\n }\\r\\n}\\r\\n\\r\\nheader {\\r\\n width: 100%;\\r\\n min-width: 1200px;\\r\\n height: 72px;\\r\\n background-color: var(--black);\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 0 20px;\\r\\n border-bottom: 1px solid var(--white);\\r\\n margin-bottom: 48px;\\r\\n\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n z-index: 10;\\r\\n}\\r\\n\\r\\nheader h1 {\\r\\n cursor: pointer;\\r\\n user-select: none;\\r\\n font-size: 2rem;\\r\\n font-weight: bold;\\r\\n letter-spacing: -0.1rem;\\r\\n color: var(--red);\\r\\n}\\r\\n\\r\\n#home-button {\\r\\n background-color: transparent;\\r\\n border: none;\\r\\n}\\r\\n\\r\\nheader > .search-box {\\r\\n background: var(--white);\\r\\n padding: 8px;\\r\\n border-radius: 4px;\\r\\n}\\r\\n\\r\\nheader .search-box > input {\\r\\n border: 0;\\r\\n}\\r\\n\\r\\nheader .search-box > .search-button {\\r\\n width: 14px;\\r\\n border: 0;\\r\\n text-indent: -1000rem;\\r\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") transparent no-repeat 0 1px;\\r\\n background-size: contain;\\r\\n}\\r\\n\\r\\n@media only screen and (max-width: 834px) {\\r\\n .item-view {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: center;\\r\\n max-width: 674px;\\r\\n margin: 0 auto;\\r\\n }\\r\\n\\r\\n .item-list {\\r\\n display: grid;\\r\\n margin: 36px 0;\\r\\n grid-template-columns: repeat(3, 180px);\\r\\n grid-column-gap: 64px;\\r\\n grid-row-gap: 55px;\\r\\n }\\r\\n\\r\\n header {\\r\\n min-width: 674px;\\r\\n }\\r\\n}\\r\\n\\r\\n@media only screen and (max-width: 390px) {\\r\\n .item-view {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: center;\\r\\n max-width: 316px;\\r\\n margin: 0 auto;\\r\\n }\\r\\n\\r\\n .item-list {\\r\\n display: grid;\\r\\n margin: 24px 0;\\r\\n grid-template-columns: repeat(2, 140px);\\r\\n grid-column-gap: 36px;\\r\\n grid-row-gap: 32px;\\r\\n }\\r\\n\\r\\n .item-thumbnail {\\r\\n border-radius: 15px;\\r\\n width: 140px;\\r\\n height: 220px;\\r\\n background-size: contain;\\r\\n }\\r\\n}\\r\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/common.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/modal.css": +/*!*****************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/modal.css ***! + \*****************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! ../images/modal_close_button.png */ \"./src/images/modal_close_button.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".modal {\\r\\n display: none;\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n}\\r\\n\\r\\n.modal--open {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.modal-backdrop {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n right: 0;\\r\\n bottom: 0;\\r\\n left: 0;\\r\\n\\r\\n background: rgba(0, 0, 0, 0.6);\\r\\n\\r\\n z-index: 100;\\r\\n}\\r\\n\\r\\n.modal-container {\\r\\n position: fixed;\\r\\n top: 50%;\\r\\n left: 50%;\\r\\n transform: translate(-50%, -50%);\\r\\n gap: 0px;\\r\\n width: 740px;\\r\\n height: 544px;\\r\\n\\r\\n border-radius: 8px;\\r\\n background-color: rgba(33, 33, 34, 1);\\r\\n\\r\\n z-index: 200;\\r\\n}\\r\\n\\r\\n.modal-header {\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n width: 740px;\\r\\n height: 60px;\\r\\n\\r\\n border-bottom: 1px solid rgba(241, 241, 241, 0.25);\\r\\n}\\r\\n\\r\\n.detail-title {\\r\\n top: 18px;\\r\\n left: 32px;\\r\\n gap: 0px;\\r\\n\\r\\n width: 676px;\\r\\n height: 24px;\\r\\n}\\r\\n\\r\\n.modal-close-button {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n\\r\\n border: none;\\r\\n background-color: transparent;\\r\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\r\\n}\\r\\n\\r\\n.modal-body {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 40px 32px;\\r\\n gap: 32px;\\r\\n\\r\\n width: 740px;\\r\\n height: 484px;\\r\\n}\\r\\n\\r\\n.detail-poster {\\r\\n position: fixed;\\r\\n top: 96px;\\r\\n left: 32px;\\r\\n gap: 0px;\\r\\n\\r\\n width: 260px;\\r\\n height: 400px;\\r\\n}\\r\\n\\r\\n.modal-contents {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n position: fixed;\\r\\n top: 96px;\\r\\n left: 324px;\\r\\n\\r\\n width: 385px;\\r\\n height: 400px;\\r\\n}\\r\\n\\r\\n.detail-text-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n margin-bottom: auto;\\r\\n margin-top: 0;\\r\\n}\\r\\n\\r\\n.detail-text-top {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 16px;\\r\\n\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.detail-genres {\\r\\n}\\r\\n\\r\\n.detail-vote_average {\\r\\n}\\r\\n\\r\\n.detail-overview {\\r\\n max-height: 280px;\\r\\n overflow-y: auto;\\r\\n}\\r\\n\\r\\n.my-vote {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 0 18px;\\r\\n margin-top: auto;\\r\\n margin-bottom: 0;\\r\\n\\r\\n width: 384px;\\r\\n height: 64px;\\r\\n\\r\\n border-radius: 16px;\\r\\n background-color: rgba(56, 56, 57, 1);\\r\\n}\\r\\n\\r\\n.my-vote-title {\\r\\n margin-right: 10px;\\r\\n}\\r\\n\\r\\n.my-vote-body {\\r\\n display: flex;\\r\\n gap: 0;\\r\\n margin-right: 10px;\\r\\n\\r\\n width: 160px;\\r\\n}\\r\\n\\r\\n.my-vote-body button {\\r\\n padding: 0;\\r\\n\\r\\n border: none;\\r\\n background-color: transparent;\\r\\n}\\r\\n\\r\\n.my-vote-body img {\\r\\n width: 32px;\\r\\n height: 32px;\\r\\n}\\r\\n\\r\\n.my-vote-number {\\r\\n margin-right: 10px;\\r\\n}\\r\\n\\r\\n.my-vote-description {\\r\\n}\\r\\n\\r\\n@media only screen and (max-width: 390px) {\\r\\n .modal-container {\\r\\n position: fixed;\\r\\n top: auto;\\r\\n bottom: 0;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n gap: 0px;\\r\\n width: 390px;\\r\\n height: 485px;\\r\\n border-radius: 8px;\\r\\n background-color: rgba(33, 33, 34, 1);\\r\\n z-index: 200;\\r\\n }\\r\\n\\r\\n .modal-header {\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n width: 390px;\\r\\n height: 60px;\\r\\n\\r\\n border-bottom: 1px solid rgba(241, 241, 241, 0.25);\\r\\n }\\r\\n\\r\\n .detail-title {\\r\\n top: 18px;\\r\\n left: 32px;\\r\\n gap: 0px;\\r\\n\\r\\n width: 330px;\\r\\n height: 24px;\\r\\n }\\r\\n\\r\\n .modal-close-button {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n\\r\\n border: none;\\r\\n background-color: transparent;\\r\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\r\\n }\\r\\n\\r\\n .modal-body {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 40px 32px;\\r\\n gap: 0px;\\r\\n\\r\\n width: 326px;\\r\\n height: 232px;\\r\\n }\\r\\n\\r\\n .detail-poster {\\r\\n display: none;\\r\\n width: 0px;\\r\\n height: 0px;\\r\\n }\\r\\n\\r\\n .modal-contents {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n margin-bottom: 36px;\\r\\n position: fixed;\\r\\n top: 92px;\\r\\n left: 32px;\\r\\n\\r\\n width: 326px;\\r\\n height: 232px;\\r\\n }\\r\\n\\r\\n .detail-text-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n margin-bottom: 16px;\\r\\n margin-top: 0;\\r\\n }\\r\\n\\r\\n .detail-text-top {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 16px;\\r\\n\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .detail-genres {\\r\\n }\\r\\n\\r\\n .detail-vote_average {\\r\\n }\\r\\n\\r\\n .detail-overview {\\r\\n max-height: 240px;\\r\\n overflow-y: auto;\\r\\n }\\r\\n\\r\\n .my-vote {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 0 18px;\\r\\n margin-top: auto;\\r\\n margin-bottom: 0;\\r\\n\\r\\n width: 326px;\\r\\n height: 64px;\\r\\n\\r\\n border-radius: 12px;\\r\\n background-color: rgba(56, 56, 57, 1);\\r\\n }\\r\\n\\r\\n .my-vote-title {\\r\\n margin-right: 10px;\\r\\n }\\r\\n\\r\\n .my-vote-body {\\r\\n display: flex;\\r\\n gap: 0;\\r\\n margin-right: 10px;\\r\\n\\r\\n width: 160px;\\r\\n }\\r\\n\\r\\n .my-vote-body button {\\r\\n padding: 0;\\r\\n\\r\\n border: none;\\r\\n background-color: transparent;\\r\\n }\\r\\n\\r\\n .my-vote-body img {\\r\\n width: 32px;\\r\\n height: 32px;\\r\\n }\\r\\n\\r\\n .my-vote-number {\\r\\n margin-right: 10px;\\r\\n }\\r\\n\\r\\n .my-vote-description {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/modal.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/reset.css": +/*!*****************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/reset.css ***! + \*****************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* http://meyerweb.com/eric/tools/css/reset/\\r\\n v2.0 | 20110126\\r\\n License: none (public domain)\\r\\n*/\\r\\n\\r\\nhtml,\\r\\nbody,\\r\\ndiv,\\r\\nspan,\\r\\napplet,\\r\\nobject,\\r\\niframe,\\r\\nh1,\\r\\nh2,\\r\\nh3,\\r\\nh4,\\r\\nh5,\\r\\nh6,\\r\\np,\\r\\nblockquote,\\r\\npre,\\r\\na,\\r\\nabbr,\\r\\nacronym,\\r\\naddress,\\r\\nbig,\\r\\ncite,\\r\\ncode,\\r\\ndel,\\r\\ndfn,\\r\\nem,\\r\\nimg,\\r\\nins,\\r\\nkbd,\\r\\nq,\\r\\ns,\\r\\nsamp,\\r\\nsmall,\\r\\nstrike,\\r\\nstrong,\\r\\nsub,\\r\\nsup,\\r\\ntt,\\r\\nvar,\\r\\nb,\\r\\nu,\\r\\ni,\\r\\ncenter,\\r\\ndl,\\r\\ndt,\\r\\ndd,\\r\\nol,\\r\\nul,\\r\\nli,\\r\\nfieldset,\\r\\nform,\\r\\nlabel,\\r\\nlegend,\\r\\ntable,\\r\\ncaption,\\r\\ntbody,\\r\\ntfoot,\\r\\nthead,\\r\\ntr,\\r\\nth,\\r\\ntd,\\r\\narticle,\\r\\naside,\\r\\ncanvas,\\r\\ndetails,\\r\\nembed,\\r\\nfigure,\\r\\nfigcaption,\\r\\nfooter,\\r\\nheader,\\r\\nhgroup,\\r\\nmenu,\\r\\nnav,\\r\\noutput,\\r\\nruby,\\r\\nsection,\\r\\nsummary,\\r\\ntime,\\r\\nmark,\\r\\naudio,\\r\\nvideo {\\r\\n margin: 0;\\r\\n padding: 0;\\r\\n border: 0;\\r\\n font-size: 100%;\\r\\n font: inherit;\\r\\n vertical-align: baseline;\\r\\n}\\r\\n/* HTML5 display-role reset for older browsers */\\r\\narticle,\\r\\naside,\\r\\ndetails,\\r\\nfigcaption,\\r\\nfigure,\\r\\nfooter,\\r\\nheader,\\r\\nhgroup,\\r\\nmenu,\\r\\nnav,\\r\\nsection {\\r\\n display: block;\\r\\n}\\r\\nbody {\\r\\n line-height: 1;\\r\\n}\\r\\nol,\\r\\nul {\\r\\n list-style: none;\\r\\n}\\r\\nblockquote,\\r\\nq {\\r\\n quotes: none;\\r\\n}\\r\\nblockquote:before,\\r\\nblockquote:after,\\r\\nq:before,\\r\\nq:after {\\r\\n content: '';\\r\\n content: none;\\r\\n}\\r\\ntable {\\r\\n border-collapse: collapse;\\r\\n border-spacing: 0;\\r\\n}\\r\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/reset.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/theme.css": +/*!*****************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/theme.css ***! + \*****************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Color ******************************************/\\r\\n:root {\\r\\n --white: #fff;\\r\\n --light-gray: #f0f0f0;\\r\\n --gray: #aaa;\\r\\n --black: #222;\\r\\n --red: #f33f3f;\\r\\n}\\r\\n\\r\\n/* Typography *************************************/\\r\\n.text-detail-title {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n line-height: 24px;\\r\\n letter-spacing: 0.15px;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.text-detail-contents {\\r\\n font-size: 16px;\\r\\n font-weight: 400;\\r\\n line-height: 24px;\\r\\n letter-spacing: 0.5px;\\r\\n text-align: left;\\r\\n color: rgba(241, 241, 241, 1);\\r\\n}\\r\\n\\r\\n.text-detail-vote {\\r\\n font-size: 16px;\\r\\n font-weight: 700;\\r\\n line-height: 24px;\\r\\n letter-spacing: 0.5px;\\r\\n text-align: left;\\r\\n}\\r\\n\\r\\n.text-detail-vote-contents {\\r\\n font-size: 16px;\\r\\n font-weight: 400;\\r\\n line-height: 24px;\\r\\n letter-spacing: 0.5px;\\r\\n text-align: center;\\r\\n}\\r\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/theme.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/***/ ((module) => { + +eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/css-loader/dist/runtime/api.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/getUrl.js": +/*!********************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! + \********************************************************/ +/***/ ((module) => { + +eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/css-loader/dist/runtime/getUrl.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": +/*!**************************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! + \**************************************************************/ +/***/ ((module) => { + +eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/css-loader/dist/runtime/noSourceMaps.js?"); + +/***/ }), + +/***/ "./src/css/common.css": +/*!****************************!*\ + !*** ./src/css/common.css ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_common_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./common.css */ \"./node_modules/css-loader/dist/cjs.js!./src/css/common.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_common_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_common_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_common_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_common_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/common.css?"); + +/***/ }), + +/***/ "./src/css/modal.css": +/*!***************************!*\ + !*** ./src/css/modal.css ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_modal_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./modal.css */ \"./node_modules/css-loader/dist/cjs.js!./src/css/modal.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_modal_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_modal_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_modal_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_modal_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/modal.css?"); + +/***/ }), + +/***/ "./src/css/reset.css": +/*!***************************!*\ + !*** ./src/css/reset.css ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./reset.css */ \"./node_modules/css-loader/dist/cjs.js!./src/css/reset.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/reset.css?"); + +/***/ }), + +/***/ "./src/css/theme.css": +/*!***************************!*\ + !*** ./src/css/theme.css ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_theme_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./theme.css */ \"./node_modules/css-loader/dist/cjs.js!./src/css/theme.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_theme_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_theme_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_theme_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_theme_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/css/theme.css?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": +/*!****************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! + \****************************************************************************/ +/***/ ((module) => { + +eval("\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js": +/*!********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! + \********************************************************************/ +/***/ ((module) => { + +eval("\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/insertBySelector.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js": +/*!**********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! + \**********************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/insertStyleElement.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js": +/*!***************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! + \***************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/styleDomAPI.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js": +/*!*********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! + \*********************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://javascript-movie-review/./node_modules/style-loader/dist/runtime/styleTagTransform.js?"); + +/***/ }), + +/***/ "./src/App.ts": +/*!********************!*\ + !*** ./src/App.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"./src/constants.ts\");\n/* harmony import */ var _store_MovieStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store/MovieStore */ \"./src/store/MovieStore.ts\");\n/* harmony import */ var _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./store/SearchMovieStore */ \"./src/store/SearchMovieStore.ts\");\n/* harmony import */ var _components_SearchBox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SearchBox */ \"./src/components/SearchBox.ts\");\n/* harmony import */ var _components_MovieCard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/MovieCard */ \"./src/components/MovieCard.ts\");\n/* harmony import */ var _components_Modal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Modal */ \"./src/components/Modal.ts\");\n/* harmony import */ var _images_logo_png__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./images/logo.png */ \"./src/images/logo.png\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _App_instances, _App_pageType, _App_observer, _App_isLoading, _App_skeletonBySize, _App_insertLogo, _App_getSkeletonCount, _App_generateMovieList, _App_generateSearchMovieList, _App_generateItemList, _App_changeTitle, _App_appendMovieCard, _App_generateSkeletonUI, _App_removeSkeletonUI, _App_setupIntersectionObserver, _App_observeSentinel, _App_handleIntersection, _App_loadMoreMovies, _App_removePreviousError, _App_generateSearchBox, _App_addHomeButtonEvent, _App_renderAllMovieList, _App_initEventListeners, _App_handleMovieCardClick;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass App {\r\n constructor() {\r\n _App_instances.add(this);\r\n _App_pageType.set(this, 'popular');\r\n _App_observer.set(this, null);\r\n _App_isLoading.set(this, false);\r\n _App_skeletonBySize.set(this, _constants__WEBPACK_IMPORTED_MODULE_0__.SKELETON_UI_PC);\r\n _App_handleIntersection.set(this, (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && entry.intersectionRatio >= 0.8 && !__classPrivateFieldGet(this, _App_isLoading, \"f\")) {\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_loadMoreMovies).call(this);\r\n }\r\n });\r\n });\r\n }\r\n run() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_insertLogo).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateMovieList).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateSearchBox).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_addHomeButtonEvent).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_initEventListeners).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_setupIntersectionObserver).call(this);\r\n });\r\n }\r\n}\r\n_App_pageType = new WeakMap(), _App_observer = new WeakMap(), _App_isLoading = new WeakMap(), _App_skeletonBySize = new WeakMap(), _App_handleIntersection = new WeakMap(), _App_instances = new WeakSet(), _App_insertLogo = function _App_insertLogo() {\r\n const homeButton = document.getElementById('home-button');\r\n const imgElement = document.createElement('img');\r\n imgElement.src = _images_logo_png__WEBPACK_IMPORTED_MODULE_6__;\r\n imgElement.alt = 'MovieList 로고';\r\n homeButton === null || homeButton === void 0 ? void 0 : homeButton.appendChild(imgElement);\r\n}, _App_getSkeletonCount = function _App_getSkeletonCount() {\r\n const width = window.innerWidth;\r\n let skeletonCount = __classPrivateFieldGet(this, _App_skeletonBySize, \"f\");\r\n if (width <= 390) {\r\n skeletonCount = _constants__WEBPACK_IMPORTED_MODULE_0__.SKELETON_UI_MOBILE;\r\n }\r\n else if (width <= 834) {\r\n skeletonCount = _constants__WEBPACK_IMPORTED_MODULE_0__.SKELETON_UI_TABLET;\r\n }\r\n return skeletonCount;\r\n}, _App_generateMovieList = function _App_generateMovieList() {\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateItemList).call(this, '지금 인기 있는 영화', () => __awaiter(this, void 0, void 0, function* () { return yield _store_MovieStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getMovies(); }), _store_MovieStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\r\n}, _App_generateSearchMovieList = function _App_generateSearchMovieList() {\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateItemList).call(this, `\"${_store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query}\" 검색 결과`, () => __awaiter(this, void 0, void 0, function* () { return yield _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].searchMovies(); }), _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\r\n}, _App_generateItemList = function _App_generateItemList(title, fetchData, store) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_changeTitle).call(this, title);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_removePreviousError).call(this);\r\n const ulElement = document.querySelector('ul.item-list');\r\n if (ulElement) {\r\n const skeletonCount = __classPrivateFieldGet(this, _App_instances, \"m\", _App_getSkeletonCount).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateSkeletonUI).call(this, ulElement, skeletonCount);\r\n const newData = yield fetchData();\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_removeSkeletonUI).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_appendMovieCard).call(this, newData, ulElement);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_observeSentinel).call(this);\r\n }\r\n });\r\n}, _App_changeTitle = function _App_changeTitle(title) {\r\n const h2Element = document.querySelector('h2');\r\n if (h2Element) {\r\n h2Element.textContent = title;\r\n }\r\n}, _App_appendMovieCard = function _App_appendMovieCard(newData, ulElement) {\r\n newData.forEach((movieData) => {\r\n const card = new _components_MovieCard__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\r\n movie: movieData,\r\n });\r\n ulElement === null || ulElement === void 0 ? void 0 : ulElement.appendChild(card.element);\r\n });\r\n}, _App_generateSkeletonUI = function _App_generateSkeletonUI(ulElement, skeletonCount) {\r\n const fragment = new DocumentFragment();\r\n for (let i = 0; i < skeletonCount; i++) {\r\n const card = new _components_MovieCard__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\r\n classes: ['skeleton-container'],\r\n });\r\n fragment.appendChild(card.element);\r\n }\r\n ulElement === null || ulElement === void 0 ? void 0 : ulElement.appendChild(fragment);\r\n}, _App_removeSkeletonUI = function _App_removeSkeletonUI() {\r\n const skeletonElements = document.querySelectorAll('.skeleton-container');\r\n if (skeletonElements) {\r\n skeletonElements.forEach((skeletonElement) => {\r\n var _a;\r\n (_a = skeletonElement.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(skeletonElement);\r\n });\r\n }\r\n}, _App_setupIntersectionObserver = function _App_setupIntersectionObserver() {\r\n const options = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0.8,\r\n };\r\n __classPrivateFieldSet(this, _App_observer, new IntersectionObserver(__classPrivateFieldGet(this, _App_handleIntersection, \"f\"), options), \"f\");\r\n const sentinel = document.createElement('li');\r\n sentinel.classList.add('sentinel');\r\n __classPrivateFieldGet(this, _App_observer, \"f\").observe(sentinel);\r\n}, _App_observeSentinel = function _App_observeSentinel() {\r\n const sentinel = document.querySelector('.sentinel');\r\n if (sentinel && __classPrivateFieldGet(this, _App_observer, \"f\")) {\r\n __classPrivateFieldGet(this, _App_observer, \"f\").observe(sentinel);\r\n }\r\n}, _App_loadMoreMovies = function _App_loadMoreMovies() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (_store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].presentPage === _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].totalPages)\r\n return;\r\n __classPrivateFieldSet(this, _App_isLoading, true, \"f\");\r\n if (__classPrivateFieldGet(this, _App_pageType, \"f\") === 'popular') {\r\n yield _store_MovieStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].increasePageCount();\r\n yield __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateMovieList).call(this);\r\n }\r\n else {\r\n yield _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].increasePageCount();\r\n yield __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateSearchMovieList).call(this);\r\n }\r\n __classPrivateFieldSet(this, _App_isLoading, false, \"f\");\r\n });\r\n}, _App_removePreviousError = function _App_removePreviousError() {\r\n var _a;\r\n const previousError = document.getElementById('error-page');\r\n if (previousError) {\r\n (_a = previousError.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(previousError);\r\n }\r\n}, _App_generateSearchBox = function _App_generateSearchBox() {\r\n const header = document.querySelector('header');\r\n const ulElement = document.querySelector('ul.item-list');\r\n const searchBox = new _components_SearchBox__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\r\n searchInputSubmit: (query) => {\r\n if (ulElement)\r\n ulElement.innerHTML = '';\r\n __classPrivateFieldSet(this, _App_pageType, 'search', \"f\");\r\n _store_SearchMovieStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query = query;\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_generateSearchMovieList).call(this);\r\n },\r\n });\r\n header === null || header === void 0 ? void 0 : header.appendChild(searchBox.element);\r\n}, _App_addHomeButtonEvent = function _App_addHomeButtonEvent() {\r\n const homeButton = document.getElementById('home-button');\r\n if (homeButton) {\r\n homeButton.addEventListener('click', () => {\r\n __classPrivateFieldSet(this, _App_pageType, 'popular', \"f\");\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_changeTitle).call(this, '지금 인기 있는 영화');\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_removePreviousError).call(this);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_renderAllMovieList).call(this);\r\n });\r\n }\r\n}, _App_renderAllMovieList = function _App_renderAllMovieList() {\r\n const movieDatas = _store_MovieStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].movies;\r\n if (movieDatas.length === 0)\r\n return;\r\n const ulElement = document.querySelector('ul.item-list');\r\n if (!ulElement)\r\n return;\r\n ulElement.innerHTML = '';\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_appendMovieCard).call(this, movieDatas, ulElement);\r\n __classPrivateFieldGet(this, _App_instances, \"m\", _App_observeSentinel).call(this);\r\n}, _App_initEventListeners = function _App_initEventListeners() {\r\n const itemList = document.querySelector('ul.item-list');\r\n if (itemList) {\r\n itemList.addEventListener('click', __classPrivateFieldGet(this, _App_instances, \"m\", _App_handleMovieCardClick).bind(this));\r\n }\r\n}, _App_handleMovieCardClick = function _App_handleMovieCardClick(event) {\r\n const clickedElement = event.target.closest('.item-card');\r\n if (clickedElement) {\r\n const movieId = Number(clickedElement.dataset.movieid);\r\n const modal = _components_Modal__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getInstance(movieId);\r\n modal.openModal();\r\n }\r\n};\r\n\n\n//# sourceURL=webpack://javascript-movie-review/./src/App.ts?"); + +/***/ }), + +/***/ "./src/components/ErrorRender.ts": +/*!***************************************!*\ + !*** ./src/components/ErrorRender.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ErrorRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ \"./src/constants.ts\");\nvar __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ErrorRender_instances, _ErrorRender_errorPageElement, _ErrorRender_status, _ErrorRender_renderNoResult, _ErrorRender_renderClientError, _ErrorRender_renderServerError;\r\n\r\nclass ErrorRender {\r\n constructor(status) {\r\n _ErrorRender_instances.add(this);\r\n _ErrorRender_errorPageElement.set(this, document.createElement('div'));\r\n _ErrorRender_status.set(this, '');\r\n __classPrivateFieldSet(this, _ErrorRender_status, status, \"f\");\r\n __classPrivateFieldGet(this, _ErrorRender_errorPageElement, \"f\").id = 'error-page';\r\n const itemView = document.querySelector('.item-view');\r\n if (itemView) {\r\n itemView.appendChild(__classPrivateFieldGet(this, _ErrorRender_errorPageElement, \"f\"));\r\n }\r\n }\r\n renderError() {\r\n if (__classPrivateFieldGet(this, _ErrorRender_status, \"f\")[0] === _constants__WEBPACK_IMPORTED_MODULE_0__.ERROR_2XX)\r\n __classPrivateFieldGet(this, _ErrorRender_instances, \"m\", _ErrorRender_renderNoResult).call(this);\r\n if (__classPrivateFieldGet(this, _ErrorRender_status, \"f\")[0] === _constants__WEBPACK_IMPORTED_MODULE_0__.ERROR_4XX)\r\n __classPrivateFieldGet(this, _ErrorRender_instances, \"m\", _ErrorRender_renderClientError).call(this);\r\n if (__classPrivateFieldGet(this, _ErrorRender_status, \"f\")[0] === _constants__WEBPACK_IMPORTED_MODULE_0__.ERROR_5XX)\r\n __classPrivateFieldGet(this, _ErrorRender_instances, \"m\", _ErrorRender_renderServerError).call(this);\r\n }\r\n}\r\n_ErrorRender_errorPageElement = new WeakMap(), _ErrorRender_status = new WeakMap(), _ErrorRender_instances = new WeakSet(), _ErrorRender_renderNoResult = function _ErrorRender_renderNoResult() {\r\n __classPrivateFieldGet(this, _ErrorRender_errorPageElement, \"f\").innerHTML = '
${movie.title}
\r\n${movie.vote_average.toFixed(2)}
${movie.title}
-${movie.vote_average.toFixed(2)}
${title}
+${voteAverage}