diff --git a/4/bundle.023899bbf41e29089a38.js.map b/4/bundle.023899bbf41e29089a38.js.map deleted file mode 100644 index 6e193da..0000000 --- a/4/bundle.023899bbf41e29089a38.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bundle.023899bbf41e29089a38.js","mappings":"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","sources":["webpack://big-trip/./node_modules/dayjs/dayjs.min.js","webpack://big-trip/webpack/bootstrap","webpack://big-trip/webpack/runtime/compat get default export","webpack://big-trip/webpack/runtime/define property getters","webpack://big-trip/webpack/runtime/hasOwnProperty shorthand","webpack://big-trip/./src/render.js","webpack://big-trip/./src/mock/mock-destinations.js","webpack://big-trip/./src/mock/mock-events.js","webpack://big-trip/./src/mock/mock-offers-packs.js","webpack://big-trip/./src/utils.js","webpack://big-trip/./src/view/trip-view.js","webpack://big-trip/./src/view/sort-view.js","webpack://big-trip/./src/view/event-list-view.js","webpack://big-trip/./src/view/event-item-view.js","webpack://big-trip/./src/const.js","webpack://big-trip/./src/view/event-view.js","webpack://big-trip/./src/view/event-create-view.js","webpack://big-trip/./src/view/event-edit-view.js","webpack://big-trip/./src/presenter/trip-presenter.js","webpack://big-trip/./src/main.js","webpack://big-trip/./src/view/filter-view.js","webpack://big-trip/./src/model/destinations-model.js","webpack://big-trip/./src/model/events-model.js","webpack://big-trip/./src/model/offers-model.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const RenderPosition = {\n BEFOREBEGIN: 'beforebegin',\n AFTERBEGIN: 'afterbegin',\n BEFOREEND: 'beforeend',\n AFTEREND: 'afterend',\n};\n\nfunction createElement(template) {\n const newElement = document.createElement('div');\n newElement.innerHTML = template;\n\n return newElement.firstElementChild;\n}\n\nfunction render(component, container, place = RenderPosition.BEFOREEND) {\n container.insertAdjacentElement(place, component.getElement());\n}\n\nexport {RenderPosition, createElement, render};\n","export const mockDestinations = [\n {\n 'id': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'description': 'Kioto - famous for its crowded street markets with the best street food in Asia',\n 'name': 'Kioto',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/5.jpg',\n 'description': 'Kioto is a beautiful city'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Kioto with an embankment of a mighty river as a centre of attraction'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Kioto full of of cozy canteens where you can try the best coffee in the Middle East'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/20.jpg',\n 'description': 'Kioto in a middle of Europe'\n }\n ]\n },\n {\n 'id': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'description': 'Amsterdam - middle-eastern paradise',\n 'name': 'Amsterdam',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/13.jpg',\n 'description': 'Amsterdam for those who value comfort and coziness'\n }\n ]\n },\n {\n 'id': '97ba1bc6-b161-4015-b0a5-e1f31a3b972d',\n 'description': 'Venice - a true asian pearl',\n 'name': 'Venice',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Venice famous for its crowded street markets with the best street food in Asia'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/12.jpg',\n 'description': 'Venice a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/6.jpg',\n 'description': 'Venice in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/16.jpg',\n 'description': 'Venice in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/11.jpg',\n 'description': 'Venice a true asian pearl'\n }\n ]\n },\n {\n 'id': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'description': 'Berlin - famous for its crowded street markets with the best street food in Asia',\n 'name': 'Berlin',\n 'pictures': []\n },\n {\n 'id': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'description': 'Helsinki - middle-eastern paradise',\n 'name': 'Helsinki',\n 'pictures': []\n },\n {\n 'id': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'description': 'Sochi - with crowded streets',\n 'name': 'Sochi',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/3.jpg',\n 'description': 'Sochi with an embankment of a mighty river as a centre of attraction'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/18.jpg',\n 'description': 'Sochi a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/13.jpg',\n 'description': 'Sochi a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/9.jpg',\n 'description': 'Sochi with crowded streets'\n }\n ]\n },\n {\n 'id': '21a059e3-af4a-4881-a3cc-40a381484c44',\n 'description': '',\n 'name': 'Vien',\n 'pictures': []\n },\n {\n 'id': '124c439f-1764-4bd2-917e-50973a77f227',\n 'description': 'Chamonix-Mont-Blanc (usually shortened to Chamonix) is a resort area near the junction of France, Switzerland and Italy. At the base of Mont Blanc, the highest summit in the Alps, its renowned for its skiing.',\n 'name': 'Chamonix',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/11.jpg',\n 'description': 'Chamonix a perfect place to stay with a family'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/2.jpg',\n 'description': 'Chamonix famous for its crowded street markets with the best street food in Asia'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Chamonix full of of cozy canteens where you can try the best coffee in the Middle East'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Chamonix in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/4.jpg',\n 'description': 'Chamonix famous for its crowded street markets with the best street food in Asia'\n }\n ]\n },\n {\n 'id': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'description': 'Rome - with a beautiful old town',\n 'name': 'Rome',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/17.jpg',\n 'description': 'Rome with a beautiful old town'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/18.jpg',\n 'description': 'Rome in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/5.jpg',\n 'description': 'Rome for those who value comfort and coziness'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/8.jpg',\n 'description': 'Rome with crowded streets'\n }\n ]\n },\n {\n 'id': '1b17f449-8447-46a0-934e-fc54af3dd4ca',\n 'description': 'Oslo - with an embankment of a mighty river as a centre of attraction',\n 'name': 'Oslo',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Oslo is a beautiful city'\n }\n ]\n }\n];\n","export const mockEvents = [\n {\n 'id': 'a72349a8-ca9d-4c0d-9007-d9ae3db4e2ae',\n 'basePrice': 8581,\n 'dateFrom': '2024-12-14T19:13:11.060Z',\n 'dateTo': '2024-12-16T01:45:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'd71d1b94-dc80-4b83-bd27-3ca705acfb33',\n 'basePrice': 1120,\n 'dateFrom': '2024-12-18T01:25:11.060Z',\n 'dateTo': '2024-12-19T16:44:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': false,\n 'offers': [\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': '44351617-c7fd-4118-9876-f6aa892e2f37',\n 'basePrice': 3339,\n 'dateFrom': '2024-12-10T12:10:00.060Z',\n 'dateTo': '2024-12-15T12:00:00.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': true,\n 'offers': [\n '7f58bdd5-9809-4722-83c2-bcaa9e092e54',\n '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'f9e6902f-48b3-4f5b-9755-2cf03531e149'\n ],\n 'type': 'ship'\n },\n {\n 'id': 'efddfe0a-b94c-40ec-bad0-f63d7c1e56e1',\n 'basePrice': 9946,\n 'dateFrom': '2024-12-23T10:20:11.060Z',\n 'dateTo': '2024-12-23T10:30:11.060Z',\n 'destination': '97ba1bc6-b161-4015-b0a5-e1f31a3b972d',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': '05928710-aa42-4cd7-ad19-2320b56c3ced',\n 'basePrice': 2632,\n 'dateFrom': '2024-12-24T16:40:11.060Z',\n 'dateTo': '2024-12-25T20:17:11.060Z',\n 'destination': '124c439f-1764-4bd2-917e-50973a77f227',\n 'isFavorite': true,\n 'offers': [\n 'f9cba921-201c-46e3-9f9c-181669310fc7',\n '266854a6-32ce-43c2-afad-25fa2d1cff1f'\n ],\n 'type': 'restaurant'\n },\n {\n 'id': 'a90e2114-1c72-4b20-984c-95c6d2c93d21',\n 'basePrice': 9375,\n 'dateFrom': '2024-12-26T14:02:11.060Z',\n 'dateTo': '2024-12-27T18:52:11.060Z',\n 'destination': '124c439f-1764-4bd2-917e-50973a77f227',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'train'\n },\n {\n 'id': '2b8b73ff-f17e-4596-ab44-0b53f98d42f4',\n 'basePrice': 8216,\n 'dateFrom': '2024-12-28T11:46:11.060Z',\n 'dateTo': '2024-12-29T01:40:11.060Z',\n 'destination': '21a059e3-af4a-4881-a3cc-40a381484c44',\n 'isFavorite': false,\n 'offers': [\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'bcd87b64-e570-41f9-af5b-c622c3822ebb',\n 'basePrice': 7099,\n 'dateFrom': '2024-12-29T12:03:11.060Z',\n 'dateTo': '2024-12-30T06:27:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': 'cd8ee95b-95e9-42ab-81d2-232d1070b84a',\n 'basePrice': 7453,\n 'dateFrom': '2024-12-30T14:34:11.060Z',\n 'dateTo': '2024-12-31T05:45:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'restaurant'\n },\n {\n 'id': '81b18db0-4178-4d23-b135-0c4805ddef7e',\n 'basePrice': 7777,\n 'dateFrom': '2024-12-31T20:52:11.060Z',\n 'dateTo': '2025-01-02T09:09:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'restaurant'\n },\n {\n 'id': '7a10e74f-b5e4-4207-ad16-94bda36a2dc3',\n 'basePrice': 5293,\n 'dateFrom': '2025-01-03T06:19:11.060Z',\n 'dateTo': '2025-01-03T14:36:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': false,\n 'offers': [\n 'c2ae2b1c-afc4-43be-8163-f88ed2cd1137',\n 'cae3afff-8cb2-4490-b611-a0c25baac039'\n ],\n 'type': 'drive'\n },\n {\n 'id': 'e1ccdcdd-d790-4c13-9482-828537be9e1e',\n 'basePrice': 9581,\n 'dateFrom': '2025-01-04T07:52:11.060Z',\n 'dateTo': '2025-01-05T01:21:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'f9e6902f-48b3-4f5b-9755-2cf03531e149'\n ],\n 'type': 'ship'\n },\n {\n 'id': '7caa7469-cfe9-49a6-a48d-cfa3e8266cbb',\n 'basePrice': 8613,\n 'dateFrom': '2025-01-05T20:40:11.060Z',\n 'dateTo': '2025-01-07T14:35:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': false,\n 'offers': [\n '6a7e124a-0c0f-439d-b6e0-f98633920612'\n ],\n 'type': 'train'\n },\n {\n 'id': 'cfc55ed5-b54f-40b4-a940-33b3ca7a719d',\n 'basePrice': 9898,\n 'dateFrom': '2025-01-08T05:16:11.060Z',\n 'dateTo': '2025-01-08T22:20:11.060Z',\n 'destination': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'isFavorite': false,\n 'offers': [\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': '7a2e33ed-09b8-49ca-a358-76a180af93c9',\n 'basePrice': 6171,\n 'dateFrom': '2025-01-09T14:23:11.060Z',\n 'dateTo': '2025-01-10T13:29:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'taxi'\n },\n {\n 'id': '7d843d6c-cd96-4d4d-850e-1793a53b28fc',\n 'basePrice': 9467,\n 'dateFrom': '2025-01-11T22:35:11.060Z',\n 'dateTo': '2025-01-12T15:33:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'bus'\n },\n {\n 'id': '6ee96ae1-6454-49ee-bd21-5f6d0a315fca',\n 'basePrice': 761,\n 'dateFrom': '2025-01-13T18:04:11.060Z',\n 'dateTo': '2025-01-15T14:35:11.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': true,\n 'offers': [\n '04f9d7a2-5515-4404-8f46-720eed54bde7',\n '9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2'\n ],\n 'type': 'flight'\n },\n {\n 'id': '18e57d62-95a3-433a-bef3-07bc5c013bdb',\n 'basePrice': 748,\n 'dateFrom': '2025-01-17T04:29:11.060Z',\n 'dateTo': '2025-01-18T13:56:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': true,\n 'offers': [\n 'f671947a-8b29-4c39-99fc-d56adfb34ef5'\n ],\n 'type': 'bus'\n },\n {\n 'id': '989158b1-d4c9-4a03-8e14-f2ef8997e349',\n 'basePrice': 6737,\n 'dateFrom': '2025-01-19T00:29:11.060Z',\n 'dateTo': '2025-01-19T20:50:11.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': false,\n 'offers': [\n '319d74a8-a921-4fe0-8af7-9d04025028e6',\n 'ebe35193-f40b-4980-8534-d3ccf5bb00a0',\n 'c22f8e91-8517-4e7c-bca7-c317eb0427ed',\n 'b661a95e-82fe-407c-b3e6-0494959e8270'\n ],\n 'type': 'check-in'\n },\n {\n 'id': 'f0ec862b-5357-4346-b14d-a2be1d12322b',\n 'basePrice': 2088,\n 'dateFrom': '2025-01-21T01:54:11.060Z',\n 'dateTo': '2025-01-22T13:27:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '4f826ce7-b60e-4feb-a6a6-5fba9ad65c68',\n 'dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b',\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'a1e50061-b946-44c1-a542-82f1f47a57f7',\n 'basePrice': 2317,\n 'dateFrom': '2025-01-24T12:51:11.060Z',\n 'dateTo': '2025-01-25T22:33:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': '8d5d2b55-96d7-4e2f-b6c5-f79ab4f69876',\n 'basePrice': 3593,\n 'dateFrom': '2025-01-26T19:09:11.060Z',\n 'dateTo': '2025-01-27T19:49:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'sightseeing'\n },\n {\n 'id': '07f20ffa-6b2d-4905-8dee-0140d539f205',\n 'basePrice': 748,\n 'dateFrom': '2025-01-29T06:54:11.060Z',\n 'dateTo': '2025-01-30T11:59:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'taxi'\n },\n {\n 'id': 'f13e5fd4-42ab-4b2e-bdb6-4002532c33c5',\n 'basePrice': 7669,\n 'dateFrom': '2025-01-31T14:21:11.060Z',\n 'dateTo': '2025-02-02T05:12:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': true,\n 'offers': [\n 'a679fab7-7434-49e8-8ba3-ba810a5e7724',\n '6a7e124a-0c0f-439d-b6e0-f98633920612'\n ],\n 'type': 'train'\n },\n {\n 'id': '2ea1c048-685c-4ade-ba7c-058b6ab98594',\n 'basePrice': 8686,\n 'dateFrom': '2025-02-02T12:04:11.060Z',\n 'dateTo': '2025-02-03T10:52:11.060Z',\n 'destination': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'isFavorite': true,\n 'offers': [\n 'b661a95e-82fe-407c-b3e6-0494959e8270'\n ],\n 'type': 'check-in'\n }\n];\n","export const mockOffersPacks = [\n {\n 'type': 'taxi',\n 'offers': [\n {\n 'id': '4f826ce7-b60e-4feb-a6a6-5fba9ad65c68',\n 'title': 'Upgrade to a business class',\n 'price': 75\n },\n {\n 'id': 'dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b',\n 'title': 'Choose the radio station',\n 'price': 104\n },\n {\n 'id': 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'title': 'Choose temperature',\n 'price': 99\n },\n {\n 'id': 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n 'title': 'Drive quickly, I\\'m in a hurry',\n 'price': 80\n },\n {\n 'id': '1e7ab78b-3faa-48b3-aab7-266373f30cde',\n 'title': 'Drive slowly',\n 'price': 96\n }\n ]\n },\n {\n 'type': 'bus',\n 'offers': [\n {\n 'id': '2d541885-7c81-4293-9602-96376ec81fb6',\n 'title': 'Infotainment system',\n 'price': 59\n },\n {\n 'id': '6839add0-091d-4144-b3a5-210187235ae8',\n 'title': 'Order meal',\n 'price': 159\n },\n {\n 'id': 'f671947a-8b29-4c39-99fc-d56adfb34ef5',\n 'title': 'Choose seats',\n 'price': 65\n }\n ]\n },\n {\n 'type': 'train',\n 'offers': [\n {\n 'id': '0c8b452c-9a54-4aa5-a7d2-db6d34c95456',\n 'title': 'Book a taxi at the arrival point',\n 'price': 159\n },\n {\n 'id': 'a679fab7-7434-49e8-8ba3-ba810a5e7724',\n 'title': 'Order a breakfast',\n 'price': 151\n },\n {\n 'id': '6a7e124a-0c0f-439d-b6e0-f98633920612',\n 'title': 'Wake up at a certain time',\n 'price': 177\n }\n ]\n },\n {\n 'type': 'flight',\n 'offers': [\n {\n 'id': '65bcf5d6-348b-488e-bdba-2c08d497eb8e',\n 'title': 'Choose meal',\n 'price': 106\n },\n {\n 'id': '39a0e0ff-be69-4249-8003-a31eb0b2cf93',\n 'title': 'Choose seats',\n 'price': 114\n },\n {\n 'id': '972c9b08-c84d-4be6-8511-93922a208e3e',\n 'title': 'Upgrade to comfort class',\n 'price': 194\n },\n {\n 'id': '7d8a3707-7953-4d47-b46b-ebf3889b5190',\n 'title': 'Upgrade to business class',\n 'price': 193\n },\n {\n 'id': '04f9d7a2-5515-4404-8f46-720eed54bde7',\n 'title': 'Add luggage',\n 'price': 66\n },\n {\n 'id': '9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2',\n 'title': 'Business lounge',\n 'price': 80\n }\n ]\n },\n {\n 'type': 'check-in',\n 'offers': [\n {\n 'id': '245f88c9-fde6-4d7f-a4c7-94d1482aa34f',\n 'title': 'Choose the time of check-in',\n 'price': 169\n },\n {\n 'id': '319d74a8-a921-4fe0-8af7-9d04025028e6',\n 'title': 'Choose the time of check-out',\n 'price': 126\n },\n {\n 'id': 'ebe35193-f40b-4980-8534-d3ccf5bb00a0',\n 'title': 'Add breakfast',\n 'price': 39\n },\n {\n 'id': 'c22f8e91-8517-4e7c-bca7-c317eb0427ed',\n 'title': 'Laundry',\n 'price': 84\n },\n {\n 'id': 'b661a95e-82fe-407c-b3e6-0494959e8270',\n 'title': 'Order a meal from the restaurant',\n 'price': 139\n }\n ]\n },\n {\n 'type': 'sightseeing',\n 'offers': []\n },\n {\n 'type': 'ship',\n 'offers': [\n {\n 'id': '24ab1acf-10d1-45eb-ab43-864fbd4d957f',\n 'title': 'Choose meal',\n 'price': 119\n },\n {\n 'id': 'c651fe18-cf4e-4649-872b-34a89b5a533d',\n 'title': 'Choose seats',\n 'price': 197\n },\n {\n 'id': '7f58bdd5-9809-4722-83c2-bcaa9e092e54',\n 'title': 'Upgrade to comfort class',\n 'price': 104\n },\n {\n 'id': '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'title': 'Upgrade to business class',\n 'price': 73\n },\n {\n 'id': 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'title': 'Add luggage',\n 'price': 155\n },\n {\n 'id': 'f9e6902f-48b3-4f5b-9755-2cf03531e149',\n 'title': 'Business lounge',\n 'price': 86\n }\n ]\n },\n {\n 'type': 'drive',\n 'offers': [\n {\n 'id': 'c2ae2b1c-afc4-43be-8163-f88ed2cd1137',\n 'title': 'With automatic transmission',\n 'price': 144\n },\n {\n 'id': 'cae3afff-8cb2-4490-b611-a0c25baac039',\n 'title': 'With air conditioning',\n 'price': 120\n }\n ]\n },\n {\n 'type': 'restaurant',\n 'offers': [\n {\n 'id': 'f9cba921-201c-46e3-9f9c-181669310fc7',\n 'title': 'Choose live music',\n 'price': 127\n },\n {\n 'id': '266854a6-32ce-43c2-afad-25fa2d1cff1f',\n 'title': 'Choose VIP area',\n 'price': 88\n }\n ]\n }\n];\n","import dayjs from 'dayjs';\n\n\nfunction getDefaultEvent() {\n return {\n id: '',\n basePrice: '',\n dateFrom: new Date().setHours(0,0,0,0),\n dateTo: new Date().setHours(0,0,0,0),\n destination: '',\n isFavorite: false,\n offers: [],\n type: 'flight'\n };\n}\n\n\nfunction getFormattedDate(date, format) {\n return date ? dayjs(date).format(format) : '';\n}\n\n\nfunction getDateDifference(dateOne, dateTwo) {\n const diffDay = dayjs(dateOne).diff(dateTwo, 'day');\n const diffHour = dayjs(dateOne).diff(dateTwo, 'hour') - (diffDay * 24);\n const diffMinute = dayjs(dateOne).diff(dateTwo, 'minute') - ((diffHour * 60) + ((diffDay * 24) * 60));\n\n let diffDayText = '';\n if (diffDay > 0 && diffDay < 10) {\n diffDayText = `0${diffDay}D`;\n } else if (diffDay >= 10) {\n diffDayText = `${diffDay}D`;\n }\n\n let diffHourText = '';\n if (diffHour !== 0) {\n diffHourText = `${diffHour}H`;\n } else if (diffDay !== 0) {\n diffHourText = '00H';\n }\n\n const diffMinuteText = diffMinute !== 0 ? `${diffMinute}M` : '00M';\n\n const diffDateText = `${diffDayText} ${diffHourText} ${diffMinuteText}`;\n\n return diffDateText;\n}\n\n\nfunction getCapitalizedString(string) {\n return string[0].toUpperCase() + string.slice(1);\n}\n\n\nfunction getHtmlId(string) {\n return string.replace(/\\s+/g, '-').toLowerCase();\n}\n\n\nfunction getIdGenerator () {\n let currentValue = 0;\n\n return function () {\n currentValue += 1;\n return currentValue;\n };\n}\n\n\nexport {\n getDefaultEvent,\n getFormattedDate,\n getDateDifference,\n getCapitalizedString,\n getHtmlId,\n getIdGenerator,\n};\n","import { createElement } from '../render.js';\n\nfunction createTripTemplate() {\n return (\n `
\n

Trip events

\n
`\n );\n}\n\nexport default class TripView {\n getTemplate() {\n return createTripTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createSortTemplate() {\n return (\n `
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
`\n );\n}\n\nexport default class SortView {\n getTemplate() {\n return createSortTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createEventListTemplate() {\n return '';\n}\n\nexport default class EventListView {\n getTemplate() {\n return createEventListTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createEventItemTemplate() {\n return '
  • ';\n}\n\nexport default class EventItemView {\n getTemplate() {\n return createEventItemTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","const DateFormat = {\n DAY: 'MMM DD',\n TIME: 'HH:mm',\n DATE: 'DD/MM/YY HH:mm'\n};\n\nconst EVENT_TYPES = [\n 'taxi',\n 'bus',\n 'train',\n 'ship',\n 'drive',\n 'flight',\n 'check-in',\n 'sightseeing',\n 'restaurant'\n];\n\nexport {\n DateFormat,\n EVENT_TYPES,\n};\n","import {createElement} from '../render.js';\nimport {DateFormat} from '../const.js';\nimport {\n getFormattedDate,\n getDateDifference,\n getCapitalizedString,\n} from '../utils.js';\n\n\nfunction createOfferTemplate(offer) {\n return (\n `
  • \n ${offer.title}\n +€ \n ${offer.price}\n
  • `\n );\n}\n\n\nfunction createoffersCheckedListTemplate(event, offersPack) {\n const checkedOffers = offersPack.offers.filter((offer) => event.offers.includes(offer.id));\n return checkedOffers.length !== 0 ? (\n `

    Offers:

    \n `\n ) : '';\n}\n\n\nfunction createEventTemplate(viewId, event, currentDestination, currentOffersPack) {\n const dayFormatted = getFormattedDate(event.dateFrom, DateFormat.DAY);\n const timeFromFormatted = getFormattedDate(event.dateFrom, DateFormat.TIME);\n const timeToFormatted = getFormattedDate(event.dateTo, DateFormat.TIME);\n const duration = getDateDifference(event.dateTo, event.dateFrom);\n\n\n return (\n `
    \n \n
    \n \"Event\n
    \n

    ${getCapitalizedString(event.type)} ${currentDestination.name}

    \n
    \n

    \n \n —\n \n

    \n

    ${duration}

    \n
    \n

    \n € ${event.basePrice}\n

    \n ${createoffersCheckedListTemplate(event, currentOffersPack)}\n \n \n
    `\n );\n}\n\n\nexport default class EventView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n\n constructor({viewId, event, currentDestination, currentOffersPack}) {\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n }\n\n getTemplate() {\n return createEventTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\nimport { DateFormat, EVENT_TYPES } from '../const.js';\nimport { getFormattedDate, getCapitalizedString, getHtmlId } from '../utils.js';\n\n\nfunction createTypeTemplate(type, viewId) {\n return (\n `
    \n \n \n
    `\n );\n}\n\nfunction createEventTypeListTemplate(eventTypes, viewId) {\n return (\n `
    \n
    \n Event type\n ${eventTypes.map((type) => createTypeTemplate(type, viewId)).join('')}\n
    \n
    `\n );\n}\n\nfunction createDestinationListTemplate(destinations, viewId) {\n return (\n `\n ${destinations.map((destination) => (``)).join('')}\n `\n );\n}\n\nfunction createOfferTemplate(offer, viewId) {\n const offerId = getHtmlId(offer.title);\n\n return (\n `
    \n \n \n
    `\n );\n}\n\nfunction createOfferListTemplate(offersPack = {}, viewId) {\n return offersPack.offers.length !== 0 ? (\n `
    \n

    Offers

    \n
    \n ${offersPack.offers.map((offer) => createOfferTemplate(offer, viewId)).join('')}\n
    \n
    `\n ) : '';\n}\n\nfunction createPicturesListTemplate(pictures = []) {\n return pictures.length !== 0 ? (\n `
    \n
    \n ${pictures.map((picture) => `\"${picture.description}\"`).join('')}\n
    \n
    `\n ) : '';\n}\n\nfunction createDestinationTemplate(destination) {\n if (destination && (destination.description !== '' || destination.pictures.length !== 0)) {\n return (\n `
    \n

    Destination

    \n

    ${destination.description}

    \n ${createPicturesListTemplate(destination.pictures)}\n
    `);\n } else {\n return '';\n }\n}\n\nfunction createEventCreateTemplate(\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations) {\n return (\n `
    \n
    \n
    \n \n \n ${createEventTypeListTemplate(EVENT_TYPES)}\n
    \n\n
    \n \n \n ${createDestinationListTemplate(allDestinations, viewId)}\n
    \n\n
    \n \n \n —\n \n \n
    \n\n
    \n \n \n
    \n\n \n \n
    \n
    \n ${createOfferListTemplate(currentOffersPack, viewId)}\n\n ${createDestinationTemplate(currentDestination)}\n
    \n
    `\n );\n}\n\nexport default class EventCreateView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n allDestinations = null;\n allOffersPacks = null;\n\n constructor({\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations,\n allOffersPacks}){\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n this.allDestinations = allDestinations;\n this.allOffersPacks = allOffersPacks;\n }\n\n getTemplate() {\n return createEventCreateTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n this.allDestinations,\n this.allOffersPacks,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\nimport { DateFormat, EVENT_TYPES } from '../const.js';\nimport { getFormattedDate, getCapitalizedString, getHtmlId } from '../utils.js';\n\n\nfunction createTypeTemplate(type, viewId) {\n return (\n `
    \n \n \n
    `\n );\n}\n\nfunction createEventTypeListTemplate(eventTypes, viewId) {\n return (\n `
    \n
    \n Event type\n ${eventTypes.map((type) => createTypeTemplate(type, viewId)).join('')}\n
    \n
    `\n );\n}\n\nfunction createDestinationListTemplate(destinations, viewId) {\n return (\n `\n ${destinations.map((destination) => (``)).join('')}\n `\n );\n}\n\nfunction createOfferTemplate(offer, event, viewId) {\n const offerId = getHtmlId(offer.title);\n const offerChecked = event.offers.includes(offer.id) ? 'checked' : '';\n\n return (\n `
    \n \n \n
    `\n );\n}\n\nfunction createOfferListTemplate(event, offersPack = {}, viewId) {\n return offersPack.offers.length !== 0 ? (\n `
    \n

    Offers

    \n
    \n ${offersPack.offers.map((offer) => createOfferTemplate(offer, event, viewId)).join('')}\n
    \n
    `\n ) : '';\n}\n\nfunction createPicturesListTemplate(pictures = []) {\n return pictures.length !== 0 ? (\n `
    \n
    \n ${pictures.map((picture) => `\"${picture.description}\"`).join('')}\n
    \n
    `\n ) : '';\n}\n\nfunction createDestinationTemplate(destination) {\n if (destination && (destination.description !== '' || destination.pictures.length !== 0)) {\n return (\n `
    \n

    Destination

    \n

    ${destination.description}

    \n ${createPicturesListTemplate(destination.pictures)}\n
    `);\n } else {\n return '';\n }\n}\n\nfunction createEventEditTemplate(\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations) {\n return (\n `
    \n
    \n
    \n \n \n ${createEventTypeListTemplate(EVENT_TYPES)}\n
    \n\n
    \n \n \n ${createDestinationListTemplate(allDestinations, viewId)}\n
    \n\n
    \n \n \n —\n \n \n
    \n\n
    \n \n \n
    \n\n \n \n \n
    \n
    \n ${createOfferListTemplate(event, currentOffersPack, viewId)}\n\n ${createDestinationTemplate(currentDestination)}\n
    \n
    `\n );\n}\n\nexport default class EventEditView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n allDestinations = null;\n allOffersPacks = null;\n\n constructor({\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations,\n allOffersPacks}){\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n this.allDestinations = allDestinations;\n this.allOffersPacks = allOffersPacks;\n }\n\n getTemplate() {\n return createEventEditTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n this.allDestinations,\n this.allOffersPacks,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { render } from '../render.js';\nimport { getDefaultEvent, getIdGenerator } from '../utils.js';\nimport TripView from '../view/trip-view.js';\nimport SortView from '../view/sort-view.js';\nimport EventListView from '../view/event-list-view.js';\nimport EventItemView from '../view/event-item-view.js';\nimport EventView from '../view/event-view.js';\nimport EventCreateView from '../view/event-create-view.js';\nimport EventEditView from '../view/event-edit-view.js';\n\n\nconst idGenerator = getIdGenerator();\n\n\nexport default class TripPresenter {\n tripComponent = null;\n eventListComponent = null;\n tripContainer = null;\n destinationsModel = null;\n eventsModel = null;\n offersModel = null;\n\n constructor({tripContainer, destinationsModel, eventsModel, offersModel}) {\n this.tripComponent = new TripView();\n this.eventListComponent = new EventListView();\n this.tripContainer = tripContainer;\n this.destinationsModel = destinationsModel;\n this.eventsModel = eventsModel;\n this.offersModel = offersModel;\n }\n\n\n init () {\n this.defaultEvent = getDefaultEvent();\n this.tripEvents = [...this.eventsModel.getAllEvents()];\n\n render(this.tripComponent, this.tripContainer);\n render(new SortView(), this.tripComponent.getElement());\n render(this.eventListComponent, this.tripComponent.getElement());\n\n for (let i = 0; i < this.tripEvents.length; i++) {\n const eventItem = new EventItemView();\n let event = this.tripEvents[i];\n\n // Этот switch нужен для того, чтобы показать в разметке все возможные варианты view.\n // Это временное решение, пока нет открытия форм создания и редактирования.\n switch (i) {\n case 0:\n event = this.defaultEvent;\n render(new EventCreateView({\n viewId: idGenerator(),\n event: this.defaultEvent,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n allDestinations: this.destinationsModel.getAllDestinations(),\n allOffersPacks: this.offersModel.getAllOffersPacks(),\n }), eventItem.getElement());\n break;\n default:\n render(new EventView({\n viewId: idGenerator(),\n event,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n }), eventItem.getElement());\n render(new EventEditView({\n viewId: idGenerator(),\n event,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n allDestinations: this.destinationsModel.getAllDestinations(),\n allOffersPacks: this.offersModel.getAllOffersPacks(),\n }), eventItem.getElement());\n }\n render(eventItem, this.eventListComponent.getElement());\n }\n }\n}\n","import { render } from './render.js';\nimport DestinationsModel from './model/destinations-model.js';\nimport EventsModel from './model/events-model.js';\nimport OffersModel from './model/offers-model.js';\nimport FilterView from './view/filter-view.js';\nimport TripPresenter from './presenter/trip-presenter.js';\n\n\nconst pageHeaderElement = document.querySelector('.page-header');\nconst filtersElement = pageHeaderElement.querySelector('.trip-controls__filters');\nconst pageMainElement = document.querySelector('.page-main');\nconst pageBodyContainerElement = pageMainElement.querySelector('.page-body__container');\n\n\nrender(new FilterView, filtersElement);\n\n\nconst destinationsModel = new DestinationsModel();\nconst eventsModel = new EventsModel();\nconst offersModel = new OffersModel();\nconst tripPresenter = new TripPresenter({\n tripContainer: pageBodyContainerElement,\n destinationsModel,\n eventsModel,\n offersModel,\n});\n\n\ndestinationsModel.init();\neventsModel.init();\noffersModel.init();\ntripPresenter.init();\n","import { createElement } from '../render.js';\n\nfunction createFilterTemplate() {\n return (\n `
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n\n \n
    `\n );\n}\n\nexport default class FilterView {\n getTemplate() {\n return createFilterTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import {mockDestinations} from '../mock/mock-destinations.js';\n\n\nexport default class DestinationsModel {\n constructor() {\n this.destinations = [];\n }\n\n init() {\n this.destinations = mockDestinations;\n }\n\n getAllDestinations() {\n return this.destinations;\n }\n\n getDestinationById(id) {\n return this.destinations.find((destination) => destination.id === id);\n }\n}\n","import {mockEvents} from '../mock/mock-events.js';\n\n\nexport default class EventsModel {\n constructor() {\n this.events = [];\n }\n\n init() {\n this.events = mockEvents;\n }\n\n getAllEvents() {\n return this.events;\n }\n}\n","import {mockOffersPacks} from '../mock/mock-offers-packs.js';\n\n\nexport default class OffersModel {\n constructor() {\n this.offersPacks = [];\n }\n\n init() {\n this.offersPacks = mockOffersPacks;\n }\n\n getAllOffersPacks() {\n return this.offersPacks;\n }\n\n getOffersPackByType(type) {\n return this.offersPacks.find((offersPack) => offersPack.type === type);\n }\n}\n"],"names":["module","exports","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","t","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","Object","defineProperty","enumerable","obj","prop","hasOwnProperty","createElement","template","newElement","document","innerHTML","firstElementChild","render","component","container","place","insertAdjacentElement","getElement","mockDestinations","mockEvents","mockOffersPacks","getFormattedDate","dayjs","getCapitalizedString","string","toUpperCase","getHtmlId","TripView","getTemplate","element","removeElement","SortView","EventListView","EventItemView","DateFormat","EVENT_TYPES","EventView","viewId","event","currentDestination","currentOffersPack","constructor","dayFormatted","dateFrom","timeFromFormatted","timeToFormatted","dateTo","duration","dateOne","dateTwo","diffDay","diffHour","diffMinute","diffDayText","diffHourText","getDateDifference","type","basePrice","offersPack","checkedOffers","offers","filter","offer","includes","id","map","title","price","createOfferTemplate","createoffersCheckedListTemplate","createEventTemplate","EventCreateView","allDestinations","allOffersPacks","eventTypes","createTypeTemplate","createEventTypeListTemplate","destinations","destination","createDestinationListTemplate","offerId","createOfferListTemplate","description","pictures","picture","src","createPicturesListTemplate","EventEditView","idGenerator","currentValue","getIdGenerator","filtersElement","querySelector","pageBodyContainerElement","destinationsModel","getAllDestinations","getDestinationById","find","eventsModel","events","getAllEvents","offersModel","offersPacks","getAllOffersPacks","getOffersPackByType","tripPresenter","tripComponent","eventListComponent","tripContainer","defaultEvent","setHours","isFavorite","tripEvents","eventItem"],"sourceRoot":""} \ No newline at end of file diff --git a/4/bundle.023899bbf41e29089a38.js b/4/bundle.a28f4d51e8b3da7b046a.js similarity index 60% rename from 4/bundle.023899bbf41e29089a38.js rename to 4/bundle.a28f4d51e8b3da7b046a.js index d51f532..fa01e15 100644 --- a/4/bundle.023899bbf41e29089a38.js +++ b/4/bundle.a28f4d51e8b3da7b046a.js @@ -1,2 +1,2 @@ -(()=>{var e={484:function(e){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",r="day",c="week",o="month",d="quarter",l="year",f="date",p="Invalid Date",u=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,b=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},v=function(e,t,n){var i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(n)+e},m={s:v,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),i=Math.floor(n/60),s=n%60;return(t<=0?"+":"-")+v(i,2,"0")+":"+v(s,2,"0")},m:function e(t,n){if(t.date()1)return e(r[0])}else{var c=t.name;y[c]=t,s=c}return!i&&s&&(_=s),s||!i&&_},w=function(e,t){if($(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new k(n)},D=m;D.l=T,D.i=$,D.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function h(e){this.$L=T(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[g]=!0}var v=h.prototype;return v.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(D.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(u);if(i){var s=i[2]-1||0,a=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(t)}(e),this.init()},v.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},v.$utils=function(){return D},v.isValid=function(){return!(this.$d.toString()===p)},v.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},v.isAfter=function(e,t){return w(e){var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";function e(e){const t=document.createElement("div");return t.innerHTML=e,t.firstElementChild}function t(e,t,n="beforeend"){t.insertAdjacentElement(n,e.getElement())}const i=[{id:"2d1ec240-1e78-4183-b27e-7023f2ce9320",description:"Kioto - famous for its crowded street markets with the best street food in Asia",name:"Kioto",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/5.jpg",description:"Kioto is a beautiful city"},{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Kioto with an embankment of a mighty river as a centre of attraction"},{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Kioto full of of cozy canteens where you can try the best coffee in the Middle East"},{src:"https://22.objects.htmlacademy.pro/static/destinations/20.jpg",description:"Kioto in a middle of Europe"}]},{id:"496bf9c6-7644-4068-baa0-8b1577df8854",description:"Amsterdam - middle-eastern paradise",name:"Amsterdam",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/13.jpg",description:"Amsterdam for those who value comfort and coziness"}]},{id:"97ba1bc6-b161-4015-b0a5-e1f31a3b972d",description:"Venice - a true asian pearl",name:"Venice",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Venice famous for its crowded street markets with the best street food in Asia"},{src:"https://22.objects.htmlacademy.pro/static/destinations/12.jpg",description:"Venice a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/6.jpg",description:"Venice in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/16.jpg",description:"Venice in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/11.jpg",description:"Venice a true asian pearl"}]},{id:"9bbe4200-020c-4f3c-9640-81648421f209",description:"Berlin - famous for its crowded street markets with the best street food in Asia",name:"Berlin",pictures:[]},{id:"c8eab9ce-c072-4114-9412-76f8023ba638",description:"Helsinki - middle-eastern paradise",name:"Helsinki",pictures:[]},{id:"7d2cc347-4428-45cb-b406-ef07ed787acc",description:"Sochi - with crowded streets",name:"Sochi",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/3.jpg",description:"Sochi with an embankment of a mighty river as a centre of attraction"},{src:"https://22.objects.htmlacademy.pro/static/destinations/18.jpg",description:"Sochi a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/13.jpg",description:"Sochi a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/9.jpg",description:"Sochi with crowded streets"}]},{id:"21a059e3-af4a-4881-a3cc-40a381484c44",description:"",name:"Vien",pictures:[]},{id:"124c439f-1764-4bd2-917e-50973a77f227",description:"Chamonix-Mont-Blanc (usually shortened to Chamonix) is a resort area near the junction of France, Switzerland and Italy. At the base of Mont Blanc, the highest summit in the Alps, its renowned for its skiing.",name:"Chamonix",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/11.jpg",description:"Chamonix a perfect place to stay with a family"},{src:"https://22.objects.htmlacademy.pro/static/destinations/2.jpg",description:"Chamonix famous for its crowded street markets with the best street food in Asia"},{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Chamonix full of of cozy canteens where you can try the best coffee in the Middle East"},{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Chamonix in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/4.jpg",description:"Chamonix famous for its crowded street markets with the best street food in Asia"}]},{id:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",description:"Rome - with a beautiful old town",name:"Rome",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/17.jpg",description:"Rome with a beautiful old town"},{src:"https://22.objects.htmlacademy.pro/static/destinations/18.jpg",description:"Rome in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/5.jpg",description:"Rome for those who value comfort and coziness"},{src:"https://22.objects.htmlacademy.pro/static/destinations/8.jpg",description:"Rome with crowded streets"}]},{id:"1b17f449-8447-46a0-934e-fc54af3dd4ca",description:"Oslo - with an embankment of a mighty river as a centre of attraction",name:"Oslo",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Oslo is a beautiful city"}]}],s=[{id:"a72349a8-ca9d-4c0d-9007-d9ae3db4e2ae",basePrice:8581,dateFrom:"2024-12-14T19:13:11.060Z",dateTo:"2024-12-16T01:45:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"d71d1b94-dc80-4b83-bd27-3ca705acfb33",basePrice:1120,dateFrom:"2024-12-18T01:25:11.060Z",dateTo:"2024-12-19T16:44:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!1,offers:["1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"44351617-c7fd-4118-9876-f6aa892e2f37",basePrice:3339,dateFrom:"2024-12-10T12:10:00.060Z",dateTo:"2024-12-15T12:00:00.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!0,offers:["7f58bdd5-9809-4722-83c2-bcaa9e092e54","8309542d-7494-4299-a93c-32a2b4c982c2","f0d18307-8693-4c1a-b25b-043b3c1b9ed1","f9e6902f-48b3-4f5b-9755-2cf03531e149"],type:"ship"},{id:"efddfe0a-b94c-40ec-bad0-f63d7c1e56e1",basePrice:9946,dateFrom:"2024-12-23T10:20:11.060Z",dateTo:"2024-12-23T10:30:11.060Z",destination:"97ba1bc6-b161-4015-b0a5-e1f31a3b972d",isFavorite:!0,offers:[],type:"ship"},{id:"05928710-aa42-4cd7-ad19-2320b56c3ced",basePrice:2632,dateFrom:"2024-12-24T16:40:11.060Z",dateTo:"2024-12-25T20:17:11.060Z",destination:"124c439f-1764-4bd2-917e-50973a77f227",isFavorite:!0,offers:["f9cba921-201c-46e3-9f9c-181669310fc7","266854a6-32ce-43c2-afad-25fa2d1cff1f"],type:"restaurant"},{id:"a90e2114-1c72-4b20-984c-95c6d2c93d21",basePrice:9375,dateFrom:"2024-12-26T14:02:11.060Z",dateTo:"2024-12-27T18:52:11.060Z",destination:"124c439f-1764-4bd2-917e-50973a77f227",isFavorite:!0,offers:[],type:"train"},{id:"2b8b73ff-f17e-4596-ab44-0b53f98d42f4",basePrice:8216,dateFrom:"2024-12-28T11:46:11.060Z",dateTo:"2024-12-29T01:40:11.060Z",destination:"21a059e3-af4a-4881-a3cc-40a381484c44",isFavorite:!1,offers:["df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"bcd87b64-e570-41f9-af5b-c622c3822ebb",basePrice:7099,dateFrom:"2024-12-29T12:03:11.060Z",dateTo:"2024-12-30T06:27:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!0,offers:[],type:"ship"},{id:"cd8ee95b-95e9-42ab-81d2-232d1070b84a",basePrice:7453,dateFrom:"2024-12-30T14:34:11.060Z",dateTo:"2024-12-31T05:45:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!0,offers:[],type:"restaurant"},{id:"81b18db0-4178-4d23-b135-0c4805ddef7e",basePrice:7777,dateFrom:"2024-12-31T20:52:11.060Z",dateTo:"2025-01-02T09:09:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!1,offers:[],type:"restaurant"},{id:"7a10e74f-b5e4-4207-ad16-94bda36a2dc3",basePrice:5293,dateFrom:"2025-01-03T06:19:11.060Z",dateTo:"2025-01-03T14:36:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!1,offers:["c2ae2b1c-afc4-43be-8163-f88ed2cd1137","cae3afff-8cb2-4490-b611-a0c25baac039"],type:"drive"},{id:"e1ccdcdd-d790-4c13-9482-828537be9e1e",basePrice:9581,dateFrom:"2025-01-04T07:52:11.060Z",dateTo:"2025-01-05T01:21:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["8309542d-7494-4299-a93c-32a2b4c982c2","f0d18307-8693-4c1a-b25b-043b3c1b9ed1","f9e6902f-48b3-4f5b-9755-2cf03531e149"],type:"ship"},{id:"7caa7469-cfe9-49a6-a48d-cfa3e8266cbb",basePrice:8613,dateFrom:"2025-01-05T20:40:11.060Z",dateTo:"2025-01-07T14:35:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!1,offers:["6a7e124a-0c0f-439d-b6e0-f98633920612"],type:"train"},{id:"cfc55ed5-b54f-40b4-a940-33b3ca7a719d",basePrice:9898,dateFrom:"2025-01-08T05:16:11.060Z",dateTo:"2025-01-08T22:20:11.060Z",destination:"2d1ec240-1e78-4183-b27e-7023f2ce9320",isFavorite:!1,offers:["df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"7a2e33ed-09b8-49ca-a358-76a180af93c9",basePrice:6171,dateFrom:"2025-01-09T14:23:11.060Z",dateTo:"2025-01-10T13:29:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!0,offers:[],type:"taxi"},{id:"7d843d6c-cd96-4d4d-850e-1793a53b28fc",basePrice:9467,dateFrom:"2025-01-11T22:35:11.060Z",dateTo:"2025-01-12T15:33:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:[],type:"bus"},{id:"6ee96ae1-6454-49ee-bd21-5f6d0a315fca",basePrice:761,dateFrom:"2025-01-13T18:04:11.060Z",dateTo:"2025-01-15T14:35:11.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!0,offers:["04f9d7a2-5515-4404-8f46-720eed54bde7","9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2"],type:"flight"},{id:"18e57d62-95a3-433a-bef3-07bc5c013bdb",basePrice:748,dateFrom:"2025-01-17T04:29:11.060Z",dateTo:"2025-01-18T13:56:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!0,offers:["f671947a-8b29-4c39-99fc-d56adfb34ef5"],type:"bus"},{id:"989158b1-d4c9-4a03-8e14-f2ef8997e349",basePrice:6737,dateFrom:"2025-01-19T00:29:11.060Z",dateTo:"2025-01-19T20:50:11.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!1,offers:["319d74a8-a921-4fe0-8af7-9d04025028e6","ebe35193-f40b-4980-8534-d3ccf5bb00a0","c22f8e91-8517-4e7c-bca7-c317eb0427ed","b661a95e-82fe-407c-b3e6-0494959e8270"],type:"check-in"},{id:"f0ec862b-5357-4346-b14d-a2be1d12322b",basePrice:2088,dateFrom:"2025-01-21T01:54:11.060Z",dateTo:"2025-01-22T13:27:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["4f826ce7-b60e-4feb-a6a6-5fba9ad65c68","dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b","df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"a1e50061-b946-44c1-a542-82f1f47a57f7",basePrice:2317,dateFrom:"2025-01-24T12:51:11.060Z",dateTo:"2025-01-25T22:33:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!1,offers:[],type:"ship"},{id:"8d5d2b55-96d7-4e2f-b6c5-f79ab4f69876",basePrice:3593,dateFrom:"2025-01-26T19:09:11.060Z",dateTo:"2025-01-27T19:49:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!0,offers:[],type:"sightseeing"},{id:"07f20ffa-6b2d-4905-8dee-0140d539f205",basePrice:748,dateFrom:"2025-01-29T06:54:11.060Z",dateTo:"2025-01-30T11:59:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!0,offers:[],type:"taxi"},{id:"f13e5fd4-42ab-4b2e-bdb6-4002532c33c5",basePrice:7669,dateFrom:"2025-01-31T14:21:11.060Z",dateTo:"2025-02-02T05:12:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!0,offers:["a679fab7-7434-49e8-8ba3-ba810a5e7724","6a7e124a-0c0f-439d-b6e0-f98633920612"],type:"train"},{id:"2ea1c048-685c-4ade-ba7c-058b6ab98594",basePrice:8686,dateFrom:"2025-02-02T12:04:11.060Z",dateTo:"2025-02-03T10:52:11.060Z",destination:"2d1ec240-1e78-4183-b27e-7023f2ce9320",isFavorite:!0,offers:["b661a95e-82fe-407c-b3e6-0494959e8270"],type:"check-in"}],a=[{type:"taxi",offers:[{id:"4f826ce7-b60e-4feb-a6a6-5fba9ad65c68",title:"Upgrade to a business class",price:75},{id:"dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b",title:"Choose the radio station",price:104},{id:"df563b88-4847-4a3c-ac72-e28a01d65345",title:"Choose temperature",price:99},{id:"df51a087-0baf-4b2b-8cd2-0d3da21acc53",title:"Drive quickly, I'm in a hurry",price:80},{id:"1e7ab78b-3faa-48b3-aab7-266373f30cde",title:"Drive slowly",price:96}]},{type:"bus",offers:[{id:"2d541885-7c81-4293-9602-96376ec81fb6",title:"Infotainment system",price:59},{id:"6839add0-091d-4144-b3a5-210187235ae8",title:"Order meal",price:159},{id:"f671947a-8b29-4c39-99fc-d56adfb34ef5",title:"Choose seats",price:65}]},{type:"train",offers:[{id:"0c8b452c-9a54-4aa5-a7d2-db6d34c95456",title:"Book a taxi at the arrival point",price:159},{id:"a679fab7-7434-49e8-8ba3-ba810a5e7724",title:"Order a breakfast",price:151},{id:"6a7e124a-0c0f-439d-b6e0-f98633920612",title:"Wake up at a certain time",price:177}]},{type:"flight",offers:[{id:"65bcf5d6-348b-488e-bdba-2c08d497eb8e",title:"Choose meal",price:106},{id:"39a0e0ff-be69-4249-8003-a31eb0b2cf93",title:"Choose seats",price:114},{id:"972c9b08-c84d-4be6-8511-93922a208e3e",title:"Upgrade to comfort class",price:194},{id:"7d8a3707-7953-4d47-b46b-ebf3889b5190",title:"Upgrade to business class",price:193},{id:"04f9d7a2-5515-4404-8f46-720eed54bde7",title:"Add luggage",price:66},{id:"9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2",title:"Business lounge",price:80}]},{type:"check-in",offers:[{id:"245f88c9-fde6-4d7f-a4c7-94d1482aa34f",title:"Choose the time of check-in",price:169},{id:"319d74a8-a921-4fe0-8af7-9d04025028e6",title:"Choose the time of check-out",price:126},{id:"ebe35193-f40b-4980-8534-d3ccf5bb00a0",title:"Add breakfast",price:39},{id:"c22f8e91-8517-4e7c-bca7-c317eb0427ed",title:"Laundry",price:84},{id:"b661a95e-82fe-407c-b3e6-0494959e8270",title:"Order a meal from the restaurant",price:139}]},{type:"sightseeing",offers:[]},{type:"ship",offers:[{id:"24ab1acf-10d1-45eb-ab43-864fbd4d957f",title:"Choose meal",price:119},{id:"c651fe18-cf4e-4649-872b-34a89b5a533d",title:"Choose seats",price:197},{id:"7f58bdd5-9809-4722-83c2-bcaa9e092e54",title:"Upgrade to comfort class",price:104},{id:"8309542d-7494-4299-a93c-32a2b4c982c2",title:"Upgrade to business class",price:73},{id:"f0d18307-8693-4c1a-b25b-043b3c1b9ed1",title:"Add luggage",price:155},{id:"f9e6902f-48b3-4f5b-9755-2cf03531e149",title:"Business lounge",price:86}]},{type:"drive",offers:[{id:"c2ae2b1c-afc4-43be-8163-f88ed2cd1137",title:"With automatic transmission",price:144},{id:"cae3afff-8cb2-4490-b611-a0c25baac039",title:"With air conditioning",price:120}]},{type:"restaurant",offers:[{id:"f9cba921-201c-46e3-9f9c-181669310fc7",title:"Choose live music",price:127},{id:"266854a6-32ce-43c2-afad-25fa2d1cff1f",title:"Choose VIP area",price:88}]}];var r=n(484),c=n.n(r);function o(e,t){return e?c()(e).format(t):""}function d(e){return e[0].toUpperCase()+e.slice(1)}function l(e){return e.replace(/\s+/g,"-").toLowerCase()}class f{getTemplate(){return'
    \n

    Trip events

    \n
    '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class p{getTemplate(){return'
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n
    '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class u{getTemplate(){return'
      '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class b{getTemplate(){return'
    • '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}const h="HH:mm",v="DD/MM/YY HH:mm",m=["taxi","bus","train","ship","drive","flight","check-in","sightseeing","restaurant"];class _{viewId=null;event=null;currentDestination=null;currentOffersPack=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i}getTemplate(){return function(e,t,n,i){const s=o(t.dateFrom,"MMM DD"),a=o(t.dateFrom,h),r=o(t.dateTo,h),l=function(e,t){const n=c()(e).diff(t,"day"),i=c()(e).diff(t,"hour")-24*n,s=c()(e).diff(t,"minute")-(60*i+24*n*60);let a="";n>0&&n<10?a=`0${n}D`:n>=10&&(a=`${n}D`);let r="";return 0!==i?r=`${i}H`:0!==n&&(r="00H"),`${a} ${r} ${0!==s?`${s}M`:"00M"}`}(t.dateTo,t.dateFrom);return`
      \n \n
      \n Event type icon\n
      \n

      ${d(t.type)} ${n.name}

      \n
      \n

      \n \n —\n \n

      \n

      ${l}

      \n
      \n

      \n € ${t.basePrice}\n

      \n ${function(e,t){const n=t.offers.filter((t=>e.offers.includes(t.id)));return 0!==n.length?`

      Offers:

      \n
        \n ${n.map((e=>function(e){return`
      • \n ${e.title}\n +€ \n ${e.price}\n
      • `}(e))).join("")}\n
      `:""}(t,i)}\n \n \n
      `}(this.viewId,this.event,this.currentDestination,this.currentOffersPack)}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class y{viewId=null;event=null;currentDestination=null;currentOffersPack=null;allDestinations=null;allOffersPacks=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i,allDestinations:s,allOffersPacks:a}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i,this.allDestinations=s,this.allOffersPacks=a}getTemplate(){return e=this.viewId,t=this.event,n=this.currentDestination,i=this.currentOffersPack,s=this.allDestinations,this.allOffersPacks,`
      \n
      \n
      \n \n \n ${function(e,t){return`
      \n
      \n Event type\n ${e.map((e=>function(e,t){return`
      \n \n \n
      `}(e,t))).join("")}\n
      \n
      `}(m)}\n
      \n\n
      \n \n \n ${function(e,t){return`\n ${e.map((e=>``)).join("")}\n `}(s,e)}\n
      \n\n
      \n \n \n —\n \n \n
      \n\n
      \n \n \n
      \n\n \n \n
      \n
      \n ${function(e={},t){return 0!==e.offers.length?`
      \n

      Offers

      \n
      \n ${e.offers.map((e=>function(e,t){const n=l(e.title);return`
      \n \n \n
      `}(e,t))).join("")}\n
      \n
      `:""}(i,e)}\n\n ${a=n,!a||""===a.description&&0===a.pictures.length?"":`
      \n

      Destination

      \n

      ${a.description}

      \n ${function(e=[]){return 0!==e.length?`
      \n
      \n ${e.map((e=>`${e.description}`)).join("")}\n
      \n
      `:""}(a.pictures)}\n
      `}\n
      \n
      `;var e,t,n,i,s,a}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class g{viewId=null;event=null;currentDestination=null;currentOffersPack=null;allDestinations=null;allOffersPacks=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i,allDestinations:s,allOffersPacks:a}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i,this.allDestinations=s,this.allOffersPacks=a}getTemplate(){return e=this.viewId,t=this.event,n=this.currentDestination,i=this.currentOffersPack,s=this.allDestinations,this.allOffersPacks,`
      \n
      \n
      \n \n \n ${function(e,t){return`
      \n
      \n Event type\n ${e.map((e=>function(e,t){return`
      \n \n \n
      `}(e,t))).join("")}\n
      \n
      `}(m)}\n
      \n\n
      \n \n \n ${function(e,t){return`\n ${e.map((e=>``)).join("")}\n `}(s,e)}\n
      \n\n
      \n \n \n —\n \n \n
      \n\n
      \n \n \n
      \n\n \n \n \n
      \n
      \n ${function(e,t={},n){return 0!==t.offers.length?`
      \n

      Offers

      \n
      \n ${t.offers.map((t=>function(e,t,n){const i=l(e.title);return`
      \n \n \n
      `}(t,e,n))).join("")}\n
      \n
      `:""}(t,i,e)}\n\n ${a=n,!a||""===a.description&&0===a.pictures.length?"":`
      \n

      Destination

      \n

      ${a.description}

      \n ${function(e=[]){return 0!==e.length?`
      \n
      \n ${e.map((e=>`${e.description}`)).join("")}\n
      \n
      `:""}(a.pictures)}\n
      `}\n
      \n
      `;var e,t,n,i,s,a}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}const $=function(){let e=0;return function(){return e+=1,e}}(),T=document.querySelector(".page-header").querySelector(".trip-controls__filters"),w=document.querySelector(".page-main").querySelector(".page-body__container");t(new class{getTemplate(){return'
      \n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n \n
      \n\n \n
      '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}},T);const D=new class{constructor(){this.destinations=[]}init(){this.destinations=i}getAllDestinations(){return this.destinations}getDestinationById(e){return this.destinations.find((t=>t.id===e))}},k=new class{constructor(){this.events=[]}init(){this.events=s}getAllEvents(){return this.events}},M=new class{constructor(){this.offersPacks=[]}init(){this.offersPacks=a}getAllOffersPacks(){return this.offersPacks}getOffersPackByType(e){return this.offersPacks.find((t=>t.type===e))}},P=new class{tripComponent=null;eventListComponent=null;tripContainer=null;destinationsModel=null;eventsModel=null;offersModel=null;constructor({tripContainer:e,destinationsModel:t,eventsModel:n,offersModel:i}){this.tripComponent=new f,this.eventListComponent=new u,this.tripContainer=e,this.destinationsModel=t,this.eventsModel=n,this.offersModel=i}init(){this.defaultEvent={id:"",basePrice:"",dateFrom:(new Date).setHours(0,0,0,0),dateTo:(new Date).setHours(0,0,0,0),destination:"",isFavorite:!1,offers:[],type:"flight"},this.tripEvents=[...this.eventsModel.getAllEvents()],t(this.tripComponent,this.tripContainer),t(new p,this.tripComponent.getElement()),t(this.eventListComponent,this.tripComponent.getElement());for(let e=0;e{var e={484:function(e){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",r="day",c="week",o="month",d="quarter",l="year",f="date",p="Invalid Date",u=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,b=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},v=function(e,t,n){var i=String(e);return!i||i.length>=t?e:""+Array(t+1-i.length).join(n)+e},m={s:v,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),i=Math.floor(n/60),s=n%60;return(t<=0?"+":"-")+v(i,2,"0")+":"+v(s,2,"0")},m:function e(t,n){if(t.date()1)return e(r[0])}else{var c=t.name;y[c]=t,s=c}return!i&&s&&(_=s),s||!i&&_},w=function(e,t){if($(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new k(n)},D=m;D.l=T,D.i=$,D.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function h(e){this.$L=T(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[g]=!0}var v=h.prototype;return v.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(D.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var i=t.match(u);if(i){var s=i[2]-1||0,a=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],s,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(t)}(e),this.init()},v.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},v.$utils=function(){return D},v.isValid=function(){return!(this.$d.toString()===p)},v.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},v.isAfter=function(e,t){return w(e){var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";function e(e){const t=document.createElement("div");return t.innerHTML=e,t.firstElementChild}function t(e,t,n="beforeend"){t.insertAdjacentElement(n,e.getElement())}const i=[{id:"2d1ec240-1e78-4183-b27e-7023f2ce9320",description:"Kioto - famous for its crowded street markets with the best street food in Asia",name:"Kioto",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/5.jpg",description:"Kioto is a beautiful city"},{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Kioto with an embankment of a mighty river as a centre of attraction"},{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Kioto full of of cozy canteens where you can try the best coffee in the Middle East"},{src:"https://22.objects.htmlacademy.pro/static/destinations/20.jpg",description:"Kioto in a middle of Europe"}]},{id:"496bf9c6-7644-4068-baa0-8b1577df8854",description:"Amsterdam - middle-eastern paradise",name:"Amsterdam",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/13.jpg",description:"Amsterdam for those who value comfort and coziness"}]},{id:"97ba1bc6-b161-4015-b0a5-e1f31a3b972d",description:"Venice - a true asian pearl",name:"Venice",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/10.jpg",description:"Venice famous for its crowded street markets with the best street food in Asia"},{src:"https://22.objects.htmlacademy.pro/static/destinations/12.jpg",description:"Venice a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/6.jpg",description:"Venice in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/16.jpg",description:"Venice in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/11.jpg",description:"Venice a true asian pearl"}]},{id:"9bbe4200-020c-4f3c-9640-81648421f209",description:"Berlin - famous for its crowded street markets with the best street food in Asia",name:"Berlin",pictures:[]},{id:"c8eab9ce-c072-4114-9412-76f8023ba638",description:"Helsinki - middle-eastern paradise",name:"Helsinki",pictures:[]},{id:"7d2cc347-4428-45cb-b406-ef07ed787acc",description:"Sochi - with crowded streets",name:"Sochi",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/3.jpg",description:"Sochi with an embankment of a mighty river as a centre of attraction"},{src:"https://22.objects.htmlacademy.pro/static/destinations/18.jpg",description:"Sochi a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/13.jpg",description:"Sochi a true asian pearl"},{src:"https://22.objects.htmlacademy.pro/static/destinations/9.jpg",description:"Sochi with crowded streets"}]},{id:"21a059e3-af4a-4881-a3cc-40a381484c44",description:"",name:"Vien",pictures:[]},{id:"124c439f-1764-4bd2-917e-50973a77f227",description:"Chamonix-Mont-Blanc (usually shortened to Chamonix) is a resort area near the junction of France, Switzerland and Italy. At the base of Mont Blanc, the highest summit in the Alps, its renowned for its skiing.",name:"Chamonix",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/11.jpg",description:"Chamonix a perfect place to stay with a family"},{src:"https://22.objects.htmlacademy.pro/static/destinations/2.jpg",description:"Chamonix famous for its crowded street markets with the best street food in Asia"},{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Chamonix full of of cozy canteens where you can try the best coffee in the Middle East"},{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Chamonix in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/4.jpg",description:"Chamonix famous for its crowded street markets with the best street food in Asia"}]},{id:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",description:"Rome - with a beautiful old town",name:"Rome",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/17.jpg",description:"Rome with a beautiful old town"},{src:"https://22.objects.htmlacademy.pro/static/destinations/18.jpg",description:"Rome in a middle of Europe"},{src:"https://22.objects.htmlacademy.pro/static/destinations/5.jpg",description:"Rome for those who value comfort and coziness"},{src:"https://22.objects.htmlacademy.pro/static/destinations/8.jpg",description:"Rome with crowded streets"}]},{id:"1b17f449-8447-46a0-934e-fc54af3dd4ca",description:"Oslo - with an embankment of a mighty river as a centre of attraction",name:"Oslo",pictures:[{src:"https://22.objects.htmlacademy.pro/static/destinations/19.jpg",description:"Oslo is a beautiful city"}]}],s=[{id:"a72349a8-ca9d-4c0d-9007-d9ae3db4e2ae",basePrice:8581,dateFrom:"2024-12-14T19:13:11.060Z",dateTo:"2024-12-16T01:45:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"d71d1b94-dc80-4b83-bd27-3ca705acfb33",basePrice:1120,dateFrom:"2024-12-18T01:25:11.060Z",dateTo:"2024-12-19T16:44:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!1,offers:["1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"44351617-c7fd-4118-9876-f6aa892e2f37",basePrice:3339,dateFrom:"2024-12-10T12:10:00.060Z",dateTo:"2024-12-15T12:00:00.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!0,offers:["7f58bdd5-9809-4722-83c2-bcaa9e092e54","8309542d-7494-4299-a93c-32a2b4c982c2","f0d18307-8693-4c1a-b25b-043b3c1b9ed1","f9e6902f-48b3-4f5b-9755-2cf03531e149"],type:"ship"},{id:"efddfe0a-b94c-40ec-bad0-f63d7c1e56e1",basePrice:9946,dateFrom:"2024-12-23T10:20:11.060Z",dateTo:"2024-12-23T10:30:11.060Z",destination:"97ba1bc6-b161-4015-b0a5-e1f31a3b972d",isFavorite:!0,offers:[],type:"ship"},{id:"05928710-aa42-4cd7-ad19-2320b56c3ced",basePrice:2632,dateFrom:"2024-12-24T16:40:11.060Z",dateTo:"2024-12-25T20:17:11.060Z",destination:"124c439f-1764-4bd2-917e-50973a77f227",isFavorite:!0,offers:["f9cba921-201c-46e3-9f9c-181669310fc7","266854a6-32ce-43c2-afad-25fa2d1cff1f"],type:"restaurant"},{id:"a90e2114-1c72-4b20-984c-95c6d2c93d21",basePrice:9375,dateFrom:"2024-12-26T14:02:11.060Z",dateTo:"2024-12-27T18:52:11.060Z",destination:"124c439f-1764-4bd2-917e-50973a77f227",isFavorite:!0,offers:[],type:"train"},{id:"2b8b73ff-f17e-4596-ab44-0b53f98d42f4",basePrice:8216,dateFrom:"2024-12-28T11:46:11.060Z",dateTo:"2024-12-29T01:40:11.060Z",destination:"21a059e3-af4a-4881-a3cc-40a381484c44",isFavorite:!1,offers:["df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"bcd87b64-e570-41f9-af5b-c622c3822ebb",basePrice:7099,dateFrom:"2024-12-29T12:03:11.060Z",dateTo:"2024-12-30T06:27:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!0,offers:[],type:"ship"},{id:"cd8ee95b-95e9-42ab-81d2-232d1070b84a",basePrice:7453,dateFrom:"2024-12-30T14:34:11.060Z",dateTo:"2024-12-31T05:45:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!0,offers:[],type:"restaurant"},{id:"81b18db0-4178-4d23-b135-0c4805ddef7e",basePrice:7777,dateFrom:"2024-12-31T20:52:11.060Z",dateTo:"2025-01-02T09:09:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!1,offers:[],type:"restaurant"},{id:"7a10e74f-b5e4-4207-ad16-94bda36a2dc3",basePrice:5293,dateFrom:"2025-01-03T06:19:11.060Z",dateTo:"2025-01-03T14:36:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!1,offers:["c2ae2b1c-afc4-43be-8163-f88ed2cd1137","cae3afff-8cb2-4490-b611-a0c25baac039"],type:"drive"},{id:"e1ccdcdd-d790-4c13-9482-828537be9e1e",basePrice:9581,dateFrom:"2025-01-04T07:52:11.060Z",dateTo:"2025-01-05T01:21:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["8309542d-7494-4299-a93c-32a2b4c982c2","f0d18307-8693-4c1a-b25b-043b3c1b9ed1","f9e6902f-48b3-4f5b-9755-2cf03531e149"],type:"ship"},{id:"7caa7469-cfe9-49a6-a48d-cfa3e8266cbb",basePrice:8613,dateFrom:"2025-01-05T20:40:11.060Z",dateTo:"2025-01-07T14:35:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!1,offers:["6a7e124a-0c0f-439d-b6e0-f98633920612"],type:"train"},{id:"cfc55ed5-b54f-40b4-a940-33b3ca7a719d",basePrice:9898,dateFrom:"2025-01-08T05:16:11.060Z",dateTo:"2025-01-08T22:20:11.060Z",destination:"2d1ec240-1e78-4183-b27e-7023f2ce9320",isFavorite:!1,offers:["df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"7a2e33ed-09b8-49ca-a358-76a180af93c9",basePrice:6171,dateFrom:"2025-01-09T14:23:11.060Z",dateTo:"2025-01-10T13:29:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!0,offers:[],type:"taxi"},{id:"7d843d6c-cd96-4d4d-850e-1793a53b28fc",basePrice:9467,dateFrom:"2025-01-11T22:35:11.060Z",dateTo:"2025-01-12T15:33:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:[],type:"bus"},{id:"6ee96ae1-6454-49ee-bd21-5f6d0a315fca",basePrice:761,dateFrom:"2025-01-13T18:04:11.060Z",dateTo:"2025-01-15T14:35:11.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!0,offers:["04f9d7a2-5515-4404-8f46-720eed54bde7","9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2"],type:"flight"},{id:"18e57d62-95a3-433a-bef3-07bc5c013bdb",basePrice:748,dateFrom:"2025-01-17T04:29:11.060Z",dateTo:"2025-01-18T13:56:11.060Z",destination:"53b6b366-1de8-447a-93ae-e71dc7d59aa7",isFavorite:!0,offers:["f671947a-8b29-4c39-99fc-d56adfb34ef5"],type:"bus"},{id:"989158b1-d4c9-4a03-8e14-f2ef8997e349",basePrice:6737,dateFrom:"2025-01-19T00:29:11.060Z",dateTo:"2025-01-19T20:50:11.060Z",destination:"9bbe4200-020c-4f3c-9640-81648421f209",isFavorite:!1,offers:["319d74a8-a921-4fe0-8af7-9d04025028e6","ebe35193-f40b-4980-8534-d3ccf5bb00a0","c22f8e91-8517-4e7c-bca7-c317eb0427ed","b661a95e-82fe-407c-b3e6-0494959e8270"],type:"check-in"},{id:"f0ec862b-5357-4346-b14d-a2be1d12322b",basePrice:2088,dateFrom:"2025-01-21T01:54:11.060Z",dateTo:"2025-01-22T13:27:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!1,offers:["4f826ce7-b60e-4feb-a6a6-5fba9ad65c68","dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b","df563b88-4847-4a3c-ac72-e28a01d65345","df51a087-0baf-4b2b-8cd2-0d3da21acc53","1e7ab78b-3faa-48b3-aab7-266373f30cde"],type:"taxi"},{id:"a1e50061-b946-44c1-a542-82f1f47a57f7",basePrice:2317,dateFrom:"2025-01-24T12:51:11.060Z",dateTo:"2025-01-25T22:33:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!1,offers:[],type:"ship"},{id:"8d5d2b55-96d7-4e2f-b6c5-f79ab4f69876",basePrice:3593,dateFrom:"2025-01-26T19:09:11.060Z",dateTo:"2025-01-27T19:49:11.060Z",destination:"7d2cc347-4428-45cb-b406-ef07ed787acc",isFavorite:!0,offers:[],type:"sightseeing"},{id:"07f20ffa-6b2d-4905-8dee-0140d539f205",basePrice:748,dateFrom:"2025-01-29T06:54:11.060Z",dateTo:"2025-01-30T11:59:11.060Z",destination:"496bf9c6-7644-4068-baa0-8b1577df8854",isFavorite:!0,offers:[],type:"taxi"},{id:"f13e5fd4-42ab-4b2e-bdb6-4002532c33c5",basePrice:7669,dateFrom:"2025-01-31T14:21:11.060Z",dateTo:"2025-02-02T05:12:11.060Z",destination:"c8eab9ce-c072-4114-9412-76f8023ba638",isFavorite:!0,offers:["a679fab7-7434-49e8-8ba3-ba810a5e7724","6a7e124a-0c0f-439d-b6e0-f98633920612"],type:"train"},{id:"2ea1c048-685c-4ade-ba7c-058b6ab98594",basePrice:8686,dateFrom:"2025-02-02T12:04:11.060Z",dateTo:"2025-02-03T10:52:11.060Z",destination:"2d1ec240-1e78-4183-b27e-7023f2ce9320",isFavorite:!0,offers:["b661a95e-82fe-407c-b3e6-0494959e8270"],type:"check-in"}],a=[{type:"taxi",offers:[{id:"4f826ce7-b60e-4feb-a6a6-5fba9ad65c68",title:"Upgrade to a business class",price:75},{id:"dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b",title:"Choose the radio station",price:104},{id:"df563b88-4847-4a3c-ac72-e28a01d65345",title:"Choose temperature",price:99},{id:"df51a087-0baf-4b2b-8cd2-0d3da21acc53",title:"Drive quickly, I'm in a hurry",price:80},{id:"1e7ab78b-3faa-48b3-aab7-266373f30cde",title:"Drive slowly",price:96}]},{type:"bus",offers:[{id:"2d541885-7c81-4293-9602-96376ec81fb6",title:"Infotainment system",price:59},{id:"6839add0-091d-4144-b3a5-210187235ae8",title:"Order meal",price:159},{id:"f671947a-8b29-4c39-99fc-d56adfb34ef5",title:"Choose seats",price:65}]},{type:"train",offers:[{id:"0c8b452c-9a54-4aa5-a7d2-db6d34c95456",title:"Book a taxi at the arrival point",price:159},{id:"a679fab7-7434-49e8-8ba3-ba810a5e7724",title:"Order a breakfast",price:151},{id:"6a7e124a-0c0f-439d-b6e0-f98633920612",title:"Wake up at a certain time",price:177}]},{type:"flight",offers:[{id:"65bcf5d6-348b-488e-bdba-2c08d497eb8e",title:"Choose meal",price:106},{id:"39a0e0ff-be69-4249-8003-a31eb0b2cf93",title:"Choose seats",price:114},{id:"972c9b08-c84d-4be6-8511-93922a208e3e",title:"Upgrade to comfort class",price:194},{id:"7d8a3707-7953-4d47-b46b-ebf3889b5190",title:"Upgrade to business class",price:193},{id:"04f9d7a2-5515-4404-8f46-720eed54bde7",title:"Add luggage",price:66},{id:"9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2",title:"Business lounge",price:80}]},{type:"check-in",offers:[{id:"245f88c9-fde6-4d7f-a4c7-94d1482aa34f",title:"Choose the time of check-in",price:169},{id:"319d74a8-a921-4fe0-8af7-9d04025028e6",title:"Choose the time of check-out",price:126},{id:"ebe35193-f40b-4980-8534-d3ccf5bb00a0",title:"Add breakfast",price:39},{id:"c22f8e91-8517-4e7c-bca7-c317eb0427ed",title:"Laundry",price:84},{id:"b661a95e-82fe-407c-b3e6-0494959e8270",title:"Order a meal from the restaurant",price:139}]},{type:"sightseeing",offers:[]},{type:"ship",offers:[{id:"24ab1acf-10d1-45eb-ab43-864fbd4d957f",title:"Choose meal",price:119},{id:"c651fe18-cf4e-4649-872b-34a89b5a533d",title:"Choose seats",price:197},{id:"7f58bdd5-9809-4722-83c2-bcaa9e092e54",title:"Upgrade to comfort class",price:104},{id:"8309542d-7494-4299-a93c-32a2b4c982c2",title:"Upgrade to business class",price:73},{id:"f0d18307-8693-4c1a-b25b-043b3c1b9ed1",title:"Add luggage",price:155},{id:"f9e6902f-48b3-4f5b-9755-2cf03531e149",title:"Business lounge",price:86}]},{type:"drive",offers:[{id:"c2ae2b1c-afc4-43be-8163-f88ed2cd1137",title:"With automatic transmission",price:144},{id:"cae3afff-8cb2-4490-b611-a0c25baac039",title:"With air conditioning",price:120}]},{type:"restaurant",offers:[{id:"f9cba921-201c-46e3-9f9c-181669310fc7",title:"Choose live music",price:127},{id:"266854a6-32ce-43c2-afad-25fa2d1cff1f",title:"Choose VIP area",price:88}]}];var r=n(484),c=n.n(r);function o(e,t){return e?c()(e).format(t):""}function d(e){return e[0].toUpperCase()+e.slice(1)}function l(e){return e.replace(/\s+/g,"-").toLowerCase()}class f{getTemplate(){return'
      \n

      Trip events

      \n
      '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class p{getTemplate(){return'
      \n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n \n
      \n
      '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class u{getTemplate(){return'
        '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class b{getTemplate(){return'
      • '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}const h="HH:mm",v="DD/MM/YY HH:mm",m=["taxi","bus","train","ship","drive","flight","check-in","sightseeing","restaurant"];class _{viewId=null;event=null;currentDestination=null;currentOffersPack=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i}getTemplate(){return function(e,t,n,i){const s=o(t.dateFrom,"MMM DD"),a=o(t.dateFrom,h),r=o(t.dateTo,h),l=function(e,t){const n=c()(e).diff(t,"day"),i=c()(e).diff(t,"hour")-24*n,s=c()(e).diff(t,"minute")-(60*i+24*n*60);let a="";n>0&&n<10?a=`0${n}D`:n>=10&&(a=`${n}D`);let r="";return i>0&&i<10?r=`0${i}H`:i>=10?r=`${i}H`:0!==n&&(r="00H"),`${a} ${r} ${0!==s?`${s}M`:"00M"}`}(t.dateTo,t.dateFrom);return`
        \n \n
        \n Event type icon\n
        \n

        ${d(t.type)} ${n.name}

        \n
        \n

        \n \n —\n \n

        \n

        ${l}

        \n
        \n

        \n € ${t.basePrice}\n

        \n ${function(e,t){const n=t.offers.filter((t=>e.offers.includes(t.id)));return 0!==n.length?`

        Offers:

        \n
          \n ${n.map((e=>function(e){return`
        • \n ${e.title}\n +€ \n ${e.price}\n
        • `}(e))).join("")}\n
        `:""}(t,i)}\n \n \n
        `}(this.viewId,this.event,this.currentDestination,this.currentOffersPack)}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class y{viewId=null;event=null;currentDestination=null;currentOffersPack=null;allDestinations=null;allOffersPacks=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i,allDestinations:s,allOffersPacks:a}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i,this.allDestinations=s,this.allOffersPacks=a}getTemplate(){return e=this.viewId,t=this.event,n=this.currentDestination,i=this.currentOffersPack,s=this.allDestinations,this.allOffersPacks,`
        \n
        \n
        \n \n \n ${function(e,t){return`
        \n
        \n Event type\n ${e.map((e=>function(e,t){return`
        \n \n \n
        `}(e,t))).join("")}\n
        \n
        `}(m)}\n
        \n\n
        \n \n \n ${function(e,t){return`\n ${e.map((e=>``)).join("")}\n `}(s,e)}\n
        \n\n
        \n \n \n —\n \n \n
        \n\n
        \n \n \n
        \n\n \n \n
        \n
        \n ${function(e={},t){return 0!==e.offers.length?`
        \n

        Offers

        \n
        \n ${e.offers.map((e=>function(e,t){const n=l(e.title);return`
        \n \n \n
        `}(e,t))).join("")}\n
        \n
        `:""}(i,e)}\n\n ${a=n,!a||""===a.description&&0===a.pictures.length?"":`
        \n

        Destination

        \n

        ${a.description}

        \n ${function(e=[]){return 0!==e.length?`
        \n
        \n ${e.map((e=>`${e.description}`)).join("")}\n
        \n
        `:""}(a.pictures)}\n
        `}\n
        \n
        `;var e,t,n,i,s,a}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}class g{viewId=null;event=null;currentDestination=null;currentOffersPack=null;allDestinations=null;allOffersPacks=null;constructor({viewId:e,event:t,currentDestination:n,currentOffersPack:i,allDestinations:s,allOffersPacks:a}){this.viewId=e,this.event=t,this.currentDestination=n,this.currentOffersPack=i,this.allDestinations=s,this.allOffersPacks=a}getTemplate(){return e=this.viewId,t=this.event,n=this.currentDestination,i=this.currentOffersPack,s=this.allDestinations,this.allOffersPacks,`
        \n
        \n
        \n \n \n ${function(e,t){return`
        \n
        \n Event type\n ${e.map((e=>function(e,t){return`
        \n \n \n
        `}(e,t))).join("")}\n
        \n
        `}(m)}\n
        \n\n
        \n \n \n ${function(e,t){return`\n ${e.map((e=>``)).join("")}\n `}(s,e)}\n
        \n\n
        \n \n \n —\n \n \n
        \n\n
        \n \n \n
        \n\n \n \n \n
        \n
        \n ${function(e,t={},n){return 0!==t.offers.length?`
        \n

        Offers

        \n
        \n ${t.offers.map((t=>function(e,t,n){const i=l(e.title);return`
        \n \n \n
        `}(t,e,n))).join("")}\n
        \n
        `:""}(t,i,e)}\n\n ${a=n,!a||""===a.description&&0===a.pictures.length?"":`
        \n

        Destination

        \n

        ${a.description}

        \n ${function(e=[]){return 0!==e.length?`
        \n
        \n ${e.map((e=>`${e.description}`)).join("")}\n
        \n
        `:""}(a.pictures)}\n
        `}\n
        \n
        `;var e,t,n,i,s,a}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}}const $=function(){let e=0;return function(){return e+=1,e}}(),T=document.querySelector(".page-header").querySelector(".trip-controls__filters"),w=document.querySelector(".page-main").querySelector(".page-body__container");t(new class{getTemplate(){return'
        \n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n \n
        \n\n \n
        '}getElement(){return this.element||(this.element=e(this.getTemplate())),this.element}removeElement(){this.element=null}},T);const D=new class{constructor(){this.destinations=[]}init(){this.destinations=i}getAllDestinations(){return this.destinations}getDestinationById(e){return this.destinations.find((t=>t.id===e))}},k=new class{constructor(){this.events=[]}init(){this.events=s}getAllEvents(){return this.events}},M=new class{constructor(){this.offersPacks=[]}init(){this.offersPacks=a}getAllOffersPacks(){return this.offersPacks}getOffersPackByType(e){return this.offersPacks.find((t=>t.type===e))}},P=new class{tripComponent=null;eventListComponent=null;tripContainer=null;destinationsModel=null;eventsModel=null;offersModel=null;constructor({tripContainer:e,destinationsModel:t,eventsModel:n,offersModel:i}){this.tripComponent=new f,this.eventListComponent=new u,this.tripContainer=e,this.destinationsModel=t,this.eventsModel=n,this.offersModel=i}init(){this.defaultEvent={id:"",basePrice:"",dateFrom:(new Date).setHours(0,0,0,0),dateTo:(new Date).setHours(0,0,0,0),destination:"",isFavorite:!1,offers:[],type:"flight"},this.tripEvents=[...this.eventsModel.getAllEvents()],t(this.tripComponent,this.tripContainer),t(new p,this.tripComponent.getElement()),t(this.eventListComponent,this.tripComponent.getElement());for(let e=0;e=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const RenderPosition = {\n BEFOREBEGIN: 'beforebegin',\n AFTERBEGIN: 'afterbegin',\n BEFOREEND: 'beforeend',\n AFTEREND: 'afterend',\n};\n\nfunction createElement(template) {\n const newElement = document.createElement('div');\n newElement.innerHTML = template;\n\n return newElement.firstElementChild;\n}\n\nfunction render(component, container, place = RenderPosition.BEFOREEND) {\n container.insertAdjacentElement(place, component.getElement());\n}\n\nexport {RenderPosition, createElement, render};\n","export const mockDestinations = [\n {\n 'id': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'description': 'Kioto - famous for its crowded street markets with the best street food in Asia',\n 'name': 'Kioto',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/5.jpg',\n 'description': 'Kioto is a beautiful city'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Kioto with an embankment of a mighty river as a centre of attraction'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Kioto full of of cozy canteens where you can try the best coffee in the Middle East'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/20.jpg',\n 'description': 'Kioto in a middle of Europe'\n }\n ]\n },\n {\n 'id': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'description': 'Amsterdam - middle-eastern paradise',\n 'name': 'Amsterdam',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/13.jpg',\n 'description': 'Amsterdam for those who value comfort and coziness'\n }\n ]\n },\n {\n 'id': '97ba1bc6-b161-4015-b0a5-e1f31a3b972d',\n 'description': 'Venice - a true asian pearl',\n 'name': 'Venice',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/10.jpg',\n 'description': 'Venice famous for its crowded street markets with the best street food in Asia'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/12.jpg',\n 'description': 'Venice a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/6.jpg',\n 'description': 'Venice in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/16.jpg',\n 'description': 'Venice in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/11.jpg',\n 'description': 'Venice a true asian pearl'\n }\n ]\n },\n {\n 'id': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'description': 'Berlin - famous for its crowded street markets with the best street food in Asia',\n 'name': 'Berlin',\n 'pictures': []\n },\n {\n 'id': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'description': 'Helsinki - middle-eastern paradise',\n 'name': 'Helsinki',\n 'pictures': []\n },\n {\n 'id': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'description': 'Sochi - with crowded streets',\n 'name': 'Sochi',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/3.jpg',\n 'description': 'Sochi with an embankment of a mighty river as a centre of attraction'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/18.jpg',\n 'description': 'Sochi a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/13.jpg',\n 'description': 'Sochi a true asian pearl'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/9.jpg',\n 'description': 'Sochi with crowded streets'\n }\n ]\n },\n {\n 'id': '21a059e3-af4a-4881-a3cc-40a381484c44',\n 'description': '',\n 'name': 'Vien',\n 'pictures': []\n },\n {\n 'id': '124c439f-1764-4bd2-917e-50973a77f227',\n 'description': 'Chamonix-Mont-Blanc (usually shortened to Chamonix) is a resort area near the junction of France, Switzerland and Italy. At the base of Mont Blanc, the highest summit in the Alps, its renowned for its skiing.',\n 'name': 'Chamonix',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/11.jpg',\n 'description': 'Chamonix a perfect place to stay with a family'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/2.jpg',\n 'description': 'Chamonix famous for its crowded street markets with the best street food in Asia'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Chamonix full of of cozy canteens where you can try the best coffee in the Middle East'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Chamonix in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/4.jpg',\n 'description': 'Chamonix famous for its crowded street markets with the best street food in Asia'\n }\n ]\n },\n {\n 'id': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'description': 'Rome - with a beautiful old town',\n 'name': 'Rome',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/17.jpg',\n 'description': 'Rome with a beautiful old town'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/18.jpg',\n 'description': 'Rome in a middle of Europe'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/5.jpg',\n 'description': 'Rome for those who value comfort and coziness'\n },\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/8.jpg',\n 'description': 'Rome with crowded streets'\n }\n ]\n },\n {\n 'id': '1b17f449-8447-46a0-934e-fc54af3dd4ca',\n 'description': 'Oslo - with an embankment of a mighty river as a centre of attraction',\n 'name': 'Oslo',\n 'pictures': [\n {\n 'src': 'https://22.objects.htmlacademy.pro/static/destinations/19.jpg',\n 'description': 'Oslo is a beautiful city'\n }\n ]\n }\n];\n","export const mockEvents = [\n {\n 'id': 'a72349a8-ca9d-4c0d-9007-d9ae3db4e2ae',\n 'basePrice': 8581,\n 'dateFrom': '2024-12-14T19:13:11.060Z',\n 'dateTo': '2024-12-16T01:45:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'd71d1b94-dc80-4b83-bd27-3ca705acfb33',\n 'basePrice': 1120,\n 'dateFrom': '2024-12-18T01:25:11.060Z',\n 'dateTo': '2024-12-19T16:44:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': false,\n 'offers': [\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': '44351617-c7fd-4118-9876-f6aa892e2f37',\n 'basePrice': 3339,\n 'dateFrom': '2024-12-10T12:10:00.060Z',\n 'dateTo': '2024-12-15T12:00:00.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': true,\n 'offers': [\n '7f58bdd5-9809-4722-83c2-bcaa9e092e54',\n '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'f9e6902f-48b3-4f5b-9755-2cf03531e149'\n ],\n 'type': 'ship'\n },\n {\n 'id': 'efddfe0a-b94c-40ec-bad0-f63d7c1e56e1',\n 'basePrice': 9946,\n 'dateFrom': '2024-12-23T10:20:11.060Z',\n 'dateTo': '2024-12-23T10:30:11.060Z',\n 'destination': '97ba1bc6-b161-4015-b0a5-e1f31a3b972d',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': '05928710-aa42-4cd7-ad19-2320b56c3ced',\n 'basePrice': 2632,\n 'dateFrom': '2024-12-24T16:40:11.060Z',\n 'dateTo': '2024-12-25T20:17:11.060Z',\n 'destination': '124c439f-1764-4bd2-917e-50973a77f227',\n 'isFavorite': true,\n 'offers': [\n 'f9cba921-201c-46e3-9f9c-181669310fc7',\n '266854a6-32ce-43c2-afad-25fa2d1cff1f'\n ],\n 'type': 'restaurant'\n },\n {\n 'id': 'a90e2114-1c72-4b20-984c-95c6d2c93d21',\n 'basePrice': 9375,\n 'dateFrom': '2024-12-26T14:02:11.060Z',\n 'dateTo': '2024-12-27T18:52:11.060Z',\n 'destination': '124c439f-1764-4bd2-917e-50973a77f227',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'train'\n },\n {\n 'id': '2b8b73ff-f17e-4596-ab44-0b53f98d42f4',\n 'basePrice': 8216,\n 'dateFrom': '2024-12-28T11:46:11.060Z',\n 'dateTo': '2024-12-29T01:40:11.060Z',\n 'destination': '21a059e3-af4a-4881-a3cc-40a381484c44',\n 'isFavorite': false,\n 'offers': [\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'bcd87b64-e570-41f9-af5b-c622c3822ebb',\n 'basePrice': 7099,\n 'dateFrom': '2024-12-29T12:03:11.060Z',\n 'dateTo': '2024-12-30T06:27:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': 'cd8ee95b-95e9-42ab-81d2-232d1070b84a',\n 'basePrice': 7453,\n 'dateFrom': '2024-12-30T14:34:11.060Z',\n 'dateTo': '2024-12-31T05:45:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'restaurant'\n },\n {\n 'id': '81b18db0-4178-4d23-b135-0c4805ddef7e',\n 'basePrice': 7777,\n 'dateFrom': '2024-12-31T20:52:11.060Z',\n 'dateTo': '2025-01-02T09:09:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'restaurant'\n },\n {\n 'id': '7a10e74f-b5e4-4207-ad16-94bda36a2dc3',\n 'basePrice': 5293,\n 'dateFrom': '2025-01-03T06:19:11.060Z',\n 'dateTo': '2025-01-03T14:36:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': false,\n 'offers': [\n 'c2ae2b1c-afc4-43be-8163-f88ed2cd1137',\n 'cae3afff-8cb2-4490-b611-a0c25baac039'\n ],\n 'type': 'drive'\n },\n {\n 'id': 'e1ccdcdd-d790-4c13-9482-828537be9e1e',\n 'basePrice': 9581,\n 'dateFrom': '2025-01-04T07:52:11.060Z',\n 'dateTo': '2025-01-05T01:21:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'f9e6902f-48b3-4f5b-9755-2cf03531e149'\n ],\n 'type': 'ship'\n },\n {\n 'id': '7caa7469-cfe9-49a6-a48d-cfa3e8266cbb',\n 'basePrice': 8613,\n 'dateFrom': '2025-01-05T20:40:11.060Z',\n 'dateTo': '2025-01-07T14:35:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': false,\n 'offers': [\n '6a7e124a-0c0f-439d-b6e0-f98633920612'\n ],\n 'type': 'train'\n },\n {\n 'id': 'cfc55ed5-b54f-40b4-a940-33b3ca7a719d',\n 'basePrice': 9898,\n 'dateFrom': '2025-01-08T05:16:11.060Z',\n 'dateTo': '2025-01-08T22:20:11.060Z',\n 'destination': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'isFavorite': false,\n 'offers': [\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': '7a2e33ed-09b8-49ca-a358-76a180af93c9',\n 'basePrice': 6171,\n 'dateFrom': '2025-01-09T14:23:11.060Z',\n 'dateTo': '2025-01-10T13:29:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'taxi'\n },\n {\n 'id': '7d843d6c-cd96-4d4d-850e-1793a53b28fc',\n 'basePrice': 9467,\n 'dateFrom': '2025-01-11T22:35:11.060Z',\n 'dateTo': '2025-01-12T15:33:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'bus'\n },\n {\n 'id': '6ee96ae1-6454-49ee-bd21-5f6d0a315fca',\n 'basePrice': 761,\n 'dateFrom': '2025-01-13T18:04:11.060Z',\n 'dateTo': '2025-01-15T14:35:11.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': true,\n 'offers': [\n '04f9d7a2-5515-4404-8f46-720eed54bde7',\n '9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2'\n ],\n 'type': 'flight'\n },\n {\n 'id': '18e57d62-95a3-433a-bef3-07bc5c013bdb',\n 'basePrice': 748,\n 'dateFrom': '2025-01-17T04:29:11.060Z',\n 'dateTo': '2025-01-18T13:56:11.060Z',\n 'destination': '53b6b366-1de8-447a-93ae-e71dc7d59aa7',\n 'isFavorite': true,\n 'offers': [\n 'f671947a-8b29-4c39-99fc-d56adfb34ef5'\n ],\n 'type': 'bus'\n },\n {\n 'id': '989158b1-d4c9-4a03-8e14-f2ef8997e349',\n 'basePrice': 6737,\n 'dateFrom': '2025-01-19T00:29:11.060Z',\n 'dateTo': '2025-01-19T20:50:11.060Z',\n 'destination': '9bbe4200-020c-4f3c-9640-81648421f209',\n 'isFavorite': false,\n 'offers': [\n '319d74a8-a921-4fe0-8af7-9d04025028e6',\n 'ebe35193-f40b-4980-8534-d3ccf5bb00a0',\n 'c22f8e91-8517-4e7c-bca7-c317eb0427ed',\n 'b661a95e-82fe-407c-b3e6-0494959e8270'\n ],\n 'type': 'check-in'\n },\n {\n 'id': 'f0ec862b-5357-4346-b14d-a2be1d12322b',\n 'basePrice': 2088,\n 'dateFrom': '2025-01-21T01:54:11.060Z',\n 'dateTo': '2025-01-22T13:27:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': false,\n 'offers': [\n '4f826ce7-b60e-4feb-a6a6-5fba9ad65c68',\n 'dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b',\n 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n '1e7ab78b-3faa-48b3-aab7-266373f30cde'\n ],\n 'type': 'taxi'\n },\n {\n 'id': 'a1e50061-b946-44c1-a542-82f1f47a57f7',\n 'basePrice': 2317,\n 'dateFrom': '2025-01-24T12:51:11.060Z',\n 'dateTo': '2025-01-25T22:33:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': false,\n 'offers': [],\n 'type': 'ship'\n },\n {\n 'id': '8d5d2b55-96d7-4e2f-b6c5-f79ab4f69876',\n 'basePrice': 3593,\n 'dateFrom': '2025-01-26T19:09:11.060Z',\n 'dateTo': '2025-01-27T19:49:11.060Z',\n 'destination': '7d2cc347-4428-45cb-b406-ef07ed787acc',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'sightseeing'\n },\n {\n 'id': '07f20ffa-6b2d-4905-8dee-0140d539f205',\n 'basePrice': 748,\n 'dateFrom': '2025-01-29T06:54:11.060Z',\n 'dateTo': '2025-01-30T11:59:11.060Z',\n 'destination': '496bf9c6-7644-4068-baa0-8b1577df8854',\n 'isFavorite': true,\n 'offers': [],\n 'type': 'taxi'\n },\n {\n 'id': 'f13e5fd4-42ab-4b2e-bdb6-4002532c33c5',\n 'basePrice': 7669,\n 'dateFrom': '2025-01-31T14:21:11.060Z',\n 'dateTo': '2025-02-02T05:12:11.060Z',\n 'destination': 'c8eab9ce-c072-4114-9412-76f8023ba638',\n 'isFavorite': true,\n 'offers': [\n 'a679fab7-7434-49e8-8ba3-ba810a5e7724',\n '6a7e124a-0c0f-439d-b6e0-f98633920612'\n ],\n 'type': 'train'\n },\n {\n 'id': '2ea1c048-685c-4ade-ba7c-058b6ab98594',\n 'basePrice': 8686,\n 'dateFrom': '2025-02-02T12:04:11.060Z',\n 'dateTo': '2025-02-03T10:52:11.060Z',\n 'destination': '2d1ec240-1e78-4183-b27e-7023f2ce9320',\n 'isFavorite': true,\n 'offers': [\n 'b661a95e-82fe-407c-b3e6-0494959e8270'\n ],\n 'type': 'check-in'\n }\n];\n","export const mockOffersPacks = [\n {\n 'type': 'taxi',\n 'offers': [\n {\n 'id': '4f826ce7-b60e-4feb-a6a6-5fba9ad65c68',\n 'title': 'Upgrade to a business class',\n 'price': 75\n },\n {\n 'id': 'dd5a0d0e-d1ae-4afc-bc8a-a68eb2e4c54b',\n 'title': 'Choose the radio station',\n 'price': 104\n },\n {\n 'id': 'df563b88-4847-4a3c-ac72-e28a01d65345',\n 'title': 'Choose temperature',\n 'price': 99\n },\n {\n 'id': 'df51a087-0baf-4b2b-8cd2-0d3da21acc53',\n 'title': 'Drive quickly, I\\'m in a hurry',\n 'price': 80\n },\n {\n 'id': '1e7ab78b-3faa-48b3-aab7-266373f30cde',\n 'title': 'Drive slowly',\n 'price': 96\n }\n ]\n },\n {\n 'type': 'bus',\n 'offers': [\n {\n 'id': '2d541885-7c81-4293-9602-96376ec81fb6',\n 'title': 'Infotainment system',\n 'price': 59\n },\n {\n 'id': '6839add0-091d-4144-b3a5-210187235ae8',\n 'title': 'Order meal',\n 'price': 159\n },\n {\n 'id': 'f671947a-8b29-4c39-99fc-d56adfb34ef5',\n 'title': 'Choose seats',\n 'price': 65\n }\n ]\n },\n {\n 'type': 'train',\n 'offers': [\n {\n 'id': '0c8b452c-9a54-4aa5-a7d2-db6d34c95456',\n 'title': 'Book a taxi at the arrival point',\n 'price': 159\n },\n {\n 'id': 'a679fab7-7434-49e8-8ba3-ba810a5e7724',\n 'title': 'Order a breakfast',\n 'price': 151\n },\n {\n 'id': '6a7e124a-0c0f-439d-b6e0-f98633920612',\n 'title': 'Wake up at a certain time',\n 'price': 177\n }\n ]\n },\n {\n 'type': 'flight',\n 'offers': [\n {\n 'id': '65bcf5d6-348b-488e-bdba-2c08d497eb8e',\n 'title': 'Choose meal',\n 'price': 106\n },\n {\n 'id': '39a0e0ff-be69-4249-8003-a31eb0b2cf93',\n 'title': 'Choose seats',\n 'price': 114\n },\n {\n 'id': '972c9b08-c84d-4be6-8511-93922a208e3e',\n 'title': 'Upgrade to comfort class',\n 'price': 194\n },\n {\n 'id': '7d8a3707-7953-4d47-b46b-ebf3889b5190',\n 'title': 'Upgrade to business class',\n 'price': 193\n },\n {\n 'id': '04f9d7a2-5515-4404-8f46-720eed54bde7',\n 'title': 'Add luggage',\n 'price': 66\n },\n {\n 'id': '9cfa4298-4ac7-4e98-ab73-adbbc3eba2e2',\n 'title': 'Business lounge',\n 'price': 80\n }\n ]\n },\n {\n 'type': 'check-in',\n 'offers': [\n {\n 'id': '245f88c9-fde6-4d7f-a4c7-94d1482aa34f',\n 'title': 'Choose the time of check-in',\n 'price': 169\n },\n {\n 'id': '319d74a8-a921-4fe0-8af7-9d04025028e6',\n 'title': 'Choose the time of check-out',\n 'price': 126\n },\n {\n 'id': 'ebe35193-f40b-4980-8534-d3ccf5bb00a0',\n 'title': 'Add breakfast',\n 'price': 39\n },\n {\n 'id': 'c22f8e91-8517-4e7c-bca7-c317eb0427ed',\n 'title': 'Laundry',\n 'price': 84\n },\n {\n 'id': 'b661a95e-82fe-407c-b3e6-0494959e8270',\n 'title': 'Order a meal from the restaurant',\n 'price': 139\n }\n ]\n },\n {\n 'type': 'sightseeing',\n 'offers': []\n },\n {\n 'type': 'ship',\n 'offers': [\n {\n 'id': '24ab1acf-10d1-45eb-ab43-864fbd4d957f',\n 'title': 'Choose meal',\n 'price': 119\n },\n {\n 'id': 'c651fe18-cf4e-4649-872b-34a89b5a533d',\n 'title': 'Choose seats',\n 'price': 197\n },\n {\n 'id': '7f58bdd5-9809-4722-83c2-bcaa9e092e54',\n 'title': 'Upgrade to comfort class',\n 'price': 104\n },\n {\n 'id': '8309542d-7494-4299-a93c-32a2b4c982c2',\n 'title': 'Upgrade to business class',\n 'price': 73\n },\n {\n 'id': 'f0d18307-8693-4c1a-b25b-043b3c1b9ed1',\n 'title': 'Add luggage',\n 'price': 155\n },\n {\n 'id': 'f9e6902f-48b3-4f5b-9755-2cf03531e149',\n 'title': 'Business lounge',\n 'price': 86\n }\n ]\n },\n {\n 'type': 'drive',\n 'offers': [\n {\n 'id': 'c2ae2b1c-afc4-43be-8163-f88ed2cd1137',\n 'title': 'With automatic transmission',\n 'price': 144\n },\n {\n 'id': 'cae3afff-8cb2-4490-b611-a0c25baac039',\n 'title': 'With air conditioning',\n 'price': 120\n }\n ]\n },\n {\n 'type': 'restaurant',\n 'offers': [\n {\n 'id': 'f9cba921-201c-46e3-9f9c-181669310fc7',\n 'title': 'Choose live music',\n 'price': 127\n },\n {\n 'id': '266854a6-32ce-43c2-afad-25fa2d1cff1f',\n 'title': 'Choose VIP area',\n 'price': 88\n }\n ]\n }\n];\n","import dayjs from 'dayjs';\n\n\nfunction getDefaultEvent() {\n return {\n id: '',\n basePrice: '',\n dateFrom: new Date().setHours(0,0,0,0),\n dateTo: new Date().setHours(0,0,0,0),\n destination: '',\n isFavorite: false,\n offers: [],\n type: 'flight'\n };\n}\n\n\nfunction getFormattedDate(date, format) {\n return date ? dayjs(date).format(format) : '';\n}\n\n\nfunction getDateDifference(dateOne, dateTwo) {\n const diffDay = dayjs(dateOne).diff(dateTwo, 'day');\n const diffHour = dayjs(dateOne).diff(dateTwo, 'hour') - (diffDay * 24);\n const diffMinute = dayjs(dateOne).diff(dateTwo, 'minute') - ((diffHour * 60) + ((diffDay * 24) * 60));\n\n let diffDayText = '';\n if (diffDay > 0 && diffDay < 10) {\n diffDayText = `0${diffDay}D`;\n } else if (diffDay >= 10) {\n diffDayText = `${diffDay}D`;\n }\n\n let diffHourText = '';\n if (diffHour > 0 && diffHour < 10) {\n diffHourText = `0${diffHour}H`;\n } else if (diffHour >= 10) {\n diffHourText = `${diffHour}H`;\n } else if (diffDay !== 0) {\n diffHourText = '00H';\n }\n\n const diffMinuteText = diffMinute !== 0 ? `${diffMinute}M` : '00M';\n\n const diffDateText = `${diffDayText} ${diffHourText} ${diffMinuteText}`;\n\n return diffDateText;\n}\n\n\nfunction getCapitalizedString(string) {\n return string[0].toUpperCase() + string.slice(1);\n}\n\n\nfunction getHtmlId(string) {\n return string.replace(/\\s+/g, '-').toLowerCase();\n}\n\n\nfunction getIdGenerator () {\n let currentValue = 0;\n\n return function () {\n currentValue += 1;\n return currentValue;\n };\n}\n\n\nexport {\n getDefaultEvent,\n getFormattedDate,\n getDateDifference,\n getCapitalizedString,\n getHtmlId,\n getIdGenerator,\n};\n","import { createElement } from '../render.js';\n\nfunction createTripTemplate() {\n return (\n `
        \n

        Trip events

        \n
        `\n );\n}\n\nexport default class TripView {\n getTemplate() {\n return createTripTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createSortTemplate() {\n return (\n `
        \n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n \n
        \n
        `\n );\n}\n\nexport default class SortView {\n getTemplate() {\n return createSortTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createEventListTemplate() {\n return '
          ';\n}\n\nexport default class EventListView {\n getTemplate() {\n return createEventListTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\n\nfunction createEventItemTemplate() {\n return '
        • ';\n}\n\nexport default class EventItemView {\n getTemplate() {\n return createEventItemTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","const DateFormat = {\n DAY: 'MMM DD',\n TIME: 'HH:mm',\n DATE: 'DD/MM/YY HH:mm'\n};\n\nconst EVENT_TYPES = [\n 'taxi',\n 'bus',\n 'train',\n 'ship',\n 'drive',\n 'flight',\n 'check-in',\n 'sightseeing',\n 'restaurant'\n];\n\nexport {\n DateFormat,\n EVENT_TYPES,\n};\n","import {createElement} from '../render.js';\nimport {DateFormat} from '../const.js';\nimport {\n getFormattedDate,\n getDateDifference,\n getCapitalizedString,\n} from '../utils.js';\n\n\nfunction createOfferTemplate(offer) {\n return (\n `
        • \n ${offer.title}\n +€ \n ${offer.price}\n
        • `\n );\n}\n\n\nfunction createoffersCheckedListTemplate(event, offersPack) {\n const checkedOffers = offersPack.offers.filter((offer) => event.offers.includes(offer.id));\n return checkedOffers.length !== 0 ? (\n `

          Offers:

          \n
            \n ${checkedOffers.map((offer) => createOfferTemplate(offer)).join('')}\n
          `\n ) : '';\n}\n\n\nfunction createEventTemplate(viewId, event, currentDestination, currentOffersPack) {\n const dayFormatted = getFormattedDate(event.dateFrom, DateFormat.DAY);\n const timeFromFormatted = getFormattedDate(event.dateFrom, DateFormat.TIME);\n const timeToFormatted = getFormattedDate(event.dateTo, DateFormat.TIME);\n const duration = getDateDifference(event.dateTo, event.dateFrom);\n\n\n return (\n `
          \n \n
          \n \"Event\n
          \n

          ${getCapitalizedString(event.type)} ${currentDestination.name}

          \n
          \n

          \n \n —\n \n

          \n

          ${duration}

          \n
          \n

          \n € ${event.basePrice}\n

          \n ${createoffersCheckedListTemplate(event, currentOffersPack)}\n \n \n
          `\n );\n}\n\n\nexport default class EventView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n\n constructor({viewId, event, currentDestination, currentOffersPack}) {\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n }\n\n getTemplate() {\n return createEventTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\nimport { DateFormat, EVENT_TYPES } from '../const.js';\nimport { getFormattedDate, getCapitalizedString, getHtmlId } from '../utils.js';\n\n\nfunction createTypeTemplate(type, viewId) {\n return (\n `
          \n \n \n
          `\n );\n}\n\nfunction createEventTypeListTemplate(eventTypes, viewId) {\n return (\n `
          \n
          \n Event type\n ${eventTypes.map((type) => createTypeTemplate(type, viewId)).join('')}\n
          \n
          `\n );\n}\n\nfunction createDestinationListTemplate(destinations, viewId) {\n return (\n `\n ${destinations.map((destination) => (``)).join('')}\n `\n );\n}\n\nfunction createOfferTemplate(offer, viewId) {\n const offerId = getHtmlId(offer.title);\n\n return (\n `
          \n \n \n
          `\n );\n}\n\nfunction createOfferListTemplate(offersPack = {}, viewId) {\n return offersPack.offers.length !== 0 ? (\n `
          \n

          Offers

          \n
          \n ${offersPack.offers.map((offer) => createOfferTemplate(offer, viewId)).join('')}\n
          \n
          `\n ) : '';\n}\n\nfunction createPicturesListTemplate(pictures = []) {\n return pictures.length !== 0 ? (\n `
          \n
          \n ${pictures.map((picture) => `\"${picture.description}\"`).join('')}\n
          \n
          `\n ) : '';\n}\n\nfunction createDestinationTemplate(destination) {\n if (destination && (destination.description !== '' || destination.pictures.length !== 0)) {\n return (\n `
          \n

          Destination

          \n

          ${destination.description}

          \n ${createPicturesListTemplate(destination.pictures)}\n
          `);\n } else {\n return '';\n }\n}\n\nfunction createEventCreateTemplate(\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations) {\n return (\n `
          \n
          \n
          \n \n \n ${createEventTypeListTemplate(EVENT_TYPES)}\n
          \n\n
          \n \n \n ${createDestinationListTemplate(allDestinations, viewId)}\n
          \n\n
          \n \n \n —\n \n \n
          \n\n
          \n \n \n
          \n\n \n \n
          \n
          \n ${createOfferListTemplate(currentOffersPack, viewId)}\n\n ${createDestinationTemplate(currentDestination)}\n
          \n
          `\n );\n}\n\nexport default class EventCreateView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n allDestinations = null;\n allOffersPacks = null;\n\n constructor({\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations,\n allOffersPacks}){\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n this.allDestinations = allDestinations;\n this.allOffersPacks = allOffersPacks;\n }\n\n getTemplate() {\n return createEventCreateTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n this.allDestinations,\n this.allOffersPacks,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { createElement } from '../render.js';\nimport { DateFormat, EVENT_TYPES } from '../const.js';\nimport { getFormattedDate, getCapitalizedString, getHtmlId } from '../utils.js';\n\n\nfunction createTypeTemplate(type, viewId) {\n return (\n `
          \n \n \n
          `\n );\n}\n\nfunction createEventTypeListTemplate(eventTypes, viewId) {\n return (\n `
          \n
          \n Event type\n ${eventTypes.map((type) => createTypeTemplate(type, viewId)).join('')}\n
          \n
          `\n );\n}\n\nfunction createDestinationListTemplate(destinations, viewId) {\n return (\n `\n ${destinations.map((destination) => (``)).join('')}\n `\n );\n}\n\nfunction createOfferTemplate(offer, event, viewId) {\n const offerId = getHtmlId(offer.title);\n const offerChecked = event.offers.includes(offer.id) ? 'checked' : '';\n\n return (\n `
          \n \n \n
          `\n );\n}\n\nfunction createOfferListTemplate(event, offersPack = {}, viewId) {\n return offersPack.offers.length !== 0 ? (\n `
          \n

          Offers

          \n
          \n ${offersPack.offers.map((offer) => createOfferTemplate(offer, event, viewId)).join('')}\n
          \n
          `\n ) : '';\n}\n\nfunction createPicturesListTemplate(pictures = []) {\n return pictures.length !== 0 ? (\n `
          \n
          \n ${pictures.map((picture) => `\"${picture.description}\"`).join('')}\n
          \n
          `\n ) : '';\n}\n\nfunction createDestinationTemplate(destination) {\n if (destination && (destination.description !== '' || destination.pictures.length !== 0)) {\n return (\n `
          \n

          Destination

          \n

          ${destination.description}

          \n ${createPicturesListTemplate(destination.pictures)}\n
          `);\n } else {\n return '';\n }\n}\n\nfunction createEventEditTemplate(\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations) {\n return (\n `
          \n
          \n
          \n \n \n ${createEventTypeListTemplate(EVENT_TYPES)}\n
          \n\n
          \n \n \n ${createDestinationListTemplate(allDestinations, viewId)}\n
          \n\n
          \n \n \n —\n \n \n
          \n\n
          \n \n \n
          \n\n \n \n \n
          \n
          \n ${createOfferListTemplate(event, currentOffersPack, viewId)}\n\n ${createDestinationTemplate(currentDestination)}\n
          \n
          `\n );\n}\n\nexport default class EventEditView {\n viewId = null;\n event = null;\n currentDestination = null;\n currentOffersPack = null;\n allDestinations = null;\n allOffersPacks = null;\n\n constructor({\n viewId,\n event,\n currentDestination,\n currentOffersPack,\n allDestinations,\n allOffersPacks}){\n this.viewId = viewId;\n this.event = event;\n this.currentDestination = currentDestination;\n this.currentOffersPack = currentOffersPack;\n this.allDestinations = allDestinations;\n this.allOffersPacks = allOffersPacks;\n }\n\n getTemplate() {\n return createEventEditTemplate(\n this.viewId,\n this.event,\n this.currentDestination,\n this.currentOffersPack,\n this.allDestinations,\n this.allOffersPacks,\n );\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import { render } from '../render.js';\nimport { getDefaultEvent, getIdGenerator } from '../utils.js';\nimport TripView from '../view/trip-view.js';\nimport SortView from '../view/sort-view.js';\nimport EventListView from '../view/event-list-view.js';\nimport EventItemView from '../view/event-item-view.js';\nimport EventView from '../view/event-view.js';\nimport EventCreateView from '../view/event-create-view.js';\nimport EventEditView from '../view/event-edit-view.js';\n\n\nconst idGenerator = getIdGenerator();\n\n\nexport default class TripPresenter {\n tripComponent = null;\n eventListComponent = null;\n tripContainer = null;\n destinationsModel = null;\n eventsModel = null;\n offersModel = null;\n\n constructor({tripContainer, destinationsModel, eventsModel, offersModel}) {\n this.tripComponent = new TripView();\n this.eventListComponent = new EventListView();\n this.tripContainer = tripContainer;\n this.destinationsModel = destinationsModel;\n this.eventsModel = eventsModel;\n this.offersModel = offersModel;\n }\n\n\n init () {\n this.defaultEvent = getDefaultEvent();\n this.tripEvents = [...this.eventsModel.getAllEvents()];\n\n render(this.tripComponent, this.tripContainer);\n render(new SortView(), this.tripComponent.getElement());\n render(this.eventListComponent, this.tripComponent.getElement());\n\n for (let i = 0; i < this.tripEvents.length; i++) {\n const eventItem = new EventItemView();\n let event = this.tripEvents[i];\n\n // Этот switch нужен для того, чтобы показать в разметке все возможные варианты view.\n // Это временное решение, пока нет открытия форм создания и редактирования.\n switch (i) {\n case 0:\n event = this.defaultEvent;\n render(new EventCreateView({\n viewId: idGenerator(),\n event: this.defaultEvent,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n allDestinations: this.destinationsModel.getAllDestinations(),\n allOffersPacks: this.offersModel.getAllOffersPacks(),\n }), eventItem.getElement());\n break;\n default:\n render(new EventView({\n viewId: idGenerator(),\n event,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n }), eventItem.getElement());\n render(new EventEditView({\n viewId: idGenerator(),\n event,\n currentDestination: this.destinationsModel.getDestinationById(event.destination),\n currentOffersPack: this.offersModel.getOffersPackByType(event.type),\n allDestinations: this.destinationsModel.getAllDestinations(),\n allOffersPacks: this.offersModel.getAllOffersPacks(),\n }), eventItem.getElement());\n }\n render(eventItem, this.eventListComponent.getElement());\n }\n }\n}\n","import { render } from './render.js';\nimport DestinationsModel from './model/destinations-model.js';\nimport EventsModel from './model/events-model.js';\nimport OffersModel from './model/offers-model.js';\nimport FilterView from './view/filter-view.js';\nimport TripPresenter from './presenter/trip-presenter.js';\n\n\nconst pageHeaderElement = document.querySelector('.page-header');\nconst filtersElement = pageHeaderElement.querySelector('.trip-controls__filters');\nconst pageMainElement = document.querySelector('.page-main');\nconst pageBodyContainerElement = pageMainElement.querySelector('.page-body__container');\n\n\nrender(new FilterView, filtersElement);\n\n\nconst destinationsModel = new DestinationsModel();\nconst eventsModel = new EventsModel();\nconst offersModel = new OffersModel();\nconst tripPresenter = new TripPresenter({\n tripContainer: pageBodyContainerElement,\n destinationsModel,\n eventsModel,\n offersModel,\n});\n\n\ndestinationsModel.init();\neventsModel.init();\noffersModel.init();\ntripPresenter.init();\n","import { createElement } from '../render.js';\n\nfunction createFilterTemplate() {\n return (\n `
          \n
          \n \n \n
          \n\n
          \n \n \n
          \n\n
          \n \n \n
          \n\n
          \n \n \n
          \n\n \n
          `\n );\n}\n\nexport default class FilterView {\n getTemplate() {\n return createFilterTemplate();\n }\n\n getElement() {\n if (!this.element) {\n this.element = createElement(this.getTemplate());\n }\n return this.element;\n }\n\n removeElement() {\n this.element = null;\n }\n}\n","import {mockDestinations} from '../mock/mock-destinations.js';\n\n\nexport default class DestinationsModel {\n constructor() {\n this.destinations = [];\n }\n\n init() {\n this.destinations = mockDestinations;\n }\n\n getAllDestinations() {\n return this.destinations;\n }\n\n getDestinationById(id) {\n return this.destinations.find((destination) => destination.id === id);\n }\n}\n","import {mockEvents} from '../mock/mock-events.js';\n\n\nexport default class EventsModel {\n constructor() {\n this.events = [];\n }\n\n init() {\n this.events = mockEvents;\n }\n\n getAllEvents() {\n return this.events;\n }\n}\n","import {mockOffersPacks} from '../mock/mock-offers-packs.js';\n\n\nexport default class OffersModel {\n constructor() {\n this.offersPacks = [];\n }\n\n init() {\n this.offersPacks = mockOffersPacks;\n }\n\n getAllOffersPacks() {\n return this.offersPacks;\n }\n\n getOffersPackByType(type) {\n return this.offersPacks.find((offersPack) => offersPack.type === type);\n }\n}\n"],"names":["module","exports","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","t","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","Object","defineProperty","enumerable","obj","prop","hasOwnProperty","createElement","template","newElement","document","innerHTML","firstElementChild","render","component","container","place","insertAdjacentElement","getElement","mockDestinations","mockEvents","mockOffersPacks","getFormattedDate","dayjs","getCapitalizedString","string","toUpperCase","getHtmlId","TripView","getTemplate","element","removeElement","SortView","EventListView","EventItemView","DateFormat","EVENT_TYPES","EventView","viewId","event","currentDestination","currentOffersPack","constructor","dayFormatted","dateFrom","timeFromFormatted","timeToFormatted","dateTo","duration","dateOne","dateTwo","diffDay","diffHour","diffMinute","diffDayText","diffHourText","getDateDifference","type","basePrice","offersPack","checkedOffers","offers","filter","offer","includes","id","map","title","price","createOfferTemplate","createoffersCheckedListTemplate","createEventTemplate","EventCreateView","allDestinations","allOffersPacks","eventTypes","createTypeTemplate","createEventTypeListTemplate","destinations","destination","createDestinationListTemplate","offerId","createOfferListTemplate","description","pictures","picture","src","createPicturesListTemplate","EventEditView","idGenerator","currentValue","getIdGenerator","filtersElement","querySelector","pageBodyContainerElement","destinationsModel","getAllDestinations","getDestinationById","find","eventsModel","events","getAllEvents","offersModel","offersPacks","getAllOffersPacks","getOffersPackByType","tripPresenter","tripComponent","eventListComponent","tripContainer","defaultEvent","setHours","isFavorite","tripEvents","eventItem"],"sourceRoot":""} \ No newline at end of file diff --git a/4/index.html b/4/index.html index d69f6ed..3a5b3be 100644 --- a/4/index.html +++ b/4/index.html @@ -1 +1 @@ -Big Trip
          \ No newline at end of file +Big Trip
          \ No newline at end of file